doc-linux-pl-2002.06.14.orig/0042755000175000017500000000000007502346620014400 5ustar covencovendoc-linux-pl-2002.06.14.orig/html/0042755000175000017500000000000007502336565015353 5ustar covencovendoc-linux-pl-2002.06.14.orig/html/3-Button-Mouse.pl.html0100644000175000017500000010556407007144760021354 0ustar covencoven Jak zainstalować trójprzyciskową mysz szeregową (mini-JTZ)

Jak zainstalować trójprzyciskową mysz szeregową (mini-JTZ)

Autor: Geoff Short, geoff@kipper.york.ac.uk
v1.33, 31 maja 1998
Wersja polska: Krzysztof P. Jasiutowicz kpjas@priv.onet.pl
v1.1 beta, 14 sierpnia 1999 roku


Co zrobić aby 3 przyciskowa mysz szeregowa działała pod Linuksem. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem : ftp.icm.edu.pl.

1. Disclaimer

Ten dokument jest oddany do użytkowania w dobrej wierze, jako zawierający w sobie tylko bezpieczne programowanie i operacje. Autor nie bierze odpowiedzialności za żadne szkody i uszkodzenia powstałe w jakikolwiek sposób u jakichkolwiek osób i sprzętu, jako bezpośrednie lub niebezpośrednie następstwo wypełniania podanych zaleceń.

2. Wprowadzenie

Najnowsza wersja tego dokumentu (w oryginale ) jest zawsze dostępna : http://kipper.york.ac.uk/mouse.html

Istnieje japońska wersja tego dokumentu : http://jf.gee.kyoto-u.ac.jp/JF/JF-ftp/euc/3-Button-Mouse.euc i francuska pod adresem http://www.freenix.fr/linux/HOWTO/mini/3-Button-Mouse.html. Inne tłumaczenia mogą być dostępne - sprawdź lokalne mirrory LDP.

Od tłumacza: moja wiedza dotycząca myszy jest ograniczona. Jeśli zauważyłeś jakieś błędy lub niedociągnięcia poinformuj mnie o tym. Pod adresem kpjas@priv.onet.pl.

Większość aplikacji X Window jest pisana z założeniem, że użytkownik będzie używał trzyprzyciskowej myszy. Myszy szeregowe są zazwyczaj stosowane w zestawach komputerowych i są tanie. Wiele z tych myszy ma trzy klawisze i opisane są, iż używają protokołu Microsoft, co teoretycznie znaczy, że idealnie nadają się do systemu X Window. ( Obecnie rekord najniższej ceny za działającą trzyprzyciskową mysz szeregową wynosi $1.14!)

Większość myszy o podwójnym protokole będzie działać w dwóch trybach:

Ten dokument poprowadzi cię krok po kroku przez konfigurację myszy w tych dwóch różnych trybach, w szczególności przez to co konieczne do używania bardziej przydatnej myszy trzyprzyciskowej.

Ponieważ dystrybucje stają się coraz łatwiejsze do zainstalowania, część problemów powinna zniknąć. Na przykład, RedHat ma program mouseconfig który ustawia pewne rzeczy za użytkownika. Jednak, niektóre wersje RH5.0 miały błąd w mouseconfig, więc upewnij się że posiadasz łatki.

3. Porty szeregowe

Pierwszą rzecz, którą trzeba sprawdzić to czy oprogramowanie może odnaleźć myszkę. Dowiedz się, do którego portu szeregowego twoja mysz jest podłączona - zazwyczaj będzie to /dev/ttyS0 ( COM1 w DOS-ie ) lub dev/ttyS1 (COM2). ( ttyS0 jest zwykle 9-pinowym gniazdem, ttyS1 25-pinowym, ale oczywiście nie ma w tej sprawie sztywno ustalonych reguł). Istnieje też odpowiadająca liczba urządzeń /dev/cua, które są prawie identyczne z /dev/ttyS ale odradza się ich używania. Dla wygody należy wykonać nowe powiązanie /dev/mouse z tym portem. Na przykład dla ttyS0:

ln -s /dev/ttyS0 /dev/mouse

4. Myszy z przełącznikiem

Niektóre myszy, zazwyczaj nie te najtańsze, mają przełącznik na spodzie oznaczony `2/3'. Czasem może to być `PC/MS'. W tym wypadku oznaczenie `2' dotyczy trybu dwuprzyciskowego Microsoft-u, a `3' trzyprzyciskowego trybu MouseSystems. Przełącznik `PC/MS' jest nieco bardziej skomplikowany. Prawdopodobnie stwierdzisz, że ustawienie `MS' oznacza tryb Microsoft, a `PC' oznacza tryb MouseSystems. Możliwe, że ustawienie `PC' będzie opisane jako ps/2, ale powinno ono działać także jako tryb MouseSystems. Jeśli posiadasz taką mysz, możesz przełączyć ją w ustawienie `3' lub `PC', wstawić ustawienie dla MouseSystems w Xconfigs (patrz poniżej) i mysz powinna doskonale działać w trybie trzyprzyciskowym.

5. Zwykłe myszy

Jeżeli nie masz żadnych przełączników i nie masz instrukcji, to trzeba trochę eksperymentować. Po pierwsze spróbuj założyć, że producent myszy mówi prawdę, i mysz obsługuje w pełni tryb Microsoft. Ustaw w Xconfig tak żeby spodziewał się myszy Microsoft (zobacz w rozdziale Przykłady plików XF86Config i Xconfig) i wypróbuj to.

Jeśli mysz w ogóle nie działa, wtedy nie jest to mysz Microsoft, lub jest jakiś inny problem. Wypróbuj inne ustawienia w konfiguracji, najlepiej zacząć od dokumentacji systemowej dla pliku konfiguracyjnego. Także zajrzyj do Różne problemy w rozdziale poniżej.

Zauważysz prawdopodobnie, że kiedy uruchomisz X-y, mysz działa doskonale, ale tylko zewnętrzne przyciski coś robią. Możesz to oczywiście zaakceptować i emulować trzeci przycisk ( naciśnij oba przyciski jednocześnie, aby kliknąć środkowy ), tak jak to się robi z myszą dwuprzciskową. Aby to zrobić, zmień swój plik Xconfig jak to pokazano w rozdziale Przykłady plików XF86Config i Xconfig poniżej. Może to oznaczać, że niepotrzebnie kupiłeś mysz trzyprzyciskową i nie posuwasz się do przodu. A więc, teraz musisz przyjrzeć się swojemu sprzętowi.

6. Przełączanie myszy w tryb trójprzyciskowy

Nawet tanie myszy mogą pracować w protokole MouseSystems, z wszystkimi trzema przyciskami działającymi. Sztuczka polega na tym, aby mysz myślała, że jest myszą Mouse System, coś co rzadko znajduje się w instrukcjach.

Kiedy mysz otrzymuje zasilanie i jeżeli lewy przycisk jest wciśnięty, mysz przełącza się w tryb MouseSystems. To proste, ale nie zawsze opisywane zjawisko. Zwróć uwagę, że soft reboot komputera może nie odciąć zasilania myszy i dlatego może nie działać. Jest kilka sposobów przełączania trybu, które mogą działać lub nie z twoim rodzajem myszy. Niektóre z nich są mniej drastyczne niż rebootowanie komputera, a dwa są bardziej !

To już wszystko, wybór należy do was. Pozostańcie przy dwóch klawiszach trybu Microsoft, albo znajdźcie sposób, aby przełączyć tryb i ustawić tak X-y, aby z tego korzystały.

7. Myszy z kółkiem

Myszy z kółkiem pojawiły się w ciągu ostatnich lat, zaczęło się od Microsoft Intellimouse i rozniosło się na innych producentów. Kółko można klikać jak przycisk lub kręcić w górę i w dół. Bez wątpienia najlepszym źródłem informacji jest http://www.inria.fr/koala/colas/mouse-wheel-scroll/ gdzie opisane jest jak sprawić żeby wiele aplikacji X Window wykorzystywało funkcję skrolowania.

W zasadzie, potrzebny jest w miarę nowy X serwer żeby używać funkcji skrolowania, lecz niektóre starsze serwery rozpoznają funkcję klikania. Na przykład, Intellimouse jest wspierana przez XFree 3.3.1 i późniejsze.

8. Używanie gpm do przełączania trybów myszy

gpm jest programem, który pozwala używać myszy w konsoli. Jest on zazwyczaj dołączany do dystrybucji linuksowych i można go uruchomić z linii poleceń lub w skrypcie startowym /etc/rc.d/rc.local. Należy zwrócić uwagę, że dystrybucje nie zawsze posiadają najnowszą wersję ( obecnie 1.13 ), która jest dostępna na mirrorach sunsite.unc.edu.

Podstawowe tryby dla myszy szeregowych z gpm to:

gpm -t ms
gpm -t msc
gpm -t help

dla trybu Microsoft lub MouseSystems, lub aby przetestować mysz i wyświetlić wyniki. Aby uruchomić mysz w trybie MouseSystems, może być potrzebna flaga -3 oraz być może opcja DTR przez użycie flagi -o dtr :

gpm -3 -o dtr -t msc
gpm często potrafi rozpoznać trzy przyciski myszy nawet w trybie Microsoft. A nowsze wersje ( wersja 1.0 i późniejsze (?)) potrafią udostępnić tą informację innym programom. Działa to po uruchomieniu gpm z flagą -R w ten sposób :
gpm -R -t ms
To spowoduje reeksport danych myszy do nowego urządzenia, nazywanego /dev/gpmdata, jest odczytywane jako mouse przez inne programy. Zwróć uwagę, że to urządzenie zawsze korzysta z protokołu Mouse Systems. Można, tak zapisać Xconfig, aby używała tego zamiast /dev/mouse tak jak to pokazano poniżej, ale oczywiście miej na uwadze, aby gpm zawsze działało, kiedy używasz X-ów. Niektórzy pisali do mnie, że niektóre eventy X-ów nie są poprawnie interpretowane przez X-y przy użyciu tego sposobu, co może być związane z indywidualnym ustawieniem myszy.

Zmiana mapowania przycisku dla gpm i X ( gustafso@math.utah.edu)

Można stwierdzić, że gpm używa różne defaultowe mapowanie przycisków dla X, więc używanie obu systemów na tej samej maszynie może być frustrujące. Aby X-y używały tych samych przycisków jak gpm dla operacji wyboru i wklejania zastosuj polecenie X-ów :

xmodmap -e "pointer = 1 3 2"
co powoduje, że lewy przycisk wybiera, a prawy przycisk wkleja, zarówno w myszach dwu- i trzyprzyciskowych. Aby wymusić na gpm użycie standardowego mapowania przycisków, uruchom go z poleceniem -B, np.:
gpm -t msc -B 132

9. Używanie dwóch myszy

W niektórych przypadkach, na przykład w laptopie z wbudowanym urządzeniem wskazującym, ktoś może chcieć używać jako drugiego urządzenia myszy szeregowej. W większości przypadków, wbudowane urządzenie używa protokołu PS/2 i można go pominąć jeśli nie chce się go używać. Po prostu skonfiguruj gpm lub X-y do używania /dev/ttyS0 ( lub innego) w sposób typowy.

Aby używać obu jednocześnie, można użyć gpm -M do reeksportu urządzeń. Więcej szczegółów w podręczniku systemowym w rozdziale dotyczącym gpm. Poza tym, XFree 3.3.1 i późniejsze wspierają wiele input devices, z użyciem mechanizmu XInput. Automatycznie wygenerowane pliki XF86Config powinny mieć potrzebne komentarze.

10. Przykłady plików XF86Config i Xconfig

Lokalizacja pliku konfiguracyjnego dla X-ów zależy od konkretnej wersji i rodzaju dystrybucji. Prawdopodobnie będzie to albo /etc/Xconfig, /etc/XF86Config albo /usr/X11/lib/X11/XF86Config. Powinieneś zobaczyć, który to jest kiedy uruchomisz X - będzie wypisany na ekranie zanim wszystkie opcje będą wyświetlone. Składnia nieco się różni pomiędzy poszczególnymi plikami XF86Config i Xconfig, więc oba będą tu podane.

Mysz szeregowa Microsoft

Mysz szeregowa Microsoft z emulacją myszy trójprzyciskowej

Trójprzyciskowa mysz MouseSystems

Microsoft Serial Mouse z gpm -R

11. Kable, przedłużki i przelotki

Jedyne przewody potrzebne w kablu myszy to: TxD i RxD do przesyłu danych, RTS i/lub DTR dla zasilania i ground. Co przekłada się na numery pinów, w ten sposób:

         port 9-pinowy      port 25-pinowy 
        TxD     3                2
        RxD     2                3
        RTS     7                4
        DTR     4               20
        Gnd     5                7
Powyższa tabela może być użyteczna jeśli chcesz robić przelotki między 9- i 25-pinowymi wtyczkami, lub kable przedłużające.

12. Różne kłopoty i ustawienia

13. Przetestowane modele

Jest wiele różnych myszy na świecie i nie mogę z czystym sercem powiedzieć, że powinieneś iść i kupić raczej tą mysz, a nie tamtą. To co mogę zrobić to wyliczyć co te myszy potrafią, opierając się na doświadczeniu i pogłoskach. Nawet z tymi informacjami ostrożność jest wskazana - mieliśmy w biurze dwie identyczne myszy przy dwóch komputerach i niektóre rzeczy działały z jedną myszą i nie działały z drugą. Wszelkie dodatki do tego wyliczenia będą mile widziane.

Optyczna mysz MouseSystems, wersja szeregowa
Działa dobrze (jak można by się spodziewać po nazwie!) bez ClearDTR lub ClearRTS w konfiguracji.
WiN mouse, sprzedawana przez Office World za osiem funtów.
Standardowa dwutrybowa mysz Microsoft/MouseSystems.
Agiler Mouse 2900
Standardowa dwutrybowa mysz Microsoft/MouseSystems. SYSGRATION SYS2005i układ scalony nadaje się do lutowania.
Sicos mouse,
Działa ok, wymaga ClearDTR & Clear RTS w konfiguracji.
Index sprzedają mysz za 10 funtów,
Nie działa w trybie 3 przyciskowym, ale ma fajną instrukcję :-)
Artec mouse
Zwyczajna mysz o podwójnym protokole, wymaga `ClearDTR' ustawionego w konfiguracji, NIE `ClearRTS'
DynaPoint 3 przyciskowa mysz szeregowa.
Zwyczajna mysz o podwójnym protokole, wymaga `ClearDTR' i `ClearRTS' w konfiguracji X-ów.
Genius Easymouse mysz 3-przyciskowa
Doskonale działa w protokole Mouseman bez ustawiania parametru ChordMiddle. Od Roderick Johnstone ( rmj@ast.cam.ac.uk)
Truemouse, made in Taiwan
Działa OK, wymaga `ClearDTR' w konfiguracji. (Od Tim MacEachern)
Mysz marki Champ
Wymaga przełączenia w tryb PC, co uaktywnia także protokół MouseSystems. (Od tnugent@gucis.cit.gu.edu.au)
Mysz MicroSpeed
Zwykła mysz o podwójnym protokole.
Mysz marki Venus ($7)
Ma w środku przełącznik między trybem 2 i 3 przyciskowym. (Od mhoward@mth.com )
Saturn
Mysz z przełącznikiem, działa OK jako mysz MouseSystems w pozycji 3-przyciskowej. (Od grant@oj.rsmas.miami.edu .)
Manhattan mouse.
Jest przełącznik trybów `MS AM' / `PC AT', tryb MS działa doskonale z rozwiązaniem z gpm -R. (Od komanec@umel.fee.vutbr.cz).
Mysz Inland.
Przełącznik dla trybów `PC/MS', działa doskonale. (Od http://ptsg.eecs.berkeley.edu/~venkates).
qMouse (3-przyciskowa), FCC ID E6qmouse X31.
Sprzedawana w USA za około $10. działa z `gpm -t msc -r 20'. Nie ma jumperów lub przełączników do 3-przyciskowego trybu MouseSystems. Nie jest godna polecenia w X. Nie reaguje na echo "*n" > /dev/mouse.
Mitsumi Mouse (2-przyciskowa), FCC ID EW4ECM-S3101.
Sprzedawana w USA za około $12. Godna polecenia w X i w gpm, łagodny klik. (Te dwa od gustafso@math.utah.edu)
Myszy PC Accessories które kupiłem w CompUSA poniżej $10.
Ma przełącznik PC/MS na spodzie. Działa OK. (Od steveb@communique.net)
First Mouse - naprawdę tanio za 7.79 funtów w Tempo.
Dwutrybowa mysz Microsoft/MouseSystems, tryb ustawiany przez wciśnięcie przycisku przy włączeniu zasilania. Nie ma przełączników, ani połączeń. Cztero kablowe połączenie, echo '*n' nie działa. `gpm -R' działa wspaniale. (Od peterk@henhouse.demon.co.uk)
Mysz 3-przyciskowa Trust.
O dwóch trybach z przełącznikiem, działa dobrze jako MouseSystems w trybie `PC'. gpm gryzie się z trybem Microsoft.
Chic 410
działa doskonale w ustawionym trybie ms i przy użyciu polecenia gpm -R Od Stephena M. Weissa ( steve@esc.ie.lehigh.edu)
Trzyprzyciskowa mysz KeyMouse.
działa prawidłowo z ClearDTR i ClearRTS w Xconfig; w gpm konieczne `-o dtr' . (Od EZ4PHIL@aol.com)
Klawiatura Qtronix `Scorpio 60'
Wszystkie trzy przyciski działają w protokole MouseSystems. (Od hwe@uebemc.siemens.de)
Laptop Tecra 720
Glidepoint jest na /dev/cua0; rysik na /dev/psaux. (Od apollo@anl.gov)
Mysz Anubis
Działa doskonale, wymaga przytrzymywania lewego przycisku przy przełączaniu do wirtualnej konsoli X. (Od Joel Crisp)
Yakumo No.1900 mouse
Działa z eksportem do X-ów gpm -R -t ms. (Od Oliver Schwank)
Genius `Easy Trak' Trackball
Nie jest zgodna z trybem Microsoft, użyj Mouseman w konfiguracji X-ów i będzie działać doskonale. (Od VTanger@aol.com.)
Highscreen Mouse Pro
`Działa doskonale' twierdzi alfonso@univaq.it.
Logitech CA series
Działa w X-ach używając protokołu MMseries, przy 2400 Baud, 150 SampleRate. (Powinno też odnosić się do myszy Logitech CC, CE, C7 & C9). (Od vkochend@nyx.net.)
Mysz A4-Tech
Działa OK, wymaga wpisu DTR pod X-ami i gpm. (Od deane@gooroos.com)
Mysz Vertech
Prawidłowe zachowanie Microsoft/Mousesystems, można zalutować do ustawienia na stałe. (Od duncan@fs3.ph.man.ac.uk.)
Boeder M-7 ``Bit Star'' (i inne z serii M oprócz M13)
Przełącza się w tryb Mousesystems trzymając lewy przycisk przy włączaniu zasilania. (Od mailto:sjt@tappin.force9.co.uk.)
Mouse Systems ``Scroll'' Mouse (cztery przyciski i roller/przycisk)
Ma przełącznik 2/3 - w trybie 3 działa jako trzyprzyciskowa mysz MouseSystems, bez działającego dodatkowego przycisku & kółka. Nie wymaga ClearRTS/DTR. (Od parker1@airmail.net.)
Mysz Szeregowa 3-przyciskowa Radio Shack
Model 26-8432, dostępny w Tandy za około 20 funtów. Działa jako Mousesystems z ClearDTR. (Od Sherilyn@sidaway.demon.co.uk.)
Myszy szeregowe Dexxa
Działają doskonale w trybie Microsoft w Xconfig, nie jest potrzebne ChordMiddle lub nic podobnego. (Od mailto: slevy@ncsa.uiuc.edu.)
Myszy 3-przyciskowe Belkin
Kupowane w Sears (\$10), wymagają -o rts z gpm (i prawdopodobnie ClearRTS w X) gdy jest w trybie PC. (Od mailto: mmicek@csz.com.)

14. Dalsze informacje

15. Ogon myszy

Większość informacji w tym dokumencie została zaczerpnięta z różnych linuksowych grup dyskusyjnych. Przepraszam, że nie umieściłem informacji o wszystkich, którzy pośrednio przyczynili się w ten sposób, dziękuję bardzo wam wszystkim.

Podsumowując :

doc-linux-pl-2002.06.14.orig/html/AX25-HOWTO.pl.html0100664000175000017500000037633706770264140020243 0ustar covencoven Linux AX25-HOWTO, Radio Amatorskie.

Linux AX25-HOWTO, Radio Amatorskie.

Terry Dawson, VK2KTJ, terry@perf.no.itg.telecom.com.au.
v1.4, 2 Marca 1997.
Wersja polska: Benedict P. Barszcz, KB2QZV poseidon@ziplink.net
v1.4, 28 kwietnia 1997


System Operacyjny Linux jest chyba jedynym na świecie systemem operacyjnym, który szczyci się standardową i rodzimą obsługą protokołu AX.25 dla packet radio używanego przez operatorów Radia Amatorskiego po całym świecie. Dokument ten jest poświęcony temu jak zainstalować i skonfigurować tę obslugę.

1. Wstęp

Dokument ten był początkowo załącznikiem do HAM-HOWTO ale urósł za bardzo, aby można go było w ten sposób nadal pisać. Dokument ten opisuje w jaki sposób zainstalować i skonfigurować rodzimą obsługę protokołów AX25, NetRom oraz Rose na Linuxie. Podano tutaj kilka typowych konfiguracji, które mogą posłużyć jako model do dalszej pracy.

Wersje protokołów radia amatorskiego pod Linuxem są bardzo elastyczne. Dla ludzi, którzy nie są zbytnio zapoznani z systemem operacyjnym Linux proces konfiguracji wydawać się może uciążliwy i skomplikowany. Zajmie ci to trochę czasu zanim zrozumiesz w jaki sposób wszystko ze sobą pasuje. Konfiguracja jest bardzo trudna jeśli wpierw nie zapoznasz się z Linuxem ogólnie. Nie oczekuj, że uda ci się przejść z jakiegoś środowiska do Linuxa bez zapoznania się uprzednio z samym Linuxem.

1.1 Zmiany w stosunku do poprzednich wersji

Dodatki.

dołączyłem informacje o łatce dla modułów. Dodałem parę ogólnych informacji o strukturze jądra.

Poprawki.

Poprawiłem konfiguracje ax25d - podziękowania dla John Tanner, VK2ZXQ. Poprzestawiałem mnóstwo rzeczy, powinno teraz być bardziej logicznie.

Do zrobienia.

Poprawić sekcję o SCC, obecna jest chyba zła. Rozwinąć sekcję programowania. Dodać odnośniki do dokumentacji źródeł AX25 i NetRom.

1.2 Inne dokumentacje na ten temat

Jest wiele związanych z tym tematem dokumentów. Jest sporo dokumentów traktujących o sprawach sieciowych pod Linuxem w sposób bardziej ogólny, które bardzo polecam ponieważ pomogą ci one w twoich wysiłkach i dadzą ci głebszy wgląd w inne możliwe konfiguracje.

Oto one:

HAM-HOWTO

Ethernet-HOWTO

NET-3-HOWTO

2. Gdzie znaleźć najnowszą wersję tego dokumentu

Najlepszym miejscem do znalezienia ostatniej wersji tego dokumentu jest Archiwum Linux Documentation Project. Linux Documentation Project prowadzi Web Server i dokument niniejszy pojawia się tam jako The AX25-HOWTO. Możesz też skontaktować się ze mną ale zwykle przekazuję ostatnie wersje tego dokumentu koordynatorowi projektu LDP, więc jeśli go tam nie ma to są duże szanse, że jeszcze go nie skończyłem.

3. Protokoły dla Packet Radio a Linux

Protokół AX.25 oferuje dwa tryby operacji: connected i connectionless. Używany jest albo do połączeń typu stacja-do-stacji albo jako medium dla innych protokołow takich jak TCP/IP lub NetRom.

Podobny jest w swej strukturze do X.25 level 2 z pewnymi modyfikacjami, które czynią go bardziej użytecznym do pracy w środowisku radia amatorskiego.

Protokół NetRom jest próbą pełnego protokołu sieciowego i w swej najniższej warstwie używa AX.25 jako protokołu typu datalink. Dostarcza on sieciowej warstwy, która jest adaptowaną formą AX.25. Protokół NetRom cechuje się dynamicznym routingiem, posiada też funkcję pseudonimów dla węzłów.

Protokół Rose został wynaleziony i po raz pierwszy zastosowany przez Tom'a Moulton, W2VY, i jest wariacją protokołu X.25 w warstwie packet. Pomyślany jest tak, że AX.25 jest jego warstwą typu datalink. Sam również dostarcza warstwę sieciową. Adresy Rose przyjmują formę 10 cyfrowych numerków. Pierwsze cztery cyfry stanowią Data Network Identification Code (DNIC) i wzięte zostały z załącznika B z zaleceń CCITT X.121. Więcej informacji na temat protokołu Rose można uzyskać z Serwera RATS.

Początkowo, wczesne oprogramowanie AX.25 współpracujące z jądrem Linuxa wypracował Alan Cox. Następnie Jonathon Naylor przejął rozwijający się projekt dodając obługę NetRomu i Rose; obecnie on właśnie zajmuje się opracowywaniem źródeł AX.25 współpracujego z jądrem Linuxa. DAMA zostało napisane przez Joerg Reuter. Obsługę karty dźwiękowej jako modemu oraz modem Baycom dodał Thomas Sailor. Programy narzędziowe AX.25 są obecnie prowadzone przeze mnie.

Linux obsługuje TNC w trybie KISS (Terminal Node Controllers), kartę Ottawa PI, kartę Gracillis PacketTwin oraz inne oparte na scalaku SCC Z8530, modem Baycom zarówno seryjny jak i równoległy. Nowy, od Tomasza, sterownik DźwiękoModemu obsługuje karty dźwiękowe SoundBlaser oraz te zbudowane w oparciu o Crystal chipset.

Programy użytkownika zawierają prosty PMS (Personal Message System), program latarnie, liniowy program 'call' do połaczeń, 'listen' przykładowy program do uchwycenia surowych ramek AX.25 na poziomie interfejsu, oraz programy do konfiguracji NetRomu. Załączono również program, ktory jest jakby serwerem AX.25 przechwytującym i rozprowadzającym wchodzące połączenia; jest też demonik dla NetRomu, który wykonuje całą czarną robotę dla obsługi protokołu NetRom.

3.1 Jak to wszystko działa?

AX.25 pod Linuxem jest zupełnie nową implementacją. Choć na pozór wygląda podobnie do NOS, BPQ lub innych implementacji AX.25 to jednak nie przypomina żadnej z nich ani nie jest identyczną z żadną z nich. AX.25 pod Linuxem można skonfigurować tak, że będzie zachowywać się niemalże tak jak inne implementacje AX.25 ale proces konfiguracyjny jest bardzo odmienny.

Aby dopomóc ci w sposobie myślenia przy konfigurowaniu, sekcja ta stara się wyjaśnić niektóre strukturalne cechy AX.25 oraz umieszcza je w ogólnej strukturze Linuxa.

Uproszczony schemat warstw protokołów sieciowych.

       -----------------------------------------------
       | AF_AX25 | AF_NETROM |  AF_INET    | AF_ROSE |
       |=========|===========|=============|=========|
       |         |           |             |         |
       |         |           |    TCP/IP   |         |
       |         |           ----------    |         |
       |         |   NetRom           |    | Rose    |
       |         -------------------------------------
       |            AX.25                            |
       -----------------------------------------------
Schemat ten ilustruje poprostu, że NetRom, TCP/IP i Rose wszystkie razem rezydują na protokole AX.25 ale że każdy z nich traktowany jest osobno u poziomu programowania na interfejsie. Nazwy 'AF' to nazwy nadawane dla Address Family każdego z tych protokołów podczas pisania dla nich programów. Ważne tutaj jest to, że konfiguracja urządzenia AX.25 kluczowo wpływa na to jak będą konfigurowane NetRom, Rose oraz TCP/IP.

Schemat modułów w implementacji sieciowej Linuxa

  ----------------------------------------------------------------------------
   User    | Programs  |   call        node    ||  Daemons | ax25d  mheardd
           |           |   pms         mheard  ||          | inetd  netromd
  ----------------------------------------------------------------------------
           | Sockets   | open(), close(), listen(), read(), write(), connect()
           |           |------------------------------------------------------
           |           |    AF_AX25   |  AF_NETROM  |   AF_ROSE   |  AF_INET
           |------------------------------------------------------------------
  Kernel   | Protocols |    AX.25     |   NetRom    |     Rose    | IP/TCP/UDP
           |------------------------------------------------------------------
           | Devices   |    ax0,ax1   |  nr0,nr1    | rose0,rose1 | eth0,ppp0
           |------------------------------------------------------------------
           | Drivers   |  Kiss   PI2   PacketTwin   SCC   BPQ     | slip ppp
           |           |      Soundmodem      Baycom              | ethernet
  ----------------------------------------------------------------------------
  Hardware | PI2 Card, PacketTwin Card, SCC card, Serial port, Ethernet Card
  ----------------------------------------------------------------------------
Ten schemat jest troszeczkę bardziej ogólny od pierwszego. Stara się on ukazać zależność pomiędzy programami narzędziowymi, jądrem oraz sprzętem. Pokazuje też zależność pomiędzy interfejsem programowania gniazd dla aplikacji, właściwymi modułami protokołów, interfejsami sieciowymi jądra, oraz sterownikami urządzeń. Każdy element schematu polega na tym elemencie, który jest poniżej niego samego i konfigurację trzeba rozpoczynać od samego dołu w górę. Więc dla przykładu, jeśli chesz odpalać program call to musisz również skonfigurować sprzęt, następnie upewnić się, że jądro posiada odpowiedni sterownik urządzenia, dalej musisz stworzyć właściwy interfejs sieciowy oraz, że jądro zawiera właściwy protokół, który oferuje odpowiedni dla programu call interfejs programowania. W takiej hierarchii starałem się też rozłozyć ten dokument.

4. Składniki oprogramowania AX.25/NetRom.

Oprogramowanie AX.25 składa się z trzech części: źrodeł jądra, narzędzi do konfiguracji sieci oraz programów narzędziowych.

Wersje jądra Linuxa 2.0.xx zawierają w sobie pierwotnie sterowniki dla AX.25, NetRom, dla kart Z8530 SCC, PacketTwin i Gracillis. Zostały one znacząco udoskonalone w jądrach 2.1.xx. Niestety, pozostała część jądra 2.1.* czyni je bardzą chwiejnymi i nie nadają sie w takim stanie do załączenia w stabilnych wersjach jąder. Aby zaradzić temu problemowi, Jonathon Naylor przygotował zespół łatek, które oblugę protokołów radia amatorskiego w jądrach 2.0.xx wynoszą do poziomu standardu jąder 2.1.*. Jest to bardzą łatwe w zaaplikowaniu i wprowadza wachlarz usług, które są nieobecne w standardowych jądrach, np. obługę Rose.

4.1 Gdzie znaleźć jądro, narzędzia i zespół programów narzędziowych?

Źródła jądra

Źródła jądra należy szukać w jego zwyczajnym miejscu:

ftp://ftp.funet.fi//pub/Linux/PEOPLE/Linus/v2.0/linux-2.0.29.tar.gz

Obecna kopia zespołu łatek według Jonathon'a znajduje się na:

ftp://ftp.cs.nott.ac.uk/jsn/ax25-module-12.tar.gz

Narzędzia sieciowe

Ostatnia wersja alpha standardowych narzędzi sieciowych Linuxa obsługuje AX.25 i NetRom i można ją znależć tutaj:

ftp://ftp.inka.de/pub/comp/Linux/networking/net-tools/net-tools-1.32-alpha.tar.gz

lub

ftp://ftp.linux.org.uk/pub/linux/Networking/base/net-tools-1.32-alpha.tar.gz

Ostani pakiet ipfwadm można znaleźć tu:

ftp://ftp.xos.nl/pub/linux/ipfwadm/

Programy narzędziowe AX.25

Istnieją dwie odmienne żyły programów narzędziowych AX.25. Jedna przeznaczona jest do pracy z jądrami 2.0.* a druga albo do jąder 2.1.* lub do kombinacji: jądro 2.0.28+łatka module10. Numer wersji pakietu ax25-utils wskazuje na najstarszą wersję jądra, z którą mogą pracować. Wybierz sobie taką wersję pakietu ax25-utils, która będzie pracować z jądrem twojego systemu.

Programy narzędziowe dla 2.1.22 i późniejszych, oraz ax25-utils+module można znaleźć na domowej stronie Jonathon'a Naylor:

ftp://ftp.cs.nott.ac.uk/jsn/ax25-utils-2.1.22b.tar.gz

lub na:

ftp://sunsite.unc.edu/pub/Linux/apps/ham/ax25/ax25-utils-2.1.22b.tar.gz

Starsze narzędzia, zdolne do pracy z niepołatanym jądrem 2.0.29 nazywają się ax25-utils-2.0.12c.tar.gz w tym samym miejscu.

5. Instalacja oprogramowania AX.25/NetRom.

Aby w sposób udany zainstalować obsługę AX.25/NetRom na systemie Linux należy skonfigurować i zainstalaować właściwe jądro a następnie programy narzędziowe AX.25.

5.1 Kompilacja jądra.

Jeśli jesteś już zaznajomiony z kompilowaniem jądra na Linuxie to możesz pominąć tę sekcję, upewnij się tylko, że wybrałeś właściwe opcje dla jądra. Jeśli nie, to czytaj dalej.

Normalnie, źródła jądra należy rozpakowywać będąc w katalogu /usr/src do podkatalogu zwanego linux. Aby to uczynić należy się zalogować jako root a następnie wykonać takie czynności:

       # cd /usr/src
       # mv linux linux.old
       # tar xvfz linux-2.0.29.tar.gz
       # tar xvfz ax25-module-12.tar.gz
       # patch -p0 < /usr/src/ax25-module-12/ax25-2.0.29-2.1.22.diff
       # cd linux

Po tym jak rozpakowałeś i połatałeś jądro, musisz odpalić skrypt konfiguracyjny i zaznaczyć opcje, które odpowiadają układowi twojego sprzętu oraz te, które chcesz, aby były obecne w jądrze. Wystarczy napisać:

# make config

Jeśli wolisz metodę opartą o menu to można też spróbować:

# make menuconfig

Opiszę tutaj metodę zasadniczą, a ty wybierz taką jaka ci najbardziej odpowiada. W obu przypadkach zostaniesz postawiony wobec pytań, na które trzeba odpowiedzieć "tak" lub "nie". (Zauważ, że można też odpowiedzieć naciśnięciem "M" jeśli używaż modułów w Linuxie. Dla uproszczenia jednak przyjmuję, że ich nie używasz, więc dokonaj właściwych poprawek jeśli jest przeciwnie.)

Najbardziej zasadniczymi opcjami dla skonfigurowania AX.25 są:

  Code maturity level options  --->
      ...
      [*] Prompt for development and/or incomplete code/drivers
      ...
  General setup  --->
      ...
      [*] Networking support
      ...
  Networking options  --->
      ...
      [*] TCP/IP networking
      [?] IP: forwarding/gatewaying
      ...
      [?] IP: tunneling
      ...
      [?] IP: Allow large windows (not recommended if <16Mb of memory)
      ...
      [*] Amateur Radio AX.25 Level 2
      [?] Amateur Radio NET/ROM
      [?] Amateur Radio X.25 PLP (Rose)
      ...
  Network device support  --->
      [*] Network device support
      ...
      [*] Radio network interfaces
      [?] BAYCOM ser12 and par96 driver for AX.25
      [?] Soundcard modem driver for AX.25
      [?] Soundmodem support for Soundblaster and compatible cards
      [?] Soundmodem support for WSS and Crystal cards
      [?] Soundmodem support for 1200 baud AFSK modulation
      [?] Soundmodem support for 4800 baud HAPN-1 modulation
      [?] Soundmodem support for 9600 baud FSK G3RUH modulation
      [?] Serial port KISS driver for AX.25
      [?] BPQ Ethernet driver for AX.25
      [?] Gracilis PackeTwin support for AX.25
      [?] Ottawa PI and PI/2 support for AX.25
      [?] Z8530 SCC KISS emulation driver for AX.25
      ...
Opcje, które oznakowałem jako '*' to te, na które musisz odpowiedzieć 'Y' - tak. Reszta jest zależna od sprzętu, jaki posiadasz oraz od opcji, które sobie życzysz. Niektóre z tych opcji są opisane trochę poźniej, więc jeśli nie wiesz jeszcze czego chcesz to czytaj dalej a potem tutaj wróć.

Po skończeniu konfiguracji jądra powinieneś teraz gładko skompilować jądro:

       # make dep
       # make clean
       # make zImage
Upewnij się, aby skopiować plik arch/i386/boot/zImage tam gdzie być powinien oraz zrób edycje /etc/lilo oraz restartuj lilo, abyś faktycznie odpalił system z nowego jądra.

Co jest nowego w jądrach 2.0.*+ModuleXX i 2.1.* ?

Jądra 2.1.* zawierają udoskonalone wersję niemalże wszyskich protokołów oraz sterowników. Najbardziej znaczące nowinki to:

modularyzacja
protokoły i sterowniki zostały zmodularyzowane tak, że można nimi do woli żąglować poleceniami insmod, rmmod. Redukuje to wymogi pamięciowe dla jądra przy sporadycznie używanych modułach oraz sprawia, że polowanie na pluskwy i pielęgancja są łatwiejsze.
wszystkie sterowniki są teraz sterownikami sieciowymi
wszelkie urządzenia jak Baycom, SCC, PacketTwin, Gracillis itp. oferują teraz normalny interfejs sieciowy, tzn. wyglądają teraz tak jak sterownik Ethernetu; nie wyglądają już tak jak TNC w trybie KISS. Na życzenie, można zbudować interfejs kiss do tych urządzeń przy pomocy programiku 'net2kiss'.
usunięto pluskwy
wiele pluskw zostało wykrytych i zniszczonych dodano też do sterowników i protokołów sporo nowych cech i funkcji.

5.2 Narzędzia do ustawiania sieci

Teraz, po wykompilowaniu jądra, powinieneś również skompilować nowe narzędzia do konfiguracji sieci. Przy ich pomocy będziesz mógł manipulować interfejsami sieciowymi oraz dodawać routing do tablic routingowych.

Nowa wersja alpha standardowego pakietu net-tools zawiera obsługę AX.25 i NetRom. Sprawdzałem to i wydaje się, że u mnie działa to świetnie.

Budowa standardowej wersji net-tools.

Nie zapomnij przeczytać pliku Readme i zastosować się to wszelkich tam podanych wskazówek. Czynności jakie ja wykonałem, by skompilować net-tools to:

       # cd /usr/src
       # tar xvfz net-tools-1.32-alpha.tar.gz
       # cd net-tools-1.32-alpha
       # make config
W tym stadium zaoferowane ci zostaną pytania podobnie jak przy kompilacji jądra. Upewnij się, aby zaznaczyć obsługę jakichkolwiek protoków, które zamierzasz używać.W razie, gdybyś nie wiedział co odpowiedzieć, zaznacz "Y".

Net-tools powinny skompilować się gładko ze źródłami jądra bez żadnych ostrzeżeń. gdy kompilacja ustanie, wówczas wydaj polecenie:

# make install
to zainstaluje programy w ich właściwe miejsca.

Jeśli planujesz używać usługę IP firewall to potrzebujesz ostatnich narzędzi ipfwadm do administracji ściany ogniowej. Narzędzie to podmienia starsze ipfw, które nie pracuje już z nowszymi jądrami.

Programik ipfwadm skompilowałem w taki sposób:

       # cd /usr/src
       # tar xvfz ipfwadm-2.0beta2.tar.gz
       # cd ipfwadm-2.0beta2
       # make install
       # cp ipfwadm.8 /usr/man/man8
       # cp ipfw.4 /usr/man/man4

5.3 Pogramy narzędziowe AX.25

Po skompilowaniu i restarcie nowego jądra, potrzebujesz jeszcze skompilować programy narzędziowe. Aby skompilować programy narzędziowe należy wykonać takie czynności:

       # cd /usr/src
       # tax xvfz ax25-utils-2.1.22b.tar.gz
       # cd ax25-utils-2.1.22b
       # make config
       # make
       # make install
Pliki zostaną zainstalowane pierwotnie do katalogu /usr w podkatalogi takie jak: bin, sbin, etc and man.

Jeśli pokażą ci się ostrzeżenia podobnej treści:

  gcc -Wall -Wstrict-prototypes -O2 -I../lib -c call.c
  call.c: In function `statline':
  call.c:268: warning: implicit declaration of function `attron'
  call.c:268: `A_REVERSE' undeclared (first use this function)
  call.c:268: (Each undeclared identifier is reported only once
  call.c:268: for each function it appears in.)
zatem powinieneś pozprawdzać czy masz na swoim systemie zainstalowany poprawnie pakiet ncurses. Skrypt konfiguracyjny stara się zlokalizować pakiet ncurses na twoim systemie w znanych katalogach. Niektóre jednak instalacje źle wpisują ncurses i skryp nie potrafi ich znaleźć.

6. Najpierw o znakach radioamatorkich , adresach, itp.

Każdy port AX.25 lub NetRom na twoim systemie musi mieć przydzielony znak i przypięty do niego numeryczny identyfikator stacji. Rzeczy te konfigurujemy w plikach, które zostały opisane dalej. Niektóre implementacje AX.25, np. BPQ lub NOS, pozwalają na przypisanie tego samego znaku/indentyfikatora na obu portach AX.25 i NetRom. Linux na to nie pozwala z pewnych technicznych, skomplikowanych powodów. W praktyce, nie jest to taki wielki problem.

Oznacza to, że przy konfigurowaniu trzeba być świadomy tych rzeczy i wziąć je pod uwagę:

  1. Każdy port ax.25 lub NetRom musi być konfigurowany z unikalnym znakiem/identyfikatorem.
  2. TCP/IP używać będzie tego znaku/identyfikatora, na którego porcie odbywa się odbiór i transmisja AX.25, tj. ten, który skonfigurowałeś w punkcie 1.
  3. NetRom używać będzie tego znaku/identyfikatora, który został mu przydzielony w jego własnym pliku konfiguracyjnym. Znak ten używany będzie tylko wówczas, gdy twój NetRom rozmawia z innym NetRomem. Nie jest to znak, ktory użytkownicy AX.25 mają używać przy wchodzeniu do twojego węzła. Więcej na ten temat powiemy dalej.
  4. Rose, pierwotnie, będzie używał znaku/identyfikatora należącego do portu AX.25 chyba, że wyraźnie zostanie przekonfigurowany poleceniem 'rsparms' na inny. Jeśli przydzielisz znak/identyfikator dla Rose poleceniem 'rsparms' wówczas Rose używać będzie tego znaku na wszystkich swych portach.
  5. Inne programy, takie jak 'ax25d' mogą słuchać na jakichkolwiek znakach/identyfikatorach i w dodatku można te znaki duplikować po wszelakich portach.
  6. Będąc ostrożny przy routingu, możesz nawet przyznac wszystkim portom ten sam adres IP.

6.1 Czym są owe T1, T2, T3 i inne rzeczy?

Analogicznie, tak jak nie każdy radiooperator jest inżynierem, tak samo nie każda implementacja AX.25 jest zgodna ze standardem TNC2. Linux stosuje nomenklaturę, która różni się w pewnym względzie od tej, jakiej używałbyś,jeśli jedynym twoim doświadczeniem w packet radio byłby TNC. Podana niżej tablica powinna być pomocna w interpretacji czym są poszczególne elementy, które daje się konfigurować, zatem jeśli napotkasz je później w tym tekście pomoże ci to w ich zrozumieniu.

  -------------------------------------------------------------------
  Linux  | TAPR TNC | Description
  -------------------------------------------------------------------
  T1     | FRACK    | czas wyczekiwania przed retransmisją
         |          | niepotwierdzonej ramki
  -------------------------------------------------------------------
  T2     | RESPTIME | minimalny czas wyczekiwania na inną ramkę
         |          | przed transmisją potwierdzenia
         |          | 
  -------------------------------------------------------------------
  T3     | CHECK    | czas wyczekiwania pomiędzy sprawdzeniami czy
         |          | lącze jest nadal aktywne
  -------------------------------------------------------------------
  N2     | RETRY    | ilość retransmisji zanim założymy, że lącze
         |          | padło
  -------------------------------------------------------------------
  Idle   |          | okres czasu, który łącze może stać bezczynnie
         |          | zanim zostanie zamknięte
  -------------------------------------------------------------------
  Window | MAXFRAME | maksymalna liczba niepotwierdzonych,
         |          | wytransmitowanych ramek
  -------------------------------------------------------------------

6.2 Parametry, które dają się konfigurować w trakcie pracy.

Jądra 2.1.* oraz 2.0.29+module mają nową cechę, która pozwala na zmianę uprzednio niemożliwych do manipulacji wartości w trakcie pracy. Jeśli uważnie przyjrzysz się strukturze katalogu /proc/sys/net/ to zauważysz parę plików o sugestywnych nazwach, które wskazują na różne parametry do konfigurowania sieci. Każdy plik w katalogu /proc/sys/net/ax25 reprezentuje jeden ustawiony port AX.25. Nazwa pliku odnosi się do nazwy portu. Struktura plików wygląda następująco:

  No.     Nazwa                   Znaczenie                       Wartość domyślna
  1       IP Default Mode         0=DG 1=VC                       0
  2       AX.25 Default Mode      0=Normal 1=Extended             0
  3       Allow Vanilla Connects  0=No 1=Yes                      1
  4       Backoff                 0=Linear 1=Exponential          1
  5       Connected Mode          0=No 1=Yes                      1
  6       Standard Window         1  <= N <= 7                    2
  7       Extended Window         1  <= N <= 63                   32
  8       T1 Timeout              1s <= N <= 30s                  10s
  9       T2 Timeout              1s <= N <= 20s                  3s
  10      T3 Timeout              0s <= N <= 3600s                300s
  11      Idle Timeout            0m <= N                         20m
  12      N2                      1  <= N <= 31                   10
  13      AX.25 Frame Length      1  <= N <= 512                  256
  14      Max Queue               1  <= N <= 20                   2
  15      Digipeater Mode         0=None 1=Inband 2=XBand 3=Both  3

W powyższej tablicy T1, T2, T3 zostały podane w sekundach a Idle Timout podano w minutach. Zauważ jednak, że wartości używane przez interfejs sysctl mierzone są wartościami wewnętrznymi, gdzie czas w sekundach mnożony jest przez 10, co pozwala na rozdrobnienie na 1/10 sekundy. Tam, gdzie liczniki pozwalają na wartość zero, np. T3 lub Idle, zero oznacza, że licznik jest wyłączony.

7. Konfigurowanie portu AX.25.

Każdy program AX.25 wpierw czyta plik konfiguracyjny, aby uzyskać potrzebne parametry poszczególnego portu AX.25, obecnego na twoim systemie Linux. Dla portów AX.25 jest to plik /etc/ax25/axports. Każdy port AX.25, który chcesz mieć na swoim systemie, musi być w tym pliku opisany.

7.1 Jak utworzyć plik /etc/ax25/axports?

Plik /etc/ax25/axports to prosty tekstowy plik, który tworzymy zwykłym edytorem. Format pliku /etc/ax25/axports jest następujący:

portname callsign baudrate paclen window description
Gdzie:
portname
to wolna nazwa, krórą należy ochrzcić port, używana do nazewnictwa tego portu
callsign
znak/identyfikator, który przypisujesz dla portu AX.25
paclen
to maksymalna długość pakietów, które będą możliwe na tym porcie przy transmisjch AX.25 w trybie 'connected'.
window
to parametr (K) AX.25 window. To samo co MAXFRAME w wielu urządzeniach TNC.
description
to dowolny opis tego portu

W moim przypadku wygląda to tak:

       radio    VK2KTJ-15       4800        256     2       4800bps 144.800 MHz
       ether    VK2KTJ-14       10000000    256     2       BPQ/ethernet device

Pamiętaj, że należy przypisać unikalny znak/identyfikator dla każdego portu AX.25, który utworzysz. Wprowadź jeden wpis dla każdego urządzenia AX.25, które chcesz używać. Odnosi się to do portów: KISS, Baycom, SCC, PI, PT, DźwiękoModem. W tym miejscu każdy wpis ma odnosić się do każdego z osobna urządzenia AX.25. Wpisy w tym pliku powiązane są z interfejsami sieciowymi poprzez ich znak/identyfikator.

Plik ten używany będzie przez programy opisane dalej.

7.2 Jak utworzyć interfejsy sieciowe AX.25?

Interfejs sieciowy jest tym, co widać na ekranie po wydaniu polecenia 'ifconfig'. Jest to objekt, poprzez który jądro Linuxa odbiera i wysyła dane sieciowe. Prawie zawsze interfejs sieciowy związany jest z fizycznym portem, są jednak wypadki, kiedy nie jest to konieczne. Interfejs sieciowy odnosi się wówczas bezpośrednio do sterownika urządzenia fizycznego. W oprogramowaniu AX.25 pod Linuxem istnieje wiele sterowników urządzeń fizycznych. Najpopularniejszym jest zapewne sterownik KISS, lecz są też inne jak np. sterownik SCC, Baycom czy SoundModem (DźwiękoModem).

Każdy z tych sterowników, przy uruchomianiu go, spowoduje również otworzenie interfejsu sieciowego.

Jak dołączyć urządzenie KISS?

Najczęściej spotykaną konfiguracją bedzię chyba KISS TNC na porcie seryjnym. Należy uprzednio skonfigurować sam TNC i doczepić go do portu seryjnego. Aby wprowadzić swój TNC w tryb KISS można użyć programu terminala, jak np. minicom lub seyon. Z kolei, aby utworzyć urządzenie KISS należy użyć polecenia 'kissattach', które to polecenie w swej najprostszej formie może wyglądać tak:

       # /usr/sbin/kissattach /dev/ttyS0 radio
       # kissparms -p radio -t 100 -s 100 -r 25

Polecenie kissattach utworzy też sieciowy interfejs KISS. Interfejsy te noszą wtedy nazwę od 'ax[0-9]'. Przy pierwszym wydaniu polecenia 'kissattach' powstaje 'ax0', przy następnym 'ax1', itd. Każdy interfejs KISS powiązany jest ze swoim portem seryjnym.

Polecenie 'kissparms' pozwala na manipulowanie różnymi parametrami interfejsu KISS.

W podanym wyżej przykładzie dołączony zostałby sieciowy interfejs KISS do seryjnego urządzenia w Linuxie '/dev/ttyS0' i do portu oznaczonego w pliku /etc/ax25/axports jako 'radio'. Następnie konfigurowany on jest z wartościami 100 milisekund dla txdelay oraz slottime i wartością 25 dla ppersist.

Więcej informacji można znaleźć w man pages w Linuxie.

Konfigurowanie urządzeń TNC o dwóch portach.

Programik 'mkiss', zawarty w programach narzędziowych ax25-utils, pozwala na wykorzystanie obydwu modemów w urądzeniach TNC o dwóch portach. Ustawienie jest dość proste. Programik ten działa tak, że biorąc pojedyncze urządzenie dołaczone do wieloportowego TNC przedstawia je tak, iż wygląda ono, jakby to były dwa urządzenia, każde z własnym TNC. Czynność tę trzeba wykonać zanim zaczniesz jakąkolwiek konfigurację AX.25. Powstałe na skutek tego interfejsy pseudo-TTY, (/dev/ttypf*), które nie są rzeczywistymi urządzeniami seryjnymi, wykorzystywane są z kolei do konfiguracji AX.25. Interfejsy Pseudo-TTY wyprowadzają swego rodzaju fajkę, poprzez którą programy umiejące nadawać do urządzeń /dev/tty mogą sie porozumiewać między sobą. Każda fajka posiada końcówkę master i slave. Końcówki master są ogólnie oznaczane jako /dev/ptyp*, końcówki slave mają emblem /dev/ttyp*. Pomiędzy master a slave istnieje intymna zależnośc, zatem /dev/ptyp0 stanowi koncówkę master dla przewodu, ktory ma /dev/ttyp0 na końcówce slave. Zanim otworzysz końcówkę slave, musisz najpierw otworzyć końcówkę master. 'mkiss' wykorzystuje ten właśnie mechanizm do rozczepienia pojedynczego urządzenia seryjnego, na osobne.

Przykład: jeśli posiadasz TNC o dwóch portach i jest ono doczepione do seryjnego urządzenia /dev/ttyS0 o prędkości 9600 bps, to polecenie:

       # /usr/sbin/mkiss -s 9600 /dev/ttyS0 /dev/ptyp0 /dev/ptyp1
       # /usr/sbin/kissattach /dev/ttyp0 port1
       # /usr/sbin/kissattach /dev/ttyp1 port2
utworzy dwa interfejsy pseudo-tty, a każde z nich wyglądać będzie tak, jakby było pojedynczym seryjnym portem, każde z własnym TNC. Wowczas interfejsy /dev/ttyp0 i /dev/ttyp1 możesz potraktować tak jak inne konwencjonalne seryjne porty z doczepionymi do nich urządzeniami TNC. W praktyce oznacza to, ze odpaliłbyś dla obydwu polecenie 'kissattach' przy zachowaniu wpisów o portach AX.25 jako port1 i port2. Nie należy odpalać polecenia 'kissattach' dla rzeczywistego urządzenia /dev/ttyS0 ponieważ zajęte zostało ono przez program 'mkiss'.

Polecenie 'mkiss' przyjmuje szereg dodatkowych argumentów, które są do twojej dyspozycji. Oto ich streszczenie:

     -c pozwala na dodanie checksum o jednym byte.
        Większość implementacji KISS tego nie obsluguje, jest to
        możliwe przy użyciu Rom'u G8BPG KISS.

     -s <speed>
        ustawia prędkość portu urządzenia seryjnego.

     -h omożliwia hardware handshaking na porcie seryjnym, pierwotnie
        jest wyłączone. Większść implementacji KISS tego nie obsługuje.
        Niektóre jednak to mają.

     -l umożliwia prowadzenie log'u do plików typu syslog.

Jak doczepić urządzenie Baycom

Wbrew powszechnemu przekonaniu, że nie będzie to zbyt dobrze działać, Thomas Sailor podjął się rozbudowy obsługi modemów Baycom pod Linuxem. Jego sterowniki obsługują modemy Ser12 na port seryjny, oraz Par96 i udoskonalony PicPar na porty równoległe. Więcej informacji o samych modemach można uzyskać na Web Serverze Baycoma

Najpierw musisz sprawdzić adres wejścia/wyścia oraz adresy bazowe portu seryjnego lub równoległego, do którego masz doczepiony modem Baycom. Z tą informacją możesz dopiero konfigurować sterownik samego Baycom'a.

Programik sethdlc pozwala na użycie tych parametrów ze sterownikiem, lub, jeśli masz tylko jeden modem Baycom i używasz modułów w Linuxie to można te parametry podać ręcznie jako opcje dla programu 'insmod' ładującego moduł Baycom'a.

Dla przykladu, prosty układ. Wyłączenie sterownika urządzenia seryjnego COM1:, a następnie ustawienie tam sterownika modemu Baycom Ser12 na COM1: z użyciem detekcji typu software DCD:

  # setserial /dev/ttyS0 uart none
  # insmod baycom mode="ser12*" iobase=0x3f8 irq=4

Albo modem Par96 na porcie równoległym LPT1: z użyciem detekcji hardware DCD:

   # insmod baycom mode="par96" iobase=0x378 irq=7 options=0
Nie jest to jednak najlepszy sposób. Programik sethdlc działa dobrze zarówno z jednym jak i z wieloma urządzeniami.

Podręcznik systemowy 'man' programiku sethdlc opisuje szczegóły na ten temat, jednak kilka przykładów pozwoli zilustrować ważniejsze aspekty tejże konfiguracji. Poniższy przykład zakłada, że załadowałeś już moduł Baycom'a poleceniem:

# insmod baycom
Ustawienie sterownika dla interfejsu bc0 stusując równoległy modem Baycom na LPT1: detekcja typu software DCD:
     # sethdlc -p -i bc0 mode par96 io 0x378 irq 7
Ustawienie sterownika dla interfejsu bc1 stosując seryjny modem Baycom na COM1::
    # sethdlc -p -i bc1 mode "ser12*" io 0x3f8 irq 4

Jak ustawić parametry dostępu do kanału AX.25?

Parametry dostępu do kanałów AX.25 są analogiczne do parametrów KISS, takich jak ppersist, txdelay, slottime. Tutaj też używamy programiku sethdlc.

I znów podręcznik systemowy 'man' jest głównym źródłem informacji na temat sethdlc, ale jak zwykłe jeden czy drugi przykład nie zaszkodzi:

Ustawienie interfejsu bc0 z wartością 200ms dla TxDelay, 100ms dla Slottime, wartość 40 dla ppersist oraz half-duplex:

   # sethdlc -i bc0 -a txd 20 slot 10 ppersist 40 half

Zauważ, że wartości licznika są tutaj podane w 10-tkach milisekund.

Jak doczepić urządzenie DźwiękoModem?

Thomas Sailor napisał nowy sterownik dla jądra Linuxa pozwalający na użycie karty dźwiękowej komputera jako modemu do packet radio. Można teraz podłączyć radio bezpośrednio do karty dźwiękowej i zabawić się w packet!! Thomas poleca przynajmniej procesor 486DX/66 ponieważ cały ciężar obliczeniowy sygnału cyfrowego spada w tym wypadku na CPU.

Obecnie sterownik emuluje takie typy modemów: 1200 bps AFSK, 4800 HAPN and 9600 FSK (G3RUH compatible). Jedyne karty, które są obługiwane tym sterownikiem to te, zgodne z SoundBlaster oraz WindowsSoundSystem. Karty dźwiękowe potrzebują dodatkowego układu wspomagającego układ PTT a informację na ten tema można zasięgnąć na domowej stronie Thomas'a Sailora, tutaj. Istnieje szereg możliwości: detekcja syganłu z karty dźwiękowej, lub przez port równoległy, seryjny, port midi. Przykłady schematów są na stronie Thomas'a.

Przy załączeniu sterownik DźwiękoModemu dołącza interfejsy sieciowe: sm0, sm1, sm2, itp.

Uwaga: Sterownik DźwiękoModemu współzawodniczy w zagarnianiu zasobów komputera ze sterownikiem karty dźwiękowej. Jeśli więc planujesz używać sterownik DźwiękoModemu to upewnij się, czy sterownik karty dźwiękowej jest wyinstalowany. Jak zwykłe możesz obydwa skompilować jako moduły i używać je wtedy, gdy jest to wygodne.

Konfigurowanie karty dźwiękowej.

Sterownik DźwiękoModemu nie wzbudza karty dźwiękowej przy ładowniu się systemu. Pakiet ax25-utils zawiera programik 'setcrystal', który obluguje karty oparte o Crystal Chipset. jeśli posiadasz inną kartę to potrzebujesz innego oprogramowania, aby ją pobudzić. Składnia programiku jest oczywista:

     setcrystal [-w wssio] [-s sbio] [-f synthio] [-i irq] [-d dma] [-c dma2]
Jeśli, zatem życzysz sobie doczepić kartę soundblaster na adresie 0x388, irq 10 i DMA 1, to dj tak:
       # setcrystal -s 0x388 -i 10 -d 1
Jeśli ustawiasz kartę WinSoundSystem na adresie 0x534, irq 5, DMA 3, to daj tak:
       # setcrystal -w 0x534 -i 5 -d 3
Parametr [-f synthio] służy do zdeklarowania adresu syntezatora, a [-c dma2] do podania drugiej wartości dla DMA, ktora pozwala na operację full-duplex.

Jak ustawić interfejs DźwiękoModemu?

Po skonfigurowaniu karty dźwiękowej musisz teraz powiedzieć strownikowi DźwiękoModemu gdzie może jej szukać oraz jakiego rodzaju modem ma emulować.

Parametry te mogą zostać zdeklarowane programikiem 'sethdlc', lub, jeśli używać będziesz tylko jednej karty można je podać ręcznie programowi 'insmod', który ładuje sterownik Dźwiękomodemu. Dla przykładu, prosta konfiguracja: jedna karta dźwiękowa SoundBlaster ustawiona według powyższego przykładu i emulująca modem 1200 pbs:

       # insmod soundmodem mode="sbc:afsk1200" iobase=0x220 irq=5 dma=1
Nie jest to jednak najlepszy sposób. Programik sethdlc działa dobrze zarówno z jednym jak i z wieloma urządzeniami.

Man pages programiku sethdlc piszą w szczegółach na ten temat, jednak kilka przykładów pozwoli zilustrować ważniejsze aspekty tejże konfiguracji. Poniższy przykład zakłada, ze załadowałeś już moduł sterownika DźwiękoModemu poleceniem:

       # insmod soundmodem
Ustawienie sterownika do obługi uprzednio skonfigurowanej karty WinSoundSystem, aby emulował modem G3RUH 9600 jako interfejs sieciowy sm0, na porcie równoległym z układem PTT o adresie 0x378:
       # sethdlc -p -i sm0 mode wss:fsk9600 io 0x534 irq 5 dma 3 pario 0x378
       # ifconfig sm0 up
Ustawienie sterownika uprzednio skonfigurowanej karty SoundBlaster, aby emulował modem HAPN 4800 bps jako interfejs sieciowy sm1 z ukladem PTT na porcie seryjnym o adresie 0x2f8:
       # sethdlc -p -i sm1 mode sbc:hapn4800 io 0x388 irq 10 dma 1 serio 0x2f8
       # ifconfig sm1 up
Ustawienie sterownika uprzednio skonfigurowanej karty SoundBlaster, aby emulował modem AFSK 1200 bps jako interfejs sieciowy sm1, na seryjnym porcie z układem PTT o adresie 0x2f8:
       # sethdlc -p -i sm1 mode sbc:afsk1200 io 0x388 irq 10 dma 1 serio 0x2f8
       # ifconfig sm1 up

Jak ustawić parametry dostępu do kanału AX.25?

Parametry dostępu do kanałów AX.25 są analogiczne do parametrów KISS, takich jak ppersist, txdelay, slottime. Tutaj też używamy programiku sethdlc.

I znów man pages są głównym źródłem informacji na temat sethdlc, ale jak zwykle jeden czy drugi przykład nie zaszkodzi:

Ustawienie interfejsu sm0 z wartością 100ms dla TxDelay, 50ms dla Slottime, wartość 128 dla ppersist oraz half-duplex:

       # sethdlc -i sm0 -a txd 10 slot 5 ppersist 128 full
Zauważ, że wartości licznika są tutaj podane w 10-tkach milisekund.

Ustalenie poziomu audio i dostrojenie sterownika

Każdy modem radiowy domaga się do poprawnej pracy właściwej regulacji poziomu audio. Dotyczy to również DźwiękoModem'u. Thomas napisał programy narzędziowe, które ułatwiają to zadanie. Są to: 'smdiag' i 'smmixer'.

smdiag
dostarcza dwóch typów wyświetlacza, typu oscyloskopowego i typu "eye pattern"
smmixer
pozwała na właściwe wyregulowanie poziomu nadawania i odbioru.

To polecenie odpala programik 'smdiag' w trybie "eye" dla interfejsu sm0:

       # smdiag -i sm0 -e
To polecenie odpala programik 'smmixer' dla interfejsu sm0:
       # smmixer -i sm0

Przygotowanie części AX.25 jądra do wykorzystania DźwiękoModemu.

Sterownik DźwiękoModemu powoduje dołączenie standardowego interfejsu sieciowego, gotowego do wykorzystania przez jądro. Konfiguracja przypomina tę, jaką stosujemu przy kartach PacketTwin oraz PI.

Najpierw, interfejsowi trzeba przypisać znak/identyfikator. Używamy programu 'ifconfig'. Polecenie:

  # /sbin/ifconfig sm0 hw ax25 VK2KTJ-15 up
przypisze interfejsowi sm0, należącemu do DźwiękoModemu, znak/identyfikator VK2KTJ-15 w protokole AX.25.

Następny krok to dokonanie wpisu do pliku /etc/ax25/axports podobnie jak dla innych urządzeń fizycznych. Tenże wpis w pliku ax25ports jest powiązany z interfejsem sieciowym, który powyżej skonfigurowałeś na tymże znaku/identyfikatorze. Wpis w pliku axports noszący znak/identyfikator, ktorego użyłeś przy DźwiękoModemie będzie używany jako odnośnik do tego modemu.

Tak ustawione urządzenie AX.25 możesz teraz spożytkować jak każde inne. Skonfiguruj je do pracy w TCP/IP, dodaj je do demona ax25d, użyj do NetRom lub Rose, jak tylko chcesz.

Jak dołaczyć urządzenie z kartą PI?

Sterownik karty PI generuje powstanie interfejsów sieciowych typu `pi[0-9][ab]. Pierwszej wykrytej karcie PI zostanie przypisany interfejs pi0, kolejnej pi1, itd. Literki 'a' i 'b' odnoszą sie do fizycznych portów znajdujących się na karcie PI. Jeśli zbudowałeś jądro z obsługą karty PI, oraz jeśli została ona poprawnie wykryta to możesz skonfigurować sobie interfejs sieciowy w taki sposób:

       # /sbin/ifconfig pi0a hw ax25 VK2KTJ-15 up
Polecenie to skonfigurowałoby pierwszy port pierwszej wykrytej karty PI przypisując jej znak/identyfikator VK2KTJ-15 i uczyniłoby go aktywnym. Zauważ, że znak musi mieć swój odpowiednik w pliku /etc/ax25/axports, aby móc używać tego portu.

Sterownik do karty PI napisany został przez David'a Perry, dp@hydra.carleton.edu

Jak doczepić urządzenie z kartą PacketTwin.

Sterownik karty PacketTwin generuje powstanie interfejsów sieciowych typu `pt[0-9][ab]. Pierwszej wykrytej karcie PacketTwin zostanie przypisany interfejs pt0, kolejnej pt1, itd. Literki 'a' i 'b' odnoszą sie do fizycznych inerfejsów znajdujących się na karcie PacketTwin. Jeśli zbudowałeś jądro z obsługą karty PacketTwin, oraz jeśli została ona poprawnie wykryta to możesz skonfigurować sobie interfejs sieciowy w taki sposób:

       # /sbin/ifconfig pt0a hw ax25 VK2KTJ-15 up
Polecenie to skonfigurowałoby pierwszy port pierwszej wykrytej karty PacketTwin przypisując jej znak/identyfikator VK2KTJ-15 i uczyniłoby go aktywnym. Zauważ, że znak musi mieć swój odpowiednik w pliku /etc/ax25/axports, aby móc używać tego portu.

Sterownik karty PacketTwin został napisany przez Craig Small, VK2XLZ, csmall@triode.apana.org.au.

Jak doczepić generyczne urządzenie SCC?

Joerg Reuter, DL1BKE, jreuter@lykos.tng.oche.de wypracował sterownik do generycznej obsługi kart opartych o scalak Z8520 SCC. Sterownik ten daje się konfigurować do obsługi wielorakich kart oferując interfejs, który zachowuje się tak jak TNC w trybie KISS. Traktuj więc go tak, jakby to był TNC w trybie KISS.

Gdzie uzyskać i jak zbudować pakiet do narzędzi konfiguracyjnych?

Choć sterownik zawarty jest w standardowym żródle jądra to jednak Joerg uwalnia wciąż nowsze wersje źródłowe razem ze specjalnymi narzędziami do konfiguracji, które również potrzebujesz.

Pakiet z narzędziami do konfiguracji znajdziesz tutaj:

db0bm.automation.fh-aachen.de

       /incoming/dl1bke/

  lub:

  insl1.etec.uni-karlsruhe.de

       /pub/hamradio/linux/z8530/

  lub:

  ftp.ucsd.edu

       /hamradio/packet/tcpip/linux
       /hamradio/packet/tcpip/incoming/
Znajdziesz tam różnorakie wersje, więc wybierz te, które odpowiadają twojej wersji jądra:
  z8530drv-2.4a.dl1bke.tar.gz   2.0.*
  z8530drv-utils-3.0.tar.gz    2.1.6 lub nowsze
Oto polecenia, które musiałem wykonać, aby skompilować i zainstalować ów pakiet z jądrem 2.0.25:
  # cd /usr/src
  # gzip -dc z8530drv-2.4a.dl1bke.tar.gz | tar xvpofz -
  # cd z8530drv
  # make clean
  # make dep
  # make module         # jeśli chcesz aby sterownik był modułem
  # make for_kernel     # Jeśli chcesz, aby sterownik był wbudowany w jądro
  # make install
Po zakończonej operacji powinieneś mieć trzy programy w katalogu /sbin: gencfg, sccinit i sccstat. To właśnie one nadają się do tego, aby skonfigurować sterownik dla twojej karty.

Zostanie rownież utworzona specjalna grupa plików w katalogu /dev/ zwanych scc0 .. scc7. Zostaną one później użyte jako urządzenia KISS i właśnie te będziesz stosował.

Jeśli zdecydujesz sie na polecenie 'make for_kernel', wówczas będziesz musiał przebudować jądro. Przy budowaniu jądra po wydaniu polecenia 'make config' zadbaj o to, abyś odpowiedział "Y" na pytanie o obsługę `Z8530 SCC kiss emulation driver for AX.25'.

Nie potrzebyjesz przebudowywać jądra jeśli wybierzesz polecenie 'make module', wówczas plik scc.o zostanie umieszczony w odpowiednim katalogu /lib/modules. Nie zapomnij o poleceniu 'insmod' przed próbą użycia i konfiguracji starownika.

Jak skonfigurować sterownik do twojej karty?

Sterownik Z8530 SCC został pomyślany, tak aby dał się nagiąć do niemalże każdej karty. Lecz z elastycznością idzie w parze trud jej konfiguracji. Bardziej pouczającej lektury dostarczą pliki samego pakietu i powinieneś tam szukać informacji. A w szczególności należy zajrzeć tutaj: doc/scc_eng.doc or doc/scc_ger.doc. Zparafrazowałem poniżej parę ważniejszych detali, lecz w rezultacie pominąłem szczegóły niższego rzędu.

Program sccinit czyta najpierw plik /etc/z8530drv.conf. Plik dzieli się na dwa etapy: ustawienie parametrów dla sprzętu i dla kanału AX.25. Po tym wystarczy tylko dać polecenie:

       # sccinit

Ustawienie parametrów sprzętu.

pierwsza sekcja dzieli się na strofy, każda strofa reprezentuje scalak 8530. Strofy to poprostu lista 'słów' i 'argumentów'. Można w tym pliku zdeklarować do 4 scalaków SCC. Jeśli potrzebujesz więcej to da się to zrobić w pliku scc.c ustawiając żądaną wartosć w #idef MAXSCC 4.

Dozwolone 'słowa' i 'argumenty' to:

chip
słowo chip służy do oddzielania strof. jego argumentem może być wszystko. Argumenty nie są używane.

data_a
używane do zdeklarowania adresu portu "data" dla kanału 'A'. Argument w formie hexadecymalnej, tj. 0x300.

ctrl_a
używany do zdeklarowania adresu portu "control" dla kanału 'A'. Argument w formie hexadecymalnej, tj. 0x304

data_b
używany do zdeklarowania adresu portu "data" dla kanału 'B'. Argument w formie hexadecymalnej, tj. 0x301.

ctrl_b
używany do zdeklarowania adresu portu "control" dla kanału 'B'. Argument w formie hexadecymalnej, tj. 0x305

irq
używany do zdeklarowania IRQ używanego przez 8530 SCC w beżącej strofie. Argument w formie liczby całkowitej, tj. 5

pclock
używany do zdeklarowania częstotliwości zegara na igle PCLK w 8530.. Argument w formie liczby całkowitej w Hz. Wartość domyślna wynosi 4915200.

board
typ płyty. Argumentem jest napis. A oto dozwolone wartości:
        PA0HZP
           karta PA0HZP SCC

        EAGLE
           karta Eagle

        PC100
           karta DRSI PC100 SCC

        PRIMUS
           karta PRIMUS-PC (DG9BL)

        BAYCOM
           karta BayCom (U)SCC

escc
jest nie dobowiązkowe i dołącza obsługę polepszonych scalaków, takich jak:8580, 85180, lub 85280. Argumentem jest tylko 'yes' lub 'no'.

vector
dla kart PA0HZP jest to wartość tzw. "intack port". Może być tylko jeden dla wszystkich scalaków. Wartość domyślna = 0. Nieobowiązkowy.

special
określa rejestry funkcyjne na niektórych kartach. Nieobowiązkowy. Wartość domyślna = 0.

option
jest nieobowiązkowy i przyjmuje warość domyślną 0.

Oto przykładowe konfiguracje dla najbardziej popularnych kart:

     BayCom USCC

          chip    1
          data_a  0x300
          ctrl_a  0x304
          data_b  0x301
          ctrl_b  0x305
          irq     5
          board   BAYCOM
          #
          # SCC chip 2
          #
          chip    2
          data_a  0x302
          ctrl_a  0x306
          data_b  0x303
          ctrl_b  0x307
          board   BAYCOM

     PA0HZP SCC

          chip 1
          data_a 0x153
          data_b 0x151
          ctrl_a 0x152
          ctrl_b 0x150
          irq 9
          pclock 4915200
          board PA0HZP
          vector 0x168
          escc no
          #
          #
          #
          chip 2
          data_a 0x157
          data_b 0x155
          ctrl_a 0x156
          ctrl_b 0x154
          irq 9
          pclock 4915200
          board PA0HZP
          vector 0x168
          escc no

     DRSI SCC

          chip 1
          data_a 0x303
          data_b 0x301
          ctrl_a 0x302
          ctrl_b 0x300
          irq 7
          pclock 4915200
          board DRSI
          escc no
Jeśli twoja karta pracuje pod NOS'em i masz do niej konfigurację, to możesz użyć polecenia 'gencfg' do konwersji poleceń sterownika PE1CHL NOS. Powstaje wtedy plik przydatny do załączenia w pliku konfiguracyjnym dla sterownika z8530.

Polecenia 'gencfg' odpala się z tymi samymi paramatrami co sterownik PE1CHL pod NET/NOS, np.:

       # gencfg 2 0x150 4 2 0 1 0x168 9 4915200
Powyższe wygeneruje szkic konfiguracyjny dla karty OptoSCC.

Konfiguracja kanału.

Sekcja Konfiguracji Kanału zajmuje się zdeklarowniem tych wszystkich parametrów, które rządzą portem , na którym chcesz pracować. Znów mamy tutaj strofy. Każda strofa reprezentuje jeden logiczny port, zatem będziemy mieli dwie strofy ponieważ każda karta 8530 SCC może mieć dwa porty.

Poniższe 'słowa' i 'argumenty' są również zapisywane do pliku /etc/z8530drv.conf i muszą występować za sekcją o parametrach sprzętu.

Kolejność w tej sekcji jest bardzo istotna, lecz jeśli będziesz podążał za sugerowaną sekwencją to powinno działać wszystko w porządku. Dozwolone 'słowa' i 'argumenty to:

device
musi stać w pierszym wierszu deklaracji portu i określa nazwę pliku w katalogu /dev/ stanowiącego podstawę dalszej konfiguracji, tj. /dev/scc0

speed
określa prędkość interfejsu w bitach na sekundę. Argumentem jest liczba calkowita, np. 1200.

clock
określa w parametry dla zegara. Dozwolone wartości to:
dpll
   normalny tryb halfduplex

external
   MODEM dostarcza swój własny zegar Rx/Tx

divider
   użycie devidera fullduplex, jeśli jest zainstalowany

mode
określa czy kodowanie danych ma być załaczone. Argumentami są: nrzi lub nrz

rxbuffers
określa liczbę buforów odbioru, dla których należy rezerwować pamięć. Argumentem jest liczba całkowita, np. 8.

txbuffers
określa liczbę buforów nadawania, dla których należy rezerwować pamięć. Argumentem jest liczba całkowita, np. 8.

bufsize
określa rozmiary buforów odbioru i transmisji. Argumentem jest liczba bytów i stanowi on od sumę wszystkich 'ramek', zatem trzeba więc wziąć pod uwagę również nagłówki protokołu AX.25 a nie li tylko pole danych. Słowo to jest nieobowiązkowe i przyjmuje wartość domyślną 384.

txdelay
to wartość opóżnienia transmisji dla KISS, argumentem jest liczba całkowita.

persist
to wartość parametru persist dla KISS, argumentem jest liczba całkowita.

slot
to jest wartość slottime dla KISS. argumentem jest liczba całkowita w mS.

tail
to jest wartość tail dla KISS. argumentem jest liczba całkowita w mS.

fulldup
to jest oznaczenie fullduplex dla KISS, argumentem jest liczba całkowita. 1==Full Duplex, 0==HALF DUPLEX.

wait
to jest wartość wait dla KISS, argumentem jest liczba całkowita w mS.

min
to jest wartość min dla KISS, argumentem jest liczba całkowita w S.

maxkey
to jest wartość maximum keyup dla KISS, argumentem jest liczba całkowita w S.

idle
to jest wartość licznika idle dla KISS, argumentem jest liczba całkowita w S.

maxdef
to jest wartość maxdef dla KISS, argumentem jest liczba całkowita.

group
to jest wartość group dla KISS, argumentem jest liczba całkowita.

txoff
to jest wartość txoff dla KISS, argumentem jest liczba całkowita w mS.

softdcd
to jest wartość softdcd dla KISS, argumentem jest liczba całkowita.

slip
to jest oznaczenie slip dla KISS, argumentem jest liczba całkowita.

Używanie sterownika.

Przy używaniu sterownika traktujemy urządzenia /dev/scc* tak, jak urządzenie seryjne tty z doczepionym TNC w trybie KISS. Na przykład, aby skonfigurować jądro do obługi sieci pod Linuxem przy użyciu swojej karty należy użyć polecenia:

       # kissattach -s 4800 /dev/scc0 VK2KTJ
Można też doczepić NOS'a w dokładnie taki sam sposób. Z JNOS'a, np. wykonać mógłbyś polecenie:
       attach asy scc0 0 ax25 scc0 256 256 4800

Narzędzia 'sccstat' oraz 'sccparam'.

Pomocnym przy diagnostyce urządzenia SCC jest program 'sccstat'. Wyświetla on bieżącą konfigurację. Spróbuj go tak uruchomić:

       # sccstat /dev/scc0
wyświetli to szeroką gamę informacji związanych z ustawieniem i ogólną kondycją portu /dev/scc0 SCC.

Polecenie 'sccparam' pozwala na zmianę i modyfikowanie parametrów podczas pracy. Składnia przypomina polecenie 'param' z NOS'a, zatem aby ustawić txtail urządzenia na 100mS, należałoby napisać:

       # sccparam /dev/scc0 txtail 0x8d

Jak utworzyć urządzenie BPQ z ethernetem?

Linux jest kompatybilny z BPQ Ethernet. Umożliwia to na przepust protokołu AX.25 po Lokalnej Sieci ethernetowej i doczepienie swojej maszyny do innej obsługującej BPQ na Lokalnej Sieci.

Interfejsy sieciowe typu BPQ noszą nazwę 'bpq[0-9]'. Interfejs 'bpq0' powiązane jest z interfejsem 'eth0', a 'bpq1' z interfejsem 'eth1', itd.

Konfiguracja jest trywialna. Najpierw trzeba ustawić standardowe urządzenie Ethernet. To oznacza, że po wkompilowaniu obsługi karty Ethernet do jądra należy zobaczyć czy pracuje poprawnie. Zajrzyj do Ethernet-HOWTO jak tego dokonać.

Aby ustawić obsługę BPQ potrzebujesz przypisać interfejsowi Ethernet znak/identyfikator AX.25. Oto polecenie, które to spowoduje:

       # /sbin/ifconfig bpq0 hw ax25 vk2ktj-14 up
I znów, nie zapomnij, że znak/identyfikator, który tutaj podajesz musi zgadzać się z wpisem w pliku /etc/ax25/axports dla portu, którego chcesz używać.

Ustawienie węzła BPQ do współpracy z obsługą AX.25 pod Linuxem.

W normalnych warunkach BPQ Ethernet stosuje adres multicast. Pod Linuxem tak nie jest, zamiast tego stosowany jest zwyczajny Ethernetowy adres broadcast. Należy zatem zmodyfikować plik NET.CFG dla sterownika BPQ ODI w nasępujący sposób:

       LINK SUPPORT

               MAX STACKS 1
               MAX BOARDS 1

       LINK DRIVER E2000                    ; lub inne MLID według własnej karty

               INT 10                       ;
               PORT 300                     ; według własnej karty

               FRAME ETHERNET_II

               PROTOCOL BPQ 8FF ETHERNET_II ; wymagane dla BPQ - zmienić PID

       BPQPARAMS                            ; nieobowiązkowe - tylko wtedy,
                                            ; gdy znieniasz docelowy adres

               ETH_ADDR  FF:FF:FF:FF:FF:FF  ; docelowy adres

7.3 Ustawienie parametrów operacyjnych dla interfejsu AX.25

Pakiet ax25-utils zawiera w sobie program narzędziowy 'axctl', który pozwala na ustawienie różnorodnych parametrów interfejsu AX.25.

Polecenie to jest zupełnie proste w użyciu a podręcznik systemowy 'man' dostarcza kompletnego opisu, przykładowym jednak sposobem użycia tego programu może być:

       # /usr/sbin/axctl radio -window 2 -t1 5 -n2 10
Powyższe polecenie ustawiłoby wartości takie jak Window, T1 oraz N2 dla portu AX.25 nazwanego tu 'radio'.

7.4 Ustawieniu routingu AX.25.

Jeśli jest potrzeba można ustawić domyślne ścieżki do digipeaterów dla konkretnych węzłow. Przydaje się to przy zarówno czystych łączach AX.25 jak i opartych o IP. Robimy to poleceniem 'axparms'. Znowu, podręcznik systemowy 'man' podaje wszystkie szczegóły, lecz prosty przykład może być taki:

       # /usr/sbin/axparms -route add radio VK2XLZ VK2SUT
Polecenie to utworzyłoby ścieżkę digipeatera dla stacji VK2XLZ przez stację VK2SUT na porcie AX.25 noszącego nazwę 'radio'.

8. Ustawianie interfejsu AX.25 do pracy w TCP/IP.

Ustawienie portu AX.25 do pracy w TCP/IP jest bardzo proste. Jeśli posiadasz interfejs KISS to masz dwie metody do ustawienia adresu IP. Polecenie 'kissattach' posiada opcję, która pozwala na określenie adresu IP. Metoda konwencjonalna przy użyciu polecenia 'ifconifg' zadziała na wszystkich typach interfejsów.

A zatem, zmieniając poprzedni przykład dla KISS:


       # /usr/sbin/kissattach -i 44.136.8.5 -m 512 /dev/ttyS0 radio
       # /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 ax0
       # /sbin/route add default ax0
utworzy to interfejs AX.25 z adresem IP 44.136.8.5 oraz MTU 512 bytów. Jeśli zachodzi potrzeba to należy inne parametry ustawić tez poleceniem 'ifconfig' raz jeszcze.

Jeśli posiadasz jakikolwiek inny typ interfejsu to stosujesz polecenie 'ifconfig' do ustawienia adresu ip i netmask dla danego portu i dodajesz routing przez ów port, tak jak zrobiłbyś to dla każdego jednego interfejsu TCP/IP. Poniższy przykład jest dla interfejsu Karty PI, ale zadziała równie dobrze dla każdego interfejsu sieciowego AX.25:

       # /sbin/ifconfig pi0a 44.136.8.5 netmask 255.255.255.0 up
       # /sbin/ifconfig pi0a broadcast 44.136.8.255 mtu 512
       # /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 pi0a
       # /sbin/route add default pi0a
Polecenia powyższe powinny być znane dla tych, którzy używali NOS lub jego pochodne lub jakiekolwiek inne oprogramowanie TCP/IP. Zauważ, że jeśli masz już ustawione jakiś interfejs sieciowy to routing domyślny nie jest ci potrzebny.

Aby to wypróbować zpróbuj 'zapingować' lub zrób telnet do lokalnego węzła:

  # ping -i 5 44.136.8.58
Zauważ zastosowanie '-i 5', które sprawia, że pingowanie odbywa się co 5 sekund, a nie jak pierwotnie co 1 sekundę.

9. Ustawienie portu dla NetRom.

Protokół Netrom wykorzystuje i zależy od portów AX.25, które utworzyłeś uprzednio. Protokół NetRom biega po plecach protokołu AX.25. Należy zrobić edycję dwóch plików, aby ustawić sobie NetRom na interfejsie AX.25. Jeden plik określa interfejsy NetRomu, a drugi porty AX.25, po których NetRom będzie biegał.

9.1 Edycja pliku /etc/ax25/nrports

Na początek plik /etc/ax25/nrports. Plik ten określa porty NetRomu podobnie jak plik /etc/ax25/axports określa porty AX.25. Każde urządzenie NetRom musi zawierać swój wpis w pliku /etc/ax25/nrports. Normalnie, na Linuxie spotykamy tylko jedno urządzenie Netrom, które używa wielu zdeklarowanych portów AX.25. W niektórych tylko wypadkach, jak np. z BBS'em, można utworzyć dodatkowy pseudonim dla węzła NetRom, wówczas będzie więcej niż jeden.

Plik ten ma taką formę:

       name callsign  alias  paclen   description
Gdzie:
name
to tekst, według którego chcesz odwoływać sie do tego portu.

callsign
to jest znak/identyfikator, na którym pracować będzie protokół NetRom. Uwaga: nie jest to znak, do którego użytkownicy będą się łączyć, aby wejść do twojego węzła. (program 'node' opisany jest dalej). Znak ten powinien być unikalny i nie powinien powtarzać się nigdzie w pliku /etc/ax25/axports lub /etc/ax25/nrports.

alias
to jest przypisany pseudonim dla portu NetRom

paclen
to jest maksymalny rozmiar ramek NetRom transmitowanych przez ten port

description
dowolna nazwa dla tego portu

Oto jak może to wyglądać:

       netrom  VK2KTJ-9        LINUX   236     Linux Switch Port
Plik ten używany jest m. in. przez program call.

9.2 Ustawienie pliku /etc/ax25/nrbroadcast

Następny plik to /etc/ax25/nrbroadcast. Zawiera on parę wpisów. Normalnie potrzebny jest jeden apis dla każdego portu AX.25 po którym puszczany będzie protokół NetRom.

Plik przyjmuje taki format:

       axport min_obs def_qual worst_qual verbose
Gdzie:

axport
to nazwa portu uzyskana z pliku /etc/ax25/axports. Jeśli w pliku /etc/ax25/axports nie ma wpisu dla danego portu oznacza to, że zabraknie routingu dla NetRom na tym porcie oraz, że broadcasts będą ignorowane.

min_obs
jest to wartość dla min obscelecence dla tego portu

def_qual
określa wartość default quality dla NetRomu na tym porcie

worst_qual
określa wartość 'worst quality' dla NetRomu na tym porcie, wszystki routingi o tej wartości będą ignorowane

verbose
to jest oznakowanie czy z tego portu wychodzić będzie NetRom broadcast w pełnej formie czy też jednynie broadcast o tym wężle.

Oto przykład:

       radio    1       200      100         1

9.3 Jak utworzyć interfejs sieciowy dla NetRom.

Po ustawieniu powyższych dwóch plików należy teraz utworzyć urządzenie NetRom w bardzo podobny sposób do tego, w jaki czyniliśmy do dla urządzeń AX.25. Tym razem stosujemy polecenie 'nrattach'. Działa ono tak samo jak 'axattach' z tą różnicą, że powoduje doczepienie sieciowych interfejsów zwanych 'nr[0-9]'. I znów, przy pierwszym użyciu utworzon zostaje interfejs 'nr0', przy następnym użyciu, 'nr1' itd. Zatem, aby doczepić sieciowy interfejs do portu NetRom, który zdefiniowaliśmy uprzednio, wydalibyśmy polecenie:

       # nrattach netrom
Polecenie to wygenerowało by pojawienie się interfejsu (nr0), z parametrami według szczegółów określonych w pliku /etc/ax25/nrports dla portu 'netrom'.

9.4 Odpalenie demona NetRom.

Jądro Linuxa obsługuje wszystkie mechanizmy protokołu NetRom, nie potrafi tylko wykonać niektórych funkcji. Demon NetRomu bierze na siebie tablice routingowe i broadcasty NetRomu. Uruchamiamy go poleceniem:

       # /usr/sbin/netromd -i
Po pewnej chwili powinieneś zobaczyć jak plik /proc/net/nr_neigh wypełnia się powoli informacjami o sąsiednich stacjach NetRom.

Nie zapomnij umieścić polecenia /usr/sbin/netromd w jednym z plików *rc, aby zostało odpalone przy ładowaniu systemu operacyjnego.

9.5 ustawienie routingu dla NetRom

Możliwe jest ustawienie statycznych ścieżek NetRom do poszczególnych węzłów. Pozwala na to polecenie 'nrparms'. podręcznik systemowy 'man' podaje kompletny opis, a tutaj mamy prosty przkład:

       # /usr/sbin/nrparms -nodes VK2XLZ-10 + #MINTO 120 5 radio VK2SUT-9
Polecenie to utworzyłoby ścieżkę statyczną #MINTO:VK2XLZ-10 poprzez sąsiada VK2SUT-9 na porcie AX.25 o nazwie 'radio'.

Można też ręcznie dokonać wpisu dla sąsiednich stacji przy użyciu polecenia nrparms, Przyklad:

       # /usr/sbin/nrparms -routes radio VK2SUT-9 + 120
polecenie to wpisałoby VK2SUT-9 jako sąsiada z wartością 'quality' 120, wpis nie zostanie usunięty automatycznie lecz jest stały.

10. Ustawienie interfejsu NetRom dla pracy w TCP/IP.

Ustawianie interfejsu NetRom dla pracy w TCP/IP przypomina zupełnie konfigurowanie interfejsu AX.25 dla pracy w TCP/IP. Tutaj też, można albo określić adres IP i wartość MTU w wierszu poleceń dla 'nrattach', albo zastosować polecenie 'ifconfig' i 'route'. Należy jednak ręcznie wprowadzić wpisy ARP dla węzłów, do których chcesz mieć routing ponieważ brakuje mechanizmu, dzięki któremu twój komputer mógłby dowiedzieć się o adresach NetRom, które powinien użyć aby dotrzeć do poszczególnego węzła IP.

Zatem, doczepimy teraz interfejs nr0 z adresem IP 44.136.8.5 i MTU 512 oraz ustawimy go według szczegółów zawartych w pliku /etc/ax25/nrports na porcie NetRom o nazwie "netrom":

       # /usr/sbin/nrattach -i 44.136.8.5 -m 512 netrom
       # route add 44.136.8.5 nr0
lub można zrobić to tak, ale ręcznie:
       # /usr/sbin/nrattach netrom
       # ifconfig nr0 44.136.8.5 netmask 255.255.255.0 hw netrom VK2KTJ-9
       # route add 44.136.8.5 nr0
Następnie, dla każdego węzła IP, który chesz aby był osiągalny, potrzeba dopisać recznie wartości dla ARP i route. Dopiszmy zatem węzeł docelowy z adresem IP 44.136.80.4 o adresie NetRom BBS:VK3BBS osiągalnego przez sąsiada VK2SUT-0:
       # route add 44.136.80.4 nr0
       # arp -t netrom -s 44.136.80.4 vk2sut-0
       # nrparms -nodes vk3bbs + BBS 120 6 sl0 vk2sut-0
Argumenty '120' i '6' podane dla 'nrparms' to 'quality' i 'absolecence' dla NetRomu, który używa ich dla tej ścieżki.

11. Ustawienie portu Rose

Sieciowa warstwa packet protokołu Rose przypomina trzecią warstwę specyfikacji protokołu X.25. Obsługa Rose w jądrze Linuxa jest odmianą implementacji Rose przyjętej przez FPAC. http://fpac.lmi.ecp.fr/f1oat/f1oat.html

Sieciowa warstwa packet protokołu Rose używa i polega na portach AX.25, które uprzednio utworzyłeś. Protokół Rose biega po plecach protokołu AX.25. Aby ustawić Rose potrzeba dopisać plik konfiguracyjny dla portów Rose.

11.1 Ustawienie pliku /etc/ax25/rsports.

Plikiem, gdzie dopisujemy interfejsy dla Rose jest /etc/ax25/rsports. Określa on porty Rose w podobny sposób jak plik /etc/ax25/axports robi to dla portów AX.25. Oto jego format:

       name  addresss  description
Gdzie:
name
jest tekstem, według którego chcesz odwoływać się do tego portu.

address
jest 10-cio cyfrowym adresem Rose, który przypisujesz temu portowi.

description
jest dowolnym tekstem opisującym port.

Oto jak można to wpisać:

      rose  5050294760  Rose Port
Zauważ, że Rose używać będzie domyślnie znaku/identyfikatora podanego dla portu AX.25 , chyba że specjalnie podasz inny. Aby podać osobny znak/identyfikator dla Rose, który używany będzie na każdym używanym porcie, trzeba wydać polecenie 'rsparms' w taki sposób:
       # /usr/sbin/rsprams -call VK2KTJ-10
Przykład ten spowodowałby, że Linux słuchałby na znaku/identyfikatorze VK2TKJ-10 i używałby tegoż znaku na wszystkich portach AX.25 ustawionych dla łączności drogą Rose.

11.2 Jak doczepić sieciowy interfejs Rose?

Po utworzeniu pliku /etc/ax25/rsports można doczepić urządzenie Rose w taki sam spoób jak urządzeia AX.25. Tym razem używa się polecenia 'rsattach'. Polecenie 'rsattach' doczepia sieciowe interfejse zwane 'rose[0-5]'. Przy pierwszym poleceniu rsattach powstaje interfejs 'rose0', przy drugim, 'rose1', itd. Przykład:

       # rsattach rose
Polecenie to wygeneruje interfejs Rose (rose0) ustawiony według szczegółów podanych w pliku /etc/ax25/rsports dla wpisu nazwanego 'rose'.

11.3 Ustawienie routingu dla Rose.

Obecnie, protokół Rose obsługuje jedynie ścieżki statyczne. Program 'rsparms' pozwala na zapisanie tablic routingowych dla Rose pod Linuxem.

Na przykład:

      # rsparms -nodes add 5050295502 radio vk2xlz
Powyższe dodałoby ścieżkę do węzła Rose 5050295502 na porcie AX.25 'radio' znajdującego w pliku /etc/ax25/axports przez stację sąsiednią o znaku VK2XLZ.

Możliwe jest ustawienie ścieżki, która uchwyci wiele docelowych stacji Rose w formacie jednego wpisu. Składnia wygląda następująco:

       # rsparms -nodes add 5050295502/4 radio vk2xlz
co jest jednoznaczne w wyżej podanym przykładem z tą różnicą, że uchwycone zostają tutaj wszystkie stacje docelowe rozpoczynające się od 4 cyfr początkowych, w tym wypadku 5050. Jeszcze inaczej można zapisać to tak:
       # rsparms -nodes add 5050/4 radio vk2xlz
co jest chyba mniej dwuznaczne.

12. Łączności AX.25/NetRom/Rose.

Po zaktywizowaniu i ustawieniu wszystkich interfejsów AX.25, NetRom i Rose można w końcu popróbować łaczności.

Pakiet programów narzędziowych AX.25 zawiera program zwany 'call', który jest programem terminala z rozłącznym ekranem dla AX.25, NetRom i Rose.

Prosta łączność wygląda tak:

       /usr/bin/call radio VK2DAY via VK2SUT
Łączność z węzłem NetRom o pseudonimie SUNBBS wygląda tak:
       /usr/bin/call netrom SUNBBS
Łączność przez Rose do stacji HEARD o węźle 5050882960, w ten sposób:
       /usr/bin/call rose HEARD 5050882960
Uwaga: 'call' musi wiedzieć na jakim porcie odbywa się łączność ponieważ te same stacje mogą być przecież osiągalne przez jakikolwiek port uprzednio skonfigurowany.

'call' pracuje w trybie liniowym w łącznościach przez AX.25. Traktuje on wiersze rozpoczynające się od '~' jako polecenia. Polecenie '~.' zamyka łączność.

Więcej informacji można znaleźć w podręczniku systemowym 'man'.

13. Ustawienie Linuxa do przyjmowania łączności.

Linux jako system operacyjny posiada ogromne możliwości i nagina się do wielu sytuacji, gdy trzeba go konfigurować. Z elastycznością przychodzi też trud ustawiena go tak, żeby robił to czego chcemy. Trzeba zadać sobie wiele pytań przed rozpoczęciem ustawienia Linuxa do przyjmowania łączności z zewnątrz przez Rose, AX.25 i NetRom. Najważniejszym z nich jest:"Co chcę, aby użytkownicy zobaczyli podczas łączności?". Ludzie piszą rozmaite ciekawe programy, które mogą służyć użytkownikom, na przykład 'pms' zawarty w ax25-utils, lub 'node', bardziej rozbudowany' też dostępny w ax25-utils. Można też dać użytkownikom szansę zalogowania sie i użycia powłoki systemowej lub napisać własny program, jakąś grę lub bazę danych i pozwolić użytkownikom zrobić do niej łączność. Cokolwiek postanowisz musisz określić to oprogramowaniu AX.25, aby wiedziało co odpalić podczas wchodzących łączności.

Program 'ax25d' przypomina 'inetd' stosowany powszechnie do przyjmowania wchodzących łączności TCP/IP na unixach. Czuwa on i nasłuchuje na wchodzące łączności. Jeśli ją wykryje to sprawdza swój plik systemowy, aby zdecydować jakim programem usłużyć tej konkretnej łączności. Wytłumaczymy zatem jak ustawić ten plik, który jest standardowy, narzędziem do przyjmowania wchodzących łączności.

13.1 Edycja pliku /etc/ax25/ax25d.conf.

Plik ten ustawia demona 'ax25d' protokołu AX.25, który to demon zajmuje się wchodzącymi łącznościami AX.25, NetRom i Rose.

Na perwszy rzut oka jest troche powikłane ale po chwili przekonasz się, że "nie taki diabeł czarny, jak go malują". Trzeba być tylko świadomy paru małych pułapek.

Ogólny format pliku ax25d.conf jest taki:

 # This is a comment and is ignored by the ax25d program.
  [port_name] || <port_name> || {port_name}
  <peer1>    window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments>
  <peer2>    window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments>
  parameters window T1 T2 T3 idle N2 <mode>
  <peer3>    window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments>
  default    window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments>
Gdzie:
#
stając na początku wiersza oznacza komentarz i jest całkowicie pomijane przez program 'ax25d'.

<port name>
nazwa portu AX.25, NetRom lub Rose korespondująca kolejno do plików /etc/ax25/axports, /etc/ax25/nrports and /etc/ax25/rsports. Nazwa portu objęta jest nawiasem '[]' dla portu AX.25, '<>' dla NetRom, '{}' dla Rose. Można też inaczej zapisać to pole stosując 'znak/identyfikator via' przed nazwą portu, pokazując w ten sposób, że będzie można łączyć się do tego interfejsu przez podany tutaj znak. Podamy dalej przykład, który to zilustruje.

<peer>
znak/identyfikator węzła wchodzącego, dla którego te ustawienia będą obowiązywać. Jeśli nie podasz tutaj numerycznego identyfikatora to każdy będzie pasował.

window
parametr Window dla AX.25 (K) lub MAXFRAME dla tego ustawienia

T1
licznik retransmisji Ramki (T1) w jednoskach półsekundowych

T2
czas wyczekiwania oprogramowania AX.25 na następną ramkę przed przygotowaniem odpowiedzi, w jednostkach jednosekundowych.

T3
czas wyczekiwania zanim oprogramowanie AX.25 zamknie bezczynną łączność, mierzone w jednostkach 1 sekundy.

idle
wartość licznika braku akrywności w sekundach

N2
liczba kolejnych retransmisji, które nastąpią zanim łącze zostanie zamknięte.

<mode>
dostarcza mechanizmu pozwalającego na określenie pewnego typu zezwoleń. Podając rozmaite literki, każda reprezentuje jakieś zezwolenie, można manipulować tą funkcją. Literki muszą być albo małe albo duże i muszą być w jednym ciągu bez spacji. Oto do one:

        u/U
           UTMP                   - nie używane

        v/V
           Validate call          - nie używane

        q/Q
           Quiet                  - nie prowadzi log-u dla łączności

        n/N
           check NetRom Neighbour - nie używane

        d/D
           Disallow Digipeaters   - łączność musi być bezpośrednia, bez digi
           

        l/L
           Lockout                - odrzuca łączność

        */0
           marker                 - ustawia znaczek, nie zmienia zezwoleń

     <uid>
        'userid' w Linuxie dla programu, który będzie obsługiwał wchodzącą łącznśść
       
     <cmd>
        pełna ścieżka dostępu programu, bez żadnych argumentów

     <cmd-name>
        tekst, który wystąpi dla tego programu po wydaniu polecenia systemowego 
        'ps' (Najczęsciej nazwa własna programu bez ścieżki dostępu).

     <arguments>
        są to argumenty podawane w wierszu poleceń dla <cmd>. Argumenty
        te przybierają rozmaite znaczenie w zależności od poniższych ustawień:

        %d Nazwa portu, na którym przyjęto łączność.

        %U znak/identyfikator AX.25 dołączonej stacji bez numerka SSID, dużymi
           literami.

        %u znak/identyfikator AX.25 dołączonej stacji bez numerka SSID, małymi
           literami.

        %S znak/identyfikator AX.25 dołączonej stacji z numerkiem SSID, dużymi
           literami.

        %s znak/identyfikator AX.25 dołączonej stacji z numerkiem SSID, małymi
           literami.

        %P znak/identyfikator węzła, od którego dokonuje się
           łączność, bez numerka SSID, dużymi literami

        %p znak/identyfikator węzła, od którego dokonuje się
           łączność, bez numerka SSID, małymi literami

        %R znak/identyfikator węzła, od którego dokonuje się
           łączność, z numerkiem SSID, dużymi literami

        %r znak/identyfikator węzła, od którego dokonuje się
           łączność, z numerkiem SSID, małymi literami
Potrzebna jest jedna sekcja według powyższego formatu dla każdego interfejsu AX.25, NetRom i Rose, na którym przyjmowane mają być wchodzące łączności typu AX.25, NetRom i Rose.

W paragrafie tym są jeszcze dwa specjalne wiersze, jeden rozpoczyna się od słowa 'parameters' a drugi od 'default' (tak, tak, różnią się). Wiersze te służą do specjalnych cełów.

Wiersz 'default' służy jako siatka-na-wszystko. Wchodzące łączności, które nie mają własnych zezwoleń na danym interfejsie <interface_call> dostaną wartości domyślne podane w 'default'. Jeśli wpisu 'default' nie ma w ogóle to wszystkie wchodzące łączności nie posiadające własnych zezwoleń będą natychmiast odrzucone bez ostrzeżenia.

Wiersz 'parameters' jest trochę bardziej subtelny i to tutaj jest ta pułapka, o której wspominałem u początku. Jakiekolwiek pole, którejkolwiek deklaracji dla węzła wchodzącego można wypełnić znaczekiem '*' by uzyskać 'wartość domyślną'. Wiersz 'parameters' jest wierszem, który deklaruje wspomniane 'wartości domyślne'. Oprogramowanie jądra z kolei posiada swoje własne wartości domyślne, których użyje jeśli nic nie określisz w wierszu 'parameters'. Pułapka polega na tym, że wartościustawione wierszem 'parameters' działają tylko w dól, a nie w górę. Można mieć więcej niż tylko jeden wpis 'parameters' dla poszczególnych interfejsów grupując sobie wartości domyślne.

13.2 Prosty przykład pliku ax25d.conf file.

No dobrze, teraz ilustracja:

       # ax25d.conf for VK2KTJ - 02/03/97
       # This configuration uses the AX.25 port defined earlier.

       # <peer> Win T1  T2  T3  idl N2 <mode> <uid> <exec> <argv[0]>[<args....>]

       [VK2KTJ-0 via radio]
       parameters 1    10  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u +
       VK2XLZ     *     *  *  *  *   *   *
       VK2DAY     *     *  *  *  *   *   *
       NOCALL     *     *  *  *  *   *   L
       default    1    10  5 100 180 5   *    root  /usr/sbin/pms pms -a -o vk2ktj

       [VK2KTJ-1 via radio]
       default    *     *    *   *   *   0    root /usr/sbin/node node

       <netrom>
       parameters 1    10  *  *  *   *   *
       NOCALL     *     *  *  *  *   *   L
       default    *     *  *  *  *   *   0        root /usr/sbin/node node

       {VK2KTJ-0 via rose}
       parameters 1    10  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u +
       VK2XLZ     *     *  *  *  *   *   *
       VK2DAY     *     *  *  *  *   *   *
       NOCALL     *     *  *  *  *   *   L
       default    1    10  5 100 180 5   *    root  /usr/sbin/pms pms -a -o vk2ktj

       {VK2KTJ-1 via rose}
       default    *     *    *   *   *   0    root /usr/sbin/node node radio
Powyżej ukazane jest, że ktokolwiek usiłujący łączności do znaku `VK2KTJ-0' na porcie AX.25 o nazwie 'radio' otrzyma takie zezwolenia:

Jeśli ktoś ma ustawione 'NOCALL' zostanie odrzucony, patrz użycie literki 'L'.

Wiersz 'parameters' zmienia dwie wartości spośród domyślnych wartości jądra (Windows i T1) oraz wyznacza program /usr/sbin/axspawn program, aby był odpalony. Ktorakolwiek instancja programu 'axspawn' uruchomiona w ten sposób będzie widoczna po wydaniu polecenia 'ps' w Linuxie jako axspawn. Dwa następne wiersze dostarczają definicji dla dwóch stacji, do których powyższe reguły zostaną zastosowane.

Ostatni wiersz w paragrafie jest definicją typu siatka-na-wszystko i zostanie zastosowana do wszystkich innych stacji (łącznie z VK2XLZ i VK2DAY jeśli mieć będą inne numerki SSID niż -1). Definicja ta ustawia wprost wszystkie wartości, dodatkowo odpala wchodzącym łącznościom typu AX.25 program 'pms' informując go, że łączność jest typu AX.25 i że właścicielem jest znak VK2KTJ. (Patrz 'Ustawianie PMS'a' poniżej).

Następna konfiguracja przyjmuje łączności do znaku VK2KTJ-1 przez port 'radio'. Odpala ona program 'node' dla wszystkich, którzy się do niego łączą.

Kolejna konfiguracja obsługuje NetRom. Zauważ zastosowanie nawiasów znaku-większości i znaku-mniejszości zamiast nawiasów kwadratowych. One właśnie deklarują wejście do NetRom. Ustawienie jest prostsze i mówi tylko tyle, że ktokolwiek wchodzi do stacji przez NetRom na porcie zwanym 'netrom' otrzyma program 'node', chyba że ma znak 'NOCALL' i wtedy zostanie odrzucony.

Dwie ostanie konfiguracje przeznaczone są dla wchodzących łączności Rose. Pierwsza dla ludzi, którzy poprzez adres naszego węzła Rose wołają znak 'vk2ktj-0' a druga dal tych, co wołają znak 'VK2KTJ-1'. Działają one w dokładnie ten sam sposób. Zauważ zastosowane nawiasy, które odróżniają port Rose.

Powyższy przykład jest zmyślony ale myślę, że jasno ilustruje ważne cechy składni pliku konfiguracyjnego. Pełny opis pliku znajdziesz w podręczniku systemowym 'man' dla ax25d.conf. Załączono bardziej szczegółowy przykład w pakiecie ax25-utils, który też się może przydać.

13.3 Uruchamianie demona ax25d.

Po edycji wspomnianych dwóch plików można odpalić program ax25d poleceniem:

       # /usr/sbin/ax25d

Gdy program pracuje, wówczas użytkownicy powinni móc łączyć się przez AX.25 do twojego Linuxa. Pamiętaj, abyś umieścił polecenie ax25d w plikach rc, aby startowało za każdym razem gdy właczasz komputer.

14. Ustawienie węzła.

Oprogramowanie węzła zostało zrobione przez Tomi'ego Manninen tomi.manninen@hut.fi i opierało się głownie na programie PMS. Dostarcza ono dość elastycznych i kompletnych możliwości dla węzła, które łatwo ustawić. Użytkownicy, po ustaleniu łączności, mogą odpalić Telnet, wykonać dalsze łączności NetRom, Rose lub AX.25 jak również uzuskiwać rozmaite informacje tak jak Finger, lista Węzłow i stacji ostanio słyszanych, itp. Węzeł można ustawić dość prosto tak, że zaserwuje on jakąkolwiek usługę dostępną pod Linuxem.

Normalnie, 'node' wywoływany może być przez program 'ax25d', odpowie on też na wezwania wchodzące drogą TCP/IP dzięki 'inetd', który wpuści użytkownika i odpali go dla niego, lub można go uruchomić z wiersza poleceń.

14.1 Utworzenie pliku /etc/ax25/node.conf.

Plik node.conf decyduje o głównej konfiguracji węzła. Jest prostym plikiem tekstowym, a jego składnia jest taka:

  # /etc/ax25/node.conf
  # configuration file for the node(8) program.
  #
  # Linie rozpoczynające się od # są komentarzami i są ignorowane.

  # Hostname
  # deklaruje nazwę 'hostname'  dla węzła
  hostname        radio.gw.vk2ktj.ampr.org

  # Local Network
  # pozwala na określenie tego co 'local' w celach rewizji zezwoleń
  # przy użyciu node.perms
  localnet        44.136.8.96/29

  # Hide Ports
  # Jeśli wpisane, pozwala na ukrycie portów przed użytkownikami. Podane porty
  # nie będą wyświetlane poleceniem (P)orts.
  hiddenports     rose netrom

  # Callserver
  # jeśli wpisane, pozwoli użytkownikom na dostęp do callserver'a.
  callserver      zone.oh7rba.ampr.org

  # Node Identification.
  # to pojawi się w zachęcie systemowej węzła
  NodeId          LINUX:VK2KTJ-9

  # NetRom port
  # To jest nazwa portu NetRom, który używany będzie do wychodzących łączności
  # z węzła 'node'.
  NrPort          netrom

  # Node Idle Timeout
  # Określa w sekundach wartość "idle time" dla łączności z tym węzłem
  idletimout      1800

  # Connection Idle Timeout
  # określa licznik "idle" dla łączności uczynionych przez ten węzeł, w sekundach
  # seconds.
  conntimeout     1800

  # Reconnect
  # Określa czy łączność z użytkownikami powinna być ponowiona gdy ich łączność
  # z innymi stacjami została przerwana czy też mają być rozłączeni na dobre.
  # 
  reconnect       on

  # Pseudonimy dla poleceń
  # pozwala na uproszczenie uwikłanych poleceń węzła
  alias           CONV    "telnet vk1xwt.ampr.org 3600"
  alias           BBS     "connect radio vk2xsb"

  # Pseudonimy dla poleceń zewnętrzych
  # Pozwala na odpalanie programów z zewnątrz spod węzła 'node'.
  # extcmd <cmdname> <flag> <userid> <command>
  # Flag == 1 to jest jedyna dotychczas stosowana funkcja.
  # <command> jest pisane tak jak dla ax25d.conf
  extcmd          PMS     1       root    /usr/sbin/pms pms -u %U -o VK2KTJ

  # Logging
  # Ustawienie log-u do log-u systemowego. 3 - najbardziej gadatliwe, 
  # 0 - wyłączone.
  loglevel        3

14.2 Utworzenie pliku /etc/ax25/node.perms.

Węzeł 'node' pozwala na ustawienie pewnych zezwoleń dla użytkowników. Zezwolenia te pozwalają ci decydować, którzy użytkownicy mogą używać opcji takich jak (T)elnet, i (C)onnect, na przykład, a którzy nie mogą. Plik node.perms zawiera właśnie te informacje i składa się z pięciu kluczowych pól. Jeśli pole zawiera znaczek '*' to zastępuje cokolwiek. Przydaje się to do definicji reguł domyślnych.

     user
        zawiera znak lub użytkownik do którego kolejne zezwolenia się tyczą.
        Numerki SSID są ignorowane, zatem umieścić tutaj należy goły znak.

     method
     każdy protokól i metoda dostępu może otrzymać swoje zezwolenia. Na przyklad
     możesz zezwolić użytkownikom dołączonym protokołem AX.25 i NetRom używać
     opcji (C)onnect, ale zabronić tego innym, którzy weszli telnetem 
     z nie-lokalnego węzła. Drugie pole zatem pozwala określenie reguł
     dla łączności, które weszły różnymi metodami. Oto te metody:

          method  description
          ------  -----------------------------------------------------------
          ampr    Użytkownik wszedł telnetem z adresu amprnet (44.0.0.0)
          ax25    Użytkownik wszedł drogą AX.25
          host    Użytkownik wszedł odpalając 'node' z wiersza poleceń
          inet    Użytkownik wszedł telnetem z adresu 'non-local'i z poza amprnet
          local   Użytkownik wszedł telnetem z komputera typu 'local'
          netrom  Użytkownik wszedł drogą NetRom
          rose    Użytkownik wszedł drogą Rose
          *       Użytkownik wszedł jakkolwiek.
    

     port
        Dla użytkowników wchodzących przez AX.25 można udzielać zezwoleń osobno
        każdy port Ax.25. Pozwala to decydować co użytkownicy AX.25 mogą robić
        zależnie od tego do jakiego portu się podłączyli. Trzecie pole zawiera
        nazwę owych portów, jeśli używasz tej funkcji. Działa to tylko dla
        łączności przez AX.25.

     password
        nieobowiązkowo, można ustawić węzeł tak, że przedstawi on użytkownikom
        zachętę systemową, aby wprowadzili hasło zanim się dołączą. Przydaje się
        to do ochrony tych użytkowników, którzy ustawiony mają wysoki stopień
        zezwoleń. Jeśli czwarte pole ma być wypełnione to jego wartość jest 
        hasłem, które będzie przyjęte.

     permissions
        to pole stoi jako ostanie dla każdego wpisu w pliku. Jest ono kodowane
        bitowo tak, że każda usługa posiada swoją wartość bitową, której wpisanie
        powoduje, że zezwolenie na usługę jest udzielone lub zabronione. Oto 
        lista usług i im korespondujących warości bitowych:

     value   description
     -----   -------------------------------------------------
      1      Zezwolenie na Login
      2      Zezwolenie na (C)onnect drogą AX.25
      4      Zezwolenie na (C)onnect drogą NetRom
      8      Zezwolenie na (T)elnet do 'lokalnych' węzłów
      16     Zezwolenie na (T)elnet do węzłów z sieci amprnet (44.0.0.0)
      32     Zezwolenie na (T)elnet do 'nie-lokalnych', węzłów z poza amprnet
      64     Zezwolenie na (C)onnect drogą AX.25 przez ukryte porty
      128    Zezwolenie na (C)onnect drogą Rose
Aby zakodować wartość zezwoleń dla danej reguły poprostu wybierz te zezwolenia, które chcesz, aby użytkownik miał i dodaj ich wartości bitowe. Otrzymaną w ten sposób cyfrę należy umieścić w polu nr. 5.

Oto jak można ustawić plik node.perms:

       # /etc/ax25/node.perms
       #
       # Operatorem węzła jest VK2KTJ, posiada hasło 'secret' i wolno mu szystko
       # jakąkolwiek metodą wszedł
       vk2ktj  *       *       secret  255

       # Ci użytkownicy są nie wejdą w ogóle
       NOCALL  *       *       *       0
       PK232   *       *       *       0
       PMS     *       *       *       0

       # Użytkownicy INET też nie wejdą w ogóle  
       *       inet    *       *       0

       # Ci, którzy weszli drogą AX.25,NetRom, Local, Host i AMPR mają zezwolenie
       # na (C)onnect i (T)elnet do węzłów 'lokalnych' i amprnet, ale nie innych
       # adresów IP.
       *       ax25    *       *       159
       *       netrom  *       *       159
       *       local   *       *       159
       *       host    *       *       159
       *       ampr    *       *       159

14.3 Ustawienie węzła, aby był uruchamiany z ax25d.

Program 'node' powinien normalnie być uruchamiany przez program 'ax25d'. Dokonujemy tego wpisując odpowiednie reguły w pliku /etc/ax25/ax25d.conf. Na mojej maszynie chcialem, aby użytkownicy mieli wybór łączności do węzła lub innych programów usługowych. 'ax25d' pozwala właśnie na to jeśli sprytnie powpisujesz pseudonimy portów. Dla przykładu, stosując powyższą konfigurację ax25d chcę ustawić 'node' tak, aby użytkownicy łączący się do VK2KTJ-1 dostali się do węzła 'node'. Wpisałem zatem takie wiersze do pliku /etc/ax25/ax25d.conf:

       [vk2ktj-1 via radio]
       default    *     *    *   *   *   0    root /usr/sbin/node node
To oznacza, że oprogramowanie jądra Linuxa odpowie na prośbę o łączność dla znaku 'VK2KTJ-1' na porcie AX.25 nazwanego 'radio', i odpali potem program node.

14.4 Ustawienie węzła, aby był uruchamiany z 'inetd'.

Jeśli chcesz, aby użytkownicy mogli wejść telnetem do twojej maszyny i uzyskać dostęp do węzła 'node' to nie ma nic prostszego. Najpierw zdecyduj na jaki port użytkownicy powinni się łaczyć. W tym wypadku wybrałem arbitralny numer 4000, choć Tomi podaje w swojej dokumentacji szczegóły na temat jak podmienić zwyczajnego demona telnetu na demona węzła 'node'.

Potrzebujesz zmodyfikować dwa pliki.

Do pliku /etc/services powinieneś dodać:

      node    4000/tcp        #OH2BNS's node software
a do pliku /etc/inetd.conf dodaj:
       node    stream  tcp     nowait  root    /usr/sbin/node node
Po wykonaniu tego i po restarcie programu 'inetd' użytkownicy, którzy wchodzą telnetem na port 4000 w twojej maszynie dostaną zachętę systemową, aby się zalogować, i jeśli zostało to dla nich skonfigurowane to hasło, po podaniu którego podłączeni zostaną do węzła 'node'.

15. Ustawienie programu axspawn.

Program axspawn pozwala wchodzącym drogą AX.25 stacjom na zalogowanie się do twojego komputera. Może on zostać wywołany programem ax25d w taki sam sposób jak program 'node'. Należy dodać tego typu zapis do pliku /etc/ax25/ax25d.conf, jeśli pragniesz, aby użytkownicy mogli logować się do twojego komputera:

       default * * * * * 1 root /usr/sbin/axspawn axspawn %u
Jeśli wiersz zakończony zostanie znaczniek '+' to użytkownicy, przed zalogowaniem, będą musieli uderzyć przycisk 'Return'. Wartość domyślna ma to wyłączone. Poszczególne zapisy dla stacji, które występują pod tym wierszem spowodują uruchomienie programu 'axspawn' podczas wchodzącej łączności. Po uruchomieniu, 'axspawn' najpierw sprawdza czy na wierszu poleceń ukazał się legalny znak/edentyfikator, pozbawia go numerka SSID, a potem sprawdza plik /etc/passwd czy użytkownik posiada założone konto. Jeśli tak, i hasło jest ""(puste) lub '+', wtedy wpuszcza użytkownika. Jeśli w polu hasła jest cokolwiek innego to użytkownik jest odpytywany o swoje hasło. Przy nieistaniejących kontach w pliku /etc/passwd 'axspawn' można ustawić tak, że utworzy je sam.

15.1 Utworzenie pliku /etc/ax25/axspawn.conf.

Zachowanie programu axspawn można zmieniać plikiem /etc/ax25/axspawn.conf. Plik ten ma formę:

       # /etc/ax25/axspawn.conf
       #
       # pozwala na automatyczne zakładanie kont dla użytkowników
       create    yes
       #
       # wpuszcza użytkownika 'gość' jeśli wyżej jest 'no' lub niepowiodły sie
       # inne rzeczy. Wyłacza sie 'no'.
       guest     no
       #
       #  ID dla groupy lub nazwa konta dla samozakładania konta
       group     ax25
       #
       # first user id to use
       first_uid 2001
       #
       # maximum user id
       max_uid   3000
       #
       # gdzie umieszczać katalog domowy dla nowych użytkowników
       home      /home/ax25
       #
       # powłoka systemowa dla użytkownika
       shell     /bin/bash
       #
       # kojarzenie znaków z użytkownikami dla łączności wychodzących.
       associate yes

Powyższe osiem ustawialnych przełaczników mają takie znaczenie:

     #  wskazuje, ze to komentarz

     create
        jeśli ustawione na 'yes' to 'axspawn usiłuje sam założyć konto dla 
        użytkownika, który jeszcze nie ma wpisu w pliku  /etc/passwd.

     guest
        pole to określa nazwę login-u konta dla ludzi włączających się ale
        nie mających jeszcze konta przy 'create' ustawionym na 'no'. Zwykle
        jest to ax25 lub guest

     group
        to pole określa nazwę grupy, jaka zostanie użyta dla włączających się
        użytkowników nie mających jeszcze wpisu w pliku  /etc/passwd.

     first_uid
        jest to cyfra pierwszego userid wybieranego automatycznie dla nowych 
        użytkowników.
     
     max_uid
        jest to najwyższy numer, jaki będzie użyty dla userid nowych użytkowników

     home
        to jest katalog domowy (login) dla nowych uzytkowników

     shell 
        to określa powłokę systemową dla nowych użytkowników
     
     associate
        to oznaczenie wskazuje czy użytkownik, po zalogowaniu się, wykonujący
        łączność wychodzącą będzie miał swój własny znak, czy też znak twojej
        stacji.

16. Ustawienie PMS.

Program pms to implementacja prostego 'personal message system' napisanego początkowo przez Alan'a Cox. Dalszy rozwój podjęty został przez David'a Brown, N2RGT, dcb@vectorbd.com. Obecnie jest nadal bardzo prosty mający mozliwość wysłania e-mail'a do właściciela systemu i uzyskać ograniczone informacje maszynie lecz David pracuje nad tym, jak poszerzyć jego możliwości i uczynić go bardziej użytecznym.

Pozostało więc teraz parę prostych plików do stworzenia, które udzielą użytkownikom pewnych informacji o samym systemie, a potem dodać odpowiedni zapis do pliku ax25d.conf, aby dołączający się użytkownicy dostali się do PMS.

16.1 Utworzenie pliku /etc/ax25/pms.motd.

Plik /etc/ax25/pms.motd zawiera 'wiadomość dnia', którą użytkownicy ujrzą po ustaleniu łączności i zwykłym nagłóku BBS. Ten prosty plik jest tekstowy i wiadomość w nim zawarta będzie wysłana do użytkowników.

16.2 Utworzenie pliku /etc/ax25/pms.info.

Plik /etc/ax25/pms.info również ma zawierać tekstowe, bardziej szczegółowe informacje na tremat twojej stacji. Informacja w nim zawarta przedstawiana jest użytkownikom w odpowiedzi na ich polecenie 'Info' z zachęty PMS>.

16.3 Kojarzenie znaków AX.25 z kontami użytkowników

Gdy jakiś użytkownik wysyła pocztę do znaku AX.25 to 'pms' spodziewa się, że znak ten jest własnością prawdziwego użytkownika z kontem na twojej maszynie. Opisane jest to w osobnej sekcji.

16.4 Dodanie PMS do pliku /etc/ax25/ax25d.conf.

Dodanaie programu 'pms' do pliku /etc/ax25/ax25d.conf jest bardzo proste. Trzeba jednak pamiętać o jednej malutkiej rzeczy. Dave dodał możliwość podania argumentów dla PMS na wierszu poleceń, które kontrolują kilkanaście konwencji związanych z końcem wiersza. Konwencje AX.25 i NetRom oczekują, że 'end-of-line' to 'carriage return', 'linefeed' podczas gdy w unixach to jest poprostu 'newline'.Więc, dla przykładu, jeśli checiałbyś dodać zapis, który oznaczałby, że należy odpalić PMS dla wchodzącej łączności przez port AX.25, to dadaj taki wiersz:

       default  1  10 5 100 5   0    root  /usr/sbin/pms pms -a -o vk2ktj
To poprostu odpala program pms mówiąc mu, że jest to łączność wchodząca drogą AX.25 i że właścicielem PMS'a jest vk2ktj. Popatrz na podręcznik systemowy 'man' w sprawie innych argumentów dla innych metod dostępu.

16.5 Sprawdzenie PMS'a

Aby sprawdzić czy PMS działa sprubuj taką komendę z wiersza poleceń:

  # /usr/sbin/pms -u vk2ktj -o vk2ktj
Podstaw swój własny znak w miejsce mojego. Polecenie to odpali PMS mówiąc mu, że ma używać uniksowych konwencji end-of-line, i że użytkownikiem logującym się jest vk2ktj. Możesz zrobić teraz wszystko to, co użytkownicy łączący się z zewnątrz.

Dodatkowo mógłbyś poprosić jakąś inną stację, aby się do ciebie dołączyła, aby potwierdzić, że ustawienie pliku ax25d.conf działa poprawnie.

17. Ustawienie programów user_call.

Programy 'user_call' to w rzeczywistości są 'ax25_call' i 'netrom_call'. Pomuślane są one tak, że mogą być wezwane z 'ax25d', w celu zautomatyzowania łączności z odległymi komputerami. Naturalnie można je wywołać z wielu innych miejsc, np. z powłoki systemowej, lub innych demonów, jak np. programu 'node'.

Przupominają w swej prostocie program 'call'. Nie zajmują się obróbką żadnych danych, zatem sam musisz zadbać o to jak traktowane będzie end-of-line.

Rozpocznijmy od tego jak można ich używać. Wyobraź sobie, że posiadasz małą sieć w domu i że jednym komputerem jest Linux spelniający rolę bramki radiowej, oraz drugi komputer, który jest węzłem BPQ. Komputery złączone są razem ethernetem.

Noramlnie, użytkownicy radiowi, aby móc łączyć się z węzłem BPQ musieliby robić to przez digipeating poprzez twojego linuxa, lub połączyć się wpierw z programem 'node' na twoim linuxie, a stamtąd wykonać następne połączenie do węzła BPQ.

Wyobraź sobie, że węzeł BPQ ma znak VK2KTJ-9 a linux ma port o nazwie 'bpq' obsługujący AX.25/ethernet. Również dodajmy, że bramka radiowa Linux posiada port radiowy 'radio'.

Zapis do pliku /etc/ax25/ax25d.conf wyglądałby w ten deseń:

       [VK2KTJ-1 via radio]
       default    * * * *   *   *  *
                       root /usr/sbin/ax25_call ax25_call bpq %u vk2ktj-9
i umożliwiłby użytkownikom połączenie wprost do `VK2KTJ-1' co w gruncie rzeczy jest demonem ax25d pod Linuxem a następnie przełoczyłoby ich na łączność AX.25 do `VK2KTJ-9' przez interfejs 'bpq'.

Jest cały asortyment innych możliwych kombinacji, które są do wypróbowania. Programy 'netrom_call' oraz 'rose_call' pracują w podobny sposób. Jeden z radioamatorów wykorzystał tę funkcję, aby ułatwić łączność do odległego BBS-u. Noramalnie użytkownik musiałby wprowadzić dlugą strunę poleceń, aby wykonać tę łączność więc on dokonał wpisu, który sprawiał, że wspomniany BBS wyglądał tak, jakby dostępny on był na sieci lokalnej; demon ax25d pośredniczył w łączności do odległego BBS-u.

18. Kojarzenie znaków AX.25 z kontami użytkowników Linuxa.

Istnieje wiele sutuacji, w których pożądane jest, aby powiązać znak z kontem użytkownika Linuxa. Jedną z takich sutuacji byłaby, gdy wielu radioamatorów dzielą ze sobą tę samą maszynę a chcą używać swoich znaków dla wychodzących łączności. Innym przykładem jest PMS, którego użytkownicy chcieliby rozmawiać z jakimś użytkownikiem na twoim komputerze.

Oprogramowanie AX.25 dostarcza sposobu pozwalającego na skojarzenie znaku z kontem użytkownika. Wspominaliśmy to już wcześniej w sekcji o PMS, ale podkreślam to raz jeszcze, żeby nie umknęło to twej uwadze.

Kojarzenia dokonujemy poleceniem 'axparms'. Ota jak wygląda przykład:

       # axparms -assoc vk2ktj terry
Polecenie to kojarzy powyższy znak AX.25 vk2ktj z kontem 'terry' na tym komputerze. Więc przykładowo, każda poczta dla vk2ktj z pms-u będzie dostarczona do konta 'terry' pod Linuxem.

Zapamiętaj, aby wpisać te kojarzenia do plików rc, aby dostępne były za każdym razem, gdy odpalasz komputer.

Zauważ, że nigdy nie powinieneś kojarzyć znaku z kontem 'root' ponieważ spowoduje to dużo problemów konfiguracyjnych w innych programach.

19. Jak połączyć sieciowe oprogramowanie NOS z jądrem linuxa?

Wielu ludzi preferuje którąś z wersji NOS uruchamianą w Linuxie ponieważ oferują one wiele cech funkcji, do któtych przywykli. Większość tych ludzi chciałoby również mieć taką mozliwość, aby NOS mógł mówić do jądra Linuxa po to, by móc zaoferować jego niektóre usługi dla użytkowników radiowych.

19.1 Łączenie NOS-a i Linuxa za pomocą 'fajki'.

Następująca informacja jest wkładem Brandon'a S. Albery, KF8NH, który wytłumaczył jak wzajemnie połączyć NOS'a uruchomionego pod Linuxem z samym jądrem Linuxa przy użyciu urządzenia 'fajka'.

Ponieważ zarówno Linux jak NOS obsługują protokół 'slip' możliwe jest połączenie nich obu ustawiając łącze slip. Kosztownym sposobem możnaby to zrobić za pomocą pętli kablowej i dwóch portów seryjnych; byłoby to powolne łącze. Linux dostarcza funkcji, która dostępna jest na wielu innych Unixo-podobnych systemach operacyjnych, zwanej 'fajką'. Są to specjalne pseudo interfejsy, które przedstawiają się dla oprogramowania jako standardowe urządzenia tty, lecz faktycznie są tylko pętlami do następnej 'fajki'. Urządzenia te mogą być używane jeśli program pierwszy otworzy je ze strony 'master', a następnie program drugi ze strony 'slave'. Gdy oba końce zostaną otworzone, wówczas programy mogą się komunikować ze sobą pisząc poprostu literki przez 'fajkę' jakby to było normalne urządzenie terminalowe.

Zanim połączysz jakąś wersję NOS-a lub innego programu z jadrem Linuxa, wpierw musisz wybrać jakąś 'fajkę'. Znajdziesz ją szukając w katalogu '/dev'. Końcówki 'master' nazywają się ptyp[1-f] a końcówki 'slave' znane są jako: ttyp[1-f]. Pamiętaj, że występują parami. Jeśli weźmiesz 'fajkę' /dev/ptypf jako końcówkę 'master' to musisz dobrać 'fajkę' /dev/ttypf jako 'slave'.

Po wybraniu pary urządzeń 'fajka', należy przypisać końcówkę 'master' dla jądra a końcówkę 'slave' dla programu NOS ponieważ jądro Linuxa rozpoczyna jako pierwsze, a 'master' musi być otworzone na początku. Linux, warto wiedzieć, powinien mieć odmienny IP adres od adresu NOS-a, zatem musisz mu przypisać unikalny adres, jeśli jeszcze tego nie uczyniłeś.

'Fajkę' ustawiamy tak samo jak urządzenie seryjne, więc aby utworzyć łącze slip na jądrze Linuxa mógłbyś użyć coś takiego:

       # /sbin/slattach -s 38400 -p slip /dev/ptypf &
       # /sbin/ifconfig sl0 broadcast 44.255.255.255 pointopoint 44.70.248.67 /
               mtu 1536 44.70.4.88
       # /sbin/route add 44.70.248.67 sl0
       # /sbin/route add -net 44.0.0.0 netmask 255.0.0.0 gw 44.70.248.67
W tym przykładzie jądro linuxa otrzynało adres IP 44.70.4.88 a program NOS adres IP 44.70.248.67. Polecenie 'route' w ostatnim wierszu instruuje jądro linuxa, że wszelkie datagramy z przeznaczeniem dla amprnet-u mają iść poprzez łącze slip utworzone poleceniem slattach. Zwykle polecenia powyższe umieścić należałoby w w plikach /etc/rc.d/rc.inet2 po tym jak wszystkie inne ustawienia siciowe zostaną wykonane, po to, aby łącze slip było dostępne po przeładowaniu komputera. Uwaga: nie ma powodów, aby używać cslip zamiast slip gdyż to właściwe redukuje osiągi ponieważ łącze to jest virtualne i zachodzi wystarczająco szybko, a uprzenia kompresja nagłówków zabiera więcej czasu aniżeli przesył nieskompresowanych datagramów.

Ustawienie łącza po stronie NOS-a można pokusić się i zrobić tak:

       # interfejs można nazwać jak ci się podoba. ja nazwałem go dla wygody
       # 'linux'
       #
       attach asy ttypf - slip linux 1024 1024 38400
       route addprivate 44.70.4.88 linux
Polecenia te utworzą port slip zwany 'linux' na 'fajce' z końcówką 'slave' i dołączą go do jadra linuxa, dodadzą 'ścieżkę', aby łącze pracowało. Po wystartowaniu NOS-a pod Linuxem powinieneś móc 'zapingować' Linuxa i odwrotnie. Jeśli nie, posprawdzaj, że nie popełniłeś żadnych błędów, szczególnie przy adresach i na końcówkach 'fajek'.

20. Zapisy w pliku /proc.

System plików /proc zawiera pewną liczbę plików związanych bezpośrednio z oprogramowaniem jądra dla AX.25 i NetRom. Używane są one głownie przez programy z pakietu ax25-utils ale mają taki format,że być może chciałbyś je przeczytać. Foramt jest naprawdę łatwy i nie sądzę, że trzeba wiele tłumaczyć.

     /proc/net/arp
         zawiera mapę dla protokołu Address Resolution pomiędzy adresami IP
         a adresami protokołu warstwy MAC. Te obejmują AX.25, ethernet i niektóre
         protokoły wartstwy MAC
  
     /proc/net/ax25
         zawiera listę otwartych gniazd AX.25. Mogą one albo sluchać na
         nadchodzące łączności lub są aktywne.

     /proc/net/ax25_bpqether
         zawiera mapę dla AX.25 a BPQ o znakach

     /proc/net/ax25_calls
         zawiera mapę o userid i znakach ustawioną przez polecenie
         axparms -assoc command.

     /proc/net/ax25_route
         zawiera informację na temat ścieżki digipeaterów

     /proc/net/nr
         zawiera listę gniazd NetRom, które są otwarte na skutek tego, że 
         sluchają lub, że są aktywne.

     /proc/net/nr_neigh
         zawiera informacje o sąsiadach, o których NetRom jest świadome.

     /proc/net/nt_nodes
         zawiera informacje o węzłach znanych dla oprogramowania NetRom

     /proc/net/rose
         zawiera listę otwartych gniazd Rose na skutek tego, że albo słuchają
         albo są aktywne
      
     /proc/net/Rose_nodes
         zawiera mapę o docelowych stacjach Rose przez sąsiadów Rose

     /proc/net/rose_neigh
         zawiera listę węzłów, które Rose zna

     /proc/net/rose_routes
         zawiera listę wszystkich aktywnych łączy Rose

21. Przykładowe konfiguracje.

Podane są poniżej przykłady niektórych typowych konfiguracji. Są to tylko rady ponieważ jest tyle sposobów ustawienia swojej sieci ile istnieje sieci do skonfigurawania, ale te mogą przydać ci się na początek.

21.1 Mała sieć z linuxem jako routerem dla lokalnej sieci radiowej

Wielu z was posiada małe, lokalne sieci w domu i chcecie podłaczyć te komputery do swojej lokalnej sieci radiowej. Właśnie takiego układu używam sam w domu. Zadbałem o to, aby dostać odpowiednią liczbę właściwych adresów, tak, aby można było je uchwycić jednym routingiem dla wygody i używam ich na swojej lokalnej sieci ethernet. Wasz koordynator adresów IP pomoże wam w tym również jeśli chcecie tego sprobować. Adresy mojej lokalne sieci Ethernet tworzą podsekcję adresów sieci radiowej. Następujące ustawienie jest rzeczywistę dla linuxa jako routera na mojej sieci w domu:

         ---                                .
          | Network       /---------\     .    Network
          | 44.136.8.96/29|         |    .     44.136.8/24        \ | /
          |               | Linux   |   .                          \|/
          |               |         |  .                            |
          |          eth0 | Router  |  .  /-----\    /----------\   |
          |---------------|         |-----| TNC |----| Radio    |---/
          |   44.136.8.97 |  and    |  .  \-----/    \----------/
          |               |         | sl0
          |               | Server  | 44.136.8.5
          |               |         |    .
          |               |         |     .
          |               \_________/       .
         ---                                     .      .   .    .    . .
  #!/bin/sh
  # /etc/rc.net
  # To ustawienie dostarcza jednego portu AX.25 w KISS i jednego interfejsu
  # Ethernet.

  echo "/etc/rc.net"
  echo "  Configuring:"

  echo -n "    loopback:"
  /sbin/ifconfig lo 127.0.0.1
  /sbin/route add 127.0.0.1
  echo " done."

  echo -n "    ethernet:"
  /sbin/ifconfig eth0 44.136.8.97 netmask 255.255.255.248 \
                  broadcast 44.136.8.103 up
  /sbin/route add 44.136.8.97 eth0
  /sbin/route add -net 44.136.8.96 netmask 255.255.255.248 eth0
  echo " done."

  echo -n "    AX.25: "
  kissattach -i 44.136.8.5 -m 512 /dev/ttyS1 4800
  ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.8.255
  route add -host 44.136.8.5 sl0
  route add -net 44.136.8.0 window 1024 sl0

  echo -n "    Netrom: "
  nrattach -i 44.136.8.5 netrom

  echo "  Routing:"
  /sbin/route add default gw 44.136.8.68 window 1024 sl0
  echo "    default route."
  echo done.

  # end

  /etc/ax25/axports

       # name  callsign        speed   paclen  window  description
       4800    VK2KTJ-0        4800    256     2       144.800 MHz

  /etc/ax25/nrports

       # name  callsign        alias   paclen  description
       netrom  VK2KTJ-9        LINUX   235     Linux Switch Port

  /etc/ax25/nrbroadcast

       # ax25_name     min_obs def_qual        worst_qual      verbose
       4800            1       120             10              1
W jądrze trzeba uaktywnić IP_FARWARDING.

Pliki konfiguracyjne AX.25 są mniej więcej takie same ja przykłady we wcześniejszych sekcjach, więc zajrzyj do nich gdy trzeba.

Zdecydowałem się przypisać adres IP dla portu radiowego, który nie nałeży do bloku mojej domowej sieci. Nie musiałem tak robić, można było śmiało użyć 44.136.8.97 na tym porcie.

44.136.8.68 to moja lokalna bramka do enkapsulacji IPIP, zatem tutaj kieruję ścieżkę domyślną.

Każdy komputer na sieci Ethernet ma ścieżkę:

       route add -net 44.0.0.0 netmask 255.0.0.0 \
               gw 44.136.8.97 window 512 mss 512 eth0
Stosowanie parametrów mss i window oznacza, że uzyskuję maksymalne osiągi zarówno na płączeniach Ethernet jak i radiowych.

 - na routerze mam odpalone rzownież ftp, http, smail i inne demony więc jest on
   jedynym komputerem, który innym serwuje usługi

 - mój router to pokorne 386DX20 z 20 Mb twardego dysku i bardzo minimalną wersją
   linuxa.

21.2 Konfiguracja przykładowa dla bramki z enkapsulacją IPIP.

Linux jest obecnie pospolicie używany jako bramka dla enkapsulacji TCP/IP po całym świecie. Nowy sterownik 'tunnel' obsługuje wielokrotne ścieżki enkapsulacji i sprawia, że demon ipip jest przestarzały.

Typowa konfiguracja wygłądałaby w takowy sposób:

         ---                                .
          | Network       /---------\     .    Network
          | 154.27.3/24   |         |    .     44.136.16/24       \ | /
          |               | Linux   |   .                          \|/
          |               |         |  .                            |
          |          eth0 | IPIP    |  .  /-----\    /----------\   |
       ---|---------------|         |-----| TNC |----| Radio    |---/
          |   154.27.3.20 | Gateway |  .  \-----/    \----------/
          |               |         | sl0
          |               |         | 44.136.16.1
          |               |         |    .
          |               |         |     .
          |               \_________/       .
         ---                                     .      .   .    .    . .

 Pliki którymi trzeba się zająć to:

  # /etc/rc.net
  # ustawiamy tutaj jeden port radiowy AX.25 w trybie KISS, jeden Ethernet,
  # używamy sterownika 'tunnel' do IPIP encap/decapsulation
  # 
  #
  echo "/etc/rc.net"
  echo "  Configuring:"
  #
  echo -n "    loopback:"
  /sbin/ifconfig lo 127.0.0.1
  /sbin/route add 127.0.0.1
  echo " done."
  #
  echo -n "    ethernet:"
  /sbin/ifconfig eth0 154.27.3.20 netmask 255.255.255.0 \
                  broadcast 154.27.3.255 up
  /sbin/route add 154.27.3.20 eth0
  /sbin/route add -net 154.27.3.0 netmask 255.255.255.0 eth0
  echo " done."
  #
  echo -n "    AX.25: "
  kissattach -i 44.136.16.1 -m 512 /dev/ttyS1 4800
  /sbin/ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.16.255
  /sbin/route add -host 44.136.16.1 sl0
  /sbin/route add -net 44.136.16.0 netmask 255.255.255.0 window 1024 sl0
  #
  echo -n "    tunnel:"
  /sbin/ifconfig tunl0 44.136.16.1 mtu 512 up
  #
  echo done.
  #
  echo -n "Routing ... "
  source /etc/ipip.routes
  echo done.
  #
  # end.

  and:

       # /etc/ipip.routes
       # This file is generated using the munge script
       #
       /sbin/route add -net 44.134.8.0 netmask 255.255.255.0 tunl0 gw 134.43.26.1
       /sbin/route add -net 44.34.9.0 netmask 255.255.255.0 tunl0 gw 174.84.6.17
       /sbin/route add -net 44.13.28.0 netmask 255.255.255.0 tunl0 gw 212.37.126.3
          ...
          ...
          ...

  /etc/ax25/axports

       # name  callsign        speed   paclen  window  description
       4800    VK2KTJ-0        4800    256     2       144.800 MHz

Niektóre uwagi do zanotowania:

 - Nowy sterownik 'tunnel' używa pola gw w tablicach routingowych w miejsce
   parametru 'pointopoint' do określenia adresu odległej bramki IPIP. Oto 
   dlaczego obecnie obsługuje wielokrotne ścieżki na każdym interfejsie.

 - Można ustawić dwa interfejsy sieciowe z tym samym adresem. W tym przykładzie 
   zarówno interfejs sl0 jak i tunl0 przyjęły adres IP portu radiowego. Czyni 
   się tak w tym celu, aby odległa bramka widziała poprawne adresy na enkapsulo-
   wanych datagramach wysyłanych do niej z twojej bramki.

 - polecenia 'route' do określania enkapsulowanych ścieżek można wygenerować
   używając modyfikowanej wersji "skryptu munge". Podane jest to niżej. Polecenia
   route wpisane byłyby potem do osobnego pliku i czytane przez bash
   z /etc/ipip.routes (założywszy, że nazwałeś plik z poleceniami routingu nazwą
   /etc/ipip.routes) tak jak na ilustracji. Plik źródłowy musi mieć format 
   w stylu poleceń 'route' pod NOS-em. 

 - Zauważ stosowanie argumentu 'window' dla polecenia 'route'. Ustawienie tego
   parametru na właściwą wartość polepsza osiągi na łączu radiowym

Oto nowy skrypt 'tunnel-munge':

  #!/bin/sh
  #
  # From: Ron Atkinson <n8fow@hamgate.cc.wayne.edu>
  #
  #  This script is basically the 'munge' script written by Bdale N3EUA
  #  for the IPIP daemon and is modified by Ron Atkinson N8FOW. It's
  #  purpose is to convert a KA9Q NOS format gateways route file
  #  (usually called 'encap.txt') into a Linux routing table format
  #  for the IP tunnel driver.
  #
  #        Usage: Gateway file on stdin, Linux route format file on stdout.
  #               eg.  tunnel-munge < encap.txt > ampr-routes
  #
  # NOTE: Before you use this script be sure to check or change the
  #       following items:
  #
  #     1) Change the 'Local routes' and 'Misc user routes' sections
  #        to routes that apply to your own area (remove mine please!)
  #     2) On the fgrep line be sure to change the IP address to YOUR
  #        gateway Internet address. Failure to do so will cause serious
  #        routing loops.
  #     3) The default interface name is 'tunl0'. Make sure this is
  #        correct for your system.

  echo "#"
  echo "# IP tunnel route table built by $LOGNAME on `date`"
  echo "# by tunnel-munge script v960307."
  echo "#"
  echo "# Local routes"
  echo "route add -net 44.xxx.xxx.xxx netmask 255.mmm.mmm.mmm dev sl0"
  echo "#"
  echo "# Misc user routes"
  echo "#"
  echo "# remote routes"

  fgrep encap | grep "^route" | grep -v " XXX.XXX.XXX.XXX" | \
  awk '{
          split($3, s, "/")
          split(s[1], n,".")
          if      (n[1] == "")    n[1]="0"
          if      (n[2] == "")    n[2]="0"
          if      (n[3] == "")    n[3]="0"
          if      (n[4] == "")    n[4]="0"
          if      (s[2] == "1")   mask="128.0.0.0"
          else if (s[2] == "2")   mask="192.0.0.0"
          else if (s[2] == "3")   mask="224.0.0.0"
          else if (s[2] == "4")   mask="240.0.0.0"
          else if (s[2] == "5")   mask="248.0.0.0"
          else if (s[2] == "6")   mask="252.0.0.0"
          else if (s[2] == "7")   mask="254.0.0.0"
          else if (s[2] == "8")   mask="255.0.0.0"
          else if (s[2] == "9")   mask="255.128.0.0"
          else if (s[2] == "10")  mask="255.192.0.0"
          else if (s[2] == "11")  mask="255.224.0.0"
          else if (s[2] == "12")  mask="255.240.0.0"
          else if (s[2] == "13")  mask="255.248.0.0"
          else if (s[2] == "14")  mask="255.252.0.0"
          else if (s[2] == "15")  mask="255.254.0.0"
          else if (s[2] == "16")  mask="255.255.0.0"
          else if (s[2] == "17")  mask="255.255.128.0"
          else if (s[2] == "18")  mask="255.255.192.0"
          else if (s[2] == "19")  mask="255.255.224.0"
          else if (s[2] == "20")  mask="255.255.240.0"
          else if (s[2] == "21")  mask="255.255.248.0"
          else if (s[2] == "22")  mask="255.255.252.0"
          else if (s[2] == "23")  mask="255.255.254.0"
          else if (s[2] == "24")  mask="255.255.255.0"
          else if (s[2] == "25")  mask="255.255.255.128"
          else if (s[2] == "26")  mask="255.255.255.192"
          else if (s[2] == "27")  mask="255.255.255.224"
          else if (s[2] == "28")  mask="255.255.255.240"
          else if (s[2] == "29")  mask="255.255.255.248"
          else if (s[2] == "30")  mask="255.255.255.252"
          else if (s[2] == "31")  mask="255.255.255.254"
          else                    mask="255.255.255.255"

  if (mask == "255.255.255.255")
          printf "route add -host %s.%s.%s.%s gw %s dev tunl0\n"\
                  ,n[1],n[2],n[3],n[4],$5
  else
          printf "route add -net %s.%s.%s.%s gw %s netmask %s dev tunl0\n"\
                  ,n[1],n[2],n[3],n[4],$5,mask
   }'

  echo "#"
  echo "# default the rest of amprnet via mirrorshades.ucsd.edu"
  echo "route add -net 44.0.0.0 gw 128.54.16.18 netmask 255.0.0.0 dev tunl0"
  echo "#"
  echo "# the end"

22. Programowanie warstwy sieciowej AX.25, NetRom i Rose.

Największą bodajże zaletą stosowania protokołów radioamatorskiego radia packet opartego o jądro linuxa jest łatwość, z jaką możesz pisać aplikacje i programy i je na nim używać.

Choć temat Programowania Sieci pod Unixem przekracza ramy tegoż dokumentu, to jednak opiszę tutaj elementarne szczegóły dotyczące jak wykorzystać protokoły AX.25, NetRom i Rose wewnątrz swojego oprogramowania.

22.1 Rodziny adresów.

Programowanie sieciowe pod Linuxem dla AX.25, NetRom i Rose przypomina programowanie dla TCP/IP. Najwięszą różnicą jest stosowana rodzina adresu i jego struktura, którą należy poprzekręcać w odpowiednie miejsce.

Nazwy rodziny adresów dla AX.25, NetRom i Rose to kolejno AF_AX25, AF_NETROM oraz AF_ROSE.

23. Pliki nagłówkowe.

Zawsze należy dołączyć plik 'ax25.h', 'netrom.h' i rose.h' jeśli masz do czynienia z tymi protokołami. Prosty szkielet górnej części wyglądałby tak:

Dla AX.25:

       #include <ax25.h>
       int s, addrlen = sizeof(struct full_sockaddr_ax25);
       struct full_sockaddr_ax25 sockaddr;
       sockaddr.fsa_ax25.sax25_family = AF_AX25
Dla NetRom:

       #include <ax25.h>
       #include <netrom.h>
       int s, addrlen = sizeof(struct full_sockaddr_ax25);
       struct full_sockaddr_ax25 sockaddr;
       sockaddr.fsa_ax25.sax25_family = AF_NETROM;
Dla Rose:
       #include <ax25.h>
       #include <rose.h>
       int s, addrlen = sizeof(struct sockaddr_rose);
       struct sockaddr_rose sockaddr;
       sockaddr.srose_family = AF_ROSE;

23.1 Kwestia znaków i przykłady.

W bibliotekach /lib/ax25.a zawartych w pakiecie progamów narzędziowych ax25-utils znajdują się wbudowane rutyny konwerujące znaki wywoławcze. Jeśli chcesz możesz napisać swoje własne.

Program narzędziowy user_call jest wyśmienitym przykładem na początek. Źródła dla tych rutyn zawarte są w pakiecie programów narzędziowych AX.25-utils. Po spędzeniu paru chwil pracując nad nimi zauważysz, że 90 procent roboty to przygotowanie otworzenia 'socket-u'. Wykonanie łączności jest łatwe podczas gdy przygotowanie zajmuje trochę czasu.

Przykłady są na tyle proste, że nie wprowadzają zamieszania. Jeśli masz jakieś pytanie to kieruj je na listę linux-hams, gdzie znajdą się ludzie gotowi udzielć ci odpowiedzi.

24. Dyskusja związana z Radiem Amatorskim i Linuxem.

Jest wiele miejsc, gdzie dyskutuje się na temat Radio Amatorskiego i Linuxa, na przykład na comp.os.linux.* lub na liście pocztowej vger.rutgers.edu. Inne miejsca, gdzie się to czyni, to listy pocztowe tcp-group na ucsd.edu (ojczyzna dyskusji na temat TCP/IP i radia amatorskiego), jak również kanał #linpeople w sieci linuxnet na IRC.

Aby zapisać się na listę dyskusyjną linux-hams, wyślij pocztę do:

       Majordomo@vger.rutgers.edu
z tekstem:
subscribe linux-hams
w częsci listu. Wiersz 'subject:' jest pomijany.

Archiwum listy linux-hams znajduje się na: http://zone.pspt.fi/archive/linux-hams/ oraz na http://zone.oh7rba.ampr.org/archive/linux-hams/. Staraj się zajrzeć tam zanim rozpoczniesz dyskusję ponieważ odpowiedziano tam na wiele powszechnych pytań.

Aby zapisać się na listę tcp-group, wyślij list do:

       listserver@ucsd.edu
z tekstem:
       subscribe tcp-group
w częsci listu.

Zauważ, że lista tcp-group jest przeznaczona głównie do dyskusji o zaawansowanych protokołach, których TCP/IP jest przykładem, w Radiu Amatorskim. Nie zadaje się tam pytań dotyczących Linuxa.

25. Podziękowania.

Następujące osoby przyczyniły się do stworzenia tego dokumentu na przeróżne sposoby, w sposób świadomy lub nieświadomy. Podaję ich bez szczególnego uszeregowania (tak jak pamiętam): Jonathon Naylor, Thomas Sailer, Joerg Reuter, Rot Atkinson, Alan Cox, Craig Small, John Tanner, Brandon Allbery.

26. Prawa autorskie.

AX25-HOWTO, informacja na temat jak zainstalować i ustawić niektóre z ważniejszych pakietów obsługujących AX.25 pod Linuxem.
Copyright © 1996 Terry Dawson.
Jest to oproramowanie darmowe; może być modyfikowane i rozprowadzane na warunkach Ogólnej Licencji Publicznej GNU opublikowanej przez Free Software Foundation; licencja o wersji numer 2, lub dowolnie, jakakolwiek późniejsza.

Program ten rozprowadzany jest z nadzieją, że będzie użyteczny, lecz BEZ JAKIEJKOLWIEK GWARANCJI; nawet bez gwarancji, że moze być SPRZEDAWANY lub UŻYTECZNY DLA JAKIEGOKOLWIEK CELU. Więcej szczegółów znajdzesz w Ogólnej Licencji Publicznej GNU.

Powinieneś był otrzymać egzemplarz Ogólnej Licencji Publicznej z tym programem; jeśli nie to napisz do:

Free Software Foundation, Inc., 657 Mass Ave, Cambridge, MA 02139, USA.

27. Od tłumacza.

AX25-HOWTO - tłumaczenie na język polski. Informacja jak zainstalować i ustawić niektóre z najważniejszym pakietów do obsługi protokołu AX.25 pod Linuxem.
Copyright © 1997 Benedict P. Barszcz.

Wiele terminów, które w tym dokumencie zastosowałem może brzmieć dziwnie w uszach polskiego czytelnika. Przepraszam, wynika to z tego, że polska terminologia radia packet jest mi zupełnie nie znana. Radioamatorem zostałem tutaj w USA i polskie nazewnictwo nie było wymogiem do egzaminu. To jest błąd.

Niektórych zwrotów nie tłumaczyłem ze wzgłędow na ich ewidentność, ale na pewno w tym miejscu się grubo mylę. Inne zwroty są niezgrabne i w tym miejscu masz szerokie pole do popisu, czytelniku. Ślij poprawki do poseidon@ziplink.net. Zwroty idiomatyczne starałem się zastępować naszymi, polskimi odpowiednikami. Czasem przesadziłem, albo zupełnie minąłem się z celem:-)

Mam wrażenie, że popełniłem też błędy merytoryczne. Nie poprawiłem ich bo nie wiem gdzie:-).

Są też neologizmy, które nie zostały konsekwentnie używane w dokumencie, np. DźwiękoModem.

Fragmenty w skrypcie 'munge' nie są tlumaczone ponieważ należą do pliku i są komentarzem autora pliku.

Zmiany w stosunku do oryginału:

port 4000.

Port 4000 i port 3694/tcp dla node przez inetd; autor nie był konsekwentny. Wybrałem port 4000.

odwołania.

Odwałanie do Net-2-HOWTO zamieniłem na NET-3-HOWTO wskazując jednocześnie na jego polskie tłumaczenie. Zdaje się, że Net-2-howto już nie istnieje.

nazwisko Pana Reuger.

W jednym z odwołań, Terry podał tylko imię, a na innym miejscu również nawisko. Dla czytelności w pierwszym wypadku podałem zarówno imię jak i nazwisko.

budowa jądra.

kolejność komend budowy jądra poprawiona, aby faktycznie działalo tak, jak autor zamierzył. cd /usr/src postawione przed mv linux linux.old. Odciąłem też ścieżkę od nazwy pliku ax25-utils-12.tar.gz tak, aby zadziałało zgodnie z zamierzeniem autora.

27.1 Podziękowania.

Bardzo serdecznie chciałbym podziękować Terry'emu Dawson, że napisał ten dokument. Dopiero przy tłumaczeniu go, zrozumiałem jaki kawał roboty odwalił!

Chciałbym podziękować Bartkowi Maruszewskiemu, Piotrowi Tęczyńskiemu oraz Piotrowi Pogorzelskiemu za (świadomą i nie świadomą) pomoc i natchnienie, aby ten dokument powstał.

Jednocześnie chciałbym przypomnieć Waldkowi Ogonowskiemu, SP2ONG, że to on jest wszystkiemu winiem - zaraził mnie Linuxem i nie wskazał kliniki, gdzie sie to paskuctwo leczy:-).

Oraz dziękuje wszystkim, którzy nadeślą poprawki, które na pewno udoskonalą to tłumaczenie.

doc-linux-pl-2002.06.14.orig/html/Alpha-HOWTO.pl.html0100664000175000017500000006111506770264140020572 0ustar covencoven Alpha HOWTO

Alpha HOWTO

Autor: Neal Crook neal.crook@reo.mts.digital.com, Digital Equipment
(edycja: David Mosberger davidm@azstarnet.com)
v0.11, 6 Czerwca 1997
Wersja polska: Leszek Urbański tygrys@fidonet.org.pl
v0.1, 22 Lipca 1998


Ten dokument jest ogólnym przedstawieniem istniejących procesorów Alpha, chipsetów do nich, oraz systemów opartych na tych procesorach. Opisuję sprzęt, a nie oprogramowanie, ukazując mój obszar doświadczenia. Chociaż jestem pracownikiem Digital Equipment Corporation, nie jest to oficjalna wypowiedź Digitala, a wszystkie opinie tu wyrażone są moimi opiniami, nie zaś Digitala. Dokument został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://www.azstarnet.com/~axplinux/.

1. Co to jest Alpha

Alpha jest 64-bitową architekturą RISC Digitala. Projekt Alpha został rozpoczęty w połowie 1989 roku, jego celem było stworzenie wysokowydajnej alternatywy dla użytkowników VAX'a. Nie była to pierwsza architektura RISC zaprojektowana przez Digitala, ale jako pierwsza osiągnęła sukces rynkowy. Kiedy Digital ogłosił wyprodukowanie Alphy w marcu 1992, zdecydował się wejść na rynek półprzewodników, sprzedając mikroprocesory Alpha.

Alpha jest czasami nazywana Alphą AXP, z tajemniczych powodów, które nie są warte wyjaśniania. Wystarczy powiedzieć, że jest to jedno i to samo.

2. Czym jest Digital Semiconductor

Digital Semiconductor (DS) jest oddziałem firmy Digital Equipment Corporation (Digital - nie lubimy nazwy DEC), który sprzedaje półprzewodniki. Do produktów Digitala zaliczają się procesory (CPU), chipsety, mostki PCI-PCI i układy peryferyjne PCI dla telekomunikacji i multimediów.

3. Procesory Alpha

Obecnie istnieją dwie generacje rdzenia CPU (core), które są implementacją architektury Alpha:

Są różne opinie na temat znaczenia ,,EV'' (uwaga D.M.: prawdziwa odpowiedź to oczywiście ,,Electro Vlassic" [1]), numer odpowiada generacji technologii CMOS Digitala, w której został wykonany rdzeń. A więc EV4 był pierwotnie zaimplementowany w CMOS4. Z biegiem czasu, procesor zwiększa swoją wydajność, poprzez optyczne pomniejszenie do następnej generacji procesu CMOS. EV45 jest więc rdzeniem EV4 zaimplementowanym w technologii CMOS5. Istnieje duża różnica pomiędzy dostosowywaniem projektu do danej technologii, a implementowaniem go od podstaw w tej technologii (nie będę się jednak teraz w to wgłębiał). Jest też parę innych symboli: CMOS4S (pomniejszenie CMOS4) i CMOS5L.

Prawdziwi technofile będą chcieli wiedzieć, że CMOS4 jest technologią 0.75 mikronową, CMOS5 jest technologią 0.5 mikronową, a CMOS6 0.35 mikronową.

A oto konkretne procesory z różnymi rdzeniami:

21064-150,166

EV4 (pierwotnie), EV4S (obecnie)

21064-200

EV4S

21064A-233,275,300

EV45

21066

LCA4S (rdzeń EV4, z jednostką zmiennoprzecinkową EV4)

21066A-233

LCA45 (rdzeń EV4, ale z jednostką zmiennoprzecinkową EV45)

21164-233,300,333

EV5

21164A-417

EV56

21264

EV6

Rdzeń EV4 jest dwuinstrukcyjny (dual-issue), znaczy to, że może wykonać dwie instrukcje na jednostkę zegara, posiada superpotokowy rdzeń z jednostką liczb całkowitych (superpipelined core with integer unit), jednostkę zmiennoprzecinkową i przewidywanie instrukcji (branch prediction). Jest w pełni krosowalny (bypassed), korzysta z technologii 64-bitowej i ośmiokilobajtowych pamięci cache, po jednej dla Instrukcji i Danych. Jednostki cache obsługują technologię ,,write-through'' - nigdy nie zostają ,,zanieczyszczone''.

Rdzeń EV45 ma parę usprawnień w stosunku do EV4 - usprawniono trochę jednostkę zmiennoprzecinkową i dodano 16KB cache (po jednym dla Instrukcji i Danych, obsługuje parzystość). (uwaga D.M.: w wiadomości email Neil Crook zauważył, że zmiany w jednostce FPU (jednostka zmiennoprzecinkowa, ang. floating point unit) poprawiają wydajność podzielnika. Podzielnikowi FPU EV4 dzielenie o pojedyńczej precyzji zabiera 34 cykle zegara, a dzielenie o podwójnej precyzji 63 cykle (niezależnie od danych). Dla porównania FPU EV45 zabiera to zwykle 19 cykli (do 34) i 29 cykli (do 63) (zależnie od danych).)

Rdzeń EV5 jest czteroinstrukcyjny, superpotokowany, w pełni krosowalny itp. Posiada 8 kilobajtowe pamięci cache, po jednej dla I i D. Cache te obsługują metodę ,,write-through''. Ma też 96 kilobajtowy trójdrożny cache drugiego poziomu Scache (w procesorze), używający metody ,,write-back'' (może zostać zanieczyszczony). Całkowity wzrost wydajności EV4->EV5 jest większy niż wzrost spowodowany samym zwiększeniem szybkości zegara. Została też ulepszona mikroarchitektura, dla zmniejszenia opóźnień producenta/klienta na niektórych trasach danych.

EV56 posiada mikroarchitekturę podobną do EV5, jednakże dodaje nowe instrukcje dla 8 i 16-bitowych obciążeń (zobacz sekcję ,, O bajtach''. Instrukcje te znajdują zastosowanie głównie w sterownikach urządzeń. Rdzeń EV56 jest zaimplementowany w CMOS6, który jest technologią 2.0V.

21064 został ukończony w marcu 1992. Używa rdzenia EV4, ze 128-bitową szyną danych. Szyna obsługuje ,,łatwe'' podłączenie zewnętrznego cache'u drugiego poziomu, z rozmiarem bloku 256 bitów. Zegar Bcache jest konfigurowalny całkowicie programowo. 21064 może też być skonfigurowana do używania 64-bitowej szyny zewnętrznej (nie jestem jednak pewien, czy jakakolwiek płyta główna dostępna w sprzedaży używa tego trybu). 21064 nie wymusza żadnego sposobu używania Bcache'u, jednakże zazwyczaj jest on skonfigurowany jako write-back cache. 21064 zawiera obejścia pozwalające zewnętrznemu sprzętowi utrzymać zgodność cache'u z Bcache'm i wewnętrzną pamięcią podręczną, ale nie polecam tego sposobu.

21066 używa rdzenia EV6; zawiera wewnętrzny kontroler pamięci oraz mostek PCI. Dla oszczędzania wyprowadzeń procesora, kontroler pamięci ma 64-bitową szynę danych (ale wewnętrzne pamięci podręczne mają rozmiar blokowy 256 bitów, tak jak 21064, a więc wypełnienie bloku zajmuje 4 cykle zegara szyny). Kontroler pamięci obsługuje zewnętrzny Bcache i zewnętrzne DRAM'y. Częstotliwość zegara Bcache i DRAM'ów jest konfigurowana całkowicie programowo, może być dostosowana do rozdzielczości cyklu zegara CPU. Czterocyklowy proces wypełniania bloku cache nie jest taki zły, na jaki wygląda, ponieważ dostęp do DRAM'u działa w trybie stronicowania. Niestety, kontroler pamięci nie obsługuje żadnego z nowych ezoterycznych DRAM'ów (SDRAM, EDO lub BEDO), ani synchronicznych RAM pamięci podręcznej. Interfejs szyny PCI jest w pełni zgodny z normą rev2.0 i działa na częstotliwości 33MHz.

21164 ma 128-bitową szynę danych; obsługuje odczyt rozdzielony (split read), do 2 odczytów na raz (pozwala to na stuprocentowe wykorzystanie szyny danych w idealnych warunkach - można teoretycznie przesyłać 128 bitów danych w każdym cyklu zegara szyny). 21164 pozwala na łatwe podłączenie zewnętrznego cache'u trzeciego poziomu (Bcache), pozwala na synchronizację zewnętrznych systemów ze wszystkimi pamięciami podręcznymi. Rozwiązania wieloprocesorowe są więc łatwe do zaimplementowania.

21164A został ukończony w październiku 1995. Używa rdzenia EV56; jego wyprowadzenia są kompatybilne z 21164, jednak wymaga on oddzielnych szyn zasilających - wszystkie piny zasilania pobierające +3.3V w 21164 zostały podzielone na dwie grupy; jedna pobiera 2.0V dla rdzenia CPU, a druga 3.3V dla sekcji I/O (wejścia-wyjścia). Inaczej niż w innych implementacjach, wyprowadzenia 21164 nie tolerują pięciu woltów. Rezultatem tych zmian jest niekompatybilność płyt głównych 21164 z procesorami 21164A (zauważ jednak, że zaprojektowanie płyty 21164A obsługującej 21164 nie byłoby trudne). 21164A ma też kilka nowych wyprowadzeń dla obsługi nowych 8 i 16-bitowych obciążeń. Polepsza też obsługę synchronicznych SRAM'ów do implementacji zewnętrznego Bcache.

4. Wydajność 21064 i 21066

21064 i 21066 mają ten sam rdzeń (EV4). Jeżeli ten sam program zostanie uruchomiony na 21064 i 21066, przy takiej samej szybkości zegara, różnica w wydajności jest tylko rezultatem [większej] przepustowości Bcache/pamięci. Każdy wątek kodu, mający duży współczynnik współpracy z wewnętrznymi pamięciami cache, będzie wykonywał się tak samo na obu jednostkach. Istnieją dwa główne ograniczniki wydajności:

  1. Kod który wykonuje dużą liczbę zapisywań. Chociaż 21064 i 21066 mają bufory zapisu, żeby pokryć niektóre opóźnienia to i tak kod który intensywnie zapisuje będzie zdławiony przez przepustowość zapisu na szynie systemowej. To zjawisko zwiększa się, ponieważ wewnętrzna pamięć podręczna cache działa w trybie ,,write-through''.
  2. Kod, który chce traktować liczby zmiennoprzecinkowe (float) jako całkowite (integer). Architektura Alphy nie pozwala na przysyłanie w trybie rejestr-rejestr z rejestrów całkowitych na zmiennoprzecinkowe. Taka konwersja musi być dokonana w pamięci (i dlatego, ponieważ wewnętrzna pamięć podręczna działa w trybie w-t, w Bcache). (uwaga D.M.: wygląda na to, że zarówno EV4, jak i EV45 mogą wykonać konwersję przez podstawowy cache danych (Dcache), zakładając, że pamięć jest już stronicowana. W takim przypadku, zawartość sekwencji konwersji będzie uaktualniać Dcache, a kolejne obciążenie jest w stanie, pod pewnymi warunkami, odczytać uaktualnioną wartość d-cache, zapobiegając każdorazowemu obejściu trasy przez Bcache. W praktyce, najlepiej jest wykonywać instrukcje stq/ldt lub stt/ldq jednocześnie, co jest jednak nieintuicyjne.

Jeżeli porównasz 21064A i 21066A, powstaje dodatkowy czynnik w postaci różnych rozmiarów Icache i Dcache w tych procesorach.

21164 rozwiązuje oba problemy: osiąga znacznie większe przepustowości szyny systemowej (pomimo tego, że ma taką samą ilość wyprowadzeń sygnałowych - tak, wiem, że ma dwa razy więcej pinów niż 21064, ale wszystkie dodatkowe to zasilanie i masa! (tak, naprawdę!!)), posiada również pamięć podręczną pracującą w trybie write-back. Jedyny problem, który pozostaje, to odpowiedź na pytanie ,,ile kosztuje?''.

5. Kilka uwag o zegarach

Wszystkie obecnie produkowane procesory Alpha używają szybkich zegarów, ponieważ ich mikroarchitektury zostały zaprojektowane w tzw. systemie krótkich cykli zegara (short-tick design). Dlatego też żadna z szyn systemowych nie musi działać z potwornymi prędkościami.

Uwaga: Ktoś zasugerował, że wydajność jego 21066 była za niska, ponieważ kontroler pamięci tego procesora pracował tylko na 33MHz. Jednak superszybkie systemy 21064A posiadają kontrolery pamięci taktowane ,,tylko'' 33MHz.

6. Chipsety

DS sprzedaje dwa chipsety wspomagające CPU. Chipset 2107x (APECS) obsługuje 21064(A), a 2117x (ALCOR) obsługuje 21164. Zapowiadany jest 2117xA (ALCOR 2), stosowany w 21164A.

Oba chipsety posiadają kontrolery pamięci i mostki PCI dla procesorów. APECS korzysta z 32-bitowego mostka PCI, ALCOR natomiast z 64-bitowego, który (zgodnie z wymaganiami specyfikacji PCI) może obsługiwać zarówno 32, jak i 64-bitowe urządzenia PCI.

APECS składa się z 6 208-pinowych układów (cztery 32-bitowe przełączniki danych (DECADE), jeden kontroler systemu (COMANCHE), jeden kontroler PCI (EPIC)). Zapewnia kontroler DRAM (128-bitowa szyna pamięci) i interfejs PCI. Wykonuje też całą pracę potrzebną do utrzymania zgodności pamięci, kiedy urządzenie PCI wykonuje bezpośredni dostęp do/z pamięci (ang. DMA, Direct Memory Acces).

ALCOR zawiera 5 układów (4 64-bitowe przełączniki danych (Data Switch, DSW) - 208-pinowe PQFP i jeden kontrolny (Kontrola, Adresy I/O, CIA) - 383-pinowy plastykowy PGA). Zapewnia kontroler DRAM (265-bitowa szyna pamięci), oraz interfejs PCI. W ten sam sposób co APECS obsługuje DMA.

Nie istnieje chipset dla 21066, ponieważ kontroler pamięci i mostek PCI są zintegrowane z procesorem.

7. Płyty główne

Grupa inżynieryjna DS produkuje wzorcowe projekty, używające Alphy i w/w chipsety. Są to w większości płyty rozmiaru PC-AT, z funkcjonalnością nowoczesnej płyty głównej do Pentium. Pierwotnie te przykładowe płyty miały być używane jako punkty startu dla firm produkujących tego typu produkty. Te projekty pierwszej generacji były nazywane płytami ewaluacyjnymi (Evaluation Board, EB). Ponieważ ilość czynności inżynieryjnych potrzebnych do wykonania płyty głównej wzrosła (z powodu zegarów o dużych prędkościach i norm emisji i podatności na zakłócenia), nacisk został postawiony na produkcję płyt głównych nadających się do sprzedaży detalicznej.

Oddziały płyt głównych Digitala wyprodukowały kilka generacji maszyn używających procesorów Alpha. Niektóre z tych systemów używają logiki wspomagającej zaprojektowanej przez te oddziały, a inne chipsetów DS. W niektórych przypadkach, płyty używają kombinacji obu tych technik.

Rózne firmy produkują płyty używające procesorów Alpha. Niektóre projektują systemy od podstaw, inne zaś używają chipsetów DS, powielają lub modyfikują przykładowe projekty Digitala, a nawet produkują komputery oparte na zbudowanych i przetestowanych płytach DS.

EB64: Nie używana już płyta do 21064 z kontrolerem pamięci wykorzystującym logikę programowalną. Wejście/Wyjście jest zapewnione przez użycie logiki programowalnej do interfejsowania układu-mostu 486<->ISA. Wbudowany Ethernet, SuperI/O (2 p. szeregowe, 1 p. równoległy, FDD) i ISA. Rozmiar PC-AT. Wykorzystuje standardowe zasilacze PC.

EB64+: Do 21064/21064A (wykorzystuje APECS). Posiada szyny ISA i PCI (3 ISA, 2 PCI, jedna para jest dzielona). Obsługuje 36-bitowe SIMM'y DRAM. Most do ISA'y jest tworzony za pomocą mostka Intel SaturnI/O PCI-ISA. Płyta posiada wbudowany kontroler SCSI (NCR 810 na PCI), Ethernet (Digital 21040), kontroler klawiatury i myszy (złącze PS/2), SuperI/O (2 sz. 1 r., FDD), RTC (ang. Real Time Clock - zegar czasu rzeczywistego - przyp. tłum.)/NVRAM. Boot ROM to EPROM (to niedobrze - vide MILO HOWTO - przyp. tłum.). Rozmiar PC-AT. Wykorzystuje standardowe zasilacze PC.

EB66: Do 21066 lub 21066A. Podsystem Wejścia/Wyjścia jest identyczny do EB64+. Rozmiar PC-AT. Wykorzystuje standardowe zasilacze PC. Schemat EB66 został opublikowany jako plakat reklamowy dla 21066 jako "pierwszy mikroprocesor na świecie posiadający wewnętrzny kontroler PCI" (dla fanów plotek: są dwie wersje tego plakatu - ja narysowałem obwody i napisałem hasło [reklamowe] dla pierwszej, a jacyś Amerykanie zmienili hasło dla drugiej wersji).

EB164: Do 21164 (i to jest w IMHO najlepszy wybór - sam na takim systemie pracuję - a pracowałem na wielu alfach - przyp. tłum.), używa ALCOR'a. Posiada szyny ISA i PCI (3 sloty ISA, 2 64-bitowe sloty PCI (jeden jest współdzielony ze slotem ISA) i dwa 32-bitowe sloty PCI). Używa SIMM'ów ,,plug-in'' do Bcache. Podsystem I/O zawiera SuperI/O (2 sz., 1 r., FDD), kontroler klawiatury i myszy (złącze PS/2), RTC/NVRAM. Boot ROM to Flash (EEPROM - przyp. tłum.). Rozmiar płyty PC-AT. Wymaga zasilacza o napięciu 3.3V.

AlphaPC64 (Cabriolet): pochodzi od EB64+, ale teraz to płyta baby-AT z Flash Boot ROM. Nie posiada kontrolera SCSI ani Ethernetu. Trzy sloty ISA, cztery sloty PCI (jedna para to slot dzielony), używa SIMM'ów Bcache typu ,,plug-in''. Wymaga zasilacza o napięciu 3.3V.

AXPpci33 (NoName): jest bazowany na EB66. Ta płyta jest produkowana przez Techniczny OEM (TOEM) Digitala. Jest przeznaczona dla procesora 21066 o szybkości 166MHz albo 233MHz. Jest to płyta rozmiaru baby-AT i wykorzystuje standardowe zasilacze PC. Posiada 5 slotów ISA i 3 sloty PCI (jedna para jest dzielona). Są dwie wersje płyty - ze złączami klawiatury typu PS/2 lub dużego DIN.

Inne płyty główne dla procesorów 21066: większość, jeżeli nie wszystkie płyty dla 21066 są bazowane na EB66 - nie ma wielu rozwiązań systemowych dla płyt 21066, ponieważ kontrola jest wykonywana w procesorze.

Multia (Universal Desktop Box): Jest to bardzo mały system podstawowy, wykorzystujący 21066. Na płycie znajdują się: 2 gniazda PCMCIA, chip grafiki TGA (21030), Ethernet (chip 21040), kontroler SCSI NCR 810, oraz kontroler stacji dysków, dwa porty szeregowe i jeden równoległy. Ma małe możliwości rozszerzenia (jeden slot PCI), ze względu na mały rozmiar. (Jest jakieś ograniczenie w używaniu slotu PCI, nie pamiętam jakie) (Zauważ, że są też Multie do 21066A i Pentium).

DEC PC 150 AXP (Jensen): Jest to bardzo stary system Digitala - jeden z systemów Alpha pierwszej generacji. Jest tutaj załączony tylko z powodu dostępności takich płyt na rynku komputerów używanych. Jensen jest stojącą na podłodze wieżą. Używa 150MHz 21064 (późniejsze wersje używały szybszych procesorów, ale nie jestem pewien co do prędkości). Płyta używała logiki programowalnej do interfejsowania mostu 486 EISA - CPU.

Inne systemy 21064(A): Istnieją 3 lub 4 płyty (nie załączam tu systemów Digitala) i wszystkie, które znam, wyeluowały z EB64+. Są to:

Inne systemy 21164(A): Jedyne, które znam, a nie są klonami EB164, to płyta wykonana przez DeskStation. System ten został zaimplementowany przy użyciu kontrolerów I/O oraz pamięci stosowanych przez DeskStation. Nie znam ich stosunku do Linuxa.

8. O bajtach

Kiedy architektura Alpha została przedstawiona, była unikalna pośród innych architektur RISC z powodu przetwarzania 8 i 16-bitowych obciążeń i zmiennych. Wspomagała też 32 i 64-bitowe. (,,longword'' i ,,quadword'' wg. nomenklatury Digitala). Projektanci (Dick Sites, Rich Witek) wyjaśnili tą decyzję następującymi zaletami:

  1. Obsługa bajtów w pamięci podręcznej i podsystemie pamięci zwykle zwalnia dostęp do 32 i 64-bitowych danych.
  2. Obsługa bajtów czyni ciężkim zbudowanie układu korekcji błędów cache/pamięci o dużej prędkości.

Alpha kompensuje to przez zapewnienie silnych instrukcji manipulujących grupami bajtów w rejestrach 64-bitowych. Standardowe programy testujące operacje na łańcuchach (strings) (np. programy testujące magazynu ,,Byte'') pokazują, że wydajność Alphy jest bardzo wysoka przy operacjach na bajtach.

Absencja bajtowych obciążeń i ładunków zmienia działanie przełączników (semaphores) w oprogramowaniu, oraz podsystemów wejścia/wyjścia. Rozwiązanie problemu I/O Digitala, to użycie kilku niskopoziomowych linii adresowych do zdefiniowania rozmiaru danych podczas przesyłania I/O, oraz do dekodowania tych danych jako bajtów. Jest to tzw. rozproszone adresowanie (sparse addressing). Marnuje ono przestrzeń adresową i powoduje fragmentację pamięci I/O (więcej o skutkach rozproszonego adresowania kiedy uda mi się coś o tym napisać). Zauważ, że pamięć I/O w tym kontekście odnosi się do wszystkich zasobów systemowych PCI i dlatego odnosi się zarówno do pamięci PCI, jak i do przestrzeni adresowej PCI.

Kiedy na rynek wyszedł 21164A, architektura Alphy musiała już zawierać adresowanie bajtów. Wykonywanie tych nowych instrukcji na wcześniejszych procesorach spowoduje wyjątek ,,OPCDEC'' kodu PAL, a wtedy kod będzie obsługiwał ten wyjątek, co będzie miało wpływ na wydajność. Skutkiem tego powninno być (wg. mnie) ograniczenie korzystania z tych instrukcji do sterowników urządzeń, a nie kodu aplikacji.

Te nowe bajtowe obciążenia i ładunki znaczą, że przyszłe chipsety będą w stanie obsługiwać zdefragmentowaną przestrzeń I/O.

9. PALcode

To jest miejsce na sekcję opisującą kod PAL. Napiszę ją, jeżeli będzie wystarczające zainteresowanie.

10. Przenoszenie systemu na Alphę

Możliwość uruchamiania Linuxa na każdej maszynie z Alphą jest ograniczona tylko twoimi możliwościami zdobycia informacji małych detali jej wnętrza. Ponieważ istnieją wersje Linuxa na EB66, EB64+ i EB164, wszystkie systemy oparte na 21066, 21064/APECS lub 21164/ALCOR powinny działać pod Linuxem z małymi albo bez żadnych modyfikacji. Główna różnica pomiędzy tymi płytami głównymi, to sposób, w jaki route'ują przerwania. Są trzy źródła przerwań:

Wszystkie systemy użwają mostku Intel System I/O (SIO), jako mostu PCI <-> ISA (główna szyna I/O to PCI, ISA jest drugorzędną szyną używaną do obsługi wolniejszych i ,,wywłaszczających'' (ang. legacy) urządzeń). SIO składa się z tradycyjnej, połączonej pary 8259-tek.

Niektóre systemy (np. NoName) route'ują wszystkie przerwania przez SIO do procesora, a inne mają oddzielny kontroler przerwań i route'ują wszystkie przerwania PCI i przerwanie SIO (wyjście 8295) przez niego, a wszystkie przerwania ISA przez SIO.

Inne różnice pomiędzy systemami to:

11. Więcej informacji

Wszystkie płyty ewaluacyjne Digital Semiconductor oraz projekty płyt głównych nie są zastrzeżone, a cały zestaw dokumentacji do jednego projektu kosztuje około 50$. Składają się na niego wszystkie schematy, źródła części programowalnych, arkusze danych dla procesora i chipsetu. Zestawy dokumentacji można zakupić u dystrybutorów Digital Semiconductors. Nie sugeruję tutaj, żeby szybko iść i kupić te zestawy, ale chcę zaznaczyć, że takie informacje są dostępne.

Mam nadzieję, że to HOWTO było pomocne. Komentarze/uaktualnienia/sugestie rozwoju przesyłaj do Neala Crooka.

12. Bibliografia

[1] Bill Hamburgen, Jeff Mogul, Brian Reid, Alan Eustace, Richard Swan, Mary Jo Doherty i Joel Bartlett.
Opis Organicznych Systemów Iluminacyjnych. DEC WRL, Uwaga Techniczna 13, Kwiecień 1989.

13. Od tłumacza

Ponieważ było to HOWTO dosyć skomplikowane pod względem technicznym, użyłem tutaj wielu wyrażeń niezrozumiałych dla ludzi nie zajmujących się elektroniką cyfrową. Jeden rzut oka do książki o elektronice dla początkujących powinien rozwiać te wątpliwości.
To HOWTO jest jednym z dwóch potrzebnych do uruchomienia Linuxa na Alfie. Drugie to MILO-HOWTO, które znajduje się w wersji polskiej na serwerze projektu JTZ ( http://www.jtz.org.pl/). Opisuje ono program ładujący Linuxa na Alfę (odpowiednik LILO).
Jak zwykle, jeżeli znajdziesz jakieś błędy albo masz ciekawe sugestie, napisz do mnie. doc-linux-pl-2002.06.14.orig/html/Assembly-HOWTO.pl.html0100664000175000017500000017062206770264140021330 0ustar covencoven Assembly HOWTO

Assembly HOWTO

Autor: François-René Rideau fare@tunes.org
v0.4n, 22 Sierpnia 1998
Wersja polska: Zbigniew Michał Kempczyński wegorz@bydgoszcz.pkobp.pl
v1.0, 30 Stycznia 1999 r.


Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje sie pod adresem http://www.tunes.org/~fare/Assembly-HOWTO. To jest Linux Assembly HOWTO. Ten dokument opisuje metody programowania w assemblerze z użyciem WOLNYCH narzędzi programistycznych, koncentrując się na Systemie Operacyjnym Linux na platformach i386. Załączony materiał może, ale nie musi być zgodny, z innym sprzętem i/lub oprogramowaniem. Przewodnictwo na tym będzie mile widziane. Słowa kluczowe: assemblacja, assembler, wolny, makroprocesor, preprocesor, asm, inline asm, 32-bitowy, x86, i386, gas, as86, nasm

1. WPROWADZENIE

1.1 Legal Blurp

Copyright © 1996,1997,1998 by François-René Rideau.

Ten dokument jest wolnym oprogramowaniem, możesz go redystrybuować i/lub modyfikować zgodnie z założeniami GNU General Public License opublikowanym przez Free Software Foundation; wersja 2 Licencji, lub (w twoim przypadku) inna późniejsza wersja.

1.2 Ważna Informacja

To jest interaktywnie rozwijany dokument: jesteś specjalnie proszony do zadawania pytań, udzielania odpowiedzi na pytania, poprawiania odpowiedzi, dodawania nowych odpowiedzi na FAQ, wskazywania na inne oprogramowanie, wskazywania osobie prowadzącej błędy lub braki na stronach. Jeśli jesteś zmotywowany, mógłbyś przejąć prowadzenie tego HOWTO. Słowem, działaj !

By przejąć prowadzenie skontaktuj się z kimkolwiek, kto wydaje się prowadzić Assembly-HOWTO. W trakcie tego pisania to jestem ja, np. François-René Rideau. Jakkolwiek, minęło trochę czasu od kiedy poszukiwałem mocnego gościa by podmienił mnie jako prowadzącego ten dokument. Niekorzyścią jest to, iż musisz spędzić trochę czasu trzymając dokument na czasie, poprawiając go, i ucząc się narzędzi publikacyjnych LDP. Korzyścią jest to, iż zdobędziesz trochę sławy i możesz otrzymać wolne kopie kompendiów HOWTO.

1.3 Przed słowem

Ten dokument ma na celu udzielenie odpowiedzi na najczęściej zadawane pytania przez ludzi, którzy programują lub chcą programować w 32-bitowym assemblerze x86 używając wolnych assemblerów, zwłaszcza w systemie operacyjnym Linux. Może on także wskazywać inne dokumenty o nie-wolnych, nie-x86, lub nie-32-bitowych assemblerach, chociaż nie jest to jego pierwszorzędnym celem.

Ponieważ głównym celem programowania w assemblerze jest budowa wnętrzności systemów operacyjnych, interpretatorów, kompilatorów, i gier, gdzie kompilator C zawodzi nie dostarczając potrzebnych środków wyrazu, (wykonanie jest coraz rzadszym tematem), skoncentrujemy się na rozwoju takiego oprogramowania.

Jak używać tego dokumentu

Ten dokument zawiera odpowiedzi na pewne najczęściej zadawane pytania. W wielu miejscach, zostały umiejscowione adresy URL by wskazać na pewne oprogramowanie lub magazyny dokumentacji.

Sprawdź gdzie są skopiowane najbardziej użyteczne magazyny, i spróbuj dobrać się do najbliższej z nich; uchronisz w ten sposób Internet przed niepotrzebym ruchem w sieci, i zaoszczędzisz swój cenny czas.

W szczególności pewne wielkie magazyny na całym świecie, sa kopiami innych popularnych magazynów. Powinieneś się nauczyć i zapamiętać miejsca umiejscowione blisko ciebie (roztropność-sieciowa). Czasami, lista takich kopii jest wypisana w pliku, lub we wiadomości wejściowej. Miej na uwadze te porady. W przeciwnym wypadku zapytaj archie o oprogramowaniu którego szukasz...

Najświeższe wersje tego dokumentu znajdują się w http://www.tunes.org/~fare/Assembly-HOWTO lub http://www.tunes.org/~fare/Assembly-HOWTO.sgml

ale to co jest w magazynach Linux HOWTO powinno być także na czasie (ale tego nie wiem):

ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/ (?)

Francuska wersja tego HOWTO może być znaleziona w

ftp://ftp.lip6.fr/pub/linux/french/HOWTO/

Inne zależne dokumenty

1.4 Historia

Każda wersja zawiera kilka napraw i mniejszych korekt, których nie będzie trzeba ciągle poprawiać.

Version 0.1 23 Kwiecień 1996

Francois-Rene "Faré" Rideau <fare@tunes.org> tworzy i publikuje pierwsze mini-HOWTO, ponieważ ``Jestem chory od ciągłego odpowiadania na te same pytania na comp.lang.asm.x86''

Version 0.2 4 Maj 1996

*

Version 0.3c 15 Czerwiec 1996

*

Version 0.3f 17 Październik 1996

*

Version 0.3g 2 Listopad 1996

Utworzenie Historii. Dodanie wskaźników w sekcji o cross-kompilacji. Dodanie sekcji o programowaniu I/O pod Linux-em (w szczególności video).

Version 0.3h 6 Listopad 1996

więcej o cross-kompilacji - Zobacz na sunsite: devel/msdos/

Version 0.3i 16 Listopad 1996

NASM łatwo przechodzi

Version 0.3j 24 Listopad 1996

wskazanie na tłumaczenie francuskie

Version 0.3k 19 Grudzień 1996

Co ? Zapomniałem wskazac na terse???

Version 0.3l 11 Styczeń 1997

*

Version 0.4pre1 13 Styczeń 1997

tekst mini-HOWTO przekształca się w pełne linuxdoc-sgml-owe HOWTO, by zobaczyć jak wyglądają narzędzia SGML.

Version 0.4 20 Styczeń 1997

pierwsze jako takie wypuszczenie tego HOWTO.

Version 0.4a 20 Styczeń 1997

dołożono sekcję Wyrazy Uznania

Version 0.4b 3 Luty 1997

przesunięcie NASM: teraz jest przed AS86

Version 0.4c 9 Luty 1997

Dodano sekcję "CZY POTRZEBUJESZ ASSEMBLACJI ?"

Version 0.4d 28 Luty 1997

Vapor oznajmia o nowym przewodnictwie Assembly-HOWTO.

Version 0.4e 13 Luty 1997

Wypuszczenie o DrLinux

Version 0.4f 20 Marzec 1997

*

Version 0.4g 30 Marzec 1997

*

Version 0.4h 19 Czerwiec 1997

wciąż więcej na temat "jak nie używać assemblacji"; unowocześnienie o NASM, GAS.

Version 0.4i 17 Lipiec 1997

info o 16-bitowym trybie dostępu z Linux-a.

Version 0.4j 7 Sierpień 1997

*

Version 0.4k 19 Październik 1997

*

Version 0.4l 16 Listopad 1997

wypuszczenie o szóstej edycji LSL.

Version 0.4m 23 Marzec 1998

poprawki o wywołaniu gcc

To jest jeszcze inne ostatnie-wydanie-przez-Faré-przed-przejęciem-przez-nowego prowadzącego (?)

1.5 Wyrazy Uznania

Chaciałbym podziękować następującym osobom, w kolejności występowania:

2. CZY POTRZEBUJESZ ASEMBLACJI?

No, nie chciałbym przeszkadzać w tym co robisz, ale tu jest kilka porad ciężko zarobionego doświadczenia.

2.1 Za i Przeciw

Korzyści Assemblacji

Assemblacja może wyrazić mocno niskopoziomowe rzeczy:

Niekorzyści Assemblacji

Assemblacja jest bardzo nisko-poziomowym językiem (najniższym jest ręczne-kodowanie w kodach binarnych instrukcji).

To znaczy

Ocenianie

Podsumowując, chociaż możesz uznać że użycie assemblacji jest czasami konieczne, a nawet pożyteczne w kilku przypadkach gdzie nie jest konieczne, będziesz chciał:

Nawet w przypadkach kiedy Assemblacja jest konieczna (np. rozwój OS) możesz uznać, że nie aż do tego stopnia i trzymać się w/w zasad.

Obejrzyj źrodła jądra Linux-a zwracając uwagę: jak mało assemblacji jest konieczne, by uzyskać szybki, niezawodny, przenośny, utrzymywalny OS. Także udana gra taka jak DOOM została prawie całkowicie napisana w C, z mała częścią napisaną w assemblerze tylko do przyśpieszenia jej działania.

2.2 Jak NIE używać Assemblera

Ogólne zasady uzyskania efektywnego kodu

Jak rzekł Charles Fiterman na comp.compilers o 'człowieku kontra kod assemblera wygenerowany przez komputer',

``Człowiek powinien zawsze wygrać i oto przyczyna.

Człowiek wygrywa poniewaz umie używać maszyny.''

Języki ze zoptymalizowanymi kompilatorami

Języki takie jak ObjectiveCAML, SML, CommonLISP, Scheme, ADA, Pascal, C, C++, wsród innych, wszystkie mają wolne zoptymalizowane kompilatory, które zoptymalizują masę twoich programów, i często będą lepsze niż ręczny kod assemblera nawet dla szczelnych pętli, umożliwiając ci skoncentrowanie się na wysokopoziomowych szczegółach, i bez zakazywania ci złapania kilku procent wykonania w wyżej wymieniony sposób w momencie gdy osiągniesz stabilny rozwój. Oczywiście, są także komercyjne zoptymalizowane kompilatory dla większości z tych języków.

Pewne języki mają kompilatory produkujące kod w C, który może być dalej zoptymalizowany przez dany kompilator C. Takimi są LIST, Scheme, Perl i wiele innych. Prędkość jest całkiem dobra.

Ogólne zasady przyśpieszania twojego kodu

W celu przyspieszenia kodu powinieneś robić zrobić to tylko dla fragmentów programu które narzędzie profilujące konsekwentnie określa jako wąskie gardło wykonania.

Stąd, jeśli określisz fragmenty kodu jako zbyt wolne, powinieneś

Na końcu, przed zejściem do pisania w assemblerze, powinieneś prześledzić wygenerowany kod, sprawdzając czy problem nie leży faktycznie w złej generacji kodu, co jest możliwe ale nie w wypadkach: kod wygenerowany przez kompilator może być lepszy niż mógłbyć napisać, w szczególności na nowoczesnych architekturach! Wolne części programu mogą być równie zagmatwane. Największym problemem nowoczesnych architektur z szybkimi procesorami są pewne opóźnienia dostępu do pamięci, nietrafiony dostęp do cache, i TLB oraz błędy stronnicowania; optymalizacja z użyciem rejestrów staje się wtedy mniej użyteczna, i zyskałbyć więcej po przemyśleniu struktury danych oraz wykorzystując wątkowanie gdyż uzyskałbyś lepsze umiejscowienie w dostępie do pamięci. Być może poźniej dopiero całkowicie odmienne spojrzenie na problem, pomoże go rozwiązać.

Sprawdzanie kodu generowanego przez kompilator

Jest wiele powodów do sprawdzenia kodu generowanego przez kompilator. Tu jest zawarte co robić z takim kodem:

Standardową metodą uzyskania kodu assemblera jest wywołanie twojego kompilatora z flagą -S. Działa to dla większości Unix-owych kompilatorów, włączając w to GNU C Compiler (GCC), ale YMMV. Dla GCC, bardziej zrozumiały kod assemblera będzie wyprodukowany po użyciu opcji -fverbose-asm. Oczywiście, jeśli chcesz dostać dobry kod assemblera, nie zapomnij użyć opcji optymalizacji i wskazówek!

3. ASSEMBLERY

3.1 Inline Assemblera GCC

Dobrze znany kompilator GNU C/C++ (GCC), zoptymalizowany 32-bitowy kompilator będący sercem projektu GNU, wspiera całkiem dobrze architekturę x86, włączając w to zdolność wstawiania kodu assemblera w programach w C, w sposób gdzie zarządzanie rejestrami może być wyspecyfikowane lub pozostawione GCC. GCC działa na większości dostępnych platform, dla godnych uwagi Linux-a, *BSD, VST, OS/2, *DOS-a, WIN*, itd.

Gdzie znaleźć GCC

Orginalny adres GCC jest adresem FTP GNU ftp://prep.ai.mit.edu/pub/gnu/ razem ze wszystkimi wersjami aplikacji z projektu GNU. Przekompilowane i skonfigurowane dla Linux-a wersje są w ftp://sunsite.unc.edu/pub/Linux/GCC/ Istnieje wiele kopii FTP obu adresów, na całym świecie a także na nośnikach CD.

Rozwój GCC został podzielony niedawno na dwie części. Więcej na temat eksperymentalnej wersji egcs mozna znaleźć na http://www.cygnus.com/egcs/

Źródła przystosowane do twojej ulubionego OS, oraz przekompilowane binaria można znaleźć na zwykłych adresach FTP.

Najbardziej popularny port GCC dla DOS-a nosi nazwę DJGPP i może być znaleziony w katalogach o takiej nazwie na adresach FTP. Zobacz:

http://www.delorie.com/djgpp/

Jest także port GCC na OS/2 nazwany EMX, działający także pod DOS-em, zawierający wiele bibliotek emulujących wywołania funkcji unix-a. Zobacz:

http://www.leo.org/pub/comp/os/os2/gnu/emx+gcc/

http://warp.eecs.berkeley.edu/os2/software/shareware/emx.html

ftp://ftp-os2.cdrom.com/pub/os2/emx09c/

Gdzie znaleźć dokumentacje GCC Inline Asm

Dokumentacja GCC zawiera pliki w formacie texinfo. Możesz przekompilować je TeX-em i wydrukować rezultat, lub przekonwertować je do .info i oglądać emacs-em, lub przekonwertować je do .html. Możesz przekonwertować je (właściwymi narzędziami) do tego co lubisz najbardziej, lub czytać takie jakie są. Pliki .info są ogólnie dostarczane z każdą dobrą instalacją GCC.

Właściwą sekcją do sprawdzenia jest: C Extensions::Extended Asm::

Sekcja Invoking GCC::Submodel Options::i386 Options:: może być ci także pomocna. W szczególności, podaje ci specyficzne ograniczenia nazw rejestrów: abcdSDB korespondują do %eax, %ebx, %ecx, %edx, %esi, %edi, %ebp wyłączając (nie ma litery dla %esp).

Zasoby gier dla DJGPP (nie tylko dla hackerów gier) mają swoją stronę specjalnie o assemblerze:

http://www.rt66.com/~brennan/djgpp/djgpp_asm.html

Jest jeszcze strona www nazwana ``DJGPP Quick ASM Programming Guide'', zawierająca od URL-i do FAQ, AT&T Składnia ASM x86 , Pewne informacje o inline ASM, i konwertowanie plików .obj/.lib:

http://remus.rutgers.edu/~avly/djasm.html

GCC zależy od GAS podczas assemblacji, i śledzi jego składnię (patrz poniżej); pamiętając że inline asm wymaga znaków procent podczas cytowania by mogły przejść do GAS. Zobacz poniższą sekcję o GAS.

Znajdziesz pełno użytecznych przykładów w podkatalogu linux/include/asm-i386/ źródeł jądra Linux-a.

Jak właściwie wywoływać GCC z kodem inline assemblera.

Ponieważ funkcje assemblera w źródłach jądra (i bardzo prawdopodobnie twoje własne nagłówki, jeśli spróbujesz stworzyć twoje oprogramowanie w assemblerze tak czyste jak to jest w jądrze linuxa) są osadzone w funkcjach extern inline, GCC musi zostać wywołąny z -O flag (or -O2, -O3, itd), by te funkcje były dostępne. Jeśli nie, twój kod może się skompiluje, ale nie zostanie właściwie zlinkowany, gdyż będzie szukał funkcji extern które nie są inline w bibliotekach z którymi twój program będzie linkowany !!!. Innym sposobem jest zlinkowanie z bibliotekimi zawierającymi wycofane wersje tych funkcji.

Assemblacja inline może zostać wyłączona opcją -fno-asm, która każe zaprzestać kompilatorowi działania gdy zostanie użyte rozszerzenie składni o inline asm, w przeciwnym wypadku wygeneruje wywołanie funkcji zewnętrznej o nazwie asm(), która nie zostanie właściwie rozwiązana przez linker. Opcja -fasm przywraca działanie słowa kluczowego asm.

Bardziej ogólnie, dobrymi opcjami dla GCC na platformie x86 są


        gcc -O2 -fomit-frame-pointer -W -Wallpp

-O2 jest dobrym poziomem optymalizacji w większości przypadków.

Optymalizacja ponadto zajmuje więcej czasu, otrzymując kod który jest mocno dłuższy, ale tylko trochę szybszy; taka optymalizacja może być użyteczna tylko dla ciasnych pętli (jeśli takie są), którą możesz jakkolwiek zrealizować w assemblerze. W przypadkach gdy koniecznie potrzebujesz silnej optymalizacji ze strony kompilatora dla kilku plików, rozważ użycie -O6.

-fomit-frame-pointer pozwala generować kod omijający głupie zarządzanie ramką wskaźników, co daje mniejszy i szybszy kod, i zwalnia rejestry do dalszych optymalizacji. Wyklucza to łatwe użycie narzędzi odpluskwiających (gdb), ale kiedy chcesz ich użyć, nie martw się o rozmiar i prędkość kodu.

-W -Wall włącza generowanie wszytkich ostrzeżeń i pomaga wychwycić głupie błędy.

Możesz dodać specyficzne dla danego procecora -m486 lub inne flagi tak, że GCC wyprodukuje kod bardziej zaadaptowany dla danego komputera. Zauważ, że EGCS (i chyba GCC 2.8) mają -mpentium i tego typu flagi, podczas gdy GCC 2.7.x i starsze wersje nie. Niezły wybór flag specyfikujących procesor powinien być w jądrze Linux-a. Sprawdź dokumentację texinfo o zainstalowanej u ciebie wersji GCC.

-m386 pomoże zoptymalizować wielkość, a także prędkość na komputerach gdzie pamięć jest w pełni wykorzystana, odkąd wielkie programy są przyczyną wymiany pamięci, jakakolwiek "optymalizacja" jest sensowna dla większego kodu. Przy takich ustawieniach, może być pomocne przestanie korzystania z C, i w zamian skorzystanie z języka ułatwiającego kod faktoryzujący (przyp.tłum.) taki jak funkcjonalny język i/lub FORTH; i używać implementacji bazującej na wykorzystaniu bajtów i słów.

Zapamiętaj, że możesz używać rożnych flag dla różnych plików, więc używaj maksymalnej optymalizacji tam, gdzie program wykonuje się najdłużej, podczas gdy pozostałe pliki optymalizuj pod względem rozmiaru.

Do optymalizacji może być pomocna opcja -mregparm=2 i/lub korespondujące atrybuty funkcji, ale mogą stwarzać wiele problemów podczas linkowania obcego kodu, włączająć w to libc. Są sposoby by właściwie zadeklarować użycie obcych funkcji, tak, że zostaną wygenerowane właściwe wywołania, lecz możesz być zmuszony rekompilować obce biblioteki tak, by używały takich samych konwencji wywołań opartych na rejestrach...

Zapamiętaj, że możesz ustawić te flagi jako domyślne edytując plik /usr/lib/gcc-lib/i486-linux/2.7.2.3/specs lub gdziekolwiek on jest w twoim systemie (lepiej nie dodawaj tam -Wall). Dokładną lokalizację plików specyfikatorów GCC w twoim systemie możesz uzyskać wołająć gcc -v.

3.2 GAS

GAS jest GNU Assemblerem, na którym opiera się GCC.

Gdzie go znaleźć

Znajdziesz go w tym samym miejscu gdzie GCC, w paczce o nazwie binutils.

Jaka jest składnia AT&T

W związku z tym, że GAS został pomyślany by wspierać 32-bitowe kompilatory unixowe używa on standardowej składni ``AT&T'', która składnią mocno przypomina standardowe assemblery m68k, i jest standardem w świecie UNIX-a. Składnia nie jest ani gorsza, ani lepsza niż składnia ``Intel-owska''. Jest po prostu inna. Kiedy będziesz zamierzał używać jej, zauważysz bardziej regularna składnię niż w Intel-u, chociaż trochę nudniejszą.

Oto najważniejsze ostrzeżenia odnośnie składni GAS:

Istnieje program pomagający w konwersji programów ze składni TASM do składni AT&T. Zobacz

ftp://x2ftp.oulu.fi/pub/msdos/programming/convert/ta2asv08.zip

GAS ma obszerną dokumentację w formacie TeXinfo, którą można znaleźć co najmniej w dystrybucji źródłowej. Przegląd wyciągniętych stron .info z Emacs-a lub innych programów. Zdarzały się pliki o nazwach gas.doc lub as.doc gdzieś w pakietach źródłowych GAS, ale zostały włączone w dokumentacje TeXinfo. Oczywiście, w razie wątpliwości, alternatywną dokumentacją są same źródła! Sekcją, która szczególnie cię zainteresuje to Machine Dependencies::i386-Dependent::

Znowu, źródła Linux-a (jądra systemu), są dobrymi przykładami; zobacz w linux/arch/i386, następujące pliki: kernel/*.S, boot/compressed/*.S, mathemu/*.S

Jeśli piszesz jakiś język, pakiet obsługi wątków, itd. możesz obejrzeć jak inne języki (OCaml, gforth, itd.), lub pakiety obsługi wątków (QuickThreads, MIT pthreads, LinuxThreads, itd), lub cokolwiek, zrób to.

Na końcu, po prostu skompiluj program w C do assemblera dzięki czemu zobaczysz interesującą cię składnię. Zobacz sekcję Czy potrzebuję Assemblacji?.

Ograniczony tryb 16-bitowy

GAS jest 32-bitowym assemblerem, zadaniem którego jest wspomóc 32-bitowy kompilator. Aktualnie ma on jedno ograniczenie 16-bitowego trybu, który zawiera niedokończone użycie 32-bitowych przedrostków do instrukcji, tak więc piszesz 32-bitowy kod, który chodzi w 16-bitowym trybie na 32 bitowym procesorze. W obu trybach, wspiera on 16-bitowe używanie rejestrów, ale nie wspiera 16-bitowego adresowania. Użycie dyrektywy .code16 and .code32 przełącza pomiędzy trybami. Zapamiętaj, że dyrektywa inline assembly asm(".code16\n") pozwoli GCC wygenerować 32-bitowy kod, który uruchomi się w trybie rzeczywistym!

Stwierdziłem już, że większa część kodu potrzebnego do pełnego wspomagania 16-bitowego trybu programowania została dodana do GAS przez Bryan'a Ford'a (proszę o potwierdzenie?), ale ostatecznie, nie pojawiła się w żadnej dystrybucji którą sprawdziłem, aż do binutils-2.8.1.x ... więcej informacji na ten temat będzie mile widziane.

Cienkim rozwiązaniem jest definiowanie makr (patrz poniżej), które produkuja kod binarny (z .byte) który potrzebujesz tylko dla 16-bitowych instrukcji (prawie żadnych jeśli użyjesz code16 jak powyżej, i możesz spokojnie założyć, że kod będzie działał na zgodnych 32-bitowych procesorach x86). By znaleźć właściwe kodowanie, możesz zainspirować się źródłami 16-bitowych assemblerami.

3.3 GASP

GASP jest Preprocesorem GAS. Dodaje makra i trochę milszą składnię do GAS.

Gdzie znaleźć GASP

GASP jest zawarty razem z GAS w archiwum GNU binutils.

Jak to działa

Działa jako filtr, w stylu cpp i jemu podobnym. Nie pamiętam szczegółów, ale przychodzi on z własną dokumentacją w texinfo, więc przejrzyj ją (w .info), wydrukuj, prześledź (?). GAS z GASP-em według mnie jest typowym makro-assemblerem.

3.4 NASM

Projekt Netwide Assembler wypuszcza jeszcze jeden assembler, napisany w C, który powinien być dość modelowy do ewentualnego wsparcia znanych składni i formatów obiektów.

Gdzie znaleźć NASM

http://www.cryogen.com/Nasm

Wersja binarna jest na kopii sunsite w devel/lang/asm/ Powinna być także dostępna jako .rpm lub .deb w dystrybucjach RedHat/Debian w dystrybucyjnym contrib.

Co to robi

W momencie pisania tego HOWTO, wersja NASM to 0.97.

Składnia jest w stylu Intel-a. Część makroprocesora jest zintegrowana.

Wspierane formaty plików obiektowych to bin, aout, coff, elf, as86, (DOS) obj, win32, (ich własny format) rdf.

NASM może być używany jako wspomaganie dla wolnego kompilatora LCC (pliki wspierające są zawarte).

NASM rozwija się zbyt szybko by to HOWTO było aktualne. Jeżeli nie używasz BCC jako 16-bitowego kompilatora (który wykracza poza to 32-bitowe HOWTO), powinieneś używać NASM zamiast powiedzmy AS86 lub MASM, ponieważ jest mocno wspierany online i chodzi na wszystkich platformach.

Uwaga: NASM przychodzi także z disassemblerem, NDISASM.

Jego ręcznie napisany parser powoduje, że pracuje szybciej niż GAS, chociaż oczywiście nie wspiera trzech bilionów różnych architektur. Do x86, on powienien być assemblerem wyboru...

3.5 AS86

AS86 jest 80x86 16- i 32-bitowym assemblerem i jest częścią kompilatora języka C (BCC) Bruce'a Evans'a. Ma on głównie składnię Intel-owską, chociaż różni się nieznacznie np w trybach adresowania.

Gdzie dostać AS86

Całkowicie przestarzała wersja AS86 jest dystrybuowana przez HJLu tylko do kompilacji jądra Linux-a, w pakiecie o nazwie bin86 (aktualna wersja 0.4), dostępnej w dowolnym magazynie oprogramowania GCC dla Linux-a.

Ale nie radzę nikomu używania go do czegokolwiek innego niż przekompilowania Linux-a. Ta wersja wspiera tylko plik obiektowy hacked minix, który nie jest wspierany przez GNU binutils ani nic innego, i ma parę błędów w trybie 32-bitowym, więc powienieneś lepiej trzymać go tylko do kompilacji Linux-a.

Ostatnie wersje Bruce'a Evans'a (bde@zeta.org.au) są publikowane wraz z dystrybucją FreeBSD. No, były: Nie mogę znaleźć źródeł z dystrybucji 2.1 na :( Odtąd, wkładam źródła w moim miejscu:

http:///www.tunes.org/~fare/files/bcc-95.3.12.src.tgz

Projekt Linux/8086 (aka ELKS) jest w pewnym stopniu pozostałością bcc (chociaż nie sądze by zawierał 32-bitowe łaty). Obejrzyj http://www.linux.org.uk/Linux8086.html ftp://linux.mit.edu/.

Między innymi, ostatnie wersje, w przeciwieństwie do HJLu's, wspierają Linux-owy format GNU a.out, więc możesz linkować twój kod z programami Linux-owymi, i/lub używać zwykłych narzędzi z pakietu GNU binutil do manipulacji danymi. Ta wersja może ko-egzystować bez szkody z poprzednią wersją (zobacz poniższe pytanie).

BCC z 12 marca 1995 roku i wcześniejsze jego wersje mają brak składnika jakim jest odkładanie/pobieranie ze stosu rejestrów segmentowych jako 16-bitowych, co jest uciążliwe gdy programujesz w trybie 32-bitowym. Łata jest opublikowana w projekcie Tunes http://www.tunes.org/ podstrona files/tgz/tunes.0.0.0.25.src.tgz w rozpakowanym katalogu LLL/i386/ Łata powinna być także dostępna bezpośrednio z http://www.tunes.org/~fare/files/as86.bcc.patch.gz Bruce Evans zaakceptował tę łatę, więc jeśli któregoś dnia pojawi się nowa wersja bcc, powinna zawierać tę łatę...

Jak wywołać assembler?

Oto wpis GNU Makefile do używania bcc do transformacji .s asm w oba GNU a.out .o obiekt i .l listing:


%.o %.l:        %.s
        bcc -3 -G -c -A-d -A-l -A$*.l -o $*.o $<

Usuń %.l, -A-l, and -A$*.l, jeśli nie chcesz listingu. Jeśli chcesz czegoś więcej niż GNU a.out, możesz przejrzeć dokumentację bcc o wspieranych formatach, i/lub użyć objcopy z pakietu GNU binutils.

Gdzie znaleźć dokumentacje

Dokumentacje które są, zawierają się w pakiecie bcc. Podręczniki są także dostępne gdzieś pod adresem FreeBSD. Kiedy masz wątpliwości, źródła same w sobie są często dobrą dokumentacją: to nie jest zbyt dobrze komentowane, ale styl programowania jest zrozumiały. Możesz spróbować obejrzeć jak as86 jest używany w Tunes 0.0.0.25...

Co jeśli nie mogę już skompilować Linux-a z nową wersją ?

Linus jest zasypywany listami i moja łata kompilująca Linux-a z Linuxowym a.out as86 chyba do niego nie dotarła (!) (od tłum. trudno to przetłumaczyć - proszę o poprawki). Teraz, nie powinno to mieć znaczenia: trzymaj tylko as86 z pakietu bin86 w /usr/bin i daj zainstalować bcc dobry as86 w /usr/local/libexec/i386/bcc/as gdzie powinien być. Nie będziesz nigdy wołał wprost tego ``dobrego'' as86, ponieważ bcc robi wszystko właściwie, włączając konwersję to Linux-owego a.out, gdy jest wywołany z właściwymi opcjami; więc assembluj pliki wyłącznie z bcc jako głownym assemblerem, nie bezpośrednio z as86.

3.6 INNE ASSEMBLERY

To są inne, nieregularne, opcje, w przypadku, gdy powyższe cię niesatysfakcjonowały (dlaczego?), których nie zalecam w przypadku użytkowania (?), ale mogę udowodnić użyteczność jeśli assembler musi być zintegrowany w oprogramowaniu które rozwijasz (np. OS lub aplikacje rozwojowe).

Win32Forth assembler

Win32Forth jest wolnym 32-bitowym systemem ANS FORTH który działa pod Win32s, Win95, Win/NT. Zawiera wolny 32-bitowy assembler (zawiera przed/przyrostkową składnię) zintegrowany w języku FORTH. Przetwarzanie makr jest przez pełną moc języka FORTH; jakkolwiek, jedynym wspieranym wejścia i wyjścia jest Win32For (żadnego zrzutu do plików .obj -- możesz oczywiście dodać to samemu). Znajdziesz to na ftp://ftp.forth.org/pub/Forth/win32for/

Terse

Terse jest narzędziem programowania dostarczającym NAJBARDZIEJ zwartą składnie assemblera dla rodziny x86! Zobacz http://www.terse.com. Mówiono, że jest gdzieś jakiś wolny klon który został porzucony po pustych pretensjach, że składnia powinna być własnością autora; i zapraszam cię do przejęcia tego, jeśli taka składnia cię interesuje.

Nie-wolne i/lub Nie-32bitowe x86 assemblery.

Możesz znaleźć więcej o nich, wraz z podstawami programowania w assemblerze x86 w FAQ Raymond'a Moon'a dla comp.lang.asm.x86 http://www2.dgsys.com/~raymoon/faq/asmfaq.zip

Zapamiętaj, że wszystkie bazujace na DOS-ie assemblery powinny pracować w Linuxowym emulatorze DOS-u tak dobrze jak inne podobne emulatory, więc jeśli już masz jakiś możesz go nadal używać w prawdziwym OS. Ostatnie assemblery bazujące na DOS-ie także wspierają COFF i/lub inne formaty plików obiektowych, które są wspierane przez bibliotekę GNU BFD, więc możesz używać ich razem z wolnymi 32-bitowymi wolnymi narzędziami, być może używająć GNU objcopy (część binutils) jako filtr konwertujący.

4. METAPROGRAMOWANIE/MAKROPRZETWARZANIE

Assemblacja programów jest nudna, ale do krytycznych części programów.

Powinieneś używać właściwego narzędzia do właściwego zadania, więc nie wybieraj assemblacji kiedy nie jest stosowna; C, OCAML, perl, Scheme, mogą być lepszym wyborem dla większości twojego programowania.

Jakkolwiek, są wypadki gdy te narzędzia nie dają ci wystarczającej kontroli nad maszyną, i assemblacja jest wtedy użyteczna i konieczna. W takich wypadkach, docenisz system makroprzetwarzania i metaprogramowania które pozwolą ci wracać do raz przygotowanych wzorców z których każdy z nich jest przygotowany jako wielokrotna definicja, co pozwala bezpiecznie programować i automatycznie przechodzić modyfikację takich wzorców itd. "Goły" assembler jest często niewystarczający, nawet jeśli chcesz robić tylko małe operacje w połączeniu z C.

4.1 Co jest zintegrowane w powyższym

Tak, wiem że ta sekcja nie zawiera użytecznych informacji. Masz swobodę do prowadzenia jej, jeśli odkryjesz coś ciekawego...

GCC

GCC pozwala (i wymaga) wyspecyfikować ograniczenia rejestrów w twoim kodzie ``inline assembly'', więc optymalizer zawsze wie o tym. W ten sposób, assemblacja kodu inline jest tak naprawdę realizowana przez wzorce, a nie wymuszana.

Później możesz umieścić twój kod assemblera w makrach CPP, i funkcjach inline w C, więc każdy może użyć go jako funkcje w C lub makro.

Funcje inline są bardzo podobne do makr, ale są czasami czystsze w użyciu. Strzeż się tych wypadków, kod będzie zduplikowany, tak więc tylko lokalne etykiety (w stylu 1:) powinny być definiowane w kodzie assemblera. Jakkolwiek, makro powinno pozwolić nazwie dla nie lokalnej etykiety być przekazaną jako parametr (lub inaczej, powinienes używać dodatkowych meta-programowych metod). Zapamiętaj także, że rozejście się kodu jako inline assemblera będzie potencjalnie rozprowadzał nim błędy, więc uważaj dokładnie w kwestii ograniczeń rejestu w kodzie inline asm.

Ostatecznie, język C w sobie może być rozważany jako dobra abstrakcja programowania w assemblerze, co przyniesie ci ulgę z większością kłopotów z assemblacją.

Strzeż się pewnych optymalizacji które zawile przekazują argumenty do funkcji; przez rejestry mogą powodować niedopasowanie tych funkcji do wywołań z zewnętrznych (w szczególności ręcznie napisanego kodu assemblera) funkcji w standardowy sposób; atrybut "asmlinkage" może chronić funkcję przed kłopotami z taką flagą optymalizacyjną; obejrzyj źródła jądra linux-a dla przykładów.

GAS

GAS ma możliwość włączania pewnych makr, jak opisano w dokumentacji texinfo. Oprócz tego, podczas gdy GCC rozpoznaje pliki .s jako surowy assembler do wysłania do GAS, także rozpoznaje pliki .S jako pliki do przepuszczenia przez CPP przed wpuszczeniem ich do GAS. Znowu, znowu, zobacz źródła Linux-a dla przykładów.

GASP

Dodaje wszelkie użyteczne dodatki makroassemblacji do GAS. Obejrzyj jego dokumentację texinfo.

NASM

NASM także zawiera pewne wsparcie makr. Zobacz dokumentację. Jeśli masz jakieś dobre pomysły, możesz chcieć skontaktować się z autorami, jako, że oni aktywnie go rozwijają. W międzyczasie, zobacz poniżej zewnętrzne filtry.

AS86

On także ma trochę prostego wsparcia makrami, ale nie mogłem nigdzie znaleźć dokumentacji. Teraz źródła są bardzo przejrzyste, więc jeśli jesteś zainteresowany, łatwo powienieneś je zrozumieć. Jeśli potrzebujesz więcej niż tylko bazę, powinieneś użyć zewnętrznego filtra (zobacz poniżej).

INNE ASSEMBLERY

4.2 Zewnętrzne Filtry

Jakiekolwiek jest wsparcie makr twojego assemblera, lub jakikolwiek język używasz (nawet C !), jeśli język nie jest dla ciebie wystarczająco wyrazisty, możesz chcieć przepuścić pliki przez zewnętrzny filtr z regułami w Makefile takimi jak te:


%.s:    %.S other_dependencies
        $(FILTER) $(FILTER_OPTIONS) < $< > $@

CPP

CPP nie jest bardzo wyrazisty, ale wystarczający do wielu łatwych rzeczy, jest standardem, i jest przezroczyście wywoływany przez GCC.

Dla przykładu jego ograniczeń, nie możesz deklarować obiektów, takich że destruktory wywoływane automatycznie na końcu deklarowanego bloku; nie możesz więc zmieniać kierunki widoczności, itd.

CPP przychodzi wraz z kompilatorem C. Jeśli mógłbyś robić to bez niego, nie zawracaj sobie głowy przynoszeniem CPP (chociaż myślę jakbyś mógł).

M4

M4 daje ci pełną moc makroprzetwarzania, z językiem równym Turingowi, rekursją, wyrażeniami regularnymi, itd. Możesz robić wszystko czego CPP nie.

Zobacz macro4th/This4th z ftp://ftp.forth.org/pub/Forth/ in Reviewed/ ANS/ (?), lub źródła Tunes 0.0.0.25 jako przykłady zaawansowanego makroprogramowania z użyciem m4.

Jakkolwiek, jego niefunkcjonalna semantyka cytowania i odcytowywania zmusza cię do używania jawnego ogonkowo-kontynuacyjno-przejściowego (przyp. tłum.) stylu makr jeśli chcesz robić zaawansowane makro programowanie (czego przypomnieniem jest TeX -- BTW, czy ktoś próbował używać TeX-a jako makroprocesora do czegoś innego niż typesetting ?) To NIE jest gorsze niż CPP, który nie pozwala na cytowanie i rekursję.

Właściwą wersją m4 jest GNU m4 1.4 (lub późniejsza jeśli istnieje) która zawiera większość składników i mniej błędów lub ograniczeń. m4 został pomyślany jakko wolny do czegokolwiek ale prosty w użyciu, może być więc nadal dobry dla większości programów w assemblerze (chyba nie piszesz programów z milionami linii w assemblerze?).

Makroprzetwarzanie z twoim własnym filtrem

Możesz pisać twój własny prosty filtr rozszerzający makra z użyciem zwykłych narzędzi: perl, awk, sed, itd. To jest szybki sposób i możesz wszystko kontrolować. Ale oczywiście, moc makroprzetwarzania musi coś kosztować.

Metaprogramowanie

Zamiast używania zewnętrznych filtrów które rozszerzają makra, jedną z dróg jest pisanie programów, które piszą część lub całość innych programów.

Dla przykładu, mógłbyś użyć programu produkującego kod źródłowy

Pomyśl o tym!

Część wspomagająca z dostępnych kompilatorów

Kompilatory takie jak SML/NJ, Objective CAML, MIT-Scheme, itd, mają własną część wspomagającą assembler, którą możesz ale nie musisz wykorzystywać, jeśli zamierzasz generować kod półautomatycznie z wymienionych języków.

Zestaw narzędzi Machine-Code z New-Jersey

Jest projekt, używający języka programowania Icon, do budowy podstawowych rzeczy do produkcji manipulacji na kodzie assemblera. Zobacz http://www.cs.virginia.edu/~nr/toolkit/

Tunes

Projekt Tunes OS rozwija swój własny assembler jako rozszerzenie języka Scheme i jako część procesu rozwojowego. Nie działa to jeszcze, ale pomoc jest widziana.

Assembler manipuluje symbolicznymi drzewami składni, więc możesz prawie mieć podstawę do translacji składni assemblera, disassembler, wspólną część wspomagającą assembler/kompilator, itd. Także, pełna moc języka Scheme czyni go nie do pokonania z makroprzetwarzaniem/metaprogramowaniem.

http://www.tunes.org/

5. KONWENCJE WYWOŁAŃ

5.1 Linux

Połączenie z GCC

To jest preferowany sposób. Sprawdź dokumentację i przykłady GCC z plików .S jądra Linux-a które są przepuszczane przez gas (nie takie, które są przepuszczane przez as86).

32-bitowe argumenty są odkładane na stos w odwrotnej kolejności występowania (stąd dostęp / pobieranie jest we właściwej kolejności), zwracając bliski 32-bitowy adres. %ebp, %esi, %edi, %ebx są zapamiętywane, inne rejestry też są zapamiętywane podczas wywołania; %eax jest używany do przechowywania wyniku, a %edx:%eax do przechowywania wyników 64-bitowych.

FP stack: Nie jestem pewien, ale myślę że wynik jest w st(0), cały stos jest zapamiętany.

Pamiętaj, że GCC ma opcje modyfikujące konwencje wywołań przez rezerwowanie rejestrów, przekazywanie argumentów w rejestrach, nie używanie FPU, itd. Sprawdź strony .info i386.

Pamiętaj, że musisz zadeklarować atrybut cdecl dla funkcji używających standardowej konwencji wywołań GCC (nie wiem co daje użycie zmodyfikowanej konwencji wywołań). Zobacz w stronach info GCC sekcję: C Extensions::Extended Asm::

ELF kontra a.out - problemy

Pewne kompilatory poprzedają podkreśleniem każdy symbol, podczas gdy inne nie.

W szczególności, Linux-owy GCC a.out ma takie poprzedniki, podczas gdy Linux-owy ELF GCC nie.

Jeśli musisz poradzić sobie z wykorzystaniem obu formatów zobacz jak robią to istniejące pakiety. Dla przykładu, weź stare drzewo źródłowe Linux-a z pakietami Elk, qthreads lub OCAML...

Możesz także nadpisać niejawnie C->asm zmieniając nazwę przez wstawienie wyrażeń takich jak to


        void foo asm("bar") (void);

by upewnić się, że wywołanie funkcji C foo będzie zabronione w assemblerze.

Zapamiętaj, że program objcopy, z pakietu binutils, powinien pozwolić ci przekonwertować obiekty a.out w obiekty ELF, i być może w przeciwną stronę także, w pewnych wypadkach. Bardziej ogólnie, program ten realizuje konwersję formatów wielu plików.

Bezpośrednie wywołania systemowe Linux-a

To NIE jest rekomendowane, ponieważ konwencje zmieniają się od czasu do czasu od jądra do jądra (cf L4Linux), dodatkowo to nie jest przenośne, i niezyskowne w pisaniu biorąc pod uwagę libc, I wyłącza poprawki i rozszerzenia które pojawiają się w libc, takie, jak np. biblioteka zlibc, która w locie przezroczyście dekompresuje spakowane gzip-em pliki. Standardem i rekomendowaną drogą wywołań systemowych usług Linux-a jest i tak zostanie, przejście przez libc.

Obiekty dzielone powinny trzymać twoje programy małymi. I jeśli naprawdę chcesz mniejszych binariów, używaj #! , z interpretera mającego nad sobą wszystko czego nie chcesz w swoich binariach.

Teraz, jeśli z pewnych powodów nie chcesz linkować programów z libc weź się za nią i zrozum jak działa! Po tym wszystkim, nadal zamierzasz zamienić ją ?

Możesz zerknąć także jak mój eforth 1.0c robi to.

Źródła Linux-a są także użyteczne, szczególnie plik nagłówkowy asm/unistd.h który opisuje jak wywoływać funkcje systemowe... Podstawowo, wywołujesz int $0x80 z __NR_numerem funkcji systemowej (z asm/unistd.h) w %eax, i parametrami (do pięciu) w %ebx, %ecx, %edx, %esi, %edi. Rezultat jest zwracany w %eax z wartością ujemną w przypadku błędu której przeciwną wartość libc umieszcza w errno. Stos użytkownika jest nietknięty więc nie musisz mieć go właściwego podczas wywołania systemowego.

I/O pod Linux-em

Jeśli chcesz korzystać bezpośrednio z I/O pod Linux-em jest coś prostego co nie uzależnia od OS, i powinieneś obejrzeć IO-Port-Programming mini-HOWTO; lub potrzebuje to sterownik urządzenia, powinieneś spróbować nauczyć się o łamaniu jądra, rozwijaniu sterowników urządzeń, modułów jądra itd, dla których są inne wspaniałe HOWTO i dokumenty z LDP.

W szczególności, jeśli chcesz zająć się programowaniem Grafiki przyłącz się do projektu GGI: http://www.ggi-projectorg/

Jakkolwiek, we wszystkich przypadkach, zrobisz lepiej używając GCC inline assembly z makrami z linux/asm/*.h, niż pisząc pliki źródłowe w samym assemblerze.

Dostęp do 16-bitowych sterowników z Linux-a/i386

Taka rzecz jest teoretycznie możliwa (dowód: zobacz jak DOSEMU może selektywnie dawać dostęp portów do urządzeń programom), i słyszałem pogłoskę że ktoś gdzieś już to zrobił (w sterowniku PCI? W dostępie do VESA ? ISA PnP ? nie wiem). Jeśli masz więcej precyzyjnych informacji na ten temat będa mile widziane. Jakkolwiek, by uzyskać więcej informacji dobrymi miejscami są źródła jądra Linuxa, źródła DOSEMU (i innych programów w DOSEMU repository), oraz źródła różnych niskopoziomowych programów działających pod Linux-em... (być może GGI jeśli wspiera standard VESA).

Zasadniczo, musisz używać 16-bitowego trybu chronionego lub trybu vm86.

Na początku jest w miarę prosto to ustawić, ale będzie to działać tylko z dobrze-zrobionym kodem The first is simpler to setup, but only works with well-behaved code nie wykorzystującym jakiejkolwiek arytmetyki segmentowej that won't do any kind of segment arithmetics lub bezwzględnego adresowania segmentu (w szczególności adresowania segmentu 0), or absolute segment addressing (particularly addressing segment 0), do czasu zmian że wszystkie używane segmenty mogą być ustawione w zaawansowany sposób w LDT.

Później pozwala się na większą zgodność z vanilla 16-bitowym otoczeniem (? przyp.tłum.), ale wymaga to bardziej skomplikowanej manipulacji.

W obu przypadkach, przed wykonaniem skoku do 16-bitowego kodu musisz

I znowu, ostrożnie czytaj źródła do rzeczy zawartych w powyższych informacjach o magazynie DOSEMU, w szczególności te mini-emulatory do uruchomiania ELKS i/lub prostych programów .COM pod Linux-em/i386.

5.2 DOS

Większość DOS-owych extenderów zawiera interfejs do usług DOS-a. Poczytaj dokumentacje na ich temat, ale często, symulują one tylko int $0x21 i inne, więc robisz ``jakbyś'' był w trybie rzeczywistym (mam wątpliwości czy nie są tylko łącznikami i rozszerzają rzeczy by pracowały z 32-bitowymi operandami; najczęściej są tylko przejściem w przerwanie do trybu rzeczywistego lub przez uchwyt vm86).

Dokumentacja na temat DPMI i inne (oraz znacznie więcej) możesz znaleźć na ftp://x2ftp.oulu.fi/pub/msdos/programming/

DJGPP przychodzi z własną (ograniczoną) glibc pochodną/podzestawem/wymienioną, także.

Jest możliwa cross-kompilacja z Linux-a do DOS-a, zobacz katalog devel/msdos/ najbliższej kopii FTP serwera sunsite.unc.edu Zobacz także ekstender-dosa MOSS z projektu Flux w utah.

Inne dokumenty i FAQ są bardziej skoncentrowane na DOS-ie. Nie zalecamy rozwoju pod DOS.

5.3 Winwybuchy i takie

(od tłum. Autor tego dokumentu nie przepada za Windows, słusznie zresztą, i dlatego część tej podsekcji nie będzie mile widziana przez zwolenników tego systemu :). Hej, ten dokument zawiera tylko wolne oprogramowanie. Zadzwoń kiedy Winwybuchy staną się wolne, lub gdzie będą dostępne wolne narzędzia do tego!

No, po tym wszystkim, jest : Cygnus Solutions rozwijający bibliotekę cygwin32.dll, dla programów GNU to uruchomienia pod platformami MakroGówna.

Jakkolwiek, możesz używać GCC, GAS, wszytkich narzędzi GNU, i wielu innych Unix-owych aplikacji. Zerknij na ich stronę domową. Ja (Faré) nie zamierzam rozszerzać Losedoze (od tłum. Windows -> Windoze -> Losedoze (Lose) - przegrywać) programowania. ale jestem pewny że wszędzie możesz znaleźć pełno dokumentów na tem temat...

5.4 Twój własny OS

Kontrola jest tym co przyciąga wielu programistów do assemblacji, chcących najczęściej rozwijać OS co prowadzi lub pochodzi od łamania w assemblerze. Zapamiętaj, że każdy system pozwalający na samorozwój może być określony jako "OS" nawet mimo tego, że może chodzić "nad" pracującym systemem z wielozadaniowością lub I/O (takim jak Linux na Mach lub OpenGenera na Unix-ie), itd. Stąd, dla łatwiejszego usuwania błędów, możesz rozwijać twój ``OS'' najpierw jako proces chodzący pod Linux-em (pomimo powolnego działania), a potem użyć Flux OS kit (co daje możliwość użycia sterowników Linux-a i BSD w twoim własnym OS) by zrobić go niezależnym. Gdy twój OS jest stabilny, jest jeszcze czas by napisać sterowniki jeśli naprawdę to lubisz.

To HOWTO nie zawiera wewnątrz tematów takich jak kod Boot loadera & wchodzenie w tryb 32-bitowy, Zarządzanie Przerwaniami, Podstawy o intelowskim ``trybie chronionym'' lub ``V86/R86'', definiowania twoich formatów obiektów i konwencji wywołań. Głównym miejscem gdzie możesz znaleźć pochodne informacje o tym wszystkim to kody źródłowe istniejących OS i bootloaderów. Masa wskaźników jest na poniższej stronie WWW: http://www.tunes.org/~tunes/doc/Review/OSes.html

6. DO ZROBIENIA & WSKAZANIA

Author's .sig:

## Faré | VN: ĐŁng-Vű Bân   | Join the TUNES project!  http://www.tunes.org/ ##
## FR: François-René Rideau |    TUNES is a Useful, Not Expedient System     ##
## Reflection&Cybernethics  | Project for a Free Reflective Computing System ##

7. Od tłumacza

To jest pierwsze tłumaczenie tego HOWTO. Z pewnością zawiera ono masę błędów i niektóre sentencje mogą mieć inne znaczenie niż ja im nadałem. Dlatego proszę o email jeśli znajdziesz jakieś błędy (merytoryczne, gramatyczne i inne). Postaram się poprawić dokument w jak najkrótszym czasie i opublikować. Uwagi i komentarze ślij na Zbigniew Michał Kempczyński. Szczególne podziękowania składam mojej koleżance Annie Dzieniszewskiej za pomoc w trudnych gramatycznych kawałkach tego tekstu. Jeśli ktoś wie jak przetłumaczyć Legal Blurp to proszę o email.

doc-linux-pl-2002.06.14.orig/html/Beowulf-HOWTO.pl.html0100644000175000017500000014550706773242740021163 0ustar covencoven Beowulf HOWTO

Beowulf HOWTO

Autor: Jacek Radajewski i Douglas Eadline
v1.1.1, 22 październik 1998
Wersja polska: Adam Byrtek alpha@irc.pl
v1.0, lipiec 1999


Ten dokument jest wprowadzeniem do architektury superkomputerów Beowulf i dostarcza podstawowych informacji na temat programowania równoległego, wraz z odnośnikami do bardziej szczegółowych dokumentów oraz stron WWW.

1. Wstęp

1.1 Zastrzeżenie

Nie ponosimy żadnej odpowiedzialności za jakiekolwiek błędne informacje zawarte w tym dokumencie, ani za uszkodzenia które mogą one spowodować.

1.2 Prawa autorskie

Copyright © 1997 - 1998 Jacek Radajewski and Douglas Eadline. Udzielono zezwolenia na dystrybucję i modyfikowanie tego dokumentu zgodnie z licencją GNU General Public Licence.

1.3 Informacje o dokumencie

Jacek Radajewski rozpoczął pracę nad tym dokumentem w październiku 1997, niedługo potem dołączył do niego Douglas Eadline. W przeciągu kilku miesięcy dokument Beowulf HOWTO znacznie się rozrósł, i w sierpniu 1998 został podzielony na trzy dokumenty: Beowulf HOWTO, Beowulf Architecture Design HOWTO, oraz Beowulf Installation and Administration HOWTO. Wersja 1.0.0 Beowulf HOWTO została wydana w ramach Linux Documentation Project (Projektu Dokumentacji Linuxa) 11 października 1998. Mamy nadzieję, że to jedynie początek tego, co stanie się wkrótce Beowulf Documentation Project (Projektem Dokumentacji Beowulfa).

1.4 Informacje o autorach

1.5 Podziękowania

Pisanie Beowulf HOWTO było długim procesem, zakończonym dzięki wielu osobom. Chciałem podziękować następującym ludziom za pomoc i wkład w ten dokument.

2. Wstęp

Jako że wydajność sprzętu komputerowego i sieciowego wciąż rośnie, a jego ceny spadają, bardziej praktyczne niż kupowanie bardzo kosztownego superkomputera staje się budowanie równoległych systemów obliczeniowych ze składników dostępnych w każdym sklepie. W rzeczywistości wskaźnik wydajności do ceny maszyny typu Beowulf jest od trzech do dziesięciu razy wyższy niż tradycyjnych superkomputerów. Architektura Beowulf jest łatwo skalowalna, łatwa w budowie i płaci się jedynie za sprzęt, jako że większość oprogramowania jest darmowa.

2.1 Kto powinien czytać ten dokument?

To HOWTO jest zaprojektowane dla osoby mającej przynajmniej podstawowe doświadczenie z systemem operacyjnym Linux. Znajomość technologii Beowulf czy rozumienie bardziej złożonych koncepcji związanych z systemami operacyjnymi i sieciami nie jest konieczne, ale podstawowa wiedza o przetwarzaniu równoległym będzie przydatna (w końcu musisz mieć jakiś powód, czytając ten dokument). To HOWTO nie odpowie na wszystkie możliwe pytania na temat Beowulf'a, ale być może da ci pomysły i poprowadzi we właściwym kierunku. Celem tego dokumentu jest udzielenie podstawowych informacji, oraz odnośników do bardziej zaawansowanych dokumentów.

2.2 Czym jest Beowulf?

Famed was this Beowulf: far flew the boast of him, son of Scyld, in the Scandian lands. So becomes it a youth to quit him well with his father's friends, by fee and gift, that to aid him, aged, in after days, come warriors willing, should war draw nigh, liegemen loyal: by lauded deeds shall an earl have honor in every clan. Beowulf to najstarszy zachowany poemat epicki w języku angielskim. Jest to opowieść o bohaterze dysponującym wielką siłą i odwagą, który pokonał potwora zwanego Grendel. Patrz do działu Historia aby dowiedzieć się więcej o walecznym Beowulf'ie.

Prawdopodobnie istnieje co najmniej tyle definicji Beowulf'a, ile ludzi którzy budowali lub korzystali z architektury superkomputera Beowulf. Niektórzy twierdzą że system może zostać nazwany Beowulf tylko jeśli został zbudowany tak samo, jak oryginalna maszyna NASA. Inni zmierzają do drugiej skranności, nazywając imieniem Beowulf każdy system stacji roboczych wykonujących kod równoległy. Moja definicja Beowulf'a mieści się mniej więcej pośrodku, i jest oparta na wielu opiniach z listy dyskusyjnej Beowulf'a:

Beowulf to wielo-komputerowa architektura która może zostać użyta do obliczeń równoległych. Jest to system, który na ogól składa się z jednego węzłą-serwera i jednego lub więcej węzła-klienta połączonego przez Ethernet lub jakąś inną sieć. Jest to system zbudowany w oparciu o powszechnie dostępne komponenty sprzętowe, jak każdy PC zdolny do uruchomienia Linuxa, standardowe karty Ethernet i switch'e. Nie zawiera żadnych unikalnych komponentów sprzętowych i jest łatwy w tworzeniu. Beowulf korzysta również ze zwykłego oprogramowania, jak system operacyjny Linux, Parallel Virtual Machine (PVM) oraz Message Passing Interface (MPI). Węzeł-serwer kontroluje cały klaster i udostępnia pliki klientom. Pełni on także funkcję konsoli klastra i jest jego bramą do zewnętrznego świata. Duże maszyny Beowulf mogą posiadać więcej niż jeden węzeł-serwer, oraz inne węzły stworzone dla specyficznych zadań, na przykład konsole lub stacje monitorujące. W większości przypadków węzły-klienci w systemie Beowulf są głupie, im głupsze tym lepiej. Węzły są konfigurowane i kontrolowane przez węzeł-serwer, i robią tylko to, co kazano im robić. W konfiguracji bezdyskowej klienci nie znają nawet swojego adresu IP lub nazwy, dopóki serwer im ich nie poda. Jedną z podstawowych różnic pomiędzy Beowulf'em a architekturą Cluster of Workstations (COW) jest to, że Beowulf zachowuje się bardziej jak jedna maszyna, niż wiele stacji roboczych. W większości przypadków węzły-klienci nie posiadają klawiatur czy monitorów, a dostęp do nich jest możliwy jedynie przez odległe logowanie bądz opcjonalny terminal szeregowy. Wezły Beowulf można sobie wyobrazić jako pakiej CPU + pamięć, który może zostać podłączony do klastra, tak jak CPU czy moduł pamięci może zostać dołączony do płyty głównej.

Beowulf to nie żaden specjalny pakiet oprogramowania, nowa topologia sieci czy nowa nakładka na jądro. Beowulf to technologia łączenia komputerów Linux aby utworzyć równoległy, wirtualny superkomputer. Chociaż istnieje wiele pakietów oprogramowania, takich jak modyfikacje jądra, biblioteki PVM i MPI, narzędzia konfiguracyjne, które przyspieszają architekturę Beowulf, ułatwiają konfigurację i zwiększają użyteczność, jednak możliwe jest zbudowanie maszyny Beowulf wykorzystując standardową dystrybucję Linux, bez żadnego dodatkowego oprogramowania. Jeśli masz przynajmniej dwa usieciowione komputery Linux które dzielą przynajmniej katalog /home poprzez NFS, i ufają sobie nawzajem na tyle, aby uruchomić odległą powłokę (rsh), możesz się upierać że dysponujesz prostą, dwu-węzłową maszyną Beowulf.

2.3 Klasyfikacja

Systemy Beowulf za konstruowane z różnorodnych części. W celu zwiększenia możliowści obliczeniowych czasami korzysta cię z pewnych niedostępnych powszechnie komponentów (tzn. produkowanych przez pojedynczego producenta). W celu odróżnienia osiągów różnych typów systemów, i ułatwienia dyskusji na ich temat, proponujemy następującą klasyfikację:

BEOWULF KLASY I:

Maszyna tej klasy jest zbudowana wyłącznie z powszechnie dostępnych komponentów. W celu sprawdzenia powszechności elementów przeprowadzmy test przy użyciu "Computer Shopper" (calowej grubości miesięcznika/katalogu systemów PC i komponentów). Test ten wygląda następująco:

Beowulf KLASY I to maszyna, która może zostać skonstruowana z części znalezionych przynajmiej w 3 krajowych/ogólnoświatowych katalogach reklamowych.

Zalety systemów KLASY I to:

Wady systemów KLASY I to:

BEOWULF KLASY II

Beowulf KLASY II to po prostu każda maszyna która nie przejdzie testu z użyciem "Computer Shopper". To nie jest coś złego, jest to jedynie klasyfikacja maszyny.

Zalety systemów KLASY II to:

Wady systemów KLASY II to:

Żadna KLASA nie jest lepsza niż inna. Wszystko zależy wyłącznie do potrzeb i możliwości finansowych. Ta klasyfikacja została utworzona jedynie w celu ułatwienia i większej zwięzłości dyskusji na temat systemów Beowulf. Dział "Projektowanie systemu" może pomóc ustalić, który typ systemu pardziej pasuje do twoich potrzeb.

3. Ogólny opis architektury

3.1 Jak to wygląda?

Myślę, że najlepszym sposobem opisu architektury superkomputera Beowulf jest użycie przykładu, który jest bardzo podobny do prawdziwego Beowulf'a, ale znany większości administratorów systemu. Przykład najbliższy Beowulf'owi to laboratorium komputerów Unix z serwerem i klientami. Aby być bardziej szczegółowym użyję jako przykładu laboratorium komputerów DEC Alpha na Katedrze Nauk Komputerowych, USQ. Serwer nazywa się beldin, a klienci nazywają się scilab01, scilab02, aż do scilab20. Wszyscy klienci mają zainstalowaną lokalną kopię systemu operacyjnego Digital Unix 4.0, ale korzystają z katalogów użytkownika (/home) oraz /usr/local serwera poprzez NFS (Network File System). Każdy klient posiada wpis dla serwera i wszystkich pozostałych klientów w swoim pliku /etc/hosts.equiv, więc wszyscy klienci mogą uruchomić rsh na każdym innym. Serwer jest jednocześnie serwerem NIS dla całego laboratorium, więc informacje księgowania są identyczne dla wszystkich maszyn. Osoba może siedzieć przed konsolą scilab02, zalogować się i pracować w tym samym środowisku, w jakim pracowała by gdyby zalogowała się z serwera bądz z scilab15. Spowodowane jest to tym, że system operacyjny na wszystkich komputerach jest zainstalowany i skonfigurowany w ten sam sposób, a katalogi użytkownika /home i /usr/local mieszczą się fizycznie na serwerze, i są udostępniane przez NFS. Więcej informacji o NIS i NFS znajdziesz w dokumentach HOWTO NIS oraz NFS.

3.2 Jak wykorzystać pozostałe węzły?

Gdy mamy już jakieś pojęcie o architekturze systemu, możemy spojrzeć jak wykorzystać dostępne cykle CPU maszyn w laboratorium komputerowym. Każda osoba może zalogować się na dowolnej maszynie, i uruchomić program i swoim katalogu domowym, ale może także wykonać to zadanie na innej maszynie wywołując po prostu odległą powłokę. Przykładowo załóżmy że chcemy obliczyć sumę pierwiastków kwadratowych wszystkich liczb całkowitych od 1 do 10 włącznie. Piszemy prosty program nazwany sigmasqrt (patrz kod źródłowy), który wykonuje oblicznia. Aby obliczyć sumę pierwiastków kwadratowych liczb od 1 do 10 wykonujemy:

[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 10
22.468278

real    0m0.029s
user    0m0.001s
sys     0m0.024s
Komenda time pozwala nam śledzić upływ czasu podczas wykonywania zadania. Jak widać, ten przykład zajął jedynie mały ułamek sekundy (0.029s), ale co będzie jeśli spróbujemy dodać pierwiastki kwadratowe liczb od 1 do 1000000000? Spróbujmy, ponownie obliczając upływ czasu.

[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 1000000000
21081851083600.559000

real    16m45.937s
user    16m43.527s
sys     0m0.108s

Tym razem wykonianie programu trwało znacznie dłużej. Oczywistym pytaniem jest co możemy zrobić aby przyspieszyć wykonanie programu? Jak możemy zmienić sposób wykonania zadania aby zmniejszyć upływ czasu? Oczywistą odpowiedzią jest rozbicie zadania na wiele pod-zadań równoległych na wszystkich komputerach. Możemy rozbić jedno duże zadanie dodawania na 20 części, obliczając jeden zakres pierwiastków kwadratowych i dodając je na każdym węźle. Gdy wszystkie węzły zakończą obliczenia i zwrócą rezultaty, 20 liczb powinno zostać dodanych do siebie aby otrzymać końcowy wynik.

[jacek@beldin sigmasqrt]$ mkfifo output
[jacek@beldin sigmasqrt]$ ./prun.sh & time cat output | ./sum
[1] 5085
21081851083600.941000
[1]+  Done                    ./prun.sh

real    0m58.539s
user    0m0.061s
sys     0m0.206s

Tym razem zajęło to około 58.5s. Jest to czas od rozpoczęcia zadania do zakończenia go przez wszystkie węzły i zwrócenia rezultatu przez potok. Ten czas nie zawiera końcowego dodania 20 liczb, ale to jedynie mały ułamek sekundy, który może zostać zignorowany. Zauważamy że nastąpiła znaczna poprawa przy równoległym wykonaniu zadania. Równoległe zadanie wykonało się ponad 17 razy szybciej, co jest bardzo dobrym wynikiem przy 20-krotnym zwiększeniu ilości CPU. Powyższy przykład ma na celu zilustrowanie najprostszej metody zmiany zwykłego kodu na równoległy. W praktyce takie proste przypadki są niezwykle rzadkie, i różne techniki (takie jak API PVM i PMI) są wykorzystywane do osiągnięcia równoległości.

3.3 Czym Beowulf różni się od COW?

Laboratorium komputerowe opisane powyżej jest doskonałym przykładem klastra stacji roboczych (COW). Tak więc co jest szczególnego w Beowulf'ie, i w jaki sposób różni się on od COW? Prawdą jest, że nie jest to wielka różnica, ale Beowulf posiada kilka unikalnych cech. Po pierwsze, w większości przypadków węzły-klienci klastra Beowulf nie posiadają klawiatury, myszy, karty graficznej czy monitora. Dostęp do węzłów-klientów odbywa się poprzez odległe połączenia z węzła-serwera, dedykowanego węzła-konsoli lub konsoli szeregowej. Jako że węzły-klienci nie muszą mieć dostępu do maszyn spoza klastra, ani maszyny spoza klastra nie muszą mieć bezpośredniego dostępu do węzłów-klientów, powszechnie stosowaną praktyką jest nadawanie węzłom-klientom prywatnych adresów IP, z prywatnych zakresów takich jak 10.0.0.0/8 czy 192.168.0.0/16 (RFC 1918 http://www.alternic.net/rfcs/1900/rfc1918.txt.html). Na ogół jedyną maszyną podłączoną do świata zewnętrznego za pomocą drugiej karty sieciowej jest węzeł-serwer. Najczęściej korzysta się z systemu poprzez bezpośredni dostęp do konsoli serwera, lub poprzez telnet czy odległe logowanie na serwer z odległej stacji roboczej. Na serwerze użytkownicy mogą edytować i kompilować swój kod, a także uruchamiać procesy na wszystkich węzłach w klastrze. W większości przypadków systemy COW są używane do obliczeń równoległych w nocy i w weekendy, gdy użytkownicy nie korzystają ze swoich stacji roboczych do pracy, wykorzystując w ten sposób z niepotrzebne cykle procesora. Z kolei maszyna Beowulf jest maszyną dedykowaną do przetwarzania równoległego, i zoptymalizowaną w tym celu. Beowulf zapewnia także większy współczynnik ceny do wydajności, jako że jest zbudowany z ogólnie dostępnych komponentów i korzysta na ogół z darmowego oprogramowania. Beowulf ma także więcej cech pojedynczego systemu, które pomagają użytkownikom dostrzegać klaster Beowulf jako pojedynczą obliczeniową stację roboczą.

4. Planowanie systemu

Przed zakupem sprzętu dobrym pomysłem może okazać się przemyślenie planu gotowego systemu. Przy tworzeniu systemu Beowulf należy wziąść pod uwagę przede wszystkim dwie główne kwestie sprzętowe: typ komputerów/węzłów których masz zamiar użyć, oraz sposób ich połączenia. Istnieje jedna kwestia programowa, która może wpłynąć na decyzję w sprawie sprzętu: biblioteka komunikacyjna lub API. Bardziej szczegółowe rozważania na temat sprzętu i oprogramowania znajdują się w innym miejscu tego dokumentu.

Mimo że wybór nie jest zbyt wielki, istnieją jednak pewne istotne decyzje które muszą zostać podjęte przy konstruowaniu systemu Beowulf. Jako że dziedzina wiedzy (bądź sztuka) "przetwarzanie równoległe" posiada wiele możliwych interpretacji, poniżej zamieszczone wprowadzenie do niej. Jeśli nie jesteś zainteresowany takim materiałem wprowadzającym, możesz pominąć tą sekcję, jednak zaleca się, abyś przeczytał sekcję Suitability zanim podejmiesz ostateczne decyzje sprzętowe.

4.1 Krótkie wprowadzenie do przetwarzania równoległego.

Ta sekcja stanowi wprowadzenie do koncepcji przetwarzania równoległego. NIE jest to wyczerpujący materiał, jest to jedynie krótki opis spraw, które mogą być istotne dla projektanta i użytkownika Beowulf'a.

Podczas projektowania i budowania Beowulf'a, wiele z opisanych poniżej zagadnień może okazać się istotnych dla twoich decyzji. Ze względu na szczególne cechy komponentów superkomputera Beowulf, należy uważnie zastanowić się nad wieloma aspektami, dopóki jeszcze zależą one od ciebie. Wcale nie jest tak trudno zrozumieć podstawowe zagadnienia związane z przetwarzaniem równoległym. W rzeczywistości gdy już zrozumie się te zagadnienia, oczekiwania okażą się bardziej rzeczywiste i sukces będzie bardziej prawdopodobny. W przeciwieństwie do "świata sekwencyjnego", gdzie szybkość procesora jest najważniejszym aspektem, szybkość procesora w "świecie równoległym" jest tylko jednym z wielu aspektów wpływających na ogólną wydajność i efektywność systemu.

4.2 Metody przetwarzania równoległego

Przetwarzanie równoległe może zostać osiągnięte w różny sposób. Z perspektywy użytkownika istotne jest rozpatrzenie zalet i wad każdej metody. Poniższe działy próbują dostarczyć informacji na temat metod przetwarzania równoległego i stwierdzają, czy maszyna Beowulf podpada pod tę kategorię.

Po co więcej niż jeden procesor?

Odpowiedź na to pytanie jest bardzo istotna. Korzystanie z 8 procesorów aby uruchomić twój ulubiony edytor tekstów to lekka przesada. A co z serwerem www, bazą danych, programem renderującym? Może więcej CPU pomoże. A co ze złożoną symulacją, kodem dynamiki cieczy czy aplikacją górniczą? Dodatkowe CPU na pewno pomogą w tych przypadkach. Faktem jest że architektury wieloprocesorowe są wykorzystywane do rozwiązywania coraz większej liczby problemów.

Najczęściej następnym pytaniem jest: "Dlaczego potrzebuję dwóch czy czterech CPU? Po prostu poczekam na turbo-hiper układ 986." Istnieje kilka powodów:

  1. Podczas korzystania z wielozadaniowych systemów operacyjnych można robić więcej niż jedną rzecz w tym samym czasie. Jest to naturalna "równoległość", która może być łatwo wykorzystana przez więcej niż jeden tani CPU.
  2. Szybkość procesorów podwaja się co każde 18 miesięcy, ale co z prędkością pamięci i dysku twardego? Niestety te szybkości nie rosną tak szybko, jak szybkość CPU. Pamiętaj, że większość aplikacji wymaga dostępu do pamięci i twardego dysku. Wykonywanie zadań równolegle jest sposobem obejścia tych ograniczeń.
  3. Badania wskazują, że szybkość procesorów przestanie rosnąć dwukrotnie co 18 miesięcy po roku 2005. Istnieją pewne bardzo poważne przeszkody które należy pokonać aby utrzymać ten wskaźnik.
  4. Zależnie od aplikacji, przetważanie równoległe może przyspieszyć działanie od 2 do 500 razy (w pewnych przypadkach nawet więcej). Taka wydajność nie jest dostępna przy użyciu pojedynczego procesora. Nawet superkomputery, które kiedyś korzystały z bardzo szybkiego, specjalnego procesora teraz są budowane z wielu ogólnodostępnych CPU.

Jeśli do rozwiązania złożonego problemu potrzebujesz szybkości, przetwarzanie równoległe jest warte rozważenia. Ponieważ przetwarzanie równoległe może zostać zaimplementowane na różne sposoby, rozwiązanie problemu wymaga podjęcia pewnych bardzo ważnych decyzji. Te decyzje mogą drastycznie wpłynąć na przenośność, wydajność i koszt systemu.

Zanim dojdziemy do spraw technicznych, spójrzmy na realny problem dla przetważania równoległego, korzystając z przykładu który dobrze znamy -- oczekiwania w długich kolejkach w sklepie.

Sklep z przetwarzaniem równoległym

Rozważmy wielki sklep z ośmioma kasami zgrupowanymi razem na przedzie sklepu. Załóżmy że każda kasa/każdy kasjer jest CPU, a każdy klient jest programem komputerowym. Wielkość zamówienia każdego klienta jest rozmiarem programu komputerowego (ilością pracy). Te analogie mogą zostać wykorzystane do zilustrowania pojęć przetwarzania równoległego.

Jednozadaniowy system operacyjny

Tylko jedna kasa jest otwarta, i musi obsłużyć każdego klienta pojedynczo.

Przykład: MS-DOS

Wielozadaniowy system operacyjny

Otwarta jest jedna kasa, ale teraz przetwarzany jest tylko fragment zamówienia klienta, a następnie obsługiwany jest fragment zamówienia klienta następnego. Każdemu wydaje się, że wszyscy są obsługiwani jednocześnie, ale jeśli nie ma nikogo innego w kolejce klient zostanie obsłużony szybciej.

Przykład: UNIX, NT korzystający z jednego CPU

Wielozadaniowe systemy operacyjne z wieloma CPU

Teraz sklep dysponuje wieloma kasami. Każde zamówienie może zostać przetworzone przez odrębną kasę i kolejka może zostać obsłużona szybciej. Nazywane jest to SMP -- Symmetric Multi-processing. Mimo że istnieje wiele kas, to jeśli jesteś sam w kolejce, nie zostaniesz obsłużony szybciej, niż gdyby istniała tylko jedna kasa.

Przykład: UNIX oraz NT z wieloma CPU

Wątki w wielozadaniowym systemie operacyjnym z wieloma CPU

Jeśli podzielisz produkty w zamówieniu, być może zdołasz szybciej przejść przez kolejkę korzystając z kilku kas jednocześnie. Najpierw musimy założyć, że posiadasz dużą ilość towaru, ponieważ czas poświęcony na rozbijanie zamówienia musi zwrócić się przez korzystanie z wielu kas. Teoretycznie powinieneś przejść kolejkę n-razy szybciej niż poprzednio, gdzie `n' to ilość kas. Gdy kasjer musi podsumować zamówienie, może wymienić informację i komunikować się z wszystkimi innymi `lokalnymi' kasami. Kasy mogą nawet `zaglądać' do innych kas aby uzyskać informację, która przyspieszy ich pracę. Istnieje jednak limit ilości kas w jednym sklepie, aby praca przebiegała efektywnie.

Prawo Amdala także ogranicza prędkość programu do prędkości jego najwolniejszego, sekwencyjnego fragmentu.

Przykład: UNIX lub NT z wielona CPU na jednej płycie głównej uruchamiające programy wielo-wątkowe.

Wysyłanie komunikatów w wielozadaniowych systemach z wieloma CPU

Aby zwiększyć wydajność, sklep dodaje 8 kas na tyłach sklepu. Jako że nowe kasy są daleko od kas z przodu, kasjerzy muszą przekazywać sobie sumy cząstkowe przez telefon. Ta odległość zwiększa nieco opóźnienie w komunikacji między kasjerami, ale jeśli uda się zminimalizować komunikację, to wszystko jest w porządku. Jeśli masz naprawdę wielkie zamówienie, wymagające wszystkich kas jednocześnie, to przed obliczeniem zysków czasowych należy rozważyć opóźnienia komunikacji. W pewnych przypadkach sklep może posiadać pojedyncze kasy (lub zgrupowania kas) rozmieszczone na terenie całego sklepu -- każda kasa (lub zgrupowanie) musi komunikować się przez telefon. Jako że każdy kasjer może rozmawiać z dowolnym innym, nie jest istotne gdzie oni się znajdują.

Przykład: Jedna lub więcej kopii UNIX lub NT z wieloma CPU na tej samej lub innej płycie głównej, porozumiewających się poprzez komunikaty.

Powyższe scenariusze, mimo że niedokładne, są dobym przykładem ograniczeń nakładanych na system równoległy. W przeciwieństwie do pojedynczego CPU (lub kasy) komunikacja jest istotna.

4.3 Architektury przetwarzania równoległego

Popularne metody i architektury przetwarzania równoległego są zaprezentowane poniżej. Mimo że opis ten nie jest pod żadnym względem wyczerpujący, jest jednak wystarczający do zrozumienia podstaw projektu Beowulf.

Architektury sprzętowe

Istnieją dwa podstawowe sposoby łączenia sprzętu:

  1. Maszyny z pamięcią lokalną, komunikujące się przez komunikaty (klastry Beowulf)
  2. Maszyny z pamięcią dzieloną, komunikujące się przez pamięć (maszyny SMP)

Typowy Beowulf to zbiór jednoprocesorowych maszyn połączonych przez szybką sieć Ethernet, a więc jest systemem z własną pamięcią. System SMP to maszyna z pamięcią dzieloną, która może zostać wykorzystana do przetwarzania równoległego -- aplikacje równoległe komunikują się przez pamięć dzieloną. Tak jak w przykładzie sklepu, maszyny z pamięcią lokalną (pojedyncze kasy) są skalowalne do dużej liczby CPU, gdy liczba CPU maszyn z pamięcią dzieloną jest ograniczona przez pamięć.

Jest jednak możliwe połączenie wielu maszyn z pamięcią dzieloną aby utworzyć "hybrydową" maszynę z pamięcią dzieloną. Te hybrydowe maszyny wyglądają dla użytkownika jak pojedyncze, duże maszyny SMP i często zwane są maszynami NUMA (non uniform memory access -- nietypowy dostęp do pamięci), ponieważ globalna pamięć widoczna dla programisty i dzielona przez wszystkie CPU może być ukrywana. Jednak na pewnym poziomie maszyna NUMA musi przekazywać wiadomości pomiędzy lokalnymi obszarami pamięci dzielonej.

Możliwe jest także podłączenie maszyn SMP jako lokalnych węzłów obliczeniowych. Typowe płyty główne KLASY I mają 2 lub 4 procesory, jest to sposób zredukowania kosztów. Wewnętrzny scheluder Linuxa określa, w jaki sposób te CPU są dzielone. W tym przypadku użytkownik nie może określić odrębnego zadania dla konkretnego procesora SMP. Użytkownik może jednak rozpocząć dwa niezależne procesy lub proces wielowątkowy i spodziewać się poprawy wydajności w stosunku do systemu z pojedynczym CPU.

Programowe architektury API

Istnieją dwa podstawowe sposoby określania momentów zbieżnych w programie:

  1. Komunikaty wysyłane między procesorami
  2. Wątki systemu operacyjnego

Istnieją inne metody, ale powyższe są najszerzej wykorzystywane. Należy zapamiętać, że sposób określania zbieżności nie musi zależeć od warstwy sprzętowej. Zarówno komunikaty, jak i wątki mogą zostać zaimplementowane w systemach SMP, NUMA-SMP jak i klastrach -- mimo że, jak wyjaśniono poniżej, istotnymi kwestiami są efektywność i przenośność.

Komunikaty

Z punktu widzenia historii, technologia przekazywania komunikatów odzwierciedla projekty wczesnych komputerów równoległych z lokalną pamięcią. Komunikaty wymagają kopiowania danych, podczas gdy wątki korzystają z danych na miejscu. Tajność i szybkość kopiowania komunikatów to wartości ograniczające ten model. Komunikat jest stosunkowo prosty: jakieś dane oraz procesor docelowy. Najpopularniejsze API do przesyłania komunikatów to: PVM lub MPI. Przekazywanie komunikatów może zostać efektywnie zaimplementowane przy wykorzystaniu wątków, a komunikaty pracują równie dobrze na maszynach SMP i pomiędzy klastrami maszyn. Zaletą korzystania z komunikatów na maszynach SMP, w przeciwieństwie do wątków, jest to, że jeśli zdecydujesz się na korzystanie w przyszłości z klastrów, dodawanie maszyn i skalowanie aplikacji będzie bardzo łatwe.

Wątki

Wątki systemu operacyjnego zostały stworzone, ponieważ projekty SMP (symmetrical multiprocessing -- symetryczna wieloprocesowość) dopuszczały bardzo szybką komunikację poprzez pamięć dzieloną, oraz synchronizację pomiędzy zbieżnymi fragmentami programu. Wątki działają bardzo dobrze na systemie SMP, ponieważ komunikuje się on poprzez pamięć dzieloną. Z tego powodu użytkownik musi oddzielić dane lokalne od globalnych, w przeciwnym wypadku programy nie będą działać poprawnie. W przeciwieństwie do komunikatów, wiele operacji kopiowania może zostać wyeliminowanych przez użycie wątków, ponieważ dane są dzielone pomiędzy procesami (wątkami). Linux wspomaga wątki POSIX. W przypadku wątków problemem jest to, że trudno rozszerzyć ich zasięg poza maszynę SMP oraz, ponieważ dane ją dzielone pomiędzy procesory, koherencja pamięci podręcznej może doprowadzić do opóźnień. Efektywne rozciągnięcie wątków poza granicę SMP wymaga technologi NUMA, która jest kosztowna i nie wspomagana bezpośrednio przez Linuxa. Implementacja wątków poprzez wiadomości jest możliwa ( http://syntron.com/ptools/ptools_pg.htm), ale wątki są często nieefektywne gdy zaimplementowane przy użyciu komunikatów.

Można wyciągnąc następujące wnioski jeśli chodzi o wydajność:

          wydajność na     wydajność w     skalowalność
          maszynie SMP       klastrze
          -----------     ---------------  -----------
messages    dobra           najlepsza       najlepsza

threads     najlepsza        słaba*          słaba*

* wymaga kosztownej technologii NUMA.

Architektura aplikacji

Aby uruchomić aplikację równolegle na wielu CPU, musi ona zostać rozbita na konkurencyjne części. Standardowa jednoprocesorowa aplikacja nie będzie działać szybciej na wielu procesorach. Istnieją pewne narzędzia i kompilatory, które potrafią podzielić program, ale przekształcenie kodu na równoległy nie jest operacją "plug and play". Zależnie od aplikacji, może to być proste, ekstremalnie trudne a w pewnych przypadkach nawet niemożliwe, ze względu na zależności algorytmów.

Zanim zostaną omówione kwestie sprzętowe, koncepcja musi zostać wprowadzona. Before the software issues can be addressed the concept of Suitability needs to be introduced.

4.4 Suitability

Odpowiedzią na większość pytań dotyczących przetwarzania równoległego jest:

"Wszystko zależy od zastosowania."

Zanim przejdziemy do tego tematu, należy dokonać jeszcze jednego bardzo ważnego podziału -- różnicy pomiędzy KONKURENCYJNYM i RÓWNOLEGŁYM. Dla celów tej dyskusji zdefiniujemy te dwa pojęcia następująco:

KONKURENCYJNE części programu, to te, które mogą zostać wykonane niezależnie.

RÓWNOLEGŁE części programu, to te KONKURENCYJE części, które są wykonywane na osobnym procesorze w tym samym czasie.

Różnica jest bardzo ważna, ponieważ KONKURENCJA to własność programu, a efektywna RÓWNOLEGŁOŚĆ, to właśność maszyny. Na ogół wykonywanie RÓWNOLEGŁE powoduje przyspieszenie pracy. Czynnikiem ograniczającym wydajność systemu równoległego jest prędkość komunikacji i opóźnienie pomiędzy węzłami (opóźnienie występuje także w wielowątkowych aplikacji SMP, z powodu koherencji pamięci podręcznej). Większość programów testujących wydajność jest wysoce równoległa, a komunikacja i opóźnienia nie są wąskim gardłem. Ten tym zadania można nazwać "typowo równoległym". Inne aplikacje nie są takie proste i wywołanie KONKURENCYJNYCH części programu RÓWNOLEGLE może spowolnić go, zmniejszając tym samym zysk z innych KONKURENCYJNYCH części. Mówiąc prosto, koszt czasu komunikacji musi zwrócić się w oszczędnościach czasu obliczenia, w przeciwnym wypadku RÓWNOLEGŁE wykonanie KONKURENCYJNEJ części jest nieefektywne.

Zadaniem programisty jest stwierdzenie, które KONKURENCYJNE części programu POWINNY być wykonane RÓWNOLEGLE, a które NIE. Od odpowiedź na te pytania zależy EFEKTYWNOŚĆ aplikacji. Poniższy wykres podsumowuje sytuację:




         | *
         | *
         | *
 %       | *
 zasto-  |  *
 sowań   |  *
         |  *
         |  *
         |    *
         |     *
         |      *
         |        ****
         |            ****
         |                ********************
         +-----------------------------------
          czas komunikacji/czas przetwarzania

W idealnym komputerze równoległym, wskaźnik komunikacji/przetwarzania jest równy i wszystko, co jest KONKURENCYJNE może zostać zaimplementowane RÓWNOLEGLE. Niestety, rzeczywiste komputery równoległe, włączając w to maszyny z pamięcią dzieloną, podlegają efektom pokazanym na wykresie. Podczas projektowania Beowulfa, użytkownicy powinni zapamiętać ten wykres, ponieważ efektywność równoległa zależy do wskaźnika czasu komunikacji do czasu przetwarzania dla KONKRETNEGO KOMPUTERA RÓWNOLEGŁEGO. Aplikacje mogą być przenośne, ale nie można zagwarantować że będą efektywne na innej platformie.

NA OGÓŁ NIE ISTNIEJE PRZENOŚNY I EFEKTYWNY PROGRAM RÓWNOLEGŁY

Jest jeszcze jedna konsekwencja powyższego wykresu. Jako że efektywność zależy od wskaźnika komunikacji/przetwarzania, zmiana jedynie jednego elementu wskaźnika nie musi koniecznie powodować wzrostu szybkości. Zmiana prędkości procesora, nie zmieniając czasu komunikacji, może mieć nietypowy wpływ na program. Na przykład podwojenie albo potrojenie prędkości CPU, zachowując tę samą prędkość komunikacji, może sprawić, że poprzednio efektywne RÓWNOLEGŁE fragmenty programu staną się bardziej efektywne gdy zostaną uruchomione SEKWENCYJNIE. To znaczy uruchomienie poprzednio RÓWNOLEGŁYCH fragmentów jako SEKWENCYJNE może okazać się lepsze. Wykonywanie nieefektywnych części programu równolegle uniemożliwia uzyskanie maksymalnej prędkości. Tak więc dodając szybszy procesor, możesz spowolnić aplikację (CPU nie wykorzystuje swojej pełnej szybkości).

ZMIANA CPU NA SZYBSZY MOŻE SPOWOLNIĆ APLIKACJĘ

Podsumowując, aby wiedzieć, czy można wykorzystać środowisko równoległe, należy przyjrzeć się, czy konkretna maszyna pasuje do aplikacji. Musisz wziąść pod uwagę wiele kwestii, takich jak prędkość CPU, kompilator, API przekazywania komunikatów, sieć itd. Należy zauważyć, że zwykłe profilowanie aplikacji nie zamyka sprawy. Możesz zidentyfikować fragment programu wymagający wielu obliczeń, ale nie znasz kosztów komunikacji tego fragmentu. Może się zdarzyć, że koszty komunikacji sprawią, że kod równoległy nie będzie efektywny.

Ostatnia uwaga na temat pewnego niedomówienia. Często twierdzi się, że program "jest RÓWNOLEGŁY", ale w rzeczywistości jedynie zidentyfikowano KONKURENCYJNE fragmenty. Z powodów podanych powyżej program nie jest RÓWNOLEGŁY. Efektywna RÓWNOLEGŁOŚĆ jest własnością maszyny.

4.5 Pisanie i przenoszenie oprogramowania równoległego

Gdy zdecydujesz, że potrzebujesz przetwarzania równoległego i chcesz zaprojektować i zbudować Beowulfa, dobrym pomysłem jest kilka chwil zastanowienia nad aplikacją, z poszanowaniem wcześniejszych uwag.

No ogół możesz zrobić dwie różne rzeczy:

  1. Iść dalej i skonstruować Beowulfa KLASY I a następnie "dopasować" do niego swoją aplikację, lub korzystać z istniejącej równoległej aplikacji o której wiesz, że pracuje na Beowulfie (ale pamiętaj o kwestiach efektywności i przenośności poruszanych wcześniej).
  2. Przyjrzeć się aplikacjom które mają działać na Beowulfie i na ich podstawie dokonać wyboru sprzętu i oprogramowania.

W każdym z przypadków w pewnym momencie musisz zastanowić się nad kwestiami efektywności. Na ogół powinieneś zrobić trzy rzeczy:

  1. Wyznaczyć konkurencyjne części programu
  2. Obliczyć równoległą efektywność
  3. Opisać konkurencyjne części programu

Przyjrzyjmy się im po kolei.

Wyznaczanie konkurencyjnych części programu

Ten krok jest często nazywany "urównolegleniem programu". Decyzje podejmiemy dopiero w kroku 2. Teraz musisz jedynie wyznaczyć zależności pomiędzy danymi.

Z praktycznego punktu widzenia, aplikacje mogą wykazywać dwa typy konkurencji: obliczeń i wejścia/wyjścia. Mimo że w wielu wypadkach konkurencje obliczeń i wejścia/wyjścia są niezależne, to istnieją aplikacje, które wymagają obu. Istnieją narzędzia, które mogą wykonać analizę konkurencji istniejącej aplikacji. Wiele z tych narzędzi jest projektowanych dla FORTANa. Są dwa powody dla których używa się FORTAN: historycznie większość aplikacji obliczeniowych było pisanych w FORTANie oraz jest on łatwiejszy w analizie. Jeśli nie istnieją żadne narzędzia, to ten krok może okazać się dość trudny dla istniejących aplikacji.

Obliczanie efektywności równoległej

Bez pomocy narzędzi, ten krok wymagał by użycia metody prób i błędów, lub po prostu zgadywania. Jeśli bierzesz pod uwagę pojedynczą aplikację, postaraj się określić czy jest ograniczona przez CPU (granica obliczeniowa) lub przez twardy dysk (granica wejścia/wyjścia). Wymagania Beowulfa mogą być dość różne, zależnie od potrzeb. Na przykład problem ograniczony obliczeniowo może wymagać kilku bardzo szybkich CPU i szybkiej sieci z małym opóźnieniem, gdy problem ograniczony przez wejście/wyjście może działać lepiej na wolniejszym CPU i szybkiej sieci Ethernet.

To zalecenem często zaskakuje wiele osób, ponieważ zwykle uważa się, że szybszy procesor jest zawsze lepszy. Jest to prawdą jeśli dysponuje się nieograniczonym budżetem, jednak w przypadku prawdziwych systemów powinno się minimalizować koszty. Dla problemów ograniczonych przez wejście/wyjście istnieje prosta zasada (zwana Prawem Eadline'a-Dedkova) która jest dość pomocna:

Z dwóch komputerów równoległych o tej samym zsumowanym wskaźniku wydajności CPU lepszą wydajność dla aplikacji z dominującymi operacjami wejścia/wyjścia będzie miał ten, który posiada wolniejsze procesory (i prawdopodobnie także wolniejszą komunikację międzyprocesorową).

Dowód tego prawa wychodzi poza zakres tego dokumenty, jednak może zainteresować cię dokument Performance Considerations for I/O-Dominant Applications on Parallel Computers (w formacie Postscript 109K) (ftp://www.plogic.com/pub/papers/exs-pap6.ps)

Gdy już określiłeś typ konkurencji aplikacji, musisz obliczyć jak efektywna będzie ona równolegle. Patrz dział Oprogramowanie aby znaleźć opis narzędzi programowych.

W razie nieobecności narzędzi, możesz próbować po prostu zgadnąć. Jeśli pętla obliczeniowa trwa minuty, a dane mogą zostać przesłane w ciągu sekund, to prawdopodobnie jest to dobry kandydat na program równoległy. Ale pamiętaj, jeśli rozbijesz 16-minutową pętle na 32 części, a transfer danych wymaga kilku sekund, to zaczyna robić się ciasno.

Opisywanie konkurencyjnych części programu

Istnieje kilka sposobów opisu konkurencyjnych części programu: There are several ways to describe concurrent parts of your program:

  1. Wyraźne wykonanie równoległe
  2. Domniemane wykonanie równoległe

Te dwa sposoby różnią się głównie tym, że równoległość "wyraźna" jest określana przez użytkownika, a domniemana jest określana przez kompilator.

Metody wyraźne

Są to po prostu metody, w których użytkownik musi zmodyfikować kod źródłowy specjalnie dla komputera równoległego. Użytkownik musi dodać obsługę komunikatów korzystając z PVM lub MPI, albo wątków korzystając z wątków POSIX (pamiętaj jednak że wątki nie działają na komputerach SMP).

Metody wyraźne są bardzo trudne w implementacji i poprawianiu błędów. Użytkownicy najczęściej osadzają wyraźne wywołania funkcji w standardowym kodzie źródłowym FORTAN 77 lub C/C++. Biblioteka MPI dodaje pewne funkcje ułatwiające implementację standardowych równoległych metod (np. funkcje scatter/gather). Dodatkowo możliwe jest także użycie standardowych bibliotek napisanych dla równoległych komputerów. Pamiętaj jednak, że przenośność nie idzie w parze z efektywnością.

Ze względów historycznych, większość programów operujących na liczbach zostało napisanych w FORTANie. Z tego powodu FORTAN posiada największe wsparcie (narzędzia, biblioteki itp.) dla przetwarzania rówoległego. Teraz wielu programistów korzysta z C, lub przepisuje istniejące programy FORTAN w C, jako że C działa szybciej. Może jest prawdą, że C jest najbliższe uniwersalnemu kodowi maszynowemu, posiada jednak kilka poważnych wad. Użycie wskaźników w C znacznie utrudnia wyznaczanie zależności pomiędzy danymi. Automatyczna analiza wskaźników jest bardzo trudna. Jeśli dysponujesz gotowym programem w FORTANie i myślisz, że mógłbyś uczynić go równoległym w przyszłości -- NIE KONWERTUJ GO NA C!

Domniemane metody

Domniemane metody to te, w których użytkownik pozostawia niektóre (lub wszystkie) decyzje dotyczące równoległości kompilatorowi. Przykładem jest FORTAN 90, High Performance FORTAN, Bulk Synchronous Parallel (BSP) oraz cała lista metod rozwijanych obecnie.

Metody domyślne wymagają od użytkownika podania pewnych informacji na temat konkurencyjnej natury aplikacji, ale to kompilator podejmie następnie decyzje jak wykonywać tą konkurencję równolegle. Te metody gwarantują pewien stopień przenośności i efektywności, jednak ciągle nie istnieje najlepszy sposób opisu problemu konkurencyjnego dla komputera równoległego.

5. Zasoby dotyczące Beowulfa

5.1 Punkty startowe

5.2 Documentation

5.3 Dokumenty

5.4 Oprogramowanie

5.5 Maszyny Beowulf

5.6 Inne interesujące strony

5.7 Historia

6. Kod źródłowy

6.1 sum.c

/* Jacek Radajewski jacek@usq.edu.au */
/* 21/08/1998 */

#include <stdio.h>
#include <math.h>

int main (void) {

  double result = 0.0;
  double number = 0.0;
  char string[80];
  

  while (scanf("%s", string) != EOF) {

    number = atof(string);
    result = result + number;
  }
    
  printf("%lf\n", result);
  
  return 0;
  
}

6.2 sigmasqrt.c

/* Jacek Radajewski jacek@usq.edu.au */
/* 21/08/1998 */

#include <stdio.h>
#include <math.h>

int main (int argc, char** argv) {

  long number1, number2, counter;
  double result;
  
  if (argc < 3) {
    printf ("usage : %s number1 number2\n",argv[0]);
    exit(1);
  } else {
    number1 = atol (argv[1]);
    number2 = atol (argv[2]);
    result = 0.0;
  }

  for (counter = number1; counter <= number2; counter++) {
    result = result + sqrt((double)counter);
  }
    
  printf("%lf\n", result);
  
  return 0;
  
}

6.3 prun.sh

#!/bin/bash
# Jacek Radajewski jacek@usq.edu.au
# 21/08/1998

export SIGMASQRT=/home/staff/jacek/beowulf/HOWTO/example1/sigmasqrt

# $OUTPUT must be a named pipe
# mkfifo output

export OUTPUT=/home/staff/jacek/beowulf/HOWTO/example1/output

rsh scilab01 $SIGMASQRT         1  50000000 > $OUTPUT < /dev/null&
rsh scilab02 $SIGMASQRT  50000001 100000000 > $OUTPUT < /dev/null&
rsh scilab03 $SIGMASQRT 100000001 150000000 > $OUTPUT < /dev/null&
rsh scilab04 $SIGMASQRT 150000001 200000000 > $OUTPUT < /dev/null&
rsh scilab05 $SIGMASQRT 200000001 250000000 > $OUTPUT < /dev/null&
rsh scilab06 $SIGMASQRT 250000001 300000000 > $OUTPUT < /dev/null&
rsh scilab07 $SIGMASQRT 300000001 350000000 > $OUTPUT < /dev/null&
rsh scilab08 $SIGMASQRT 350000001 400000000 > $OUTPUT < /dev/null&
rsh scilab09 $SIGMASQRT 400000001 450000000 > $OUTPUT < /dev/null&
rsh scilab10 $SIGMASQRT 450000001 500000000 > $OUTPUT < /dev/null&
rsh scilab11 $SIGMASQRT 500000001 550000000 > $OUTPUT < /dev/null&
rsh scilab12 $SIGMASQRT 550000001 600000000 > $OUTPUT < /dev/null&
rsh scilab13 $SIGMASQRT 600000001 650000000 > $OUTPUT < /dev/null&
rsh scilab14 $SIGMASQRT 650000001 700000000 > $OUTPUT < /dev/null&
rsh scilab15 $SIGMASQRT 700000001 750000000 > $OUTPUT < /dev/null&
rsh scilab16 $SIGMASQRT 750000001 800000000 > $OUTPUT < /dev/null&
rsh scilab17 $SIGMASQRT 800000001 850000000 > $OUTPUT < /dev/null&
rsh scilab18 $SIGMASQRT 850000001 900000000 > $OUTPUT < /dev/null&
rsh scilab19 $SIGMASQRT 900000001 950000000 > $OUTPUT < /dev/null&
rsh scilab20 $SIGMASQRT 950000001 1000000000 > $OUTPUT < /dev/null&

doc-linux-pl-2002.06.14.orig/html/BootPrompt-HOWTO.pl.html0100664000175000017500000024231206770264140021652 0ustar covencoven Jakie argumenty można przekazać do jądra podczas startu.

Jakie argumenty można przekazać do jądra podczas startu.

Autor: Paul Gortmaker, gpg109@rsphy1.anu.edu.au
v1.14, 1 Lutego 1998
Wersja polska: Bartosz Maruszewski, B.Maruszewski@jtz.org.pl
v1.4, 16 Sierpnia 1998


Dokument ten jest zestawieniem wszystkich możliwych argumentów podawanych w czasie startu systemu (Boot prompt). Dotyczy to wszystkich parametrów jądra jak i sterowników urządzeń. Zawarte są tutaj także opisy jak jądro sortuje te argumenty oraz najpopularniejszego oprogramowania służącego do startu jądra. Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna tego dokumentu znajduje się pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO.

1. Wprowadzenie

Jądro ma ograniczoną możliwość przyjmowania informacji podczas startu w formie poleceń wydawanych z wiersza poleceń, podobnych do listy argumentów jakie podałbyś do zwykłego programu. W ogólności stosuje się to do przekazywania pewnych informacji do jądra na temat przyłączonych urządzeń, których ono samo nie mogłoby wykryć, lub w celu zmiany ustawień, tych urządzeń.

Jeśli skopiujesz jądro bezpośrednio na dyskietkę, (np. cp zImage dev/fd0) wtedy nie masz możliwosci przekazania żadnych argumentów do tego jądra. Dlatego większość użytkowników Linux-a używa specjalnych programów takich jak LILO czy loadlin służących do przekazywania tych argumentów do jądra i do ładowania go.

WAŻNA UWAGA DLA UŻYTKOWNIKÓW MODUŁÓW: Argumenty podczas ładowania jądra odnoszą się zwykle do sterowników sprzętowych wkompilowanych w jądro na stałe. Nie odnoszą one żadnego skutku w stosunku do sterowników łądownych jako moduły. Większość dystrybucji używa modułów. Jeśli nie jesteś pewien, to spójrz do man depmod i man nmodprobe jak również do /etc/conf/modules.

Bieżąca wersja tego dokumentu dotyczy jądra do wersji 2.0.33 włącznie oraz wersji rozwojowych do 2.1.84.

Dokument ten został pierwotnie napisany i opiekuje się nim:

Paul Gortmaker, gpg109@rsphy1.anu.edu.au

***** UWAGA !!!!! *****
Argumenty jądra nie dotyczące urządzeń i portów specyficznych dla maszyn
typu i386 (szczególnie Atari/Amiga) nie są obecnie udokumentowane.
***********************

1.1 Disclaimer i Prawa autorskie.

Dokument ten nie jest idealny i najlepszy. Aczkolwiek jest on przypuszczalnie najświeższym, i zawiera najświeższe dane, które będziesz w stanie znaleźć. Nikt nie jest odpowiedzialny za to co stanie się z twoimi urządzeniami poza tobą. Jeśli twój komputer zacznie się palić (... co jest raczej niemożliwe!) ja nie biorę odpowiedzialności, tzn: AUTOR NIE JEST ODPOWIEDZIALNY ZA JAKIEKOLWIEK ZNISZCZENIA POWSTAŁE NA SKUTEK PODJĘTYCH DZIAŁAŃ NA PODSTAWIE TEGO DOKUMENTU. (Tłumacz też nie ; )) )

Dokument ten jest chroniony prawami autorskimi (C) 1995-1998 Paula Gortmakera.

Dokument ten może być kopiowany zgodnie z warunkami licencji GNU, v2, która jest tu zawarta poprzez odwołanie się do niej. Więcej na temat szczegółów znajdziesz w pliku linux/COPYING, który jest zawarty w dystrybucji źródeł jądra.

Jeśli zamierzasz wydać ten dokument jako pracę drukowaną, skontaktuj się z autorem, a on postara się sprawdzić czy masz najświeższe dostępne informacje. W przeszłości publikowane były przestarzałe dokumenty, które powodowały zasypywanie programistów pytaniami, które zostały już rozwiązane w najnowszych dokumentach.

1.2 Dokumenty związane z poniższym.

Najświeższą dokumentacją będzie zawsze wersja źródłowa jądra. Ale poczekaj, nie uciekaj ! Nie musisz znać żadnego języka programowania, aby czytać komentarze zawarte w źródłach. Na przykład jeśli szukasz jakie argumenty mogą być przekazane do sterownika AHA1542 SCSI, zajrzyj do katalogu linux/drivers/scsi i pliku aha1542.c - a w pierwszych 100 liniach znajdziesz czysty tekst w języku angielskim (niestety, ale nie ma fizycznej możliwosci na tłumaczenie tych tekstów) opisujący argumenty, których szukasz.

Następnymi najlepszymi dokumentami będą te, dystrybuowane ze źródłami jądra. Jest tam ich teraz nawet całkiem sporo, a większość z nich znajduje się w podkatalogu Documentation i jego dalszych podkatalogach. Źródła jądra znajdują się zwykle w katalogu /usr/src/linux. Czasami można znaleźć pliki README.xx w odpowiednich podkatalogach.

Jeśli już wiesz jakich parametrów chcesz używać i chcesz teraz wiedzieć jak przekazać je do jądra to spójrz na dokumentację, która przychodzi razem z oprogramowaniem, którego będziesz używał, aby załadować jądro (najczęściej jest to LILO lub loadlin). Krótki przegląd znajduje się poniżej, ale nie zastępuje on dokumentacji dostarczanej wraz z danym oprogramowaniem.

1.3 Grupy dyskusyjne dotyczące Linux-a.

Jeśli masz jakieś pytania dotyczące przekazywania parametrów do jądra, PRZECZYTAJ najpierw ten dokument. Jeśli ten i związane z nim wymienione wcześniej dokumenty nie odpowiedzą na twoje pytania wtedy możesz spróbować poczytać grupy dyskusyjne. Jednak zanim zaczniesz na ślepo wysyłać listy najpierw poczytaj przez kilka dni daną grupę, bo może akurat ktoś już zaczął ten temat, a może nawet twoje pytanie zalicza się do często zadawanych pytań (Frequently Asked Questions - FAQ). Szybkie przejrzenie jakiegoś dokumentu FAQ może być dobrym pomysłem zanim zaczniesz wysyłać pytania do grup dyskusyjnych.

Ogólne pytania jak skonfigurować swój system kieruj na grupę pl.comp.os.linux. Przestrzegaj poprzedniego paragrafu oraz nie wysyłaj pytań do wielu grup na raz ponieważ z reguły czytają je te same osoby.

1.4 Nowe wersje tego dokumentu.

Nowe wersje będą się znajdować pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO. Będą one sukcesywnie uaktualniane jak tylko będą się pojawiać nowe sterowniki bądź informacje.

Dokument ten został stworzony przy pomocy systemu SGML, który został przygotowany specjalnie dla projektu Linux HOWTO. Dzięki temu dostępne są różne wersje tego dokumentu takie jak: postscript, dvi, ascii, html a wkrótce także Texinfo.

Wszystkie te wersje są dostępne na ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/doc/HOWTO. Zalecałbym przeglądanie tego dokumentu jako html lub postscript, gdyż jest tu wiele odwołań, których brakuje w zwykłym tekście.

2. Przegląd argumentów podawanych w czasie startu systemu.

Ta sekcja podaje kilka przykładów oprogramowania, które może być użyte do przekazywania argumentów do jądra i do ładowania go. Podaje także sposób interpretacji argumentów, jakie są na nie ograniczenia i jak są filtrowane dla odpowiedniego urządzenia. Ważne jest aby NIE używać odstępów w argumentach, tylko pomiędzy nimi. Wartości jakie mają być przekazane mają być oddzielone przecinkami bez żadnych odstępów. Spójrz na następujący przykład:


        ether=9,0x300,0xd0000,0xd4000,eth0  root=/dev/hda1               *DOBRZE*
        ether = 9, 0x300, 0xd0000, 0xd4000, eth0  root = /dev/hda1       *ŹLE*

2.1 LILO. (LInux LOader)

Najczęściej używanym programem służącym do ładowania Linux-a jest LILO (LInux LOader), napisany przez Wernera Amesbergera. Ma możliwość ładowania różnych jąder (jak i systemów) a swoją konfigurację zapisuje w pliku tekstowym. Większość dystrybucji jest rozprowadzana z LILO jako domyślnym programem ładującym. LILO umie załadować DOS-a, OS/2, Linux-a, FreeBSD i wiele innych systemów bez żadnych trudności i jest dość elastyczny. W typowej konfiguracji LILO zatrzyma się krótko po włączeniu komputera i wyświetli LILO:. Przez następnych kilka sekund będzie czekać na podanie ewentualnych argumentów a następnie zacznie ładować domyślny system. Typowymi etykietami opisującymi systemy i używanymi w LILO są linux, backup, linux-old, old, dos, msdos. Jeśli chcesz wpisać jakieś argumenty, wpisujesz je zaraz po nazwie systemu jaki chcesz załadować, tak jak w przykładzie poniżej:


        LILO: linux root=/dev/hda1

Bardzo przydatne jest polecenie append= jeśli ktoś chce dodać jakiś argument na stałe. Tak więc aby nie wpisywać go za każdym razem wystarczy po prostu dodać linijkę append = "xxx=yyy" do plik /etc/lilo.conf. Może być ona dodana albo na początku pliku, wtedy będzie się odnosić do wszystkich sekcji, albo w danej sekcji image, tak aby odnosiła się tylko do niej. Zajrzyj do dokumentacji LILO aby dowiedzieć się więcej szczegółów.

2.2 LoadLin.

Innym często używanym programem do ładowania Linux-a jest loadlin.exe. Jest to DOS-owy program, który potrafi załadować jądro (wraz z argumentami startowymi) z wiersza poleceń DOS-a zakładając, że są dostępne pewne zasoby. Jest to dobre rozwiązanie dla tych, którzy używają DOS-a i chcą się z niego szybko (lub niekoniecznie) przełączyć na Linux-a.

Jest on także bardzo przydatny jeśli masz jakieś urządzenie, które aby było przydatne do użycia musi zostać ustawione przez sterownik DOS-owy. Dobrym przykładem mogą być tutaj karty kompatybilne z SoundBlaster, które muszą mieć ustawione kilka rejestrów przez sterownik DOS-owy aby ustawić je w tryb kompatybilności z SoundBlaster. Ładowanie DOS-a wraz ze sterownikiem, a potem ładowanie Linux-a z wiersza poleceń DOS-a programem LOADLIN.EXE zapobiega zresetowaniu karty, co miałoby miejsce gdybyśmy zresetowali komputer, aby uruchomić Linux-a. W ten sposób karta zostaje w trybie kompatybilności z SoundBlaster i jest przydatna do użycia pod Linux-em.

Są także inne programy służące do ładowania Linux-a. Aby poznać kompletną listę takich programów zajrzyj do swojego lokalnego serwera ftp do katalogu system/Linux-boot.

2.3 Narzędzie "rdev".

Jest kilka argumentów startowych, których wartości domyślne są zapisane w różnych bajtach w samym jądrze. Jest narzędzie zwane rdev zainstalowane na większości systemów, które wie gdzie te bajty się znajdują i jak je zmienić. Potrafi ono także zmienić różne rzeczy, które nie mają swoich argumentów startowych, jak na przykład domyślny tryb wyświetlania.

Narzędzie rdev może być zwykle zastąpione przez swapdev, ramsize, vidmode i rootflags. Jest to pięć rzeczy, które rdev potrafi zmienić: główny system plików (katalog "/"), urządzenie swap, parametry RAM-dysku, domyślny tryb graficzny i ustawienia głównego systemu plików jako tylko-do-odczytu bądź w tryb odczytu-zapisu.

Więcej informacji na temat rdev można znaleźć pisząc w wierszu poleceń rdev -h bądź w podręczniku systemowym man.

2.4 Jak jądro sortuje argumenty.

Większość argumentów startowych ma następującą składnię:


        nazwa=[wartość_1][,wartość_2]...[,wartość_11]

gdzie "nazwa" jest unikalnym słowem kluczowym identyfikującym część jądra, do którego odnoszą się podane wartości. Większa ilość argumentów startowych to lista powyższych wywołań oddzielonych od siebie odstępem. Zauważ, że maksymalna ilość wartości to 11. Jądro rzeczywiście rozpoznaje tylko 11 elementów oddzielonych przecinkami przy danym słowie kluczowym. (Chociaż możesz użyć ponownie tego samego słowa kluczowego z dodatkowymi 11 argumentami w jakichś niezwykle skomplikowanych sytuacjach, zakładając, że dane funkcja ustawiająca (patrz niżej) to dopuszcza). Zwróć uwagę na fakt, iż jądro dzieli tę listę na maksimum 10 argumentów typu integer, i następujący po nich łańcuch, więc tak naprawdę nie możesz podać 11 argumentów typu integer o ile nie przerobisz sterownika tak, aby sam sobie zamienił ten 11 element na liczbę typu integer.

Wiekszość sortowania odbywa się w linux/init/main.c. Najpierw jądro sprawdza czy argument jest jednym ze specjalnych argumentów: root=, ro, rw, debug. Znaczenie tych parametrów jest opisane dalej w tym dokumencie.

Następnie sprawdza listę argumentów zawartych w tablicy bootsetups czy podany łańcuch nie został przypisany którejś z funkcji ustawiającej konkretne urządzenie bądź część jądra. Jeśli przekazałeś do jądra linię xxx=3,4,5,6,yyy wtedy jądro przeszukałoby tablicę bootsetups aby zobaczyć czy xxx jest tam wymienione. Jeśli byłoby wymienione wtedy uruchomiłoby funkcję związaną z xxx i przekazałoby jej argumenty typu integer: 3,4,5,6 oraz ostatni łańcuch yyy.

2.5 Ustawianie zmiennych środowiskowych.

Wszystko w formie "xxx=yyy", co nie jest funkcją ustawiającą opisaną powyżej jest interpretowane jako zmienna środowiskowa, mająca być ustawiona. (bezużytecznym?) Przykładem mogłoby być użycie TERM=vt100 jako argumentu startowego.

2.6 Przekazywanie argumentów do programu "init".

Wszystkie pozostałe argumenty startowe, które nie zostały rozpoznane jako funkcje ustawiające, czy zmienne środowiskowe są przekazywane do procesu o numerze 1, którym zazwyczaj jest init. Najczęstszym przekazywanym argumentem do programu init jest słowo single oznaczające uruchomienie systemu w trybie jednego użytkownika nie uruchamiając demonów, które zwykle są uruchamiane. Sprawdź w podręczniku man jaką masz wersję programu "init" i jakie argumenty możesz mu przekazać.

3. Ogólne argumenty nie dotyczące sterowników.

Są to argumenty nie dotyczące żadnych konkretnych sterowników czy urządzeń peryferyjnych. Odnoszą się natomiast do wewnętrznych parametrów jądra, takich jak: obsługa pamięci, obsługa RAM-dysku, obsługa głównego systemu plików itd.

3.1 Argumenty dotyczące głównego systemu plików.

Następujące argumenty mają wpływ na to jak jądro będzie obsługiwać główny system plików:

Argument "root=".

Poprzez ten argument możemy przekazać do jądra które urządzenie ma być użyte jako główny system plików. Domyślnym ustawieniem jest tutaj urządzenie, na którym był główny system plików, podczas tworzenia (kompilacji) jądra. Na przykład jeśli dane jądro było utworzone na systemie, w którym główny system plików był na urządzeniu /dev/hda1 wtedy domyślnym ustawieniem będzie "/dev/hda1". Aby to zmienić i ustawić drugą stację dyskietek jako główny system plików trzeba użyć argumentu root= w następujący sposób:


   root=/dev/fd1

Główny system plików może być zamontowany na następujących urządzeniach:

(1) /dev/hdaN do /dev/hddN, gdzie N jest numerem partycji na dysku pierwszym, drugim, trzecim lub czwartym kompatybilnym z ST-506.
(2) /dev/sdaN do /dev/sdeN, gdzie N jest numerem partycji na dysku pierwszym, drugim, trzecim, czwartym lub piątym kompatybilnym z SCSI.
(3) /dev/xdaN do /dev/xdbN, gdzie N jest numerem partycji na dysku pierwszym lub drugim kompatybilnym z XT.
(4) /dev/fdN, gdzie N jest numerem stacji dyskietek (N=0 - A:, N=1 - B:)
(5) /dev/nfs, co raczej nie jest urządzeniem a argumentem, który mówi, żeby zamontować główny system plików poprzez sieć.

Inna znacznie bardziej kłopotliwa i skomplikowana metoda przekazania, na którym urządzeniu ma być główny system plików jest podanie liczby głównej i pobocznej (np. /dev/sda3 to liczba główna - 8, liczba poboczna - 3 a więc mógłbyś napisać root=0x803.

To jest jeden z kilku argumentów startowych, który ma zapisaną domyślną wartość w jądrze, i który przez to może być zmieniany za pomocą rdev.

Argument "ro".

Kiedy jądro ładuje system, potrzebuje głównego systemu plików, aby odczytać z niego podstawowe informacje. To jest główny system plików montowany podczas ładowania. Chociaż, jeśli system ten jest zamontowany z możliwoscią zapisu, nie możesz dokładnie sprawdzić jego integralności (poprawności) jeśli akurat trwa zapis pliku. Argument ro przekazuje do jądra informację, aby zamontować główny system plików jako tylko-do-odczytu, tak więc jakikolwiek program sprawdzający poprawność systemu plików może założyć, że nie ma żadnych częściowo zapisanych plików podczas sprawdzania. Żaden program ani proces nie może zapisać niczego do pliku dopóki system plików nie zostanie przemontowany w tryb odczytu-zapisu (read-write).

To jest jeden z kilku argumentów startowych, który ma zapisaną domyślną wartość w jądrze, i który przez to może być zmieniany za pomocą rdev.

Argument "rw".

To jest dokładną odwrotnością poprzedniego argumentu, czyli przekazuje do jądra, aby zamontować główny system plików z możliwoscią zapisu. Tak czy inaczej ostatecznie chcemy mieć możliwość zapisu na głównym systemie plików. Ale pamiętaj, aby nie uruchamiać żadnych programów testujących (typu fsck) system plików kiedy jest on zamontowany z możliwością zapisu.

Ta sama wartość zapisana w jądrze wspomniana wyżej jest używana do tego argumentu, dostępna przez rdev.

3.2 Argumenty dotyczące RAM-dysku.

Następujące argumenty są związane z tym jak jądro obsługuje RAM-dysk, który jest zwykle używany do bootstrappingu podczas instalacji lub na maszynach ze sterownikami w postaci modułów, które muszą być zainstalowane aby mieć dostęp do głównego systemu plików.

Argument "ramdisk_start=".

Aby pozwolić obrazowi jądra na przebywanie na dyskietce wraz ze skompresowanym obrazem RAM-dysku dodany został argument `ramdisk_start=<offset>'. Jądro nie może być zawarte w skompresowanym obrazie głównego systemu plików na RAM-dysku, ponieważ musi ono być zapisane poczynając od bloku 0, tak aby BIOS mógł załadować bootsektor i wtedy jądro może zacząć się ładować.

Uwaga: Jeśli używasz rozpakowanego obrazu RAM-dysku, wtedy jądro może być częścią obrazu głównego systemu plików, który jest ładowany do RAM-dysku i system może wystartować z tej dyskietki, albo obraz głównego systemu plików i jądro mogą być dwiema oddzielnymi dyskietkami, tak jak w przypadku skompresowanego obrazu.

Jeśli używasz dwóch dyskietek (bootdysk z jądrem i rootdysk z obraze RAM-dysku) wtedy RAM-dysk zaczyna się od bloku 0 i jako offset w naszym przykładzie trzeba wpisać 0. Ponieważ jest to domyślna wartość nie musisz w tym przypadku używać tego argumentu.

Argument "load_ramdisk=".

Ten argument informuje jądro czy ma ono ładować RAM-dysk czy nie. Pisząc load_ramdisk=1 informujesz jądro, aby załadować zawartość dyskietki do RAM-dysku. Domyślną wartością jest 0, czyli jądro nie ma ładować zawartości dyskietki do RAM-dysku.

Dokładny opis argumentów startowych dotyczących RAM-dysku znajdziesz w linux/Documentation/ramdiskt.txt. Jest tam także opisane w jaki sposób można zapisać w jądrze wartość tego parametru poleceniem rdev.

Argument "prompt_ramdisk=".

Ten argument informuje jądro czy wypisywać prośbę o włożenie dyskietki z zawartością RAM-dysku czy nie. W konfiguracji z jedną dyskietką zawartość RAM-dysku jest na tej samej dyskietce co jądro, które się właśnie przestało ładować, a więc prośba nie jest potrzebna. W tym wypadku można użyć prompt_ramdisk=0. W konfiguracji z dwiema dyskietkami potrzebujesz czasu na zamianę dyskietek a więc należy użyć prompt_ramdisk=1. Ponieważ to jest wartość domyślna nie trzeba tego pisać.
(Uwaga historyczna: Co sprytniejsi używali opcji LILO vga=ask, aby na chwilę przerwać start systemu i zamienić dyskietki.)

Dokładny opis argumentów startowych dotyczących RAM-dysku znajdziesz w linux/Documentation/ramdiskt.txt. Jest tam także opisane w jaki sposób można zapisać w jądrze wartość tego parametru poleceniem rdev.

Argument "ramdisk_size=".

Ponieważ prawdą jest, że zawartość RAM-dysku rośnie dynamicznie wraz z coraz nowszymi wersjami systemu, jest górne ograniczenie jego rozmiaru, tak aby nie zabrał całej pamięci RAM i nie zostawił nas na lodzie. Domyślną wartością jest 4096 (czyli 4MB), która powinna być wystarczająco duża dla większości potrzeb. Możesz zmienić tę wartość zależnie od potrzeb na mniejszą lub większą przy pomocy tego argumentu.

Dokładny opis argumentów startowych dotyczących RAM-dysku znajdziesz w linux/Documentation/ramdiskt.txt. Jest tam także opisane w jaki sposób można zapisać w jądrze wartość tego parametru poleceniem rdev.

Argument "ramdisk=".

(UWAGA: Ten argument jest przestarzały i nie powinien być używany z jądrami w wersji wyższej niż 1.3.47. Argumenty, których należy używać zostały opisane powyżej.)

Argument ten określa rozmiar RAM-dysku w kB. Na przykład jeśli ktoś chciałby mieć główny system plików na dyskietce 1.44MB załadowanej do RAM-dysku użyłby następującego argumentu:


        ramdisk=1440

To jest jeden z kilku argumentów startowych, który ma zapisaną domyślną wartość w jądrze, i który przez to może być zmieniany za pomocą rdev.

Argument "noinitrd".

Jądra w wersji 2.x i wyższej mają możliwość wykonywania /linuxrc z zawartości RAM-dysku. Możliwość ta jest zwykle wykorzystywana, aby umożliwić ładowanie modułów potrzebnych do zamontowania rzeczywistego głównego systemu plików (np. załaduj sterownik SCSI zapisany w RAM-dysku, a potem zamontuj rzeczywisty główny system plików znajdujący się na dysku SCSI.)

Właściwy argument "noinitrd" określa co dzieje się z danymi initrd po tym jak jądro się załadowało. Jeśli podamy ten argument dane te staną się dostępne poprzez urządzenie specjalne /dev/initrd, które może być czytane zanim pamięć RAM zostanie przywrócona systemowi, zamiast być zapisanymi do RAM-dysku. Odnośnie szczegółów dotyczących używania startowego RAM-dysku, przeczytaj linux/Documentation/initrd.txt. Najnowsza wersja LILO oraz loadlin.exe powinna mieć także dodatkowe informacje na ten temat.

3.3 . Argumenty dotyczące obsługi pamięci.

Następujące argumenty określają jak Linux wykrywa i obsługuje pamięć fizyczną i wirtualną w twoim systemie.

Argument "mem=".

Ten argument ma dwa przeznaczenia: Pierwotnym założeniem było określenie ilości zainstalowanej pamięci (lub wartość mniejsza jeśli chciałeś użyć mniej pamięci niż masz w rzeczywistości). Drugim (prawie wcale nie używanym) przeznaczeniem jest podanie mem=nopentium co informuje jądro, aby nie używało stron pamięci o rozmiarze 4MB.

Oryginalne odwołanie do BIOS-u w specyfikacji PC, które zwraca ilość zainstalowanej pamięci zostało tak zaprojektowane, że było w stanie zwrócić co najwyżej 64MB. (Tak! Następny przykład na brak patrzenia w przyszłość, zupełnie tak samo jak w przypadku ilości cylindrów dysku ograniczonej do 1024... eh). Linux używa tego odwołania BIOS-u podczas startu, aby określić ilość zainstalowanej pamięci. Jeśli masz więcej niż 64MB RAM-u, możesz użyć tego argumentu, aby poinformować jądro, ile rzeczywiście masz pamięci RAM. Oto cytat Linusa na temat jak używać tego argumentu:

"Jądro zaakceptuje jakikolwiek argument "mem=xx" jaki mu podasz, a jeśli stwierdzi, że je okłamałeś, wywali się z wielkim hukiem wcześniej czy później. Argument ten określa najwyższy dostępny adres pamięci RAM, więc mem=0x1000000 znaczy, że masz 16MB RAM-u na przykład. Dla maszyny z 96MB RAM-u byłoby to: mem=0x6000000.

UWAGA UWAGA UWAGA: niektóre maszyny mogą używać najwyższych adresów do cache'owania BIOS-u czy czegoś podobnego, więc mógłbyś nie mieć pełnych 96MB RAM-u dostępnego. I na odwrót: niektóre procesory odwzorowują pamięć fizyczną, która jest zakryta przez BIOS tuż za najwyższym dostępnym adresem, tak więc ten najwyższy adres mógłby być np: 96MB + 384kB. Jeśli poinformujesz Linux-a, że ma więcej pamięci niż w rzeczywistości, będą się dziać złe rzeczy: może nie od razu, ale kiedyś na pewno."

Zauważ, że wartość tego argumentu nie musi być podana szesnastkowo a przyrostki "k" i "M" (wielkość liter nie ważna) mogą być użyte do określenia odpowiednio kilobajtów i Megabajtów. ("k" spowoduje przesunięcie 10 bitowe podanej wartości, a "M" - 20 bitowe) Powyższe ostrzeżenie jest wciąż ważne, ponieważ maszyna z 96MB pamięci może działać z argumentem mem=97920k ale może nie działać z mem=98304k lub mem=96M.

Argument "swap=".

Argument ten pozwala użytkownikowi podać kilka parametrów pamięci wirtualnej, które są związane z pamięcią swap. Można tu podać następujące parametry:


        MAX_PAGE_AGE
        PAGE_ADVANCE
        PAGE_DECLINE
        PAGE_INITIAL_AGE
        AGE_CLUSTER_FRACT
        AGE_CLUSTER_MIN
        PAGEOUT_WEIGHT
        BUFFEROUT_WEIGHT

Zainteresowani hackerzy proszeni są o przeczytanie linux/mm/swap.c a także /proc/sys/vm.

Argument "buff=".

Podobnie do argumentu "swap=" ten pozwala użytkownikowi podać kilka parametrów związanych z obsługą pamięci buforowej. Akceptuje następujące parametry:


        MAX_BUFF_AGE
        BUFF_ADVANCE
        BUFF_DECLINE
        BUFF_INITIAL_AGE
        BUFFEROUT_WEIGHT
        BUFFERMEM_GRACE

Zainteresowani hackerzy proszeni są o przeczytanie linux/mm/swap.c a także /proc/sys/vm.

3.4 Argumenty dotyczące głównego systemu plików montowanego poprzez NFS.

Linux obsługuje bezdyskowe stacje robocze, które mają zamontowany główny system plików jako NFS (Network File System). Argumenty te używane są, aby przekazać systemowi z jakiego komputera ma sobie zamontować główny system plików. Zauważ także, że wymagany jest w tym przypadku argument root=/dev/nfs. Szczegóły na temat używania głównego systemu plików zamontowanego jako NFS znajdują się w pliku linux/Documentation/nfsroot.txt. Powinieneś go przeczytać, gdyż ten paragraf jest tylko streszczeniem tamtego pliku.

Argument "nfsroot=".

Argument ten informuje jądro jakiej maszyny użyć, jakiego katalogu na niej i jakich opcji NFS podczas montowania głównego systemu plików. Argument ten ma następującą postać:


        nfsroot=[<serwer-ip>:]<gł.sys.pl.>[,<opcje-nfs>]

Jeśli argument nfsroot nie jest podany wtedy użyte zostanie "/tftpboot/%s". Kolejne opcje tego argumentu oznaczają:

<serwer-ip> - Określa adres IP serwera NFS. Jeśli to pole nie jest podane, użyta zostanie wartość zmiennej nfsaddrs (patrz poniżej). Jedną z możliwości użycia tego parametru jest na przykład pozwolenie na użycie różnych serwerów dla RARP i NFS. Zwykle możesz zostawić ten parametr pusty.

<gł.sys.pl.> - Nazwa katalogu na serwerze, który ma być zamontowany jako główny system plików. Jeśli użyty jest znak "%s", zostanie on zamieniony na znakową reprezentację numeru IP klienta.

<opcje-nfs> - Standardowe opcje NFS. Wszystkie opcje są oddzielone od siebie przecinkami. Jeśli pole "opcje-nfs" nie jest podane, zostaną użyte następujące wartości domyślne:

        port            = podany przez demona "portmap" z serwera
        rsize           = 1024
        wsize           = 1024
        timeo           = 7
        retrans         = 3
        acregmin        = 3
        acregmax        = 60
        acdirmin        = 30
        acdirmax        = 60
        flags           = hard, nointr, noposix, cto, ac

Argument "nfsaddrs=".

Ten argument ustawia różne adresy interfejsu sieciowego, które są wymagane do komunikacji przez sieć. Jeśli argument ten nie jest podany, wtedy jądro próbuje użyć protokołów RARP bądź BOOTP, aby znaleźć te parametry. Argument ten ma następująca postać:


        nfsaddrs=<mój-ip>:<serw-ip>:<r-ip>:<netmask>:<nazwa>:<urz>:<auto>

<mój-ip> - Adres IP klienta. Jeśli jest on pusty, zostanie wykryty przy pomocy RARP albo BOOTP. Jaki protokół jest używany, zależy od tego co zostało udostępnione podczas kompilacji jądra i od parametru <auto>. Jeśli parametr ten nie jest pusty, ani RARP ani BOOTP nie zostanie użyty.

<serw-ip> - Adres IP serwera NFS. Jeśli RARP został użyty do wykrycia adresu klienta i parametr ten nie jest pusty akceptowane będą odpowiedzi tylko z wyspecyfikowanego serwera. Aby użyć różnych serwerów RARP i NFS, podaj swój serwer RARP tutaj (lub zostaw pusty), a serwer NFS podaj w argumencie nfsroot (patrz wyżej). Jeśli parametr ten jest pusty, użyty jest adres serwera, który odpowiedział na pytanie RARP lub BOOTP.

<r-ip> - Adres IP rutera jeśli serwer jest w innej podsieci. Jeśli opcja ta jest pusta żaden ruter nie jest używany i przyjmowane jest, że serwer znajduje się w sieci lokalnej, o ile nie odebrano wartości poprzez BOOTP.

<netmask> - Maska sieci dla lokalnego interfejsu sieciowego. Jeśli opcja ta jest pusta, maska jest wyprowadzana z numeru IP klienta, o ile nie otrzymano wartości poprzez BOOTP.

<nazwa> - Nazwa klienta. Jeśli opcja ta jest pusta, adres IP klienta używany jest w notacji znakowej lub wartość otrzymana poprzez BOOTP.

<urz> - Nazwa urządzenia sieciowego, które ma zostać użyte. Jeśli opcja ta jest pusta, wszystkie urządzenia są używane do żądań RARP, a pierwsze znalezione dla BOOTP. Dla NFS używane jest to urządzenie, dla którego zostały otrzymane odpowiedzi RARP lub BOOTP. Jeśli masz tylko jedno urządzenie możesz spokojnie zostawić tę opcję pustą.

<auto> - Metoda, która ma być użyta do autokonfiguracji. Jeśli jest to "rarp" lub "bootp" używany jest podany protokół. Jeśli wartością jest "both" lub opcja ta jest pusta, oba protokoły są używane jeśli tylko są wkompilowane w jądrze. Używając "none" informujesz, aby nie używać autokonfiguracji. W tym przypadku musisz podać wszystkie potrzebne wartości poprzednich pól.

Parametr <auto> może pojawić się samotnie jako wartość argumentu "nfsaddrs" (bez tych wszystkich ":" znaków przedtem) wtedy używana jest autokonfiguracja. Aczkolwiek wartość "none" nie jest dostępna w tym przypadku.

3.5 Inne argumenty.

Te różne argumenty startowe pozwalają użytkownikowi ustawić pewne wewnętrzne parametry jądra.

Argument "debug".

Jądro podaje ważne (i mniej ważne) informacje do użytkownika poprzez funkcję printk(). Jeśli informacja jest rozpoznawana jako ważna, funkcja printk() umieści kopię na bieżącej konsoli jak również przekaże ją do demona klogd tak aby wiadomość ta została zapisana na dysk. Powód, dla którego informacje te są wysyłane na konsolę jak i zapisywane na dysk jest taki, że w pewnych nieszczęśliwych warunkach (np: awaria dysku) informacje te mogą nie dotrzeć na dysk i zostałyby stracone.

Próg, wg. którego informacja jest uważana za ważną lub nie ustawiany jest przez zmienną console_loglevel. Wartością domyślną jest zapisywanie wszystkiego ważniejszego (o mniejszym poziomie, a tym samym większym priorytecie) niż DEBUG (poziom 7) na konsolę. (poziomy te zdefiniowane są w pliku nagłówkowym kernel.h). Podanie argumentu startowego debug ustawi poziom logowania na konsolę na 10, tak, że wszystkie informacje z jądra pojawią się na konsoli.

Poziom logowania na konsolę może zwykle być ustawiony także podczas normalnej pracy systemu poprzez opcję programu klogd. Sprawdź w systemie pomocy "man" jak to zrobić.

Argument "init=".

Jądro standardowo po załadowaniu się uruchamia program "init", który następnie zajmuje się przygotowaniem systemu dla użytkownika poprzez uruchomienie programów getty, skryptów "rc" itp. Jądro najpierw szuka /sbin/init, następnie /etc/init a na końcu spróbuje użyć /bin/sh (możliwie w /etc/rc). Jeśli na przykład twój program init popsuł się i nie jest możliwy restart systemu, możesz użyć argumentu init=/bin/sh, który spowoduje uruchomienie shell-a natychmiast po załadowaniu jądra, umożliwiając ci zamianę popsutego programu na dobry.

Argument "no387".

Niektóre koprocesory i387 mają błędy, które pojawiają się jeśli używamy 32-bitowego trybu chronionego. Na przykład niektóre wczesne procesory ULSI-387 mogą powodować poważne zawieszenia podczas używania operacji zmiennoprzecinkowych, widocznie z powodu błędu w instrukcjach FRSAV/FRRESTOR. Użycie argumentu startowego "no387" spowoduje ignorowanie koprocesora przez Linux-a nawet jeśli go masz. Oczywiście musisz mieć wkompilowaną emulację koprocesora w jądrze! Może to być także przydatne jeśli masz jedną z tych naprawdę starych maszyn 386, które mogą używać 80287 FPU, a Linux nie umie tego używać.

Argument "no-hlt".

Rodzina procesorów i386 (a co za tym idzie i nowsze) mają instrukcję "hlt", która informuje procesor, że nic się nie stanie dopóki jakieś zewnętrzne urządzenie (klawiatura, modem, dysk, itp.) nie zażąda jakiejś akcji. To pozwala na użycie trybu "low-power", który powoduje, że procesor siedzi jak zombi i czeka aż coś zażąda jakiejś akcji (zwykle poprzez przerwanie), co powoduje mniejsze zużycie prądu. Niektóre z wczesnych procesorów i486DX-100 miały problem z tą instrukcją, przez co nie mogły niezawodnie powrócić do trybu działania po użyciu tej instrukcji. Używając argumentu "no-hlt" informujesz Linux-a, aby po prostu robił sobie nieskończoną pętlę jeśli nie ma nic mądrzejszego do roboty, a nie zatrzymywał procesora jeśli nic się nie dzieje. To pozwala ludziom z tymi popsutymi procesorami używać Linux-a, chociaż lepiej, żeby spróbowali wymienić ten procesor.

Argument "no-scroll".

Użycie tego argumentu startowego powoduje wyłączenie możliwości scrolowania, która powoduje utrudnienie użycia terminali Braille'a.

Argument "panic=".

W nieprawdopodobnym przypadku paniki jądra (tj. wewnętrznego błędu, który został wykryty przez jądro, i który jądro decyduje się uważać na tyle poważnie, aby głośno jęknąć i wszystko zatrzymać) domyślnym zachowaniem się jądra jest po prostu siedzieć i czekać aż ktoś przyjdzie i zauważy informację o panice i zresetuje maszynę. Aczkolwiek jeśli maszyna jest rzadko odwiedzana, sensowny jest automatyczny reset. Na przykład używając "panic=30" podczas startu informujemy jądro aby po 30 sekundach spróbowało zresetować maszynę. Wartość 0 powoduje zachowanie domyślne.

Zauważ, że wartość ta może być także podana poprzez funkcję sysctl wywołaną na interfejsie /proc/sys/kernel/panic.

Argument "profile=".

Ci, którzy chcą ingerować w wewnętrzne działanie jądra, mogą podać argument, który pozwala na określenie jak i gdzie jądro ma spędzać cykle procesora, aby doprowadzić do maksymalnego wykorzystania jego możliwości. Ten argument pozwala ustawić licznik przesunięć podczas startu. Typowo ustawiony jest on na dwa. Możesz także skompilować jądro z domyślnie ustawioną możliwością profilowania. W każdym z tych przypadków potrzebujesz takiego narzędzia jak readprofile.c, które umie używać /proc/profile.

Argument "reboot=".

Opcja ta kontroluje sposób w jaki Linux restartuje komputer (typowo poprzez /sbin/init, który obsługuje kombinację klawiszy Control-Alt-Delete). Domyślnym zachowaniem co do późnych jąder jest tzw. "zimny" restart (tzn. pełen restart, wraz ze sprawdzaniem pamięci przez BIOS itp.) zamiast "ciepłego" restartu (tj. niepełen restart, bez testowania pamięci). Wartość domyślną zmieniono na "zimny" ponieważ taki restart, w przeciwieństwie do "ciepłego", wydaje się działać na tanim/popsutym sprzęcie. Aby przywrócić dawne zachowanie (tj. "ciepły" restart) użyj reboot=w albo właściwie jakiekolwiek słowo zaczynające się na w zadziała.

Po co zawracać sobie głowę? Niektóre kontrolery dysków z własną pamięcią cache może wykrywać "ciepły" restart, i zapisywać wszystkie dane z pamięci cache na dysk. Podczas "zimnego" restartu, karta może zostać zrestartowana i wszystkie dane z cache'u zostaną stracone. Inni raportowali systemy, którym sprawdzanie pamięci zabierało dużo czasu czy dłuższy czas inicjalizacji BIOS-ów SCSI.

Argument "reserve=".

Argument ten jest używany do ochrony obszarów portów I/O przed przeszukiwaniem.


        reserve=iobase,extent[,iobase,extent]...

W niektórych maszynach może być konieczne, aby powstrzymać sterowniki urządzeń przed automatyczną próbą wykrycią urządzenia w konkretnych obszarach. Może to być spowodowane źle zrobionymi urządzeniami, które powodują zawieszanie podczas startu (tak jak niektóre karty Ethernetowe), urządzeniami błędnie rozpoznanymi, urządzeniami, których stan został zmieniony podczas wcześniejszej próby wykrycia, albo po prostu tym, że nie chcesz aby jakieś urządzenie zostało wykryte.

Argument startowy reserve eliminuje te problemy przez podanie obszaru adresów I/O, który nie ma być sprawdzany. Obszar ten jest oznaczany w tablicy rejestracyjnej portów jądra tak jakby jakieś urządzenie zostało już w tym obszarze wykryte (słowem reserved). Zauważ, że ten proceder nie jest konieczny na wszystkich maszynach. Tylko jeśli występuje problem lub sytuacja wyjątkowa, wymagająca użycia tego argumentu.

Porty I/O w podanym obszarze są chronione przed próbą automatycznego wykrywania, która używa funkcji check_region() przed wykrywaniem na ślepo w pewnym regionie adresów I/O. Argument ten wprowadzono, aby używać go kiedy jakiś sterownik wisi na karcie NE2000 lub identyfikuje jakieś inne urządzenie jako swoje. Poprawny sterownik nie powinien przeszukiwać zarezerwowanego obszaru, o ile inny argument startowy nie poinformuje go wyraźnie, że ma to zrobić. Wynika z tego, że argument reserve jest najczęściej używany w konfiguracji z innymi argumentami startowymi. Tak więc jeśli podasz jakiś obszar, aby chronić jakieś urządzenie, musisz zwykle podać wyraźnie port tego urządzenia. Większość sterowników ignoruje tablicę rejestracji portów jeśli mają podany konkretny adres. Na przykład poniższa linia:


        reserve=0x300,32 bla=0x300

powstrzymuje wszystkie sterowniki poza sterownikiem do urządzenia bla przed przeszukiwaniem adresu 0x300-0x31F.

Jako zwykły argument startowy argument reserve ma limit na ilość parametrów (11), tak więc możesz podać tylko 5 obszarów zarezerwowanych przez każdy argument reserve. Jeśli masz powód, aby użyć więcej argumentów reserve możesz to zrobić.

Argument "vga=".

Zauważ, że tak naprawdę to nie jest argument startowy. Jest to opcja, która jest interpretowana przez LILO, a nie przez jądro, tak jak wszystkie inne argumenty startowe. Jednak jej użycie stało się tak popularne, że wymaga ona tutaj wzmianki. Można to także ustawić przy pomocy rdev -v albo równoważnie vidmode w pliku vmlinuz.

Argument ten pozwala na zmianę trybu wyświetlania poprzez BIOS jeszcze przed załadowaniem jądra. Typowe tryby to 80x50, 132x44 itd. Najlepszym sposobem jest użycie tego argumentu w postaci vga=ask. Wyświetli on wtedy listę dostępnych trybów i będzie czekał na podanie jednego z nich. Później, jak już będziesz znał numer trybu jaki chcesz używać możesz go wpisać zamiast słowa "ask". Jeśli chcesz wiedzieć więcej zajrzyj do pliku linux/Documentation/svga.txt, który przychodzi wraz ze źródłami jądra.

Zauważ, że nowsze jądra (v2.1 i nowsze) mają kod ustawiania, który zmienia tryb video jako opcję, pokazaną jako Video mode selection support więc musisz włączyć tę opcję jeśli chcesz używać tej właściwości.

4. Argumenty startowe dla urządzeń peryferyjnych SCSI.

Sekcja ta zawiera opis argumentów startowych używanych do przekazywania informacji na temat dołączonych adapterów i urządzeń SCSI.

4.1 Argumenty dla sterowników średniego poziomu.

Sterowniki średniego poziomu obsługują takie rzeczy jak dyski, CD-ROM-y i taśmy bez wdawania się w szczegóły kontrolerów.

Maksymalna liczba sprawdzanych urządzeń LUN. ("max_scsi_luns=")

Każde urządzenie SCSI może mieć pewną ilość "pod-urządzeń" zawartych w nim. Najpopularniejszym przykładem może być tutaj jeden z nowych CD-ROM-ów SCSI, który obsługuje więcej niż jeden dysk na raz. Każdy z tych dysków jest adresowany numerem logicznej jednostki (ang. Logical Unit Number LUN) danego urządzenia. Ale większość urządzeń takich jak dyski twarde, taśmy to pojedyncze urządzenia a zatem ich numer logicznej jednostki będzie wynosił 0.

Problem powstaje przy pojedynczych źle wykonanych urządzeniach LUN. Niektóre źle zaprojektowane urządzenia SCSI (stare i niestety nowe) zawieszają się gdy przeszukuje się je w celu znalezienia urządzenia o numerze LUN różnym od zera, a czasami zawieszają także całą szynę SCSI.

Nowsze jądra mają argument startowy, który pozwala ci podać maksymalny numer urządzenia LUN, które będzie szukane. Domyślny numer szukanego urządzenia to 0, aby zapobiec problemowi opisanemu powyżej.

Aby podać ilość poszukiwanych urządzeń LUN przy starcie, podajemy jako argument startowy "max_scsi_luns=n", gdzie n jest liczbą pomiędzy 1 a 8. Aby zapobiec problemom opisanym wyżej podajemy n=1.

Parametry dla sterownika taśm SCSI. ("st=")

Niektóre konfiguracje startowe sterownika taśm SCSI można podać w następujący sposób:


        st=rozm_buf[,próg_zap[,max_bufs]]

Pierwsze dwie liczby są podawane w kilobajtach (kB). Domyślną wartością rozm_buf jest 32kB, a maksymalny rozmiar jaki może być podany to śmieszne 16384kB. próg_zap to wartość, przy osiągnięciu której zawartość bufora zapisywana jest na taśmę. Domyślną wartością jest 30kB. Maksymalna ilość buforów różni się w zależności od ilości wykrytych napędów i ma wartość domyślną = 2. Przykładem może być:


        st=32,30,2

Szczegóły można znaleźć w pliku README.st, który znajduje się w podkatalogu scsi źródeł jądra.

4.2 Argumenty kontrolerów SCSI.

Uwaga ogólna dla tej sekcji:

IOBASE - pierwszy port I/O, który jest używany przez kontroler SCSI. Wartość ta podawana jest szesnastkowo, i zwykle mieści się w przedziale od 0x200 do 0x3FF.

IRQ - przerwanie sprzętowe, na które jest skonfigurowana karta. Odpowiednie wartości są zależne od konkretnej karty, ale zwykle są to 5, 7, 9, 10, 11, 12 i 15. Pozostałe wartości są zwykle używane przez popularne urządzenia takie jak dyski twarde IDE, napędy dyskietek, porty szeregowe itp.

dma - kanał DMA (Direct Memory Access), którego używa karta. W zasadzie odnosi się tylko do kart bus-mastering. Karty PCI i VLB mają domyślnie tryb bus-mastering i nie wymagają kanału ISA DMA.

SCSI-ID - identyfikator, którego używa dany kontroler do samoidentyfikacji na szynie SCSI. Tylko niektóre kontrolery pozwalają na zmianę tej wartości, ponieważ większość ma ją zapisaną wewnątrz siebie. Standardową wartością jest 7, ale urządzenia Seagate i Future Domain TMC-950 używają 6.

PARITY - czy dany kontroler spodziewa się od przyłączonych urządzeń kontroli parzystości przy wymianie wszystkich informacji. 1 oznacza włączenie sprawdzania parzystości, 0 je wyłącza. I znowu nie wszystkie kontrolery pozwalają na zmianę tej wartości.

Kontrolery aha151x, aha152x, aic6260, aic6360, SB16-SCSI (`aha152x=')

Numery aha odnoszą się do kart a numery aic do właściwego procesora SCSI na kartach tego typu, włączając kartę SoundBlaster-16 SCSI.

Podczas przeszukiwania tej karty, jądro próbuje znaleźć zainstalowany BIOS, a jeśli go nie ma, jądro nie znajdzie twojej karty. Wtedy musisz użyć argumentu startowego w postaci:


         aha152x=IOBASE[,IRQ[,SCSI-ID[,powt[,parity]]]]

Zauważ, że jeśli sterownik został skompilowany z włączoną opcją debug, możliwa jest do podania także szósta wartość ustawiająca poziom śledzenia.

Wszystkie parametry zostały opisane powyżej, a parametr powt pozwala na odłączenie lub ponowne podłączenie urządzenia jeśli jego wartością nie jest 0. Przykładowe użycie może być takie:


        aha152x=0x340,11,7,1

Zauważ, że parametry muszą być podane w odpowiedniej kolejności; to znaczy, że jeśli chcesz podać wartość parzystości musisz podać najpierw IOBASE, IRQ, SCSI-ID, i POWT.

Kontroler aha154x. ("aha1542=")

To są karty serii aha154x. Seria kart aha1542 ma w sobie wbudowany kontroler stacji dyskietek i82077, a aha1540 - nie ma. Są to karty typu busmaster i mają parametry do ustawienia swojej "uczciwości", która jest używana do dzielenia się szyną z innymi urządzeniami. Odpowiedni argument startowy wygląda następująco:


        aha1542=IOBASE[,buson,busoff[,dmaspeed]]

Możliwe wartości IOBASE to: 0x130, 0x134, 0x230, 0x234, 0x330, 0x334. Klony oryginalnych kart mogą przyjmować inne wartości.

Wartości buson i busoff odnoszą się do liczby mikrosekund przez jaką karta przejmuje kontrolę nad szyną ISA. Wartościami domyślnymi są: buson - 11us, busoff - 4us, tak aby inne karty (jak np. ISA LANCE Ethernet) miały szansę się dostać do szyny ISA.

Wartość dmaspeed odnosi się do prędkości (w MB/s), z jaką działają transfery DMA (Direct Memory Access). Wartością domyślną jest 5 MB/s. Nowe typy kart pozwalają na ustawienie tej wartości programowo, starsze - poprzez zworki. Możesz podać wartość do 10 MB/s zakładając, że twoja płyta główna to wytrzyma. Eksperymentuj ostrożnie jeśli używasz wartości większych od 5 MB/s.

Kontrolery aha274x, aha284x, aic7xxx ("aic7xxx=")

Kontrolery te przyjmują argument w postaci:


        aic7xxx=extended,no_reset

Wartość extended, jeśli jest różna od zera, określa czy tłumaczenie geometrii dużych dysków jest włączone czy nie. Argument no_reset, jeśli jest różny od zera, informuje sterownik, aby nie resetować szyny SCSI podczas ustawiania kontrolera.

Kontroler SCSI AdvanSys. ("advansys=")

Sterownik AdvanSys przyjmuje do czterech adresów I/O, które będą przeszukiwane w celu znalezienia karty SCSI AdvanSys. Zauważ, że wartości te (jeśli są używane) nie wpływają w żaden sposób na wykrywanie EISA czy PCI. Mają znaczenie tylko w przypadku kart ISA i VLB. Dodatkowo, jeśli sterownik został skompilowany z włączoną opcją śledzenia, poziom śledzenia może być ustawiony poprzez dodanie parametru 0xdeb[0-F]. Znaki 0-F pozwalają na ustawienie poziomu śledzenia na jeden z 16 poziomów.

Kontroler Always IN2000. ("in2000=")

W przeciwieństwie do innych adapterów SCSI, ten adapter używa przedrostków w postaci łańcuchów ASCII dla swoich wartości liczbowych. Oto lista jego parametrów:

IOPORT:ADDR - gdzie ADDR jest adresem I/O karty (zwykle bez ROM-u).

NORESET - Nie ma dodatkowych parametrów. Zapobiega zresetowaniu szyny SCSI podczas startu.

NOSYNC:X - X jest maską bitów, gdzie pierwsze siedem bitów odpowiada siedmiu możliwym sterownikom SCSI (bit 0 - urządzeniu #0, itd). Ustaw dany bit, aby zapobiec synchronicznym negocjacjom na tym urządzeniu. Standardowo synchroniczne negocjacje są wyłączone w sterowniku dla wszystkich urządzeń.

PERIOD:NS - NS jest minimalną ilością nanosekund w cyklu transferu danych SCSI. Domyślną wartością jest 500; inne akceptowane wartości to 250 i 1000.

DISCONNECT:X - X=0 - nie pozwalaj na odłączenia, X=1 - rób adaptacyjne odłączenia, X=2 - zawsze pozwalaj na odłączenia.

DEBUG:X - jeśli zdefiniowano symbol "DEBUGGING_ON" X jest maską bitów, która ustawia różne sposoby wydruku śledzenia - odnośnie konkretnych wartości zajrzyj do pliku /linux/drivers/scsi/in2000.h.

PROC:X - jeśli zdefiniowano symbol "PROC_INTERFACE", X jest maską bitów, która określa jak działa interfejs /proc i co robi - odnośnie konkretnych wartości zajrzyj do pliku /linux/drivers/scsi/in2000.h.

Oto niektóre przykładowe użycia tego argumentu:


        in2000=ioport:0x220,noreset
        in2000=period:250,disconnect:2,nosync:0x03
        in2000=debug:0x1e
        in2000=proc:3

Sprzęt na podstawie AMD AM53C974. ("AM53C974=")

W przeciwieństwie do innych sterowników ten nie przyjmuje parametrów I/O, IRQ, czy DMA. (Ponieważ AM53C974 jest urządzeniem PCI, nie ma potrzeby tego robić) W zamian za to, podawane parametry używane są do ustawiania trybów i prędkości transferu, które mają być używane pomiędzy adapterem a urządzeniem docelowym. Najlepiej opisać to przykładem:


        AM53C974=7,2,8,15

Linijka ta zostałaby zinterpretowana następująco: Do komunikacji pomiędzy kontrolerem o numerze SCSI-ID 7 a urządzeniem o numerze SCSI-ID 2 mają być użyte: transfer - 8MHz w trybie synchronicznym z maksimum 15-bajtowym offsetem. Więcej szczegółów znajduje się w pliku linux/drivers/scsi/README.AM53C974.

Kontrolery SCSI BusLogic z jądrem w wersji 1.2. ("buslogic=")

W starszych wersjach jądra, sterownik buslogic akceptuje tylko jeden parametr, który jest adresem I/O. Ma to być jedna z następujących wartości: 0x130, 0x134, 0x230, 0x234, 0x330, 0x334.

Kontroler SCSI BusLogic z jądrem w wersji 2.x. ("BusLogic=")

W wersjach jądra 2.x, sterownik BusLogic przyjmuje wiele parametrów. (!!! Uważaj na wielkość liter w argumencie !!!). Następujący opis jest wzięty bezpośrednio ze sterownika Leonarda N. Zubkoffa ze źródeł jądra 2.x.

Argumentem startowym dla tego sterownika jest jego nazwa "BusLogic=" (jeszcze raz przypominam o zachowaniu wielkości liter), po której następuje lista parametrów liczbowych oddzielonych przecinkami oraz ewentualnie lista parametrów łańcuchowych także oddzielonych przecinkami. Większa ilość argumentów "BusLogic=" może być użyta w systemach z większą ilością adapterów BusLogic.

Pierwsza liczba określa adres I/O, pod którym znajduje się kontroler. Jeśli nie jest podana, wartością domyślną jest 0, co oznacza aby resztę wartości odnieść do pierwszego znalezionego kontrolera BusLogic. Jeśli podane zostaną jakiekolwiek parametry adresowe I/O wtedy standardowe przeszukiwanie nie odbywa się.

Druga liczba określa głębokość kolejki (Tagged Queue), która ma być użyta dla urządzenia docelowego, które obsługuje kolejkowanie. Głębokość kolejki jest ilością poleceń SCSI jaka jest możliwa do umieszczenia w kolejce poleceń do wykonania. Jeśli parametr ten nie jest podany, wartością domyślną jest 0, co oznacza użycie wartości wykrytej automatycznie opartej na całkowitej głębokości kolejki adaptera i numerze, typie, prędkości oraz możliwościach wykrytego urządzenia docelowego. Dla kontrolerów wymagających buforów bounce ISA, głębokość kolejki jest automatycznie ustawiana na BusLogic_TaggedQueueDepth_B, aby uniknąć nadmiernej prealokacji pamięci na bufory bounce DMA. Urządzenia docelowe, które nie obsługują kolejkowania, używają głębokości kolejki BusLogic_UntaggedQueueDepth.

Trzecia liczba określa czas stabilizacji szyny w sekundach. Jest to ilość czasu do odczekania pomiędzy twardym resetem kontrolera, który inicjuje reset szyny SCSI a wykonaniem polecenia SCSI. Jeśli nie jest ona podana, wartością domyślną jest 0, co oznacza użycie BusLogic_DefaultBusSettleTime.

Czwarta liczba określa opcje lokalne. Jeśli nie jest ona podana, wartością domyślną jest 0. Zauważ, że opcje lokalne odnoszą się tylko do specyficznych kontrolerów.

Piąta liczba określa opcje globalne. Jeśli nie jest ona podana, wartością domyślna jest 0. Zauważ, że opcje globalne odnoszą się do wszystkich kontrolerów.

Parametry łańcuchowe podaje się w celu kontrolowania kolejkowania, naprawy błędów i wyszukiwania kontrolera.

Parametr odnośnie kolejkowania zaczyna się od "TQ:" i pozwala na wyraźne podanie czy kolejkowanie jest dopuszczone na urządzeniu docelowym, które je obsługuje. Następujące opcje tego parametru są dozwolone:

TQ:Default - kolejkowanie będzie dopuszczone i oparte na firmowej wersji kontrolera BusLogic i na tym czy wartość głębokości kolejki pozwala na kolejkowanie poleceń.

TQ:Enable - kolejkowanie będzie dozwolone dla wszystkich urządzeń docelowych na danym kontrolerze zamazując wszelkie limity, które wynikałyby z ustawień firmowych.

TQ:Disable - kolejkowanie będzie niedozwolone dla wszystkich urządzeń docelowych na danym adapterze.

TQ:<Per-Target-Spec> - kolejkowanie będzie kontrolowane indywidualnie dla każdego urządzenia docelowego. <Per-Target-Spec> - ciąg znaków "N" i "X". "Y" zezwala na kolejkowanie, "N" nie pozwala na nie, a "X" używa wartości domyślnej opartej na wersji firmowej. Pierwszy znak odnosi się do urządzenia 0, drugi - do urządzenia 1 itd. Jeśli ciąg znaków "Y", "N" i "X" nie pokrywa wszystkich urządzeń docelowych, dla urządzeń nie pokrytych używany jest znak "X" czyli wartość domyślna.

Zauważ, że wyraźne żądanie kolejkowania może prowadzić do problemów; możliwość ta została wprowadzona, aby wyłączać kolejkowanie dla urządzeń docelowych, które nie obsługują go poprawnie.

Parametr odnośnie naprawy błędów zaczyna się od "ER:" i pozwala na wyraźne zezwolenie uruchamiania sekwencji naprawy błędów kiedy wywołane zostanie polecenie ResetCommand z powodu niepowodzenia wykonania jakiegoś polecenia SCSI. Dostępne są następujące opcje dla tego parametru:

ER:Default - sekwencja naprawy błędów wybierze pomiędzy twardym resetem a resetem szyny w zależności od zaleceń podsystemu SCSI.

ER:HardReset - sekwencja naprawy błędów zainicjuje twardy reset adaptera, który także spowoduje reset szyny SCSI.

ER:BusDeviceReset - sekwencja naprawy błędów wyśle do urządzenia docelowego powodującego błąd polecenie resetujące szynę. Jeśli sekwencja naprawy błędów jest ponownie inicjowana dla tego urządzenia docelowego i żadne polecenie SCSI do tego urządzenia nie wykonało się poprawnie od momentu wysłania polecenia resetującego, wtedy zostanie zainicjowany twardy reset.

ER:None - sekwencja naprawy błędów zostanie zatrzymana. Opcja ta powinna być podana tylko jeśli reset szyny SCSI i reset szyny powodują całkowite i nieodwracalne zawieszenie urządzenia docelowego.

ER:<Per-Target-Spec> - sekwencja naprawy błędów będzie kontrolowana indywidualnie dla każdego urządzenia docelowego. <Per-Target-Spec> jest ciągiem znaków "H", "B" i "N". "D" powoduje zachowanie domyślne, "H" - twardy reset, "B" - reset szyny, "N" - zatrzymanie sekwencji naprawy błędów. Pierwszy znak odnosi się do urządzenia 1, drugi - do drugiego, itd. Jeśli ciąg znaków nie pokrywa wszystkich urządzeń docelowych, wtedy dla urządzeń nie pokrytych przyjmuje się "D" czyli zachowanie domyślne.

Parametry odnośnie przeszukiwania adaptera są następujące:

NoProbe - nie przeprowadzać żadnego przeszukiwania - żadne kontrolery BusLogic nie zostaną znalezione.

NoProbeISA - nie przeprowadzać standardowego przeszukiwania adresów I/O ISA - wykryte zostaną tylko kontrolery PCI.

NoSortPCI - kontrolery PCI zostaną ponumerowane wg. porządku ustalonego przez PCI BIOS, ignorując jakiekolwiek ustawienia opcji AutoSCSI "Use Bus and Device # For PCI Scanning Seq.".

Karty EATA SCSI. ("eata=")

Od późnych wersji 2.0 jądra, sterownik EATA przyjmuje argument startowy, który specyfikuje adres bazowy I/O, który ma być przeszukiwany. Forma tego argumentu to:


        eata=iobase1[,iobase2][,iobase3]...[,iobaseN]

Sterownik będzie przeszukiwał adresy w takiej kolejności w jakiej zostały podane.

Future Domain TMC-8xx, TMC-950. ("tmc8xx=")

Algorytm wyszukujący dla tych urządzeń SCSI szuka zainstalowanego BIOS-u, a jeśli taki nie jest zainstalowany, karta nie zostanie znaleziona. Albo jeśli sygnatura twojego BIOS-u nie zostanie rozpoznana wtedy karta także nie zostanie znaleziona. W tych przypadkach będziesz musiał użyć argumentu startowego w formie:


        tmc8xx=mem_base,irq

Wartość mem_base określa ilość pamięci przeznaczonej na odwzorowanie obszaru I/O używanego przez daną kartę. Zwykle jest to jedna z poniższych wartości:
0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000.n

Future Domain TMC-16xx, TMC-3260, AHA-2920. ("fdomain=")

Sterownik wykrywa te karty na podstawie znanych sygnatur ROM BIOS-ów. Pełną listę znanych BIOS-ów znajdziesz w pliku linux/drivers/scsi/fdomain.c, jak i wiele innych informacji. Jeśli twój BIOS nie jest znany, to możesz podać parametry bezpośrednio w formie:


        fdomain=iobase,irq[,scsi_id]

Port równoległy IOMEGA / sterownik ZIP. ("ppa=")

Ten argument przeznaczony jest dla kontrolera SCSI portu równoległego SCSI, który jest wbudowany w sterownik IOMEGA ZIP. Może także działać z oryginalnym urządzeniem IOMEGA PPA3. Argument startowy dla tego sterownika ma formę:


        ppa=iobase,speed_high,speed_low,nybble

Wszystkie wartości oprócz IOBASE są opcjonalne. Jeśli chcesz zmieniać którąś z tych trzech opcjonalnych wartości lepiej przeczytaj plik linux/drivers/scsi/README.ppa.

Kontrolery oparte na NCR5380. ("ncr5380=")

W zależności od twojej karty, 5380 może odwzorowywać albo porty I/O albo pamięć. (Adres poniżej 0x400 zwykle oznacza odwzorowywanie adresów I/O, ale PCI i EISA używają adresów I/O powyżej 0x3FF.) W każdym z przypadków podajesz adres, numer IRQ i numer kanału DMA. Przykładem dla karty z odwzorowywaniem portów I/O może być:


      ncr5380=0x350,5,3

Jeśli karta nie używa IRQ, wtedy podajemy 255 (0xFF) jako numer IRQ. Wartość 254 (0xFE) oznacza automatyczne wykrycie numeru przerwania. Więcej szczegółów znajdziesz w pliku linux/drivers/scsi/README.g_NCR5380.

Kontrolery oparte na NCR53c400. ("ncr53c400=")

Kontroler ten jest obsługiwany przez ten sam sterownik co opisany wyżej 5380. Argument startowy przyjmuje identyczne wartości za wyjątkiem DMA, którego 53c400 nie używa.

Kontrolery oparte na NCR53c406a. ("ncr53c406a=")

Argument startowy tego sterownika ma formę:


        ncr53c406a=PORTBASE,IRQ,FASTPIO

gdzie IRQ i FASTPIO są parametrami opcjonalnymi. Wartość przerwania = 0, wyłącza użycie przerwania. Wartość FASTPIO = 1 włącza użycie instrukcji insl i outsl zamiast instrukcji jedno-bajtowych inb i outb. Sterownik może także przyjmować DMA jako opcję podczas kompilacji.

Pro Audio Spectrum. ("pas=16")

PAS16 używa układu SCSI NCR5380, a nowsze modele obsługują konfigurację bezzworkową. Argument startowy ma postać:


        pas16=iobase,irq

Jedyną różnicą jest to, że możesz podać numer przerwania 255 (0xFF), które poinformuje sterownik, żeby pracował bez używania przerwania, aczkolwiek przy utracie jakości. IOBASE ma zwykle wartość 0x388.

Seagate ST-0x ("st0x=")

Algorytm wyszukiwania dla tych kontrolerów szuka zainstalowanego BIOS-u, a jeśli takiego nie znajdzie, lub jeśli sygnatura w BIOS-ie nie zostanie rozpoznana, karta nie zostanie zidentyfikowana. W takich przypadkach musisz użyć argumentu startowego w formie:


        st0x=mem_base,irq

Wartość mem_base określa obszar adresów I/O odwzorowywany, którego używa karta. Jest to zwykle jedna z poniższych wartości: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000.

Trantor T128. ("t128=")

Te karty są także oparte na układzie NCR5280 i akceptują następujące parametry:


        t128=mem_base,irq

Wartości dla mem_base to z reguły:
0xcc000, 0xc8000, 0xdc000, 0xd8000.

Karta Ultrastor SCSI. ("u14-34f=")

Zauważ, że zdaje się, że są dwa niezależne sterowniki dla tej karty, tj. CONFIG_SCSI_U14_34F, który używa u14-34f.c i CONFIG_SCSI_ULTRASTOR, który używa ultrastor.c. u14-34f jest tym (w późnych jądrach 2.0), który przyjmuje argument startowy w formie:


        u14-34f=iobase1[,iobase2][,iobase3]...[,iobaseN]

Sterownik będzie przeszukiwał adresy w podanej kolejności.

Karty Western Digital WD7000. ("wd7000=")

Sterownik dla wd7000 szuka znanego łańcucha BIOS ROM i zna kilka standardowych ustawień konfiguracji. Jeśli ustawienia te nie są poprawne albo masz nierozpoznaną wersję BIOS-u, możesz użyć argumentu startowego w formie:


        wd7000=irq,dma,iobase

4.3 Kontrolery SCSI nie przyjmujące parametrów.

Obecnie następujące karty nie przyjmują żadnych argumentów startowych. W niektórych wypadkach możesz na siłę zmienić wartości, edytując kod źródłowy sterownika, jeśli już musisz.

        Adaptec aha1740 (próbkowanie EISA),
        NCR53c7xx,8xx (PCI, oba sterowniki),
        Qlogic Fast (0x230, 0x330),
        Qlogic ISP (PCI)

5. Dyski twarde.

Ta sekcja wymienia wszystkie argumenty startowe związane ze standardowymi dyskami twardymi takimi jak: MFM/RLL, ST-506, XT i IDE. Zauważ, że oba sterowniki IDE jak i ST-506 akceptują ten sam argument: "hd=".

5.1 Parametry dla dysków i CD-ROM-ów IDE.

Sterownik IDE akceptuje wiele parametrów, od określenia geometrii dysku do obsługi zaawansowanych, czy źle wykonanych układów kontrolerów. Poniżej wymienione są wszystkie możliwe argumenty startowe. Aby dowiedzieć się więcej na temat szczegółowego opisu naprawdę powinienieś zajrzeć do pliku linux/Documentation/ide.txt, z którego to streszczenie zostało wyciągnięte.


      "hdx=" - jest rozpoznawalny przez wszystkie "x" od "a" do "h",
      jak np. "hdc".
      
      "idex=" - jest rozpoznawalny przez wszystkie "x" od "0" do "3",
      jak np. "ide1".
      
      "hdx=noprobe" - napęd może być, ale go nie szukaj,
      "hdx=none" - napędu nie ma, zignoruj CMOS i nie szukaj go,
      "hdx=nowerr" - zignoruj bit WRERR_STAT w tym napędzie,
      "hdx=cdrom" - napęd jest obecny i jest CD-ROM-em,
      "hdx=cyl,head,sect" - napęd jest obecny z podaną geometrią,
      "hdx=autotune" - sterownik będzie próbował ustawić prędkość
        interfejsu na najszybsze obsługiwane PIO jeśli jest to możliwe
        tylko dla tego napędu. Nie jest to obsługiwane przez wszystkie
        układy, i całkiem prawdopodobne, że będzie sprawiało kłopoty
        przy starszych/dziwnych napędach IDE.
        
      "idex=noprobe" - nie próbuj używać tego interfejsu,
      "idex=base" - szukaj interfejsu w podanym adresie, gdzie base
        to przeważnie 0x1F0 lub 0x170 a "ctl" to "base"+0x206,
      "idex=base,ctl" - określenie base i ctl,
      "idex=base,ctl,irq - określenie base, ctl i irq,
      "idex=autotune" - sterownik będzie próbował ustawić prędkość
        interfejsu na najszybsze obsługiwane PIO, dla wszystkich
        napędów na tym interfejsie. Nie jest to obsługiwane przez wszystkie
        układy, i całkiem prawdopodobne, że będzie sprawiało kłopoty
        przy starszych/dziwnych napędach IDE,
      "idex=noautotune" - sterownik nie będzie próbował ustawić
        prędkości interfejsu. Jest to zachowanie standardowe
        większości układów oprócz cmd640.
      "idex=serialize" - nie nakładaj operacji na idex i ide(x^1).

Następujące parametry są ważne TYLKO dla ide0, a wartości domyślnych dla portów base i ctl nie wolno zmieniać.


        "ide0=dtc2278"          : szukaj/obsługuj interfejs DTC2278,
        "ide0=ht6560b"          : szukaj/obsługuj interfejs HT6560B,
        "ide0=cmd640_vlb"       : *WYMAGANE* dla kart VLB z układem CMD640,
                          (nie dla PCI - wykrywane automatycznie)
        "ide0=qd6580"           : szukaj/obsługuj interfejs qd6580,
        "ide0=ali14xx"          : szukaj/obsługuj układy ali14xx (ALI M1439/M1445),
        "ide0=umc8672"          : szukaj/obsługuj układy umc8672,

Wszystko inne jest odrzucane z informacją "BAD OPTION" (czyli "zła opcja").

5.2 Parametry standardowego sterownika ST-506. ("hd=")

Standardowy sterownik dysku może zaakceptować parametry dotyczące geometrii dysków podobnych do sterownika IDE. Aczkolwiek zauważ, że spodziewa się on tylko trzech wartości (C/H/S) - jedna mniej lub więcej i po cichutku cię zignoruje. Akceptuje on tylko argument "hd=", tak, że "hda=", "hdb=" itd. nie są brane pod uwagę. Format tego argumentu to:


        hd=cyls,heads,sects

gdzie cyls to ilość cylindrów, heads - głowic; sects - sektorów. Jeśli są zainstalowane dwa dyski, należy powyższe powtórzyć z geometrią dysku drugiego.

5.3 Parametry sterownika dysku XT. ("xd=")

Jeśli jesteś na tak nieszczęśliwym miejscu i używasz jednej z tych starych kart, które przenoszą dane z zabójczą prędkością dochodzącą w porywach do 125kB/s WYRZUĆ JĄ NATYCHMIAT I KUP NOWĄ !!! A poważnie. Algorytm wyszukiwania dla tych kart szuka zainstalowanego BIOS-u, a jeśli takiego nie znajdzie, lub jeśli sygnatura w BIOS-ie nie zostanie rozpoznana, karta nie zostanie zidentyfikowana. W takich przypadkach musisz użyć argumentu startowego w formie:


        xd=type,irq,iobase,dma_chan

Wartość type określa konkretnego wykonawcę karty, i jest jedną z: 0=generic; 1=DTC; 2,3,4=Western Digital, 5,6,7=Seagate; 8=OMTI. Jedyną różnicą pomiędzy różnymi typami tego samego wykonawcy jest łańcuch w BIOS-ie używany do autodetekcji, który nie jest używany jeśli jest podany typ.

Funkcja xd_setup() nie sprawdza wartości, i przyjmuje, że wpisałeś wszystkie cztery. Nie załamuj się. Tutaj jest przykład dla kontrolera WD1002 z wyłączonym/usuniętym BIOS-em, używającym domyślnych parametrów kontrolera XT:


        xd=2,5,0x320,3

6. CD-ROM-y (Napędy inne niż SCSI/ATAPI/IDE).

Ta sekcja wymienia wszystkie możliwe argumenty startowe odnoszące się do CD-ROM-ów. Zauważ, że nie zawierają się tutaj CD-ROM-y typu SCSI czy IDE/ATAPI. Przeczytaj odpowiednią sekcję dla tych CD-ROM-ów.

Zauważ też, że większość z tych CD-ROM-ów ma pliki z dokumentacją, które powinieneś przeczytać. Wszystkie są w katalogu linux/Documentation/cdrom.

6.1 Interfejs Aztech. ("aztcd=")

Składnia argumentu dla tej karty to:


        aztcd=iobase[,magic_number]

Jeśli ustawisz parametr magic_number na 0x79 sterownik będzie próbował się uruchomić i uruchomi się w przypadku nieznanego typu urządzenia firmowego. Wszystkie inne wartości są ignorowane.

6.2 Interfejs Sony CDU-31A i CDU-33A. ("cdu31a=")

Ten interfejs CD-ROM-u znajduje się na niektórych kartach dźwiękowych Pro Audio Spectrum i innych kartach obsługujących interfejs Sony. Składnia tego argumentu to:


        cdu31a=iobase,[irq[,is_pas_card]]

Podając wartość IRQ = 0 informujesz sterownik, że przerwania sprzętowe nie są obsługiwane (jak na niektórych kartach PAS). Jeśli twoja karta obsługuje przerwania, powinieneś ich użyć ponieważ zmniejszają użycie procesora na karcie.

Jeśli używasz karty Pro Audio Spectrum podaj parametr "is_pas_card" jako PAS, a jeśli nie to nie powinieneś go wcale podawać.

6.3 Interfejs Sony CDU-535. ("sonycd535=")

Składnia argumentu dla tego interfejsu to:


        sonycd535=iobase[,irq]

Zero może być użyte dla wartości iobase jako "znak zajmujący miejsce" (bez żadnego znaczenia dla sterownika) jeśli ktoś chce podać wartość IRQ.

6.4 Interfejs GoldStar. ("gscd=")

Składnia argumentu dla tego interfejsu to:


        gscd=iobase

gdzie iobase jest adresem I/O.

6.5 Interfejs ISP16. ("isp16=")

Składnia argumentu dla tego interfejsu to:


        isp16=[port[,irq[,dma]]][[,]drive_type]

Podając 0 dla IRQ lub DMA informujesz sterownik, że nie będą one używane. Wartość parametru drive_type to jedna z: noisp16, Sanyo, Panasonic, Sony i Mitsumi. Podanie wartości noisp16 wyłączy sterownik zupełnie.

6.6 Interfejs Mitsumi Standard. ("mcd=")

Składnia argumentu dla tego interfejsu to:


        mcd=iobase,[irq[,wait_value]]

Wartość wait_value jest używana jako wewnętrzna wartość timeout dla tych, którzy mają problemy ze swoimi napędami i może, ale nie musi być zaimplementowana. Zależy to od definicji odpowiedniego symbolu podczas kompilacji.

6.7 Interface Mitsumi XA/MultiSession. ("mcdx=")

Obecnie ten "eksperymentalny" sterownik ma funkcję ustawiającą, ale nie przyjmuje ona jeszcze żadnych parametrów (1.3.15). (Od tłumacza: W wersji jądra 2.0.18 także nie przyjmuje.) Odnosi się on do tego samego sprzętu co powyżej tyle, że ma trochę rozszerzone możliwości.

6.8 Optics Storage Interface. ("optcd=")

Składnia argumentu dla tej karty to:


        optcd=iobase

6.9 Interfejs Philips CM206. ("cm206=")

Składnia argumentu dla tej karty to:


        cm206=[iobase][,irq]

Sterownik zakłada, że liczby między 3 a 11 to numery przerwań IRQ, a liczby pomiędzy 0x300 a 0x370 to porty I/O, tak więc możesz podać jeden lub oba argumenty w jakimkolwiek porządku. Można także podać cm206=auto, aby sterownik sam znalazł kartę.

6.10 Interfejs Sanyo. ("sjcd=")

Składania argumentu dla tej karty to:


        sjcd=iobase[,irq[,dma_channel]]

6.11 Interfejs SoundBlaster Pro. ("sbpcd=")

Składnia argumentu dla tej karty to:


        sbpcd=iobase,type

gdzie type jest jednym z łańcuchów: SounBlaster, LaserMate lub SPEA. (Wielkość liter jest ważna !!!). I/O base jest adresem I/O interfejsu CD-ROM-u, a nie interfejsu dźwiękowego.

7. Inne urządzenia.

Wszelkie urządzenia, które nie zaliczają się do wyżej wymienionych zostały wrzucone tutaj.

7.1 Urządzenia Ethernet. ("ether=")

Różne sterowniki przyjmują różne parametry, ale wszystkie przyjmują przynajmniej nazwę, IRQ oraz adres I/O. W najbardziej ogólnej postaci wyglądą to mniej więcej tak:


        ether=irq,iobase[,param_1[,param_2,...param_8]]],name

Pierwszy argument, który nie jest liczbą uznawany jest za nazwę. Wartości param_n zwykle mają różne znaczenie dla każdej karty czy sterownika. Typowe wartości to adres pamięci dzielonej, określenie interfejsu, kanały DMA itp.

Najpopularniejszym użyciem tego parametru jest wymuszenie szukania drugiej karty Ethernet ponieważ domyślnie szuka się tylko jednej. Tak wyglądałby przykład:


        ether=0,0,eth1

Zauważ, że wartości 0 przy IRQ i adresie I/O w powyższym przykładzie informują sterownik, aby sam ich poszukał.

WAŻNA UWAGA DLA UŻYTKOWNIKÓW MODUŁÓW: Powyższe nie wymusi poszukiwania drugiej karty jeśli używasz sterownik-a/ów jako moduł (zamiast wkompilować je w jądro). Większość dystrybucji Linux-owych jest zbudowana na bazie małego statycznego jądra i dużej ilości ładowalnych modułów. Parametr ether= odnosi się tylko do sterowników wkompilowanych w jądro.

Zauważ też, że Ethernet-HowTo ma pełną dokumentację na temat używania większej ilości kart i na temat parametrów dla konkretnych kart. Zainteresowani powinni zajrzeć do tamtego dokumentu, aby dowiedzieć się szczegółów na temat swojej karty.

7.2 Sterownik do dyskietek. ("floppy=")

Jest wiele parametrów do tego sterownika i wszystkie są wymienione w pliku /linux/drivers/block/README.fd. Następująca informacja została zaczerpnięta bezpośrednio stamtąd.


      floppy=mask,allowed_drive_mask

Ustawia maskę bitów dopuszczonych napędów na mask. Domyślnie są to kanały 0 i 1 każdego kontrolera. Jest tak, ponieważ pewne niestandardowe urządzenia (płyty główne ASUS PCI) zmieniają układ znaków na klawiaturze kiedy próbują dostać się do kanału 2 czy 3. Ten parametr jest trochę przestarzały z powodu opcji CMOS-u.


      floppy=all_drives

Ustawia maskę bitów dopuszczonych napędów na wszystkie napędy. Użyj tego jeśli masz więcej niż dwa napędy podłączone do kontrolera dyskietek.


      floppy=asus_pci

Ustawia maskę bitów, aby dopuścić tylko kanały 0 i 1. (Wartość domyślna)


      floppy=daring

Informuje sterownik, że masz "dobrze zachowujący się" kontroler do dyskietek. Pozwala to na bardziej wydajną i płynniejszą pracę, ale może się nie udać przy niektórych kontrolerach. Może to przyspieszyć pewne operacje.


      floppy=0,daring

Informuje sterownik, aby używać kontrolera ostrożnie.


      floppy=one_fdc

Informuje sterownik, że masz tylko jeden kontroler. (wartość domyślna)


      floppy=two_fdc lub floppy=address,two_fdc

Informuje sterownik, że masz dwa kontrolery do dyskietek. Drugi sterownik znajduje się pod adresem address. Jeśli adres ten nie jest podany - przyjmuje się wartość domyślną, tj. 0x370.


      floppy=thinkpad

Informuje sterownik, że masz kontroler Thinkpad, który używa odwrotnego oznaczenia linii zmiany dyskietek.


      floppy=0,thinkpad

Informuje sterownik, że nie masz kontrolera Thinkpad.


      floppy=drive,type,cmos

Ustawia typ CMOS-u napędu drive na type. Dodatkowo, napęd ten jest dopuszczony w masce bitów. Jest to przydatne jeśli masz więcej niż dwa napędy (w fizycznym cmos-ie można opisać tylko dwa), lub jeśli twój BIOS używa niestandardowych typów CMOS-u. Ustawienie CMOS-u na 0 dla pierwszych dwóch napędów (domyślnie) zmusza sterownik do czytania fizycznego CMOS-u dla tych napędów.


      floppy=unexpected_interrupts

Wyświetl informację ostrzegającą jeśli odebrano niespodziewane przerwanie. (zachowanie domyślne)


      floppy=no_unexpected_interrupts lub floppy=L40SX

Nie wyświetlaj informacji ostrzegającej kiedy odebrano niespodziewane przerwanie. Jest to potrzebne na niektórych laptopach IBM L40SX w pewnych trybach wyświetlania. (Wygląda na to, że jest jakaś interakcja pomiędzy grafiką a dyskietkami. Niespodziewane przerwania dotyczą wydajności i mogą być spokojnie ignorowane.)

7.3 Sterownik do dźwięku. ("sound=")

Sterownik dźwięku może także przyjmować parametry, które zmieniają wartości zapisane podczas kompilacji. Nie jest to zalecane ponieważ jest to operacja skomplikowana. Jest (Była?) ona opisana w pliku linux/drivers/sound/Readme.Linux. Forma argumentu startowego dla sterownika dźwięku to:


        sound=urz1[,urz2[,urz3...[,urz11]]]

gdzie każda wartość urzN ma postać 0xTaaaID. Symbole oznaczają w tym formacie:

T - typ urządzenia: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401,

aaa - adres I/O szesnastkowo,

I - numer IRQ szesnastkowo (tj, 10=a, 11=b, ...),

D - kanał DMA.

Jak widzisz jest tu trochę bałaganu. Także lepiej wkompiluj swoje własne wartości w sterowniku. Podanie sound=0 spowoduje wyłączenie sterownika dźwięku zupełnie.

7.4 Sterownik do myszy Bus. ("bmouse=")

Ten sterownik przyjmuje tylko jeden parametr: jest to wartość IRQ.

7.5 Sterownik do myszy MS Bus. ("msmouse=")

Ten sterownik przyjmuje tylko jeden parametr: jest to wartość IRQ.

7.6 Sterownik do drukarki, ("lp=")

Co do jąder w wersji większej niż 1.3.75, możesz przekazać sterownikowi jakich portów używać a jakich nie używać. To drugie jest przydatne jeśli nie chcesz, żeby sterownik zajął wszystkie dostępne porty, aby inne sterowniki (np.: PLIP, PPA) mogły ich używać.

Forma tego argumentu to pary adres_I/O,IRQ. Na przykład takie wywołanie lp=0x3BC,0,0x378,7 spowoduje użycie portu o adresie 0x3BC w trybie bezprzerwaniowym, i przerwania 7 dla portu o adresie 0x378. Port o adresie 0x278 (jeśli taki by był) nie byłby przeszukiwany, ponieważ automatyczne przeszukiwanie ma miejsce tylko jeśli nie podano argumentu "lp". Aby wyłączyć sterownik od drukarki należy podać lp=0.

7.7 Sterownik do ICN ISDN. ("icn=")

Argument startowy dla tego sterownika to:


        icn=iobase,membase,icn_id1,icn_id2

gdzie iobase jest adresem portu I/O karty, membase jest adresem pamięci dzielonej karty, a dwa ostatnie parametry są unikalnymi łańcuchami identyfikującymi.

7.8 Sterownik do PCBIT ISDN. ("pcbit=")

Argument ten przyjmuje pary liczb w postaci:


        pcbit=membase1,irq1[,membase2,irq2]

gdzie membaseN jest adresem pamięci dzielonej N-tej karty, a irqN jest numerem przerwania N-tej karty. Wartościami domyślnymi są: IRQ = 5, membase = 0xD0000.

7.9 Sterownik do Teles ISDN. ("teles=")

Argument dla tego sterownika ma postać:


        teles=iobase,irq,membase,protocol,teles_id

gdzie iobase jest adresem portu I/O karty, membase jest adresem pamięci dzielonej karty, irq jest kanałem przerwania używanym przez kartę, a teles_id jest unikalnym łańcuchem identyfikującym.

7.10 Sterownik do DigiBoard. ("digi")

Sterownik ten przyjmuje łańcuch sześciu oddzielonych przecinkiem identyfikatorów lub liczb. Te sześć wartości to odpowiednio:

        Włącz/wyłącz kartę. (E/D)
        Typ karty: PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)
        Włącz/wyłącz dodatkowe ustawienie zworkami. (E/D)
        Ilość portów na tej karcie.
        Adresy portów I/O tej karty (szesnastkowo jeśli używasz
                                     identyfikatorów łańcuchowych)
        Podstawa okna pamięci (szesnastkowo jeśli używasz
                               identyfikatorów łańcuchowych).

Oto poprawny przykład użycia tego argumentu (w obu formach: z łańcuchami i liczbami):


        digi=E,PC/Xi,D,16,200,D0000
        digi=1,0,0,16,512,851968

Wartościami domyślnymi są: adres I/O - 0x200, adres pamięci dzielonej - 0xD0000. W przypadku tego sterownika nie jest dokonywane automatyczne wyszukiwanie urządzenia. Więcej szczegółów znajdziesz w pliku linux/Documentation/digiboard.txt.

7.11 Sterownik wieloportowej karty szeregowej RISCom/8. ("riscom8=")

Jądro może obsłużyć do czterech kart podając cztery unikalne wartości dla portów I/O dla każdej indywidualnej karty. Dalsze szczegóły znajdziesz w pliku linux/Documentation/riscom8.txt.

7.12 Baycom Serial/Paralell Radio Modem. ("baycom=")

Argument dla tego sterownika ma postać:


        baycom=modem,io,irq,opcje[,modem,io,irq,opcje]

Podając modem=1 informujesz, że masz urządzenie ser12, modem=2 - urządzenie par96. Opcje=0 oznacza sprzęt DCD, opcje=1 - oprogramowanie DCD. I/O i IRQ są jak zwykle: adresem portów I/O i numerem IRQ. Więcej szczegółów na temat tego sterownika znajdziesz w pliku /linux/drivers/char/README.baycom.

8. Zakończenie.

Jeśli znalazłeś jakieś przestarzałe informacje, to napisz do autora tego dokumentu:

gpg109@rsphy1.anu.edu.au

9. Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl/pub/Linux/JTZ/

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany wprowadzone przez tłumacza w tym dokumencie to odnośniki do polskich serwerów ftp i WWW. doc-linux-pl-2002.06.14.orig/html/Bootdisk-HOWTO.pl.html0100644000175000017500000032542306773242740021333 0ustar covencoven The Linux Bootdisk HOWTO

The Linux Bootdisk HOWTO

Autor: Tom Fawcett fawcett@croftj.net
v3.4, maj 1999
Wersja polska: Adam Byrtek alpha@irc.pl
v1.2, lipiec 1999


Dokument ten opisuje, jak tworzyć swoje własne dyskietki startowe dla Linuxa. Dyskietki te mogą zostać użyte jako dyskietki ratunkowe, lub w celu przetestowania nowych składników systemu. Jeśli nie czytałeś jeszcze Linux FAQ i powiązanych dokumentów, takich jak Linux Installation HOWTO czy Linux Install Guide, to nie powinieneś tworzyć dyskietek startowych. Jeśli potrzebujesz jedynie dyskietki ratunkowej na wypadek awarii, to zajrzyj do dodatku Gotowe dyskietki.

1. Przedmowa.

Uwaga: Ten dokument może być przestarzały. Jeśli upłynęło więcej niż sześć miesięcy od daty podanej na stronie tytułowej, to poszukaj nowej wersji tego dokumentu na stronie Linux Documentation Project http://metalab.unc.edu/LDP/HOWTO/Bootdisk-HOWTO.html.

Dokument ten powinien być czytelny w formacie tekstowym, jednak dzięki wykorzystaniu typografii wygląda on znacznie lepiej w formacie Postscript (.ps) lub HTML. Zachęcamy do wybrania jednego z tych formatów. Wersja w formacie Info jest tak okrojona, że staje się bezużyteczna.

1.1 Uwagi na temat wersji.

Graham Chapman (grahamc@zeta.org.au) napisał oryginalną wersję Bootdisk-HOWTO i opiekował się tym dokumentem aż do wersji 3.1. Tom Fawcett (fawcett@croftj.net) dodał sporo materiału na temat jądra 2.0 i jest on opiekunem tego dokumetu od wersji 3.2. W dokumencie pozostało sporo oryginalnego tekstu Chapmana.

Dokument ten jest napisany w oparciu o jądro Linux-a w wesji 2.0 lub późniejszej. Jeśli posiadasz starsze jądro (1.2.xx lub niższe), to zajrzyj do poprzedniej wersji Bootdisk-HOWTO, którą możesz znaleźć na Stronie domowej Grahama Chapmana.

Informacje zawarte w tym dokumencie dotyczą platformy Intel. Wiele z nich może być również poprawnych dla innych procesorów, ale nie mamy na ten temat żadnych danych. Prosimy o kontakt ludzi mających doświadczenia z dyskietkami startowymi na innych platformach sprzętowych.

1.2 Opinie.

Czekamy na wszystkie opinie, czy to dobre, czy złe, na temat zawartości tego dokumentu. Staraliśmy się, aby informacje w nim umieszczone były jak najbardziej pewne i dokładne. Daj nam znać gdy znajdziesz jakieś błędy.

Dziekujemy ludziom, którzy pomagali nam przysyłając poprawki czy sugestie. Ich wkład uczynił ten dokument o wiele lepszym, niż gdybyśmy tworzyli go sami.

Wysyłaj komentarze, sugestie i poprawki na adres email autora podany powyżej. Nie mam nic przeciwko odpowiadaniu na pytania, jednak radzę najpierw przeczytać dział Rozwiązywanie problemów.

1.3 Rozpowszechnianie.

Copyright © 1995,1996,1997,1998,1999 by Tom Fawcett and Graham Chapman. Ten dokument może zostać rozpowszechniany na warunkach ustalonych przez Licencję Linux Documentation Project, znajdującą się pod adresem http://metalab.unc.edu/LDP/HOWTO/Bootdisk-HOWTO.html. Skontaktuj się z autorem, jeśli nie jesteś w stanie otrzymać licencji.

Ta dokumentacja jest darmowa. Jest rozpowszechniana z nadzieją, że okaże się użyteczna, jednak bez żadnej gwarancji.

2. Wprowadzenie.

Dyskietki startowe są przydatne w wielu sytuacjach, takich jak:

Istnieje kilka sposobów otrzymywania dyskietek startowych:

Niektórzy używają tej ostatniej metody i robią wszystko sami. Dzięki temu jeśli coś pójdzie nie tak, to wiadomo co zrobić aby to naprawić. Dodatkowo jest to bardzo dobra metoda na nauczenie się jak działa Linux.

Ten dokument zakłada podstawową znajomość zasad administracji systemu Linux. Przykładowo powinieneś wiedzieć coś katalogach, systemach plików i dyskietkach. Powinieneś wiedzieć, jak używać poleceń mount i df. Powinieneś wiedzieć, do czego służą i jak wyglądają pliki /etc/passwd i fstab. Powinieneś wiedzieć, że większość poleceń w tym HOWTO powinna być wykonywana gdy jesteś zalogowany jako root.

Konstruowanie swojej własnej dyskietki startowej od zera może być skomplikowane. Jeśli nie czytałeś Linux FAQ i powiązanych dokumentów, takich jak Linux Installation HOWTO i Linux Installation Guide, to nie powinieneś tworzyć dyskietek startowych. Jeśli potrzebujesz jedynie działającej dyskietki startowej na wypadek awarii, to o wiele łatwiej będzie ściągnąć gotową. Aby je znaleźć, zajrzyj do dodatku Gotowe dyskietki.

3. Dyskietki startowe i proces startu systemu.

Dyskietka startowa jest po prostu miniaturowym systemem Linux na dyskietce. Musi on spełniać wiele funkcji wykonywanych przez zwykły, pełnowymiarowy system Linux. Zanim spróbujesz stworzyć własną dyskietkę, musisz zrozumieć podstawy startowania systemu Linux. Prezentujemy tutaj jedynie podstawy, które są wystarczające do zrozumienia reszty tego dokumentu. Wiele szczegółów i opcji alternatywnych zostało ominiętych.

3.1 Proces startu systemu.

Wszystkie komputery PC rozpoczynają proces startu systemu przez wykonanie kodu znajdującego się w pamięci ROM (konkretnie w BIOS-ie), który ładuje jeden sektor z sektora 0, cylindra 0 napędu startowego. Napęd startowy to zazwyczaj pierwszy napęd dyskietek (oznaczony A: w DOS-ie i /dev/fd0 w Linuxie). Następnie BIOS próbuje wykonać zawartość tego sektora. Na większości dyskietek startowych sektor 0, cylinder 0 zawiera:

Jeśli jądro Linuxa zostało przekopiowane bezpośrednio na dyskietkę, to pierwszy sektor dyskietki będzie jednocześnie pierwszym sektorem jądra. Kod znajdujący się w pierwszym sektorze będzie kontynuował proces startu ładując resztę jądra z dyskietki.

Gdy jądro zostanie w całości załadowane, rozpoczyna ono inicjalizację sterowników. Następnie próbuje ono załadować i zamontować główny system plików z jednego z urządzeń. Główny system plików to po prostu system montowany jako ``/''. Jądro musi wiedzieć, gdzie szukać głównego systemu plików, jeśli nie znajdzie tam obrazu który można załadować, zawiesza się.

W niektórych sytuacjach -- często w czasie startowania z dyskietki -- główny system plików zostaje załadowany do ramdysku, czyli do pamięci RAM która jest traktowana przez system tak, jakby była dyskiem. Istnieją dwa powody dla których system ładuje się do ramdysku. Po pierwsze, RAM jest o wiele szybszy niż dyskietka, tak więc operacje systemowe są wykonywane szybko. Po drugie, jądro może załadować skompresowany system plików z dyskietki i rozpakować go do ramdysku, dzieki czemu na dyskietce można zmieścić o wiele więcej plików.

Gdy główny system plików zostanie załadowany i zamontowany, ujrzysz taką informację:

      VFS: Mounted root (ext2 filesystem) readonly.

Następnie system odnajduje w głównym systemie plików program init (w katalogu /bin lub /sbin) i wykonuje go. init odczytuje swój plik konfiguracyjny /etc/inittab, szuka lini oznaczonej sysinit i wykonuje podany tam skrypt. Skrypt sysinit to najczęściej plik /etc/rc, /etc/init.d/boot lub podobny. Ten skrypt to seria komend powłoki, które inicjalizują podstawowe usługi systemu, oraz wykonują czynności takie jak:

Ten skrypt często wywołuje inne skrypty odpowiadające za inicjalizację poszczególnych modułów. Na przykład, w typowej procedurze inicjalizacyjnej systemów zgodnych z SysV, katalog /etc/rc.d/ zawiera złożoną strukturę podkatalogów, których pliki odpowiedzialne są za załączanie i wyłączanie poszczególnych usług systemu. Jednak na dyskietce startowej skrypty sysinit są na ogół bardzo proste.

Gdy skrypt sysinit zakończy pracę, kontrola powraca do programu init, który następnie wchodzi na domyślny poziom pracy, podany w pliku inittab przy słowie kluczowym initdefault. Linie poziomów pracy na ogół wyszczególniają program taki jak getty, który jest odpowiedzialny za obsługę komunikacji przez konsolę i terminale. To własnie program getty wypisuje znaną wszystkim linię zachęty ``login:''. Wywołuje on następnie program login, który przeprowadza weryfikacje i ustanawia sesję użytkownika.

3.2 Typy dysków.

Po zapoznaniu się z podstawami procesu startowania systemu, możemy zdefiniować różne typy dyskietek. Dzielimy je na cztery rodzaje.

startowa

Dyskietka zawierająca jądro które może zostać uruchomione. Dyskietka może zostać użyta do wystartowania jądra, które następnie może załadować główny system plików z innego dysku. Jądro na dyskietce startowej zwykle musi wiedzieć, gdzie znaleźć swój główny system plików.

Często dyskietka startowa ładuje główny system plików z innej dyskietki, ale jest także móżliwe ładowanie głównego systemu plików z twardego dysku. Najczęściej robi się to po to, aby przetestować nowe jądro (w rzeczywistości podczas kompilacji nowego jądra polecenie ``make zdisk'' utworzy taką dyskietkę startową).

główna

Dyskietka z systemem plików zawierającym pliki wymagane do uruchomienia systemu Linux. Taka dyskietka nie musi zawierać jądra czy programu ładującego.

Gdy jądro zostało już wystartowane, główna dyskietka może zostać użyta, aby uruchomić system niezależnie od innego dysku. Zazwyczaj główna dyskietka jest automatycznie kopiowana do ramdysku. Znacznie przyspiesza to dostęp do danych, oraz zwalnia miejsce w stacji na dyskietkę narzędziową.

startowa/główna

Dyskietka zawierająca zarówno jądro, jak i główny system plików. Innymi słowy zawiera ona wszystko, co potrzebne do wystartowania i uruchomienia Linuxa bez twardego dysku. Zaletą takich dyskietek jest ich zwięzłość -- wszystko znajduje się na jednej dyskietce. Jednak rozmiary wszystkich elementów ciągle się powiększają, więc coraz trudniej zmieścić wszystko na jednej dyskietce, nawet przy użyciu kompresji.

narzędziowa

Dyskietka ta zawiera system plików, ale nie jest on jednak montowany jako główny system plików. Jest to dodatkowa dyskietka z danymi. Używa się jej aby dostarczyć dodatkowe programy narzędziowe niemieszczące się na głównej dyskietce.

Gdy mówimy o ``tworzeniu dyskietki startowej'', mamy na myśli tworzenie zarówno części startowej (jądra) jak i głównej (plików). Mogą one znajdować się razem lub osobno. Najbardziej elastycznym rozwiązaniem w przypadku dyskietek ratunkowych jest użycie osobnej dyskietki startowej i głównej, oraz jednej lub więcej dyskietki narzędziowej.

4. Budowanie głównego systemu plików.

Tworzenie głównego systemu plików wymaga wyselekcjonowania plików niezbędnych dla działania systemu. W tym rozdziale opiszemy, jak zbudować skompresowany główny system plików. Rzadziej spotykanym rozwiązaniem jest stworzenie nieskompresowanego systemu plików na dyskietce, która będzie mogła zostać bezpośrednio zamontowana jako główna. Taka alternatywa jest opisana w rozdziale Systemy plików bez ramdysku.

4.1 Wiadomości ogólne.

Główny system plików musi zawierać to wszystko, co potrzebne jest do prawidłowego działania pełnego systemu Linux. Aby tego dokonać, dyskietka musi spełniać minimalne wymagania dla systemu Linux, to znaczy musi posiadać:

Oczywiście system staje się użyteczny tylko wtedy, gdy można coś na nim uruchomić. Dyskietka główna w zasadzie staje się użyteczna tylko wtedy, gdy można wykonać poniższe czynności:

Opiszemy jak stworzyć skompresowany system plików, nazwany tak dlatego, że jest on spakowany na dyskietce a podczas startu systemu zostaje zdekompresowany do ramdysku. W skompresowanym systemie plików można zmieścić sporo plików (około sześć megabajtów) na standardowej dyskietce 1.44MB. System plików jest większy niż dyskietka, więc nie można go tworzyć na dyskietce. Musimy stworzyć go gdzie indziej, skompresować a następnie skopiować na dyskietkę.

4.2 Tworzenie systemu plików.

Aby stworzyć główny system plików potrzebne jest wolne urządzenie, na którym muszą zmieścić się pliki przed kompresją. Potrzebujesz urządzenia o rozmiarze co około czterech megabajtów. Istnieje kilka możliwości:

Gdy już wybrałeś jedną z tych możliwości, przygotuj URZĄDZENIE za pomocą polecenia:

      dd if=/dev/zero of=URZĄDZENIE bs=1k count=3000

Ta komenda wyzerowuje urządzenie. Ten krok jest bardzo ważny, ponieważ system plików zostanie później skompresowany, więc niewykorzystany obszar powinien zostać wypełniony zerami, aby otrzymać jak najlepszą kompresję.

Następnie stwórz system plików. Jądro Linuxa rozpoznaje i kopiuje z dyskietki głównej do ramdysku dwa rodzaje systemów plików. Są to minix i ext2, jednak preferowany jest ten drugi. Jeśli zdecydujesz się na ext2, to przydatna może okazać się opcja -i, dzięki której możesz stworzyć więcej i-węzłów niż jest to przyjęte domyślnie. Zalecane jest użycie opcji -i 2000, aby nie zabrakło ci i-węzłów. Ewentualnie możesz zaoszczędzić sporo i-węzłów poprzez usunięcie wielu niepotrzebnych plików z katalogu /dev. Na dyskietce 1.44MB polecenie mke2fs domyślnie utworzy 360 i-węzłów. Na mojej dyskietce ratunkowej wystarcza w zupełności 120 i-węzłów, jednak gdy dołączysz wszystkie urządzenia z katalogu /dev z pewnością przekroczysz 360. Użycie skompresowanego systemu plików daje do dyspozycji więcej miejsca, czyli jednocześnie większą ilość domyślnych i-węzłów, ale ciągle może okazać się konieczna redukcja liczby plików czy zwiększenie liczby i-węzłów.

Tak więc polecenie które użyjesz powinno wyglądać mniej więcej tak:

      mke2fs -m 0 -i 2000 URZĄDZENIE

(Jeśli korzystasz z urządzenia zwrotnego, to w miejsce URZĄDZENIA powinieneś podać nazwę pliku. W tej sytuacji program mke2fs zapyta czy naprawdę chcesz to zrobić, odpowiedz tak).

Program mke2fs automatycznie wykryje ilość wolnego miejsca i odpowiednio się skonfiguruje. Opcja -m 0 zapobiega rezerwowaniu miejsca dla użytkownika root, powiększając w ten sposób dostępny obszar na dysku.

Następnie zamontuj urządzenie:

      mount -t ext2 URZĄDZENIE /mnt

(Musisz stworzyć katalog /mnt jeśli jeszcze nie intnieje.) W pozostałych działach wszystkie nazwy katalogów będą podawane wzgędem katalogu /mnt.

4.3 Zapełnianie systemu plików.

Poniżej znajduje się minimalny zestaw katalogów dla twojego głównego systemu plików:

(Pokazana tutaj struktura katalogów odnosi się jedynie do głównych dyskietek. Prawdziwe systemy Linux używają bardziej złożonych i rygorystycznych zasad ustalania gdzie plik powinien się znajdować, zwanych Filesystem Hierarchy Standard).

Trzy katalogi w głównym systemie plików pozostaną puste, więc wystarczy je utworzyć komendą mkdir. Katalog /proc to po prostu miejsce, w którym umieszczony zostanie system plików proc. Katalogi /mnt i /usr są tylko miejscami montowania innych systemów plików gdy dyskietka startowa/główna już działa. Także te katalogi wystarczy jedynie utworzyć.

Pozostałe cztery katalogi są opisane w następnych działach.

/dev

Katalog /dev zawiera specjalne pliki dla każdego wykorzystywanego przez system urządzenia, katalog ten jest obowiązkowy. Jest to zwykły katalog, więc może zostać stworzony poleceniem mkdir. Jednak poszczególne pliki urządzeń muszą zostać utworzone w nietypowy sposób, za pomocą komendy mknod.

Istnieje jednak droga na skróty, możesz skopiować zawartość istniejącego już katalogu /dev i skasować niepotrzebne pliki. Podczas kopiowania musisz użyć opcji -R, dzięki temu nie będzie kopiowana zawartość plików. Upewnij się, że użyłeś R pisanego wielką literą. Jeśli użyjesz małej litery -r, prawdopodobnie będziesz kopiował zawartość wszystkich swoich twardych dysków, a raczej tyle, ile się z nich zmieści na dyskietce. Tak więc uważaj i użyj komedy:

      cp -dpR /dev /mnt

przyjmując że system plików jest zamontowany w /mnt. Opcja dp spowoduje, że połączenia symboliczne zostaną skopiowane jako połączenia, a nie odpowiadające im pliki, oraz zostaną zachowane oryginalne atrybuty plików, włączając w to prawa własności.

Jeśli jednak masz ochotę trochę się pomęczyć, użyj komendy ls -l aby wyświetlić główne i pomniejsze numery potrzebnych urządzeń, a następnie utwórz je w katalogu docelowym używając polecenia mknod.

Gdy pliki zostaną skopiowane, warto sprawdzić czy posiadasz wszystkie potrzebne urządzenia. Na przykład ftape korzysta z napędów taśmowych, więc musisz skopiować to urządzenie jeśli chcesz mieć dostęp do napędu taśmowego z dyskietki startowej.

Pamiętaj, że każdy plik urządzenia wymaga jednego i-węzła, więc i-węzły są cennym zasobem, szególnie w przypadku systemów dyskietkowych. Dobrym pomysłem jest usunięcie niepotrzebnych urządzeń z katalogu /dev dyskietki. Wiele urządzeń jest kompletnie nieprzydatnych w konkretnych systemach. Na przykład jeśli nie posiadasz żadnych dysków SCSI, możesz bez żadnych problemów usunąć wszystkie urządzenia zaczynające się na sd. Jeśli nie masz zamiaru korzystać z portu szeregowego, możesz usunąc wszystkie pliki zaczynające się od cua.

Upewnij się, że posiadasz następujące urządzenia: console, kmem, mem, null, ram, tty1.

/etc

Ten katalog musi zawierać pliki konfiguracyjne. Zwykle pliki w tym katalogu dzielą się na trzy grupy:

  1. Zawsze wymagane przez system, np. rc, fstab, passwd.
  2. Wymagane w niektórych sytuacjach.
  3. Pozostałe śmieci.

Pliki, które nie są najważniejsze, mogą zostać znalezione za pomocą komendy:

      ls -ltru

Wyświetla ona listę plików posortowaną według daty ostatniego dostępu, więc jeśli plik nie był czytany, to znaczy że można go pominąć na głównej dyskietce.

Na mojej głównej dyskietce mam około 15 plików konfiguracyjnych. Zmniejsza to ilość pracy, którą trzeba poświecić na poprawę trzch grup plików:

  1. Pliki, które należy skonfigurować:
    1. rc.d/* -- skrypty startu systemu i zmiany poziomu pracy
    2. fstab -- lista systemów plików, które należy zamontować
    3. inittab -- parametry dla programu init, uruchamianego przy starcie systemu.
  2. Pliki, które należy poprawić:
    1. passwd -- spis użytkowników, katalogów domowych itd.
    2. group -- grupy użytkowników
    3. shadow -- hasła użytkowników, możesz nie posiadać tego pliku.
    4. termcap -- the terminal capability database.
    Gdy liczy się bezpieczeństwo, pliki passwd i shadow powinny zostać okrojone, aby uniemożliwić kopiowanie haseł poza system. Upewnij się, że plik passwd zawiera przynajmniej użytkownika root. Jeśli chcesz umożliwić logowanie się innym użytkownikom, to upewnij się czy istnieją ich powłoki i katalogi domowe. termcap, baza danych terminali, zwykle liczy kilkaset kilobajtów. Wersja znajdująca się na dyskietce powinna być okrojona tak, aby zawierała jedynie używany terminal(e), czyli najczęściej jedynie wpis linux-console.
  3. Pozostałe pliki. Na razie działają, więc można zostawić je w spokoju.

Teraz trzeba skonfigurować jedynie dwa pliki, ich zawartość jest zaskakująco mała.

Plik inittab powinien być zmodyfikowany tak, aby pozycja sysinit uruchamiała rc, czy jakiś inny skrypt startowy. Dodatkowo, jeśli nie chcesz pozwolić użytkownikom logować się przez port szeregowy, dodaj znak komentarza przed każdą linią getty zawierającą na końcu urządzenie ttys lub ttyS. Pozostaw porty tty, abyś mógł się zalogować z konsoli.

Minimalny plik inittab wygląda tak:

      id:2:initdefault:
      si::sysinit:/etc/rc
      1:2345:respawn:/sbin/getty 9600 tty1
      2:23:respawn:/sbin/getty 9600 tty2

Plik inittab określa, co system robi w niektórych sytuacjach i na poszczególnych poziomach pracy. Upewnij się, że istnieją wszystkie nazwy plików wymienione w inittab, init zawiesi się bez żadnego komunikatu o błędzie, jeśli nie znajdzie któregoś z wymienionych tam programów.

Należy sprawdzić, czy komendy znajdujące się w pliku inittab odpołują się do programów, które istnieją w odpowiednim katalogu. Jeśli umieścisz programy na dyskietce korzystając ze spisu w dodatku Spis plików przykładowej dyskietki głównej i skopiujesz plik inittab z dysku bez dokonania poprawek, to prawdopodobnie ponad połowa wpisów w tym pliku będzie się odwoływała do nieistniejących programów czy nieprawidłowych katalogów.

Niektóre programy nie mogą zostać przeniesione gdzie indziej, ponieważ inne programy szuają ich w ściśle określonym miejscu. Na przykład w moim systemie /etc/shutdown wymaga /etc/reboot. Jeśli przeniosę reboot do /bin/reboot i wykonam komendę shutdown, to wystąpi błąd, ponieważ nie może on znaleźć pliku reboot.

Jeśli chodzi o resztę, to skopiuj pozostałe pliki tekstowe oraz potrzebne programy z katalogu /etc. Jako przykład może służyć dodatek Spis plików przykładowej dyskietki startowej. Prawdopodobnie wystarczy skopiować tylko te pliki, które tam wypisano, jednak poszczególne systemy bardzo się różnią, więc nie możesz być pewien, czy nazwy pliku na tej liście pokrywają się z nazwami w twoim systemie. Jedyną pewną metodą jest sprawdzenie w pliku inittab, które pliki są wymagane.

Większość systemów posiada katalog /etc/rc.d/ zawierający skrypty dla poszczególnych poziomów pracy. Aby system działał, wymagany jest przynajmniej jeden skrypt rc, jednak prościej skopiować plik inittab i katalog /etc/rc.d z istniejącego systemu i wyciąć niepotrzebne dla systemu dyskietkowego pozycje ze skryptów w katalogu rc.d.

/bin i /sbin

Katalog /bin jest odpowiednim miejscem dla dodatkowych programów użytkowych wykonujących podstawowe operacje, takich jak ls, mv, cat czy dd. W dodatku Spis plików przykładowej dyskietki startowej znajdziesz przykładową listę plików katalogu /bin i /sbin. Nie zawiera ona jednak programów potrzebnych do odtwarzania plików z kopii zapasowych, takich jak cpio, tar i gzip, ponieważ, aby zaoszczędzić miejsce, umieszczam je na osobnej dyskietce narzędziowej. Gdy główna/startowa dyskietka zostaje wystartowana, zostaje ona skopiowana do ramdysku, pozostawiając miejsce w napędzie do zamontowania kolejnej dyskietki --- dyskietki narzędziowej. Zwykle montuję ją w katalogu /usr.

Tworzenie dyskietki narzędziowej jest opisane dalej, w dziale Budowanie dyskietki narzędziowej. Zalecane jest skopiowanie tych samych wersji programów, co użyte do stworzenia kopii zapasowej, aby nie zdarzyło się, że nie możesz odtworzyć swojej kopii, ponieważ wersje są niekompatybilne.

Upewnij się, że skopiowałeś następujące programy: init, getty lub ich odpowiedniki, login, mount, jakąś powłokę potrafiącą uruchomić skrypty rc, dowiązanie sh do powłoki.

/lib

W katalogu /lib umieszczasz potrzebne biblioteki dzielone oraz programy służące do ich ładowania. Jeśli wymagane biblioteki nie zostaną odnalezione w katalogu /lib, to system się nie zostanie wystartowany. Przy odrobinie szczęścia możesz ujrzeć komunikat mówiący o błędzie.

Prawie każdy program wymaga co najmniej biblioteki libc, libc.so.N, gdzie N to numer wersji. Sprawdz w swoim katalogu /lib. Plik libc.so.N jest na ogół symbolicznym dowiązaniem do aktualnej wersji:

 % ls -l /lib/libc*
 -rwxr-xr-x   1 root     root      4016683 Apr 16 18:48 libc-2.1.1.so*
 lrwxrwxrwx   1 root     root           13 Apr 10 12:25 libc.so.6 ->

W tym przypadku potrzebny jest plik libc-2.1.1.so. Aby dowiedzieć się, jakie jeszcze biblioteki są potrzebne, powinieneś sprawdzić wszystkie pliki wykonywalne które chcesz umieścić na dyskietce i sprawdzić ich zależności komendą ldd. Na przykład:

      % ldd /sbin/mke2fs
              libext2fs.so.2 => /lib/libext2fs.so.2
              libcom_err.so.2 => /lib/libcom_err.so.2
              libuuid.so.1 => /lib/libuuid.so.1
              libc.so.5 => /lib/libc.so.5

Wymagany jest każdy plik po prawej stronie. Pamiętaj, że wymienione biblioteki mogą być tylko symbolicznymi dowiązaniami.

Zauważ, że niektóre biblioteki są całkiem spore i mogą nie zmieścić się w głównym systemie plików. Na przykład biblioteka libc.so wspomniana wyżej liczy około 4MB. Prawdopodobnie będziesz musiał okroić biblioteki przed kopiowaniem. Zajrzyj do działu Redukowanie głównego systemu plików po więcej informacji.

Dodatkowo w katalogu /lib musisz umieścić program ładujący biblioteki. Jest to plik ld.so (dla bibliotek a.out) lub ld-linux.so (dla bibliotek ELF). Jeśli nie jesteś pewien którego z nich potrzebujesz, wykonaj komendę file z nazwą biblioteki jako parametr. Na przykład:

        % file/lib/libc.so.4.7.2 /lib/libc.so.5.4.33 /lib/libc-2.1.1.so
        /lib/libc.so.4.7.2: Linux/i386 demand-paged executable (QMAGIC), stripped
        /lib/libc.so.5.4.33: ELF 32-bit LSB shared object, Intel 80386, version 1, stripped
        /lib/libc-2.1.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1, not stripped

QMAGIC oznacza, że wersja 4.7.2 jest biblioteką a.out, a ELF oznacza, że wersja 5.4.33 i 2.1.1 jest biblioteką ELF.

Skopiuj odpowiedni program ładujący biblioteki do tworzonego głównego systemu plików. Powinieneś dokładnie sprawdzić, czy posiadasz wszystkie konieczne biblioteki i odpowiedni program ładujący. Jeśli jądro nie potrafi załadować potrzebnej biblioteki, na ogół zawiesza się bez żadnego komunikatu.

4.4 Providing for PAM and NSS.

System może wymagać dynamicznie ładowanych bibliotek niewidocznych dla ldd.

PAM (Pluggable Authentication Modules).

Jeśli twój system korzysta z PAM (Pluggable Authentication Modules), to musisz się na to przygotować, ponieważ w przeciwnym wypadku nie będziesz mógł się zalogować. Ogólnie mówiąc PAM to skomplikowany modularny sposób uwierzytelniania użytkowników i kontroli ich dostępu do usług. Jeśli w katalogu /etc znajduje się katalog pam.conf lub pam.d, musisz dołączyć pewne minimalne wsparcie dla PAM. (Możesz także uruchomić ldd na pliku login, jeśli w wyjściu znajdzie się tekst libpam.so, potrzebujesz PAM).

Na szczęście kwestie bezpieczeństwa nie są zazwyczaj istotne przy tworzeniu dyskietki startowej, jako że każdy posiadający fizyczny dostęp do komputera może z nim zrobić wszystko. Tak więc możesz po prostu wyłączyć PAM tworząc w głównym systemie plików prosty plik /etc/pam.conf, taki jak ten:


OTHER   auth       optional     /lib/security/pam_permit.so
OTHER   account    optional     /lib/security/pam_permit.so
OTHER   password   optional     /lib/security/pam_permit.so
OTHER   session    optional     /lib/security/pam_permit.so

Skopiuj także plik /lib/security/pam_permit.so do głównego systemu plików. Ta biblioteka liczy jedynie 8KB.

Zauważ, że taka konfiguracja daje każdemu pełny dostęp do plików i usług w systemie. Jeśli z jakiś względów bezpieczeństwo dyskietki startowej jest dla ciebie ważne, musisz skopiować niektóre lub wszystkie pliki konfiguracyjne PAM z twardego dysku. Przeczytaj uważnie dokumentację PAM i skopuj wszystkie potrzebne biblioteki z /lib/security do głównego systemu plików.

Musisz także skopiować na dyskietkę plik /lib/libpam.so, ale o tym już wiesz, ponieważ uruchomiłeś ldd na /bin/login, który pokazał zależność.

NSS (Name Service Switch).

Jeśli korzystasz z glibc (aka libc6), będziesz musiał przygotować się na usługi nazw, w przeciwnym wypadku nie będziesz mógł się zalogować. Plik /etc/nsswitch.conf kontroluje dostęp do bazy danych dla poszczególnych usług. Jeśli nie planujesz korzystać z usług przez sieć (np. DNS i NIS), musisz przygotować jedynie prosty plik nsswitch.conf, taki jak ten:


     passwd:     files 
     shadow:     files 
     group:      files 
     hosts:      files
     services:   files
     networks:   files
     protocols:  files
     rpc:        files
     ethers:     files
     netmasks:   files     
     bootparams: files
     automount:  files 
     aliases:    files
     netgroup:   files
     publickey:  files

Określa to, że każda usługa będzie udostępniana jedynie poprzez lokalne pliki. Będziesz musiał także dołączyć plik /lib/libnss_files.so.1, który będzie dynamicznie ładowany aby obsłużyć żądania.

Jeśli chcesz mieć dostęp do sieci z dyskietki startowej, możesz utworzyć bardziej rozbudowany plik nsswitch.conf. Aby dowiedzieć się więcej, zajrzyj na stronę man nsswitch. Pamiętaj że musisz dołączyć plik /lib/libnss_usługa.so.1 dla każdej usługi.

4.5 Moduły.

Jeśli posiadasz jądro obsługujące moduły, to musisz zastanowić się, które moduły mogą być potrzebne po wystartowaniu systemu. Prawdopodobnie potrzebujesz modułów ftape i zftape jeśli posiadasz napęd taśmowy, modułów do urządzeń SCSI jeśli takie posiadasz i ewentualnie modułów do obsługi PPP i SLIP jeśli chcesz mieć dostęp do sieci.

Te moduły powinny zostać umieszczone w katalogu /lib/modules. Powinieneś także dołączyć programy insmod, rmmod i lsmod. Jeśli chcesz automatycznie ładować moduły, to możesz dołączyć modprobe, depmod i swapout. Jeśli korzystasz z kerneld, to dołącz go razem z plikiem /etc/conf.modules.

Jednak największą zaletą korzystania z modułów jest możliwość przeniesienia niektórych z nich na dystkietkę narzędziową, oszczędzając w ten sposób miejsce na głównej dyskietce. Gdy potrzebna jest obsługa wielu różnych urządzeń, takie podejście jest lepsze niż budowa jednego wielkiego jądra z wieloma wbudowanymi sterownikami.

Pamiętaj, aby wystartować skompresowany system plików ext2, musisz posiadać wbudowaną w jądro obsługę ext2 i ramdysku. Nie mogą znajdować się one w postaci modułów.

4.6 Końcowe detale.

Pewne programy systemowe, takie jak login, do poprawnego działania wymagają pliku /var/run/utmp i katalogu /var/log. Tak więc:

      mkdir -p /mnt/var/{log,run}
      touch /mnt/var/run/utmp

Na koniec, gdy skopiowałeś już wszystkie wymagane biblioteki, uruchom program ldconfig aby odświeżyć plik /etc/ld.so.cache w głównym systemie plików. Plik ten informuje program ładujący gdzie znaleźć biblioteki. Aby odświeżyć ld.so.cache wykonaj następujące komendy:

      chdir /mnt; chroot /mnt /sbin/ldconfig

Polecenie chroot jest konieczne, ponieważ ldconfig zawsze odświeża plik cache dla głównego katalogu.

4.7 Kopiowanie na dyskietkę.

Gdy już skończyłeś tworzenie głównego systemu plików, odmontuj go, skopiuj do pliku i skompresuj:

      umount /mnt
      dd if=URZĄDZENIE bs=1k | gzip -v9 > rootfs.gz

Zostanie utworzony plik rootfs.gz który jest skompresowanym głównym systemem plików. Powinieneś sprawdzić, czy zmieści się na dyskietce, jeśli nie, to będziesz musiał cofnąć się i usunąć jakieś pliki. Dział Redukowanie głównego systemu plików zawiera kilka porad na ten temat.

5. Wybieranie jądra.

W tej chwili posiadasz skompresowany główny system plików. Następny krok to zbudowanie lub wybranie jądra. W wiekszości przypadków możliwe jest skopiowanie aktualnego jądra i wystartowanie z niego dyskietki. Jednak w niektórych przypadkach będziesz chciał stworzyć swoje własne jądro.

Pierwszym powodem jest jego rozmiar. Jeśli tworzysz pojedyńczą dyskietkę startową/główna, to jądro będzie jednym z największych plików na dyskietce, więc będziesz musiał jak najbardziej zredukować jego rozmiar. Aby zmniejszyć rozmiar jądra, skompiluj je z minimalną liczbą opcji konieczną do działania systemu. Powinieneś wyłączyć wszystko, co nie jest potrzebne. Można spokojnie wyrzucić obsługę sieci, jak również obsługę wszystkich napędów i innych urządzeń których nie potrzebujesz w czasie korzystania z dyskietki. Pamiętaj, że twoje jądro musi posiadać wbudowaną obsługę ramdysku oraz systemu plików ext2.

Po wybraniu minimalnej konfiguracji jądra, powinieneś zastanowić się co jeszcze może być ci potrzebne. Naczęściej korzysta się z dyskietki startowej aby sprawdzić i odzyskać uszkodzone dane w systemie plików, a do tego możesz potrzebować wbudowanej obsługi w jądrze. Na przykład jeśli swoje kopie zapasowe przechowujesz na taśmie używając Ftape, to jeśli utracisz swój system plików i napędy zawierające Ftape, nie będziesz mógł odtworzyć danych z taśm zapasowych. Będziesz musiał przeinstalować Linuxa, ściągnąć i przeinstalować ftape i dopiero wtedy odczytywać kopie zapasowe.

Generalnie chodzi o to, aby instalować w jądze obsługę wszystkich potrzebnych urządzeń wejścia/wyjścia.

Procedura kompilowania jądra jest opisana w dokumentacji dołączonej do jądra. Jest ona bardzo łatwa, najpierw zajrzyj do katalogu /usr/src/linux. Jeśli masz probemy ze skompilowaniem jądra, to raczej nie powinieneś brać się do tworzenia dyskietki startowej. Pamiętaj, aby skompresować jądro poleceniem ``make zImage''.

6. Składnie tego wszystkiego: tworzenie dyskietek.

W tym momencie powinieneś posiadać jądro oraz skompresowany główny system plików. Jeśli tworzysz dyskietkę startową/główną, sprawdź, czy oba pliki zmieszczą się na dyskietce. Jeśli tworzysz osobno dystkietkę startową i główną, sprawdź, czy główny system plików zmieści się na jednej dyskietce.

Powinieneś zdecydować, czy używać LILO do wystartowania jądra. Alternatywnym rozwiązaniem jest skopiowanie jądra bezpośrednio na dyskietkę i wystartowanie bez LILO. Zaletą korzystania z LILO jest to, że umożliwia on przekazanie pewnych parametrów do jądra które mogą być konieczne do inicjalizacji sprzętu. Sprawdź plik /etc/lilo.conf. Jeśli istnieje on i zawiera linię ``append=...'', prawdopodobnie musisz przekazać jakieś parametry. Wadą korzystania z LILO jest to, że tworzenie dyskietki jest bardziej skomplikowane, i zajmuje trochę więcej miejsca. Musisz utworzyć odrębny system plików, który nazwiemy systemem plików jądra, do którego skopiujesz jądro i kilka innych plików wymaganych przez LILO.

Jeśli zamierzasz korzystać z LILO, czytaj dalej. Jeśli chcesz skopiować jądro bezpośrednio na dyskietkę, przejdź do działu Przenoszenie jądra bez LILO.

6.1 Przenoszenie jądra z LILO.

Pierwszą rzeczą, która musisz zrobić, jest stworzenie małego pliku konfiguracyjnego dla LILO. Powinien on wyglądać mniej więcej tak:


      boot      =/dev/fd0
      install   =/boot/boot.b
      map       =/boot/map
      read-write
      backup    =/dev/null
      compact
      image     = KERNEL
      label     = Bootdisk
      root      =/dev/fd0

Znaczenia tych parametrów szukaj w dokumentacji LILO. Prawdopodobnie będziesz chciał również dodać do pliku linię append=... taką samą, jak w pliku /etc/lilo.conf na dysku twardym.

Zapisz ten plik jako bdlilo.conf.

Następnie musisz stworzyć mały system plików, który nazwiemy systemem plików jądra, aby odróżnić go od głównego systemu plików.

Najpierw sprawdź, jak duży powinien być ten system plików. Weź rozmiar twojego jądra w blokach (rozmiar pokazywany przez komendę ``ls -l KERNEL'' podzielony przez 1024 i zaokrąglony w górę) i dodaj 50. Około pięćdziesiąt bloków to obszar potrzebny na i-węzły oraz pozostałe pliki. Jeśli chcesz, możesz dokładnie obliczyć ten obszar, lub po prostu użyć liczby 50. Jeśli tworzysz osobno dyskietkę startową i główną, to możesz spokojnie przeznaczyć nawet więcej miejsca, jako że pierwsza dyskietka jest w całości przeznaczona na jądro. Nazwijmy tę liczbę BLOKI_JĄDRA.

Włóż dyskietkę do stacji dysków (przyjmiemy że jest nią /dev/fd0) i utwórz na niej system plików ext2:

      mke2fs -i 8192 -m 0 /dev/fd0 BLOKI_JĄDRA

Opcja ``-i 8192'' oznacza, że chcemy jeden inode co 8192 bajty. Następnie zamontuj system plików, usuń katalog lost+found oraz utwórz katalogi dev i boot dla LILO:

      mount /dev/fd0 /mnt
      rm -rf /mnt/lost+found
      mkdir /mnt/{boot,dev}

Następnie utwórz urządzenia /dev/null i /dev/fd0. Zamiast szukania ich numerów, możesz po prostu skopiować je z twardego dysku używając opcji -R:

      cp -R /dev/{null,fd0} /mnt/dev

LILO wymaga kopii swojego programu startującego, boot.b, który możesz przegrać z twardego dysku. Zwykle znajduje się on w katalogu /boot:

      cp /boot/boot.b /mnt/boot

Na koniec skopiuj plik konfiguracyjny LILO który utworzyłeś poprzednio oraz swoje jądro. Oba pliki mogą zostać umieszczone w głównym katalogu:

      cp bdlilo.conf KERNEL /mnt

W tej chwili w systemie plików jądra znajduje się wszystko co potrzebne dla LILO, więc jesteś teraz gotowy do uruchomienia go. Opcja -r oznacza instalowanie programu startującego w katalogu innym niż główny:

      lilo -v -C bdlilo.conf -r /mnt

LILO powinien zakończyć działanie bez żadnych błędów, następnie system plików powinien wyglądać podobnie jak poniżej:


total 361
  1 -rw-r--r--   1 root     root          176 Jan 10 07:22 bdlilo.conf
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:23 boot/
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:22 dev/
358 -rw-r--r--   1 root     root       362707 Jan 10 07:23 vmlinuz
boot:
total 8
  4 -rw-r--r--   1 root     root         3708 Jan 10 07:22 boot.b
  4 -rw-------   1 root     root         3584 Jan 10 07:23 map
dev:
total 0
  0 brw-r-----   1 root     root       2,   0 Jan 10 07:22 fd0
  0 crw-r--r--   1 root     root       1,   3 Jan 10 07:22 null

Nie przejmuj się, jeśli rozmiary plików sę nieco inne.

Następnie pozostaw dysk w napędzie i przenieś się do działu Konfiguracja słowa ramdysku.

6.2 Przenoszenie jądra bez LILO.

Jeśli nie korzystasz z LILO, to skopiuj jądro na dyskietkę startową używając komendy dd:

      % dd if=KERNEL of=/dev/fd0 bs=1k
      353+1 records in
      353+1 records out

W tym przykładzie dd zapisał 353 kompletne rekordy oraz 1 niekompletny, tak więc jądro zajmuje teraz pierwsze 353 bloki na dyskietce. Nazwij tę liczbę BLOKI_JĄDRA i zapamiętaj ją, ponieważ będzie ona potrzebna w następnym dziale.

Na koniec ustaw dyskietkę jako główne urządzenie i skonfigguruj je tak, aby było dostępne do zapisu i odczytu:

      rdev /dev/fd0 /dev/fd0
      rdev -R /dev/fd0 0

Pamiętaj, aby użyć opcji -R pisanej wielką literą w drugiej komendzie rdev.

6.3 Konfiguracja słowa ramdysku.

Wewnątrz obrazu jądra znajduje się słowo ramdysku, które mówi, gdzie znajduje się główny system plików, oraz zawiera pewne inne opcje. Słowo to można zmieniać za pomocą polecenia rdev, a interpretowane jest w następujący sposób:

      bity  0-10:     Przemieszczenie ramdysku, w blokach 1024-bajtowych
      bity 11-13:     nieużywane
      bit     14:     Flaga oznaczająca, że ramdysk na zostać załadowany
      bit     15:     Flaga oznaczająca, aby pytać przez ładowaniem
                      głównego systemu plików

Jeśli bit 15 jest ustawiony, to podczas startu zostaniesz poproszony o włożenie do napędu nowej dyskietki. Jest to konieczne w przypadku korzystania z dwóch dyskietek.

Istnieją dwa przypadki, w zależności od tego, czy budujesz pojedynczą dyskietkę startową/główną, czy dwie osobne dyskietki, startową i główną.

  1. Jeśli budujesz system na jednej dyskietce, to skompresowany główny system plików zostanie umieszczony zaraz za jądrem, więc przemieszczenie ramdysku będzie następnym wolnym blokiem za jądrem (czyli powinno wymosić tyle samo, ile BLOKI_JĄDRA). Bit 14 zostanie ustawiony na 1, a bit 15 będzie wynosił zero.
  2. Jeśli budujesz zestaw dwóch dyskietek, to główny system plików rozpocznie się w bloku zero drugiej dyskietki, więc przemieszczenie będzie wynosić zero. Bity 14 oraz 15 będą ustawione na 1.

Po skrupulatnych obliczniach wartości słowa ramdysku, ustaw ją poleceniem rdev -r. Upewnij się, że podałeś wartość dziesiętną. Jeśli korzystasz z LILO, to argumentem dla rdev powinna być ścieżka do jądra, np. /mnt/vmlinuz. Jeśli kopiowałeś jądro za pomocą polecenia dd, to użyj zamiast tego nazwę urządzenia stacji dysków (np. /dev/fd0).

      rdev -r JĄDRO_LUB_STACJA_DYSKÓW WARTOŚĆ

Jeśli korzystasz z LILO, odmontuj teraz dyskietkę.

6.4 Przenoszenie głównego systemu plików.

Ostatnim krokiem jest przeniesienie głównego systemu plików.

Moje gratulacje, dyskietki są już gotowe! Zawsze powninieneś przetestować swoje dyskietki startowe zanim odłożysz je na bok do czasu awarii! Jeśli coś się nie uda, czytaj dalej.

7. Rozwiązywanie problemów.

Po stworzeniu dyskietek kilka pierwszych prób wystartowania systemu często kończy się niepowodzeniem. Najlepszym podejściem podczas budowania głównego systemu plików jest łączenie elementów istniejącego systemu tak, aby system dyskietkowy przynajmiej wyświetlał komunikaty na konsoli. Gdy zacznie on komunikować się z tobą, jesteś już w połowie drogi do sukcesu, ponieważ możesz zobaczyć, co sprawia problemy i naprawić je pojedynczo aż system będzie działał poprawnie. Jeśli system po prostu wiesza się bez żadnego komunikatu, to odnalezienie przyczyny staje się trudne. Stworzenie systemu, który zostanie poprawnie wystartowany do momentu, w którym będzie mógł komunikować się z użytkownikiem, wymaga zainstalowania i skonfigurowania kilku komponentów. Zalecaną metoda badania problemu gdy system nie chce się komunikować z użytkownikiem jest następująca:

Gdy przeanalizujesz już wszystkie powyższe przypadki, możesz sprawdzić następujące pliki:

  1. Upewnij się, że istnieje plik /sbin/init lub /bin/init. Upewnij się, że ma on uprawnienia do wykonywania.
  2. Uruchom ldd init aby sprawdzić biblioteki wymagane przez init. Na ogół jest to jedynie libc.so, ale zawsze warto sprawdzić. Upewnij się, że istnieją wymagane biblioteki i program ładujący.
  3. Upewnij się, że posiadasz odpowiedni program ładujący biblioteki -- ld.so dla bibliotek a.out lub ld-linux.so dla bibliotek ELF.
  4. Sprawdź odwołania do getty (lub podobnego programu, jak agetty, mgetty czy getty_ps) w pliku inittab. Porównaj je z plikiem inittab na dysku twardym. Przejrzyj strony man używanych programów. Właśnie w pliku inittab może wystąpić najwięcej problemów, ponieważ jego składnia zależy od konkretnego systemu i wersji programu init. Jedynym rozwiązaniem jest przeczytanie stron man o init oraz inittab, prześledzenie, co dokładnie system robi po wystartowaniu. Sprawdź, czy w pliku /etc/inittab znajduje się pozycja inicjalizacji systemu. Zawiera ona ścieżkę do skryptu inicjalizacji systemu, który musi istnieć.
  5. Tak samo jak w przypadku init, uruchom ldd podając jako parametr twój program getty i sprawdź, czy istnieją wszystkie potrzebne biblioteki oraz program ładujący.
  6. Upewnij się, że dołączyłeś powłokę (np. bash czy ash), która potrafi wykonać wszystkie skrypty rc.
  7. Jeśli na dyskietce istnieje plik /etc/ld.so.cache, to odśwież go.

Jeśli init startuje, ale otrzymujesz komunikat:

      Id xxx respawning too fast: disabled for 5 minutes

pochodzi on z programu init i oznacza, że getty lub login kończą pracę zaraz po uruchomieniu. Sprawdz pliki getty i login i wszystkie potrzebne im biblioteki. Upewnij się, że ich wywołania w pliku /etc/inittab są prawidłowe. Jeśli otrzymujesz dziwne komunikaty od getty, może to oznaczać, że jego wywołanie z /etc/inittab jest nieprawidłowe. Opcje dla programów getty są zróżnicowane, nawet poszczególne wersje agetty posiadają niekompatybilne ze sobą opcje przy wywołaniu.

Jeśli podajesz poprawną nazwę użytkownika, ale system pyta natychmiast o inną nazwę, to problemem może być PAM bądź NSS. Zajrzyj do działu PAM i NSS. Problem może być także spowodowany tym, że korzystasz z haseł shadow, ale nie skopiowałeś pliku /etc/shadow na dyskietkę.

Jeśli próbujesz uruchomić jakiś program, przykładowo df, który znajduje się na dyskietce, ale otrzymujesz komunikat: df: not found, to sprawdź dwie rzeczy. Po pierwsze, upewnij się, że katalog w którym znajduje się program jest w zmiennej PATH. Po drugie, sprawdź, czy istnieją wszystkie potrzebne biblioteki oraz program ładujący.

8. Różne tematy.

8.1 Redukcja głównego systemu plików.

Czasem główny system plików jest zbyt duży, aby zmieścić się na dyskietce, nawet po kompresji. Poniżej podano kilka sposobów zmniejszenia rozmiaru systemu plików, uporządkowanych według efetywności:

Zwiększ gęstość dyskietki

Standardowo dyskietki są formatowane na 1440K, ale dostępne są formaty o większej gęstości. Program fdformat umożliwia formatowanie dyskietki na następujące wielkości: 1600, 1680, 1711, 1743, 1760, 1840 i 1920. Większość napędów 1440K obsługuje dyskietki 1722K, więc dla dyskietek startowych zawsze używam tego formatu. Zobacz stronę man fdformat oraz /usr/src/linux/Documentation/devices.txt.

Wymień powłokę

Najbardziej populare powłoki dla Linuxa, takie jak bash i tcsh, zajmują bardzo dużo miejsca i wymagają wielu bibliotek. Istnieją jednak alternatywne powłoki, takie jak ash, lsh, kiss czy smash, które są o wiele mniejsze i wymagają mniej (lub żadnych) bibliotek. Większość tych zastępczych powłok jest dostępna pod adresem http://metalab.unc.edu/pub/Linux/system/shells/. Upewnij się, że powłoka z której korzystasz potrafi wykonać wszystkie polecenia w plikach rc na dyskietce.

Obetnij biblioteki i programy

Biblioteki i programy są często nieobcięte (zawierają symbole dla debuggera). Taki plik po uruchomieniu na nim file będzie oznaczony jako `not stripped'. Podczas kopiowania programów do głównego systemu plików dobrym pomysłem jest korzystanie z polecenia:

      objcopy --strip-all ŹRÓDŁO CEL

Gdy kopiujesz biblioteki, użyj:

      objcopy --strip-debug ŹRÓDŁÓ CEL

Przenieś mniej ważne pliki na dyskietkę narzędziową

Jeśli jakieś programy nie są wymagane do wystartowania systemu i zalogowania się, to możesz przenieść je na dyskietkę narzędziową. Szczegółów szkukaj w dziale Tworzenie dyskietki narzędziowej. Możesz także zastanowić się nad przeniesieniem modułów na dyskietkę narzędziową.

8.2 Systemy plików bez ramdysku.

Dział Budowanie głównego systemu plików zawiera informacje na temat tworzenia skompresowanego głównego systemu plików, który po uruchomieniu systemu jest ładowany do ramdysku. Ta metoda posiada wiele zalet, więc jest często używana. Jednak niektóre systemy posiadają za mało pamięci RAM, w takich sytuacjach główny system plików może zostać zamontowany bezpośrednio, a nie kopiowany do ramdysku.

W sumie łatwiej stworzyć taki właśnie system plików niż skompresowany, ponieważ może on zostać zbudowany bezpośrednio na dyskietce, a nie na jakimś innym urządzeniu i nie musi on być kompresowany. Opiszemy tutaj ogólnie różnice w tworzeniu takiego właśnie systemu plików. Jeśli zdecydujesz się z niego korzystać, pamiętaj, że będziesz miał do dyspozycji o wiele mniej miejsca.

  1. Oblicz, ile wolnego miejsca pozostanie na główny system plików. Jeśli tworzysz pojedynczą dyskietkę startową/główną, to musisz zmieścić na niej wszystkie bloki jądra oraz wszystkie bloki głównego systemu plików.
  2. Korzystając z programu mke2fs utwórz na dyskietce główny system plików o odpowiedniej wielkości.
  3. Zapełnij system plików tak, jak to opisano w osobnym dziale.
  4. Gdy już skończysz, odmontuj system plików i przenieś go do pliku na dysku, ale nie kompresuj go.
  5. Przenieś jądro na dyskietkę, tak jak to opisano w osobnym dziale. Podczas obliczania słowa ramdysku wyzeruj bit 14, aby zaznaczyć, że główny system plików nie ma być ładowany do ramdysku. Uruchom rdev z odpowiednimi parametrami.
  6. Przenieś główny system plików tak, jak poprzednio.

Istnieje kilka dróg na skróty. Jeśli budujesz dwu-dyskietkowy zestaw, to możesz stworzyć kompletny system plików bezpośrednio na drugiej dyskietce, bez potrzeby przenoszenia go na twardy dysk i z powrotem. Jeśli budujesz pojedynczą dyskietkę startową/główną i korzystasz z LILO, to możesz zbudować jeden system plików na całej dyskietce, zawierający jądro, pliki LILO oraz pliki główne, a następnie uruchomić LILO jako ostatni krok.

8.3 Tworzenie dyskietki narzędziowej.

Tworzenie dyskietki narzędziowej jest stosunkowo proste, wystarczy stworzyć system plików na sformatowanej dyskietce i skopiować do niego pliki. Aby korzystać z niej podczas używania dyskietki startowej, wystarczy zamontować ją ręcznie po uruchomieniu systemu.

We wcześniejszych rozdziałach wspomnieliśmy, że dyskietka narzędziowa powinna zostać zamontowana w katalogu /usr. W tej systuacji programy powinny być umieszczone w katalogu /bin dyskietki narzędziowej, aby po zamontowaniu były dostępne pod ścieżką /usr/bin. Dodatkowe biblioteki wymagane przez programy powinny zostać umieszczone w katalogu /lib na dyskietce.

Istnieje kilka istotnych aspektów, o których należy pamiętać podczas projektowania dyskietki narzędziowej:

  1. Nie umieszczaj na dyskietce narzędziowej plików krytycznych dla działania systemu, ponieważ będzie ją można zamontować dopiero po wystartowaniu systemu.
  2. Nie możesz w tym samym czasie korzystać z napędu taśmowego i napędu dyskietek. Oznacza to, że jeśli posiadasz napęd taśmowy, to nie będziesz miał do niego dostępu gdy dyskietka narzędziowa jest zamontowana.
  3. Dostęp do plików na dyskietce narzędziowej będzie bardzo powolny.

W Dodatku Spis plików przykładowej dyskietki startowej możesz zobaczyć przykładowe pliki na dyskietce narzędziowej. Oto kilka pomysłow na programy, które mogą okazać się przydatne: programy do badania i manipulacji dyskami (format, fdisk) i systemami plików (mke2fs, fsck, debugfs, isofs.o), mały edytor tekstów (elvis, jove), narzędzia do kompresji i archiwizacji (gzip, tar, cpio, afio), narzędzia do obsługi taśm (mt, tob, taper), narzędzia komunikacyjne (ppp.o, slip.o, minicom) i narzędzia do obsługiu urządzeń (setserial, mknod).

9. Jak robią to profesjonaliści.

Pewnie zauważyłeś, że dyskietki startowe używane przez największe dystrybucje, takie jak Slackware, RedHat czy Debian, wydają się o wiele bardziej skomplikowane, niż te opisane w tym dokumencie. Profesjonalne dyskietki startowe są bazowane na tych samych założeniach, które tu podaliśmy, ale wykorzystują różne triki, ponieważ takie dyskietki mają o wiele większe wymagania. Po pierwsze, muszą współpracować z szeroką gamą sprzętu, tak więc muszą one umieć komunikować się z użytkownikiem i ładować odpowiednie sterowniki urządzeń. Po drugie, muszą być przygotowane do działania z wieloma różnymi opcjami instalacji, dodatkowo wykonując pewne działania automatycznie. Po trzecie dystrybucyjne dyskietki startowe na ogół spęłniają zarówno rolę instalacyjną, jak i ratunkową.

Niektóre dyskietki startowe korzystają z usługi zwanej initrd (initial ramdisk). Została ona wprowadzona w jądrze wersji 2.0.x i daje o wiele większą elastyczność, startując jądro w dwóch fazach. Na początku ładowany jest początkowy obraz ramdysku z dyskietki startowej. Początkowy ramdysk to główny system plików zawierający programy, które zostaną uruchomione zanim zostanie załadowany prawdziwy główny system plików. Ten program najczęściej bada otoczenie i/lub prosi użytkownika o wybranie różnych opcji startowych, takich jak urządzenie, z którego zostanie załadowany prawdziwy główny system plików. Często ładuje on też dodatkowe moduły nie wbudowane do jądra. Gdy działanie tego programu zakończy się, jądro ładuje prawdziwy główny obraz i uruchamianie jest kontynuowanie normalnie. Więcej informacji o initrd szukaj w /usr/src/linux/Documentation/initrd.txt i ftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/initrd-example.tgz.

Poniżej znajduje się podsumowanie tego, jak działają dyskietki startowe poszczególnych dystrybucji, oparte na przeglądaniu ich systemu systemu plików i/lub kodu źródłowego. Nie gwarantujemy, że ta informacja jest dokładna, ani że nic się nie zmieniło od czasu opisanej wersji.

Slackware (v.2.1) po prostu startuje system przy użyciu LILO, tak jak to opisano w dziale Przenoszenie jądra z LILO. Dyskietki startowe Slackware przy starcie wypisują komunikat (``Welcome to the Slackware Linux bootkernel disk!'') używając do tego parametru LILO message. Informuje to użytkownika, że może podać dodatkowe parametry startowe, jeśli to konieczne. Po wystartowaniu, główny system plików jest ładowany z drugiej dyskietki. Użytkownik uruchamia skrypt setup który rozpoczyna instalację. Zamiast korzystać z jądra opartego na modułach, Slackware daje użytkownikowi do dyspozycji wiele różnych jąder, do wyboru zależnie od konfiguracji sprzętowej.

RedHat (v.4.0) także korzysta z LILO. Ładuje skompresowany ramdysk z pierwszej dyskietki, który uruchamia specjalnie napisany program init. Program ten pyta o sterowniki i, jeśli to konieczne, ładuje pliki z dodatkowej dyskietki.

Debian (v.1.3) jest prawdopodobnie najbardziej skomplikowanym zestawem dyskietek startowych. Korzysta on z programu ładującego SYSLINUX, który ustala osopowiednie parametry, a następnie używa obrazu initrd aby poprowadzić użytkownika przez procedurę instalacji. Wygląda na to, że korzysta on zarówno z przerobionego programu init, jak i z przerobionej powłoki.

10. Najczęściej zadawane pytania (FAQ).

Q. Próbuje wystartować system z dyskietki, ale nic się nie dzieje. Co mam zrobić?

Zajrzyj do działu Rozwiązywanie problemów powyżej.

Q. Jak działają dyskietki startowe dystrybucji Slackware/Debian/RedHat?

Zajrzyj do działu Jak to robią profesjonaliści powyżej.

Q. W jaki sposób stworzyć dyskietkę startową ze sterownikiem XYZ?

Najłatwiej zdobyć jądro z dystrybucji Slackware. Jądra Slackware zawierają sterowniki do jak największej ilości urządzeń, więc jeśli posiadasz kontroler IDE lub SCSI, istnieją duże szanse, że sterownik do urządzenia jest dołączony do jednego z jąder Slackware.

Przejdz do katalogu a1 i wybierz jądro odpowiednie dla posiadanego typu kontrolera. Sprawdz w pliku xxxxkern.cfg dla odpowiedniego jądra czy zawiera ono odpowiednie sterowniki. Jeśli urządzenie jest na tej liście, to jądro to powinno wystartować twój system. Ściągnij plik xxxxkern.tgz i skopiuj go na dyskietkę, tak jak opisano powyżej, w dziale na temat tworzenia dyskietek startowych.

Następnie musisz sprawdzić główne urządzenie tego jądra, korzystając z komendy rdev:

      rdev zImage

Komenda rdev wyświetli aktualne główne urządzenie dla tego jądra. Jeśli nie odpowiada ono twojemu głównemu urządzeniu, użyj rdev aby je zmienić. Na przykład jądro korzysta z /dev/sda2, ale moja główna partycja SCSI znajduje się na urządzeniu /dev/sda8. Aby zmienić główne urządzenie na dyskietkę, musisz użyć komendy:

      rdev zImage /dev/fd0

Informacje na temat tworzenia głównych dyskietek Slackware wykraczają poza zakres tego dokumentu, więc sugeruje zajrzeć do Linux Install Guide lub zdobyć dystrybucję Slackware. Zobacz także dział ``Odnośniki'' w tym HOWTO.

Q. Jak uaktualnić jądro na mojej dyskietce?

Jeśli dyskietka startowa nie zawiera systemu plików, po prostu skopiuj jądro za pomocą komendy dd. W przypadku dyskietki startowej/głównej użyj komendy cp. Zajrzyj do działu ``Startowanie'' aby dowiedzieć się szczegółów na temat tworzenia dyskietki startowej. Ten opis odnosi się także do uaktualniania jądra.

Q. Jak dodać nowe pliki do mojej głównej dyskietki?

Najprostszym sposobem jest skopiowanie systeku plików z dyskietki z powrotem do użytego URZĄDZENIA (z działu Tworzenie systemu plików powyżej). Następnie zamontuj system plików i dokonaj zmian. Musisz wiedzieć, w którym bloku zaczynał się system plików i ile bloków zajmował:

      dd if=/dev/fd0 bs=1k skip=POCZĄTEK count=BLOKI | gunzip > URZĄDZENIE
      mount -t ext2 URZĄDZENIE /mnt

Po dokonaniu zmian, postępuj tak jak poprzednio (w dziale Tworzenie dyskietki) i przenieś główny system plików z powrotem na dyskietkę. Nie musisz przenosić ponownie jądra czy ponownie przeliczać słowa ramdysku jeśli nie zmieniłeś pozycji nowego systemu plików.

Q. Jak mogę usunąć LILO aby ponownie korzystać ze startowania DOS?

Tak na prawdę ten temat nie dotyczy dyskietek startowych, ale ludzie często o to pytają. Z poziomu Linuxa możesz użyć komendy:

      /sbin/lilo -u

Możesz także wykorzystać dd aby przenieść kopię zapasową stworzoną przez LILO z powrotem do bootsektora. Zajrzyj do dokumentacji LILO, jeśli chcesz się dowiedzieć jak to zrobić.

Z poziomu systemu DOS lub Windows możesz skorzystać z polecenia DOS'a:

      FDISK /MBR

MBR oznacza Master Boot Record i zastępuje bootsektor nowym DOS'owym, nie zmieniając przy tym tablicy partycji. Niektórzy puryści nie zgadzają się z tym, ale nawet autor LILO, Werner Almesberger, sugeruje to rozwiązanie. Jest ono proste, no i działa.

Q. Jak mogę wystartować system jeśli zgubiłem jądro oraz moją dyskietkę startową?

Jeśli nie masz dyskietki startowej, to najprostszym sposobem będzie zdobycie odpowiedniego jądra Slackware jak to opisano powyżej w odpowiedzi na pytanie ``Jak mogę stworzyć dyskietkę startową ze sterownikiem XXX?''. Następnie możesz wystartować komputer używając tego jądra i naprawić wszystkie problemy.

Jądro to może nie mieć ustawionego odpowiedniego głównego urządzenia. Na przykład typowe jądro SCSI Slackware za główne urządzenie uznaje /dev/sda2, a moja główna partycja Linuxowa to /dev/sda8. W tej sytuacji główne urządzenie w jądrze musi zostać zmienione.

Główne urządzenie oraz wartość słowa ramdysku możesz zmienić nawet wtedy, gdy posiadasz jedynie jądro i jakiś inny system operacyjny, na przykład DOS.

Polecenie rdev zmienia ustawienia poprzez zmianę wartości konkretnych bajtów w pliku jądra, więc możesz zrobić to samo, jeśli tylko posiadasz edytor heksadecymalny pracujący pod innym działającym systemem -- przykładowo Norton Disk Editor z pakietu Norton Utilities pod DOS. Następnie musisz sprawdzić i, jeśli to konieczne, zmienić wartości pod następującymi przesunięciami:

HEX     DEC  OPIS
0x01F8  504  Młodszy bajt słowa ramdysku
0x01F9  505  Starszy bajt słowa ramdysku
0x01FC  508  Poboczny numer urządzenia - patrz niżej
0X01FD  509  Główny numer urządzenia - patrz niżej

Znaczenie słowa ramdysku zostało opisane w dziale Ustawianie słowa ramdysku powyżej.

Poboczny i głowny numer musi odpowiadać urządzeniu, na którym znajduje się główny system plików. Niektóre najczęściej używane wartości to:

DEVICE          GŁÓWNY POBOCZNY
/dev/fd0            2     0   Pierwsza stacja dysków
/dev/hda1           3     1   Pierwsza partycja na pierwszym dysku IDE
/dev/sda1           8     1   Pierwsza partycja na pierwszym dysku SCSI
/dev/sda8           8     8   Ósma partycja na pierwszym dysku SCSI

Gdy już ustawisz odpowiednie wartości, możesz zapisać plik na dyskietce korzystając z Norton Utilities Disk Editor, albo programu rawrite.exe, który znajduje się we wszystkich dystrybucjach. Jest to program DOS'owy który zapisuje dane w czystej postaci zaczynając od boot sektora dyskietki, zamiast zapisywać do systemu plików. Jeśli używasz Norton Utilities, musisz zapisać plik do fizycznej dyskietki zaczynając od jej początku.

Q. W jaki sposób mogę stworzyć dodatkowe kopie dyskietek?

Jako że nośniki magnetyczne z czasem tracą swe właściwości, powinieneś posiadać kilka kopii swoich dyskietek ratunkowych, w razie gdyby oryginały uległy uszkodzeniu.

Najprostszą metodą tworzenia kopii każdej dyskietki, włączając w to dyskietki startowe czy narzędziowe, jest użycie komendy dd aby skopiować zawartość oryginalnej dyskietki do pliku na dysku twardym, a następnie użyć tej samej komendy aby skopiować plik z powrotem na dyskietkę. Zauważ, że nie powinieneś montować dyskietek, ponieważ dd korzysta bezpośrednio z urządzenia.

Aby skopiować oryginał, użyj polecenia:

      dd if=URZĄDZENIE of=PLIK
      gdzie   URZĄDZENIE jest nazwą urządzenia stacji dyskietek
      a       PLIK jest nazwą docelowego pliku na twardym dysku

Pominięcie parametru count powoduje skopowanie całej dyskietki (2880 bloków jeśli jest to dyskietka HD).

Aby skopiować plik spowrotem na dyskietkę, włóż dyskietkę do stacji i użyj komendy:

      dd if=PLIK of=URZĄDZENIE

Zauważ, że powyższy opis zakłada, że posiadasz tylko jedną stację dysków. Jeśli posiadasz dwa napędy tego samego typu, możesz skopiować dyskietki używając komendy:

      dd if=/dev/fd0 of=/dev/fd1

Q. Jak wystartować system bez wpisywania za każdym razem "ahaxxxx,nn,nn,nn"?

Jeśli dysk nie może zostać automatycznie wykryty, koniecznie jest dostarczenie parametrów do jądra, takich jak:

      aha152x=0x340,11,3,1

Ten parametr może zostać dostarczony na kilka sposobów, korzystając z LILO:

Przykładaowa linia poleceń dla podanego powyżej parametru może wyglądać następująco:

      zImage  aha152x=0x340,11,3,1 root=/dev/sda1 lock

Przekaże ona opcje urządzenia do jądra, ustawi w jądrze główne urządzenie na /dev/sda1 i zapisze linie poleceń do użycia przy każdym następnym starcie systemu.

Przykładowa opcja append wygląda następująco

      append = "aha152x=0x340,11,3,1"

Pamiętaj, że parametr w linii poleceń nie może być ujęty w cudzyłowy, ale musi być ujęty w cudzysłowy jeśli występuje w opcji append.

Pamiętaj także, że w jądrze musi znajdować się sterownik dla podanego typu urządzenia. Jeśli tak nie jest, będziesz musiał przekompilować jądro aby zawierało odpowiednie sterowniki. Szczegóły na temat rekompilacji jądra znajdziesz w pliku README w katalogu /usr/src/linux oraz w Linux FAQ i Installation HOWTO. Ewentualnie możesz zdobyć odpowiednie jądro dla tego urządzenia i zainstalować je.

Przed ekperymentami z LILO zalecane jest zapoznanie się z jego dokumentacją. Nieprawidłowe użycie opcji BOOT może uszkodzić partycję.

Q. Podczas staru otrzymuje komunikat błędu "A: cannot execute B". Co to oznacza?

W niektórych przypadkach ścieżki do plików są na stałe zapisane w niektórych programach. Nie zdarza się to zawsze, ale może wyjaśnić dlaczego program nie może zostać odnaleziony w twoim systemie nawet jeśli jesteś pewien że się tam znajduje. Możesz sprawdzić, czy program ma zapisaną na stałe lokalizację jakiegoś innego programu korzystając z komendy strings i przepuszczając jej wyjście przez filtr grep.

Niektóre znane przypadki zapisanych na stałe lokalizacji:

Aby naprawić ten problem przenieś program do odpowiedniego katalogu, lub zmień pliki konfiguracyjne (np. inittab) aby wskazywały na poprawny katalog. Jeśli masz wątpliwości, umieść program w tym samym katalogu, w którym znajdował się na dysku twardym oraz użyj tych samych plików inittab i /etc/rc.d.

Q. Moje jądro posiada obsługę ramdysku, ale inicjuje go z wielkością 0K.

W takiej sytuacji podczas startu systemu pojawi się informacja:

      Ramdisk driver initialized : 16 ramdisks of 0K size

Dzieje się tak dlatego, że rozmiar ramdysko został ustawiony na 0 przez jądro podczas startu systemu. Najprawdopodobniej dzieje się tak przez parametr w pliku konfiguracyjnym LILO:

ramdisk= 0

Który w starszych dystrybucjach został umieszczany w przykładowym pliku konfiguracyjnym LILO. Jeśli posiadasz taką linię, usuń ją.

Skutki korzystania z ramdysku o rozmiarze 0K są nieprzewidywalne i mogą doprowadzić do błędów jądra.

Appendix

11. Odnośniki.

Gdy ściągasz pakiet, zawsze znajdź jego najnowszą wersję, chyba że masz dobre powody aby tego nie robić.

11.1 Gotowe dyskietki.

Poniżej znajdują się odnośniki do dyskietek startowych poszczególnych dystrybucji. Zawsze korzystaj z mirrorów, aby zredukować obciążenie serwera.

Oprócz tych dyskietek dystrybucyjnych, dostępne są także poniższe dyskietki ratunkowe. Są one dostępne w katalogu http://metalab.unc.edu/pub/Linux/system/recovery/!INDEX.html, chyba że podano inaczej.

11.2 Pakiety ratunkowe.

Na metalab.unc.edu można znaleźć kilka pakietów do tworzenia dyskietek ratunkowych. Korzystając z tych pakietów najczęściej wybierasz pliki do załączenia na dyskietce, a reszta dzieje się automatycznie (do pewnego stopnia). Aby uzyskać więcej informacji przeczytaj plik http://metalab.unc.edu/pub/Linux/system/recovery/!INDEX.html. Sprawdź daty utworzenia poszczególnych pakietów -- niektóre z nich nie były uaktualniane od kilku lat i nie pozwalają na tworzenie skompresowanego systemu plików ładowanego do ramdysku. Z tego co wiem jedynie Yard posiada obsługę ramdysku.

11.3 Skrypty powłoki Grahama Chapman'a

Graham Chapman napisał zestaw skryptów użytecznych jako przykłady jak tworzyć dyskietki startowe. Skrypty te w poprzedniej wersji tego dokumentu znajdowały się w załączniku, ale zostały z niego usunięte i umieszczone na stronie WWW:

http://www.zeta.org.au/~grahamc/linux.html

Skrypty te mogą okazać się pożyteczne, ale zawsze czytaj uważnie instrukcje do nich dołączone -- jeśli przykładowo wybierzesz złe urządzenie wymiany, twój główny system plików zostanie w całości i nieodwracalnie usunięty. Upewnij się że skonfigurowałeś wszystko poprawnie zanim użyjesz skryptów!

11.4 LILO (LInux LOader) -- program ładujący Linuxa.

Napisany przez Wernera Almesberger. Doskonały program ładujący, zawierający w dokumentacji informacje na temat bootsektora oraz pierwszych faz startowania systemu.

Znajdziesz go pod adresem ftp://tsx-11.mit.edu/pub/linux/packages/lilo/. Jest on także dostępny na Metalab i jego mirrorach.

11.5 Linux FAQ i HOWTO.

Dokumenty te dostępne są one z wielu źródeł. Przeglądnij grupę usenet news.answers oraz comp.os.linux.announce.

FAQ jest dostępne pod adresem http://metalab.unc.edu/pub/Linux/docs/faqs/linux-faq a dokumenty HOWTO pod adresem http://metalab.unc.edu/pub/Linux/docs/HOWTO.

Większość dokumentacji do Linuxa dostępna jest na stronie The Linux Documentation Project homepage.

Ewentualnie możesz wysłać list pod adres mail-server@rtfm.mit.edu ze słowem ``help'' w treści wiadomości, i robić to, co podają otrzymane instrukcje.

Od tłumacza: Polskie wersje dokumentów HOWTO znajdziesz pod adresem Jak To Zrobić.

11.6 Korzystanie z ramdysku.

Doskonały opis działania ramdysku znajduje się w dokumentacji dostarczanej razem z jądrem Linuxa. Zajrzyj do pliku /usr/src/linux/Documentation/ramdisk.txt. Został on napisany przez Paula Gortmaker i zawiera dział na temat tworzenia skompresowanego ramdysku.

11.7 Proces startowania Linuxa.

Więcej szczegółow na temat procesu startowania Linuxa znajdziesz w następujących miejscach:

12. Kody błędów LILO.

W usenecie ludzie często zadają pytania na ten temat, więc umieściliśmy je tutaj dla szerszego grona. To podsumowanie pochodzi z LILO User Documentation Wernera Almsberger, dostępnego pod adresem ftp://metalab.unc.edu/pub/Linux/system/boot/lilo/lilo-u-21.ps.gz.

Gdy LILO ładuje się, wyświetla słowo ``LILO''. Każda litera jest wyświetlana po lub przed wykonaniem jakiejś czynności. Jeśli w pewnym momencie wystąpi błąd, można wykorzystać litery do zidentyfikowania problemu.

(nic)

Żadna część LILO nie została załadowana. LILO nie został zainstalowany, albo partycja w której bootsektorze LILO został zainstalowany nie jest aktywna.

L

Rozpoczęła się pierwsza faza programu ładującego, ale niemożliwe jest przejście do drugiej fazy. Dwucyfrowy kod błędu oznacza rodzaj błędu (patrz także dział ``Disk error codes''). Zwykle dzieje się tak z powodu awarii nośnika lub złych parametrów dysku.

LI

Program ładujący pierwszej fazy załadował drugą fazę, ale nie udało mu się jej uruchomić. Może być to spowodowane błednymi parametrami dysku lub przeniesieniem pliku /boot/boot.b bez wywołania instalatora.

LIL

Rozpoczął się program ładujący drugiej fazy, ale nie udało mu się załadaować tablicy deskryptorów z pliku mapy. Najczęściej jest to spowodowane awarią nośnika lub błędnymi parametrami dysku.

LIL?

Program ładujący drugiej fazy został załadowany pod nieprawidłowym adresem. Zwykle jest to spowodowane błędnymi parametrami dysku lub przeniesieniem pliku /boot/boot.b bez uruchomienia instalatora.

LIL-

Tablica deskryptorów jest nieprawidłowa. Może to być spowodowane błędnymi parametrami dysku lub przeniesieniem pliku /boot/map bez uruchomienia istalatora mapy.

LILO

Wszystkie elementy LILO zostały prawidłowo załadowane.

Jeśli BIOS zasygnalizuje błąd gdy LILO próbuje załadować obraz startowy, wyświetlany jest odpowiedni kod błędu. Kody te są z zakresu od 0x00 do 0xbb. W LILO User Guide znajduje się ich wyjaśnienie.

13. Lista plików przykładowej głównej dyskietki.

Poniżej znajduje się zawartość przykładowej dyskietki głównej i narzędziowej.

Root directory:
drwx--x--x   2 root     root         1024 Nov  1 15:39 bin
drwx--x--x   2 root     root         4096 Nov  1 15:39 dev
drwx--x--x   3 root     root         1024 Nov  1 15:39 etc
drwx--x--x   4 root     root         1024 Nov  1 15:39 lib
drwx--x--x   5 root     root         1024 Nov  1 15:39 mnt
drwx--x--x   2 root     root         1024 Nov  1 15:39 proc
drwx--x--x   2 root     root         1024 Nov  1 15:39 root
drwx--x--x   2 root     root         1024 Nov  1 15:39 sbin
drwx--x--x   2 root     root         1024 Nov  1 15:39 tmp
drwx--x--x   7 root     root         1024 Nov  1 15:39 usr
drwx--x--x   5 root     root         1024 Nov  1 15:39 var

/bin:
-rwx--x--x   1 root     root        62660 Nov  1 15:39 ash
-rwx--x--x   1 root     root         9032 Nov  1 15:39 cat
-rwx--x--x   1 root     root        10276 Nov  1 15:39 chmod
-rwx--x--x   1 root     root         9592 Nov  1 15:39 chown
-rwx--x--x   1 root     root        23124 Nov  1 15:39 cp
-rwx--x--x   1 root     root        23028 Nov  1 15:39 date
-rwx--x--x   1 root     root        14052 Nov  1 15:39 dd
-rwx--x--x   1 root     root        14144 Nov  1 15:39 df
-rwx--x--x   1 root     root        69444 Nov  1 15:39 egrep
-rwx--x--x   1 root     root          395 Nov  1 15:39 false
-rwx--x--x   1 root     root        69444 Nov  1 15:39 fgrep
-rwx--x--x   1 root     root        69444 Nov  1 15:39 grep
-rwx--x--x   3 root     root        45436 Nov  1 15:39 gunzip
-rwx--x--x   3 root     root        45436 Nov  1 15:39 gzip
-rwx--x--x   1 root     root         8008 Nov  1 15:39 hostname
-rwx--x--x   1 root     root        12736 Nov  1 15:39 ln
-rws--x--x   1 root     root        15284 Nov  1 15:39 login
-rwx--x--x   1 root     root        29308 Nov  1 15:39 ls
-rwx--x--x   1 root     root         8268 Nov  1 15:39 mkdir
-rwx--x--x   1 root     root         8920 Nov  1 15:39 mknod
-rwx--x--x   1 root     root        24836 Nov  1 15:39 more
-rws--x--x   1 root     root        37640 Nov  1 15:39 mount
-rwx--x--x   1 root     root        12240 Nov  1 15:39 mt
-rwx--x--x   1 root     root        12932 Nov  1 15:39 mv
-r-x--x--x   1 root     root        12324 Nov  1 15:39 ps
-rwx--x--x   1 root     root         5388 Nov  1 15:39 pwd
-rwx--x--x   1 root     root        10092 Nov  1 15:39 rm
lrwxrwxrwx   1 root     root            3 Nov  1 15:39 sh -> ash
-rwx--x--x   1 root     root        25296 Nov  1 15:39 stty
-rws--x--x   1 root     root        12648 Nov  1 15:39 su
-rwx--x--x   1 root     root         4444 Nov  1 15:39 sync
-rwx--x--x   1 root     root       110668 Nov  1 15:39 tar
-rwx--x--x   1 root     root        19712 Nov  1 15:39 touch
-rwx--x--x   1 root     root          395 Nov  1 15:39 true
-rws--x--x   1 root     root        19084 Nov  1 15:39 umount
-rwx--x--x   1 root     root         5368 Nov  1 15:39 uname
-rwx--x--x   3 root     root        45436 Nov  1 15:39 zcat

/dev:
lrwxrwxrwx   1 root     root            6 Nov  1 15:39 cdrom -> cdu31a
brw-rw-r--   1 root     root      15,   0 May  5  1998 cdu31a
crw-------   1 root     root       4,   0 Nov  1 15:29 console
crw-rw-rw-   1 root     uucp       5,  64 Sep  9 19:46 cua0
crw-rw-rw-   1 root     uucp       5,  65 May  5  1998 cua1
crw-rw-rw-   1 root     uucp       5,  66 May  5  1998 cua2
crw-rw-rw-   1 root     uucp       5,  67 May  5  1998 cua3
brw-rw----   1 root     floppy     2,   0 Aug  8 13:54 fd0
brw-rw----   1 root     floppy     2,  36 Aug  8 13:54 fd0CompaQ
brw-rw----   1 root     floppy     2,  84 Aug  8 13:55 fd0D1040
brw-rw----   1 root     floppy     2,  88 Aug  8 13:55 fd0D1120
brw-rw----   1 root     floppy     2,  12 Aug  8 13:54 fd0D360
brw-rw----   1 root     floppy     2,  16 Aug  8 13:54 fd0D720
brw-rw----   1 root     floppy     2, 120 Aug  8 13:55 fd0D800
brw-rw----   1 root     floppy     2,  32 Aug  8 13:54 fd0E2880
brw-rw----   1 root     floppy     2, 104 Aug  8 13:55 fd0E3200
brw-rw----   1 root     floppy     2, 108 Aug  8 13:55 fd0E3520
brw-rw----   1 root     floppy     2, 112 Aug  8 13:55 fd0E3840
brw-rw----   1 root     floppy     2,  28 Aug  8 13:54 fd0H1440
brw-rw----   1 root     floppy     2, 124 Aug  8 13:55 fd0H1600
brw-rw----   1 root     floppy     2,  44 Aug  8 13:55 fd0H1680
brw-rw----   1 root     floppy     2,  60 Aug  8 13:55 fd0H1722
brw-rw----   1 root     floppy     2,  76 Aug  8 13:55 fd0H1743
brw-rw----   1 root     floppy     2,  96 Aug  8 13:55 fd0H1760
brw-rw----   1 root     floppy     2, 116 Aug  8 13:55 fd0H1840
brw-rw----   1 root     floppy     2, 100 Aug  8 13:55 fd0H1920
lrwxrwxrwx   1 root     root            7 Nov  1 15:39 fd0H360 -> fd0D360
lrwxrwxrwx   1 root     root            7 Nov  1 15:39 fd0H720 -> fd0D720
brw-rw----   1 root     floppy     2,  52 Aug  8 13:55 fd0H820
brw-rw----   1 root     floppy     2,  68 Aug  8 13:55 fd0H830
brw-rw----   1 root     floppy     2,   4 Aug  8 13:54 fd0d360
brw-rw----   1 root     floppy     2,   8 Aug  8 13:54 fd0h1200
brw-rw----   1 root     floppy     2,  40 Aug  8 13:54 fd0h1440
brw-rw----   1 root     floppy     2,  56 Aug  8 13:55 fd0h1476
brw-rw----   1 root     floppy     2,  72 Aug  8 13:55 fd0h1494
brw-rw----   1 root     floppy     2,  92 Aug  8 13:55 fd0h1600
brw-rw----   1 root     floppy     2,  20 Aug  8 13:54 fd0h360
brw-rw----   1 root     floppy     2,  48 Aug  8 13:55 fd0h410
brw-rw----   1 root     floppy     2,  64 Aug  8 13:55 fd0h420
brw-rw----   1 root     floppy     2,  24 Aug  8 13:54 fd0h720
brw-rw----   1 root     floppy     2,  80 Aug  8 13:55 fd0h880
brw-rw----   1 root     disk       3,   0 May  5  1998 hda
brw-rw----   1 root     disk       3,   1 May  5  1998 hda1
brw-rw----   1 root     disk       3,   2 May  5  1998 hda2
brw-rw----   1 root     disk       3,   3 May  5  1998 hda3
brw-rw----   1 root     disk       3,   4 May  5  1998 hda4
brw-rw----   1 root     disk       3,   5 May  5  1998 hda5
brw-rw----   1 root     disk       3,   6 May  5  1998 hda6
brw-rw----   1 root     disk       3,  64 May  5  1998 hdb
brw-rw----   1 root     disk       3,  65 May  5  1998 hdb1
brw-rw----   1 root     disk       3,  66 May  5  1998 hdb2
brw-rw----   1 root     disk       3,  67 May  5  1998 hdb3
brw-rw----   1 root     disk       3,  68 May  5  1998 hdb4
brw-rw----   1 root     disk       3,  69 May  5  1998 hdb5
brw-rw----   1 root     disk       3,  70 May  5  1998 hdb6
crw-r-----   1 root     kmem       1,   2 May  5  1998 kmem
crw-r-----   1 root     kmem       1,   1 May  5  1998 mem
lrwxrwxrwx   1 root     root           12 Nov  1 15:39 modem -> ../dev/ttyS1
lrwxrwxrwx   1 root     root           12 Nov  1 15:39 mouse -> ../dev/psaux
crw-rw-rw-   1 root     root       1,   3 May  5  1998 null
crwxrwxrwx   1 root     root      10,   1 Oct  5 20:22 psaux
brw-r-----   1 root     disk       1,   1 May  5  1998 ram
brw-rw----   1 root     disk       1,   0 May  5  1998 ram0
brw-rw----   1 root     disk       1,   1 May  5  1998 ram1
brw-rw----   1 root     disk       1,   2 May  5  1998 ram2
brw-rw----   1 root     disk       1,   3 May  5  1998 ram3
brw-rw----   1 root     disk       1,   4 May  5  1998 ram4
brw-rw----   1 root     disk       1,   5 May  5  1998 ram5
brw-rw----   1 root     disk       1,   6 May  5  1998 ram6
brw-rw----   1 root     disk       1,   7 May  5  1998 ram7
brw-rw----   1 root     disk       1,   8 May  5  1998 ram8
brw-rw----   1 root     disk       1,   9 May  5  1998 ram9
lrwxrwxrwx   1 root     root            4 Nov  1 15:39 ramdisk -> ram0
***  Dołączyłem jedynie urządzenia IDE dla partycji których używam.
***  Jeśli korzystasz ze SCSI, użyj zamiast nich urządzeń /dev/sdXX.
crw-------   1 root     root       4,   0 May  5  1998 tty0
crw--w----   1 root     tty        4,   1 Nov  1 15:39 tty1
crw-------   1 root     root       4,   2 Nov  1 15:29 tty2
crw-------   1 root     root       4,   3 Nov  1 15:29 tty3
crw-------   1 root     root       4,   4 Nov  1 15:29 tty4
crw-------   1 root     root       4,   5 Nov  1 15:29 tty5
crw-------   1 root     root       4,   6 Nov  1 15:29 tty6
crw-------   1 root     root       4,   7 May  5  1998 tty7
crw-------   1 root     tty        4,   8 May  5  1998 tty8
crw-------   1 root     tty        4,   9 May  8 12:57 tty9
crw-rw-rw-   1 root     root       4,  65 Nov  1 12:17 ttyS1
crw-rw-rw-   1 root     root       1,   5 May  5  1998 zero

/etc:
-rw-------   1 root     root          164 Nov  1 15:39 conf.modules
-rw-------   1 root     root          668 Nov  1 15:39 fstab
-rw-------   1 root     root           71 Nov  1 15:39 gettydefs
-rw-------   1 root     root          389 Nov  1 15:39 group
-rw-------   1 root     root          413 Nov  1 15:39 inittab
-rw-------   1 root     root           65 Nov  1 15:39 issue
-rw-r--r--   1 root     root          746 Nov  1 15:39 ld.so.cache
***  Plik ld.so.cache jest tworzony przez ldconfig i przechowuje
***  lokalizacje bibliotek. Podczas startowania wystąpi wiele błędów
***  jeśli brakuje ld.so.cache. Możesz odtworzyć go po stworzeniu
***  dyskietki, albo dodać ldconfig do dyskietki i uruchamiać go ze
***  skryptu rc.x.
-rw-------   1 root     root           32 Nov  1 15:39 motd
-rw-------   1 root     root          949 Nov  1 15:39 nsswitch.conf
drwx--x--x   2 root     root         1024 Nov  1 15:39 pam.d
-rw-------   1 root     root          139 Nov  1 15:39 passwd
-rw-------   1 root     root          516 Nov  1 15:39 profile
-rwx--x--x   1 root     root          387 Nov  1 15:39 rc
-rw-------   1 root     root           55 Nov  1 15:39 shells
-rw-------   1 root     root          774 Nov  1 15:39 termcap
-rw-------   1 root     root           78 Nov  1 15:39 ttytype
lrwxrwxrwx   1 root     root           15 Nov  1 15:39 utmp -> ../var/run/utmp
lrwxrwxrwx   1 root     root           15 Nov  1 15:39 wtmp -> ../var/log/wtmp

/etc/pam.d:
-rw-------   1 root     root          356 Nov  1 15:39 other

/lib:
*** Posiadam system ELF z glibc, więc potrzebuję loadera ld-2.so
-rwxr-xr-x   1 root     root        45415 Nov  1 15:39 ld-2.0.7.so
lrwxrwxrwx   1 root     root           11 Nov  1 15:39 ld-linux.so.2 -> ld-2.0.7.so
-rwxr-xr-x   1 root     root       731548 Nov  1 15:39 libc-2.0.7.so
lrwxrwxrwx   1 root     root           13 Nov  1 15:39 libc.so.6 -> libc-2.0.7.so
lrwxrwxrwx   1 root     root           17 Nov  1 15:39 libcom_err.so.2 -> libcom_err.so.2.0
-rwxr-xr-x   1 root     root         6209 Nov  1 15:39 libcom_err.so.2.0
-rwxr-xr-x   1 root     root       153881 Nov  1 15:39 libcrypt-2.0.7.so
lrwxrwxrwx   1 root     root           17 Nov  1 15:39 libcrypt.so.1 -> libcrypt-2.0.7.so
-rwxr-xr-x   1 root     root        12962 Nov  1 15:39 libdl-2.0.7.so
lrwxrwxrwx   1 root     root           14 Nov  1 15:39 libdl.so.2 -> libdl-2.0.7.so
lrwxrwxrwx   1 root     root           16 Nov  1 15:39 libext2fs.so.2 -> libext2fs.so.2.4
-rwxr-xr-x   1 root     root        81382 Nov  1 15:39 libext2fs.so.2.4
-rwxr-xr-x   1 root     root        25222 Nov  1 15:39 libnsl-2.0.7.so
lrwxrwxrwx   1 root     root           15 Nov  1 15:39 libnsl.so.1 -> libnsl-2.0.7.so
-rwx--x--x   1 root     root       178336 Nov  1 15:39 libnss_files-2.0.7.so
lrwxrwxrwx   1 root     root           21 Nov  1 15:39 libnss_files.so.1 -> libnss_files-2.0.7.so
lrwxrwxrwx   1 root     root           14 Nov  1 15:39 libpam.so.0 -> libpam.so.0.64
-rwxr-xr-x   1 root     root        26906 Nov  1 15:39 libpam.so.0.64
lrwxrwxrwx   1 root     root           19 Nov  1 15:39 libpam_misc.so.0 -> libpam_misc.so.0.64
-rwxr-xr-x   1 root     root         7086 Nov  1 15:39 libpam_misc.so.0.64
-r-xr-xr-x   1 root     root        35615 Nov  1 15:39 libproc.so.1.2.6
lrwxrwxrwx   1 root     root           15 Nov  1 15:39 libpwdb.so.0 -> libpwdb.so.0.54
-rw-r--r--   1 root     root       121899 Nov  1 15:39 libpwdb.so.0.54
lrwxrwxrwx   1 root     root           19 Nov  1 15:39 libtermcap.so.2 -> libtermcap.so.2.0.8
-rwxr-xr-x   1 root     root        12041 Nov  1 15:39 libtermcap.so.2.0.8
-rwxr-xr-x   1 root     root        12874 Nov  1 15:39 libutil-2.0.7.so
lrwxrwxrwx   1 root     root           16 Nov  1 15:39 libutil.so.1 -> libutil-2.0.7.so
lrwxrwxrwx   1 root     root           14 Nov  1 15:39 libuuid.so.1 -> libuuid.so.1.1
-rwxr-xr-x   1 root     root         8039 Nov  1 15:39 libuuid.so.1.1
drwx--x--x   3 root     root         1024 Nov  1 15:39 modules
drwx--x--x   2 root     root         1024 Nov  1 15:39 security

/lib/modules:
drwx--x--x   4 root     root         1024 Nov  1 15:39 2.0.35

/lib/modules/2.0.35:
drwx--x--x   2 root     root         1024 Nov  1 15:39 block
drwx--x--x   2 root     root         1024 Nov  1 15:39 cdrom

/lib/modules/2.0.35/block:
-rw-------   1 root     root         7156 Nov  1 15:39 loop.o

/lib/modules/2.0.35/cdrom:
-rw-------   1 root     root        24108 Nov  1 15:39 cdu31a.o

/lib/security:
-rwx--x--x   1 root     root         8771 Nov  1 15:39 pam_permit.so

***  Katalogi do montowania.
/mnt:
drwx--x--x   2 root     root         1024 Nov  1 15:39 SparQ
drwx--x--x   2 root     root         1024 Nov  1 15:39 cdrom
drwx--x--x   2 root     root         1024 Nov  1 15:39 floppy

/proc:

/root:
-rw-------   1 root     root          176 Nov  1 15:39 .bashrc
-rw-------   1 root     root          182 Nov  1 15:39 .cshrc
-rw-------   1 root     root           47 Nov  1 15:39 .glintrc
-rwx--x--x   1 root     root          455 Nov  1 15:39 .profile
-rw-------   1 root     root         4014 Nov  1 15:39 .tcshrc

/sbin:
-rwx--x--x   1 root     root        23976 Nov  1 15:39 depmod
-rwx--x--x   2 root     root       274600 Nov  1 15:39 e2fsck
-rwx--x--x   1 root     root        41268 Nov  1 15:39 fdisk
-rwx--x--x   1 root     root         9396 Nov  1 15:39 fsck
-rwx--x--x   2 root     root       274600 Nov  1 15:39 fsck.ext2
-rwx--x--x   1 root     root        29556 Nov  1 15:39 getty
-rwx--x--x   1 root     root         6620 Nov  1 15:39 halt
-rwx--x--x   1 root     root        23116 Nov  1 15:39 init
-rwx--x--x   1 root     root        25612 Nov  1 15:39 insmod
-rwx--x--x   1 root     root        10368 Nov  1 15:39 kerneld
-rwx--x--x   1 root     root       110400 Nov  1 15:39 ldconfig
-rwx--x--x   1 root     root         6108 Nov  1 15:39 lsmod
-rwx--x--x   2 root     root        17400 Nov  1 15:39 mke2fs
-rwx--x--x   1 root     root         4072 Nov  1 15:39 mkfs
-rwx--x--x   2 root     root        17400 Nov  1 15:39 mkfs.ext2
-rwx--x--x   1 root     root         5664 Nov  1 15:39 mkswap
-rwx--x--x   1 root     root        22032 Nov  1 15:39 modprobe
lrwxrwxrwx   1 root     root            4 Nov  1 15:39 reboot -> halt
-rwx--x--x   1 root     root         7492 Nov  1 15:39 rmmod
-rwx--x--x   1 root     root        12932 Nov  1 15:39 shutdown
lrwxrwxrwx   1 root     root            6 Nov  1 15:39 swapoff -> swapon
-rwx--x--x   1 root     root         5124 Nov  1 15:39 swapon
lrwxrwxrwx   1 root     root            4 Nov  1 15:39 telinit -> init
-rwx--x--x   1 root     root         6944 Nov  1 15:39 update

/tmp:

/usr:
drwx--x--x   2 root     root         1024 Nov  1 15:39 bin
drwx--x--x   2 root     root         1024 Nov  1 15:39 lib
drwx--x--x   3 root     root         1024 Nov  1 15:39 man
drwx--x--x   2 root     root         1024 Nov  1 15:39 sbin
drwx--x--x   3 root     root         1024 Nov  1 15:39 share
lrwxrwxrwx   1 root     root           10 Nov  1 15:39 tmp -> ../var/tmp

/usr/bin:
-rwx--x--x   1 root     root        37164 Nov  1 15:39 afio
-rwx--x--x   1 root     root         5044 Nov  1 15:39 chroot
-rwx--x--x   1 root     root        10656 Nov  1 15:39 cut
-rwx--x--x   1 root     root        63652 Nov  1 15:39 diff
-rwx--x--x   1 root     root        12972 Nov  1 15:39 du
-rwx--x--x   1 root     root        56552 Nov  1 15:39 find
-r-x--x--x   1 root     root         6280 Nov  1 15:39 free
-rwx--x--x   1 root     root         7680 Nov  1 15:39 head
-rwx--x--x   1 root     root         8504 Nov  1 15:39 id
-r-sr-xr-x   1 root     bin          4200 Nov  1 15:39 passwd
-rwx--x--x   1 root     root        14856 Nov  1 15:39 tail
-rwx--x--x   1 root     root        19008 Nov  1 15:39 tr
-rwx--x--x   1 root     root         7160 Nov  1 15:39 wc
-rwx--x--x   1 root     root         4412 Nov  1 15:39 whoami

/usr/lib:
lrwxrwxrwx   1 root     root           17 Nov  1 15:39 libncurses.so.4 -> libncurses.so.4.2
-rw-r--r--   1 root     root       260474 Nov  1 15:39 libncurses.so.4.2

/usr/sbin:
-r-x--x--x   1 root     root        13684 Nov  1 15:39 fuser
-rwx--x--x   1 root     root         3876 Nov  1 15:39 mklost+found

/usr/share:
drwx--x--x   4 root     root         1024 Nov  1 15:39 terminfo

/usr/share/terminfo:
drwx--x--x   2 root     root         1024 Nov  1 15:39 l
drwx--x--x   2 root     root         1024 Nov  1 15:39 v

/usr/share/terminfo/l:
-rw-------   1 root     root         1552 Nov  1 15:39 linux
-rw-------   1 root     root         1516 Nov  1 15:39 linux-m
-rw-------   1 root     root         1583 Nov  1 15:39 linux-nic

/usr/share/terminfo/v:
-rw-------   2 root     root         1143 Nov  1 15:39 vt100
-rw-------   2 root     root         1143 Nov  1 15:39 vt100-am

/var:
drwx--x--x   2 root     root         1024 Nov  1 15:39 log
drwx--x--x   2 root     root         1024 Nov  1 15:39 run
drwx--x--x   2 root     root         1024 Nov  1 15:39 tmp

/var/log:
-rw-------   1 root     root            0 Nov  1 15:39 wtmp

/var/run:
-rw-------   1 root     root            0 Nov  1 15:39 utmp

/var/tmp:

14. Spis plików przykładowej dyskietki narzędziowej.

total 579
-rwxr-xr-x   1 root     root        42333 Jul 28 19:05 cpio*
-rwxr-xr-x   1 root     root        32844 Aug 28 19:50 debugfs*
-rwxr-xr-x   1 root     root       103560 Jul 29 21:31 elvis*
-rwxr-xr-x   1 root     root        29536 Jul 28 19:04 fdisk*  
-rw-r--r--   1 root     root       128254 Jul 28 19:03 ftape.o
-rwxr-xr-x   1 root     root        17564 Jul 25 03:21 ftmt*  
-rwxr-xr-x   1 root     root        64161 Jul 29 20:47 grep*
-rwxr-xr-x   1 root     root        45309 Jul 29 20:48 gzip*
-rwxr-xr-x   1 root     root        23560 Jul 28 19:04 insmod*
-rwxr-xr-x   1 root     root          118 Jul 28 19:04 lsmod*
lrwxrwxrwx   1 root     root            5 Jul 28 19:04 mt -> mt-st*
-rwxr-xr-x   1 root     root         9573 Jul 28 19:03 mt-st*
lrwxrwxrwx   1 root     root            6 Jul 28 19:05 rmmod -> insmod*
-rwxr-xr-x   1 root     root       104085 Jul 28 19:05 tar*
lrwxrwxrwx   1 root     root            5 Jul 29 21:35 vi -> elvis*

doc-linux-pl-2002.06.14.orig/html/Bzip2-HOWTO.pl.html0100664000175000017500000005223506770264140020536 0ustar covencoven Bzip2 Howto

Bzip2 Howto

David Fetter dfetter@best.com
v1.92 18 sierpnia 1998
Wersja polska: Krzysztof P. Jasiutowicz kpjas@priv.onet.pl
v0.99, 28 sierpnia 1998


Ten tekst wyjaśnia jak używać programu do kompresji bzip2. Lokalna wersja tego tekstu w sgml-u jest dostępna tu tu, a "autor-ytatywna" pod tym adresem tu. Dokument ten został napisany w standardzie ISO-8859-2.

1. Wstęp

Bzip2 to superowy nowy algorytm kompresji danych. Ogólnie rzecz biorąc tworzy pliki, które są 60-70% mniejsze od takich samych plików spakowanych gzip-em.

Ten dokument opisze kilka typowych zastosowań bzip2-a.

Przyszłe wersje tego dokumentu będą dotyczyły planowanej bzip2 library którą autor bzip2-a, Julian Seward opisuje następująco:

Pracuję nad następną wersją bzip2-a, która będzie używać tego samego
formatu pliku .bz2; główną nowością będzie biblioteka podobna do zlib
służąca do odczytywania i zapisu danych w tym formacie z poziomu programu.

Przyszłe wersje tego dokumentu mogą także zawierać podsumowanie dyskusji nad tym czy (i jak) bzip2 powinno być zastosowane w jądrze Linux-a.

1.1 Revision History

v1.92

Zaktualizowałem rozdział Pobieranie binariów bzip2, dodałem S.u.S.E.

v1.91

Poprawiłem błąd w pisowni i poprawiłem kilka idiomów shell-a w rozdziale o używaniu bzip2-a z tar-em. Podziękowania dla Alessandro Rubini za nie.

Poprawiłem aby narzędzie buzzit nie [to stomp] oryginalnego archiwum bzip2-a.

Dodałem bgrep, narzędzie podobne do zgrep-a.

v1.9

Poprawiłem problem z gcc 2.7.*. Podziękowanie dla Ulrika Dickow-a za wskazanie go.

Dodałem elegancki sposób Leonard-a Jean-Marc-a posługiwania się tar-em.

Dodałem szwedzkie tłumaczenie Linus-a Ăkerlund-a.

Poprawiłem rozdział o wu-ftpd np. sugestii Arnaud Launay-a.

Przeniosłem tłumaczenia ich odpowiednich rozdziałów.

v1.8

Wstawiłem buzzit i tar.diff do sgml-a tam gdzie ich miejsceg. Poprawiłem interpunkcję i formatowanie. Podziękowania dla Arnaud Launay za jego pomoc w poprawianiu mojej własnej wersji. :-)

Porzuciłem xv project na razie z powodu braku większego zainteresowania.

Wspomniałem o tipsach w przyszłych wersjach tego dokumentu.

v1.7

Dodałem aplikację buzzit. Poprawiłem patch do nałożenia na gnu tar.

v1.6

Dodałem tip TenThumbs-a dot. Netscape.

Także zmieniłem lesspipe.sh dzięki jego sugestii. Powinien teraz lepiej działać.

v1.5

Dodałem francuskie tłumaczenie Arnaud Launay-a, i jego plik wu-ftpd.

v1.4

Dodałem japońskie tłumaczenie Tetsu Isaji-ego.

v1.3

Dodałem plik Ulrik Dickow-a .emacs do emacs-a 19.30 lub wyższej wersji.

(także poprawiłem patch jka-compr.el do emacs-a dzięki jego sugestii. Ojej! Bzip2 nie ma jeszcze(?) flagi "append".)

v1.2

Zmienilem patch do emacs-a aby automagicznie rozpoznawał pliki .bz2.

v1.1

Dodałem patch dla emacs-a.

v1.0

Runda 1.

2. Jak zdobyć bzip2

Home page Bzip2-a znajduje się na Home site w Wielkiej Brytanii. Mirror site w U.S.A jest tu. Można też znaleźć go na site-cie FTP Red Hat-a tu.

2.1 Bzip2-HOWTO w twoim języku

Osoby posługujące się językiem francuskim mogą skierować się do francuskich dokumentów Arnaud Launay-a. Wersja WWW jest tu, a ftp można użyć tu Z Arnaud można skontaktować się pocztą elektroniczną pod tym adresem

Osoby posługujące się językiem japońskim mogą skierować się do japońskich dokumentów Tetsu Isaji tu. Z Isaji można skotaktować się na jego stronie WWW, lub pocztą elektroniczną pod tym adresem.

Osoby posługujące się językiem szwedzkim mogą skierować się do szwedzkich Linus-a Ăkerlund-a tu. Z Linus-em można się skontaktować pocztą elektroniczną pod tym adresem.

2.2 Jak zdobyć prekompilowane binaria bzip2-a

Zobacz Home site-y.

Binarium Debian Intel jest tu.

Binarium alpha Red Hat-a jest tu.

Binarium Intel Red Hat-a jest tu.

Binarium SPARC Red Hat-a jest tu.

Binarium Intel Slackware jest tu.

Binarium Intel S.u.S.E jest tu.

Wyżej wymienione są także dostępne w analogicznuch miejscach różnych lustrzanych site-ów.

2.3 Jak zdobyć źródła bzip2-a

Znajdują się na oficjalnych site-ach (zobacz w Jak zdobyć Bzip2 gdzie, albo Red Hat ma je tu).

2.4 Kompilacja bzip2-a dla twojej maszyny

Jeśli masz gcc 2.7.*, zmień linijkę która brzmi

CFLAGS = -O3 -fomit-frame-pointer -funroll-loops

na

CFLAGS = -O2 -fomit-frame-pointer

to jest, zamień -O3 na -O2 i pomiń -funroll-loops. You may also wish to add any -m* flags (like -m486, for example) you use when compiling kernels.

Usunięcie -funroll-loops jest najistotniejszą częścią, ponieważ może to spowodować wiele gcc 2.7-ów będzie generowało nieprawidłowy kod, a wszystkie gcc 2.7-y będą większy i wolniejszy kod wynikowy. Dla innych kompilatorów (lcc, egcs, gcc 2.8.x) standartowe CFLAGS są w porządku.

Potem, po prostu make i zainstaluj wg README.

3. Używanie bzip2

Przeczytaj Wspanaiałą Stronę Podręcznika Systemowego :)

4. Używanie bzip2 z tar-em

Poniżej są opisane trzy metody używania bzip2 z tar-em, a mianowicie

4.1 Najłatwiejsza do zrobienia:

Ta metoda nie wyamga wcale żadnych zmian. Aby od-tar-ować bzip2-owane archiwum tar-owe, foo.tar.bz2 w aktualnym katalogu, wykonaj

/path/to/bzip2 -cd foo.tar.bz2 | tar xf -

To działa, ale może być wnerwiające jeśli wypisuje się to zbyt często.

4.2 Łatwa do zrobienia, dość łatwa w użyciu, nie trzba mieć uprawnień root-a:

Dzięki dla Leonard Jean-Marc za ten tip. Dzięki także dla Alessandro Rubini za wprawadzenie różnic specyficznych dla csh.

W swoim .bashrc, możesz wstawić taką linijkę :

alias btar='tar --use-compress-program /usr/local/bin/bzip2 '

W .tcshrc, lub .cshrc, analogiczna linijka wygląda tak:

alias btar 'tar --use-compress-program /usr/local/bin/bzip2'

4.3 Też łatwa do zrobienia, ale wymaga dostępu jako root.

Nałóż poniższy patch na gnu tar 1.12 w następujący sposób:

cd tar-1.12/src; patch < /path/to/tar.diff
skompiluj go, i zainstaluj go, i wszystko już gotowe do działania. Upewnij się ze zarówno tar jak i bzip2 są w twojej $PATH poprzez "which tar" i "which bzip2." Aby użyć nowego tar-a, po prostu zrób
 tar xyf foo.tar.bz2
aby zdekompresować plik.

Aby utworzyć nowe archiwum, podobnie zrób:

 tar cyf foo.tar.bz2 file1 file2 file3...directory1 directory2...

A oto patch:

*** tar.c       Thu Jun 11 00:09:23 1998
--- tar.c.new   Thu Jun 11 00:14:24 1998
***************
*** 196,201 ****
--- 196,203 ----
    {"block-number", no_argument, NULL, 'R'},
    {"block-size", required_argument, NULL, OBSOLETE_BLOCKING_FACTOR},
    {"blocking-factor", required_argument, NULL, 'b'},
+   {"bzip2", required_argument, NULL, 'y'},
+   {"bunzip2", required_argument, NULL, 'y'},
    {"catenate", no_argument, NULL, 'A'},
    {"checkpoint", no_argument, &checkpoint_option, 1},
    {"compare", no_argument, NULL, 'd'},
***************
*** 372,377 ****
--- 374,380 ----
                PATTERN                at list/extract time, a globbing PATTERN\n\
    -o, --old-archive, --portability   write a V7 format archive\n\
        --posix                        write a POSIX conformant archive\n\
+   -y, --bzip2, --bunzip2             filter the archive through bzip2\n\
    -z, --gzip, --ungzip               filter the archive through gzip\n\
    -Z, --compress, --uncompress       filter the archive through compress\n\
        --use-compress-program=PROG    filter through PROG (must accept -d)\n"),
***************
*** 448,454 ****
     Y  per-block gzip compression */
  
  #define OPTION_STRING \
!   "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxz"
  
  static void
  set_subcommand_option (enum subcommand subcommand)
--- 451,457 ----
     Y  per-block gzip compression */
  
  #define OPTION_STRING \
!   "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxyz"
  
  static void
  set_subcommand_option (enum subcommand subcommand)
***************
*** 805,810 ****
--- 808,817 ----
        case 'X':
        exclude_option = 1;
        add_exclude_file (optarg);
+       break;
+ 
+       case 'y':
+       set_use_compress_program_option ("bzip2");
        break;
  
        case 'z':

5. Używanie bzip2 z less-em

Aby dekompresować pliki bzip2 w locie, tj. aby móc używać less-a do czytania ich bez wcześniejszego bunzip2-owania ich, należy zrobić lesspipe.sh (man less) w ten sposób:

#!/bin/sh
# To jest preprocessor dla 'less-a'.  Jest on używany, gdy ta zmienna 
# środowiskowa jest ustawiona:   LESSOPEN="|lesspipe.sh %s"

  case "$1" in
  *.tar) tar tvvf $1 2>/dev/null ;; # Oglądaj zawartość różnych plików tar-owych
  *.tgz) tar tzvvf $1 2>/dev/null ;;
# Działa dla niezmodyfikowanej wersji tar-a 
  *.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tzvvf - ;;
# Działa z spatchowaną wersją tar-a 
# *.tar.bz2) tyvvf $1 2>/dev/null ;;
  *.tar.gz) tar tzvvf $1 2>/dev/null ;;
  *.tar.Z) tar tzvvf $1 2>/dev/null ;;
  *.tar.z) tar tzvvf $1 2>/dev/null ;;
  *.bz2) bzip2 -dc $1  2>/dev/null ;; # Oglądaj spakowane pliki  
  *.Z) gzip -dc $1  2>/dev/null ;;
  *.z) gzip -dc $1  2>/dev/null ;;
  *.gz) gzip -dc $1  2>/dev/null ;;
  *.zip) unzip -l $1 2>/dev/null ;;
  *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1` ; # groff src
    FILE=`echo $FILE | cut -d ' ' -f 2`
    if [ "$FILE" = "troff" ]; then
      groff -s -p -t -e -Tascii -mandoc $1
    fi ;;
  *) cat $1 2>/dev/null ;;
#  *) FILE=`file -L $1` ; # Check to see if binary, if so -- view with 'strings'
#    FILE1=`echo $FILE | cut -d ' ' -f 2`
#    FILE2=`echo $FILE | cut -d ' ' -f 3`
#    if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \
#         -o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then
#      strings $1
#    fi ;;
  esac

6. Używanie bzip2 z emacs-em

6.1 Zmaina emacs-a dla wszystkich:

Napisalem ten patch do jka-compr.el który dodaje bzip2 do auto-compression-mode.

Disclaimer: Spawdziłem go tylko z emacs-20.2, ale nie mam powodów by sądzić, że podobne postępowanie nie będzie działać z innymi wersjami.

By go użyć,

  1. Przejdź do katalogu źródłowego emacs-20.2/lisp (tam gdzie go roztarowałeś)
  2. Wstaw ten patch do pliku jka-compr.el.diff ( powinien być sam w tym pliku ;).
  3. Wykonaj
     patch < jka-compr.el.diff
    
  4. Wystartuj emacs-a, i wykonaj
     M-x byte-compile-file jka-compr.el
    
  5. Wyjdź z emacs-a.
  6. Przenieś pierwotny jka-compr.elc w bezpieczne miejsce gdyby były bug-i.
  7. Zastąp go new jka-compr.elc.
  8. Baw się dobrze!
--- jka-compr.el        Sat Jul 26 17:02:39 1997
+++ jka-compr.el.new    Thu Feb  5 17:44:35 1998
@@ -44,7 +44,7 @@
 ;; The variable, jka-compr-compression-info-list can be used to
 ;; customize jka-compr to work with other compression programs.
 ;; The default value of this variable allows jka-compr to work with
-;; Unix compress and gzip.
+;; Unix compress and gzip.  David Fetter dodał bzip2 support :)
 ;;
 ;; If you are concerned about the stderr output of gzip and other
 ;; compression/decompression programs showing up in your buffers, you
@@ -121,7 +121,9 @@
 
 
 ;;; I have this defined so that .Z files are assumed to be in unix
-;;; compress format; and .gz files, in gzip format.
+;;; compress format; and .gz files, in gzip format, and .bz2 files,
+;;; in the snappy new bzip2 format from http://www.muraroa.demon.co.uk.
+;;; Keep up the good work, people!
 (defcustom jka-compr-compression-info-list
   ;;[regexp
   ;; compr-message  compr-prog  compr-args
@@ -131,6 +133,10 @@
      "compressing"    "compress"     ("-c")
      "uncompressing"  "uncompress"   ("-c")
      nil t]
+    ["\\.bz2\\'"
+     "bzip2ing"        "bzip2"         ("")
+     "bunzip2ing"      "bzip2"         ("-d")
+     nil t]
     ["\\.tgz\\'"
      "zipping"        "gzip"         ("-c" "-q")
      "unzipping"      "gzip"         ("-c" "-q" "-d")

6.2 Zmiana emacs-a dla pojedyńczego użytkownika:

Podziękowania za to mależą się Ulrik-owi Dickow-owi, ukd@kampsax.dk, programiście systemowemu w Kampsax Technology:

Aby móc używać bzip2 automatycznie gdy nie jesteś sysadmin-em, po prostu dodaj co następuje do swojego pliku .emacs.

;; Automatic (un)compression on loading/saving files (gzip(1) and similar)
;; We start it in the off state, so that bzip2(1) support can be added.
;; Code thrown together by Ulrik Dickow for ~/.emacs with Emacs 19.34.
;; Should work with many older and newer Emacsen too.  No warranty though.
;;
(if (fboundp 'auto-compression-mode) ; Emacs 19.30+
    (auto-compression-mode 0)
  (require 'jka-compr)
  (toggle-auto-compression 0))
;; Now add bzip2 support and turn auto compression back on.
(add-to-list 'jka-compr-compression-info-list
             ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'"
              "zipping"        "bzip2"         ()
              "unzipping"      "bzip2"         ("-d")
              nil t])
(toggle-auto-compression 1 t)

7. Używanie bzip2-a z wu-ftpd

Podziękowania dla Arnaud Launay za tego oszczędzacza bandwidth-u. To co następuje powinno się znaleźć w /etc/ftpconversions aby wykonywać kompresję i dekompresję on-the-fly za pomocą bzip2. Upewnij się, że ścieżki takie jak (like /bin/compress) są poprawne.

 :.Z:  :  :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
 :   : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
 :.gz: :  :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
 :   : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
 :.bz2: :  :/bin/bzip2 -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:BUNZIP2
 :   : :.bz2:/bin/bzip2 -9 -c %s:T_REG:O_COMPRESS:BZIP2
 :   : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
 :   : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
 :   : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP
 :   : :.tar.bz2:/bin/tar -c -y -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+BZIP2

8. Użycie bzip2 z grep-em

Ten użytek, który nazwałem bgrep, jest niewielką modyfikacją zgrep który jest dostarczany z Linux-em. Można go używać do grep-owania plików bez bunzip2-owania ich najpierw.

#!/bin/sh

# bgrep -- a wrapper around a grep program that decompresses files as needed
PATH="/usr/bin:$PATH"; export PATH

prog=`echo $0 | sed 's|.*/||'`
case "$prog" in
        *egrep) grep=${EGREP-egrep}     ;;
        *fgrep) grep=${FGREP-fgrep}     ;;
        *)      grep=${GREP-grep}       ;;
esac
pat=""
while test $# -ne 0; do
  case "$1" in
  -e | -f) opt="$opt $1"; shift; pat="$1"
           if test "$grep" = grep; then  # grep is buggy with -e on SVR4
             grep=egrep
           fi;;
  -*)      opt="$opt $1";;
   *)      if test -z "$pat"; then
             pat="$1"
           else
             break;
           fi;;
  esac
  shift
done

if test -z "$pat"; then
  echo "grep through bzip2 files"
  echo "usage: $prog [grep_options] pattern [files]"
  exit 1
fi

list=0
silent=0
op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
case "$op" in
  *l*) list=1
esac
case "$op" in
  *h*) silent=1
esac

if test $# -eq 0; then
  bzip2 -cd | $grep $opt "$pat"
  exit $?
fi

res=0
for i do
  if test $list -eq 1; then
    bzip2 -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i
    r=$?
  elif test $# -eq 1 -o $silent -eq 1; then
    bzip2 -cd "$i" | $grep $opt "$pat"
    r=$?
  else
    bzip2 -cd "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
    r=$?
  fi
  test "$r" -ne 0 && res="$r"
done
exit $res

9. Używanie bzip2-a z Netscape-m pod X-ami.

tenthumbs@cybernex.net pisze:

Znalazłem sposób aby spowodować żeby Linux-owy Netscape używał bzip2-a do Content-Encoding tak jak używa gzip-a. Dodaj to do $HOME/.Xdefaults lub $HOME/.Xresources

Używam opcji -s ponieważ wolę stracić trochę z szybkości dekompresji na korzyść zużycia RAM-u. Możn pominąć tą opcję, jeśli ktoś tak chce.

Netscape*encodingFilters:      \
        x-compress :  : .Z     : uncompress -c  \n\
        compress   :  : .Z     : uncompress -c  \n\
        x-gzip     :  : .z,.gz : gzip -cdq      \n\
        gzip       :  : .z,.gz : gzip -cdq      \n\
        x-bzip2    :  : .bz2   : bzip2 -ds \n

10. Użycie bzip2-a do rekompresji plików skompresowanych w innych formatach

Ten program w perl-u pobiera plik skompresowany w innych formatach (.tar.gz, .tgz. .tar.Z, and .Z ) i przepakowuje je dla lepszej kompresji. Kod żródłowy w perl-u ma wiele porządnej dokumentacji dotyczącej tego co robi i jak to robi co robi.

#!/usr/bin/perl -w

#######################################################
#                                                     #
# Ten program pobiera pliki skompresowane programami  #
# compress i gzip w aktualnym katalogu i zamienia je  #
# do formatu bzip2. Obsługuje rozdszerzenie .tgz w    #
# prawidłowy sposób, tworząc plik .tar.bz2.           #
#                                                     #
#######################################################
$counter = 0;
$saved_bytes = 0;
$totals_file = '/tmp/machine_bzip2_total';
$machine_bzip2_total = 0;

while(<*[Zz]>) {
    next if /^bzip2-0.1pl2.tar.gz$/;
    push @files, $_;
}
$total = scalar(@files);

foreach (@files) {
    if (/tgz$/) {
        ($new=$_) =~ s/tgz$/tar.bz2/;
    } else {
        ($new=$_) =~ s/\.g?z$/.bz2/i;
    }
    $orig_size = (stat $_)[7];
    ++$counter;
    print "Repacking $_ ($counter/$total)...\n";
    if ((system "gzip -cd $_ |bzip2 >$new") == 0) {
        $new_size = (stat $new)[7];
        $factor = int(100*$new_size/$orig_size+.5);
        $saved_bytes += $orig_size-$new_size;
        print "$new is about $factor% of the size of $_. :",($factor<100)?')':'(',"\n";
        unlink $_;
    } else {
        print "Arrgghh!  Something happened to $_: $!\n";
    }
}
print "You've ",
      ($saved_bytes>=0)?"saved":"lost",
      " $saved_bytes bytes of storage space :",
       ($saved_bytes>=0)?")":"(", "\n";

unless (-e '/tmp/machine_bzip2_total') {
    system ('echo "0" >/tmp/machine_bzip2_total');
    system ('chmod', '0666', '/tmp/machine_bzip2_total');
}


chomp($machine_bzip2_total = `cat $totals_file`);
open TOTAL, ">$totals_file"
     or die "Can't open system-wide total: $!";
$machine_bzip2_total += $saved_bytes;
print TOTAL $machine_bzip2_total;
close TOTAL;

print "That's a machine-wide total of ",`cat $totals_file`," bytes saved.\n";

doc-linux-pl-2002.06.14.orig/html/CD-Writing-HOWTO.pl.html0100664000175000017500000014767506770264140021474 0ustar covencoven Jak zapisać dane na CD pod Linuksem.

Jak zapisać dane na CD pod Linuksem.

Autor: Winfried Trümper, winni@xpilot.org
v2.7, 11 Kwietnia 1999
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v2.01, 6 Sierpnia 1999


Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem www.shop.de.

1. Wprowadzenie.

Wielu ludzi wypala płyty CD przy pomocy Linuksa ponieważ jest to sposób niezawodny i łatwy. Nie ma "niebieskich ekranów" podczas wypalania i nie musisz się przejmować tym, żeby dobrać odpowiedni sprzęt i oprogramowanie do niego. Po prostu jak wszystko raz poprawnie ustawisz tak działa. Dokument ten omawia konfigurację, jak umieścić dane na medium i podaje trochę ciekawych aplikacji, który zostały wspomniane przez uprzejmych czytelników.

1.1 Prawa autorskie, licencja i warunki korzystania.

Prawa autorskie (C) posiada Winfried Trümper 1996,1997,1998,1999. Wszystkie prawa zastrzeżone.

Redystrybucja i użytkowanie, z modyfikacjami lub bez, jest dozwolone o ile nazwisko autora nie jest wykorzystywane do promocji czy sygnowania wszelkich produktów powstałych z tego dokumentu bez konkretnego, wcześniejszego, pisemnego pozwolenia.

1.2 Zastrzeżenie.

Autor zrzeka się wszelkich gwarancji odnośnie tego dokumentu, włącznie z wszystkimi włączonymi gwarancjami handlowymi. W żadnym wypadku nie jestem odpowiedzialny za jakiekolwiek bezpośrednie i pośrednie zniszczenia, w wyniku których nastąpiła utrata używalności, danych czy dochodów wynikające z używania tego dokumentu.

Krótko: używaj na własną odpowiedzialność.

1.3 Proponowane dokumenty do przeczytania.

CD-R FAQ, to ogólny dokument zawierający często zadawane pytania na temat płyt CD do nagrywania (CD-R), nagrywarek płyt i wymaganego oprogramowania.

Ponieważ wiekszość nagrywarek CD można używać także do czytania płyt CD; możliwe, że będziesz chciał przeczytać także CDROM-HOWTO, SCSI-HOWTO i Kernel-HOWTO

1.4 Terminologia ... lasery na max ... ognia!

CD-ROM to skrót od "Compact Disc Read Only Memory", nośnik danych wykorzystujący laser optyczny do wyczuwania mikroskopijnych zagłębień na srebrnym, błyszczącym dysku. Błyszczenie pochodzi od aluminiowej warstwy, która jest nośnikiem. Zaglebienia reprezentują bity informacji (w pewien sposób) i są takie malutkie, że jakieś kilka bilionów mieści się na płycie. Przez to CD jest nośnikiem dużych ilości danych.

Termin CD-R jest skrótem od "CD-ROM Recordable" i odnosi się do płyty CD, która nie ma tych mikrospijnych zagłębień na powierzchni... i przez to jest pusta.

Zamiast srebrnej aluminiowej warstwy ma specjalny "film" (kolorowy), w którym "mikroskopijne zagłębienia)" mogą być wypalone. Robi się to przez nadanie laserowi, który normalnie tylko wykrywa zagłębienia, trochę większej mocy, tak że zagłębienia są wypalane. Takie działanie może być podjęte tylko raz na CD-R.

Jednak można sobie zostawić miejsce na późniejsze nagrywanie, tworząc wielosesyjną płytę CD.

CD-ROM rewritable (czyli CD do wielokrotnego zapisu; w skrócie CD-RW zostały wynalezione, aby obejść ograniczenia CD-R. W tych płytach laser nie tylko może wypalić takie mikroskopijne zagłębienia, ale może także przywrócić płytę do oryginalnego stanu sprzed zapisu. Jest to możliwe, ponieważ laser tak naprawdę nie wypala dziur - nie widzisz przecież dymu podczas wypalania i żaden głos z góry nie mówi ci "cel zniszczony". To co laser robi naprawdę, to wyzwala zmianę fazy (trigger a phase change), i stąd nazwa dla nagrywarek CD-RW "urządzenia do zmiany fazy". Przykład bardzo podobnej procedury, to samochód czyszczący na lodowisku hokejowym; w czasie przerw samochód ten przejeżdża przez lodowisko i wypełnia zadrapania w lodzie (cząstki zawierające rodzaj informacji o grze... :) ) roztopionymi kawałkami lodu.

[Od tłumacza] Dobra... Wiem, że przetłumaczyłem to ... powiedzmy nieciekawie... Jeśli masz ciekawsze tłumaczenie tego fragmentu, to zapraszam.

To HOWTO objaśnia zadanie zapisu na CD-R i CD-RW. Witamy na pokładzie, kapitanie!

1.5 Obsługiwane zapisywarki.

Szczegółowa lista modeli, które zostały podane jako działające lub nie z różnymi unix-ami jest dostępna pod adresem ( www.guug.de).

Oto obszerne zestawienie napędów, które zdają się działać z cdrecord:

Acer:           CDRW 6206A
BTC:            BCE 621E (IDE)
Compro:         CW-7502, CW-7502B
Dysan:          CRW-1622
Elite:          Elite b444.41
Grundig:        CDR 100 IPW
Guillemot:      Maxi CD-R 4X/8X
HP:             SureStore 4020i, SureStore 6020i,
                C4324, C4325
               CD-Writer+ 7100, CD-Writer+ 7200i,
               CD-Writer+ 8100i, CD-Writer+ 8110i,
Hi-Val:         CDD-3610
JVC:            XR-W2001, XR-W2010, XR-W2042, R-2626
Kodak:          PCD 200, PCD 225, PCD 260, PCD 600
Matsushita:     CW-7502
Memorex:        CRW-620, CRW-1622
Microboards:   PlayWrite 2000, PlayWrite 4000RW, PlayWrite 4001RW
MicroNet:       MasterCD Plus 4x4, MasterCD Plus 4x6
Mitsubishi:    CDRW-226
Mitsumi:       CR-2401-TS, CR-2600 TE,  CR-2801 TE, CR-4801 TE
Nomai:          680.RW
OTI:           CDRW 965
Olympus:       CDS 615E, CDS 620E
Optima:         DisKovery 650 CD-R
OTI:            CDRW 965 
Panasonic:      CW-7502, CW-7582
Philips:        CDD-521/10, CDD-522
               CDD-2000, CDD-2600, CDD-3600, CDD-3610
               Omniwriter 26, Omniwriter 26A
Plasmon:       CDR 480, CDR 4220, RF-4100, RF-4102, CDR 4400
Plextor:       CDR PX-24 CS, PX-412 C, PX-R412 C
               PX-R810Ti, PleXwriter 412C
Procom:         PCDR 4 
Ricoh:          RO-1420C+, MP 1420C, MP 6200S, MP 6201S
Sanyo:         CRD-R24S
Smart and
Friendly:       CD-RW226, CD-R1002, CD-R1002/PRO, CD-R1004,
                CD-R2004, CD-R2006 PLUS, CD-R2006 PRO,
                CD-R4000, CD-R4006, CD-R4012
Sony:          CDU 920S, CDU 924, CDU 926S, CDU-928E,
               CDU 948S, CDRX 100E
Taiyo Yuden:    EW-50 
TEAC:          CD-R50S, CD-R55S, CDR-55S
Traxdata:      CRW 2260, CDR 4120, CDRW 4260,
Turtle Beach:   2040R
WPI (Wearnes):  CDRW-622, CDR-632P
YAMAHA:                CDR-100, CDR 102, CDR-200, CDR-200t, CDR-200tx
               CDR-400, CDR-400c, CDR-400t, CDR-400tx, CDR-400Atx
               CRW-2260, CRW-2260t,
               CRW-4250tx, CRW-4260 t, CRW-4260 tx, CRW-4261,
               CRW-4416 S
Tabela 1: Nagrywarki obsługiwane przez Linuksa

Jeśli twój sprzęt nie jest obsługiwany, to wciąż możesz użyć Linuksa do przygotowania materiału na CD. Możesz tak postąpić, ponieważ większość oprogramowania DOS-owego nie umie obsłużyć RockRidge Extensions. Ale musisz wtedy użyć DOS-owego oprogramowania do wypalenia płyty.

1.6 Obsługiwane "zalety".

Są dwie klasy narzędzi do zapisywania CD-R: sterowniki sprzętowe i formatery danych. Sterowniki sprzętowe obsługują następujące cechy:

       Cecha            cdwrite-2.1     cdrecord-1.7
       --------------------------------------------
       IDE/ATAPI          nie                tak
       Port równoległy    nie                tak
       CD-RW              nie                tak
       Wielosesyjność     tylko częściowo    tak
Tabela 2: Cechy sterowników sprzętowych

cdwrite to stare oprogramowanie i wzmiankowane jest tylko dla zachowania kompletności. Używaj proszę zamiast tego cdrecord, ponieważ obsługuje on znacznie więcej sprzetu i ma o wiele więcej możliwości. Celem formaterów danych jest organizacja danych na płycie (umieszczenie na nich systemu plików).

       Cecha         mkisofs  mkhybrid
       --------------------------------------------
       ISO9660         tak      tak
       RockRidge       tak      tak
       El Torito       tak      tak
       HFS             nie      tak
       Joliet          nie      tak
Tabela 3: Cechy formaterów danych

Najbardziej oczywistą różnicą między systemem plików ISO9660 a Extended-2 jest możliwość modyfikacji plików na tym drugim po zapisaniu ich. Ograniczenia na ISO9660 to:

RockRidge jest rozszerzeniem pozwalającym na dłuższe nazwy i głębszą strukturę katalogów dla systemu plików ISO9660. Rozszerzenia te (RockRidge) nie są dostepne pod DOS-em czy Windows.

El Torito może być używane do tworzenia startowych (bootable) płyt CD. BIOS twojego komputera musi mieć możliwość uruchamiania takich płyt. Mówiąc wprost: pierwsze 1,44 MB na płycie zawiera dyskietkę startową zrobioną przez ciebie. Obraz takiej dyskietki jest traktowany jako dyskietka i system z niej startuje.

HFS pozwala na odczytanie CD-ROM-u na Macintosh-u, tak jakby był to wolumin HFS (rodzinny system plików MacOS).

Joliet pozwala na długie nazwy (między innymi) dla Windows (95, 98, NT). Autor nie zna żadnego narzędzia, które pozwalałoby mieć dłuższe nazwy pod DOS-em czy Windows 3.11.

Sekcja 2.8 pokazuje skąd można pobrać wspomniane oprogramowanie.

1.7 Listy dyskusyjne.

Jeśli chcesz się przyłączyć do grupy rozwojowej (w celu aktywnej pomocy), wyślij list na adres cdwrite-request@other.debian.org i umieść słowo subscribe w treści listu.

1.8 Najnowsza wersja.

Najnowsza wersja tego dokumentu jest zawsze dostępna pod adresem www.guug.de.

2. Konfiguracja Linuksa do nagrywania płyt.

Jesli uda ci się pokonfigurować sprzęt i system, to polecenie cdrecord -scanbus wyświetli ci listę urządzeń, dostępnym do zapisu. Celem tego rozdziału jest poprowadzenie cię poprzez konfigurację Linuksa, tak abyś na końcu zobaczył coś takiego:

$> cdrecord -scanbus
Cdrecord release 1.7a1 Copyright (C) 1995-1998 Jörg Schilling
scsibus0:
          0) 'Quantum ' 'XP34300         ' 'F76D' Disk
          1) 'SEAGATE ' 'ST11200N        ' '8334' Disk
          2) *
          3) 'TOSHIBA ' 'MK537FB/        ' '6258' Disk
          4) 'WANGTEK ' '5150ES SCSI-36  ' 'ESB6' Removable Tape
          5) 'EXABYTE ' 'EXB-8500-85QUE  ' '0428' Removable Tape
          6) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Removable CD-ROM
          7) *
scsibus1:
        100) 'Quantum ' 'XP31070W        ' 'L912' Disk
        101) *
        102) *
        103) 'TEAC    ' 'CD-R55S         ' '1.0H' Removable CD-ROM
        104) 'MATSHITA' 'CD-R   CW-7502  ' '4.02' Removable CD-ROM
        105) *
        106) 'YAMAHA  ' 'CDR400t         ' '1.0d' Removable CD-ROM
        107) *
Listing 1: Wykrywanie urządzeń na kontrolerze SCSI.

Przykład ten został dostarczony przez Jörga Schillinga. Widać tutaj cztery nagrywarki. Nie można rozróżnić zwykłego CD-ROMu od nagrywarek. Ale identyfikator produktu ma często w sobie wskazówki w stylu R, -R czy -RW.

2.1 Konfiguracja jądra Linuksa.

Jądro można wyposażyć w sterowniki służące do różncyh celów. Można je wkompilować na stałe lub jako moduły ładowane na żądanie. Ta druga metoda jest preferowana dla sterowników niekrytycznych dla systemu. Np. jeśli masz system na dysku IDE, to sterownik do tego dysku musisz mieć w jądrze (a nie jako moduł).

Są trzy rodzaje nagrywarek: SCSI, IDE/ATAPI i zewnętrzne podłączane do portu równoległego. Tabela 4 pokazuje jak skonfigurować jądro dla tych typów nagrywarek. Pierwsza kolumna, to sekcja w menu konfiguracji jądra, gdzie można znaleźć dane ustawienie. Druga kolumna, to opis tej opcji. Trzecia kolumna, to nazwa modułu powstałego po kompilacji.

Y to tak (yes) i oznacza, że masz to wkompilować w jądro. M to moduł, i oznacza, że ma to być wkompilowane jako moduł. Y/M pozwala tobie wybrać czy ma to być moduł czy wkompilowanie w jądro. Puste ustawienia oznaczają, że nie trzeba tego modyfikować. Nie zmienianie tego ustawienia zwiększa szanse, że jadro będzie działać (jeśli działało wcześniej).

Aby sprawdzić jakie sterowniki są aktywne (tak statyczne jak i dynamiczne) w twoim jądrze, możesz odczytać plik /proc/devices. Aby sprawdzić jakie moduły są załadowane wydaj plecenie 'lsmod'. Aby sprawdzić jakie moduły są dostępne do załadowania wydaj polecenie 'modprobe -l'. Jeśli potrzebujesz modułu niedostępnego w twoim systemie, musisz przekompilować jądro. Przeczytaj Kernel-HOWTO na temat szczegółów kompilacji. Najświeższe informacje na temat obsługi modułów jądra znajdziesz w Module-HOWTO.

Sekcja      Opis                   Moduł    SCSI  IDE   PP
------------------------------------------------------------
BLOCK  Enhanced IDE/MFM/RLL...                     Y      
BLOCK  IDE/ATAPI CDROM             ide-cd        M/N/Y     
BLOCK  SCSI hostadaptor emulation  ide-scsi        M      
BLOCK  Loopback device             loop       M    M     M

PARIDE Parallel port IDE device    paride               Y/M
PARIDE Parallel port ATAPI CD-ROMs                       M
PARIDE Parallel port generic ATAPI                       M
PARIDE (select a low-level driver)                       Y

SCSI   SCSI support                scsi_mod  Y/M  Y/M    
SCSI   SCSI CD-ROM support         sr_mod    Y/M  Y/M     
SCSI     Enable vendor-specific               Y    Y      
SCSI   SCSI generic support        sg        Y/M  Y/M     
SCSI   (select a low-level driver)            Y

FS     ISO 9660 CDROM filesystem   iso9660    Y    Y     Y
FS     Microsoft Joliet cdrom...   joliet     M    M     M
Tabela 4: Konfiguracja jądra

Jeśli udało ci się już skompilować jądro czy znaleźć potrzebne moduły, to albo dodaj je do /etc/modules albo pozwól ładować je automatycznym narzędziom (kmod, kerneld). Jeśli nie jesteś pewien, skonsultuj to z dokumenctacją swojej dystrybucji.

Opcja "SCSI hostadaptor emulation" we wczesniejszych jądrach nazywa się "SCSI emulation" (około 2.0.36). Jeśli jądro na to pozwala, skompiluj sterownik dla CD-ROM-ów IDE/ATAPI jako moduł. Jeśli nie, to wyłącz go (N) i użyj zamiast niego sterownika do CD-ROM-ów SCSI. W jądrach serii 2.2, nie możliwe jest uruchamianie sterowników do IDE i SCSI na tym samym fizycznym urządzeniu w tym samym czasie (jeśli masz 2.0.36, to przeczytaj poniżej).

Urządzenie loopback jest opcjonalne i pozwala przetestować obraz płyty przed zapisaniem.

Jeśli chcesz móc czytać płyty, to potrzebujesz obsługi systemu plików ISO 9660. Sterownik ten zawiera w sobie obsługę RockRidge Extensions. Jeśli chcesz mieć także obsługę MS Joliet ERxtensions, to skompiluj je jako moduł i załaduj.

[Od tłumacza] O ile się nie mylę, to Joliet jest obsługiwany przez jądro 2.0.36...

W każdym przypadku potrzebujesz sterownik niskiego poziomu dla swojego sprzętu. "Niskiego poziomu" odnosi się do sterownika, który komunikuje się bezpośrednio ze sprzętem. Dla urządzeń SCSI i podłączanych przez port równoległy jest wiele sterowników niskiego poziomu. Są one opisane poniżej.

Specjalne uwagi dla serii 2.2

W jądrze 2.2.1 nie włączaj na raz opcji CONFIG_SCSI_MULTI_LUN ('probe for multiple luns') i obsługi ide-scsi. Znany jest błąd ide-scsi, który nie pozwala na to. W każdym razie zaleca się uaktualnienie do wersji 2.2.5.

Niektórzy użytkownicy zgłaszali konflikty między prekompilowanymi binariami a jądrem 2.2. Jest to problem z jądrem. Oto rozwiązania:

Specjalne uwagi dla wersji 2.0

Jądra w wersji wcześniejszej niż 2.0.31 mają kilka błedów i nie mogą czytać ostatniego pliku na płycie. Uaktualnij je do wersji 2.0.36.

W jądrze 2.0.36 możesz podać który sterownik (IDE czy SCSI) użyć do którego urządzenia ATAPI. Dokładniej: możesz włączyć opcję "SCSI emulation" w jądrze i uaktywnić ją dla konkretnego urządzenia przed lub podczas ładowania jądra. Np. jesli twojej nagrywarce odpowiada plik /dev/hdb, to dodaj polecenie hdb=ide-scsi.

image=/boot/zImage-2.0.36
  label=Linux
  read-only
  append="hdb=ide-scsi"
Listing 2: Przykładowa konfiguracja dla lilo (/etc/lilo.conf)

linux "Linux 2.0.36" {
        image=/boot/zImage-2.0.36
        cmdline= root=/dev/hda5 readonly hdb=ide-scsi
}
Listing 3: Przykłądowa konfiguracja dla chos (/etc/chos.conf)

2.2 Sprzęt i pliki urządzeń.

Jak już zainstalowałeś wszystkie potrzbne sterowniki, wystartuj nowe jądro. Powinno się tam już znajdować wszystko czego będziesz potrzebować do do następnych rozdziałów.

[Użytkownicy devfs nie muszą się przejmować następnymi krokami (ręczną konfiguracją plików urządzeń. Jeśli używasz devfs, wszystko pojawi się automagicznie na swoim miejscu.]

Przejdź do katalogu /dev i sprawdź czy masz urządzenia loopback. Nie jest to konieczne, żebyś musiał je mieć ale wygodniejsze (zobacz punkt 3.5). Jeśli już je masz, to polecenie ls powinno pokazać loop0 - loop7:

$ > cd /dev
$ > ls loop*
loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7
Listing 4: pliki urządzenia loopback

Jeśli nie masz tych urządzeń, to stwórz je przy pomocy skryptu /dev/MAKEDEV:

$ > cd /dev/
$ > modprobe loop
$ > ./MAKEDEV loop
Listing 5: polecenia do tworzenia plików urządzeń loopback

Ostatnie polecenie powiedzie się tylko jeśli masz skompilowany moduł loop. To co przeczytałeś dotąd na temat obsługi plików urzdzenia loopback odnosi się do wszystkich plików urządzeń (sg*, pg*, hd*, ...) i nie piszę wyraźnie o tym dalej.

Nagrywarki IDE/ATAPI.

ATAPI oznacza "polecenia SCSI przez szynę IDE". Innymi słowy napędy IDE/ATAPI porozumiewają się poprzez protokół SCSI (z pewnymi ograniczeniami) i w ten sposób mogą imitować urządzenia SCSI.

W Linuksie nagrywarka IDE może pojawić się jako SCSI dzięki opcji "SCSI (hostadaptor) emulation". Tak więc uaktywnij odpowiedni moduł jądra ide-scsi, jak to opisano powyżej i potem możesz robić wszystko tak jakbyś miał nagrywarkę SCSI.

Nagrywarki SCSI.

Upewnij się, że twoja nagrywarka jest rozpoznawana przez BIOS twojego komputera. Nie ma sensu robić czegokolwiek dalej jeśli twój komputer nie zaakceptuje sprzętu. (fakt, że komputer nie wypluje nagrywarki nie jest potwierdzeniem; na ekranie musi pojawić się odpowiedni napis).

Jeśli planujesz podłączyć swój napęd SCSI do portu równoległego, będziesz potrzebował specjalnego kabla i specjalnego sterownika w jądrze. Więcej na ten temat możesz poczytać pod adresem www.torque.net/parport/parscsi.html.

Ogólne urządzenia SCSI.

Pliki urządzeń /dev/sd* i /dev/sr* używane do komunikacji z dyskami i CD-ROM-ami SCSI mają zaimplementowany tylko transfer zorientowny na bloki danych. To właśnie czyni je tak szybkimi i idealnymi do zapisu danych. Sterowanie laserem nagrywarki to bardziej skomplikowane zadanie i wymaga trochę więcej niż transferu danych w postaci bloków. Aby utrzymać tę jakość urządzeń sd* i sr* stworzono nowy rodzaj plików urządzeń SCSI; tzw ogólne urządzenia SCSI.

Ponieważ poprzez ogólne urządzenia SCSI można zrobić wszystko ze sprzętem SCSI nie są one przeznaczone do jakiegoś konkretnego celu - stąd nazwa ogólne (generic).

Tak jak inne pliki urządzeń i te można znaleźć w katalogu /dev/:

$ > cd /dev
$ > ls sg*
sg0  sg1  sg2  sg3  sg4  sg5  sg6  sg7

Jeśli nie masz tych plików urządzeń, to stwórz je używając skryptu /dev/MAKEDEV:

$ > cd /dev/
$ > ./MAKEDEV sg

Nagrywarki podłączane przez porty równoległe.

Przykro mi, ale nie mam pojęcia na ten temat. Przeczytaj informacje zawarte na stronie WWW poświęconej temu tematowi albo plik na swoim dysku /usr/src/linux/Documentation/paride.txt.

2.3 Zdobądź oprogramowanie do wypalania CD-R.

Przegląd narzędzi służących do nagrywania płyt znajduje się pod adresem www.fokus.gmd.de. Project tworzenia CD dla Unix-a.

Narzędzia obsługiwane z linii poleceń.

Jedno z poniższych narzędzi potrzebne jest aby wygenerować obraz płyty.

mkisofs mkhybrid

W zależności od modelu twojej nagrywarki (zobacz 1.3) potrzebne jest jedno z poniższych narzędzi do zapisania danych na CD:

Nie wierz podręcznikowi systemowemu od (starego) mkisofs, który stwierdza, że potrzebujesz wersji 1.5. Po prostu użyj programu cdrecord i będzie w porządku. Zauważ, że program mkisofs dostarczany wraz z cdrecord ma kilka rozszerzeń wspomnianych w dokumentacji programu.

Graficzne interfejsy użytkownika. (opcjonalne)

Front-endy w Linuksie to rzeczywiste front-endy. Oznacza to, że ciągle musisz zainstalować narzędzia obsługiwane z linii poleceń, ale masz do nich dostęp w ładniejszy sposób.

X-CD-Roast to pakiet stworzony do ułatwienia tworzenia płyt w Linuksie. Łączy on narzędzia sterowane z linii poleceń jak cdrecord i mkisofs z ładnym graficznym interfejsem.

www.fh-muenchen.de

BurnIT to front-end napisany w Javie do cdrecord, mkisofs i cdda2wav-0.95, co czyni z niego kompletny pakiet do wypalania płyt CD na platformach unixowych. Ściągnąć go można z adresu sunsite.auc.dk.

3. Wypalanie płyt CD-R.

Imperator Nero na temat palenia swoich własnych klasycznych CD [AD64; on się na tym kompletnie nie zna] "Jeśli do ognia się obrócisz, zabawiać się nie przestanę póki się palisz."

[tłum.: Z góry przepraszam za tłumaczenie, ale poetą nie jestem.]

Zapis CD w Linuksie składa się z dwóch kroków:

Rozdział ten opisuje kroki tworzenia płyt z danymi i audio.

3.1 Zapis CD-ROM-ów (czyste dane).

Pamiętaj, że zebranie wszystkiego do płyty zabiera o wiele więcej niż się można spodziewać. Jednak pamiętaj też, że brakujących plików nie można dopisać do płyty jak jest już zapisana i zakończona.

Pamiętaj także, że pewna ilość miejsca na płycie jest używana do przechowywania informacji na temat systemu plików iso9660 (zwykle kilka MB). 620 MB danych zawsze się zmieści na 650MB płycie CD-R.

3.2 Tworzenie obrazu późniejszej płyty.

Zanim jakiś nośnik danych (dyskietka, dysk twardy czy kompakt) będzie mógł być użyty trzeba na nim założyć system plików (mówiąc po DOS-owemu: trzeba go sformatować). System plików jest odpowiedzialny za organizację i zapis plików na nośniku.

Zwykle, narzędzia do tworzenia systemu plików na partycji dyskowej, zapisuja na niej pusty system plików, który jest potem montowany i wypełniany plikami przez użytkownika. Zapisywalne płyty CD są zapisywalne tylko raz, więc jeśli zapisałbyś na nim pusty system plików, zostałoby sformatowane - ale pozostałoby puste na zawsze. Jest to także prawda dla nośników wielokrotnego zapisu, ponieważ nie można zmienić dowolnie zawartości sektorów, ale trzeba ją całą najpierw skasować.

Więc to czego potrzebujemy, to narzędzie, które tworzy system plików podczas nagrywania plików na płycie. Narzędzie to nazywa się mkisofs. Przykładowe użycie może być takie:

       mkisofs  -r -o obraz_cd   moja_kolekcja/
                   `---------'   `-------------'
                        |               |
                  dokąd zapisać   nagraj z tego katalogu

Opcja -r ustawia prawa dostępu wszystkich plików na odczyt dla wszystkich i włącza RockRidge Extensions. To jest zwykle to, co chcesz osiągnąć i użycie tej opcji jest zalecane, no chyba, że wiesz dokładnie co robisz. (wskazówka: bez -r pliki na kompakcie będą miały prawa jak moja_kolekcja!).

mkisofs spróbuje odwzorować wszystkie nazwy plików na format 8.3 używany przez DOS, aby zapewnić jak największą kompatybilność. W razie gdy pliki w formacie 8.3 nazywają się tak samo, używane są liczby, a informacja o takich plikach wysyłana jest do STDERR - zwykle ekran. Nie panikuj:
Pod Linuksem nigdy nie zobaczysz tych nazw w formacie 8.3, ponieważ Linux umie korzystać z RockRidge Extensions, które zawierają oryginalne atrybuty pliku (prawa dostępu, nazwy, itp.).

Teraz możesz się zastanawiać dlaczego rezultat nie jest wysyłany bezpośrednio do nagrywarki. Z dwóch powodów:

Metodę zapisu płyty w jednym kroku opiszę poniżej.

Możnaby stworzyć dodatkową partycję na dysku i tam zapisywać wynik działania mkisofs. Jednak ja jestem przeciwny takiemu rozwiązaniu ponieważ jedną literówką możnaby sobie zniszczyć całą partycję Linuksową (czytaj: co mi się przytrafiło...). Co więcej, to jest marnowanie miejsca na dysku, bo dane te są tylko czasowe i można je usunąć po zapisaniu na płytę. Jednak jeśli masz wystarczająco dużo miejsca na dysku, dodatkowa partycja może ci zaoszczędzić czasu na kasowanie obrazu.

Przetestuj obraz kompaktu.

Linux ma możliwość montowania plików tak jakby były one partycją. Cecha ta przydaje się do testowania obrazu płyty, czy prawa dostępu są takie jak chcesz. Pomimo, iż nośniki są teraz bardzo tanie, to zapis płyty zabiera trochę czasu i możesz chociaż zaoszczędzić swój czas sprawdzając obraz.

Aby zamontować w katalogu /cdrom taki plik stworzony wcześniej wpisz:


       mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom

Teraz możesz sprawdzić pliki w katalogu /cdrom - pojawią się tam dokładnie tak samo jak będą wyglądać na płycie. Aby odmontować ten plik po prostu napisz umount /cdrom. Uwaga: Jeśli masz jądro starsze niż 2.0.31, to ostatni plik na płycie może nie być czytany. Użyj nowszego jądra, jak np. 2.0.36. Opcja -pad w programie cdrecord odnosi się tylko do płyt audio, a dodatkowa opcja -pad programu mkisofs wymaga łaty, co jest taką samą pracą jak uaktualnienie do nowego jądra.

Uwaga:

Niektóre stare wersje mount nie umieją obsługiwać urządzeń loopback. Jeśli masz taką starą wersję mount, to jest to wskazówka, żeby uaktualnić swoją dystrybucję.
Kilku ludzi sugerowało już, żeby zamieścić tu informację skąd wziąć najnowsze narzędzia do montowania, ale ja zawsze odmawiam. Jeśli twoja dystrybucja dostarcza takiej starej wersji mount, to zgłoś to do nich jako błąd. Jeśli twoja dystrybucja nie jest łatwa do uaktualnienia, zgłoś to jako błąd.

Jeśli dołączyłbym tutaj wszystkie informacje potrzebne do poprawienia błędów w źle zaprojektowanej dystrybucji to HOWTO byłoby o wiele większe i trudniejsze do czytania.

3.3 Zapisz obraz CD na płytę.

Już nie ma dużo do zrobienia. Jeśli jeszcze nie próbowałeś, to jest dobra chwila na polecenie:

cdrecord -scanbus

Polecenie to pokaże ci do którego urządzenia SCSI dołączona jest twoja nagrywarka. Wszystkie inne metody zgadywania informacji wyświetlanych przez cdrecord zostały usunięte z tego HOWTO (szczególnie ten cokolwiek niebezbieczny schemat nazewnictwa ogólnych urządzeń SCSI).

Zanim pokażę ci ostatnie polecenie, pozwól się ostrzec, że nagrywarki "lubią być karmione" ciągłym strumieniem danych ponieważ mają tylko mały bufor danych. Tak więc proces zapisu obrazu CD na płytę nie może być przerwany, bo w wyniku otrzymamy źle nagraną płytę. Łatwo jest przerwać taki strumień danych np. przez skasowanie dużego pliku. Przykład: Jeśli skasujesz plik o rozmiarze 650 MB, to jądro musi uaktualnić informacje o 650.000 bloków na dysku (zakładając, że masz na swoim systemie plików bloki 1 kB). Zajmuje to trochę czasu i bardzo prawdopodobne, że zwolni działalność dysku na tyle, że strumień danych zostanie przerwany na kilka sekund. Jednak na szybkich maszynach czytanie poczty, surfowanie po sieci czy nawet kompilacja jądra nie mają wpływu na nagrywanie.

Zauważ proszę, że żadna nagrywarka nie potrafi ponownie ustawić lasera i nie może kontynuować od miejsca, w którym zostało przerwane nagrywanie. Przez to każda silniejsza wibracja a nawet wstrząs zniszczy płytę.

Jeśli jesteś już psychicznie przygotowany, ubierz się w czarną szatę, pomnóż numer SCSI-ID nagrywarki przez numer SCSI-revision i zapal tyleż samo świeczek, wymów dwa wiersze z "ASR-FAQ" (grupa dyskusyjna alt.sysadmin.recovery) i ostatecznie wpisz:

$ > SCSI_BUS=0   # wzięte z listingu "scsibus0:"
$ > SCSI_ID=6    # wzięte z listingu "TOSHIBA XM-3401"
$ > SCSI_LUN=0
$ > cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN \
                   -data  cd_image

# to samo co wyżej, ale krótsze
$ > cdrecord -v speed=2 dev=0,6,0  -data  cd_image

Dla zwiększenia czytelnośći, namiary na nagrywarkę zapisane są do trzech zmiennych o wymownych nazwach: SCSI_BUS, SCSI_ID, SCSI_LUN. Opcja -data nie jest konieczna, ale została tutaj podana, aby odróżnić tę linijkę o linijki służącej do nagrywania płyt audio.

Jeśli używasz programu cdrecord do nadpisania płyty CD-RW, musisz podać opcję blank=..., aby skasować poprzednią zawartość. Poczytaj stronę podręcznika man, aby dowiedzieć się więcej na temat różnych metod zerowania płyty CD-RW.

W czasach kiedy wszyscy oprócz mnie posiadają 400 MHz maszyny, ludzie nagrywają płyty w locie bez tworzenia obrazu. Czyli łączą wyjście programu mkisofs z wejściem programu cdrecord:

$ > IMG_SIZE=`mkisofs -R -q -print-size private_collection/`
$ > mkisofs -r  private_collection/  \
|cdrecord  speed=2  dev=0,6,0
            tsize=${IMG_SIZE}s  -data  -
#         nie zapomnij o s --^         ^-- czytaj dane z STDIN

Pierwsze polecenie jest pustym poleceniem służącym do określenia rozmiatu obrazu (potrzebujesz mkisofs z pakietu cdrecord, aby to działało). Może twoja nagrywarka nie musi znać rozmiaru obrazu, który będzie zapisany, wtedy możesz to opuścić. Wyświetlony rozmiar musi być przekazany jako parametr tsize do polecenia cdrecord (jest zapisany w zmiennej środowiskowej IMG_SIZE). Ostatnie polecenie to połączenie poleceń mkisofs i cdrecord przez potok.

3.4 Zapisywanie płyt audio.

Zapisanie takiej płyty jest bardzo podobne do wymienionych powyżej kroków/ Dwie główne różnice, to fakt, że płyty audio składają się ze ścieżek audio, które są zorganizowane w osobne obrazy. Więc jeśli chcesz mieć 10 ścieżek, to musisz mieć 10 obrazów. Drugą różnicą jest format tych obrazów. Już nie ISO 9660 (czy jaki tam system plików wolisz), ale 16-bitowe sample w kodowaniu PCM z częstotliwością próbkowania 44,1 kHz.

Jednym z narzędzi do zamiany twoich plików dźwiękowych do wymaganego formatu jest sox. Użycie jest bardzo proste:

$ > sox  killing-my-software.wav  killing-my-software.cdr

Polecenie to zamienia utwór killing-my-software z formatu WAV na format CDR. Poczytaj stronę podręcznika systemowego man programu sox na temat rozszerzeń i formatów plików rozpoznawanych przez niego. Z powodu sporej ilości dysku potrzbnej na konwersję, jest to wbudowana cecha programu cdrecord dla formatów WAV i AU. Tak więc dopóki twoje pliki muzyczne są w postaci plików .wav czy .au i są to 16-bitowe próbki z częstotliwością 44,1 kHz możesz ich używać bez ręcznej zamiany.

Cdrecord zapisuje obrazy jako ścieżki audio jeśli podamy opcję -audio. Inne opcje są identyczne z tymi do zapisywania danych (o ile nie masz jakichś bardzo specyficznych wymagań). Poniższe trzy przykłady robią to samo, ale czytają obrazy z innych plików:

$ > cdrecord -v speed=2 dev=0,6,0  -audio  track1.cdr track2.cdr...
$ > cdrecord -v speed=2 dev=0,6,0  -audio  track1.wav track2.wav...
$ > cdrecord -v speed=2 dev=0,6,0  -audio  track1.au track2.au...

Szczególnym przypadkiem są pliki MPEG3, które mogą być zamienione przy pomocy programu 'mpg123 -s track1.mp3 > track1.cdr'. W drugą stronę działa 8hz-mp3 dla plików WAV.

W takim układzie jak powyżej wypalisz płyty z 2-sekundową przerwą pomiędzy każdymi dwoma ścieżkami audio. Jeśli twoja nagrywarka umożliwia nagrywanie w trybie "disc at once" (DAO), możesz wypróbować najnowszej wersji cdrecord, aby się tych przerw pozbyć.

3.5 CD-ROM-y mieszane.

Niewiele do powiedzenia. Po prostu określ typ oklejnych obrazów opcjami -data lub -audio. Przykład:

cdrecord  -v dev=0,6,0  -data  cd_image  -audio  track*.cdr

4. Często zadawane pytania wraz z odpowiedziami.

4.1 Jak czuły jest proces wypalania?

Odpowiedź: To zależy od twojej nagrywarki. Nowsze powinny mieć bufor danych o pojemności ok. 1MB lub coś koło tego i może wytrzymać jakieś 1-2 sekund bez dopływu danych. Jeśli chcesz znać jakieś szczegóły, to zajrzyj do podręcznika albo zapytaj producenta. Niezależnie od rozmiaru tego bufora musisz zagwarantować stały przepływ danych w granicach 300 kb/s - 600 kb/s.

Procesy intensywnie wykorzystujące dysk, jak np. uaktualnianie bazy "locate", obniżają maksymalny przepływ i mogą zniszczyć płytę; lepiej sprawdź czy takie procesy nie są uruchamiane przez cron-a, at lub anacron-a podczas gdy wypalasz płytę.

Z drugiej strony niektórzy kompilowali jądro podczas wypalania płyty i nic ich płytom się nie działo. Do takich eksperymentów potrzebujesz jednak szybkiej maszyny.

4.2 Czy fragmentacja ma zły wpływ na prędkość przepływu danych?

Fragmentacja jest zwykle taka mała, że jej wpływ jest niezauważalny. Jednak możesz łatwo skonstruować patologiczne przypadki fragmentacji, które obniżą prędkość przepływu danych do 100 kb/s. Więc nie rób tego. :-)

Tak, pliki przez lata fragmentują się na dysku. Tym szybciej, im szybciej system plików jest pełny. Zostawiaj zawsze 10% - 20% wolnego miejsca i powinno być dobrze.

Jeśli nie jesteś pewny, to spójrz na komunikaty wypisywane podczas startu, procent fragmentaji jest podawany podczas sprawdzania systemu plików. Możesz sprawdzić tę wartość bardzo niebezpiecznym poleceniem


       $ > e2fsck -n  /dev/sda5        # '-n' jest ważne!
       [różne komunikaty usunięte - zignoruj wszelkie błędy]
       /dev/sda5: 73/12288 files (12.3% non-contiguous)

W tym przykładzie fragmetacja jest bardzo wysoka - ale na tym systemie plików są tylko 73 małe pliki (użyte w /tmp) więc wartość ta nie jest alarmująca.

Jest eksperymentalne narzędzie zwane e2defrag służące do defragmentacji systemu plików Extended-2. Obecna wersja nie działa zbyt pewnie, aby używać jej nawet w domowych komputerach. Jeśli naprawdę chcesz zdefragmentować swój system plików, zrób kopię zapasową (lepiej: dwie kopie), poćwicz odzyskiwanie danych, stwórz nowy system plików (to zniszczy ten stary) i odtwórz dane. Jest to najbezpieczniejsza technika.

4.3 Czy możliwe jest zapisanie obrazu CD na systemie plików UMSDOS?

Tak. Jedyny system plików, który jest nieodpowiedni do tego celu to NFS (sieciowy system plików).

Ja używam UMSDOS, żeby dzielić mejsce na dysku pomiędzy Linuksem a DOS/Win na PC-cie (486/66) przeznaczonym do nagrywania płyt.

4.4 Czy nie ma jakiegoś sposobu, żeby obejść ograniczenia ISO 9660?

Tak. Na płycie możesz umieścić jakikolwiek system plików. Ale inne systemy operacyjne nie będą potrafiły obsłużyć takiej płyty.

Oto przepis:

Jeśli chcesz wstawić pozycję do /etc/fstab dla takich płyt, to wyłącz ich sprawdzanie, np.

       /dev/cdrom  /cdrom  ext2  defaults,ro  0 0

Pierwsze 0 oznacza "nie dołączaj tego systemu plików do kopii zapasowych", drugie (ważne) oznacza, "nie sprawdzaj błędów podczas startu" (polecenie fsck nie powiedzie się podczas sprawdzania błędów na płycie).

4.5 Jak czytać ścieżki z płyt audio?

Jest kilka dostępnych pakietów. Najnowszym jest "cdparanoia"; ściągnąć go można z

www.mit.edu

Albo możesz spróbować kombinację programów "cdda2wav" i "sox" dostępne z serwera w Polsce:

ftp.icm.edu.pl. Pierwszy w podkatalogu cdrom/ a drugi w convert/.

Pakiet cdda2wav umożliwia odczytanie podanego przedziału czasowego (albo całej ścieżki) z płyty muzycznej i zamianę odczytanych danych na format pliku WAV. sox natomiast zamienia format pliku WAV na format zapisu na płytach muzycznych, tak że dane te mogą zostać zapisane na płytę przy pomocy cdrecord. Nie potrzebujesz koniecznie sox jeśli używasz nowszej wersji cdrecord, ponieważ program ten posiada wbudowaną opcję zamiany plików .wav i .au na odpowiedni format.

4.6 Jak automatycznie wykrywać urządzenia SCSI po starcie?

Plik drivers/scsi/scsi.c zawiera taką informację:

   "Użycie: echo "SCSI add-single-device 0 1 2 3" >/proc/scsi/scsi
   Zamień "0 1 2 3" na swoje numery "Host Channel Id Lun".
   Ta cecha jest BETĄ.
      UWAGA: Programu tego nie można używać do podłączania urządzeń SCSI
      podczas działania systemu ponieważ urządzenia te nie zostały
      przygotowane do tego i możesz sobie zniszczyć sprzęt!
   Ale może można włączyć już podłączone urządzenie. Jednak nie ma
   żadnej gwarancji, że urządzenie to nie zniszczy nadchodzących
   danych."

Używać tego można tylko jeśli dodajesz urządzenia SCSI na końcu łańcucha. Jeśli umieścisz urządzenie SCSI gdzieś w istniejący łańcuch, to popsuje to kolejność w katalogu /dev/ i można zniszczyć całą zawartość twojego dysku.

4.7 Czy możliwe jest zrobienie kopii 1:1 danych z płyty?

Tak. Ale powinieneś zdawać sobie sprawę z tego, iż wszelkie błędy podczas odczytu oryginału (z powodu kurzu czy rys) spowodują błędy także w kopii.

Pierwszy przypadek: masz nagrywarkę i oddzielny napęd CDROM. Wykonując polecenie:


       cdrecord -v dev=3,0 speed=2 -isosize /dev/scd0

odczytujesz strumień danych z CD-ROM-u podłączonego jako /dev/scd0 i zapisujesz go bezpośrednio poprzez urządzenie SCSI o ID=3 na nagrywarkę.

Drugi przypadek: nie masz oddzielnego napędu CD-ROM. W tym przypadku musisz użyć nagrywarki, żeby odczytać dane:


       dd if=/dev/scd0 of=obraz_cd

Polecenie to jest równoważne mkisofs więc powinieneś postępować dalej tak, jak to opisano w rozdziale 3. Zauważ, że ta metoda nie zadziała w przypadku płyt muzycznych.

4.8 Czy Linux umie odczytać płyty Joliet?

Tak. Nowsze jądra (2.0.36 i seria 2.2) mają wbudowaną obsługę systemu plików Joliet. Pamiętaj, że musisz użyć obu opcji w pliku /etc/fstab: iso9660 i joliet (to drugie, to rzeczywiste rozszerzenie). Więcej szczegółów przeczytasz na stronie www-plateau.cs.berkeley.edu/people/chaffee/joliet.htm.

4.9 Jak się czyta/montuje CD-ROM-y przez nagrywarkę?

Tak jak to robisz ze zwykłymi napędami. Żadnych sztuczek. Zauważ, że musisz użyć urządzeń scd (SCSI CD-ROM), aby zamontować płytę do czytania. Przykładowa pozycja z /etc/fstab:

       /dev/scd0  /cdrom  iso9660  ro,user,noauto  0  0

4.10 Jak umieścić jeszcze więcej danych na płycie?

Użyj bzip2 zamiast jakiegoś innego kompresora jak np.: gzip czy pkzip. Zaoszczędzi ci to przy większych plikach (100 kB) około 30% miejsca na dysku. Można go ściągnąć z:

www.muraroa.demon.co.uk/

Zamiast nagrywać prawdziwe płyty audio możesz zamienić swoje pliki .wav w .mp3 i zapisać je na systemie plików ISO 9660 jako zwykłe pliki. Format MPEG III umożliwia kompresję około 1:10.

Oczywiście większość odtwarzaczy CD nie umie czytać plików... i to jest wada. Jednak z drugiej strony, dlaczego na następnej prywatce nie puszczać muzyki z twardego dysku ? 18 GB to wystarczająco dużo miejsca na 3000-4000 plików .mp3. :-)

Program do tworzenia plików MPEG III można ściągnąć z

www.stud.ifi.uio.no/~larsi/other/

Odtwarzacz do MPEG III można ściągnąć z

homepages.uni-tuebingen.de/student/michael.hipp/mpg123/

Jeśli masz nagraną mowę, to możesz spróbować zredukować jej rozmiar algorytmem "GSM lossy speech compression":

ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/

kbs.cs.tu-berlin.de/~jutta/toast.html

4.11 Jak utworzyć płytę startową (bootable).

Musisz mieć dyskietkę startową. Stwórz jej dokładny obraz poleceniem:

dd if=/dev/fd0 of=boot.img bs=18k

Umieść ten obraz w katalogu z danymi do płyty (albo w jakimś jego podkatalogu). Poinformuj mkisofs o tym pliku poprzez opcję -b i użyj także opcji -c. Szczegóły znajdziesz w pliku README.eltorito w pakiecie mkisofs.

Interesującym zastosowaniem może być system DOS czy Windows zabezpieczony przed wirusami. Zaoszczędza to pieniędzy na dyski (jeśli masz sieć i używasz samby do wsytawiania danych użytkowików na serwerze plików). Jednak jest to czysta teoria, bo nikt mi jak dotąd nie dostarczył konkretów.

Trochę szczegółów na temat startowych płyt z RedHatem można poczytać po adresem www.channel1.com/users/rodsmith/rhjol-technical.html.

4.12 Jak zrobić zapisywalny CD-ROM?

Jest dostępna taka nakładka na system plików Linuksa, która montowana jest na CD-ROM i przyjmuje wszystkie operacje zapisu. Nowe i zmodyfikowane pliki zapisywane są gdzie indziej, ale dla użytkownika wygląda to, tak jakby operacje były wykonywane na płycie. Więcej informacji znajdziesz pod adresem home.att.net/~artnaseef/ovlfs/ovlfs.html.

Jeśli to ci nie wystarczy, to poczekaj na system plików UDF, który ma być obsługiwany przez Linuksa. Albo pomóż go rozwijać trylinux.com/projects/udf/.

4.13 Czy możliwe jest wykorzystanie kilku nagrywarek na raz?

Tak. Chociaż zostało to przetestowane na razie z dwoma nagrywarkami. I potrzebujesz też łaty na jądro zapewniającej więcej buforów dla sterownika ogólnego urządzenia SCSI ( ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha).

4.14 Które nośniki są najlepsze?

Niemiecki magazyn komputerowy "c't" ma listę wskazówek dotyczących kompaktów "noname" w wydaniu listopadowym 1996:

5. Rozwiązywanie problemów.

Zawsze pamiętaj, że popsutą płytę można wciąż użyć jako podstawki. :-)

5.1 Nie działa: pod Linuksem.

Sprawdź najpierw czy nagrywarka działa w innych systemach. A konkretnie:

Jeśli "to nie działa" nawet w innych systemach, to masz jakiś konflikt sprzętowy albo popsuty sprzęt.

Jeśli działa w innych systemach operacyjnych i używasz loadlina, aby startować Linuksa, to tu masz problem. Loadlin robi gorący reset i zostawia cały sprzęt już zainicjalizowany a to przeszkadza jądru Linuksa.

5.2 Błąd: No read access for 'dev=2,0'.

W Linuksie niektóre wersje bibilioteki C są niekompatybilne (mają błędy), i program skompilowany z jedną nie będzie działał z inną. Przykładem może być:

[root@Blue /dev]# cdrecord -eject dev=2,0
cdrecord: No such file or directory. No read access for 'dev=2,0'.

5.3 Nie działa: pod DOS-em i przyjaciółmi.

Najprzypuszczlaniej błędy te są powodowane:

W różnych warunkach urządzenia SCSI odłączają się i podłączają ponownie samemu (elektronicznie) do szyny SCSI. Jeśli taka cecha nie jest dostępna (sprawdź parametry kontrolera i jądra) niektóre nagrywarki mają problemy podczas wypalania czy utrwalania danych na kompakcie.

Szczególnie sterownik NCR 53c7,8xx SCSI ma standardowo wyłączoną tę cechę, więc możesz najpierw to sprawdzić:

       NCR53c7,8xx SCSI support                  [N/y/m/?] y
          always negotiate synchronous transfers [N/y/?] (NEW) n
          allow FAST-SCSI [10MHz]                [N/y/?] (NEW) y
          allow DISCONNECT                       [N/y/?] (NEW) y

6. Podziękowania.

Alan Brown <alan@manawatu.net.nz>

Art Stone <stone@math.ubc.ca

dostarczył pomysł na umieszczanie systemów plików innych niż ISO 9660 na płytach.

Bartosz Maruszewski <B.Maruszewski@jtz.org.pl>

zgłosił literówki

Bernhard Gubanka <beg@ipp-garching.mpg.de>

zauważył potrzebę posiadania nowszych narzędzi mount do montowania przy pomocy urządzenia loopback.

Robert Doolittle <bob.doolittle@sun.com>

dobra argumentacja, żeby wyrzucić cdwrite z tego HOWTO.

Brian H. Toby

wygładził słownictwo.

Martin Schulze <joey@Infodrom.North.DE>

podał informację o liście dyskusyjnej programu cdwrite.

Dale Scheetz <dwarf@polaris.net>

pomógł w ulepszeniu sekcji na temat tworzenia obrazu CD.

Don H. Olive <don@andromeda.campbellsvil.edu>

URL do narzędzia mkhybrid

Erwin Zoer <ezoer@wxs.nl>

Gerald C Snyder <gcsnyd@loop.com>

sprawdził nagrywanie CD-ROM-u EXT2 (zobacz 4.4)

Janne Himanka <shem@oyt.oulu.fi>

adres do łaty dla jądra potrzebnej do czytania płyt Joliet.

Joerg Schilling <schilling@fokus.gmd.de>

informacje na temat cdrecord.

Jos van Geffen <jos@tnj.phys.tue.nl>

zauważył problem w 4.9

Markus Dickebohm <m.dickebohm@uni-koeln.de>

Jesper Pedersen <jews@imada.ou.dk>

Pierre Pfister <pp@uplift.fr>

pomógł przy tworzeniu przepisu jak zrobić kopię 1:1

Rick Cochran <rick@msc.cornell.edu>

wskazówka na temat domyślnego wyłączenia cechy rozłączania/ponownego podłączania w sterowniku ncr.

Stephan Noy <stnoy@mi.uni-koeln.de>

informacje i doświadczenia na temat nagrywania płyt muzycznych.

Stephen Harris <sweh@mpn.com>

dostarczył wskazówkę na temat zapisu płyt muzycznych.

The Sheepy One <kero@escape.com>

zasugerował użycie popsutych płyt jako podstawkę pod napoje.

Martti.Rahkila@hut.fi

zgłosił problem z wcześniej zainicjalizowanymi nagrywarkami przy starcie przy pomocy loadlin.

6.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego 1997-1999. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to:

doc-linux-pl-2002.06.14.orig/html/CDROM-HOWTO.pl.html0100664000175000017500000023341406770264140020414 0ustar covencoven CDROM w Linux-ie

CDROM w Linux-ie

Autor: Jeff Tranter, tranter@pobox.com
v1.13, 23 Stycznia 1998
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.1, 28 Sierpnia 1998


Dokument ten opisuje jak zainstalować, skonfigurować i używać napędy CD-ROM pod Linux-em. Znajduje się tu lista obsługiwanego sprzętu oraz odpowiedzi na wiele często zadawanych pytań. Celem tego dokumentu jest jak najszybsze wprowadzenie nowego użytkownika oraz zmniejszenie ruchu na grupach i listach dyskusyjnych. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem www.shop.de.

1. Wprowadzenie.

To jest dokument "Linux CD-ROM HOWTO". Przeznaczony on jest jako szybki podręcznik zawierający wszystko co musisz wiedzieć, aby zainstalować i skonfigurować CD-ROM pod Linux-em. Zawarte są tutaj także odpowiedzi na często zadawane pytania oraz podane są odwołania do innych źródeł informacji związanych z aplikacjami i techniką CD-ROM.

1.1 Podziękowania.

Większość z tych informacji pochodzi z dokumentaji, z plików źródłowych dostarczanych wraz z jądrem Linux-a, z FAQ grupy dyskusyjnej alt.cd-rom oraz od użytkowników Linux-a.

Dzięki pakietowi sgml-tools dokument ten jest dostępny w kilku formatach, wszystkie wygenerowane z jednego pliku źródłowego.

1.2 Historia dokumentu.

Wersja 1.0

Pierwsza wersja dostępna publicznie.

Wersja 1.1

CDU33A jest wyraźnie obsługiwany od jądra 1.1.20; uwagi na temat Reveal FIX; info na temat czytania ścieżek audio; info na temat kilku sterowników alfa; dodano sekcję Rozwiązywanie problemów; kilka innych mniejszych dodatków.

Wersja 1.2

system plików ISO-9660 musi być montowany tylko-do-odczytu począwszy od jądra 1.1.33; wyjaśnione, że SB16 SCSI jest obsługiwane i nowsze napędy Aztech nie są; odwołania do programów photocd i xpcd; notka na temat nowej cechy SBPCD "auto eject".

Wersja 1.3

Mała zmiana co do tego, że cecha "eject" w SBPCD jest domyślnie wyłączona od jądra 1.1.49; dodana informacja o dyskach XA i jak je zidentyfikować

Wersja 1.4

HOWTO dostępne jest teraz w innych językach; napędy IBM i Longshine są obsługiwane przez SBPCD; alfa sterownik dla napędów Aztech; sterownik CDU-33 już nie szuka automatycznie, obsługuje PhotoCD i audio; obsługiwane są więcej niż 2 napędy SCSI; nowy sterownik dla IDE; przypomnienie o sprawdzeniu ustawienia zworek; można już ustawić SBPCD auto-eject przez IOCTL; lista napędów z obsługą wielosesyjności; pytanie na temat błyskania światełka na CDU-33

Wersja 1.5

Duża aktualizacja (byłem zajęty); dokument umieszczony w warunkach GPL; informacja na temat wielu nowych sterowników w jądrze; więcej informacji na temat konfiguracji i rozwiązywania problemów; dodano wiele odwołań HTML; i wiele innych mniejszych zmian.

Wersja 1.6

Dodane odwołanie do programu eject; pytanie o łatę dla praw dostępu plików; odwołanie do strony Creative Labs; odwołanie do FAQ ATA/EIDE i serwera FTP; uwaga, że wiele napędów Creative Labs i Mitsumi to już EIDE; wzmianka o Supermount; napędy podane jako obsługujące dane cyfrowe są przestarzałe, zobacz cdda2wav; więcej informacji na temat zapisu płyt CD; informacja o wielodyskowych napędach EIDE; poprawione kilka lietrówek.

Wersja 1.7

nowa wersja jądra; większość plików README zostałą przeniesiona do /usr/src/linux/Documentation; niektóre sterowniki nie są już eksperymentalne; kilka następnych obsługiwanych napędów; wyraźne wskazanie, że większość napędów jest teraz IDE/ATAPI; dodane pytania o obsługę Plug and Play i identyfikacji prędkości napędu; listy dyskusyjne vger zostały zamknięte; inne różne drobne zmiany.

Wersja 1.8

pytania o to czemu CD-ROM przestaje pracować po zainstalowaniu; sterownik aztcd obsługuje teraz dwa napędy CyCDROM; kolejne prośby, żeby nie używać sterownika SBPCD z napędami IDE; obsługa zmiany dysków w niektórych napędach ATAPI; uwaga na temat (braku) obsługi napędów podłączanych przez port równoległy; najnowsze stabilne jądro to 2.0; inne różne drobne zmiany.

Wersja 1.9

kilka starych pytań usunięte; nowy adres pocztowy autora; dostępne tłumaczenie Chińskie; zmienione kilka odwołań, aby wskazywały na najnowsze pakiety programów; więcej informacji na temat książek multimedialnych; małe zmiany literówek i gramatyczne.

Wersja 1.10

wyjaśnienie, że nowe napędy Aztech są ATAPI; dodane opcje CDU31A dla modularnego sterownika; opcja montowania do czytania plików ukrytych; dodałem sześciomiesięczną "datę ważności"; nowy URL do strony WWW o książce; mniejsze zmiany literówek i gramatyczne.

Wersja 1.11

dodane odwołania na temat napędów podłączanych przez porty równoległe; dodana informacja o sterowniku bpcd; nowy URL dla wersji Chińskiej; kolejny sterownik CR-56x; informacje na temat startowalnych (bootable) płyt; odpowiedź na pytanie o CD-ROM API; "Linux Multimedia Guide" jest teraz dostępny po japońsku i francusku.

Wersja 1.12

dodany odwołanie do polskiego tłumaczenia; CD-Writing już nie jest mini-HOWTO; dodane dwa pytania odnośnie systemu plików Joliet

Wersja 1.13

dodane pozycje dla indeksu [Od tłum.: jeszcze nie w polskiej wersji.]; HOWTO umieszczone pod licencją LDP zamiast GPL; SuperProbe zamienione na odwołanie do automountera opartego na jądrze.

1.3 Nowe wersje tego dokumentu.

Nowe wersje będą wysyłane okresowo na grupę dyskusyjną comp.os.linux.answers. Będą także umieszczane w różnych archiwach składujących takie dokumenty włącznie z ftp.icm.edu.pl - polską kopią SunSITE.

Hipertekstowe wersje tego i wielu innych HOWTO są dostępne na wielu strona WWW, włączając http://sunsite.icm.edu.pl/. Większość dystrybucji Linux-a na CD-ROM-ach zawiera HOWTO, często w katalogu /usr/doc/, można także kupić drukowane wersje u różnych dystrybutorów. Czasami wersje dostępne na kompaktach, serwerach ftp, drukowane są przestarzałe. Jeśli data tego HOWTO jest starsza niż 6 miesięcy, to przypuszczalnie dostępna jest już nowsza wersja.

Francuskie tłumaczenie Bruno Corneca dostępne jest pod adresem ftp.ibp.fr.

Japońskie tłumaczenie Itsushi Minoura dostępne jest pod adresem jf.linux.or.jp.

Chińskie tłumaczenie (kodowanie BIG-5) Yung-kang Wu dostępne jest pod adresem linux.ntcic.edu.tw.

Polskie tłumaczenie właśnie czytasz.

Większość tłumaczeń tego i innych HOWTO można także znaleźć pod adresem ftp.icm.edu.pl

Jeśli przetłumaczyłeś to HOWTO na inny język, daj mi znać a dołączę tutaj odwołanie.

1.4 Komentarze.

Polegam na tobie, czytelniku, aby uczynić to HOWTO użytecznym. Jeśli masz jakieś sugestie, poprawki, czy komentarze, proszę przyślij mi je tranter@pobox.com, a spróbuje zawrzeć je w następnej wersji.

Jestem także chętny odpowiadać na ogólne pytania dotyczące CD-ROM-ów w Linux-ie. Zanim zadasz takie pytanie, przeczytaj proszę wszystkie informacje zawarte tutaj, a potem wyślij mi szczegółowe informacje o twoim problemie. Nie zadawaj proszę pytań na temat używania CD-ROM-ów w innych systemach niż Linux.

Jeśli wydasz ten dokument na CD-ROM-ie albo w jakiejś trwałej kopii, to prosiłbym o przysłanie mi autorskiej kopii; zapytaj mnie pocztą elektroniczną o zwykły adres pocztowy. Rozważ także czy możesz udzielić jakiejś dotacji na rzecz "Linux Documentation Project", aby wspomóc darmową dokumentację dla Linux-a. Skontaktuj się z koordynatorem Linux HOWTO, Timem Bynamem, aby uzyskać więcej informacji.

1.5 Warunki dystrybucja.

Prawa autorskie należą do Jeffa Trantera (C) 1995-1998.

Dokument ten może być dystrybuowany na warunkach ustalonych w licencji LDP ( http://sunsite.icm.edu.pl/pub/Linux/Documentation/COPYRIGHT.html)

2. Technologia CD-ROM.

"CD-ROM jest pamięcią tylko-do-odczytu a system audio dla płyt kompaktowych
jest dostępny jako pakiet danych cyfrowych. Kiedy słuchasz
płyt z muzyką, włóż proszę wtyczkę od słuchawek do karty dźwiękowej."
-- z podręcznika CD-ROM-u

Nie panikuj! Świat technologii CD-ROM nie jest taki skomplikowany jak twój podręcznik.

CD-ROM to skrót od "Compact Disc Read Only Memory", nośnik danych wykorzystujący laser optyczny, aby mikroskopijne zagłębienia na aluminiowanej warstwie dysku poliwęglanowego. Ten sam format używany jest dla płyt muzycznych. Z powodu dużej pojemności, niezawodności i niskiego kosztu, CD-ROM stał się najbardziej popularnym medium do zapisywania danych.

Pojemność CD-ROM-u to około 650 MB, równowartość 500 dyskietek 3,5" lub 250.000 wklepanych stron.

Napędy pierwszej generacji (znane jako pojedynczej prędkości), pracowały z prędkością ok. 150 kb/s. Producenci sprzętu zaprezentowali potem napędu podwójnej prędkości (300 kb/s), czterokrotnej prędkości (600 kb/s) i szybsze. Kiedy ja to piszę, są już dostępne napędu o prędkości 24-krotnej.

Większość napędów CD-ROM używa albo "Small Computer Systems Interface" (SCSI), ulepszony interfejs IDE ATAPI, albo interfejs sprzedawcy. Mają zwykle także możliwość słuchania płyt muzycznych poprzez zewnętrzne słuchawki, albo wyjście zewnętrzne. Niektóre kompakty pozwalają także na czytanie ramek danych z kompaktu muzycznego w formie cyfrowej.

CD-ROM-y są zwykle sformatowane systemem plików ISO-9660 (wcześniej zwanym High Sierra). Format ten ogranicza nazwy plików do stylu MS-DOS-a (8+3). Rock Ridge Extensions wykorzystuje niezdefiniowane pola w standardzie ISO-9660, aby obsługiwać dłuższe nazwy i dodatkowo informacje typowo unix-owe (właściciel pliku, symboliczne dowiązania itp.)

PhotoCD to standard rozwinięty przez Kodak-a dla zapisywania fotografii jako danych cyfrowych na CD-ROM-ach. Posiadając odpowiednie oprogramowanie, możesz te obrazki oglądać, obrabiać je lub wysłać na drukarkę. Informacje mogą być później dodane do PhotoCD; jest to znane jako wielosesyjność.

Nagrywarki CD (CD-R) są także dostępne i są coraz bardziej opłacalne. Używają one innych środków i specjalizowanego wyposażenia do nagrywania, ale płyta wynikowa może być odczytana przez jakikolwiek napęd CD-ROM.

W przyszłości spodziewa się, że sprzedawy CD-ROM-ów zaoferują nowe technologie, które będą zwiększały pojemność wraz ze wzrostem zapotrzebowania.

3. Obsługiwany sprzęt.

W sekcji tej znajdują się sterowniki oraz interfejsy, które są obecnie obsługiwane przez Linux-a. Informacje oparte są na najnowszym stabilnym jądrze - 2.0.33. Rozwojowe jądra (2.1.x) są także dostępne, ale nie ma gwarancji, że będą stabilne.

Informacje te są ważne tylko dla Linux-a na platformie Intel. Wiele z nich można także zastosować dla innych platform, ale nie mam żadnych doświadczeń czy informacji z pierwszej ręki.

3.1 Napędy ATAPI CD-ROM.

ATAPI (ATA Packet Interface) jest protokołem do kontrolowania urządzeń masowego zapisu. Tworzy on interfejs ATA (AT Attachment), oficjalna standardowa nazwa ANSI dla intrfejsów IDE rozwijanych dla napędów dysków twardych. ATAPI jest popularnie stosowany do dysków twardych, CD-ROM-ów, taśm i innych urządzeń. Obecnie najbardziej popularny interfejs - oferuje większość funkcji SCSI, bez drogich kontrolerów czy kabli.

Jądro Linux-a ma sterownik urządzenia, który powinien współpracować z każdym napędem CD-ROM ATAPI. Sprzedawcy dostarczający kompatybilne napędy to: Aztech, Mitsumi, NEC, Sony, Creative Labs i Vertos. Jeśli nabyłeś ostatnio napęd CD-ROM, szczególnie jeśli jest on czterokrotnej prędkości lub szybszy, to jest to prawie na pewno IDE/ATAPI.

3.2 Napędy SCSI.

SCSI (Small Computer Systems Interface) jest popularnym formatem dla napędów CD-ROM. Głównymi zaletami są rozsądnie szybka prędkość działania, możliwość podłączania wielu urządzeń, i obsługa na wielu platformach komputerowych. Jedną z wad jest droga karta kontrolera i kabli.

Każdy napęd CD-ROM SCSI z blokami o rozmiarze 512 lub 2048 bajtów powinien działać pod Linxu-em; zawiera się tu stanowcza większość napędów CD-ROM dostępnych na rynku.

Będziesz także potrzebował obsługiwanej karty SCSI; w SCSI HOWTO znajdziesz więcej informacji na temat interfejsów sprzętowych.

Zauważ, że niektóre CD-ROM-y zawierają swoje własne kontrolery ze zmodyfikowanym interfejsem, który nie jest w peni kompatybilny z SCSI (np. może nie pozwalać na dodawanie innych urządzeń na szynie SCSI). Taki sprzęt raczej nie będzie działać na Linux-ie.

3.3 Napędy CD-ROM z własnym interfejsem.

Dostępne jest kilka takich CD-ROM-ów; interfejs jest z reguły dostarczany na karcie dźwiękowej. Proste karty z takimi interfejsami równorzędnymi do tych na kartach dźwiękowych są także dostępne. Napędy te są z reguły tańsze i mniejsze niż napędy SCSI. Głównymi ich wadami są brak stadaryzacji i możliwości rozszerzania.

Zauważ, że własne interfejsy są czasami mylnie nazywane interfejsami IDE, ponieważ tak jak dyski IDE, używają prostego interfejsu opartego na szynie PC/AT. Żeby zwiększyć całe zamieszanie niektórzy dostawcy, najczęściej Creative Labs, dostarczyli wiele różnych typów napędów CD-ROM i oferowali swoje interfejsy, interfejsy SCSI i ATAPI na swoich kartach dźwiękowych.

W tabeli poniżej znajdują się napędy CD-ROM z własnymi interfejsami, które działają pod Linux-em. Sterowniki dla dodatkowych urządzeń mogą być dostępne w ostatniej wersji rozwojowej jądra albo jako łaty do jądra. Te drugie można najczęściej znaleźć na ftp.icm.edu.pl. Sprawdź także ostatnie informacje zawarte w plikach README dostarczanych wraz z jądrem Linux-a umieszczonych w katalogu /usr/src/linux/Documentation/cdrom.

                Napędy CD-ROM ze swoimi interfejsami

Sprzedawca      Model       Sterownik w jądrze  Uwagi
------          -----           -------------   --------
Panasonic       CR-521          sbpcd           1
Panasonic       CR-522          sbpcd           1
Panasonic       CR-523          sbpcd           1
Panasonic       CR-562          sbpcd           1
Panasonic       CR-563          sbpcd           1
Creative Labs   CD-200          sbpcd
IBM             External ISA    sbpcd           2
Longshine       LCS-7260        sbpcd
Teac            CD-55A          sbpcd
Sony            CDU-31A         cdu31a
Sony            CDU-33A         cdu31a
Sony            CDU-535         sonycd535       3
Sony            CDU-531         sonycd535
Aztech          CDA268-01A      aztcd           4
Orchid          CDS-3110        aztcd
Okano/Wearnes   CDD110          aztcd
Conrad          TXC             aztcd
CyCDROM         CR520ie         aztcd
CyCDROM         CR940ie         aztcd
GoldStar        R420            gscd            5
Philips/LMS     CM206           cm206           6
Mitsumi         CRMC LU005S     mcd/mcdx        7, 8
Mitsumi         FX001           mcd/mcdx        7, 8
Optics Storage  Dolphin 8000AT  optcd
Lasermate       CR328A          optcd
Sanyo           H94A            sjcd
various         various         isp16           9
MicroSolutions  Backpack        bpcd

Uwagi:

  1. Te napędy mogą być sprzedawane pod nazwą Creative labs, Panasonic, matsushita lub Kotobuki.
  2. Ten napęd jest taki sam jak Panasonic CR-562.
  3. Może być także sprzedawany jako Procomm.
  4. Ten sterownik jest tylko do CDA268-01A. Inne modele, włącznie z CDA268-03I i CDA269-031SE nie mają własnych interfejsów i powinny używać sterownika IDECD (ATAPI) zawartego w jądrze.
  5. Może być także sprzedawany jako część pakietu Reveal Multimedia Kit
  6. Philips CM205 nie jest obsługiwany przez ten sterownik, ale jest osobny sterownik alfa lmscd0.4.tar.gz dostępny na ftp.icm.edu.pl.
  7. Może być także sprzedawany jako Radio Shack.
  8. Są dostępne dwa sterowniki. "mcd" jest oryginalny i "mcdx" jest nowszym z większą ilością funkcji (ale możliwe, że mniej stabilny).
  9. Ten sterownik działa z napędami CD-ROM, które są dołączone do interfejsu na kartach dźwiękowych ISP16, MAD16 albo Mozart.

Jeśli napęd podany w powyższej liście nie jest obsługiwany przez jądro, to pewnie musisz uaktualnić je do nowszej wersji.

Jeśli twój napęd nie jest którymś z podanych wyżej, szczególnie jeśli został kupiony ostatnio i jest czterokrotnej prędkości lub szybszy, to najprzypuszczalnej używa on interfejsu IDE/ATAPI, wymienionego w poprzedniej sekcji. Prostym najpopularniejszym błędem popełnianym przez użytkowników CD-ROM-u na Linux-ie jest zakładanie, że każdy napęd podłączony do karty SoundBlaster powinien używać sterownika SBPCD. Creative Labs i większość innych sprzedawców nie sprzedają już napędów z własnymi interfejsami, przychylają się do standardu ATAPI/IDE.

3.4 Napędy podłączane przez porty równoległe.

Niektórzy sprzedawcy sprzedają takie właśnie CD-ROM-y. Jedyny napęd tego rodzaju obsługiwany obecnie przez Linux-a, to MicroSolutions Backpack.

Sterowniki dla jeszcze kilku takich napędów są dostępne osobno jako łaty na jądro albo ładowalne moduły. Najnowsze informacje na ten temat możesz znaleźć pod adresem http://www.torque.net/linux-pp.html.

3.5 Kolejne sterowniki.

Jest jeszcze jeden sterownik w jądrze dla napędów Panasonic/Matsushita CR-56x - pcd-0.29.tar.gz. Napisany został przez Zoltana Vorosbaranyi. Można go znaleźć pod adresem ftp.tarki.hu.

4. Instalacja.

  1. Instalacja sprzętu.
  2. Konfiguracja i kompilacja jądra.
  3. Tworzenie plików urządzeń i ustawianie parametrów startowych.
  4. Startowanie jądra.
  5. Montowanie nośnika.

Kolejne sekcje omawiają każdy ten punkt w szczegółach.

4.1 Instalacja sprzętu.

Postępuj zgodnie ze wskazówkami producenta, albo poproś sprzedawcę o zainstalowanie. Szczegóły będą się różniły w zależności od tego czy napęd jest wewnętrzny czy zewnętrzny, od typu interfejsu. Nie ma żadnych specjalnych wymagań instalacyjnych co do Linux-a. Możesz musieć poustawiać odpowiednio zworki na napędzie i/lub karcie z interfejsem; niektóre sterowniki w jądrze zawierają pliki README, w których są takie informacje.

Jak to jest wyjaśnione w pliku ide-cd, CD-ROM-y ATAPI powinny być ustawione jako "single" lub "master", a nie "slave" jeśli tylko jedno urządzenie IDE jest podłączone do interfejsu (chociaż w ostatnich jądrach to ograniczenie nie jest już stosowane).

4.2 Konfiguracja i kompilacja jądra.

Jeśli instalujesz Linux-a z CD-ROM-u to najprawdopodobniej użyjesz dyskietek "boot" i/lub "root" dostarczonych jako część dystrybucji Linux-a. Jeśli jest to możliwe, powinieneś wybrać dyskietkę startową z jądrem zawierającym sterownik dla twojego CD-ROM-u. Jeśli nie możesz znaleźć takiej dyskietki, to jest kilka rozwiązań:

  1. Instalacja przez sieć.
  2. Wystartuj DOS-a i zainstaluj pliki Linux-a na swoim dysku twardym
  3. Wystartuj DOS-a i stwórz odpowiednie dyskietki do instalacji Linux-a
  4. Znajdź kogoś, kto może ci zrobić dyskietkę startową z odpowiednim sterownikiem.

W Installation-HOWTO (dostępnym również w języku polskim) znajdziesz więcej informacji na temat instalacji Linux-a. Jeśli kupiłeś Linux-a na CD-ROM-ie, to przypuszczalnie zawarte są jakieś informacje dotyczące instalacji (taka mała książeczka wewnątrz skrzyneczki na biżuterię i/lub pliki na płycie).

Po zainstalowaniu Linux-a, większość użytkowników chce skompilować jądro, zwykle z jednego z tych powodów:

Szczegóły na temat kompilacji jądra można znaleźć w Kernel-HOWTO dostępnym w języku polskim. Ja wspomnę tutaj tylko kilka rzeczy specyficznych dla CD-ROM-ów.

Oczywiście, musisz zaznaczyć obsługę swojego CD-ROM-u podczas wykonywania polecenia "make config".

Jeśli masz CD-ROM ATAPI, to musisz odpowiedzieć "yes" na te pytania:

Enhanced IDE/MFM/RLL disk/cdrom/tape support (CONFIG_BLK_DEV_IDE) [Y/n/?]
Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [Y/n/?]

dla napędów SCSI włącz te opcje:

SCSI support (CONFIG_SCSI) [Y/n/m/?]
SCSI CD-ROM support (CONFIG_BLK_DEV_SR) [Y/n/m/?]

Włącz także obsługę swojego kontrolera:

Adaptec AHA152X support (CONFIG_SCSI_AHA152X) [Y/n/m/?]

Dla napędów z własnymi interfejsami włącz odpowiedni sterownik. Możesz użyć tabeli podanej wcześniej, aby zobaczyć jaki sterownik jest potrzebny dla twojego modelu.

Wirtualnie wszystkie CD-ROM-y używają systemu plików ISO-9660, więc musisz także włączyć jego obsługę:

ISO9660 cdrom filesystem support (CONFIG_ISO9660_FS) [Y/n/m/?]

Chociaż nie jest to potrzebne do działania CD-ROM-u, jeśli masz kartę dźwiękową, która jest obsługiwana przez Linux-a, to możesz także dołączyć jej obsługę. Odpowiednim dokumentem będzie tutaj Sound-HOWTO dostępne także w języku polskim.

Powinieneś potem postępować zgodnie ze zwykłą procedurą kompilacji i instalacji jądra. Nie startuj nowego jądra dopóki nie stworzysz plików urządzeń i nie ustawisz parametrów startowych tak jak to jest opisane w następnej sekcji.

Obsługa systemu plików ISO-9660, tak jak prawie wszystkie sterowniki do CD-ROM-ów może być stworzona jako ładowalny moduł. Pozwala to na ładowanie i usuwanie go z pamięci bez potrzeby restartu komputera, uwalniając pamięć. Polecam, zebyś spróbował najpierw zainstalować CD-ROM ze sterownikami wkompilowanymi w jądro. Jak używać modułów opisane jest w dokumentaji dołączonej do nich i w Kernel-HOWTO.

Jeśli twój napęd nie jest obsługiwany przez twoje jądro, to musisz pewnie uaktualnić je.

Możliwe też, że musisz użyć sterownika, który dostarczany jest osobno. To z reguły łączy się z łataniem jądra. Jeszcze raz Kernel-HOWTO wyjaśnia jak się to robi.

Zauważ, że możesz także wybrać konfigurację a'la menu poleceniem "make menuconfig" oraz konfigurację w okienkach X11 "make xconfig". Wszystkie trzy rodzaje konfiguracji mają podręczną pomoc.

4.3 Tworzenie plików urządzeń i ustawianie parametrów startowych.

Jądro używa plików urządzeń aby zidentyfikować którego sterownika urządzeń użyć. Jeśli masz standardową dystrybucję, to możliwe, że stworzyłeś te pliki podczas instalacji. Na przykład w Slackware jest narzędzie setup w postaci menu, które zawiera ustawienie CD-ROM-u oraz większość systemów ma skrypt /dev/MAKEDEV. Jeśli nie użyjesz tych metod, to możesz to zrobić ręcznie, jak to jest opisane dalej w tym dokumencie. Nawet jeśli skorzystasz z tych metod, to zaleca się żebyś chociaż zweryfikował te pliki z informacjami zawartymi tutaj.

Pliki urządzeń tworzy się poleceniami wykonywanymi w powłoce, w zależności od twojego napędu. Powinieneś to robić jako root. Zauważ, że niektóre dystrybucje Linux-a mogą używać trochę innego nazewnictwa niż podane tutaj.

Zaleca się także, żebyś zrobił symboliczne dowiązanie do urządzenia CD-ROM-u, aby łatwiej je zapamiętać. Na przykład, dowiązanie dla napędu IDE, który jest drugim urządzeniem na drugim interfejsie, należy zrobić poleceniem:

# ln -s /dev/hdd /dev/cdrom

Jeśli chcesz słuchać płyt audio, to będziesz musiał ustawić odpowiednie prawa dostępu dla pliku urządzenia (tego prawdziwego, a nie dowiązania), aby pozwolić wszystkim użytkownikom z niego czytać, np.

# chmod 664 /dev/hdd
# ls -l /dev/hdd
brw-rw-r--   1 root     disk      22,  64 Feb  4  1995 /dev/hdd

Podczas startu Linux-a, sterownik urządzenia próbuje sprawdzić czy obecne są odpowiednie urządzenia, zwykle robi to, sprawdzając specyficzne adresy. Wiele z tych sterowników sprawdza kilka adresów, ale z powodu różnic w konfiguracji, możliwych konfliktów urządzeń, ograniczeń sprzętowych, potrzebują one czasami pomocy w identyfikacji adresów i innych parametrów. Większość sterowników obsługuje opcje podawane w linii poleceń jądra, aby przekazać te informacje do sterownika urządzenia. Może się to odbyć interaktywnie, albo częściej, wpisując tę informację do konfiguracji programu ładującego system. Np. przy LILO, dodałbyś do swojego pliku /etc/lilo.conf polecenie append, takie jak poniżej:

append = "sbpcd=0x230,SoundBlaster"

Więcej informacji znajdziesz w dokumentacji do LILO.

W następnej sekcji omówię sprawy dotyczące konkretnych sterowników, włącznie z plikami urządzeń, parametrami startowymi i możliwościami poszczególnych sterowników. Przypuszczalnie powinieneś przeczytać tylko sekcję dla twojego typu napędu. Pliki README są zwykle w katalogu /usr/src/linux/Documentation/cdrom.

Sterownik sbpcd.

Autor główny:                   Eberhard Moenkeberg (emoenke@gwdg.de)
Obsługa wielosesyjności:        tak (but not all drives)
Obsługa wielu napędów:          tak
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           tak (CR-562, CR-563, CD-200 only)
Automatyczne wykrywanie:        tak
Plik urządzenia:                /dev/sbpcd, major 25
Plik konfiguracyjny:            sbpcd.h
Opcja konfiguracyjna dla jądra: Matsushita/Panasonic CDROM support?
Plik README:                    sbpcd

Sterownik ten przyjmuje następujące parametry:

sbpcd=<io-address>,<interface-type>

Pierwszy parametr to adres bazowy urządzenia (np. 0x230) a <interface-type> to jedno z "SoundBlaster", "LaserMate" lub "SPEA". W pliku sbpcd.h znajdziesz wskazówki którego typu interfejsu użyć. Parametr sbpcd=0 wyłącza automatyczne wykrywanie, wyłączając tym samym sterownik.

Plik urządzenia może być stworzony poleceniem:

# mknod /dev/sbpcd b 25 0

Obsługiwane jest do czterech napędów na kontrolerze. Następne trzy napędy na pierwszym kontrolerze miałyby numery poboczne urządzenia od 1 do 3. Jeśli masz więcej niż jeden kontroler, stwórz urządzenia z liczbą główną 26, 27 i 28, aż do maksimum 4 kontrolerów (to w sumie 16 napędów CD-ROM; mam nadzieję, że dla większości użytkowników to wystarczająco :-).

Więcej informacji na temat tego sterownika znajdziesz w pliku sbpcd.

Jeśli kupiłeś ostatnio napęd CD-ROM, to nie zakładaj, że jeśli podłączy się go do karty SoundBlaster, to powinien on używać tego sterownika. Większość napędów sprzedawanych teraz przez Creative Labs to napędy EIDEATAPI.

Sterownik Sonycdu535.

Autor główny:                   Ken Pizzini (ken@halcyon.com)
Obsługa wielosesyjności:        nie
Obsługa wielu napędów:          nie
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           nie
Automatyczne wykrywanie:        nie
Plik urządzenia:                /dev/sonycd535, major 24
Plik konfiguracyjny:            sonycd535.h
Opcja konfiguracyjna dla jądra: Sony CDU535 CDROM support?
Plik README:                    sonycd535

Sterownik ten przyjmuje parametry w postaci:

sonycd535=<io-address>

<io-address> oznacza adres bazowy kontrolera (np. 0x320). Alternatywnie możesz ustawić ten adres w pliku sonycd535.h i wkompilować tę wartość na stałe.

Plik urządzenia może być stworzony poleceniem:

# mknod /dev/sonycd535 b 24 0

Niektóre dystrybucje Linux-a używają /dev/sonycd dla tego urządzenia. Starsze wersje sterownika używały głównego numeru 21; upewnij się, że twój plik urządzenia jest poprawny.

Sterownik ten był wcześniej dystrybuowany jako łata, ale teraz jest częścią standardowego jądra. Więcej informacji na temat tego strownika znajdziesz w pliku sonycd535.

Sterownik cdu31a

Autor główny:                   Corey Minyard (minyard@-rch.cirr.com)
Obsługa wielosesyjności:        tak
Obsługa wielu napędów:          nie
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           tak
Automatyczne wykrywanie:        nie
Plik urządzenia:                /dev/cdu31a, major 15
Plik konfiguracyjny:            cdu31a.h
Opcja konfiguracyjna dla jądra: Sony CDU31A/CDU33A CDROM support?
Plik README:                    cdu31a

Sterownik ten przyjmuje opcje w postaci:

cdu31a=<io-address>,<interrupt>,PAS

Pierwszy numer, to adres bazowy I/O karty (np. 0x340). Drugi jest numerem przerwania, którego należy użyć (0 oznacza próbkowanie(polling) i/o). Opcjonalny trzeci parametr pownien mieć wartość PAS jeśli napęd podłączony jest do karty dźwiękowej Pro Audio Spectrum 16, w innym przypadku należy go opuścić.

Jeśli sterownik jest modułem, to używa on trochę innego formatu. Podczas ładowania modułu programem modprobe lub insmod parametry przyjmują postać:

cdu31a_port=<io-address> cdu31a_irq=<interrupt>

Adres bazowy I/O jest wymagany, ale numer przerwania - nie.

Plik urządzenia może być stworzony przy pomocy:

# mknod /dev/cdu31a b 15 0

Więcej informacji na temat tego sterownika znajdziesz w pliku cdu31a.

Zajrzyj także na stronę WWW zrobioną przez Jeffreya Oxenreidera ( zureal@infinet.com), która zawiera opis wielu problemów dotyczących tych sterowników. Można ją znaleźć pod adresem www.infinet.com.

Sterownik aztcd.

Autor główny:                   Werner Zimmermann (zimmerma@rz.fht-esslingen.de)
Obsługa wielosesyjności:        tak
Obsługa wielu napędów:          nie
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           nie
Automatyczne wykrywanie:        nie
Plik urządzenia:                /dev/aztcd0, major 29
Plik konfiguracyjny:            aztcd.h
Opcja konfiguracyjna dla jądra: Aztech/Orchid/Okano/Wearnes (non IDE) CDROM support?
Plik README:                    aztcd

Sterownik ten przyjmuje parametry w postaci:

aztcd=<io-address>

Parametrem jest tutaj adres bazowy I/O karty (np. 0x340).

Plik urządzenia może być stworzony przy pomocy:

# mknod /dev/aztcd0 b 29 0

Zauważ, że sterownik ten jest przeznaczony tylko dla modelu CDA268-01A. Inne modele, włącznie z CDA268-03I i CDA269-031SE, nie posiadają własnych interfejsów i powinny używać standardowego sterownika IDECD (ATAPI).

Więcej informacji na temat tego sterownika znajdziesz w pliku aztcd.

Sterownik gscd.

Autor główny:                   Oliver Raupach (raupach@nwfs1.rz.fh-hannover.de)
Obsługa wielosesyjności:        nie
Obsługa wielu napędów:          nie
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           nie
Automatyczne wykrywanie:        nie
Plik urządzenia:                /dev/gscd0, major 16
Plik konfiguracyjny:            gscd.h
Opcja konfiguracyjna dla jądra: Goldstar R420 CDROM support?
Plik README:                    gscd

Sterownik ten przyjmuje parametry w postaci:

gscd=<io-address>

Jedynym parametrem jest tutaj adres bazowy I/O karty (np. 0x340).

Plik urządzenia może być stworzony przy pomocy:

# mknod /dev/gscd0 b 16 0

Więcej informacji na temat tego sterownika znajdziesz w pliku gscd oraz na stronie WWW linux.rz.fh-hannover.de.

Sterownik mcd.

Autor główny: Martin  (martin@bdsi.com)
Obsługa wielosesyjności:        nie
bsługa wielu napędów:           nie
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           nie
Automatyczne wykrywanie:        nie
Plik urządzenia:                /dev/mcd, major 23
Plik konfiguracyjny:            mcd.h
Opcja konfiguracyjna dla jądra: Standard Mitsumi CDROM support?
Plik README:                    mcd

To jest starszy sterownik dla napędów Mitsumi, który był dostępny przez jakiś czas. Możesz spróbować nowszego sterownika mcdx, który ma kilka nowych funkcji, ale jest przypuszczalnie mniej stabilny.

Sterownik ten przyjmuje następujące parametry:

mcd=<io-address>,<irq>

Kolejne parametry to adres bazowy I/O karty (np. 0x340) oraz numer przerwania.

Plik urządzenia można stworzyć poleceniem:

# mknod /dev/mcd b 23 0

Więcej informacji na temat tego sterownika znajdziesz w pliku mcd.

Sterownik mcdx.

Autor główny:                   Heiko Schlittermann
Obsługa wielosesyjności:        tak
Obsługa wielu napędów:          tak
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           nie (brak obsługi sprzętowej)
Automatyczne wykrywanie:        nie
Plik urządzenia:                /dev/mcdx0, major 20
Plik konfiguracyjny:            mcdx.h
Opcja konfiguracyjna dla jądra: Experimental Mitsumi support?
Plik README:                    mcdx

Jest to nowszy sterownik dla napędów Mitsumi. Starszy i przypuszczalnie bardziej stabilny - mcd - jest nadal dostępny.

Sterownik ten przyjmuje następujące parametry:

mcdx=<io-address>,<irq>

Kolejne parametry to adres bazowy I/O karty (np. 0x340) i numer przerwania.

Plik urządzenia można stworzyć poleceniem:

# mknod /dev/mcdx0 b 20 0

Jeśli kupiłeś ostatnio napęd CD-ROM Mitsumi, to nie zakładaj, że powinien on używać tego sterownika. Niektóre modele mitsumi są teraz typu EIDE/ATAPI i powinny używać standardowego sterownika idecd.

Więcej informacji na temat tego sterownika znajdziesz w pliku mcdx.

Sterownik cm206

Autor główny:                   David A. van Leeuwen (david@tm.tno.)
Obsługa wielosesyjności:        tak
Obsługa wielu napędów:          nie
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           nie
Automatyczne wykrywanie:        tak
Plik urządzenia:                /dev/cm206cd, major 32
Plik konfiguracyjny:            cm206.h
Opcja konfiguracyjna dla jądra: Philips/LMS CM206 CDROM support?
Plik README:                    cm206

Sterownik ten przyjmuje następujące parametry:

cm206=<io-address>,<interrupt>

Pierwszy numer jest adresem bazowym I/O karty (np. 0x340). Drugi to numer przerwania.

Plik urządzenia może być stworzony poleceniem:

# mknod /dev/cm206cd b 32 0

Więcej informacji na temat tego sterownika znajdziesz w pliku cm206.

Sterownik optcd.

Autor główny:                   Leo Spiekman (spiekman@dutette.et.tudelft.nl)
Obsługa wielosesyjności:        tak
Obsługa wielu napędów:          nie
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           nie
Automatyczne wykrywanie:        nie
Plik urządzenia:                /dev/optcd0, major 17
Plik konfiguracyjny:            optcd.h
Opcja konfiguracyjna dla jądra: Experimental Optics Storage ... CDROM support?
Plik README:                    optcd

Sterownik ten przyjmuje następujące parametry:

optcd=<io-address>

Parametrem jest tutaj adres bazowy I/O karty (np. 0x340).

Plik urządzenia można stworzyć:

# mknod /dev/optcd0 b 17 0

Więcej informacji na temat tego sterownika znajdziesz w pliku optcd.

Sterownik sjcd.

Autor główny:                   Vadim V. Model (vadim@rbrf.msk.su)
Obsługa wielosesyjności:        nie
Obsługa wielu napędów:          nie
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           nie
Automatyczne wykrywanie:        nie
Plik urządzenia:                /dev/sjcd, major 18
Plik konfiguracyjny:            sjcd.h
Opcja konfiguracyjna dla jądra: Experimental Sanyo H94A CDROM support?
Plik README:                    sjcd

Sterownik ten przyjmuje następujące parametry:

sjcd=<io-address>,<interrupt>,<dma>

Kolejne parametry to: adres bazowy, przerwanie i kanał DMA (np. sjcd=0x340,10,5).

Plik urządzenia może być stworzony poleceniem:

# mknod /dev/sjcd b 18 0

Więcej informacji na temat tego sterownika znajdziesz w pliku sjcd.

Sterownik bpcd.

Autor główny:                   Grant R. Guenther (grant@torque.net)
Obsługa wielosesyjności:        nie wiadomo
Obsługa wielu napędów:          nie
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           nie
Automatyczne wykrywanie:        tak
Plik urządzenia:                /dev/bpcd, major 41
Plik konfiguracyjny:            bpcd.h
Opcja konfiguracyjna dla jądra: MicroSolutions backpack CDROM support?
Plik README:                    bpcd

Sterownik ten przyjmuje parametry w postaci:

bpcd=<io-address>

Parametr oznacza tu adres bazowy (np. bpcd=0x3bc).

Plik urządzenia można stworzyć poleceniem:

# mknod /dev/bpcd b 41 0

Sterownik ten jest zawarty w jądrach wersji 2.1. Więcej informacji na temat tego sterownika znajdziesz w pliku bpcd.

Sterownik SCSI.

Autor główny:                   David Giller
Obsługa wielosesyjności:        tak (zależy od napędu)
Obsługa wielu napędów:          tak
Obsługa ładowalnego modułu:     tak
Czytanie ramek audio:           nie
Automatyczne wykrywanie:        tak
Plik urządzenia:                /dev/scd0, major 11
Plik konfiguracyjny:            cdrom.h
Opcja konfiguracyjna dla jądra: SCSI CDROM support?
Plik README:                    brak

Parametry podawane podczas startu są zależne od typu kontrolera SCSI. Więcej informacji znajdziesz w SCSI HOWTO.

Obsługiwana jest większa ilość sterowników (ilość ograniczona jest maksymalną ilością urządzeń na szynie SCSI). Stwórz pliki urządzeń z liczbą główną 11 i liczbą poboczną począwszy od 0:

# mknod /dev/scd0 b 11 0
# mknod /dev/scd1 b 11 1

Sterownik sam z siebie nie ma możliwości czytania cyfrowych ramek audio, ale niektóre napędy SCSI mają taką możliwość i będą działać z programem cdda2wav (który używa ogólnego interfejsu SCSI jądra).

Sterownik idecd.

Autor główny:                   Scott Snyder (snyder@fnald0.fnal.gov)
Obsługa wielosesyjności:        tak
Obsługa wielu napędów:          tak
Obsługa ładowalnego modułu:     nie
Czytanie ramek audio:           tak (w obsługiwanych napędach)
Automatyczne wykrywanie:        tak
Plik urządzenia:                /dev/hd{a,b,c,d},  major 22
Plik konfiguracyjny:            cdrom.h
Opcja konfiguracyjna dla jądra: Include support for IDE/ATAPI CDROMs?
Plik README:                    ide-cd

Sterownik ten jest przeznaczony dla CD-ROM-ów ATAPI. Sterownik przyjmuje następujące parametry:

hdx=cyls,heads,sects,wpcom,irq
  lub
hdx=cdrom

hdx może być jednym z: hda,hdb,hdc,hdd, albo po prostu hd i wtedy oznacza kolejny napęd. Tylko pierwsze trzy parametry są wymagane (cyls,heads,sects). Np. hdc=1050,32,64 hdd=cdrom.

Zmuszenie sterownika IDE, aby rozpoznał twój CD-ROM, może przysparzać trochę kłopotów, szczególnie jeśli masz więcej niż 2 urządzenia albo więcej niż 1 kontroler IDE. Zwykle wszystko co jest wymagane, to podać poprawne opcje z LILO. Szczegółówe informacje jak to zrobić znajdziesz w pliku /usr/src/linux/Documentation/ide-cd.
Przeczytaj go dokładnie.

Nowsze jądra mają lepszą obsługę dla większej ilości urządzeń IDE. Jeśli masz problemy ze starszym jądrem, to uaktualnienie może pomóc.

Niektóre kontrolery mają problemy sprzętowe, które sterownik może obejść. Możliwe, że musisz podać dodatkowe parametry sterownikowi, aby to umożliwić. Zajrzyj do dokumenctaji.

4.4 Startowanie jądra.

Możesz teraz wystartować system z nowym jądrem. Pilnuj czy nie pojawi się komunikat podobny do tego:

hdd: NEC CD-ROM DRIVE:282, ATAPI CDROM drive

który informuje, że CD-ROM został odnaleziony przez sterownik (komunikat będzie się różnił w zależności od napędu).

Jeśli komunikaty podczas startu pojawiają się zbyt szybko, to możesz do nich powrócić wciskając SHIFT-PgUp (jeśli nie przełączałeś konsol), albo wyświetlić je poleceniami dmesg lub tail /var/adm/messages.

Jeśli napęd nie może być odnaleziony, to jest problem. Zobacz sekcję na temat rozwiązywania problemów..

4.5 Montowanie, odmontowywanie i wyjmowanie urządzeń.

Aby zamontować CD-ROM, włóż płytę do napędu, i uruchom polecenie mount jako root (zakłąda się tutaj, że stworzyłeś symboliczne dowiązanie do twojego pliku urządzenia tak jak to było zalecane powyżej oraz że istnieje pusty katalog /mnt/cdrom):

# mount -t iso9660 -r /dev/cdrom /mnt/cdrom

Zawartość kompaktu znajduje się teraz w katalogu /mnt/cdrom.

Są jeszcze inne opcje dla polecenia mount, które możesz użyć; zobacz w podręczniku systemowym "man" mount(8).

Możesz dodać pozycję do pliku /etc/fstab, aby automatycznie montować CD-ROM podczas startu, albo żeby podać parametry jakie mają być użyte podczas montowania; zobacz w podręczniku systemowym "man" fstab(8).

Zauważ, że żeby odtwarzać płyty myzyczne nie powinieneś próbować ich montować.

Aby odmontować CD-ROM, użyj jako root polecenia umount:

# umount /mnt/cdrom

Płyta może być odmontowana tylko wtedy kiedy żaden proces nie żąda do niego dostępu (włączając w to przypadek, kiedy bieżącym katalogiem jest któryś z podkatalogów płyty lub jej katalog główny). Możesz potem wyjąć płytę. Większość napędów ma przycisk do wyjmowania płyt; Jest także osobny program służący do tego celu - eject.

Pamiętaj, że nie możesz wyjmować płyty podczas gdy jest ona zamontowana (to może lub nie być możliwe w zależności od rodzaju napędu jaki posiadasz). Niektóre sterowniki CD-ROM potrafią automatycznie wysuwać szufladkę jeśli płyta jest odmontowywana i wsuwać ją kiedy jest montowana (można wyłączyć tę funkcję podczas kompilacji albo przy pomocy programu).

Możliwe jest, że po słuchaniu płyty muzycznej nie będziesz mógł zamontować płyty. Musisz wysłać polecenie audio "stop" (przy pomocy jakiegoś programu do odtwarzania) przed próbą montowania. Problem ten wydaje się pojawiać tylko ze sterownikiem SBPCD.

Ostatnie wersje jądra 2.0 i 2.1 obsługują automounter oparty na jądrze, który dostarcza przeźroczyste dla użytkownika montowanie usuwalnych mediów włącznie z CD-ROM-em. Potrzebne narzędzia znajdziesz pod adresem ftp.icm.edu.pl.

4.6 Rozwiązywanie problemów.

Jeśli wciąż masz problemy po przejściu przez instalację wg. tego HOWTO, to tutaj jest kilka rzeczy, które należy sprawdzić. Punkty są umieszczone wg. narastającej złożoności. Jeśli któryś z nich zawiedzie, to rozwiąż ten problem zanim posuniesz się dalej.

Krok 1: Upewnij się, że na pewno używasz nowoskompilowanego jądra.

Możesz sprawdzić datę jądra, aby zobaczyć czy jest to to z obsługą CD-ROM-u. Można to zrobić poleceniem uname:

% uname -a
Linux fizzbin 2.0.18 #1 Fri Sep 6 10:10:54 EDT 1996 i586

albo wyświetlając zawartość pliku /proc/version:

% cat /proc/version
Linux version 2.0.18 (root@fizzbin) (gcc version 2.7.2) #1 Fri Sep 6 10:10:54 EDT 1996

Jeśli data się nie zgadza, to masz cały czas stare jądro. Czy aby na pewno zresetowałeś komputer? Jeśli używasz LILO, czy przeinstalowałeś je (z reguły pisząc /sbin/lilo)? Jeśli startujesz z dyskietki, czy zrobiłeś nową dyskietkę i użyłeś jej podczas startu?

Krok 2: Upewnij się, że odpowiednie sterowniki są wkompilowane

Sprawdzić to możesz wyświetlając zawartość pliku /proc/devices:

% cat /proc/devices
Character devices:
 1 mem
 2 pty
 3 ttyp
 4 ttyS
 5 cua
 7 vcs

Block devices:
 3 ide0
22 ide1

Najpierw poszukaj sterownika swojego CD-ROM-u. Są to wszystko urządzenia blokowe, w tym przypadku widać, że obecny jest sterownik idecd z numerem głównym 22.

Upewnij się także, że wkompilowana jest obsługa systemu plików ISO-9660 przez wyświetlenie zawartości pliku /proc/filesystems:

% cat /proc/filesystems
        ext2
        msdos
nodev   proc
        iso9660

Możesz też sprawdzić, które adresy I/O są używane przez sterownik zaglądając do pliku /proc/ioports:

howto % cat /proc/ioports
 ...
0230-0233 : sbpcd
 ...

Jeśli któryś ze sterowników, który myslałeś, że wkompilowałeś, się nie pojawia, to coś poszło nie tak z konfiguracją lub kompilacją jądra. Zacznij proces instalacji jeszcze raz począwszy od konfiguracji i kompilacji jądra.

Krok 3: Czy jądro wykryło twój napęd podczas startu?

Upewnij się, że CD-ROM został wykryty podczas startu jądra. Powinieneś zobaczyć odpowiedni komunikat. Jeśli komunikat ten przesunął się poza ekran, to możesz go sprawdzić poleceniem dmesg.

% dmesg

lub

% tail /var/adm/messages

Jeśli twój napęd nie został zidentyfikowany, to coś jest nie tak. Upewnij się, że jest podłączony do prądu i że wszystkie kable są poprawnie podłączone. Jeśli twój napęd posiada zworki do przełączania zakresów adresów, to sprawdź czy są poprawnie ustawione (np. napęd 0 jeśli masz tylko jeden napęd). CD-ROM-y ATAPI muszą być ustawione jako "single" lub "master", a nie "slave" jeśli do interfejsu jest podłączone tylko jedno urządzenie. Jeśli napęd działa pod DOS-em, to jest pewne, że sprzęt działa.

Wiele sterowników używa automatycznego wykrywania, ale niektóre nie i wykrywanie to nie zawsze działa. Użyj parametrów startowych podanych dla twojego typu sterownika. Jeśli nie jesteś pewien co do adresów I/O czy innych parametrów, to popróbuj kilka razy. LILO może być (i zwykle jest) tak skonfigurowane, żeby przyjmować parametry wpisane ręcznie podczas startu.

Inna możliwość jest taka, że użyłeś złego sterownika. Czasami dokumentacja może odwoływać się do interfejsów własnych jako do IDE, myląc użytkownika, który myśli, że jego napęd jest ATAPI.

Jeszcz inna możliwość to: twój napęd (albo karta interfejsu) jest jedną z "kompatybilnych", która potrzebuje inicjalizacji przez sterownik DOS-owy. Spróbuj wystartować DOS-a i załadować sterownik dostarczony przez sprzedawcę. Potem zresetuj miękko przy pomocy klawiszy Control-Alt-Delete.

Jeśli twojego napędu nie ma w tym dokumencie, to możliwe jest, że po prostu nie ma sterownika pod Linux-a dla niego. Możesz sprawdzić w adresach podanych pod koniec tego dokumentu.

Krok 4: Czy możesz czytać dane z napędu?

Spróbuj odczytać coś z CD-ROM-u. Przy następującym poleceniu światełko (jeśli je masz) powinno się zapalić i nie powinno być żadnych błędów. Upewnij się, że płyta jest włożona i użyj odpowiedniego dla siebie pliku urządzenia.

# dd if=/dev/cdrom of=/dev/null bs=2048
^C
124+0 records in
124+0 records out

Jeśli to działa, to jądro porozumiewa się z napędem i możesz przejść do kroku 5.

Jeśli nie, to możliwą przyczyną jest plik urządzenia. Upewnij się, że plik urządzenia w katalogu /dev ma poprawne liczby główną i poboczną zgodnie z tym co był podane wcześniej dla twojego typu napędu. Sprawdź czy prawa dostępu pozwalają na odczyt i zapis.

Raczej mniej prawdopodobnym jest żebyś miał jakiś problem sprzętowy. Spróbuj potestować napęd pod DOS-em, jeśli to możliwe, żeby sprawdzić czy to mogłoby być przyczyną.

Krok 5: Czy możesz zamontować napęd?

Jeśli możesz czytać z napędu, ale nie możesz go zamontować, to sprawdź najpierw czy wkompilowałeś obsługę systemu plików ISO-9660 wyświetlając zawartość pliku /proc/filesystems jak poprzednio.

Upewnij się, że montujesz napęd z opcjami "-t iso9660" i "-r" i że dobry i znany ci kompakt ISO-9660 (nie muzyczny) jest w napędzie. Normalnie musisz montować napęd jako użytkownik root.

Upewnij się, że katalog, do którego montujesz, istnieje i że jest pusty.

Jeśli CD-ROM jest montowany automatycznie podczas startu, to upewnij się, że masz poprawny wpis w pliku /etc/fstab.

Jeśli jest u ciebie uruchomiony syslog demon, to mogą być komunikaty o błędach pochodzące od jądra, których nie widzisz. Spróbuj użyć polecenia dmesg:

% dmesg
SBPCD: sbpcd_open: no disk in drive

W zależności od konfiguracji twojego systemu, błędy mogą być także zapisane w katalogu /var/adm.

Sprawdzanie problemów audio.

Jeśli napęd działa z CD-ROM-ami, ale nie odtwarza płyt audio, oto kilka możliwych rozwiązań.

Potrzebujesz programu do odtwarzania płyt muzycznych. Niektóre z nich mogą być popsute, albp mogą nie współpracować z twoim napędem. Spróbuj użyć innych i/lub przekompilować je samemu. Dobrym miejscem do poszukania takich programów jest ftp.icm.edu.pl.

Kilka sterowników nie obsługuje odtwarzania płyt audio. Sprawdź plik README albo źródło sterownika czy to ten przypadek.

Sprawdź czy płytę słychać przez wejście słuchawkowe. Jeśli tak to problem leży tu raczej w twojej karcie muzycznej. Użyj programu miksującego, aby ustawić urządzenie wejściowe i poziom głośności. Upewnij się, że założyłeś kabel audio z napędu CD-ROM-u do karty muzycznej. Upewnij się, że sterownik do karty dźwiękowej działa (zobacz Sound-HOWTO dostępne po polsku).

Kiedy wszystko inne zawiedzie.

Jeśli ciągle masz problemy to tutaj jest jeszcze kilka ostatnich rzeczy, których możesz spróbować:

5. Aplikacje.

W sekcji tej znajdują się niektóre aplikacje związane z CD-ROM-ami dostępne pod Linux-a. Najnowsze informacje na temat archwiów oprogramowania znajdziesz w "Linux Software Map".

5.1 Odtwarzacze płyt muzycznych.

Jest kilka programów umożliwiających słuchanie płyt muzycznych zarówno poprzez wyjście słuchawkowe jak przez kartę muzyczną.

Workman

- graficzna odtwarzarka pod X11, z bazą kompaktów i wieloma innymi funkcjami.

WorkBone

- interaktywna odtwarzarka tekstowa.

xcdplayer

- prosta odtwarzarka pod X11.

cdplayer

- bardzo prosta odtwarzarka obsługiwana z linii poleceń.

Xmcd

- odtwarzarka pod X11 napisana dla Motif-a

xmitsumi

- inna odtwarzarka pod X11 dla napędów Mitsumi

xplaycd

- inna odtwarzarka pod X11 połączona z mikserem dźwięku i programem do pomiaru VU.

cdtool

- narzędzia obsługiwane z linii poleceń do odtwarzania płyt audio.

Niektóre z tych programów są zaprogramowane, aby używać konkretnego urządzenia dla CD-ROM-u (np. /dev/cdrom). Możliwe, że możesz podać prawidłowe urządzenie jako parametr, albo możesz stworzyć symboliczne dowiązanie w katalogu /dev. Jeśli wysyłasz wyjście do karty muzycznej, to możliwe, że chcesz użyć miksera, aby ustawić głośność, albo żeby podać wejście z kompaktu, żeby coś nagrać.

5.2 PhotoCD.

Płyty PhotoCD używają systemu plików ISO-9660 zawierający pliki z obrazami we własnym formacie. Nie wszystkie napędy CD-ROM pozwalają na czytanie w tym formacie.

Program Hadmuta Danischa - hpcdtoppm - zamienia pliki PhotoCD na przenośny format pixmap. Można go ściągnąć z ftp.gwdg.de albo jako część narzędzi PBM (Portable Bit Map) dostępnych w wielu archiwach (poszukaj "pbm" lub "netpbm").

Program photocd Gerda Knorra kraxel@cs.tu-berlin.de może zamieniać obrazy PhotoCD w pliki Targa lub bitmapy Windows i OS/2.

Ten sam autor napisał program xpcd pod X11 obsługujący obrazy PhotoCD. Możesz wybrać obraz myszką, zobaczyć widok roboczy w małym okienku i załadować go w pięciu możliwych rozdzielczościach. Możesz także zaznaczyć część obrazu i załadować tylko tę zaznaczoną część. Pakietów tych możesz poszukać w ftp.cs.tu-berlin.de.

Program do obróbki obrazów ImageMagic także obsługuje pliki PhotoCD. Jest dostępny z ftp.x.org

5.3 Mkisofs.

Pakiet mkisofs Erica Youngdale'a pozwala tworzyć system plików ISO-9660 na partycjach twardego dysku. Może to być wykorzystane później przy sprawdzaniu systemu plików CD-ROM-u przed zapisaniem go na płytę.

Narzędzia dla właściwego zapisu danych na nagrywarkach są raczej specyficzne dla danego sprzedawcy. Wymagają także zapisu danych bez przerywania, tak że wielozadaniowy system taki jak Linux nie jest dobrym wyborem.

5.4 Narzędzia ISO-9660.

Są pewne narzędzia służące do weryfikowania kompaktu sformatowanego na ISO-9660; możesz ich użyć do sprawdzania podejrzanych płyt. Pakiet można znaleźć na ftp.cdrom.com. Napisane zostały przez Billa Siegmunda i Richa Morina.

6. Odpowiedzi na często zadawane pytania.

6.1 Jak inny użytkownik niż root może montować i odmontowywać płyty?

Większość poleceń mount posiada opcję user. Jeśli zrobisz taką pozycję w /etc/fstab:

/dev/sbpcd  /mnt/cdrom   iso9660     user,noauto,ro

to zwykły użytkownik będzie mógł zamontować i odmontować płytę poleceniami:

% mount /mnt/cdrom
% umount /mnt/cdrom

Płyta zostanie zamontowana z pewnymi opcjami, które zwiększają bezpieczeństwo (np. programy nie mogą być wykonywane, pliki urządzeń są ignorowane); w niektórych przypadkach może to być zbyt rygorystyczne.

Inną metodą jest zdybycie pakietu usermount, który pozwala użytkownikom innym niż root montować i odmontowywać urządzenia wyjmowalne takie jak dyskietki i CD-ROM-y, ale zmniejsza dostęp do innych urządzeń (takich jak partycje twardych dysków). Dostępny jest na większości serwerów ftp.

Pod adresem ftp.cdrom.com znajduje się plik źródłowy mount.c, który pozwala na montowanie i odmontowywanie CD-ROM-ów (tylko) przez normalnych użytkowników. Uruchamiany jest z prawami root-a.

6.2 Dlaczego dostaję komunikat "device is busy" kiedy odmontowuję CD-ROM?

Płyta nie może być odmontowana jeśli jakikolwiek proces żąda do niej dostępu, włącznie z przypadkiem kiedy bierzącym katalogiem jest któryś z podkatalogów płyty lub jej katalog główny. Jeśli nie możesz znaleźć procesu używającego płytę, to możesz użyć polecenia fuser tak jak to pokazano poniżej:

% umount /cdrom
umount: /dev/hdd: device is busy
% fuser -v /cdrom
                     USER       PID ACCESS COMMAND
/mnt/cdrom           tranter    133 ..c..  bash

Na niektórych systemach możliwe, że musisz być root-em, żeby uruchomić polecenie fuser, żeby zobaczyć procesy innych użytkowników.

6.3 Jak mam eksportować CD-ROM dla innych komputerów przez NFS?

Musisz dodać pozycję do pliku /etc/exports. Wtedy użytkownicy na tamtej maszynie będą mogli zamontować to urządzenie. Szczegóły znajdziesz w poleceniu "man 5 exports".

6.4 Czy mogę startować Linux-a z CD-ROM-u?

Przy instalacji Linux-a najpopularniejszą metodą jest użycie dyskietki startowej. Niektóre dystrybucje pozwalają na start Linux-a bezpośrednio z płyty.

Michael Fulbright ( msf@redhat.com) zgłosił, że jeśli posiada się dobry CD-ROM, ROM BIOS i napęd CD-ROM ATAPI, to jest możliwe startowanie z płyty. Najnowsza wersja mkisofs także obsługuje tworzenie takich dysków. Dodał on jakieś łaty do obsługi standardu El Torito dla startowalnych CD-ROM-ów.

6.5 Jak mogę przeczyta dane cyfrowe z płyty muzycznej?

Heiko Eissfeldt ( heiko@colossus.escape.de) i Olaf Kindel napisali narzędzie, które czyta dane audio i zachowuje je jako pliki dźwiękowe w formacie .wav. Pakiet nazywa się cdda2wav.tar.gz i można go pobrać z ftp.icm.edu.pl.

Ponieważ napędy CD-ROM zmieniają się bardzo szybko, trudno jest powiedzieć które modele obsługują czytanie danych cyfrowych. Najlepiej zdobyć najnowszy pakiet cdda2wav i przeczytać zawartą tam dokumentację.

Więcej informacji na ten temat znajdziesz na stronie www.tardis.ed.ac.uk oraz w FAQ grupy alt.cd-rom wymienionym w referencjach.

6.6 Dlaczego polecenie find nie działa?

Jeśli używasz tego polecenia na kompakcie w formacie ISO-9660 bez Rock Ridge Extensions, to musisz dodać opcję -noleaf. Więcej szczegółów w poleceniu "man find".

(Z moich doświadczeń wynika, że prawie wszystkie nowsze płyty Linux-a używają Rock Ridge Extensions, więc ten problem powinien występować bardzo rzadko.)

6.7 Czy Linux obsługuje jakieś nagrywarki?

Pakiet X-CD-Roast jest graficznym interfejsem do obsługi nagrywarek CD. Pakiet można znaleźć na ftp.icm.edu.pl w kataloogu /pub/Linux/sunsite/utils/disk-management/.

Zobacz także "Linux CD-Writing HOWTO" pod adresem www.jtz.org.pl dostępne w języku polskim.

6.8 Dlaczego pojawia się taki komunikat "mount: Read-only file system when mounting a CD-ROM"?

CD-ROM jest nośnikiem tylko do odczytu. We wcześniejszych wersjach jądra można było zamontować płytę CD do zapisu i odczytu, ale zapis był po prostu ignorowany. Od wersji 1.1.33 zostało to poprawione i CD-ROM-y muszą być montowane tylko-do-odczytu (np. z opcją -r).

6.9 Dlaczego wysuwa mi się szufladka kiedy zamykam system?

Od wersji jądra 1.1.38, sterownik sbpcd wysuwa szufladkę kiedy płyta jest odmontowywana. Jeśli zamykasz system, to zamontowana płyta zostanie odmontowana i szufladka wysunięta.

Funkcja ta ma pomóc przy zmianie płyt. Jeśli szufladka jest wysunięta, to przy próbie odczytu lub zamontowania zostanie zamknięta automatycznie.

Stwierdziłem, że to powoduje problemy z niektórymi programami (np. cdplay i workbone). Od wersji 1.1.60 jądra można tę funkcję kontrolować programowo. Przykładowy program zawarty jest w dokumentacji do sterownika sbpcd programu (albo użyj eject).

6.10 Mam "specjalny" kompakt, którego nie można zamontować?

Ten specjalny kompakt to pewnie płyta XA (jak wszystkie PhotoCD czy "one-offs" stworzone przy użyciu nagrywarek). Większość sterowników CD-ROM-ów nie obsługuje płyt XA, chociaż może znajdziesz gdzieś jakąś łatę, która dodaje obsługę takich płyt.

Sterownik sbpcd obsługuje XA. Jeśli używasz tego sterownika, to możesz sprawdzić czy płyta jest XA w ten sposób: otwórz plik sbpcd.c i włącz wyświetlanie "Table of Contents" (DBG_TOC). Skompiluj i zainstaluj nowe jądra i wystartuj je. Podczas każdego montowania TOC będzie wyświetlane na konsoli, albo logowane do pliku). Jeśli pierwszą wartością w TOC jest 20, to jest to płyta XA. Bajt ten ma wartość 00 w normalnych płytach. Jeśli TOC pokazuje różne ścieżki, to jest to także znak, że jest to płyta XA.

(dzięki dla Eberharda Moenkeberga za powyższą informację)

Innymi możliwościami dla nieodczytywalnych CD-ROM-ów są:

  1. Płyta nie używa systemu plików ISO-9660 (np. niektóre używają SunOS lub HFS).
  2. Jest to płyta muzyczna.
  3. Włożyłeś ją do napędu "do góry nogami" :-)

6.11 Czy wielopłytowe napędy CD-ROM działają z Linux-em?

Kilku użytkowników zgłosiło, że osiągnęło jakieś sukcesy z wielopłytowymi napędami CD-ROM SCSI. Musisz przypuszczalnie włączyć opcję "Probe all LUNs on each SCSI device" przy konfiguracji jądra. Przynajmniej jeden użytkownik musiał także zwiększyć wartość oczekiwania (timeout) dla SCSI w sterowniku. Zgłoszono mi, że Nakamichi MBR-7 7 i Pioneer 12 działają.

Dostępne są także napędy wielopłytowe EIDE/ATAPI. Jądro w wersji 2.0 ma szczątkową obsługę dla napędów korzystających z funkcji ioctl CDROM_SELECT_DISC. Plik z dokumentacją do sterownika IDE-CD zawiera źródła krótkiego programu do wybierania kompaktów, albo możesz użyć nowszej wersji opisanego wcześniej programu eject.

6.12 Dostaję błędy: "/cdrom: Permission denied"

Niektóre płyty mają tak ustawione prawa dostępu do swojego głównego katalogu, że tylko użytkownik root może go czytać. Przykładem może tutaj być płyta InfoMagic z marca 1995. Jest to wyraźna niedogodność.

Następująca łata, grzeczność ze strony Christopha Lametera ( clameter@waterf.org) obchodzi ten problem w jądrze.

From: clameter@waterf.org (Christoph Lameter)
Newsgroups: comp.os.linux.setup
Subject: InfoMagic Developers Set: Fix for CD-ROM permissions
Date: 12 Apr 1995 20:32:03 -0700
Organization: The Water Fountain - Mining for streams of Living Water
NNTP-Posting-Host: waterf.org
X-Newsreader: TIN [version 1.2 PL2]

Zbiór płyt "InfoMagic Developers" z marca 1995 ma błędy ponieważ
informacja o prawach dostępu zapisana w katalogu głównym przysparza
następujących problemów:

1. Płyta 1 będzie zawsze miała właściciela/grupę 5101/51 i ma
dozwolony zapis (?)

2. Płyta 2 i 3 mają ustawione prawa rwx dla root-a i żadnych praw dla
innych użytkowników/grupy. Płyty tej nie można odczytać z innego
użytkownika niż root! Mam uruchomionego BBS-a i muszę je udostępnić do
zgrywania dla innych.

Widziałem już gdzieś tam kilka poprawek do tego. Jednak kłopot w tym,
że poprawki te zmieniają prawa dla WSZYSTKICH katalogów na płycie. Ta
poprawka zmienia TYLKO prawa dostępu do katalogu głównego płyty. Jeśli
chcesz uruchamiać części Linux-a bezpośrednio z tej płyty to możesz
wpaść w kłopoty jeśli wszystkie katalogi są czytelne dla wszystkich i
jeśli właścicielem wszystkich jest root.

Poprawka ta zmieni prawa dostępu dla katalogu głównego na r-xr-xr-x i
właściciela/grupę na wartości odpowiadające opcjom uid i gid polecenia
mount.

Aby założyć poprawkę:
 cd /usr/src/linux/fs/isofs
 patch <**TEN LIST**

i skompiluj ponownie jądro (możliwe, że musisz poprawić trochę tę
poprawkę w zależności od wersji twojego jądra).

Poprawka ta powinna się przypuszczalnie znaleźć w jądrze. Jaki interes
mają dane na płycie w grzebaniu prawami/właścicielem katalogu do
zamontowania?

--- inode.c.ORIG        Wed Apr 12 17:24:36 1995
+++ inode.c     Wed Apr 12 17:59:12 1995
@@ -552,7 +552,15 @@
    these numbers in the inode structure. */
 
        if (!high_sierra)
-         parse_rock_ridge_inode(raw_inode, inode);
+       {  parse_rock_ridge_inode(raw_inode, inode);
+           /* check for access to the root directory rights/owner CL */
+          if((inode->i_sb->u.isofs_sb.s_firstdatazone) == inode->i_ino)
+           { /* Change owner/rights to the ones demanded by the mount command */
+             inode->i_uid = inode->i_sb->u.isofs_sb.s_uid;
+             inode->i_gid = inode->i_sb->u.isofs_sb.s_gid;
+            inode->i_mode = S_IRUGO | S_IXUGO | S_IFDIR;
+           }
+        }
        
 #ifdef DEBUG
        printk("Inode: %x extent: %x\n",inode->i_ino, inode->u.isofs_i.i_first_extent);
@@ -805,4 +813,3 @@
 }
 
 #endif
-

Zauważ, że powyższa łata jest raczej stara i przypuszczalnie nie zainstaluje się gładko w jądrze wersji 2.0. Zobacz także pytanie na temat plików ukrytych w dalszej części tego dokumentu.

6.13 Jak mam interpretować komunikaty o błędach IDE CD?

Co to znaczy jak otrzymam komunikat o błędzie od sterownika CD-ROM-u - np. taki: "hdxx: code: xx key: x asc: xx ascq: x"?

To jest komunikat o statusie/błędzie od napędu IDE CD-ROM. Domyślnie sterownik IDECD wypisuje informacje otrzymane przez napęd bez "zawracania jądru głowy". Możesz zmienić to domyślne zachowanie, aby wyświetlał właściwy komunikat o błędzie, przez zmianę wartości VERBOSE_IDE_CD_ERRORS w pliku /usr/src/linux/drivers/block/ide-cd.c na 1 i rekompilację jądra.

6.14 Jak mogę powiedzieć jaką prędkość ma mój CD-ROM?

Oto jeden sposób. Polecenie to mierzy jaki czas przeznaczony jest na odczytanie 1500K danych z płyty:

% time -p dd if=/dev/cdrom of=/dev/null bs=1k count=1500
1500+0 records in
1500+0 records out
real 5.24
user 0.03
sys 5.07

Prędkość CD-ROM-u o pojedynczej prędkości wynosi 150 kb na sekundę, co powinno zabrać około 10 sekund. Przy prędkości podwójnej zabrałoby to 5 sekund, przy czterokrotnej - 2,5, itd...

Czas "real" powyżej jest przypuszczalnie tym, na który należy patrzeć - w tym przypadku jest to CD-ROM podwójnej prędkości. Możesz zwiększyć ilość danych, aby otrzymać bardziej dokładną wartość (w razie gdybyś pytał, to te dane nie są cache'owane). Przypuszczalnie powinieneś uruchomić to polecenie kilka razy i wziąć średnią z nich wszystkich.

6.15 Mój CD-ROM przestał działać odkąd zainstalowałem Linux-a.

Zwykłym symptomem jest to, że dysk startowy użyty do instalacji rozpoznał twój CD-ROM, ale po tym jak Linux został zainstalowany na dysku twardym czy dyskietce i zrestartowany - przestał rozpoznawać twój napęd.

Najpopularniejszym powodem jest tutaj fakt, że w niektórych dystrybucjach jądro instalowane nie zawsze jest tym samym jądrem, które znajduje się na twojej dyskietce startowej. Wybrałeś dyskietkę, która obsługiwała twój CD-ROM, podczas gdy jądro, które zainstalowałeś, jest jądrem "ogólnym" i nie ma w nim obsługi CD-ROM-u. Możesz to sprawdzić postępując zgodnie ze wskazówkami zawartymi w sekcji Rozwiązywanie problemów wcześniej w tym dokumencie (np. zacznij od sprawdzenia /proc/devices).

Rozwiązaniem jest ponowna kompilacja jądra, upewniając się jednocześnie, że wszystkie sterowniki jakie potrzebujesz są włączone. Zobacz Kernel-HOWTO (po polsku) jeśli nie wiesz jak to zrobić.

Jeśli przekazałeś jakieś parametry startowe do dyskietki (np. "hdc=cdrom"), to musisz je dodać do konfiguracji twojego programu startującego (zwykle jest to plik /etc/lilo.conf).

6.16 Na płycie są "ukryte" plik, których nie mogę odczytać.

Niektóre płyty posiadają pliki z ustawionym bitem "hidden". Normalnie nie można zobaczyć tych plików. Jeśli zamontujesz płytę z opcją "unhide", to wtedy pliki te powinny być dostępne (jakoś nie widać, żęby to było gdziekolwiek udokumentowane).

6.17 Gdzie jest udokumentowane CD-ROM API?

Jeśli chcesz napisać własną aplikację, jak np. odtwarzarka audio, to będziesz musiał zrozumieć API - interfejs programowana aplikacji (application programming interface).

Oryginalnie sterownik CD-ROM-u używał swojej własnej funkcji ioctl(), aby obsłużyć funkcje specyficzne dla każdego napędu. Pliki nagłówkowe takie jak /usr/include/linux/sbpcd.h opisują je. Ponieważ wiele sterowników bazowało na innych sterownikach, interfejsy, jeśli nie są identyczne, to mają wiele wspólnego.

Ostatnio powstała inicjatywa ustandaryzowania interfejsu dla napędów CD-ROM kierowana przez Davida van Leeuwena ( david@tm.tno.nl). Polega ona na umieszczeniu ogólnego kodu w jednym miejscu i upewnieniu się, że wszystkie sterowniki zachowują sie tak samo Jest to udokumentowane w pliku /usr/src/linux/Documentation/cdrom/cdrom-standard.tex. Kilka sterowników to obsługuje. Spodziewam się, że w następnej głównej wersji jądra (3.0?) wszyskie sterowniki CD-ROM-ów dostosują się do tego API.

Moja książka, Linux Multimedia Guide, poświęca o wiele więcej miejsca tematowi programowania CD-ROM-ów, szczególnie jeśli chodzi o funkcje audio. Zobacz na koniec sekcji Referencje.

6.18 Dlaczego nie widzę długich nazw na CD-ROM-ach z Windows-ów?

Jeśli masz CD-ROM, który ma długie nazwy pod Windows, ale nie pod Linux-em, może on być zformatowany do Microsoft-owego systemu plików Joliet. Rozwiązanie znajdziesz w odpowiedzi na następne pytanie.

6.19 Czy obsługiwany jest Microsoft-owy system plików Joliet?

Microsoft stworzył rozszerzenie do formatu ISO CD-ROM o nazwie Joliet. W czasie pisania obsługa dla Joliet była w trakcie opracowywania; łaty były dostępne z adresu url url="http://www-plateau.cs.berkeley.edu/people/chaffee/joliet.html"> lub ftp://www-plateau.cs.berkeley.edu/pub/multimedia/linux/joliet/.

7. Referencje.

Wspomniałem już o plikach README, zwykle zainstalowanych w /usr/src/linux/Documentation/cdrom. Mogą być one "kopalnią złota" jeśli chodzi o informacje.

Następujące dokumenty FAQ są okresowo wysyłane na grupę dyskusyjną news.answers i archiwizowane w takich miejscach w Internecie jak rtfm.mit.edu:

Przynajmniej tuzin firm sprzedaje dystrybucje Linux-a na CD-ROM-ach; większość z nich jest podana w Distribution HOWTO.

Następujące grupy dyskusyjne mają coś wspólnego z CD-ROM-ami:

Dobrym źródłem informacji są także grupy comp.os.linux.

Duże archiwum informacji z CD-ROM-ów jest na ftp.cdrom.com.

[Od tłumacza.] W Polsce polecam wspomniane już wcześniej ftp.icm.edu.pl.

Dokument FAQ na temat urządzeń IDE i ATA można zanleźć pod adresem rtfm.mit.edu oraz www.seagate.com.

Western Digital- firma, która zapoczątkowała protokół IDE - ma informacje na temat tego protokołu na swoim serwerze ftp.

Stronę WWW poświęconą multimediom można także znaleźć na viswiz.gmd.de. Creative Labs ma swoją stronę pod adresem www.creaf.com.

W Linux Documentation Project powstało kilka książek na temat Linux-a, włączając Linux Installation and Getting Started. Są one dostępne za darmo poprzez anonimowane FTP z większości archiwów Linux-owych albo można je otrzymać w formie trwałej.

Linux Software Map (LSM), czyli mapa oprogramowania pod Linux-a jest nieocenionym źródłem. LSM można znaleźć na różnych serwerach ftp włącznie z ftp.icm.edu.pl.

Lista dyskusyjna na temat Linux-a ma kilka "kanałów" poświęconych różnym tematom. Aby się dowiedzieć jak się dołączyć, wyślij list ze słowem "help" w treści na adres majordomo@vger.rutgers.edu. (Zauważ, że podczas pisania tego dokumentu listy te były porządnie przeciążone i szukano jakiegoś miejsca zastępczego.)

Na koniec bezwstydna reklama: Jeśli chcesz się dowiedzieć o wiele więcej na temat multimediów pod Linux-em (szczególnie na temat aplikacji i programowania CD-ROM-ów i kart muzycznych), zobacz moją książkę Linux Multimedia Guide, ISBN 1-56592-219-0, wydaną przez O'Reilly and Associates. Tak jak oryginalna wersja angielska, w druku są wersje francuska i japońska. Po szczegóły zadzwoń 800-998-9938 w Północnej Ameryce, albo sprawdź adres www.ora.com albo moją stronę domową www.pobox.com.

7.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@jtz.org.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to:

- cofnięcie ekranu SHIFT-PgUp
- info o polskiej liście i grupie dyskusyjnej.

doc-linux-pl-2002.06.14.orig/html/Cyrillic-HOWTO.pl.html0100664000175000017500000021122706770264140021320 0ustar covencoven The Cyrillic HOWTO

The Cyrillic HOWTO

Autor: Aleksander L. Belikoff
v3.0, 13 sierpień 1995
Wersja polska: Gwidon S. Naskrent naskrent@hoth.amu.edu.pl
v2.0, luty 1998


Dokument ten opisuje jak skonfigurować swój system linuxowy aby móc pisać, oglądać i drukować dokumenty w języku rosyjskim. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/

1. 1. Uwagi ogólne

1.1 1.1 Wstęp

Dokument ten obejmuje to czego potrzebujesz aby skutecznie pisać, oglądać i drukować dokumenty po rosyjsku pod Linuxem. Chociaż dokument ten zakłada że jako systemu operacyjnego używasz Linuxa, większość z przedstawionych informacji stosuje się także do innych odmian Unixa. Postaram się zachować rozróżnienie tak widocznym jak to możliwe.

Istnieje pewna liczba popularnych dystrybucji linuxowych. Jako system przykładowy opiszę Linuxa Red Hat 3.0.3 (Picasso) oraz Red Hat 4.1 (Vanderbildt) - tego którego osobiście używam. Niemniej jednak postaram się zaznaczyć różnice, jeśli takowe istnieją, w instalacji Linux Slackware.

Ponieważ taka instalacja bezpośrednio modyfikuje i rozszerza system operacyjny, powinieneś zdawać sobie sprawę z tego co robisz. Chociaż starałem się sprawy maksymalnie uprościć, posiadanie pewnego doświadczenia z danym programem jest korzystne. Nie zamierzam opisywać czym jest system X Windows i jak składać dokumenty używając TeXa lub LaTeXa, albo jak zainstalować drukarkę w Linuxie. Problemy te omawiane są w innych dokumentach.

Z tych samych powodów opisuję instalację na skalę systemową, domyślnie wymagającą uprawnień administratora. Jeśli jednak istnieje możliwość instalacji na poziomie użytkownika, nie omieszkam jej wspomnieć.

Uwaga: system X Windows, TeX i inne składniki Linuxa są złożonymi systemami z wyrafinowaną konfiguracją. Jeśli coś sknocisz, możesz nie tylko nie dokonać instalacji cyrilicy, ale popsuć składnik, jeśli nie cały system. Nie ma to na celu cię odstraszać, lecz tylko sprawić abyś zrozumiał powagę operacji i był ostrożnym. Wstępna kopia zapasowa plików konfiguracyjnych jest wielce pożądana. Posiadanie pod ręką jakiegoś guru zawsze się przydaje.

1.2 1.2 Dostępność i uwagi

Dokument ten dostępny jest na sunsite.unc.edu lub tsx-11.mit.edu jako część Linux Documentation Project. Może także być dostępny w różnych archiwach zawierających Linuxa. Co więcej, może także wchodzić w skład dystrybucji Linuxa.

Można go wreszcie otrzymać bezpośrednio od autora, na ftp.netvision.net.il.

Jeśli masz jakieś pytania dotyczące tego dokumentu, nie wahaj się, proszę, skontaktować się ze mną pod adresem belikoff@netvision.net.il. Każda nowa i użyteczna informacja na temat obsługi Cyrilicy w różnych Unixach jest mile widziana. Pamiętaj, pomoże to innym.

Wielu ludzi pomogło mi (i nie tylko mi) wartościowymi informacjami oraz sugestiami. Jeszcze więcej ludzi dołożyło oprogramowania na użytek publiczny. Przepraszam jeżeli zapomniałem kogoś wymienić.

Oto więc oni: Bas v. de Bakker, David Daves, Siergiej Wakulenko, Siergiej O. Naoumow, Winfried Trümper, Michael van Canneyt.

Ten dokument jest (c) 1995 Aleksander L. Belikoff. Można go używać i rozpowszechniać zgodnie ze zwykłymi warunkami Linux HOWTO opisanymi poniżej.

Poniższe jest notką o prawach autorskich Linux HOWTO:

Dokumenty Linux HOWTO stanowią prawną własność ich autorów, chyba że zaznaczono inaczej. Dokumenty Linux HOWTO mogą być reprodukowane i rozposzechniane w całości lub części, w każdym fizycznym lub elektronicznym środku przekazu, tak długo jak w każdej kopii pozostaje niniejsza notka o prawach autorskich. Redystrybucja komercyjna jest dozwolona i popierana; autorzy jednak woleliby zostać o takich dystrybucjach powiadomieni.

Wszystkie tłumaczenia, prace pochodne i zbiorowe zawierające dokumenty Linux HOWTO muszą podlegać po tą notkę o prawach autorskich. To jest, nie możesz stworzyć z HOWTO pracy pochodnej i nałożyć dodatkowe ograniczenia na jej dystrybucję. Wyjątki do tych reguł mogą być udzielone pod pewnymi warunkami; proszę skontaktować się z koordynatorem Linux HOWTO pod adresem podanym poniżej.

W skrócie, chcielibyśmy promować rozprzestrzenianie się tych informacji tak wieloma kanałami jak to możliwe. Pragnęlibyśmy jednakże zachować prawa autorskie do dokumentów HOWTO, i być powiadamianymi o każdych planach ich redystrybucji.

Jeśli masz pytania, skontaktuj się proszę z Gregiem Hankinsem, koordynatorem Linux HOWTO, pod adresem gregh@sunsite.unc.edu. Możesz użyć tego adresu z programem finger by zdobyć numer telefonu i inne dodatkowe informacje dotyczące kontaktu.

Unix jest zastrzeżonym znakiem przemysłowym X/Open Ltd.; MS-DOS, Windows, Windows NT i Windows 95 są zastrzeżonymi znakami Microsoft Corp.; System X Windows jest znakiem zastrzeżonym Consortium X, Inc. Wszystkie inne znaki zastrzeżone należą do ich odpowiednich posiadaczy.

2. 2. Znaki i zestawy znaków

Ażeby zrozumieć i wyświetlać znaki różnych języków, system i programy muszą być zdolne odróżniać je od innych znaków. To jest, każdy pojedynczy znak musi mieć odrębną reprezentację wewnątrz systemu operacyjnego, bądź konkretnego pakietu programów. Taka kolekcja wszystkich odrębnych znaków które jakiś system jest w stanie reprezentować w danym momencie nazywa się zestawem znaków.

W czasie tworzenia największych systemów operacyjnych nikt nie dbał o to aby programy były wielojęzyczne. Dlatego też najpopularniejszym zestawem znaków był (i ciągle jest) ASCII (American Standard Code for Information Interchange).

Standardowy ASCII (aka siedmiobitowy ASCII) zawiera 128 odrębnych kodów. Niektóre z nich ASCII definiuje jako faktyczne drukowalne znaki, a niektóre są tak zwanymi znakami kontrolnymi, które posiadały specjalne znaczenia w starszych protokołach komunikacyjnych. Każdy element zestawu identyfikuje kod będący liczbą całkowitą (0-127). Podzbiór znaków drukowalnych przedstawia te które znaleźć można na klawiaturze maszyny do pisania, z niewielkimi dodatkami. Każdy znak zajmuje siedem najmniej znaczących bitów bajtu, podczas gdy najbardziej znaczący używany był dla celów kontrolnych (np. kontroli transmisji w starszych pakietach komunikacyjnych).

Koncepcję ASCII siedmiobitowego rozszerzył ASCII ośmiobitowy (aka rozszerzony ASCII). W tym zestawie zakres kodów znaków to 0-255. Dolna połowa (0-127) to czysty ASCII, podczas gdy górna zawiera 127 dodatkowych znaków. Ponieważ zestaw ten jest wstecznie kompatybilny z ASCII (znak ciągle zajmuje osiem bitów, kody odpowiadają staremu ASCII), zyskał on sobie szeroką popularność.

ASCII ośmiobitowe nie definiuje zawartości górnej połówki zestawu. Dlatego ISO powzięło zadanie ustalenia rodziny standardów znanych jako rodzina ISO-8859-X. Jest to zbiór kodowań ośmiobitowych, w których niższa połowa każdego kodowania (0-127) odpowiada ASCII, a wyższa definiuje znaki dla różnych języków. Zdefiniowano na przykład następujące kodowania:

W Latin 1 górna połowa tabeli definiuje różne znaki które nie są częścią alfabetu angielskiego, ale znajdują się w różnych językach zachodnioeuropejskich (umlauty niemieckie, akcenty francuskie).

Programy które nie zakładają nic co do ósmego bitu danych ASCII zwane są ośmiobitowo czystymi. Niektóre starsze programy, napisane z myślą o ASCII 7-bitowym, nie są czyste ośmiobitowe i mogą działać niepoprawnie z danymi ośmiobitowymi. Większość jednak pakietów domyślnie radzi sobie z ośmiobitowym ASCII, albo wymaga bardzo prostego ustawienia. UWAGA: zanim wyślesz pytanie "Wszystko ustawiłem poprawnie, a nie mogę wprowadzać/oglądać znaków cyrylicowych!", zajrzyj do sekcji 8 co do uwag o programie którego używasz.

Ponieważ na większości systemów ASCII zajmuje osiem bitów, nie ma już możliwość aby ciągle je rozszerzać. Sposobem na zaimplementowanie nowych symboli w kodowaniach opartych na ASCII jest stworzenie innej implementacji rozszerzonego ASCII. W taki właśnie sposób zaimplementowane zostało kodowanie cyrylicy w ASCII.

Wspomnieliśmy już o standardzie ISO-8859-5 jako określającym kodowanie cyrylicy. Lecz jak to często bywa ze standardami, stworzono go nie biorąc pod uwagę istniejącej praktyki w byłym ZSRR. Jedyną więc rzeczą jaką ten standard osiągnął było spotęgowanie zamieszania. Nie powiedziałbym że gdzieś się znacząco używa ISO-8859-5.

Innymi standardami kodowania cyrylicy są tak zwane kodowanie Alt i strona kodowa 1251 Microsoftu. Ta pierwsza stworzona została (przez kogo?) dość dawno temu na potrzeby MS-DOS. W tamtych czasach nie było jeszcze tego całego szumu o internetowaniu, intencją więc było uczynienie jej jak najbardziej kompatybilnej ze standardem IBM. Dlatego kodowanie Alt jest w rzeczywistości stroną kodową IBM, gdzie wszystkie specjalne znaki europejskie w górnej połówce zastąpiono cyrylicznymi, z wyłączeniem pseudografiki. Nie rujnowało to łatwego tworzenia okienek i dawało także znaki cyrylicowe. Standard Alt ciągle żyje i jest niesłychanie popularny w świecie MS-DOSa.

Strona kodowa 1251 to po prostu próba Microsoftu pokazania nowego standardu dla kodowania cyrylicy w Windows. Na ile wiem, nie jest ona kompatybilna z czymkolwiek (niezbyt dziwne, co?)

I w końcu istnieje KOI-8. Jest ono również stare, ale zaprojektowano je mądrze i dzisiaj założenia tego projektu wyglądają naprawdę użytecznie.

I znów, jest ono kompatybilne z ASCII, a znaki cyrylicy umieszczone są w górnej połówce. Lecz głównym założeniem projektowania KOI-8 jest to że pozycje znaków cyrylicy muszą odpowiadać znakom angielskim o zbliżonej wymowie. Konkretnie, jeśli ustawimy ósmy bit w angielskim 'a', dostaniemy 'a' cyrylicowe. Oznacza to że jeśli mamy tekst pisany cyrylicą w KOI-8, możemy uciąć ósmy bit z każdego znaku i dalej mieć czytelny tekst. Bardzo to dzisiaj ważne, ponieważ w Internecie jest wiele węzłów pocztowych które po prostu po cichu obcinają ósmy bit, pewne że wszyscy na całej Ziemi mówią po angielsku.

Nic dziwnego że KOI-8 szybko stał się de facto standardem dla cyrylicy w Internecie. Andriej A. Czernow poczynił ogromne nakłady pracy aby ustalić w tym obszarze standard. Jest on autorem RFC 1489 ("Registration of a Cyrillic character set").

Te dwa standardy [Alt i KOI-8] różnią się tylko pozycjami znaków cyrylicowych w tabeli (to jest kodami znaków cyrylicowych)/

Główną różnicą jest to że kodowanie Alt używane jest tylko przez użytkowników MS-DOS, podczas gdy KOI-8 używane jest w Unixie, a także w MS-DOSie (chociaż w tym drugim jest znacznie mniej popularne). Ponieważ robimy to co trzeba (to znaczy pracujemy w systemie Unixowym) skupimy się głównie na KOI-8.

Co do standardu ISO, jest on bardziej popularny jako standard cyrylicy. w Europie i USA. W Rosji zdecydowanie przoduje KOI-8.

Istnieją i inne standardy, różne od ASCII i o wiele bardziej elastyczne. Najbardziej znanym jest Unicode. Nie są jednak one zaimplementowane tak dobrze jak te podstawowe w Unixie w ogólności i Linuxie w szczególności. Dlatego też nie będę ich tu opisywał.

3. 3. Ustawianie trybu tekstowego

Zasadniczo tryb tekstowy jest najprostszą metodą pokazywania i wprowadzania znaków cyrylicy. Istnieje jednak jedna zasadnicza komplikacja: fonty w trybie tekstowym i operacje na układzie klawiatury zależą od implementacji sterownika terminala. Nie ma więc przenośnej metody dla osiągnięcia tego celu między różnymi systemami.

Za chwilę opiszę sposób radzenia sobie ze sterownikiem konsoli Linuxa. Tak więc jeśli masz inny system, nie spodziewaj się że będzie to działać u ciebie. Zajrzyj raczej do dokumentacji swojego sterownika terminala. Poślij mi jednakże jakiekolwiek informacje jakie znajdziesz, tak aby mógł włączyć je do przyszłych wersji tego dokumentu.

3.1 4.1. Konsola

Sterownik konsoli Linuxa jest dość elastycznym kawałkiem software'u. Potrafi on zmieniać fonty oraz układy klawiatury. Aby to osiągnąć, będziesz potrzebował pakietu kbd. RedHat i Slackware instalują kbd jako część systemu.

Pakiet kbd zawiera narzędzia do kontrolowania klawiatury oraz znaczny zbiór fontów i układów klawiatury.

By ustawić cyrylicę, trzeba wykonać dwie rzeczy:

  1. Ustawienie czcionki ekranowej. Wykonywane jest to za pomocą programu setfont. Pliki z czcionkami umieszczone są w /usr/lib/kbd/consolefonts. UWAGA: Nigdy nie uruchamiaj programu setfont pod X, ponieważ zawiesi on twój system. Dzieje się tak ponieważ działa on z odwołaniami niskiego poziomu do karty graficznej, których nie lubi X.
  2. Załadować odpowiedni układ klawiatury programem loadkeys.

UWAGA: W RedHat 3.0.3 /usr/bin/loadkeys ma zbyt zawężone prawa dostępu, konkretnie 700 (rwx------). Nie ma powodu aby tak było, ponieważ każdy może skompilować swoją własną kopię i uruchomić ją (odpowiednie odwołania do systemu nie są zarezerwowane tylko dla administratora). Poproś więc swojego sysadmina aby ustawił dlań bardziej sensowne prawa dostępu (na przykład 755).

Oto wyciąg z mojego skryptu cyrload, który ustawia tryb cyrylicy dla konsoli linuxowej.

  if [ notset.$DISPLAY != notset. ]; then
      echo "`basename $0`:  nie działa pod X"
      exit
  fi

  loadkeys /usr/lib/kbd/keytables/ru.map
  setfont /usr/lib/kbd/consolefonts/Cyr_a8x16
  mapscrn /usr/lib/kbd/consoletrans/koi2alt
  echo -ne "\033(K"              # magiczna sekwencja
  echo "Użyj prawego Ctrl aby zmienić tryb"

Pozwól mi to nieco wyjaśnić. Ładujesz odpowiednie mapowanie klawiatury. Następnie ładujesz font odpowiadający zestawowi znaków Alt. Później, aby móc poprawnie wyświetlać tekst w KOI-8, ładujesz tablicę przekodowywania ekranowego. Dokonuje ona translacji niektórych znaków z górnej połówki kodowania na kodowanie Alt. Kluczowe znaczenie ma słowo 'niektóre' - nie wszystkie znaki podlegają translacji, dlatego też niektóre z nich, jak pseudograficzne znaki IBM, trafiają na ekran niezmodyfikowane i wyświetlają się poprawnie, ponieważ są one kompatybilne z kodowaniem Alt, w przeciwieństwie do KOI-8. Aby się upewnić, uruchom mc i udawaj że jesteś znów w MS-DOS 3.3...

W końcu, owa magiczna sekwencja jest ważna, ale nie mam żadnego pojęcia co takiego robi [resetuje konsolę i mapy odwzorowań; patrz Keyboard-HOWTO - przyp. GSN]. Pożyczyłem/podkradłem ją z German-HOWTO jeszcze w 1994, kiedy było no chyba jedynym HOWTO zorientowanym na języki narodowe. Jeśli masz jakiś pomysł co do tej magicznej sekwencji, powiadomij mnie, proszę.

Dla tych purystów którzy nie chcą próbować kodowania Alt dołączam jeszcze jedną wersję powyższego skryptu, używającą rdzennych fontów KOI-8.

  if [ notset.$DISPLAY != notset. ]; then
      echo "`basename $0`:  cannot run under X"
      exit
  fi

  loadkeys /usr/lib/kbd/keytables/ru.map
  setfont /usr/lib/kbd/consolefonts/koi-8x16
  echo "Użyj prawego Ctrl aby zmienić tryb"

Nie spodziewaj się jednak ładnych ramek w swoich okienkowych aplikacjach tekstowych.

Chcesz to pewnie teraz wypróbować. Ustaw bash lub tcsh jak trzeba, uruchom je ponownie, potem naciśnij prawy klawisz Ctrl i upewnij się że otrzymujesz prawidłowe znaki cyrylicy. Klawisz 'q' musi dawać rosyjskie 'krótkie i', w generować 'c' itd.

Jeśli coś pokręciłeś, najlepszą rzeczą jest przywrócenie ustawień oryginalnych (tj. amerykańskich). Wykonaj następujące komendy:

  loadkeys /usr/lib/kbd/keytables/defkeymap.map
  setfont /usr/lib/kbd/consolefonts/default8x16

UWAGA: niestety sterownik konsoli nie jest w stanie zachować swojego statusu (a przynajmniej nie w prosty sposób) podczas uruchamiania X Windows. Dlatego, kiedy wyjdziesz z X (albo przełączysz zeń na konsolę), będziesz musiał ponownie załadować rosyjski font konsolowy.

3.2 Konsola FreeBSD

Nie używam FreeBSD, tak więc nie mogłem przetestować poniższej informacji. Trzeba zacząć od tego że wszystkie dane w tej sekcji należy traktować jako wskaźniki. Strona domowa projektu FreeBSD może mieć jakieś informacje na ten temat. Innym dobrym źródłem jest grupa newsowa relcom.fido.ru.unix. Sprawdź także zasoby wyliczone w sekcji 11.

W każdym razie, oto co Ilja K. Orechow sugeruje zrobić aby konsola FreeBSD mówiła po rosyjsku:

  1. dodaj w /etc/sysconfig:
         keymap=ru.koi8-r
         keyrate=fast
         # UWAGA: ^[ poniżej to pojedynczy znak kontrolny [ESC]
         keychange="61 ^[[K"
         cursor=destructive
         scrnmap=koi8-r2cp866
         font8x16=cp866b-8x16
         font8x14=cp866-8x14
         font8x8=cp866-8x8
    
  2. w /etc/csh.login:
         setenv ENABLE_STARTUP_LOCALE
         setenv LANG ru_SU.KOI8-R
         setenv LESSCHARSET latin1
    

3.3 System X Window

Podobnie jak tryb konsoli, środowisko X również wymaga nieco konfiguracji. Zawiera się w niej ustawienie trybu wprowadzania i Xowych czcionek. Oba aspekty omówione są poniżej.

Xowe czcionki

Po pierwsze zdobyć musisz kolekcję czcionek posiadających znaki cyrylicy w odpowiednich miejscach.

Jeśli używasz najnowszej dystrybucji X (lub XFree86), istnieje szansa że masz już takie czcionki. W końcu 1995 X Windows System włączył zestaw czcionek cyrylicowych, stworzonych przez Cronyxa. Zapytaj swojego administratora systemu, albo jeśli to ty nim jesteś, sprawdź swój system, to jest:

  1. Uruchom xlsfonts | grep koi8. Jeśli wyliczono jakieś czcionki, twój X-serwer już o nich wie.
  2. W przeciwnym razie wykonaj
    find /usr -name crox\*.pcf\*
    
    aby znaleźć miejsce czcionek cyrylicowych na serwerze. Będziesz musiał włączyć te czcionki dla X-serwera, jak wyjaśniam poniżej.

Jeśli nie znalazłeś takich fontów zainstalowanych, będziesz musiał to sam zrobić.

Istnieje pewna rozbieżność co do czcionek. XFree86 twierdzi że kolekcję czcionek rosyjskich zamieszczonych w dystrybucji stworzył Cronyx. Niemniej na sieci znaleźć można inne czcionki cyrylicowe Cronyxa (np. na ftp.klae.su), znane jako pakiet xrus (nie myl go z programem xrus, który używany jest do ustawienia układu klawiatury cyrylicy). Na szczęście ten drugi został ostatnio przemianowany na xruskb. xrus ma mniej czcionek niż kolekcja w XFree86 (38 wobec 68), ale te drugie czcionki nie chciały działać z moim ustawieniem Netscape - dawały mi jakąś strasznie dużą czcionkę w pasku menu. Pakiet xrus nie stwarzał tego problemu.

Sugerowałbym ściągnięcie i wypróbowanie obydwu. Wybierz ten który bardziej ci się podoba. Mam także zamiar wkrótce stworzyć pakiety RPM dla obu kolekcji i podładować je do ftp.redhat.com oraz mojego FTP.

Istnieją także starsze rzeczy, na przykład pakiet VakuFonts, stworzony przez Sergieja Wakulenko ( mailto:vak@cronyx.ru), który tworzył podstawę dla tego w dystrubucji X. Istnieją też inne. Ważną rzeczą jest to że nazwy czcionek w starszych kolekcjach nie całkiem ściśle stosowały się do standardów. Późniejsze są w zasadzie w porządku, ale czasami wywołać mogą różne dziwne błędy. Miałem na przykład niemiłe doświadczenia z Maple V dla Linuxa, który wykładał się tajemniczo z pakietem VakuFonts, ale działał bez zarzutu ze "standardowymi".

Zacznijmy więc od czcionek:

  1. Ściągnij odpowiednią kolekcję czcionek. Pakiet dla XFree86 można znaleźć w każdym FTP zawierającym dystrybucję Xa, na przykład możesz ją ściągnąć] bezpośrednio z FTP XFree86. Pakiet xrus znaleźć można na ftp.klae.su.
  2. Teraz kiedy masz czcionki, stwórz dla nich jakiś katalog. Zwykle złym pomysłem jest wsadzanie nowych czcionek do już istniejącego katalogu. Umieść je więc w, powiedzmy, /usr/lib/X11/fonts/cyrillic dla instalacji całosystemowej, albo po prostu utwórz katalog prywatny dla użytku osobistego.
  3. Jeśli nowe czcionki są w formacie BDF (pliki *.bdf), musisz je skompilować. Wykonaj dla każdej czcionki
           bdftopcf -o name.pcf name.bdf
    
    Jeśli twój serwer obsługuje czcionki skompresowane, skompresuj je używając programu compress
           compress name.pcf
    
    Jeśli chcesz wsadzić nowe czcionki do już istniejącego katalogu, będziesz musiał połączyć stary i nowy font.alias. w przypadku gdy oba istnieją, np.
    cat font.alias.new >> font.alias
    
    Teraz, żeby wszystko ustawić, powinieneś wykonać trzy rzeczy:
  4. Każda katalog z czcionkami w X musi zawierać listę znajdujących się w nim czcionek. Lista ta przechowywana jest w fonts.dir. Nie musisz jej tworzyć ręcznie. Zamiast tego, wykonaj
    cd <katalog_z_nowymi_czcionkami>
    mkfontdir
    
  5. Musisz teraz powiadomić X-serwer o tym katalogu z czcionkami. Masz tu kilka opcji:

Aby klienci X używali czcionek cyrylicowych, musisz ustawić odpowiednie X-zasoby. Na przykład, ustawiam czcionkę rosyjską jako domyślną w swoim  /.Xdefaults:

*font           6x13

Ponieważ moje czcionki cyrylicowe są pierwsze na liście ścieżek do czcionek (patrz rezultaty [xinit, wybrana zostanie pierwsza czcionka o aliasie 6x13)]

To prostszy przykład. Jeśli chcesz ustawić odpowiednią część X-klienta by używała czcionek cyrylicowych, musisz znaleźć nazwę zasobu (np. za pomocą editres(1x) i ustalić go albo w bazie danych zasobów, albo w linii komend. Oto kilka przykładów:

  $ xterm -font '-cronyx-*-bold-*-*-*-19-*-*-*-*-*-*-*'

  $ xfontsel -xrm '*quitButton.font: -*-times-*-*-*-*-13-*-*-*-*-*-koi8-*'

Tłumaczenie danych wprowadzanych

W najnowszych wersjach X (X11R61 i wyższych) istnieją dwie "standardowe" metody wprowadzania znaków: pierwotna, działająca z użyciem programu xmodmap, oraz nowa, zwana (Xkb) XKeyBoard. Pierwsze co powinieneś zrobić to wyłączyć metodę Xkb! Nie daj się oczarować jej możliwościami ustawienia "cyrylicznej klawiatury". Wygląda na to że ta metoda używa klawsymów zdefiniowanych w keysymdef.h. Plik ten definiuje klawsymy dla wielu języków. Jednym problemem jest to że te definicje nie mają nic wspólnego z rozszerzonym zestawem znaków ASCII - jedynym na którym potrafi wyłącznie operować większość programów! Ledwie wiem o jakiś programach które zdolne są przetworzyć klawsymy z keysymdef.h różne od ośmiobitowego ASCII. Jednakowoż naszym celem jest sprawienie żeby obsługa KOI-8 zadziałała.

Aby wyłączyć obsługę Xkb, przeglądnij sekcję Keyboard w swoim pliku XF86Config i wykomentuj wszystkie linie zaczynające się od Xkb (wielkość liter bez znaczenia). Zamiast nich, wstaw następującą linię:

  XkbDisable

Program xmodmap pozwala na dopasowanie kodów które wysyłają różne znaki i ich kombinacje. Ustawia on to opierając się na pliku zawierającym tabelę tłumaczeń.

Jeśli nie chcesz zajmować się wszystkimi tymi trikami i wolisz rozwiązanie od ręki, [bądź to] ściągnij odpowiednią tablicę xmodmapową, dostępną na wielu ftpach zajmujących się cyrylicą, na przykład ftp.kiae.su albo ftp.funet.fi. Sam sporządziłem również mapę opisaną poniżej, dostępną przez mój ftp.

Bardziej odpowiednią alternatywą jest instalacja pakietu xruskb, który pozwala ci skonfigurować większość parametrów translacji wejściowej bez potrzeby obeznania się z xmodmap.

Poniżej uproszczony opis przystosowania wejścia. Jeśli chcesz jakiś bardziej wyrafinowanych trików, zajrzyj do xmodmap(1) lub, jeszcze lepiej, poczekaj na następną wersję główną X, która miejmy nadzieję zajmie się bieżącymi problemami ze wprowadzaniem danych.

W naszym przypadku, tablica tłumaczeń powinna definiować dwie rzeczy:

Tablica znaków

Jest to w zasadzie sekwencja dyrektyw które przypisują pewne klawsymy określonym kodom klawiszy. Ogólna składnia to:

keycode kod = sym1 sym2 sym3 sym4

gdzie kod to numeryczny kod określonego klawisza na klawiaturze (zajrzyj do tablicy standardowej dla twojego systemu. W moim przypadku znajduje się ona w pliku /usr/lib/X11/etc/xmodmap.std). "Symy" definiują klawsymy wysyłane przez ten klawisz w różnych stanach. Sym1 jest klawsymem wysyłanym w stanie normalnym, sym2 odpowiada klawiszowi z naciśniętym Shift (zwykle), Sym3 i sym4 definiują klawsymy wysyłane przy aktywnym Mode_switch dla stanów normalnych i ze Shiftem odpowiednio (grupa 2, zgodnie z X Protocol Specification). W naszym przypadku aktywny Mode_switch odpowiada wprowadzaniu w trybie cyrylicy.

Wartościami powinny być albo kody szesnastkowe, albo stałe symboliczne z /usr/include/X11/keysymdef.h (bez początkowego "XK_").

Tak więc jeżeli chcielibyśmy aby klawisz odpowiadający łacińskiemu "a" wypisywał "a" rosyjskie w trybie alternatywnym, napisalibyśmy jak niżej:

keycode 38  =  a  A  0xC1 0xE1

Czytelnik ciekaw być może dlaczego nie użyłem stałych Cyrillic_a oraz Cyrillic_A, odpowiednio. Odpowiedż brzmi: nie działają one dla mnie. Nie jestem zbyt obeznany z wnętrznościami specyfikacji systemu X Windows, ale mam następujące wytłumaczenie: symboliczne stałe powyżej mają wartości 0x6C1 oraz 0x6E1 odpowiednio. Oznacza to że w rzeczywiście multijęzykowym środowisku możnaby używać ich bez ich nakładania się na inne zestawy znaków. Jednak standard KOI-8 nie jest szczególnie przystosowany do takiego środowiska. Ponieważ więc chcemy pozostać kompatybilni z przeszłością, naruszymy reguły obsługi wielu języków w systemie X Windows.

Oto tabela dla najbardziej popularnej rosyjskiej klawiatury w układzie JCUKEN (tabele te pochodzą od tych z pakietu VakuFonts).

  keysym  4             = 4               dollar          4       quotedbl
  keysym  5             = 5               percent         5       colon
  keysym  6             = 6               asciicircum     6       comma
  keysym  7             = 7               ampersand       7       period
  keysym  q             = q               Q               0xCA    0xEA
  keysym  w             = w               W               0xC3    0xE3
  keysym  e             = e               E               0xD5    0xF5
  keysym  r             = r               R               0xCB    0xEB
  keysym  t             = t               T               0xC5    0xE5
  keysym  y             = y               Y               0xCE    0xEE
  keysym  u             = u               U               0xC7    0xE7
  keysym  i             = i               I               0xDB    0xFB
  keysym  o             = o               O               0xDD    0xFD
  keysym  p             = p               P               0xDA    0xFA
  keysym  bracketleft   = bracketleft     braceleft       0xC8    0xE8
  keysym  bracketright  = bracketright    braceright      0xDF    0xFF
  keysym  a             = a               A               0xC6    0xE6
  keysym  s             = s               S               0xD9    0xF9
  keysym  d             = d               D               0xD7    0xF7
  keysym  f             = f               F               0xC1    0xE1
  keysym  g             = g               G               0xD0    0xF0
  keysym  h             = h               H               0xD2    0xF2
  keysym  j             = j               J               0xCF    0xEF
  keysym  k             = k               K               0xCC    0xEC
  keysym  l             = l               L               0xC4    0xE4
  keysym  semicolon     = semicolon       colon           0xD6    0xF6
  keysym  apostrophe    = apostrophe      quotedbl        0xDC    0xFC
  keysym  grave         = grave           asciitilde      0xA3    0xB3
  keysym  z             = z               Z               0xD1    0xF1
  keysym  x             = x               X               0xDE    0xFE
  keysym  c             = c               C               0xD3    0xF3
  keysym  v             = v               V               0xCD    0xED
  keysym  b             = b               B               0xC9    0xE9
  keysym  n             = n               N               0xD4    0xF4
  keysym  m             = m               M               0xD8    0xF8
  keysym  comma         = comma           less            0xC2    0xE2
  keysym  period        = period          greater         0xC0    0xE0

Dla używających rosyjskiego układu JAWERTY dołączyłem następującą tabelę:

  keysym  q             = q               Q               0xD1    0xF1
  keysym  w             = w               W               0xD7    0xF7
  keysym  e             = e               E               0xC5    0xE5
  keysym  r             = r               R               0xD2    0xF2
  keysym  t             = t               T               0xD4    0xF4
  keysym  y             = y               Y               0xD9    0xF9
  keysym  u             = u               U               0xD5    0xF5
  keysym  i             = i               I               0xC9    0xE9
  keysym  o             = o               O               0xCF    0xEF
  keysym  p             = p               P               0xD0    0xF0
  keysym  bracketleft   = bracketleft     braceleft       0xDB    0xFB
  keysym  bracketright  = bracketright    braceright      0xDD    0xFD
  keysym  a             = a               A               0xC1    0xE1
  keysym  s             = s               S               0xD3    0xF3
  keysym  d             = d               D               0xC4    0xE4
  keysym  f             = f               F               0xC6    0xE6
  keysym  g             = g               G               0xC7    0xE7
  keysym  h             = h               H               0xC8    0xE8
  keysym  j             = j               J               0xCA    0xEA
  keysym  k             = k               K               0xCB    0xEB
  keysym  l             = l               L               0xCC    0xEC
  keysym  z             = z               Z               0xDA    0xFA
  keysym  x             = x               X               0xD8    0xF8
  keysym  c             = c               C               0xC3    0xE3
  keysym  v             = v               V               0xD6    0xF6
  keysym  b             = b               B               0xC2    0xE2
  keysym  n             = n               N               0xCE    0xEE
  keysym  m             = m               M               0xCD    0xED
  keysym  backslash     = backslash       bar             0xDC    0xFC
  keysym  grave         = grave           asciitilde      0xC0    0xE0
  keysym  equal         = equal           plus            0xDE    0xFE
  keysym  3             = 3               numbersign      3       0xDF
  keysym  4             = 4               dollar          4       0xFF

Zasady przełączania trybów

Jest to zasadniczo część konfiguracji Xowej cyrylicy wymagająca najwięcej wiedzy. Zdefiniować powinieneś warunki w których tryb bieżący przełączany jest między trybem zwykłym i cyrylicy. Dzięki mądremu zaprojektowaniu translacji wejścia w X, jest ona nieprzenośna, nieelastyczna, niekompletna i ogólnie mówiąc do kitu. Nic dziwnego że ludzie przenoszą się na MS Windows.

Obecnie dużo się dzieje w rozwijaniu XFree86 w ogólności i modelu wejścia w X w szczególności. Rezultat jest taki że twoja konfiguracja może działać z jedną wersją XFree86 i nie działać z inną. Co gorsza, czasami rzeczy różnią się między różnymi serwerami w tej samej dystrybucji.

Najpierw opiszę moje ustawienia, które w obecnej chwili działają dla mnie. Pracuję w XFree86 3.3, serwer SVGA. W moim pliku XF86Config (w dystrybucji RedHata umieszczony jest on w /etc/X11, w sekcji "Keyboard" mam następujące dyrektywy:

Istnieją dwa sposoby osiągnięcia tego w Linuxie. Jedna jest specyficzna dla XFree86, podczas gdy druga jest bardziej ogólna (nie za bardzo może, jak i pokażę niżej).

     LeftAlt         Meta
     RightAlt        ModeShift
     ScrollLock      ModeLock
     RightCtl        Control

UWAGA: Metoda ustawiania reguł przełączania trybów poprzez plik XF86Config jest specyficzna dla XFree86. Nie będzie ona działać w innych wersjach X.

Teraz ładuję tabelę opisaną w poprzedniej sekcji i zachowaną w jakimś pliku używając narzędzia xmodmap(1x):

  xmodmap  <plik_z_tabelą>

Teraz mam możliwość zaznaczenia trybu wprowadzania cyrylicy używając prawego klawisza Alt oraz przełączenia na cyrylicę i z powrotem używając ScrollLock. Zdziwisz się jeśli zobaczysz że ani CapsLock ani klawisze Control nie działają w trybie wprowadzania cyrylicy. Cóż, powiem to raz jeszcze: model wejścia X jest do kitu!

Resztę tej sekcji zajmuje zwięzły opis zwykłej konfiguracji translacji wejścia w X. Działała ona dla starszych wydań XFree86, ale teraz wykazuje rozmaite problemy. Pozostawiłem ją tutaj, tak aby co bardziej ciekawi z was mogli spróbować części tego i zużytkować to.

Powinieneś zrobić co następuje:

Teraz klawisz do którego przypisany jest ModeShift będzie działał jako przełącznik trybów. Oznacza to że gdy jest przyciśnięty, klawiatura znajduje się w trybie alternatywnym.

Co więcej, jeśli dodasz klawsym Mode_lock do tego układu, będzie on ustawiał na stałe tryb alternatywny.

Uwaga: są jednak pewne problemy. Siergiej Wakulenko (vax@cronyx.com) wskazał że różne implementacje X-serwerów mają różne zasady przypisywania przełączników trybu (np. niektóre serwery ograniczają zestaw klawiszy które mogą działać w trybie przełącznika do, powiedzmy, CapsLock, NumLock oraz ScrollLock). Na szczęście ma się to zmienić w następnym wydaniu systemu X Windows. Po szczegóły patrz specyfikacja X Protocol.

Niestety nie udało mi się zmusić CapsLock aby miał tą samą funkcjonalność w trybie alternatywnym, konkretnie aby na stałe włączał duże litery. Wydaje mi się że nie można tego dokonać z powodu idiotycznego zaprojektowania translacji wejścia w X. Jeśli się mylę, proszę mnie poprawić.

Zobaczmy przykład. Załóżmy że chce się używać prawego Alt jako przełącznika trybów i ScrollLock do ustawiania trybu na stałe. Najpierw powinno się sprawdzić domyślny układ modyfikatorów. Osiąga się to uruchamiając xmodmap bez argumentów.

       $ xmodmap

       xmodmap:  up to 2 keys per modifier, (keycodes in parentheses):

       shift       Shift_L (0x32),  Shift_R (0x3e)
       lock        Caps_Lock (0x42)
       control     Control_L (0x25)
       mod1        Alt_L (0x40),  Alt_R (0x71)
       mod2        Num_Lock (0x4d)
       mod3
       mod4
       mod5

Zgodnie z powyższym, plan ataku wygląda jak następuje:

  1. usunąć klawisz Alt_R z klawsymu mod1
  2. przypisać klawsym Mode_switch klawiszowi Alt_R
  3. przypisać klawsym Scroll_Lock do kodu klawisza 78 (kodu rzeczywistego ScrollLock)
  4. dodać Mode_switch do nieużywanego klawsymu mod3 i
  5. dodać klawsym Scroll_Lock do mod3

Oto więc rozwiązanie:

  remove mod1 = Alt_R
  keysym Alt_R = Mode_switch
  keycode 78 = Scroll_Lock
  add mod3 = Mode_switch
  add mod3 = Scroll_Lock

Jeśli użyjesz tego drugiego rozwiązania, możesz połączyć tabelę i dyrektywy dotyczące trybów w swoim pliku ~/.Xmodmap.

Pliki takie dostarczane są przeważnie razem z różnymi pakietami do obsługi cyrylicy pod X. Dobrym przykładem są tabele w doskonałym pakiecie Siergieja Wakulenki, opisanym wyżej.

Gdy już masz taki plik zawierający tabelę, powinieneś wykonać komendę:

xmodmap filename

Plik dla całego systemu to /usr/lib/X11/xinit/xinitrc; osobisty to albo ~/.xinitrc, albo ~/.Xclients, albo ~/.xsession, zależnie od tego co masz [zainstalowane].

UWAGA: Jeśli xmodmap narzeka na twoją tabelę, spróbuj załadować najpierw domyślną. Tabela domyślna znajduje się zwykle w /usr/lib/X11/etc/xmodmap.std.

4. Obsługa cyrylicy w LaTeXie

W tej sekcji opiszę kilka sposobów nakłonienia TeXa i LaTeXa do składania tekstu w cyrylicy. Istnieje kilka sposobów, które różnią się wyrafinowaniem instalacji i wygodą w obsłudze. Dla przykładu, jedną z możliwości jest zacząć bez żadnej wstępnej instalacji i użyć fontów cyrylicowych Washington AMSTeX. Z drugiej strony, możesz zainstalować pakiet LaTeX, który zapewnia wysoki stopień ustawień dotyczących cyrylicy. Mam pewne doświadczenia z dwoma pakietami. Pierwszy to pakiet cmcyralt autorstwa Wadima W. Żytnikowa ( mailto:vvzhy@phy.ncu.edu.tw) i Aleksandra Harina ( harin@lourie.und.ac.za), a ten drugi to pakiet LH autorstwa CyrTUG [Cyrillic TeX Users Group] ze stylami i dzieleniem wyrazów dla LaTeX2e autorstwa Sergieja O. Naoumowa ( serge@astro.unc.edu). Opiszę obydwa.

Zauważ że dostępne są dwie wersje LaTeXa : 2.09 jest wersją starszą, podczas gdy 2e jest nowszym wydaniem pre-3.0. Jeśli używasz LaTeXa 2.09, przestaw się szybko na 2e. Ten drugi pozostaje kompatybilny z tym pierwszym, ale ma o wiele więcej funkcji. Miejmy nadzieję że wersja 3 zostanie wkrótce wypuszczona. Opiszę ustawienia dla LaTeXa 2e.

Uwaga: oba te pakiety wymagają aby tekst w cyrylicy składany był z użyciem zestawu znaków Alt, nie KOI-8! Spowodowane jest to przyczynami historycznymi, ponieważ twórcy tych pakietów pracowali byli z EmTeXem - MS-DOSową wersją TeXa (nie wiedzieli jeszcze o Linuxie :-). Przestawienie ich na KOI-8 wymaga nieco wysiłku i spodziewane jest niebawem. Na razie, używaj jakiegoś narzędzia do konwersji tekstu rosyjskiego z KOI-8 do Alt. Patrz sekcja "Narzędzia użytkownika".

4.1 Używanie Washington Cyryliic

Pakiet ten został stworzony przez American Mathematics Society w celu uzupełnienia dokumentów o odnośniki po rosyjsku. Dlatego też autorzy nie byli zbyt uważni, a czcionki wyglądają raczej niezręcznie. Pakiet ten określa się zwykle jako 'całkiem kiepski pakiet cyrylicy dla TeXa'.

Niemniej jednak omówimy go, ponieważ jest on bardzo łatwy w użyciu i nie wymaga żadnej konfiguracji - kolekcja ta dostarczana jest z większością dystrybucji TeXa.

Oczywiście nie będziesz mógł sobie pozwolić na taki luksus jak automatyczne przenoszenie wyrazów, ale jednak...

  1. Poprzedź swój dokument następującymi dyrektywami:
    \input cyracc.def
    \font\tencyr=wncyr10
    \def\cyr{\tencyr\cyracc}
    
  2. Teraz aby napisać literę w cyrylicy, wprowadzasz
    \cyr
    
    i używasz odpowiedniej litery łacińskiej albo komendy TeXa. I tak małe litery rosyjskiego alfabetu wyrażają następujące kody: a b v g d e \"e zh z i {\u l} k l m n o p q r s t u f kh c ch sh shch {\cprime} y {\cdprime} \'e yu ya

Jest bardzo niewygodnym przekonwertować twoje teksty rosyjskie na takie kodowanie, lecz proces można zautomatyzować. Program translit (sekcja 11) obsługuje wynik w postaci TeXowej.

4.2 Pakiet KOI-8 dla LaTeXa

Pojawił się jakiś nowy pakiet teTeX-rus. Podobno obsługuje on zestaw znaków KOI-8 i ma wszystkie podstawowe rzeczy wymagane dla TeXa i LaTeXa. Osobiście jeszcze go nie próbowałem, chociaż słyszałem o pomyślnym go używaniu.

4.3 Używanie pakietu cmcyralt dla LaTeXa

Pakiet cmcyralt znaleźć można na każdym z węzłów CTAN (Comprehensive TeX Archive Network), jak ftp.dante.de. Powinieneś zdobyć dwie kolekcje: kolekcję fontów z [katalogu] /fonts/cmcyralt oraz style i reguły dzielenia wyrazów z [katalogu] /macros/latex/contrib/others/cmcyralt.

Uwaga: upewnij się że masz zainstalowany pakiet Sauter, bowiem cmcyralt potrzebuje z niego niektórych fontów. Pakiet ten możesz również zdobyć z węzła CTAN.

Powinieneś teraz zrobić co następuje:

  1. Umieścić nowe czcionki w drzewie czcionek TeXa. W moim systemie (Slackware 2.2) stworzyłem podkatalog cmcyralt w /usr/lib/texmf/fonts/cm/. Utwórz w nim podkatalogi src, tfm i vf. Umieść tam pliki .mf, .tfm oraz .vf, odpowiednio.
  2. Umieść pliki sterowników czcionek (*.fd) z archiwum stylów w odpowiednim miejscu (w moim przypadku był to /usr/lib/texmf/tex/latex/fd).
  3. Umieść pliki stylów (*.sty) w odpowiednim katalogu stylów LaTeXa (w moim przypadku /usr/lib/texmf/tex/latex/sty).

Teraz konfiguracja dzielenia wyrazów. Wymaga to przerobienia pliku bazowego LaTeXa.

  1. Plik hyphen.cfg zawiera dyrektywy dla dzielenia wyrazów w angielskim i rosyjskim. Wytnij to co tyczy się rosyjskiego i umieść to w pliku konfiguracji dzielenia wyrazów LaTeXa, lthyphen.ltx. W moim przypadku plik ten znajdował się w /usr/lib/texmf/tex/latex/latex-base.
  2. W tym samym katalogu umieść plik rhyphen.tex. Potrzebny jest on do stworzenia nowego pliku bazowego. Później możesz go usunąć.
  3. Wykonaj w tym katalogu make. Nie zapomnij stworzyć odnośnika z Makefile do Makefile.unx. Podczas wykonywania make sprawdź komunikaty. Powinno się pojawić:
    Loading hyphenation patterns for Russian
    

Jeśli wszystko pójdzie poprawnie, otrzymasz w tym katalogu nowy latex.fmt. Wstaw go w odpowiednie miejsce, tam gdzie znajdował się poprzedni (np. /usr/lib/texmf/ini/). Nie zapomnij zachować starego pliku!

Otoż i to. Instalacja gotowa. Spróbuj przetworzyć przykłady z archiwum stylów. Jeśli możesz stworzyć pliki postscriptowe bez żadnych problemów, wszystko jest w porządku. Teraz aby używać cyrylicy w LaTeXie, wstaw na początek swojego dokumentu poniższą dyrektywę:

\usepackage{cmcyralt}

Po szczegóły patrz plik README w archiwum stylów cmcyralt.

Uwaga: jeśli masz problemy z przykładami, założywszy że instalowałeś prawidłowo, to prawdopodobnie twój system TeX nie został zainstalowany poprawnie. Na przykład, przy mojej pierwszym teście każda próba stworzenia plików .pk dla czcionek rosyjskich nie udawała się (etap MakeTeXPK). Dokładne przyjrzenie się plikom wykryło pewien niejawny konflikt między konfiguracjami METAFONT localfont i ljfour. Kiedyś było to działało, ale rozpadło się po instalacji cmcyralt. Skontaktuj się ze swoim lokalnym guru od TeXa - TeX jest bardzo (czasami za bardzo) złożony aby rekonfigurować go bez wcześniejszej znajomości.

4.4 Pakiet CyrTUG

Pakiet CyrTUG uzyskać możesz z archiwum SunSite ( ftp://sunsite.unc.edu/pub/academic/russian-studies/Software). Zrzuć stamtąd pliki CyrTUGfonts.tar.gz, CyrTUGmacro.tar.gz i hyphen.tar.Z.

Proces instalacji nie różni się od opisanego powyżej.

5. Cyrylica w PostScriptcie

Eksperci powiadają że PostScript jest łatwy. Nie potrafię osądzić - mam zbyt wiele rzeczy do nauczenia się aby poświęcić trochę czasu na naukę PostScriptu. Spróbuję więc opisać moje smutne z nim doświadczenia. Mile widziałbym wsparcie od każdego kto wie więcej na ten temat ode mnie (ok. 99% ludzkości).

Zasadniczo aby wydrukować tekst z użyciem PostScriptu, musisz się upewnić co do następujących rzeczy:

Nie ma rozwiązania na tyle ogólnego aby je polecić jako środek ostateczny, Spróbuję nakreślić różne sposoby radzenia sobie z różnymi problemami odnośnie tematu.

Jednym ze sposobów podejścia do konfiguracji cyrylicy jest użycie Ghostscripta. Ghostscript (lub po prostu gs w nowomowie) to darmowy (no, quasi-darmowy) interpreter PostScriptu. Ma on wiele zalet, pomiędzy nimi:

To co ważne w naszym konkretnym przypadku to to że gdy już raz skonfigurujemy Ghostscripta, możemy za jego pomocą dokonywać całości drukowania, eliminując tym samym ekstra konfigurację dla innych urządzeń postscriptowych (np. HP Laserjet IV).

5.1 Dodawanie czcionek cyrylicowych do Ghostscripta

Jest to ważne, ponieważ zapewne nie będziesz chciał polegać na innych programach przy umieszczaniu w wynikowym postscripcie czcionek cyrylicowych. Zamiast tego dodajesz je do gs. i po prostu zmuszasz programy aby generowały wyjście w cyrylicy kompatybilne z czcionkami.

Aby dodać do gs nową czcionkę (w formacie .pfa lub .pfb), musisz:

  1. Dodać ją do katalogu czcionek gs (np. /usr/lib/ghostscript/fonts).
  2. Dodać odpowiednie nazwy i aliasy dla czcionki w pliku Fontmap w katalogu gs

Ostatnio pojawił się porządny zestaw czcionek cyrylicowych dla GhostScripta. Znajduje się on na ftp.kapella.gpi.ru. Ma on nawet konieczny wpis który trzeba dodać do pliku Fontmap. Ściągnąć musisz zawartość katalogu /pub/cyrillic/psfonts/. Plik README opisuje niezbędne szczegóły.

6. Drukowanie

Drukowanie zawsze jest rzeczą zawiłą. Istnieją różne drukarki różnych producentów z różnymi możliwościami. Nawet co do drukowania w "gołym" formacie nie ma jednorodnego rozwiązania (odnosi się to nie tylko do Unixa, ale również do innych systemów operacyjnych).

Drukarki mają różne języki kontrolne, a często mają bardzo różne poglądy na obsługę innych takich języków. Dobrą wiadomością jest to że jeden taki język kontrolny wydaje się być uznawany za de facto standard dla opisywania zadań związanych z drukiem - to język PostScript, stworzony przez Adobe Corporation.

Innym problemem jest różnorodność wymagań związanych z usługą drukowania. Na przykład, czasem chcesz po prostu wydrukować kawałek programu w C z rosyjskimi komentarzami, więc nie potrzebujesz żadnego ładnego drukowania - po prostu czysty wydruk ASCII w pojedynczej czcionce. Innym razem, kiedy projektujesz pocztówkę dla swojej dziewczyny, będziesz zapewne musiał ją złożyć używając różnych czcionek, i tak dalej. Będzie to wymagało z pewnością więcej wysiłku w kwestii ustawienia obsługi cyrylicy.

Aby podołać pierwszemu zadaniu będziesz musiał po prostu zmusić swoją drukarkę aby rozumiała jeden font cyrylicowy i (być może) zainstalować jakiś program filtrujący, który będzie wypisywał dane w odpowiednim formacie. Aby dokonać tego drugiego [zadania], będziesz musiał nauczyć swoją drukarkę różnych czcionek i mieć specjalny software.

Istnieje także sytuacja pośrodku, gdy masz program który wie jak wygenerować i fonty i odpowiednie dane dla drukarki, możesz więc, powiedzmy, wykonać parę ładnych wydruków kodu źródłowego bez wyrafinowanych systemów obróbki tekstu.

Wszystkie te opcje zostaną mniej lub bardziej omówione poniżej.

6.1 Ładowanie czcionek cyrylicowych do drukarki niepostscriptowej

Jeśli masz starą dobrą drukarkę igłową i potrzebujesz tylko wydrukować czysty tekst w KOI-8, spróbuj poniższego:

  1. Znajdź odpowiednią czcionkę KOI-8 dla swojej drukarki. Sprawdź kolekcje MS-DOSowe w Internecie (na przykład archiwum SimTel, ftp. simtel.net)
  2. Dowiedz się z instrukcji jak załadować czcionkę do drukarki i, możliwie, napisz prosty program który to robi
  3. Uruchom ten program z odpowiedniego pliku .rc w czasie startu systemu.

Tak więc mając znaki cyrylicowe w górnej połówce zestawu znaków drukarki będziesz mógł drukować teksty po rosyjsku bez żadnych ceregieli.

Alternatywnie z czcionkami KOI-8 możesz użyć czcionek Alt. Są ku temu dwa powody:

Niemniej w tym przypadku będziesz musiał przekodować swoje teksty z KOI-8 na Alt przed posłaniem ich do drukarki. Jest to całkiem łatwe, ponieważ pełno jest programów które to robią (patrz "translit", na przykład), tak więc wystarczy że właściwie wywołasz ten program w polu if /etc/ printcap. Na przykład dla programu translit napisać możesz:

if=/usr/bin/translit -t koi8-alt.rus

Patrz printcap(5) po szczegóły.

6.2 Drukowanie różnymi czcionkami

Jednym świetnym sposobem poradzenia sobie z różnymi czcionkami i drukarkami jest użycie TeXa. Sterowniki TeXa zajmują się wszelkimi detalami, więc skoro już raz nauczyłeś TeXa rozumieć czcionki cyrylicowe, sprawa załatwiona.

Inną możliwością jest użycie PostScriptu. Zdecydowałem się poświęcić temu cały rozdział, ponieważ nie jest to łatwe.

W końcu, są i inne edytory tekstów które mają sterowniki drukarek. Nigdy nie próbowałem niczego poza TeXem, więc nie mogę niczego zasugerować

6.3 Konwersja tekstu do TeXa

Jeśli tym czego potrzebujesz jest wydrukowanie tekstu w ASCII bez żadnego dodatkowego przetworzenia, możesz spróbować użyć kilku programów które przerobią twój tekst w cyrylicy na gotowe do przetworzenia plik TeXa. Jednym z najlepszych programów do tego celu jest translit. W tym przypadku nie musisz się nawet kłopotać instalowaniem czcionek cyrylicowych dla TeXa, ponieważ translit używa pakietu Washington Cyriliic, który włączony jest do większości dystrybucji TeXa (a może się mylę?)

6.4 Konwersja tekstu do postscriptu

Czasami masz tekst w czystym KOI-8 i chcesz go wydrukować tylko po to żeby mieć go na papierze. Jedną z najprostszych metod osiągnięcia tego jest użycie specjalnych programów konwertujących tekst do postscriptu.

Istnieje pewna liczba programów dokonujących takiej konwersji. Osobiście preferuję a2ps. Stworzony początkowo jako prosty konwerter tekstu do postscriptu, stał się on dużym i wysoce konfigurowalnym programem z wieloma opcjami, pozwalając ci obsłużyć różne wielkości strony, podświetlanie składni itp. Inne narzędzie (obecnie dostępne jako część projektu GNU) to enscript

Głównym problemem z takimi programami jest to że nie wiedzą one nic o czcionkach cyrylicowych. Właśnie rozważam możliwość zawierania w nich czcionek cyrylicowych, tak aby rozumiały cyrylicę.

Niemniej cała ta powyższa gadanina byłaby bezcelowa bez żadnej rzeczywistej rady. Oto więc ona:

Jak zwykle, GNU wygrywa. GNUsowy program enscript zaprojektowany został do konwersji tekstu na postscript i ma doskonałą obsługę nie-ASCIIowych zestawów znaków. Nie zawiera on cyrylicowych czcionek postscriptowych, ale bardzo łatwo je zdobyć, jak wyjaśniono poniżej (podziękowania dla Michaela Van Canneyta).

  1. Zainstaluj najnowszy enscript. Jak na razie najświeższą wersją jest 1.5. Możesz ściągnąć go albo z ftp GNU, albo jako pakiet RPM z ftp RedHata.
  2. Teraz, jeśli masz szczęście być użytkownikiem RedHat Linuxa, ściągnij i zainstaluj czcionkę Cyriliic Textbook (ftp://ftp.redhat.com/pub/ contrib/i386/enscript-fonts-koi8-1.0.1-i386.rpm)
  3. Jeśli nie używasz RPM, ściągnij plik textbook.tar.gz z Cyrillic Software Collection na ftp://sunsite.unc.edu/pub/academic/russian-studies/Software/). Rozpakuj go do katalogu w którym zainstalowane są czcionki enscripta. Przejdź teraz do tego katalogu i wykonaj:
    mkamfmap *.afm
    
  4. Koniec konfiguracji. Spróbuj wydrukować jakiś tekst w KOI-8 poniższą komendą:
    enscript --font=Textbook8 --encoding=koi8 jakis_plik
    

Jeśli chcesz jakiegoś szybkiego rozwiązania i nie dbasz o jakość wydruku, a wszystkim czego potrzebujesz jest cyrylica na papierze, spróbuj pakietu rtxt2ps. Jest to bardzo prosty i niewyszukany konwerter tekstu do postscriptu. Jakość wydruku jest nienajlepsza (albo, mówiąc szczerze, całkiem zła), ale robi on to co powinien.

Jeszcze inną deską ratunku jest przerobiona wersja a2ps. Jest ona dość stara, więc nie spodziewaj się tych wszystkich fajerwerków z nowszych wersji. Ale drukuje ona tekst w cyrylicy, a jakość wydruku jest znacząco lepsza niż ta rtxt2ps. Doświadczyłem przy niej jednak różnych rodzajów problemów, np. nie mogłem wydrukować więcej niż dwóch stron (???)

7. Konfiguracja różnych narzędzi

Ogólnie, aby przestawić pewne narzędzia w trybie operowania cyrylicą wymagane jest po prostu umożliwienie danych ośmiobitowych. W kilku przypadkach wymagane jest powiedzenie aplikacji aby pokazała rozszerzone znaki ASCII w ich bazowej formie.

7.1 6.1. bash

Aby bash rozumiał ośmiobitowe znaki, powinieneś ustawić trzy zmienne, Najlepszym miejscem jest plik ~/.inputrc. Ustaw co następuje:

  set meta-flag on
  set convert-meta off
  set output-meta on

7.2 6.2. csh/tcsh

Powinienieś ustawić poniższe w .cshrc:

  setenv LC_CTYPE iso_8859_5
  stty pass8

Jeśli nie masz stty zgodnego z POSIX (niemożliwe w Linuxie), zastąp ostatnie wywołanie przez:

stty -istrip cs8

7.3 6.3. emacs

Minimalną obsługę cyrylicy w emacsie zapewnia dodanie poniższych wywołań do pliku .emacs (zakładając że zainstalowana jest obsługa zestawu znaków cyrylicy dla konsoli lub X, odpowiednio).

  (standard-display-european t)

  (set-input-mode (car (current-input-mode))
     (nth 1 (current-input-mode))
     0)

Umożliwia to użytkownikowi oglądanie i wprowadzanie rosyjskich dokumentów.

Taki tryb nie jest jednak wielką wygodą, ponieważ emacs nie rozpoznaje zwykłych komend klawiatury gdy znajduje się w trybie wprowadzania cyrylicy. Istnieje pewna liczba pakietów które używają innego podejścia. Nie polegają one na "input mode" ustalonym przez środowisko (X lub konsolę). Zamiast tego, pozwalają użytkownikowi przełączać tryb wprowadzania specjalnymi komendami emacsa, a emacs sam jest odpowiedzialny za przedefiniowanie zestawu znaków. Autor miał szansę zaznajomić się z trzema takimi pakietami. Pakiet russian.el Walerego Aleksiejewa ( mailto:ava@math.jhu.edu) pozwala użytkownikowi przełączać się między trybami cyrylicy i zwykłym oraz tłumaczyć zawartość bufora z jednego kodowania cyrylicy na drugie (co jest szczególnie użyteczne przy czytaniu tekstów przeniesionych z MS-DOS). rustable.el (nie znam niestety autora) dodaje do emacsa reguły składniowe zestawu znaków (granice słów, reguły zmiany wielkości liter itd.) Pakiety te znaleźć można w większości archiwów emacsowego Lispa.

Jedyną niewygodą jest to że emacs ciągle traktuje znaki rosyjskie jako specjalne, nie rozpoznaje więc granic słów rosyjskich i zmian wielkości liter. Aby to poprawić, musisz zmodyfikować składnię i tablice wielkości liter emacsa:

  ;; w zmiennych poniżej znajdują się śmiecie, ponieważ SGML nie lubi
  ;; znaków cyrylicy. Będziesz musiał wstawić duże i małe litery
  ;; rosyjskiego alfabetu, odpowiednio (patrz faktyczne pliki)

  (setq *russian-abc-ucase* "tu wstaw duże litery")
  (setq *russian-abc-lcase* "tu wstaw małe litery")

  (let ((i 0)
        (len (length *russian-abc-ucase*)))

       (while (< i len)
         (modify-syntax-entry (elt *russian-abc-ucase* i) "w  ")
         (modify-syntax-entry (elt *russian-abc-lcase* i) "w  ")
         (set-case-syntax-pair (elt *russian-abc-ucase* i)
                               (elt *russian-abc-lcase* i)
                               (standard-case-table))
         (setq i (+ i 1))))

Dla tego celu stworzyłem plik rusup.el który tego dokonuje, podobnie jak kilka poręcznych funkcji. Musisz załadować go w swoim ~/.emacs.

Jeszcze jeden pakiet to remap, który próbuje bardziej utypowić obsługę cyrylicy. Pakiet ten napisał Per Abrahamsen ( mailto:abraham@iesd.auc.dk), i dostępny jest on na ftp.iesd.auc.dk.

We własnej opinii, sugerowałbym zacząć od russian.el, bowiem jest on bardzo łatwy w konfiguracji i użyciu.

7.4 6.4. ispell

Istnieje dodatek rspell do pakietu GNU ispell, stworzony przez Neala Daltona (nrd@cray.com), ale doświadczyłem z nim kilku problemów próbując go zmusić do natychmiastowego działania. Spróbuj go - może tobie się poszczęści.

7.5 joe

Spróbuj opcji -asis

7.6 ksh

Co do implementacji public domain ksh, pdksh 5.1.3, możesz wprowadzać znaki ośmiobitowe tylko w trybie vi. Użyj

   set -o vi

7.7 less

Jak na razie, less nie obsługuje zestawu znaków KOI-8, ale poniższa zmienna środowiskowa załatwia sprawę:

LESSCHARSET=latin1

7.8 lynx

Od wersji 2.6 możesz wybrać odpowiednią wartość dla opcji Display Character Set.

7.9 mc (Midnight Commander)

Aby poprawnie wyświetlać znaki cyrylicy, zaznacz opcję 'full 8 bits' w menu Options/Display.

Jeśli masz problem z brzydkimi ramkami okien, zobacz sekcję ''

Off topic: jeśli chcesz zmusić mc do używania kolorów w oknie xterma, ustaw zmienną COLORTERM

COLORTERM= ; export COLORTERM

7.10 Netscape Navigator

Upewnij się że używasz wersji Netscape'a większej niż 3. Jeśli twój Netscape jest starszy, ściągnij nowszego z www.netscape.com.

Konfiguracja podstawowa

Aby móc oglądać tekst cyrylicą w większej części dokumentów HTMLowych, zrób co następuje:

UWAGA: konfiguracja ta będzie działała z większą częścią dokumentu. Jednakże nie będziesz mógł wyświetlać tekstu cyrylicą w nagłówku okna, menu i niektórych dialogach. Aby naprawić te problemy:

Konfiguracja zaawansowana

Andriej A. Czernow wie więcej niż inni o KOI-8 w ogóle i o Netscape w szczególności. Odwiedź jego doskonałą stronę o KOI-8 i ściągnij łatę do pliku zasobów Netscape, co sprawi że Netscape będzie mówiło po rosyjsku na tyle na ile może.

7.11 pine

Wstaw następującą dyrektywę do ~/.pinerc dla konfiguracji osobistej, albo do /usr/lib/pine.conf dla globalnej:

character-set=ISO-8859-5

7.12 rlogin

Upewnij się że powłoka na serwerze docelowym jest ustawiona poprawnie. Potem, jeśli twój rlogin nie działa domyślnie [prawidłowo], użyj rlogin -8.

7.13 sendmail (aka 'zguba sysadmina')

Od wersji 8 sendmail domyślnie prawidłowo radzi sobie z 8-bitowymi danymi. Jeśli nie jest tak u ciebie, sprawdź opcję EightBitMode i opcję -7 przekazywaną mailerom w twoim /etc/sendmail.cf. Patrz "Sendmail; Installation and Operation Guide" po szczegóły.

8. zsh

Używaj w ten sam sposób jak csh (patrz sekcja o csh). Plikami startowymi w tym przypadku są .zshrc oraz /etc/zshrc.

9. Użyteczne narzędzia

9.1 Narzędzia do konwersji

Istnieje pewna liczba programów zdolna konwertować z KOI-8 na Alt i z powrotem. Poszukaj w SovInformBureau albo na ftp.funet.fi listy poręcznych małych programików. Możesz też użyć specjalnego trybu emacsa (patrz sekcja o emacsie).

Szczególnie polecałbym jednakże pakiet translit. Obsługuje on wiele popularnych zestawów znaków i potrafi nawet stworzyć pliki TeXa (patrz sekcja 5.1). z tekstu rosyjskiego. Użytkownicy RedHata mają do dyspozycji translit w postaci pliku RPM.

9.2 Narzędzia programisty

Jak dotąd objaśniałem sposoby zmuszenia programów do akceptowania i wyświetlania zestawu znaków cyrylicy. Niemniej pełne przystosowanie systemu do warunków lokalnych obejmuje o wiele więcej. To co omówiono powyżej nie wystarcza. System powinien być przyjazny dla użytkownika, który niekoniecznie musi znać angielski. W mojej opinii, nie jest wielką sprawą obeznanie się z angielskim na poziomie komunikatów programów. Jednakże nie jest całkiem fair tego wymagać.

Tak więc następny poziom przystosowania wymaga aby programy były dostosowywalne do wymagań różnych języków i zwyczajów w przedstawianiu danych.

Wcześniej dokonywano tego poprzez rozwijanie pewnej abstrakcji komunikatów będących rezultatem kodu programu. Teraz ten mechanizm jest (mniej czy więcej) ustandaryzowany. I, oczywiście, istnieją jego darmowe implementacje!

Dobra wiadomość to to że GNU w końcu przyjęło sposób tworzenia zinternacjonalizowanych aplikacji. Ulrich Drepper ( mailto:drepper@ipd.info.uni-karlsruhe.de) stworzył pakiet gettext, dostępny we wszystkich repozytoriach GNU, takich jak ftp://prep.ai.mit.edu/pub/gnu/. Pozwala on tworzyć programy w sposób który łatwo można roszerzyć na obsługę wielu języków. Nie zamierzam opisywać technik programistycznych, zwłaszcza że pakiet gettext zawiera doskonały podręcznik.

Tak więc jeżeli tworzysz programy które wypisują jakieś komunikaty (a stworzyłeś kiedyś taki który by ich wypisywał?), nie leń się i włóż ociupinę (naprawdę ociupinę) wysiłku w uczynienie swojego programu świadomym locale.

Prośba o współpracę: jeśli chcesz nauczyć się pakietu gettext i równocześnie dołożyć coś do projektu GNU; lub nawet jeśli tylko chcesz dołożyć, możesz to zrobić! GNU się internacjonalizuje, więc wszystkie narzędzia przerabiane są na świadome locale. Problemem jest przetłumaczenie komunikatów z angielskiego na rosyjski (i inne języki, jak wam się podoba). Zasadniczo, to co trzeba zrobić to zdobyć specjalny plik .po, składający się z angielskich komunikatów konkretnego narzędzia i dołączyć do każdego komunikatu jego odpowiednik po rosyjsku. W ostatecznym rozrachunku sprawi to że system będzie odzywał się po rosyjsku, jeśli zechce tego użytkownik! Po więcej szczegółów i dalsze wskazówki skontaktuj się z Ulrichem Drepperem ( mailto:drepper@ipd.info.uni-karlsruhe.de)

10. Wykaz użytecznych zasobów

Strona domowa a2ps: http://www-inf.enst.fr/~demaille/a2ps.html

Strona A. Czernowa o KOI-8: http://www.nagual.ru/~ache/koi8.html

Ogólna informacja o Linuxie: http://sunsite.unc.edu/mdw/linux.html

Moja kolekcja rzeczy związanych z konfiguracją cyrylicy: ftp://netvision.net.il/pub/home/b/belikoff/cyrillic/

Kolekcja cyrylicowa na ftp.kiae.su: ftp://ftp.kiae.su/cyrillic

Kolekcja cyrylicowa na ftp.relcom.ru: ftp://ftp.relcom.ru/cyrillic/

Kolekcja programów cyrylizujących ftp://ftp.funet.fi/pub/culture/russian/comp/

Cronyx http://www.cronyx.ru/ - twórcy czcionek cyrylicowych dla systemu X Windows.

Pakiet remap dla emacsa ftp://frp.iesd.auc.dk/

Czcionki cyrylicowe dla Ghostscripta: ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts

Czcionki cyrylicowe dla X: ftp://ftp.kiae.su/cyrillic/x11/fonts/xrus-2.1.1-src.tgz

Ghostscript: http://www.cs.wisc.edu/~ghost/index.html

GNU nenscript: ftp://ftp.prep.ai.mit.edu/pub/gnu

Informacja o Cyrlillic Software: http://sunsite.oit.unc.edu/sergei/Software/Software.html

Grupa newsowa relcom.fido.ru.unix.

RFC 1489: http://ds.internic.net/rfc/rfc1489.txt

Użyteczne pakiety obsługujące cyrylicę: ftp://sunsite.unc.edu/pub/academic/russian-studies/Software

Pakiet kbd dla Linuxa: ftp://sunsite.unc.edu/pub/Linux/system/Keyboards/

Kolekcje czcionek X: ftp://ftp.switch.ch/mirror/linux/X11/fonts/

SovInformBureau: http://www.siber.com/sib/russify/

Pakiet rusyfikujący teTeX: ftp://xray.sai.msu.su/pub/outgoing/teTeX-rus/

rtxt2ps i przerobiony a2ps: http://www.siber.com/sib/russify/converters/

Pakiet translit: ftp://ftp.osc.edu/pub/russian/translit/translit.tar.Z

Pakiet xruskb: ftp://ftp.relcom.ru/x11/cyrillic/

rspell: ftp://sunsite.unc.edu/pub/academic/russian-studies/Software/rspell.tar.gz

FTP XFree86: http://www.xfree86.org

doc-linux-pl-2002.06.14.orig/html/DNS-HOWTO.pl.html0100664000175000017500000021025706776743140020204 0ustar covencoven DNS HOWTO

DNS HOWTO

Autor: Nicolai Langfeldt janl@math.uio.no
v2.0.6, 22 Lipca 1998
Wersja polska: Leszek Urbański tygrys@fidonet.org.pl
v2.1.1, 4 Sierpnia 1998


Jak zostać małoetatowym administratorem DNS. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/.

1. Preambuła

Słowa kluczowe: DNS, bind, bind-4, bind-8, named, dialup, ppp, slip, isdn, Internet, domain, name, hosts, resolving

1.1 Legalność

(C)opyright 1995 Nicolai Langfeldt. Nie zmieniać bez zachowania praw autorskich. Dokument ten może być dowolnie rozpowszechniany dotąd, dokąd zostanie zachowana wiadomość o prawach autorskich.

1.2 Osoby pracujące nad tym dokumentem; prośba o pomoc

Chciałbym podziękować Arntowi Gulbrandsenowi, który przeczytał szkice tej pracy niezliczoną ilość razy i dostarczył wielu przydatnych sugestii. Chcę też podziękować ludziom, którzy wysyłali mi e-mailem sugestie i uwagi.

Ten dokument nigdy nie będzie ukończony - wysyłaj mi listy o twoich problemach i sukcesach, może to sprawić, że HOWTO będzie dokładniejsze. Pieniądze, komentarze i/lub pytania możesz wysyłać do janl@math.uio.no. Jeżeli wyślesz mi e-mail i będziesz żądał odpowiedzi, upewnij się, że adres zwrotny jest poprawny i działający. Proszę, przeczytaj sekcję FAQ przed wysłaniem do mnie listu.

Jeśi chcesz przetłumaczyć to HOWTO, zawiadom mnie, abym mógł śledzić, w jakich językach zostałem opublikowany, mogę też zawiadamiać cię, kiedy HOWTO będzie uaktualniane.

1.3 Dedykacja

To HOWTO jest dedykuję dla Anne Line Norheim Langfeldt. Zresztą pewnie nigdy tego nie przeczyta, bo nie jest tego rodzaju dziewczyną.

2. Wprowadzenie

Czym ten dokument jest, a czym nie.

Dla początkujących: DNS to System Nazw Domen (Domain Name System). DNS przekształca nazwy maszyn na numery IP, które są ich adresami, mapuje z nazwy na adres i odwrotnie. To HOWTO opisuje, jak zdefiniować takie mapowanie używając systemu Linux. Mapowanie to po prostu związek jednej rzeczy z drugą, w tym przypadku nazwy maszyny, jak ftp.linux.org i jej adresu IP, 199.249.150.4.

DNS jest dla początkujących (ciebie ;-)) jednym z najtrudniejszych zagadnień administracji sieci. To HOWTO wyjaśnia parę rzeczy - opisuje jak postawić prosty serwer nazw DNS, zaczynając z serwerem cache i przechodząc do ustawiania podstawowego (primary) serwera DNS dla domeny. Żeby uzyskać informację o bardziej złożnonych konfiguracjach, zobacz sekcję FAQ tego dokumentu. Jeżeli i tam nie znajdziesz potrzebnego opisu, bedziesz musiał przeczytać Prawdziwą Dokumentację. Powrócę do jej składników w ostatnim rodziale.

Zanim zaczniesz, powinieneś tak skonfigurować swoją maszynę, żebyś mógł telnetować się na nią i z niej, oraz z powodzeniem przeprowadzić wszystkie rodzaje połączeń z siecią, a zwłaszcza móc wykonać telnet 127.0.0.1 i uzyskać połączenie z własnym komputerem (przetestuj to teraz!). Potrzebne będą też poprawne: /etc/nsswitch.conf (lub /etc/host.conf), /etc/resolv.conf i /etc/hosts, jako punkt startowy, ponieważ nie będę wyjaśniał tu ich funkcji. Jeśli nie masz tego wszystkiego ustawionego i działającego, NET-3 HOWTO i/lub PPP-HOWTO wyjaśniają jak to ustawić. Przeczytaj je.

Kiedy mówię ,,twoja maszyna'', mam na myśli komputer, na którym chcesz ustawić DNS, a nie żadną inną maszynę, jaką możesz mieć, która jest związana z twoją siecią.

Przyjmuję, że nie jesteś za żadnym rodzajem ściany ognia (firewall), która blokuje zapytania (queries) o nazwy. Jeżeli jesteś, będziesz potrzebował specjalnej konfiguracji, przeczytaj sekcję FAQ.

Serwerem nazw w Unixie jest program nazywany named. Jest on częścią pakietu bind, który jest koordynowana przez Paula Vixie z Internet Software Consortium. Named jest załączony w większości dystrybucji Linuxa i zazwyczaj zainstalowany jako /usr/sbin/named. Jeżeli masz już named, możesz go prawdopodobnie używać; jeśli nie, możesz wziąć binaria z jakiegoś Linuxowego serwera ftp, lub najnowsze i najlepsze źródła z ftp.isc.org/isc/bind/src/cur/bind-8/. To HOWTO opisuje wersję 8 bind'a. Stara wersja tego HOWTO (o bind 4) jest dostępna na http://www.math.uio.no/~janl/DNS/. Jeżeli strona man named'a mówi o named.conf masz bind'a 8, a jeżeli o named.boot, bind 4. Jeśli masz 4 i obchodzi cię bezpieczeństwo, naprawdę powinieneś dokonać rozszerzenia do nowego 8.

DNS to baza danych szeroka jak sama sieć. Uważaj, co do niej wkładasz. Jeżeli włożysz do niej śmieci, ty i inni wyjmą także śmieci. Jeżeli utrzymasz swój DNS w czystości i ciągłości, będzie ci dobrze służył. Naucz się go używać, administrować i znajdować błędy, a zostaniesz kolejnym dobrym administratorem, utrzymującym sieć przed upadnięciem na kolana z powodu przeładowania niedobrym zarządzaniem.

W tym dokumencie napisałem parę wyjaśnień, które nie są całkowicie prawdziwe (jednakże są przynajmniej w połowie prawdą). Wszystko w interesie uproszczenia. Wszystko będzie (prawdopodobnie ;-)) działać, jeżeli uwierzysz w to, co mówię.

Podpowiedź: Zrób kopie zapasowe wszystkich plików, które będziesz zmieniać, żebyś mógł wrócić do starej, działającej konfiguracji, jeżeli nic się nie powiedzie.

3. Serwer nazw z pamięcią podręczną (cache)

Pierwszy krok w konfigurowaniu DNS'u, bardzo przydatny dla korzystających z modemu.

Serwer z pamięcią podręczną będzie szukał odpowiedzi na zapytania o nazwy i pamiętał odpowiedź, żebyś mógł jej użyć następnym razem, kiedy będziesz jej potrzebował. To skróci czas oczekiwania za drugim razem kiedy będziesz potrzebował nazwy, zwłaszcza jeżeli korzystasz z wolnego połączenia.

Po pierwsze, potrzebujesz pliku /etc/named.conf. Jest on czytany, kiedy named zostaje uruchamiany. Narazie powinien po prostu zawierać:


// Plik konfiguracyjny dla serwera nazw ,,caching''

options {
        directory "/var/named";

        // Odkomentowanie tego może pomóc, jeżeli musisz przejść przez
        // ścianę ognia (firewall), a coś nie działa:

        // query-source address * port 53;
};

zone "." {
        type hint;
        file "root.hints";
};

zone "0.0.127.in-addr.arpa" {
        type master;
        file "pz/127.0.0";
};

Linia directory mówi named'owi, gdzie szukać plików. Wszystkie pliki w podkatalogach będą odpowiadały tej zmiennej. A więc pz jest podkatalogiem w /var/named, czyli /var/named/pz. /var/named to odpowiedni katalog, zgodnie z Linux File system Standard.

Plik o nazwie /var/named/root.hints jest zdefiniowany w named.conf. Powinien on zawierać następujące rekordy:


.                       6D IN NS        G.ROOT-SERVERS.NET.
.                       6D IN NS        J.ROOT-SERVERS.NET.
.                       6D IN NS        K.ROOT-SERVERS.NET.
.                       6D IN NS        L.ROOT-SERVERS.NET.
.                       6D IN NS        M.ROOT-SERVERS.NET.
.                       6D IN NS        A.ROOT-SERVERS.NET.
.                       6D IN NS        H.ROOT-SERVERS.NET.
.                       6D IN NS        B.ROOT-SERVERS.NET.
.                       6D IN NS        C.ROOT-SERVERS.NET.
.                       6D IN NS        D.ROOT-SERVERS.NET.
.                       6D IN NS        E.ROOT-SERVERS.NET.
.                       6D IN NS        I.ROOT-SERVERS.NET.
.                       6D IN NS        F.ROOT-SERVERS.NET.

G.ROOT-SERVERS.NET.     5w6d16h IN A    192.112.36.4
J.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.10
K.ROOT-SERVERS.NET.     5w6d16h IN A    193.0.14.129
L.ROOT-SERVERS.NET.     5w6d16h IN A    198.32.64.12
M.ROOT-SERVERS.NET.     5w6d16h IN A    202.12.27.33
A.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.4
H.ROOT-SERVERS.NET.     5w6d16h IN A    128.63.2.53
B.ROOT-SERVERS.NET.     5w6d16h IN A    128.9.0.107
C.ROOT-SERVERS.NET.     5w6d16h IN A    192.33.4.12
D.ROOT-SERVERS.NET.     5w6d16h IN A    128.8.10.90
E.ROOT-SERVERS.NET.     5w6d16h IN A    192.203.230.10
I.ROOT-SERVERS.NET.     5w6d16h IN A    192.36.148.17
F.ROOT-SERVERS.NET.     5w6d16h IN A    192.5.5.241

BARDZO WAŻNE: W niektórych wersjach tego dokumentu zawartość powyższego pliku będzie posiadać kilka spacji albo tab przed pierwszym wypełnionym (non blank) znakiem. Nie powinny się one znaleźć w pliku. Skasuj każdą poprzedzającą spację w plikach, które wycinasz i wklejasz z tego HOWTO.

Pamiętaj, co powiedziałem o poprzedzających spacjach!

Plik opisuje główne serwery (root servers) na świecie. Dane zmieniają się z biegiem czasu i muszą być nadzorowane. Przeczytaj sekcję o nadzorze, żeby uzyskać informacje o uaktualnianiu serwera.

Następna linia w named.conf to linia primary. Wyjaśnię jej funkcję w następnym rozdziale, a teraz tylko utwórz plik 127.0.0 w podkatalogu pz:


@               IN      SOA     linux.bogus. hostmaster.linux.bogus. (
                                1       ; Numer seryjny
                                8H      ; Odświeżenie
                                2H      ; Powtórzenie
                                1W      ; Przedawnienie
                                1D)     ; Minimalny TTL
                        NS      ns.linux.bogus.
1                       PTR     localhost.

Następnie, potrzebujesz pliku /etc/resolv.conf, wyglądającego następująco:


search poddomena.twoja-domena.edu twoja-domena.edu
nameserver 127.0.0.1

Linia ,,search'' ustala, które domeny powinny być przeszukane dla jakichkolwiek nazw węzłów, z jakimi chcesz się połączyć. Linia nameserver definiuje adres twojego serwera nazw, w tym przypadku twoją własną maszynę, ponieważ tu pracuje named (127.0.0.1 wystarczy, nie ma znaczenia, czy twój komputer ma inny adres). Jeśli chcesz wyznaczyć kilka serwerów nazw, wstaw oddzielną linię ,,nameserver'' dla każdego. (Zauważ: Named nigdy nie czyta tego pliku, robi to resolver, który używa named.)

Żeby zilustrować, co ten plik robi: Jeśli klient próbuje znaleźć foo, wtedy jako pierwsze próbowane jest foo.poddomena.twoja-domena.edu, potem foo.twoja-domena.edu, a w końcu foo. Jeżeli klient próbuje szukać sunsite.unc.edu, najpierw próbowane jest sunsite.unc.edu.poddomena.twoja-domena.edu (tak, to jest głupie, ale w ten sposób działa), potem sunsite.unc.edu.twoja-domena.edu, a w końcu sunsite.unc.edu. Nie wpisuj za wielu domen w linii search, ponieważ zabiera to trochę czasu, żeby je wszystkie przeszukać.

Przykład przyjmuje, że należysz do domeny poddomena.twoja-domena.edu, twój komputer jest wtedy prawdopodownie nazwany twój-komputer.poddomena.twoja-domena.edu. Linia search nie powinna zawierać twojej TLD (Top Level Domain, Domena Najwyższego Poziomu, w tym przypadku edu). Jeżeli często łączysz się z węzłami w innej domenie, możesz dodać tą domenę do linii search w ten sposób:


search poddomena.twoja-domena.edu twoja-domena.edu inna-domena.com

i tak dalej. Oczywiście musisz wpisać prawdziwe nazwy domen zamiast podanych. Zauważ brak kropek na końcach nazw domen.

Następnie, zależnie od twojej wersji libc, musisz poprawiać albo /etc/nsswitch.conf, albo /etc/host.conf. Jeżeli już masz nsswitch.conf, będziemy poprawiać właśnie ten plik, a jeśli nie, host.conf. (NAPRAWDĘ zalecam poprawianie host.conf we wszystkich systemach, w których istnieje, np. u mnie jest i jeden i drugi - przyp. tłum.)

/etc/nsswitch.conf

Jest to długi plik, który ustala, skąd wziąć różne rodzaje typów danych, z jakiego pliku lub bazy. Zazwyczaj zawiera on na górze pomocne komentarze, które powinieneś teraz przeczytać. Potem znajdź linię zaczynającą się na ,,hosts:'' - powinna zawierać:


hosts:      files dns

Jeżeli nie ma linii zaczynającej się na ,,hosts:'', wpisz powyższą. Mówi, że programy powinny najpierw spojrzeć do pliku /etc/hosts, potem sprawdzić DNS zgodnie z resolv.conf.

/etc/host.conf

Prawdopodobnie zawiera kilka linii, jedna powinna zaczynać się na order i wyglądać następująco:


order hosts,bind

Jeżeli nie ma linii ,,order'' powinieneś ją dopisać. Mówi ona procedurom szukającym nazw, żeby najpierw zajrzeć do /etc/hosts, a potem spytać serwer nazw (który ustaliłeś w pliku resolv.conf jako 127.0.0.1).

Te dwa pliki są omówione w podręczniku man resolv(8) (wykonaj polecenie ,,man 8 resolv'') w większości dystrybucji Linuxa. Ta strona man jest według mnie całkiem możliwa do zrozumienia, a każdy, zwłaszcza administratorzy DNS, powinni ją przeczytać. Zrób to teraz - jeżeli powiesz sobie ,,później'', nigdy nie będziesz miał okazji ich przeczytać.

3.1 Uruchamianie named

Po tym wszystkim nadszedł czas, aby uruchomić named. Jeżeli używasz połączenia modemowego, połącz się najpierw. Wpisz ,,ndc start'', bez opcji, i naciśnij enter. Jeżeli to nie działa, spróbuj ,,/usr/sbin/ndc start''. Jeśli to też nie działa, zobacz sekcję FAQ. Teraz możesz przetestować swoją konfigurację. Jeżeli obejrzysz plik z komunikatami sysloga (zazwyczaj /var/adm/messages, inny katalog w którym można ich szukać to /var/log, inną nazwą pliku jest syslog) kiedy uruchamiasz named (wykonaj tail -f /var/log/messages), powinieneś ujrzeć coś takiego:

(linie kończące się na \ są kontynuowane w następnej linii)

Feb 15 01:26:17 roke named[6091]: starting.  named 8.1.1 Sat Feb 14 \
  00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named
Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0)
Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \
  (IN) loaded (serial 1)
Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo)
Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0)
Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040
Feb 15 01:26:17 roke named[6092]: Ready to answer queries.

Jeżeli pojawią się jakieś komunikaty o błędach, popełniłeś jakiś. Named powie, w którym pliku jest błąd (mam nadzieję, że jest to named.conf albo root.hints :-)). Zabij named i sprawdź plik. (jest też bardziej ,,humanitarny'' :-) od zabijania sposób - napisz ,,ndc stop'', odczekaj dłuższą chwilę i nameserver zostanie wyłączony - przyp. tłum.)

Teraz uruchom nslookup, żeby sprawdzić twoje robótki ręczne.

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

>

Jeżeli otrzymałeś takie coś, to znaczy, że działa. Miejmy nadzieję. Jeśli co innego, sprawdź wszystko od początku. Za każdym razem, kiedy zmienisz plik named.conf musisz ponownie uruchomić named komendą ndc restart.

Teraz możesz wprowadzić zapytanie. Spróbuj poszukać jakiegoś komputera blisko ciebie. pat.uio.no jest blisko mnie, na Uniwersytecie w Oslo:

> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Name:    pat.uio.no
Address:  129.240.130.16

Nslookup poprosił twojego named'a o poszukanie maszyny pat.uio.no. Połączył się wtedy z jednym z serwerów nazw w twoim pliku root.hints i zapytał stamtąd o drogę. Może to zająć troszeczkę czasu, zanim otrzymasz wynik, ponieważ szuka we wszystkich domenach, które wymieniłeś w /etc/resolv.conf.

Jeżeli zapytasz znowu o to samo, otrzymasz coś takiego:

> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Non-authoritative answer:
Name:    pat.uio.no
Address:  129.240.2.50

Zwróć uwagę na linię ,,Non-authoritative answer:'', która pojawiła się tym razem. Znaczy to, że named nie szukał nazwy w sieci, tylko popatrzył w swojej pamięci podręcznej i tam ją znalazł. Ale informacja z pamięci podręcznej może być przedawniona. Zostajesz więc poinformowany o tym (bardzo niewielkim) niebezpieczeństwie, poprzez komunikat ,,Non-authorative answer:''. Kiedy nslookup mówi to za drugim razem, kiedy pytasz o komputer, jest to pewny znak, że named zapamiętuje informacje i działa. Możesz wyjść z nslookup wydając komendę exit.

Teraz już wiesz, jak postawić przyspieszający (caching) named. Wypij piwo, mleko, lub cokolwiek innego, żeby to uczcić.

4. Prosta domena

Jak skonfigurować własną domenę.

4.1 Ale najpierw trochę czystej teorii

Zanim naprawdę zaczniemy ten rozdział, zamierzam podać ci trochę teorii o działaniu DNSu. A ty to przeczytasz, ponieważ jest to przydatne. Jeśli nie chcesz, powinieneś przynajmniej przejść przez to bardzo szybko. Przestań przeglądać, kiedy dojdziesz do opisu, mówiącego co powinieneś wstawić do pliku named.conf.

DNS to system hierarchiczny. Najwyższa pozycja to ,,.'', nazywa się ,,root''. Pod . istnieje kilka Domen Najwyższego Poziomu (Top Level Doamins, TLD), najpopularniejsze to ORG, COM, EDU i NET, ale jest jeszcze wiele innych. (np. MIL, GOV, ART, NOM, PRIV - przyp. tłum.)

Kiedy poszukiwany jest komputer, zapytanie jest przeprowadzane rekursywnie, zgodnie z hierarchią, począwszy od góry. Jeżeli chcesz znaleźć adres komputera prep.ai.mit.edu, twój serwer nazw musi znaleźć serwer obsługujący domenę edu. Pyta serwer . (zna już serwery . - po to jest plik root.hints), serwer . zwraca listę serwerów edu:

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

Zacznij pytać server root:

> server c.root-servers.net.
Default Server:  c.root-servers.net
Address:  192.33.4.12

Ustaw typ zapytania na NS (rekordy serwerów nazw):

%gt; set q=ns

Spytaj o edu:

> edu.

Końcowa kropka jest wymagana, mówi serwerowi, że edu jest pod . (to zawęża obszar poszukiwań).

edu     nameserver = A.ROOT-SERVERS.NET
edu     nameserver = H.ROOT-SERVERS.NET
edu     nameserver = B.ROOT-SERVERS.NET
edu     nameserver = C.ROOT-SERVERS.NET
edu     nameserver = D.ROOT-SERVERS.NET
edu     nameserver = E.ROOT-SERVERS.NET
edu     nameserver = I.ROOT-SERVERS.NET
edu     nameserver = F.ROOT-SERVERS.NET
edu     nameserver = G.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET      internet address = 198.41.0.4
H.ROOT-SERVERS.NET      internet address = 128.63.2.53
B.ROOT-SERVERS.NET      internet address = 128.9.0.107
C.ROOT-SERVERS.NET      internet address = 192.33.4.12
D.ROOT-SERVERS.NET      internet address = 128.8.10.90
E.ROOT-SERVERS.NET      internet address = 192.203.230.10
I.ROOT-SERVERS.NET      internet address = 192.36.148.17
F.ROOT-SERVERS.NET      internet address = 192.5.5.241
G.ROOT-SERVERS.NET      internet address = 192.112.36.4

Wynik mówi nam, że *.root-servers.net podaje edu., możemy więc dalej pytać c. Teraz chcemy wiedzieć, kto obsługuje następny poziom nazwy domeny: mit.edu.:

> mit.edu.
Server:  c.root-servers.net
Address:  192.33.4.12

Non-authoritative answer:
mit.edu nameserver = W20NS.mit.edu
mit.edu nameserver = BITSY.mit.edu
mit.edu nameserver = STRAWB.mit.edu

Authoritative answers can be found from:
W20NS.mit.edu   internet address = 18.70.0.160
BITSY.mit.edu   internet address = 18.72.0.3
STRAWB.mit.edu  internet address = 18.71.0.151

STRAWB, W20NS i BITSY obsługują mit, wybierz jeden i pytaj o ai.mit.edu:

> server W20NS.mit.edu.

Serwery nazw nie rozróżniają wielkości liter, ale używam myszki do wycinania i wklejania, więc kopiuje wynik prosto z ekranu.

Server:  W20NS.mit.edu
Address:  18.70.0.160

> ai.mit.edu.
Server:  W20NS.mit.edu
Address:  18.70.0.160

Non-authoritative answer:
ai.mit.edu      nameserver = ALPHA-BITS.AI.MIT.EDU
ai.mit.edu      nameserver = GRAPE-NUTS.AI.MIT.EDU
ai.mit.edu      nameserver = TRIX.AI.MIT.EDU
ai.mit.edu      nameserver = MUESLI.AI.MIT.EDU
ai.mit.edu      nameserver = LIFE.AI.MIT.EDU
ai.mit.edu      nameserver = BEET-CHEX.AI.MIT.EDU
ai.mit.edu      nameserver = MINI-WHEATS.AI.MIT.EDU
ai.mit.edu      nameserver = COUNT-CHOCULA.AI.MIT.EDU
ai.mit.edu      nameserver = MINTAKA.LCS.MIT.EDU

Authoritative answers can be found from:
AI.MIT.EDU      nameserver = ALPHA-BITS.AI.MIT.EDU
AI.MIT.EDU      nameserver = GRAPE-NUTS.AI.MIT.EDU
AI.MIT.EDU      nameserver = TRIX.AI.MIT.EDU
AI.MIT.EDU      nameserver = MUESLI.AI.MIT.EDU
AI.MIT.EDU      nameserver = LIFE.AI.MIT.EDU
AI.MIT.EDU      nameserver = BEET-CHEX.AI.MIT.EDU
AI.MIT.EDU      nameserver = MINI-WHEATS.AI.MIT.EDU
AI.MIT.EDU      nameserver = COUNT-CHOCULA.AI.MIT.EDU
AI.MIT.EDU      nameserver = MINTAKA.LCS.MIT.EDU
ALPHA-BITS.AI.MIT.EDU   internet address = 128.52.32.5
GRAPE-NUTS.AI.MIT.EDU   internet address = 128.52.36.4
TRIX.AI.MIT.EDU internet address = 128.52.37.6
MUESLI.AI.MIT.EDU       internet address = 128.52.39.7
LIFE.AI.MIT.EDU internet address = 128.52.32.80
BEET-CHEX.AI.MIT.EDU    internet address = 128.52.32.22
MINI-WHEATS.AI.MIT.EDU  internet address = 128.52.54.11
COUNT-CHOCULA.AI.MIT.EDU        internet address = 128.52.38.22
MINTAKA.LCS.MIT.EDU     internet address = 18.26.0.36

A więc muesli.ai mit.edu jest serwerem nazw dla ai.mit.edu:

> server MUESLI.AI.MIT.EDU
Default Server:  MUESLI.AI.MIT.EDU
Address:  128.52.39.7

Teraz zmieniamy typ zapytania - znaleźliśmy serwer nazw, więc teraz zapytajmy go o wszystko, co wie o prep.ai.mit.edu.

> set q=any
> prep.ai.mit.edu.
Server:  MUESLI.AI.MIT.EDU
Address:  128.52.39.7

prep.ai.mit.edu CPU = dec/decstation-5000.25    OS = unix
prep.ai.mit.edu
        inet address = 18.159.0.42, protocol = tcp
          ftp  telnet  smtp  finger
prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu
prep.ai.mit.edu internet address = 18.159.0.42
ai.mit.edu      nameserver = beet-chex.ai.mit.edu
ai.mit.edu      nameserver = alpha-bits.ai.mit.edu
ai.mit.edu      nameserver = mini-wheats.ai.mit.edu
ai.mit.edu      nameserver = trix.ai.mit.edu
ai.mit.edu      nameserver = muesli.ai.mit.edu
ai.mit.edu      nameserver = count-chocula.ai.mit.edu
ai.mit.edu      nameserver = mintaka.lcs.mit.edu
ai.mit.edu      nameserver = life.ai.mit.edu
gnu-life.ai.mit.edu     internet address = 128.52.32.60
beet-chex.ai.mit.edu    internet address = 128.52.32.22
alpha-bits.ai.mit.edu   internet address = 128.52.32.5
mini-wheats.ai.mit.edu  internet address = 128.52.54.11
trix.ai.mit.edu internet address = 128.52.37.6
muesli.ai.mit.edu       internet address = 128.52.39.7
count-chocula.ai.mit.edu        internet address = 128.52.38.22
mintaka.lcs.mit.edu     internet address = 18.26.0.36
life.ai.mit.edu internet address = 128.52.32.80

Zaczynając od ., znaleźliśmy sukcesywne serwery nazw dla następnych poziomów w nazwie domeny. Jeżeli używałbyś własnego serwera DNS zamiast wszystkich innych, twój named zapisałby wszystkie informacje w czasie poszukiwań, nie musiałbyś więc znowu ich pytać przez jakiś czas.

O wiele mniej mówi się o, tak samo ważnej domenie in-addr.arpa. Jest ona też podzielona jak normalne domeny. in-addr.arpa pozwala otrzymywać nazwy maszyn kiedy posiadamy ich adresy. Ważne: numery IP w domenie in-addr.arpa są pisane w odwrotnej kolejności. Jeżeli adres maszyny to 192.128.52.43, named poszukuje tak, jak dla przykładu z prep.ai.mit.edu: znaleźć serwery arpa.. Znaleźć seerwery in-addr.arpa., znaleźć serwery 192.in-addr.arpa., znaleźć serwery 128.192.in-addr.arpa., znaleźć serwery 52.128.192.in-addr.arpa.. Znaleźć potrzebne rekordy dla 43.52.128.192.in-addr.arpa.. Sprytne, no nie? (Powiedz ,,tak''.) Odwracanie numerów IP może sprawiać kłopoty przez pierwsze dwa lata.

Właśnie skłamałem. DNS nie działa dokładnie tak jak przedstawiłem. Ale byłem wystarczająco blisko.

4.2 Własna domena

Teraz zdefiniujemy naszą własną domenę. Nazwijmy ją linux.bogus (,,bogus'', to po angielsku coś fałszywego, bzdurnego - przyp. tłum.) i zdefiniujemy w niej maszyny. Używam całkowicie bzdurnej (bogus) nazwy domeny, żeby upenić się, że nie przeszkadzamy nikomu Gdzieś Tam.

Jeszcze jedna rzecz zanim zaczniemy: Nie wszystkie znaki mogą wchodzić w skład nazw komputerów. Jesteśmy ograniczeni do znaków angielskiego alfabetu, tzn. a-z, numerów 0-9 i znaku ,,-'' (łącznika). Trzymajmy się tych znaków. Wielkie i małe litery nie są rozróżniane przez DNS, a więc pat.uio.no jest identyczne z Pat.UiO.No.

Już zaczeliśmy część z linią 0.0.127 w pliku named.conf:


zone "0.0.127.in-addr.arpa" {
        type master;
        file "pz/127.0.0";
};

Zauważ brak kropki na końcu nazw domen w tym pliku - definiujemy strefę 0.0.127.in-addr.arpa, że jesteśmy głównym jej serwerem i jest zapisana w pliku pz/127.0.0. Mamy już ten plik, zawiera on:


@               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                                1       ; Serial
                                8H      ; Refresh
                                2H      ; Retry
                                1W      ; Expire
                                1D)     ; Minimum TTL
                        NS      ns.linux.bogus.
1                       PTR     localhost.

Zauważ znak ,,.'' na końcu wszystkich pełnych nazw domen w tym pliku, kontrastuje to z plikiem named.conf powyżej. Niektórzy ludzie lubią rozpocząć każdą strefę z dyrektywą $ORIGIN, ale to już ekstrawagancja. Origin (pochodzenie - gdzie znajduje się w hierarchii DNS), pliku strefy jest zdefiniowany w linii strefy w pliku named.conf, w tym przypadku 0.0.127.in-addr.arpa.

Ten ,,plik strefy'' zawiera 3 ,,rekordy zasobów'' (resource records, RR): RR SOA, RR NS i RR PTR. SOA to skrót od Start of Authority. Znak ,,@'' jest specjalną notacją znaczącą pochodzenie (origin), a jeżeli kolumna domeny dla tego pliku to ,,0.0.127.in-addr.arpa'', pierwsza linia tak naprawdę znaczy

0.0.127.in-addr.arpa.   IN      SOA ...

NS to RR Name Server - rekord serwera nazw. Nie jest potrzebne ,,@'' na końcu tej linii, ponieważ ostatnia linia zaczęła sie na ,,@''. Oszczędza to trochę pisania. A więc linia NS tak naprawdę znaczy

0.0.127.in-addr.arpa.   IN      NS      ns.linux.bogus

Mówi DNS'owi, która maszyna jest serwerem nazw domeny 0.0.127.in-addr.arpa - jest to ns.linux.bogus. ,,ns'' to zazwyczaj stosowana nazwa serwera nazw, ale skoro serwery www są nazywane www.cośtam, nazwą może być cokolwiek.

I w końcu rekord PTR. Mówi, że komputer o adresie 1 w podsieci 0.0.127.in-addr.arpa, np. 127.0.0.1, nazywa się localhost.

Rekord SOA jest początkiem wszystkich plików stref. W każdym pliku musi być dokładnie jeden, jako pierwszy rekord. Opisuje strefę, z której pochodzi (z maszyny nazwanej ns.linux.bogus), osobę, która jest za nią odpowiedzialna (hostmaster@linux.bogus), wersję pliku strefy (numer seryjny: 1) i inne rzeczy mające związek z zapamiętywaniem (caching) i drugorzędnymi (secondary) serwerami DNS. Dla reszty pól: odświeżenia, powtórzenia, przedawnienia i minimalnego TTL użycie wartości podanych w tym HOWTO powinno być bezpieczne. Teraz uruchom ponownie named'a (komendą ndc restart) i użyj nslookup, żeby sprawdzić, co zrobiłeś:

$ nslookup

Default Server:  localhost
Address:  127.0.0.1

> 127.0.0.1
Server:  localhost
Address:  127.0.0.1

Name:    localhost
Address:  127.0.0.1

a więc udaje mu się otrzymać localhost ze 127.0.0.1, to dobrze. Teraz nasze główne zadanie, domena linux.bogus. Wstaw nową sekcję ,,zone'' w pliku named.conf:


zone "linux.bogus" {
        notify no;
        type master;
        file "pz/linux.bogus";
};

Zauważ dalszy brak kończącej kropki w nazwie domeny w pliku named.conf.

W pliku strefy linux.bogus umieścimy pewne całkowicie bzdurne (bogus) dane:


;
; Plik strefy dla linux.bogus
;
; Pełny plik strefy
;
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151       ; numer seryjny, dzisiejsza data i numer zmiany
                        8H              ; odświeżanie, w sekundach
                        2H              ; powtórzenie, w sekundach
                        1W              ; przedawnienie, w sekundach
                        1D )            ; minimum, w sekundach
;
                NS      ns              ; Adres Internetowy serwera nazw
                MX      10 mail.linux.bogus     ; Podstawowy serwer poczty
                MX      20 mail.friend.bogus.   ; Drugorzędny serwer poczty
;
localhost       A       127.0.0.1
ns              A       192.168.196.2
mail            A       192.168.196.4

Należy zwrócić uwagę na dwie rzeczy w rekordzie SOA. ns.linux.bogus musi być prawdziwą maszyna z rekordem A. Nie jest dozwolone wpisaanie rekordu CNAME dla maszyny w rekordzie SOA. Jej nazwą nie musi być ,,ns'', może być jakąkolwiek dozwoloną nazwą komputera. Po drugie, hostmaster.linux.bogus powinien być odczytany jako hostmaster@linux.bogus, a powinien być to alias pocztowy lub oddzielna skrzynka, gdzie osoba(y) nadzorujące DNS powinny często czytać pocztę. Jakikolwiek list w sprawie domeny będzie wysłany na adres podany w tej linii. Nazwą nie musi być ,,hostmaster'', może to być jakikolwiek dozwolony adres e-mail, ale adres ,,hostmaster'' będzie również działał.

Jest jeden nowy typ RR w tym pliku, MX czyli Mail eXchanger. Mówi systemom pocztowym gdzie wysyłać pocztę zaadresowaną do ktośtam@linux.bogus, odpowiednio do mail.linux.bogus lub mail.friend.bogus. Liczba przed każdą nazwą maszyny oznacza priorytet MX'ów. RR z najmniejszą liczbą (10) jest tym, do którego poczta powinna być wysyłana najpierw. Jeżeli to się nie uda, może być wysłana do serwera z wyższą liczbą, drugorzędnego serwera poczty, np. mail.friend.bogus, który ma tu priorytet 20.

Uruchom ponownie named, używając komendy ndc restart. Sprawdź wynik z nslookup:

$ nslookup
> set q=any
> linux.bogus
Server:  localhost
Address:  127.0.0.1

linux.bogus
        origin = ns.linux.bogus
        mail addr = hostmaster.linux.bogus
        serial = 199802151
        refresh = 28800 (8 hours)
        retry   = 7200 (2 hours)
        expire  = 604800 (7 days)
        minimum ttl = 86400 (1 day)
linux.bogus     nameserver = ns.linux.bogus
linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
linux.bogus     preference = 20, mail exchanger = mail.friend.bogus
linux.bogus     nameserver = ns.linux.bogus
ns.linux.bogus  internet address = 192.168.196.2
mail.linux.bogus        internet address = 192.168.196.4

Przy dokładnym sprawdzaniu, odkryjesz błąd. Linia

linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus

jest niepoprawna. Powinno być

linux.bogus     preference = 10, mail exchanger = mail.linux.bogus

Specjalnie popełniłem błąd, żebyś mógł się z niego uczyć :-) Patrząc na plik strefy zobaczymy, że w linii

                MX      10 mail.linux.bogus     ; Podstawowy serwer poczty

brakuje kropki. Można też powiedzieć, że ma o jeden człon ,,linux.bogus'' za dużo. Jeżeli nazwa komputera nie kończy się kropką w pliku strefy, pochodzenie (origin) zostaje dodane do niej, powodując podwójny linux.bogus.linux.bogus. Więc piszemy albo


                MX      10 mail.linux.bogus.    ; Podstawowy serwer poczty

albo


                MX      10 mail                 ; Podstawowy serwer poczty

Oba są poprawne. Wolę ostatnią formę, mniej pisania. Są znani użytkownicy bind'a którzy nie zgadzają się z tym, są też tacy, którzy zgadzają się z tą regułą. W pliku strefy domena powinna bądź to być całkowita i zakończona kropką, bądź to nie powinna być wogóle załączona, w tym przypadku zawiera domyślne pochodzenie (origin).

Muszę zaznaczyć, że w pliku named.conf nie powinno być kropek po nazwach domen. Nie masz pojęcia, jak często ludzie głupieli i klęli na czym świat stoi z powodu znaku ,,.''.

A więc po wyjaśnieniu mojej uwagi, mamy nowy plik strefy, zawierający trochę dodatkowych informacji:


;
; Plik strefy dla linux.bogus
;
; Pełny plik strefy
;
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151       ; numer seryjny, dzisiejsza data + numer zmiany
                        8H              ; odświeżanie, w sekundach
                        2H              ; powtórzenie, w sekundach
                        1W              ; przedawnienie, w sekundach
                        1D )            ; minimum, w sekundach
;
                TXT     "Linux.Bogus, twoi konsultanci DNS"
                NS      ns              ; Adresy Internetowe serwerów nazw
                NS      ns.friend.bogus.
                MX      10 mail         ; Podstawowy MX
                MX      20 mail.friend.bogus. ;  Drugorzędny MX

localhost       A       127.0.0.1

gw              A       192.168.196.1
                HINFO   "Cisco" "IOS"
                TXT     "Router"

ns              A       192.168.196.2
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "Pentium" "Linux 2.0"
www             CNAME   ns

donald          A       192.168.196.3
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "i486"  "Linux 2.0"
                TXT     "DEK"

mail            A       192.168.196.4
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "386sx" "Linux 1.2"

ftp             A       192.168.196.5
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "P6" "Linux 2.1.86"

Jest tu kilka nowych RR'ów: HINFO (Host INFOrmation) ma dwie części, dobrym zwyczajem jest branie każdej w cudzysłowy. Pierwsza część określa nazwę sprzętową lub procesor komputera, a druga oprogramowanie lub system operacyjny. Maszyna nazwana ,,ns'' ma procesor Pentium i Linuxa 2.0. CNAME (Canonical NAME) jest sposobem nadawania każdej maszynie kilku nazw. Www jest więc aliasem ns.

Używanie rekordów CNAME jest trochę kontrowesyjne. Ale bezpiecznie jest przestrzegać zasady, że rekordy MX, CNAME lub SOA nigdy nie powinny odnosić się do rekordu CNAME, powinny odnosić się do czegoś z rekordem A, więc źle jest


foobar          CNAME   www                     ; NIE!

ale poprawnie


foobar          CNAME   ns                      ; Tak!

Jest też bezpiecznie przyjąć, że CNAME nie jest dozwoloną nazwą komputera dla adresu e-mail: webmaster@www.linux.bogus jest niedozwolonym adresem, jeżeli przyjąć powyższe ustawienia. Możesz się spodziewać, że wielu adminów Gdzieś Tam będzie wymagało tej zasady, nawet jeśli to działa u ciebie. Sposobem uniknięcia tego jest używanie rekordów A (i może innych, takich jak MX) zamiast CNAME:


www             A       192.168.196.2

Kilku ,,czarodziejów'' bind'a radzi, aby nie używać CNAME. Zastanów się więc nad tym bardzo poważnie.

Ale jak widzisz, to HOWTO i wiele serwerów nie przestrzega tej zasady.

Załaduj nową bazę danych komendą ndc reload, sprawi to, że named przeczyta ponownie swoje pliki.

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

> ls -d linux.bogus

Znaczy to, że wszystkie rekordy powinny być wymienione. Wyświetli:

[localhost]
$ORIGIN linux.bogus.
@                       1D IN SOA       ns hostmaster (
                                        199802151       ; numer seryjny
                                        8H              ; odświeżanie
                                        2H              ; powtórzenie
                                        1W              ; przedawnienie
                                        1D )            ; minimum

                        1D IN NS        ns
                        1D IN NS        ns.friend.bogus.
                        1D IN TXT       "Linux.Bogus, twoi konsultanci DNS"
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
gw                      1D IN A         192.168.196.1
                        1D IN HINFO     "Cisco" "IOS"
                        1D IN TXT       "Router"
mail                    1D IN A         192.168.196.4
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "386sx" "Linux 1.0.9"
localhost               1D IN A         127.0.0.1
www                     1D IN CNAME     ns
donald                  1D IN A         192.168.196.3
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "i486" "Linux 1.2"
                        1D IN TXT       "DEK"
ftp                     1D IN A         192.168.196.5
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "P6" "Linux 1.3.59"
ns                      1D IN A         192.168.196.2
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "Pentium" "Linux 1.2"
@                       1D IN SOA       ns hostmaster (
                                        199802151       ; numer seryjny
                                        8H              ; odświeżanie
                                        2H              ; powtórzenie
                                        1W              ; przedawnienie
                                        1D )            ; minimum

To jest w porządku. Jak widzisz, wygląda prawie jak plik strefy. Sprawdźmy co powie o samym www:

> set q=any
> www.linux.bogus.
Server:  localhost
Address:  127.0.0.1

www.linux.bogus canonical name = ns.linux.bogus
linux.bogus     nameserver = ns.linux.bogus
linux.bogus     nameserver = ns.friend.bogus
ns.linux.bogus  internet address = 192.168.196.2

Inaczej mówiąc, prawdziwa nazwa www.linux.bogus to ns.linux.bogus. Daje ci to też trochę informacji, które ma o ns, wystarczjąco dużo, żeby się z nim połączyć, jeżeli byłbyś programem.

Jesteśmy w połowie drogi.

4.3 Strefa odwrotna

Teraz programy mogą konwertować nazwy w linux.bogus na adresy, z którymi mogą się połączyć. Ale potrzebna jest też strefa odwrotna, która pozwala DNS'owi przekształcać adresy na nazwy (FTP, IRC, WWW i inne), żeby zdecydować, czy chcą z tobą rozmawiać, czy nie, a jeżeli tak, może nawet zdecydują jaki priorytet powinien być ci nadany. Strefa odwrotna jest wymagana dla pełnego dostępu do wszystkich usług Internetu.

Wstaw następujące linie w named.conf:


zone "196.168.192.in-addr.arpa" {
        notify no;
        type master;
        file "pz/192.168.196";
};

Tak samo jak z 0.0.127.in-addr.arpa, zawartość także jest podobna:


@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151 ; Numer seryjny, data + numer
                        8H      ; odświeżanie
                        2H      ; powtarzanie
                        1W      ; przedawnienie
                        1D)     ; minimalny TTL
                NS      ns.linux.bogus.

1               PTR     gw.linux.bogus.
2               PTR     ns.linux.bogus.
3               PTR     donald.linux.bogus.
4               PTR     mail.linux.bogus.
5               PTR     donald.linux.bogus.

Teraz uruchom ponownie named (ndc restart) i sprawdź swoją pracę znowu korzystając z nslookup:


> 192.168.196.4
Server:  localhost
Address:  127.0.0.1

Name:    mail.linux.bogus
Address:  192.168.196.4

Wygląda w porządku, spróbuj wyświetlić wszystko, żeby to sprawdzić:


> ls -d 196.168.192.in-addr.arpa
[localhost]
$ORIGIN 196.168.192.in-addr.arpa.
@                       1D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                        1D IN NS        ns.linux.bogus.
1                       1D IN PTR       gw.linux.bogus.
2                       1D IN PTR       ns.linux.bogus.
3                       1D IN PTR       donald.linux.bogus.
4                       1D IN PTR       mail.linux.bogus.
5                       1D IN PTR       donald.linux.bogus.
@                       1D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (
                                        199802151       ; numer seryjny
                                        8H              ; odświeżanie
                                        2H              ; powtarzanie
                                        1W              ; przedawnienie
                                        1D )            ; minimum

Wygląda dobrze!

Jest kilka rzeczy, które powinienem tu dodać. Numery IP używane w przykładach pochodzą z jednego z bloków ,,sieci prywatnych'', tzn. nie wolno używać ich publicznie w internecie. Są bezpieczne do pokazania jako przykład w HOWTO. Druga rzecz, to linia notify no;. Mówi named, żeby nie zawiadamiać serwera drugorzędnego (secondary, slave), kiedy jeden z plików stref zostanie uaktualniony. W bind'dzie-8 named może zawiadamiać inne serwery wymienione w rekordach NS w pliku strefy, kiedy strefa zostanie uaktualniona. Jest to przydatne do użytku zwykłego, ale dla prywatnych eksperymentów ze strefami ta opcja powinna być wyłączona, nie chcemy przecież chyba, żeby nasz eksperyment zaśmiecał Internet, czyż nie tak?

No i oczywiście ta domena jest nieprawdziwa (bogus) i takie też są wszystkie adresy w niej. Zobacz następny rozdział dla przykładu z prawdziwą domeną.

5. Prawdziwa domena

Tutaj opisujemy trochę prawdziwych plików stref.

Użytkownicy zasugerowali, żebym załączył prawdziwy przykład działającej domeny razem z teoretycznym przykładem.

Używam tego przykładu z zezwoleniem Davida Bullock'a z LAND-5. Te pliki były aktualne 24 Września 1996 i zostały zmienione przeze mnie, żeby pasowały do formatu bind-8, używają też moich rozszerzeń. A więc, to co tu widzisz różni się trochę od tego, co otrzymasz po wysłaniu zapytania do serwerów nazw LAND-5 obecnie.

5.1 /etc/named.conf (lub /var/named/named.conf)

Tutaj znajdziemy linie główne dla dwóch potrzebnych stref odwrotnych: sieci 127.0.0, jak i sieci 206.6.177 należącej do LAND-5, oraz linię primary dla przedniej strefy land-5.com. Zauważ także, że zamiast umieszczać pliki w katalogu o nazwie pz, jak robię to w tym HOWTO, znajdują się one w katalogu zone (strefa).


// Plik ładujący dla serwera nazw LAND-5

options {
        directory "/var/named";
};

zone "." {
        type hint;
        file "root.hints";
};

zone "0.0.127.in-addr.arpa" {
        type master;
        file "zone/127.0.0";
};

zone "land-5.com" {
        type master;
        file "zone/land-5.com";
};

zone "177.6.206.in-addr.arpa" {
        type master;
        file "zone/206.6.177";
};

Jeżeli wstawisz to do swojego named.conf, żeby się pobawić, PROSZĘ, wstaw notify no; w sekcji stref dla dwóch stref land-5, żeby uniknąć wypadków.

5.2 /var/named/root.hints

Pamiętaj, że ten plik zmienia się, a ten jest stary. Powinieneś używać nowszego pliku wyprodukowanego używając dig, będzie to wytłumaczone później. (UWAGA: autor napisał, że było to wytłumaczone wcześniej, ale jest to wytłumaczone PÓŹNIEJ - przyp. tłum.)


; <<>> DiG 8.1 <<>> @A.ROOT-SERVERS.NET. 
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opCODE: QUERY, status: NOERROR, id: 10
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; QUERY SECTION:
;;      ., type = NS, class = IN

;; ANSWER SECTION:
.                       6D IN NS        G.ROOT-SERVERS.NET.
.                       6D IN NS        J.ROOT-SERVERS.NET.
.                       6D IN NS        K.ROOT-SERVERS.NET.
.                       6D IN NS        L.ROOT-SERVERS.NET.
.                       6D IN NS        M.ROOT-SERVERS.NET.
.                       6D IN NS        A.ROOT-SERVERS.NET.
.                       6D IN NS        H.ROOT-SERVERS.NET.
.                       6D IN NS        B.ROOT-SERVERS.NET.
.                       6D IN NS        C.ROOT-SERVERS.NET.
.                       6D IN NS        D.ROOT-SERVERS.NET.
.                       6D IN NS        E.ROOT-SERVERS.NET.
.                       6D IN NS        I.ROOT-SERVERS.NET.
.                       6D IN NS        F.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
G.ROOT-SERVERS.NET.     5w6d16h IN A    192.112.36.4
J.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.10
K.ROOT-SERVERS.NET.     5w6d16h IN A    193.0.14.129
L.ROOT-SERVERS.NET.     5w6d16h IN A    198.32.64.12
M.ROOT-SERVERS.NET.     5w6d16h IN A    202.12.27.33
A.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.4
H.ROOT-SERVERS.NET.     5w6d16h IN A    128.63.2.53
B.ROOT-SERVERS.NET.     5w6d16h IN A    128.9.0.107
C.ROOT-SERVERS.NET.     5w6d16h IN A    192.33.4.12
D.ROOT-SERVERS.NET.     5w6d16h IN A    128.8.10.90
E.ROOT-SERVERS.NET.     5w6d16h IN A    192.203.230.10
I.ROOT-SERVERS.NET.     5w6d16h IN A    192.36.148.17
F.ROOT-SERVERS.NET.     5w6d16h IN A    192.5.5.241

;; Total query time: 215 msec
;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET.  198.41.0.4
;; WHEN: Sun Feb 15 01:22:51 1998
;; MSG SIZE  sent: 17  rcvd: 436

5.3 /var/named/zone/127.0.0

Tylko podstawy, obowiązujący rekord SOA i rekord, który mapuje 127.0.0.1 na localhost. Oba są wymagane. Nic więcej nie powinno znajdować się w tym pliku. Prawdopodobnie nigdy nie będzie musiał być uaktualniany, chyba że twój serwer nazw lub hostmaster zmienią adres.


@               IN      SOA     land-5.com. root.land-5.com. (
                                199609203       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      land-5.com.
        
1                       PTR     localhost.

5.4 /var/named/zone/land-5.com

Widzimy tu obowiązujący rekord SOA i potrzebne rekordy NS. Możemy zobaczyć, że drugorzędny serwer nazw ma adres ns2.psi.net. Jest tak, jak powinno być, zawsze musi być drugorzędny serwer w innym miejscu Internetu. Jest tu komputer główny o nazwie land-5, który zajmuje się wieloma różnymi usługami Internetowymi, jest to załatwione za pomocą rekordów CNAME (alternatywnie można używać rekordów A).

Jak widzidsz z rekordu SOA, plik strefy pochodzi z land-5.com, osobą kontaktową jest root@land-5.com. hostmaster jest innym często używanym adresem. Numer seryjny składa się z daty w formacie yyyymmdd i dziennego numeru seryjnego; jest to prawdopodobnie szósta wersja pliku strefy z 20 Września 1996. Pamiętaj, że numer seryjny musi zwiększać się monotonicznie, tutaj jest tylko jedna cyfra numeru seryjnego, więc po 9 zmianach trzeba czekać do następnego dnia z następnymi edycjami. Rozważ użycie dwóch cyfr.


@       IN      SOA     land-5.com. root.land-5.com. (
                        199609206       ; serial, todays date + todays serial #
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        1W              ; expire, seconds
                        1D )            ; minimum, seconds
                NS      land-5.com.
                NS      ns2.psi.net.
                MX      10 land-5.com.  ; Primary Mail Exchanger

localhost       A       127.0.0.1

router          A       206.6.177.1
        
land-5.com.     A       206.6.177.2
ns              A       206.6.177.3
www             A       207.159.141.192

ftp             CNAME   land-5.com.
mail            CNAME   land-5.com.
news            CNAME   land-5.com.

funn            A       206.6.177.2
@               TXT     "LAND-5 Corporation"

;
;       Workstations
;
ws-177200       A       206.6.177.200
                MX      10 land-5.com.   ; Primary Mail Host
ws-177201       A       206.6.177.201
                MX      10 land-5.com.   ; Primary Mail Host
ws-177202       A       206.6.177.202
                MX      10 land-5.com.   ; Primary Mail Host
ws-177203       A       206.6.177.203
                MX      10 land-5.com.   ; Primary Mail Host
ws-177204       A       206.6.177.204
                MX      10 land-5.com.   ; Primary Mail Host
ws-177205       A       206.6.177.205
                MX      10 land-5.com.   ; Primary Mail Host
; {Many repetitive definitions deleted - SNIP}
ws-177250       A       206.6.177.250
                MX      10 land-5.com.   ; Primary Mail Host
ws-177251       A       206.6.177.251
                MX      10 land-5.com.   ; Primary Mail Host
ws-177252       A       206.6.177.252
                MX      10 land-5.com.   ; Primary Mail Host
ws-177253       A       206.6.177.253
                MX      10 land-5.com.   ; Primary Mail Host
ws-177254       A       206.6.177.254
                MX      10 land-5.com.   ; Primary Mail Host

Jeżeli sprawdzisz serwer nazw land-5, zobaczysz, że nazwy komputerów składają się z ws_numer. Późne wersje named'a w bind'dzie 4 zaczęły wymagać ograniczeń znaków składających się na nazwy komputerów. A więc wogóle nie działałoby to z bind-8, zamieniłem ,,_'' na ,,-''.

Inna rzecz warta zauważenia to fakt, że stacje robocze nie mają własnych nazw, a raczej prefiks i dwie ostatnie części numeru IP. Używanie takiej konwencji może znacznie uprościć nadzór, ale jest trochę bezosobowe i może być źródłem niezadowolenia wśród twoich użytkowników.

Możemy także zobaczyć, że funn.land-5.com jest aliasem land-5.com, ale używającym rekordu A, a nie CNAME.

5.5 /var/named/zone/206.6.177

Skomentuję ten plik na jego końcu.


@               IN      SOA     land-5.com. root.land-5.com. (
                                199609206       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      land-5.com.
                        NS      ns2.psi.net.
;
;       Servers
;
1       PTR     router.land-5.com.
2       PTR     land-5.com.
2       PTR     funn.land-5.com.
;
;       Workstations
;
200     PTR     ws-177200.land-5.com.
201     PTR     ws-177201.land-5.com.
202     PTR     ws-177202.land-5.com.
203     PTR     ws-177203.land-5.com.
204     PTR     ws-177204.land-5.com.
205     PTR     ws-177205.land-5.com.
; {Dużo powtarzających się rekordów - usunięto}
250     PTR     ws-177250.land-5.com.
251     PTR     ws-177251.land-5.com.
252     PTR     ws-177252.land-5.com.
253     PTR     ws-177253.land-5.com.
254     PTR     ws-177254.land-5.com.

Strefa odwrotna jest kawałkiem ustawień wydającym się sprawiać najwięcej kłopotów. Jest używany do znalezienia nazwy komputera, jeżeli masz jego numer IP. Przykład: jesteś serwerem IRC i akceptujesz połączenia od klientów IRC. Jednakże jesteś serwerem norweskim, a więc chcesz akceptować połączenia tylko z Norwegii i innych krajów skandynawskich. Kiedy otrzymasz połączenie od klienta, biblioteka C jest w stanie przekazać ci numer IP łączącej się maszyny, ponieważ numer IP klienta jest zawarty we wszystkich pakietach przekazywanych przez sieć. Teraz możesz przywołać funkcję o nazwie gethostbyaddr, która szuka nazwy komputera z podanym numerem IP. Gethostbyaddr spyta serwer DNS, który wtedy przetrawersuje DNS, poszukując maszyny. Przyjmijmy, że połączenie nadeszło z ws-177200.land-5.com. Numer IP podany przez bibliotekę C serwerowi IRC to 206.6.177.200. Żeby poznać nazwę tej maszyny, musimy znaleźć 200.177.6.206.in-addr.arpa. Serwer DNS najpierw odwróci ścieżkę przez 206, potem przez 6, aż w końcu znajdzie serwer dla strefy 177.6.206.in-addr.arpa na land-5, z którego na końcu dostanie odpowiedź, że dla 200.177.6.206.in-addr.arpa mamy rekord ,,PTR ws-177200.land-5.com'', który znaczy, że nazwa 206.6.177.20 to ws-177200.land-5.com. Tak jak z wyjaśnieniem, jak zostaje znaleziony prep.ai.mit.edu, jest to trochę fikcyjne.

Wracając do przykładu serwera IRC. Serwer IRC akceptuje połączenia tylko z krajów skandynawskich, tj. *.no, *.se, *.dk. Od razu widać, że nazwa ws-177200.land-5.com nie pasuje do żadnego z nich, a więc serwer odmówi połączenia. Jeżeli nie było mapowania odwrotnego dla 206.6.177.200 przez strefę in-addr.arpa, serwer nie mógłby znaleźć nazwy i porównałby 206.6.177.200 z *.no, *.se i *.dk, oczywiście żadna z nich nie będzie pasowała.

Niektórzy ludzie będą mówili ci, że odwrotne mapowanie jest ważne tylko dla serwerów, albo wogóle nie ważne. Nie zawsze: wiele serwerów ftp, news, IRC i nawet niektóre http (WWW) nie będą akceptowały połączeń z maszyn, których nazw nie będą w stanie znaleźć. A więc mapowanie odwrotne jest obowiązkowe.

6. Nadzór

Utrzymywanie w ciągłym działaniu

Jest jedno zadanie nadzorcze, które musisz wykonywać z named'ami, inne niż utrzymywanie ich w działaniu, tzn. uaktualnianie pliku root.hints. Najłatwiej jest to zrobić używając dig'a. Najpierw uruchom dig bez żadnych argumentów, otrzymasz zawartość pliku root.hints zgodnie ze swoim własnym serwerem. Wtedy spytaj jeden z wymienionych serwerów głównych komendą dig @rootserver. Zauważysz, że to co otrzymasz będzie bardzo podobne do pliku root.hints. Zapisz to do pliku (dig @e.root-servers.net . ns >root.hints.new) i zamień na niego stary plik root.hints.

Pamiętaj, żeby uruchomić ponownie named po zamianie pliku cache.

Al Longyear wysłał mi ten skrypt. Może on być uruchamiany automatycznie w celu uaktualniania root.hints. Dodaj wpis do tablicy cron'a, żeby był uruchamiany raz na miesiąc. Ten skrypt przyjmuje, że masz działający system pocztowy i zdefniowany alias pocztowy ,,hostmaster''. Musisz zagłębić się w ten plik, żeby dostosować go do twoich ustawień.


#!/bin/sh
#
# Uaktualnianie pliku cache raz na miesiąc.
# Ten skrypt jest uruchamiany automatycznie przez cron'a.
#
(
 echo "To: hostmaster <hostmaster>"
 echo "From: system <root>"
 echo "Subject: Automatyczne uaktualnienie pliku named.conf"
 echo

 export PATH=/sbin:/usr/sbin:/bin:/usr/bin:
 cd /var/named

 dig @rs.internic.net . ns >root.hints.new

 echo "Plik named.conf został uaktualniony i zawiera następujące informacje:"
 echo
 cat root.hints.new

 chown root.root root.hints.new
 chmod 444 root.hints.new
 rm -f root.hints.old
 mv root.hints root.hints.old
 mv root.hints.new root.hints
 ndc restart
 echo
 echo "Serwer nazw został uruchomiony ponownie, aby wprowadzić zmiany"
 echo "Poprzedni plik nazywa się teraz /var/named/root.hints.old."
) 2>&1 | /usr/lib/sendmail -t
exit 0

Niektórzy z was mogli zauważyć, że plik root.hints jest też dostępny przez ftp z Internic'u. Proszę, nie używaj ftp do uaktualniania root.hints, powyższa metoda jest o wiele bardziej przyjazna dla sieci.

7. Przejście z wersji 4 na wersję 8

Poprzednio była to sekcja o używaniu bind'a 8 napisana przez David'a E. Smith'a (dave@bureau42.ml.org). Trochę ją zmieniłem, żeby pasowała do nowej nazwy sekcji.

Nie ma tego wiele. Poza używaniem named.conf zamiast named.boot, wszystko jest identyczne. Bind-8 jest dostarczany ze skryptem konwertującym pliki w ,,starym stylu'' na nowe. Przykładowy named.conf (stary) dla serwera cache:


directory /var/named
cache   .                                       root.hints
primary 0.0.127.IN-ADDR.ARPA                    127.0.0.zone
primary localhost                               localhost.zone          

W linii komend, w katalogu bind8/src/bin/named (Przyjmuję, że masz dystrybucję źródłową. Jeżeli masz paczkę z binariami skrypt też gdzieś musi być, jednakże nie jestem pewien gdzie. -ed.), napisz:


./named-bootconf.pl < named.conf > named.conf

Co stworzy named.conf:


// generated by named-bootconf.pl

options {
        directory "/var/named";
};

zone "." {
        type hint;
        file "root.hints";
};

zone "0.0.127.IN-ADDR.ARPA" {
        type master;
        file "127.0.0.zone";
};

zone "localhost" {
        type master;
        file "localhost.zone";
};

Metoda ta konwertuje wszystko, co można wpisać do named.conf, jednakże nie dodaje żadnych nowych rozszerzeń i opcji konfiguracji, które można uzyskać w bind-8. Oto bardziej kompletny named.conf, który robi te same rzeczy, ale trochę bardziej sprawnie.


// To jest plik konfiguracyjny named (bind-8 lub późniejszy)
// Powinien być zainstalowany jako /etc/named.conf.
// Jedyna zmiana pliku ,,fabrycznego'' (poza tym komentarzem :))
// to odkomentowanie linii directory, ponieważ mam już pliki stref
// w /var/named.

options {
        directory "/var/named";
        check-names master warn;                /* domyślne. */
        datasize 20M;
};

zone "localhost" IN {
        type master;
        file "localhost.zone";
        check-names fail;
        allow-update { none; };
        allow-transfer { any; };
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "127.0.0.zone";
        check-names fail;
        allow-update { none; };
        allow-transfer { any; };
};

zone "." IN {
        type hint;
        file "root.hints";
};

bind8/src/bin/named/test ma ten plik oraz kopie plików stref, które wiele ludzi może skopiować i od razu używać.

Formaty plików stref i root.hints są identyczne, tak jak komendy ich uaktualniania.

8. FAQ

W tej sekcji wymienię kilka spośród najczęściej zadawanych pytań związanych z DNS'em i tym HOWTO, oraz odpowiedzi na nie. :-) Przeczytaj tą sekcję przed wysłaniem do mnie listu.

  1. Mój named żąda pliku named.boot.

    Czytasz złe HOWTO. Przeczytaj starą wersję tego dokumentu, która opisuje bind 4, na http://www.math.uio.no/~janl/DNS/.

  2. Jak używać DNS zza ściany ognia (firewall)?

    Kilka podpowiedzi: ,,forwarders'', ,,slave'' oraz spojrzenie na listę literatury na końcu tego HOWTO.

  3. Jak sprawić, żeby DNS przełączał się między adresami usługi, np. www.zajęty.serwer, żeby uzyskać efekt wyrównania obciążenia, lub podobny?

    Utwórz kilka rekordów A dla www.zajęty.serwer i użyj bind'a 4.9.3 lub późniejszego. Wtedy bind będzie pokolei przełączał adresy. Nie będzie to działać z wcześniejszymi wersjami bind'a.

  4. Chcę ustawić DNS w (zamkniętym) intranecie. Co mam zrobić?

    Nie zakładaj pliku root.hints, tylko pliki stref. To znaczy także, że nie będziesz musiał uaktualniać tego pliku.

  5. Jak ustawić drugorzędny (secondary, slave...) serwer DNS?

    Jeżeli podstawowy (primary) serwer ma adres 127.0.0.1 wstaw następującą linię w named.conf drugorzędnego serwera:


      zone "linux.bogus" {
            type slave;
            file "sz/linux.bogus";
            masters { 127.0.0.1; };
      };
      
    

    Możesz wymienić kilka alternatywnych serwerów głównych, z których strefa może być kopiowana w liście masters, oddzielone przez ,,;''.

  6. Chcę, żeby bind działał nawet wtedy, kiedy jestem odłączony od sieci.

    Otrzymałem taki list od Ian'a Clark'a <ic@deakin.edu.au>, gdzie wyjaśnia on jego sposób dokonania tego:

    Uruchamiam named na mojej ,,maskującej się'' maszynie. Mam dwa pliki
    root.hints, jeden nazywa się root.hints.real i zawiera prawdziwe nazwy serwerów
    nazw głównych, oraz drugi, root.hints.fake, który zawiera...
    
    ----
    ; root.hints.fake
    ; ten plik nie zawiera żadnych informacji
    ----
    
    Kiedy rozłączam się, kopiuję root.hints.fake do root.hints i uruchamiam
    named ponownie.
    
    Kiedy łączę się, kopiuję root.hints.real do root.hints i restartuję named.
    
    To jest wykonywane odpowiednio przez ip-down i ip-up.
    
    Pierwszy raz, kiedy przeprowadzam zapytanie off-line o nazwę domeny, named
    nie ma szczegółów, a więc wstawia taki komunikat w pliku messgaes:
    
    Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN
    
    z czym można żyć.
    
    U mnie to działa. Mogę używać serwera nazw dla maszyn lokalnych bez opóźnienia,
    jak w przypadku zewnętrznych nazw domen, a kiedy jestem w sieci, zapytania
    o zewnętrzne domeny funkcjonują normalnie.
    

  7. Gdzie serwer przyspieszający zapisuje swoją pamięć podręczną? W jaki sposób można ją kontrolować?

    Pamięć podręczna jest zapamiętywana całkowicie w pamięci, nie jest zapisywana na dysk. Za każdym razem kiedy zabijesz named cache będzie stracony. Cache nie daje się w żaden sposób kontrolować. Named zarządza nim zgodnie z pewnymi prostymi zasadami i nie da się tego ominąć. Nie możesz kontrolować cache'u ani jego rozmiaru w żaden sposób i z żadnego powodu. Jeżeli chcesz, możesz ,,naprawić'' to zmieniając kod named. Jednakże nie jest to zalecane.

  8. Czy named zapisuje cache po zakończeniu działania? Czy mogę go jakoś do tego zmusić?

    Nie, named nie zapisuje pamięci podręcznej kiedy umiera. Znaczy to, że cache musi być zbudowany od nowa za każdym razem, kiedy zabijasz i uruchamiasz named ponownie. Nie ma sposobu, żeby zmusić go do zapisywania cache'u w pliku. Jeżeli chcesz, możesz to ,,naprawić'' zmieniając kod named. Nie jest to jednak zalecane.

9. Jak zostać pełnoetatowym administratorem DNS

Dokumentacja i narzędzia

Prawdziwa Dokumentacja istnieje. Online i drukowana. Przeczytanie kilku z tych publikacji jest wymagane, żeby zrobić krok od małoetatowego do pełnoetatowego administratora DNS. W druku, standardową książką jest DNS i BIND, autorstwa C. Liu i P. Albitz'a, wydawnictwa O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X. Czytałem ją, jest świetna. Jest też sekcja o DNS w książce TCP/IP - Administracja sieci, autorstwa Craig'a Hunt'a z wydawnictwa O'Reilly..., ISBN 0-937175-82-X. Inna książka koniecznie do przeczytania przez dobrego admina DNS (lub kogokowiek dobrego z tej branży) jest Zen i Sztuka Naprawy Motocykli Roberta M. Prisiga, :-) dostępne pod ISBN 0688052304 i inne.

Online znajdziesz różne rzeczy na http://www.dns.net/dnsrd/, http://www.isc.org/bind.html; FAQ, podręcznik (BOG - Bind Operators Guide), specyfikacje i definicje protokołów, oraz sztuczki DNS (te, i wiele, jeżeli nie wszystkie RFC wspomniane poniżej, także znajdują się w dystrybucji bind'a). Nie czytałem większości z nich, ale przez to nie jestem pełnoetatowym administratorem DNS. Natomiast Arnt Gulbrandsen przeczytał BOG i bardzo mu się on spodobał :-). Jest też grupa news news://comp.protocols.tcp-ip.domains o DNS. Dodatkowo, jest też trochę RFC o DNS'ie, najważniejsze są prawdopodobnie te:

RFC 2052

A. Gulbrandsen, P. Vixie, A DNS RR for specifying the location of services (DNS SRV), October 1996

RFC 1918

Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear, Address Allocation for Private Internets, 02/29/1996.

RFC 1912

D. Barr, Common DNS Operational and Configuration Errors, 02/28/1996.

RFC 1912 Errors

B. Barr Errors in RFC 1912, jest on dostępny na http://www.cis.ohio-state.edu/~barr/rfc1912-errors.html

RFC 1713

A. Romao, Tools for DNS debugging, 11/03/1994.

RFC 1712

C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, DNS Encoding of Geographical Location, 11/01/1994.

RFC 1183

R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, New DNS RR Definitions, 10/08/1990.

RFC 1035

P. Mockapetris, Domain names - implementation and specification, 11/01/1987.

RFC 1034

P. Mockapetris, Domain names - concepts and facilities, 11/01/1987.

RFC 1033

M. Lottor, Domain administrators operations guide, 11/01/1987.

RFC 1032

M. Stahl, Domain administrators guide, 11/01/1987.

RFC 974

C. Partridge, Mail routing and the domain system, 01/01/1986.

10. Od tłumacza

To jest druga wersja DNS-HOWTO. Pierwsza wersja, dotycząca bind'a 4 została przetłumaczona przez Piotra Pogorzelskiego <piotr.pogorzelski@ippt.gov.pl>. Prawa autorskie tłumaczenia pierwszej wersji należą właśnie do niego, a ponieważ ja przetłumaczyłem drugą wersję od początku, prawa autorskie tłumaczenia drugiej wersji należą do mnie. Wersja 2.1 jest znacznie poprawiona w stosunku do 2.0. Jak zwykle, jeżeli znajdziesz jakieś błedy, daj mi znać. doc-linux-pl-2002.06.14.orig/html/DNS49-HOWTO.pl.html0100664000175000017500000020013506770264140020343 0ustar covencoven DNS HOWTO

DNS HOWTO

Nicolai Langfeldt janl@math.uio.no
v1.3.2, 3 June 1997
Wersja polska: Piotr Pogorzelski piotr.pogorzelski@ippt.gov.pl
v1.0.1, kwiecień 1998


Jak w zostać małoetatowym administratorem DNS. Dokument opisuje BIND-4.9.x.

1. Wstęp

Słowa kluczowe: DNS, bind, named, dialup, ppp, slip, Internet, domain, name, hosts, resolving

1.1 Legal stuff

(C)opyright 1995 Nicolai Langfeldt. Do not modify without amending copyright, distribute freely but retain copyright message.

1.2 Podziękowania i prośby o pomoc.

Chciałbym podziękować Arnt Gulbrandsen, który niezliczoną liczbę razy czytał ten dokumend dostarczając wielu pożytecznych sugestii. Dziękuję również ludziom, którzy przysłali swoje sugestie pocztą elektroniczną. Dziękuje. Pomogliście mi w pracy nad tym dokumentem.

1.3 Inne dokumenty

Ten dokument nigdy nie będzie skończony, wszelkie uwagi (ogólne - nie dotyczące polskiej wersji tego dokumentu) proszę przesyłać autorowi. Czeka na uwagi o sukcesach i kłopotach, dzięki nim dokument stanie się pełniejszy i lepszy. Tak więc pieniądze, pytania/uwagi kierujcie na adres janl@ifi.uio.no. Jeśli wysyłacie pocztą elektroniczną, upewnijcie się, że adres zwrotny jest poprawny. Proszę, przed wysłaniem listu zapoznajcie się wcześniej z rodziałem FAQ dotyczącym najczęsciej pojawiających się pytań.

1.4 Dedykacja

Ten dokument HOWTO jest dedykowany Anne Line Norheim. Pomimo, że prawdopodobnie nigdy go nie przeczyta.

2. Wprowadzenie.

Co tu znajdziecie, a czego nie.

Dla początkujących, DNS oznacza Domain NAme System, Zasady i programy umożliwiające odwzorowanie (zamianę) nazw symbolicznych nadawnych komuterom na odpowiadające imadresy IP. Niniejszy dokument przedstawia w jaki sposób stworzyć takie odwzrowanie wykorzystując do tego Linuxa. Wspomniane odwzorowanie to proste skojarzenie dwóch rzeczy, symbolicznej nazwy komputera np. ftp.linux.org z adresem IP tego komputera, 199.249.150.4.

DNS to jeden z bardziej niezauważalnych obszarów zarządzania siecią. Niniejszy dokument postara się wyjaśnić kilka pojęć. Opisuje w jaki sposób zestawić prosty serwer DNS. Rozpoczynając od podręzcnego serwera DNS aż do uruchomienia podstawowego serwera domeny. Bardziej skomplikowane konfiguracje mogą być opisane w rozdziale FAQ. Jeśli nie znajdziesz tam rozwiązania swoich problemów, musisz zapoznać się z Prawdziwą Dokumentacją. Później napiszę co to jest Prawdziwa dokumentacja the last chapter.

Zanim zaczeniesz działać musisz wpierw skonfigurować swój komputer, tak abyć mógł łączyć się z niego i do niego za pomocą programu telnet, oraz wykonywać inne różnego rodzaju połączenia sieciowe. W szczególności powinieneś móc połączyć sie ze swoim komputerem wydając polecenie telnet 127.0.0.1 (sprawdź to teraz!). Potrzebujesz poprawnie skonfigurowanych plików /etc/host.conf (lub /etc/nsswitch.conf), /etc/resolv.conf i /etc/hosts ponieważ nie będę w tym dokumencie omawiał ich funkcji. Jeśli nie masz potrzebnej konfiguracji sieciowej pomże ci dokument NET-2-HOWTO. Przeczytaj go.

Jeśli korzystasz ze SLIPa lub PPP, muszą poprawnie działać. Jeśli tak nie jest przeczytaj PPP-HOWTO.

Kiedy mówię `twój komputer', to znaczy, że mam na myśli komputer na którym próbujesz uruchomić serwer DNS, a nie jakikolwiek inny komputer który może być pośrednio związany z działaniem sieci.

Zakładam, że nie znajdujesz się za żadną 'ścianą ogniową', która uniemożliwia komuniekację DNS ze światem zewnętrznym. Jeśli tak nie jest, będziesz potrzebował specjalnej konfiguracji, zapoznaj się z rozdziałem FAQ.

Serwowanie nazw pod systemem UNIX jest wykonywane przez program o nazwie named. Jest to część pakietu bind, który prowadzi i którym opiekuje się Paul Vixie z The Internet Software Consortium. Named jest dostarczany przez większość dystrybucji Linuxa i zwykle można go znaleźć w /usr/sbin/named. Jeśli jest on zainstalowany na twoim komputerze, prawdopodobnie możesz z niego skorzystać, jeśli nie, możesz zainstalować jego najnowszą wersje, którą znajdziesz w ftp.vix.com:/pub/bind.

DNS jest ogólnosieciową bazą danych. Trzeba uważać co się do niej wkłada. Jeśłi włoży się śmiecie, ty i inni otrzymacie z niej śmiecie. Muszisz utrzymywać swoją część DNSu uporządkowaną i poprawną. Wtedy będzie ci dobrze służyć. Naucz się jak z niej korzystać, jak nią zarządzać, jak ją odpluskwiać, a staniesz się kolejnym dobrym administratorem zapobiegając przeciązenim sieci wywołanym jej złym zarządzaniem.

W tym dokumencie wypowiadam sądy o pewnych rzeczach, które nie są do końca prawdziwe (choć są co najmniej w połowie prawdziwe). Wszystko po to, aby zachować prostotę tego dokumentu. Jeśli mi uwierzysz wszystko powinno działać.

Wskazówka: Zrób kopie wszystkich plików, które każe zmienić, tak aby w przypadku niepowodzenia całej konfiguracji bys mógł wrócić do stanu pierwotnego.

3. Podręczny serwer DNS.

Pierwszy etap konfiguracji DNS, pożyteczny dla osób łączących się z Internetem przez modem.

Podręczny serwer DNS znajdzie odpowiedzi na pytania o nazwy komputerów i zapamięta je, tak aby mógł natychmiast odpowiedzieć, gdy będziesz ich potrzebował ponownie.

Po pierwsze potrzebny jest plik /etc/named/.boot. Jest czytany podczas uruchamiania programu named. W naszym przypadku powienien po prostu zawierać:


;  Plik startowy podręcznego serwera DSN
;
directory /var/named
;
; rodzaj          domena                        plik lub komputer źródłowy
cache           .                               root.cache
primary         0.0.127.in-addr.arpa            pz/127.0.0

BARDZO WAŻNE: W niektórych formatach tego dokumentu, zawartość wspomnianego pliku będzie poprzedzona kilkoma spacjami lub znakami tabulacji. Znaki te nie mogą znależć się w prawdzimym pliku konfiguracyjnym. Usuń wszelkie wiodące spacje w plikach utworzonych na podstawie tego dokumnetu (np przez kopiowanie fragmentów).

Wiersz z poleceniem `directory' wskazuje, gdzie program named powienien szukać plików. Wszystkie podawane póżniej nazwy plików będą nazwami względem tego katalogu. /var/named jest właściwym miejscem, zgodnym ze Standardem systemów plików w systemie Linux (FSS).

Plik o nazwie /var/named/root.cache powienien zawierać:


 .       518400  NS      D.ROOT-SERVERS.NET.
 .       518400  NS      E.ROOT-SERVERS.NET.
 .       518400  NS      I.ROOT-SERVERS.NET.
 .       518400  NS      F.ROOT-SERVERS.NET.
 .       518400  NS      G.ROOT-SERVERS.NET.
 .       518400  NS      A.ROOT-SERVERS.NET.
 .       518400  NS      H.ROOT-SERVERS.NET.
 .       518400  NS      B.ROOT-SERVERS.NET.
 .       518400  NS      C.ROOT-SERVERS.NET.
;
D.ROOT-SERVERS.NET.     3600000 A       128.8.10.90
E.ROOT-SERVERS.NET.     3600000 A       192.203.230.10
I.ROOT-SERVERS.NET.     3600000 A       192.36.148.17
F.ROOT-SERVERS.NET.     3600000 A       192.5.5.241
G.ROOT-SERVERS.NET.     3600000 A       192.112.36.4
A.ROOT-SERVERS.NET.     3600000 A       198.41.0.4
H.ROOT-SERVERS.NET.     3600000 A       128.63.2.53
B.ROOT-SERVERS.NET.     3600000 A       128.9.0.107
C.ROOT-SERVERS.NET.     3600000 A       192.33.4.12

Pamiętaj co mówiłem o wiodących odstępach!.

Plik określa główne serwery DNS na świecie. Ta informacja zmienia się z czasem i musi być poprawiana. Patrz Rozdziało utrzymaniu serwera, znajdziesz tam rady skąd uzyskiwać aktualne informacje. Jest to opisane na stronie podręcznika dotyczącej programu named, lecz IMHO nadaje się dla ludzi, którzy już rozumieją jak pracuje named.

Kolejny wiersz w named.boot zawiera słowo kłuczowe primary. Później opiszę jego zadanie, teraz po prostu utwórz w katalogu pz plik o nazwie 127.0.0 zawierający:


@               IN      SOA     linux.bogus. hostmaster.linux.bogus. (
                                1       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      ns.linux.bogus.
1                       PTR     localhost.

Do tego potrzebujesz jeszcze plik /etc/resolv.conf, który by wyglądał mniej więcej tak:


search poddomena.twoja.domena. twoja.domena
nameserver 127.0.0.1

Wiersz `search' określa, które domeny powinny być przeglądane w poszukiwaniu komputera z którym chcemy nawiązać połączenie. Wiersz `nameserver' zawiera adres IP komputera, serwera DNS, z którego może korzystać twój komputer. W tym przypadku jest to twój komputer ponieważ to właśnie na nim chcesz uruchomić program named. (Uwaga: Ten plik jest czytany przez procedury resolwera biblioteki libc, program named nie zagląda do tego pliku.)

Mała ilustracja do czego służy ten plik: jeśli program otrzyma za zadanie znalezienie adresu komputera foo, najpierw jest sprawdzane czy istnieje komputer foo.poddomena.twoja.domena, a w przypadku niepowodzenia następnie sprawda się foo.twoja.domena, a na końcu foo. Jeśli należy znaleźć sunsite.unc.edu wpierw sprawdza się istnienie sunsite.unc.edu.poddomena.twoja.domena (tak, jest to glupie, ale tak musi być), następnie sunsite.unc.edu.twoja.domena, a na końcu sunsite.unc.edu. Możesz nie chcieć umieszczać w tym pliku zbyt wielu domen, każde wyszukanie zajmuje trochę czasu.

W kolejnym przykładzie zakładamy, że należysz do domeny poddomena.twoja.domena, twój komputer nowsi nazwę twój-komputer.poddomena.twoja.domena. Wiersz z poleceniem search nie powinien zawierać domeny najwyższego poziomu (TLD -Top Level Domain) (a w Polsce domeny drugiego poziomu np. edu.pl, /com.pl/). Jeśli bardzo często łączysz się z komputerami należącymi do innej domeny, możesz ją dodać do wiersza z poleceniem search:


search poddomena.twoja.domena. inna-domena.com.pl. 

itd. Oczywiście należy wpisać istniejące domeny. Zwróć uwagę na brak kropki kończącej nazwę domeny.

Następnie, zależnie od wersji biblioteki libc, której używasz musisz poprawić albo plik /etc/nsswitch.conf lub /etc/host.conf. Jeśli w twoim systemie już jest plik /etc/nsswitch.conf to znaczy, że należy poprawić ten właśnie plik, jęsli go nie ma, będziemy poprawiwać /etc/hosts.conf.

/etc/nsswitch.conf

To spory plik okreśłający skąd system ma pobierać różnego rodzaju informacje, z których plików, lub sieciowychs baz danych. Zwykle zawiera pomocne komentarze. Znajdź wiersz zaczywnający się słowem `hosts:', powinien wyglądać następująco:


hosts:      files dns

Jeśli nie ma wiersza zaczynającego się od `hosts', to dodaj przedstawiony powyżej. Deiniuje on, że programy wpierw powinny zajżeć do pliku /etc/hosts i dopiero w następnej kolejności sprawdzać w DNSie, w sposób zgodny z wytycznymi znajdującymi się w pliku /etc/resolv.conf.

/etc/host.conf

Prawdopodowbie zawiera kilkanaście wierszym jeden z nich powinien wyglądać następująco:


order hosts,bind

Jeśli nie ma wiersza rozpoczynającego się słowem order powinno się taki dodać. Określa on sposób działania procedur rozwiązujących nazwy komputerów, które w podanej konfiguracji wpierw sprawdzają plik /etc/hosts , a następnie pytają serwer DNS (który jest zdefiniowany w pliku /etc/resolv.conf jako 127.0.0.1). Te pliki są dokładniej opisane na stronach podręcznika, można je przeczytać pisząc `man 8 resolv (w większości dystrybucji Linuxa). IMHO jest to całkiem zrozumiały tekst i powinien się z nim zapoznać każdy administrator DNSu. Zrób to teraz, jeśli odłożysz to na później, nigdy tego nie zrobisz.

Cect1>Uruchamianie programu named.

Przyszedł nareszcie czas uruchomic program named. Jeśli korzystasz z połączenia dzwonionego, przed uruchomieniem programu zestaw połaczenie. Nastepnie uruchom `ndc start' i wciśnij ENTER. Gdyby powloka nie mogła znaleźć progrmu ndc, spróbuj `/usr/sbin/ndc start'. Jeśli tam też nie ma tego programu zajżyj do rozdziału FAQ. Teraz możesz przetestować swoją konfigurację. Jeśli podczas uruchamiania programu named będziesz podglądał plik dziennika (zwykle tail -f /var/log/messages ) powinieneś zobaczyć komunikaty podobne do tych poniżej:

Jun 30 21:50:55 roke named[2258]: starting.  named 4.9.4-REL Sun Jun 30 21:29:03 MET DST 1996   janl@roke.slip.ifi.uio.no:/var/tmp/bind/named
Jun 30 21:50:55 roke named[2258]: cache zone "" loaded (serial 0)
Jun 30 21:50:55 roke named[2258]: primary zone "0.0.127.in-addr.arpa" loaded (serial 1)

Jeśli zobaczysz jakiekolwiek komunikaty o błędach, named wskaże plik zawierający błąd (mam nadzieję, że named.boot lub named.cache :-). Zabij proces named (ndc stop) i sprawdź wskazany plik.

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

>

Jeśli wyświetlone komunikaty są zbliżone do tych powyżej, to znaczy, że wszystko działa. Mamy taką nadzieję. W każdym innym przypadku musisz wrócić i sprawdzić raz jeszcze pliki konfiguracyjne. Po każdej modyfikacji pliku /etc/named.boot musisz zrestartować program wydając polecenie ndc restart.

Teraz możesz wydawać zapytania. Spróbuj odnaleźć komputer blisko ciebie. pat.uio.no jest blisko mnie, Uniwersytet w Oslo:

> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Name:    pat.uio.no
Address:  129.240.2.50

nslookup poprosił nameda o wyszukanie komputera pat.uio.no. Named skontaktował się z jednym z serwerów nazw wymienionych w pliku root.cache i tam rozpoczął swą drogę. Zanim zobaczysz rezultat zapytania, może upłynąć całkiem spora chwila, ponieważ named przeszukuje wszystkie domeny wymienione w pliku /etc/resolv.conf/

Jeśli spróbujesz raz jeszcze otrzymasz taką odpowiedź:

> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Non-authoritative answer:
Name:    pat.uio.no
Address:  129.240.2.50

Zwróć uwagę na frazę `Non-authoritative answer:'. Oznacza, że tym razem named skorzystał ze swojej pamięci podręcznej i nie przeszukiwał sieci w poszukiwaniu odpowiedzi na twoje pytanie. Lecz informacja z pamięci podręcznej może być nieaktualna. Dlatetgo jesteś informowany o tym (pomijalnym) niebezpieczeństwie właśnie frazą `Non-authoritative answer:' (Odpwowiedź z nieautoryzowanego źródła). Jeśli nslookup w taki sposób odpowie na drugie zapytanie o ten sam komputer, jest to znak, że zapamiętuje odpowiedzi przychodzące z sieci, a to znaczy, że działa poprawnie. Aby zakończyć pracę z programem nslookup należy wydać polecenie exit.

Jeśli korzystasz z protokołów ppp, slip, zapoznaj się z rozdziałem FAQ<@@ref>autpo połączeniach modemowych, znajdziesz tam dla siebie kilka porad.

Teraz już wiesz jak skonfigurować podręczny serwer nazw (DNS). Polecam piwo, mleko lub inny ulubiony napój aby uczcić to wydarzenie.

4. Całkiem prosta domena.

Jak skonfigurować własną domenę.

4.1 Wpierw troche teorii.

Zanim naprawdę rozpoczniemy ten rozdział, mam zamiar przedstawić ci trochę teorii na temat pracy DNSu. A ty to przeczytasz, ponieważ jest to ci potrzebne. Jeśli ci się nie chce, powinieneś choć zapoznać się z nim powierzchownie. Możesz przestać, gdy dojdziesz do wyjaśnień, co należy umieścić w pliku named.boot.

DNS jest systemem hierarchicznym. Domena główna (najwyższego poziomu) jest oznaczana kropką `.' i nazywana `root'. W domenie . można znaleźć kilka "Domen najwyższego poziomu (TLD)" np. ORG, COM, EDU czy NET. Lecz jest ich znacznie więcej. Gdy chcesz znaleźć adres kompuera prep.ai.mit.edu twój serwer musi odnaleźć komputer obsługujący domenę edu. Zadaje pytanie serwerowi domeny . (serwery domeny . zna z pliku root.cache), otrzymuje listę serwerów obsługujących domenę edu. Oto mała ilustracja:

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

rozpoczynamy od zapytania serwera domeny głównej

> server c.root-servers.net.
Default Server:  c.root-servers.net
Address:  192.33.4.12

Ustawiamy rodzj zapytania: rekordy NS (adresy serwrów DNS)

> set q=ns

pytamy się o domenę edu.

> edu.

Kropka po słowie edu ma znaczenie, informuje serwer, że pytamy się o edu, które jest bezpośrednio w domenie głównej, w ten sposób wyłączamy z przeszukiwania domeny podane w pliku /etc/resolv.conf.

edu     nameserver = A.ROOT-SERVERS.NET
edu     nameserver = H.ROOT-SERVERS.NET
edu     nameserver = B.ROOT-SERVERS.NET
edu     nameserver = C.ROOT-SERVERS.NET
edu     nameserver = D.ROOT-SERVERS.NET
edu     nameserver = E.ROOT-SERVERS.NET
edu     nameserver = I.ROOT-SERVERS.NET
edu     nameserver = F.ROOT-SERVERS.NET
edu     nameserver = G.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET      internet address = 198.41.0.4
H.ROOT-SERVERS.NET      internet address = 128.63.2.53
B.ROOT-SERVERS.NET      internet address = 128.9.0.107
C.ROOT-SERVERS.NET      internet address = 192.33.4.12
D.ROOT-SERVERS.NET      internet address = 128.8.10.90
E.ROOT-SERVERS.NET      internet address = 192.203.230.10
I.ROOT-SERVERS.NET      internet address = 192.36.148.17
F.ROOT-SERVERS.NET      internet address = 192.5.5.241
G.ROOT-SERVERS.NET      internet address = 192.112.36.4

Otrzymaliśmy informacje, że domenę edu obsługują serwery *.root-servers.net, tak więc możemy kontynuować nasze pytanie kierując je nadal do serwera c.root-serwers.net. Teraz chcemy wiedzieć, kto obsługuje domenę następnego poziomu: mit.edu.:

> mit.edu.
Server:  c.root-servers.net
Address:  192.33.4.12

Non-authoritative answer:
mit.edu nameserver = STRAWB.mit.edu
mit.edu nameserver = W20NS.mit.edu
mit.edu nameserver = BITSY.mit.edu

Authoritative answers can be found from:
STRAWB.mit.edu  internet address = 18.71.0.151
W20NS.mit.edu   internet address = 18.70.0.160
BITSY.mit.edu   internet address = 18.72.0.3

steawb, w20ns i bitsy obsługują mit, wybierz jeden z nich i spytaj się o ai.mit.edu:

> server W20NS.mit.edu.

W nazwach kompyterów wielkość liter nie ma znaczenia, lecz ja do przenoszenia tekstu używam myszy, zapytanie ma taką samą formę jak poprzedzająca je odpowiedź.

Server:  W20NS.mit.edu
Address:  18.70.0.160

> ai.mit.edu.
Server:  W20NS.mit.edu
Address:  18.70.0.160

Non-authoritative answer:
ai.mit.edu      nameserver = WHEATIES.AI.MIT.EDU
ai.mit.edu      nameserver = ALPHA-BITS.AI.MIT.EDU
ai.mit.edu      nameserver = GRAPE-NUTS.AI.MIT.EDU
ai.mit.edu      nameserver = TRIX.AI.MIT.EDU
ai.mit.edu      nameserver = MUESLI.AI.MIT.EDU

Authoritative answers can be found from:
AI.MIT.EDU      nameserver = WHEATIES.AI.MIT.EDU
AI.MIT.EDU      nameserver = ALPHA-BITS.AI.MIT.EDU
AI.MIT.EDU      nameserver = GRAPE-NUTS.AI.MIT.EDU
AI.MIT.EDU      nameserver = TRIX.AI.MIT.EDU
AI.MIT.EDU      nameserver = MUESLI.AI.MIT.EDU
WHEATIES.AI.MIT.EDU     internet address = 128.52.32.13
WHEATIES.AI.MIT.EDU     internet address = 128.52.35.13
ALPHA-BITS.AI.MIT.EDU   internet address = 128.52.32.5
ALPHA-BITS.AI.MIT.EDU   internet address = 128.52.37.5
GRAPE-NUTS.AI.MIT.EDU   internet address = 128.52.32.4
GRAPE-NUTS.AI.MIT.EDU   internet address = 128.52.36.4
TRIX.AI.MIT.EDU internet address = 128.52.32.6
TRIX.AI.MIT.EDU internet address = 128.52.38.6
MUESLI.AI.MIT.EDU       internet address = 128.52.32.7
MUESLI.AI.MIT.EDU       internet address = 128.52.39.7

Okazuje się, że weaties.ai.mit.edu jest serwerem nazw dla doemny ai.mit.edu:

> server WHEATIES.AI.MIT.EDU.
Default Server:  WHEATIES.AI.MIT.EDU
Addresses:  128.52.32.13, 128.52.35.13

Teraz zmieniam rodzaj zapytania. Znamy już nazwę serwera nazw dla interesującej nas domeny, spytamy sie o jakiekolwiek informacje jakie serwer posiada na temat prep.ai.mit.edu.

> set q=any
> prep.ai.mit.edu.
Server:  WHEATIES.AI.MIT.EDU
Addresses:  128.52.32.13, 128.52.35.13

prep.ai.mit.edu CPU = dec/decstation-5000.25    OS = unix
prep.ai.mit.edu
        inet address = 18.159.0.42, protocol = tcp
         #21 #23 #25 #79
prep.ai.mit.edu preference = 1, mail exchanger = life.ai.mit.edu
prep.ai.mit.edu internet address = 18.159.0.42
ai.mit.edu      nameserver = alpha-bits.ai.mit.edu
ai.mit.edu      nameserver = wheaties.ai.mit.edu
ai.mit.edu      nameserver = grape-nuts.ai.mit.edu
ai.mit.edu      nameserver = mini-wheats.ai.mit.edu
ai.mit.edu      nameserver = trix.ai.mit.edu
ai.mit.edu      nameserver = muesli.ai.mit.edu
ai.mit.edu      nameserver = count-chocula.ai.mit.edu
ai.mit.edu      nameserver = life.ai.mit.edu
ai.mit.edu      nameserver = mintaka.lcs.mit.edu
life.ai.mit.edu internet address = 128.52.32.80
alpha-bits.ai.mit.edu   internet address = 128.52.32.5
wheaties.ai.mit.edu     internet address = 128.52.35.13
wheaties.ai.mit.edu     internet address = 128.52.32.13
grape-nuts.ai.mit.edu   internet address = 128.52.36.4
grape-nuts.ai.mit.edu   internet address = 128.52.32.4
mini-wheats.ai.mit.edu  internet address = 128.52.32.11
mini-wheats.ai.mit.edu  internet address = 128.52.54.11
mintaka.lcs.mit.edu     internet address = 18.26.0.36

Jak widać rozpoczynając od domeny głównej . znaleźliśmy kolejne serwery DNS. Gdybyśmy skorzystali z własnego serwera DNS, named zpamiętałby wszystkie informacje otrzymywane z sieci i nie musiałby przej jakiś czas pytać się serwerów, korzystając z przechowywanych informacji.

Mniej opisywaną lecz równie ważną domeną jest in-addr.arpa. Tak jak zwykłe domeny również posiada strukturę hierachiczną. in-addr.arpa pozwala na znalezienie nazwy komputera, jeśli tylko posiadamy jego adres IP. Należy tu zwrócić uwagę, że adres IP jest zapisywany w odwrotnej kolejności. Jeśli twój komputer posiada adres 192.128.52.43 named będzie się zachowywał tak samo jak w przykładzie poszukiwania informacji na temat komputera prep.ai.mit.edu: znajdź serwery domey arpa., znajdź serwery in-addr.arpa., znajdź serwery 192.in-addr.arpa., znajdź serwery 128.192.in-addr.arpa./, znajdź serwery 52.128.192.in-addr.arpa./, znjdź niezbędne rekordy dla 43.52.128.192.in-addr.arpa.. Jasne, nie ?! (opowiedz 'tak'). Przez pierwsze dwa lata odwracanie kolejności częsci adresu IP sprawia małe kłopoty.

Właśnie skłamałem. DNS nie pracuje dokładnie w taki sposów jaki wam przed chwilą przedstawiłem. Lecz jest to bardzo dobre przbliżenie.

4.2 Nasza własna domena.

Teraz zdefiniujemy naszą własną domenę. Nazwijmy ją linux.bogus. Umieśćmy w niej jeden komputer. Specjalnie używam całkowicie bzdurną nazwę domeny, aby mieć pewność, że nie przeszkodzimy nikomu z Sieci.

Rozpoczęliśmy tę część dodając do named.boot wiersz:


primary         0.0.127.in-addr.arpa            pz/127.0.0

Proszę zwrócić uwagę na brak kropki `.' kończącej nazwy domen. Pierwszy wiersz określa, że plik pz/127.0.0 zawiera informacje definiujące domenę 0.0.127.in-addr.arpa. Plik ten już został utworzony, wygląda następująco:


@               IN      SOA     linux.bogus. hostmaster.linux.bogus. (
                                1       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      ns.linux.bogus.
1                       PTR     localhost.

Proszę zwrócić uwagę na kropkę `.' kończącą pełne nazwy domen, w przeciwieństwie do omawianego wcześniej pliku named.boot. Niektórzy wolą rozpoczynać każdy plik strefy dyrektywą $ORIGIN lecz nie jest to konieczne. Pochodzenie (miejsce w hierarchi DNS, do którego przynależy) pliku strefy jest określone w kolumnie `domain' w pliku named.boot, w tym przypadku jest to 0.0.127.in-addr.arpa.

Powyższy plik strefy zawiera trzy rekordy (RR): SOA RR, NS RR i PTR RR. SOA jest skrótem Start Of Authority. Znak `@' jest znakiem specjalnym określającym pochodzenie, a ponieważ kolumna `domain' odpowiadająca temu plikowi mówi 0.0.127.in-addr.arpa, dlatego pierwszy wiersz tak naprawdę ma postać:

  0.0.127.IN-ADDR.ARPA. IN      SOA ...

NS to rekord serwera nazw. Wskazuje komputer, który jest serwerem nazw dla tej domeny. I na koniec rekord PTR mówi, że 1 (w pełnej formie 1.0.0.127.in-addr-arpa, tzn. 127.0.0.1) nosi nazwę localhost.

Rekord SOA stanowi nagłówek wszystkich plików stref, w każdym z plików powinien znajdować się dokładnie jeden rekord SOA, powinien to być pierwszy rekord w pliku. Opisuje on strefę, z której pochodzi (komputer o nazwie linux.bogus), kto jest odpowiedzialny za jej zawartość (hostmaster@linux.bogus), numer wersji pliku strefy (serial 1) oraz inne informacje, mające znaczenie dla pracy serwerów drugorzędnych. Jeśli dla pól refresh, retry, expire i minimum będziesz używał wartości jakie występują w tym dokumencie wszystko powinno działać poprawnie.

Rekord NS określna kto serwuje informacje DNS na temat 0.0.127.in-addr.arpa, jest to ns.linux.bogus. Rekord PTR mówi nam, że 1.0.0.127.in-addr.arpa (aka 127.0.0.1) jest znany pod nazwą localhost.

Teraz zrestartuj proces named (poleceniem ndc restart) i sprawdź poczynione zmiany programem nslookup:

$ nslookup

Default Server:  localhost
Address:  127.0.0.1

> 127.0.0.1
Server:  localhost
Address:  127.0.0.1

Name:    localhost
Address:  127.0.0.1

jak widać udało się pobrać informacje o localhost z komputera 127.0.0.1, to dobrze. Teraz nasze podstawowe zadanie, domena linux.bogus, dodaj do pliku named.boot wiersz definiujący nową domenę:


primary               linux.bogus                     pz/linux.bogus

Zwróć uwagę na powtarząjący sie brak znaku `.' kończących nazwy domen w pliku named.boot.

In the linux.bogus zone file we'll put some totally bogus data:


;
; Plik strefy linux.bogus
;
; Obowiązkowy zestaw minimum potrzebny do prawidłowej definicje domeny
;
@       IN      SOA     linux.bogus. hostmaster.linux.bogus. (
                        199511301       ; serial, todays date + todays serial #
                        28800           ; refresh, seconds
                        7200            ; retry, seconds
                        3600000         ; expire, seconds
                        86400 )         ; minimum, seconds
                NS      ns.linux.bogus.
                NS      ns.friend.bogus.
                MX      10 mail.linux.bogus   ; Primary Mail Exchanger
                MX      20 mail.friend.bogus. ; Secondary Mail Exchanger

localhost       A       127.0.0.1
ns              A       127.0.0.2
mail            A       127.0.0.4

Należy zrócić uwagę na dwie rzeczy dotyczące rekordu SOA. ns.linux.bogus musi byc rekordem RR typu A, czyli nazwą komputera, która posiada przydzielony numer IP. Niedopuszczalne jest, aby nazwa uzywana w rekordzie SOA byla rekordem tymu CNAME. Sam komputer nie musi nosic nazwy 'ns', może to byc dowolna poprawna nazwa. hostamster.linux.bogus należy odczytać jako hostmaster@linux.bogus, musi to byc adres (lub alias do) osoby (lub osób) opiekujących się DNSem dla tej domeny (i czytajacyh regularnie tę pocztę). Wszelka korespondencja dotycząca tej domeny będzie wysyłana na ten adres, może to być dowolny adres e-mail, choć kązdy spodziewa się, że adres 'hostmaster' będzie również adresem kontaktowym domeny.

W powyższym pliku znalazł się rekord RR nowego typu, a mianowicie rekord MX, inaczej rekord Mail eXchanger. Dostarcza on systemowi pocztowemu informacji, dokąd wysyłać pocztę adresowaną ktoś@linux.bogus, w tym przypadku do mail.linux.bogud lub mail.friend.bogus. Liczba poprzedzająca nazwę komputera oznacza priorytet rekordu. System pocztowy powinien korzystać w pierwszej kolejności z rekordów o najmniejszym priorytecie (w naszym przypadku 10). Jeśli nie uda się dostarczyć poczty na ten adres, należy spróbować innego adresu, o wyższym priorytecie. W naszym przypadku byłby to mail.friend.bogus, który posiada priorytet 20.

Teraz trzeba zrestartowac program named wydając polecenie ndc restart. Rezultaty naszej pracy mozemy sprawdzić programem nslookup.

$ nslookup
> set q=any
> linux.bogus
Server:  localhost
Address:  127.0.0.1

linux.bogus
        origin = linux.bogus
        mail addr = hostmaster.linux.bogus
        serial = 199511301
        refresh = 28800 (8 hours)
        retry   = 7200 (2 hours)
        expire  = 604800 (7 days)
        minimum ttl = 86400 (1 day)
linux.bogus     nameserver = ns.linux.bogus
linux.bogus     nameserver = ns.friend.bogus
linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
linux.bogus     preference = 20, mail exchanger = mail.friend.bogus
linux.bogus     nameserver = ns.linux.bogus
linux.bogus     nameserver = ns.friend.bogus
ns.linux.bogus  internet address = 127.0.0.2
mail.linux.bogus        internet address = 127.0.0.4

Przypatrując się dokładnie widzimy, że popełniliśmy błąd. Wiersz

  linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus

jest niepoprawny. powinien wyglądać następująco:

  linux.bogus     preference = 10, mail exchanger = mail.linux.bogus

Specjalnie popełniłem błąd, abyście mogli się na nim uczyć :-). Przyglądając się plikowi źródłowemu zauważamy, że w wierszu

@               MX      10 mail.linux.bogus     ; Primary Mail Exchanger
brakuje kropki. Lub inaczej mówiać ma zbyt wiele członów 'linux.bogus'. Gdy nazwa komputera występująca w pliku żródłowym strefy nie kończy się kropką, program na koniec dokleja 'origin' (pochodzenie, domenę definiowaną przez ten plik źródłowy). Dlatego nazwy komputerów należy podawać w sposób pełny, pilnując końcowej kropki


@               MX      10 mail.linux.bogus.    ; Primary Mail Exchanger

lub uproszczony


@               MX      10 mail                 ; Primary Mail Exchanger

Oba sposoby są poprawne. Osobiście preferuje drugą metodę, mniej pisania. W pliku strefy domena powinna być podana w całości, razem z kończącą ją kropką (.) lub w ogole nie powinna być podawana. W takim przypadku domyślnie przyjmuje się tzw. origin. Muszę podkreślić, że nazwy domen w pliku named.boot nie powinny się kończyć kropką. Nie macie pojęcia, jak wiele razy nadmierna liczba kropek, lub ich brak spowodowała zamieszanie i ogłupiła mnóstwo ludzi.

Skoro już powiedziłąem co miałęm do powiedzenia, poniżej przedstawiam nowy źródłowy plik strefy z nowymi, dodatkowymi informacjami:


;
; Plik strefy dla linux.bogus
;
; Obowiązkowy zestaw minimum potrzebny do prawidłowej definicje domeny
;
@       IN      SOA     linux.bogus. hostmaster.linux.bogus. (
                        199511301       ; serial, todays date + todays serial #
                        28800           ; refresh, seconds
                        7200            ; retry, seconds
                        604800          ; expire, seconds
                        86400 )         ; minimum, seconds

                NS      ns              ; Inet Address of name server
                NS      ns.friend.bogus.
                MX      10 mail         ; Primary Mail Exchanger
                MX      20 mail.friend.bogus. ; Secondary Mail Exchanger

localhost       A       127.0.0.1
ns              A       127.0.0.2
mail            A       127.0.0.4
;
; Extras
;
@               TXT     "Linux.Bogus, your DNS consultants"

ns              MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "Pentium" "Linux 1.2"
                TXT     "RMS"
richard         CNAME   ns
www             CNAME   ns

donald          A       127.0.0.3
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "i486"  "Linux 1.2"
                TXT     "DEK"

mail            MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "386sx" "Linux 1.0.9"

ftp             A       127.0.0.5
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "P6" "Linux 1.3.59"

Moglibyście chcieć przesując pierwsze trzy rekordy A, tak aby sąsiadowały z innymi rekordami tego typu, zamiast siedzieć na początku listy.

W powyższym przykładzie pojawiły się rekordy nowego typu: HINFO (Host INFOrmation) składa się z dwóch częsci, dobrym zwyczajem jest umiesczenie obu w cudzysłowach. Pierwsza część określa hardware, lub procesor komputera, druga oprogramowanie lub pracujący na nim system operacyjny. Komputer ns to Pentium, pracujące pod Linuxem 1.2. Rekord TXT może zawierać dowolny tekst. Można go wykorzystywać do różnych celów. CNAME (Cannonical NAME) to sposób na nadanie wielu nazw jednemu komputerowi. Tak więc richard i www są aliasami komputera ns. To ważne aby pamiętać, że rekordy A, MX, CNAME i SOA nigdy nie powinny wskazywać na rekord CNAME. Zawsze powinny wsazywać na rekord A. Dlatego ta forma jest niepoprawna


foobar  CNAME   richard                 ; NO!

i powinna zostać zastąpiona przez


foobar  CNAME   ns                      ; Yes!

Równie ważne jest pamiętanie, że rekord CNAME nie jest poprawną nazwą, którą można stosować w adresach e-mail. Nawiązując do poprzedniego przykładu, adres wmail webmaster@www.linux.bogus nie jest niepoprawny. Możesz oczekiwać, że całkiem spora liczba administratorów pocztowych Stamtąd będzie wymagała popdorządkowania się tej regule pomimo, że w twoim przypadku wszystko może działać poprawnie. Sposobem na uniknięcie kłopotów jest stosowanie rekordów A (i być może również innych, np. rekordów MX):


www     A       127.0.0.2

Paul Vixie, największy z wizardów programu named, sugeruje aby nie korzystać z rekordów CNAME. Dlatego bardzo poważnie zastanów się nad ograniczeniem uzywania rekordów CNAME.

Załaduj nową wersję bazy wydając polecenie ndc reload, wymusi ona na procesie ponowne odczytanie plików konfiguracyjnych.

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

> ls -d linux.bogus

Powyższe polecenie spowoduje przedstawienie wszystkich rekordów.

[localhost]
 linux.bogus.                   SOA   linux.bogus hostmaster.linux.bogus. (1995
11301 28800 7200 604800 86400)
 linux.bogus.                   NS    ns.linux.bogus
 linux.bogus.                   NS    ns.friend.bogus
 linux.bogus.                   MX    10   mail.linux.bogus
 linux.bogus.                   MX    20   mail.friend.bogus
 linux.bogus.                   TXT   "Linux.Bogus, your DNS consultants"
 localhost                      A     127.0.0.1
 mail                           A     127.0.0.4
 mail                           MX    10   mail.linux.bogus
 mail                           MX    20   mail.friend.bogus
 mail                           HINFO 386sx       Linux 1.0.9
 donald                         A     127.0.0.3
 donald                         MX    10   mail.linux.bogus
 donald                         MX    20   mail.friend.bogus
 donald                         HINFO i486        Linux 1.2
 donald                         TXT   "DEK"
 www                            CNAME ns.linux.bogus
 richard                        CNAME ns.linux.bogus
 ftp                            A     127.0.0.5
 ftp                            MX    10   mail.linux.bogus
 ftp                            MX    20   mail.friend.bogus
 ftp                            HINFO P6          Linux 1.3.59
 ns                             A     127.0.0.2
 ns                             MX    10   mail.linux.bogus
 ns                             MX    20   mail.friend.bogus
 ns                             HINFO Pentium     Linux 1.2
 ns                             TXT   "RMS"
 linux.bogus.                   SOA   linux.bogus hostmaster.linux.bogus. (1995
11301 28800 7200 604800 86400)

Jest dobrze. Zobaczmy jaką odpowiedź otrymamy pytając się wyłącznie o komputer www:

> set q=any
> www.linux.bogus.
Server:  localhost
Address:  127.0.0.1

www.linux.bogus canonical name = ns.linux.bogus

... Innymi słowy, prawdziwa nazwa komputera www.linux.bogus to ns.linux.bogus.

linux.bogus     nameserver = ns.linux.bogus
linux.bogus     nameserver = ns.friend.bogus
ns.linux.bogus  internet address = 127.0.0.2

a ns.linux.bogus ma adres 127.0.0.2. To również wygląda poprawnie.

4.3 Co dalej.

Oczywiście powyższa domena jest nierzeczywista, jak również adresy IP podane w przykładzie, co może utrudniać zrozumienie. Przykład przwdziwej domeny znjdziecie w następnym rozdziale.

5. Przykład, prawdziwa domena.

Skąd wziąć pliki prawdziwej domeny.

UZytkownicy zwrócili mi uwagę, że powinienem dołączyć przykład plików definiujących prawdziwą domene, ponieważ różnica pomiędzy domeną przykładową i prawdziwą nie była do ońca jasna.

Jedna uwaga dotycząca tego przykładu: nie wprowadzajcie tych plików do swoich serwerów DNS! Przedstawione pliki służą jedynie jako punkt odniesienia. Jeśli chcesz eksperymentować, wykorzystaj domenę przykładową linux.bogus. Korzystam z tego przykładau za pozwoleniem Davida Bullocka z LAND-5. Prezentowane informacje były aktualne 14 sierpnia 1196 roku, i mogą się róznić od aktualnych. Należy ciągle pamiętać o uwagach na temat wiodących odstępów w plikach przykładowych.

5.1 /etc/named.boto (lub /var/named/named.boot)

Oto dwa wiersze potrzebne d ozdefiniowania dwóch stref (domen) odwrotnych.: siec 127.0.0 oraz siec LAND-5 o numerach 206.6.177. Oraz wiersz deklarujący, że nasz serwer jest serwerem podstawowym domeny land-5.com. Proszę zauważyc, że zamiast umieszczania plików z danymi w sugerowanym wcześcniej przeze mnie katalogu pz, tutaj pliki są umieszczane w katalogu zone.


;  Boot file for LAND-5 name server
;
directory /var/named
;
; type          domain                          source file or host
cache           .                               root.cache
primary         0.0.127.in-addr.arpa            zone/127.0.0
primary         177.6.206.in-addr.arpa          zone/206.6.177
primary         land-5.com                      zone/land-5.com

5.2 /var/named/root.cache

Proszę pamiętać, że ten plik się zmienia, i ten przedstawiony tutaj jest już stary. Lepiej skorzystaj z tego, genrowanego programem dig.


; <<>> DiG 2.1 <<>> 
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6
;; flags: qr rd ra; Ques: 1, Ans: 9, Auth: 0, Addit: 9
;; QUESTIONS:
;;      ., type = NS, class = IN

;; ANSWERS:
 .       518357  NS      H.ROOT-SERVERS.NET.
 .       518357  NS      B.ROOT-SERVERS.NET.
 .       518357  NS      C.ROOT-SERVERS.NET.
 .       518357  NS      D.ROOT-SERVERS.NET.
 .       518357  NS      E.ROOT-SERVERS.NET.
 .       518357  NS      I.ROOT-SERVERS.NET.
 .       518357  NS      F.ROOT-SERVERS.NET.
 .       518357  NS      G.ROOT-SERVERS.NET.
 .       518357  NS      A.ROOT-SERVERS.NET.

;; ADDITIONAL RECORDS:
H.ROOT-SERVERS.NET.     165593  A       128.63.2.53
B.ROOT-SERVERS.NET.     165593  A       128.9.0.107
C.ROOT-SERVERS.NET.     222766  A       192.33.4.12
D.ROOT-SERVERS.NET.     165593  A       128.8.10.90
E.ROOT-SERVERS.NET.     165593  A       192.203.230.10
I.ROOT-SERVERS.NET.     165593  A       192.36.148.17
F.ROOT-SERVERS.NET.     299616  A       192.5.5.241
G.ROOT-SERVERS.NET.     165593  A       192.112.36.4
A.ROOT-SERVERS.NET.     165593  A       198.41.0.4

;; Total query time: 250 msec
;; FROM: land-5 to SERVER: default -- 127.0.0.1
;; WHEN: Fri Sep 20 10:11:22 1996
;; MSG SIZE  sent: 17  rcvd: 312

5.3 /var/named/zone/127.0.0

Tylko podstawowe rekordy, obowiązkowo rekord SOA, rekord odwzorujący 127.0.0.1 na localhost. Oba są konieczne. Nic więcej w tym pliku nie jest potrzebne.PRzwdopodobnie nigdy już nie powinny byćmodyfikowane, cgyba, że zmieni się adres serwera DNS lub adres email uzywany w rekordzie SOA.


@               IN      SOA     land-5.com. root.land-5.com. (
                                199609203       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      land-5.com.
        
1                       PTR     localhost.

5.4 /var/named/zone/land-5.com

Tutaj możemy zobaczyć obowiązkowy rekord SOA, potrzebne rekordy NS. Widzimy, że drugorzędny serwer DNS to ns1.psi.net. Jest tak, jak być powinno, zawsze musi być drugi, zapasowy serwer DNS umieszczony poza twoją siecią. Widzimy również, że komputergem głównym jest land-5, serwujący rózne usługi do których kierują odpowiednie rekorddy CNAME (alternatywa jest używanie rekordów A).

Patrząc na rekord SOA widzimy, że ta strefa(domena) dns pochodzi z komutera land-5.com. W sprawach związanyc hz tą domeną należy kontaktować się z root@land-5.com. hostmaster to inny, często używany w takich przypadkach adres e-mail. Numer seryjny w powszechnie przyjętym formacie rrrrmmdd z dodaną liczbą zmian danego dnia wskazuje, że jest to prawdopodobnie szósta wersja tego pliku w dniu 20. września 1996. Pamiętaj, że numer seryjny musi monotonicznie rosnąć. W tym przypadku pozostawiono jedna cyfrę jalo kicznik zmian jednego dnia. Po wykonaniu dziewięciu poprawek, następną mozna wykonac dopiero następnego dnia. Dlatego rozważ stosowanie dwóch pozycji do oznaczania liczby modyfikacji jednego dnia.


@       IN      SOA     land-5.com. root.land-5.com. (
                        199609206       ; serial, todays date + todays serial #
                        10800           ; refresh, seconds
                        7200            ; retry, seconds
                        10800           ; expire, seconds
                        86400 )         ; minimum, seconds
                NS      land-5.com.
                NS      ns2.psi.net.
                MX      10 land-5.com.  ; Primary Mail Exchanger

localhost       A       127.0.0.1

router          A       206.6.177.1
        
land-5.com.     A       206.6.177.2
ns              CNAME   land-5.com.
ftp             CNAME   land-5.com.
www             CNAME   land-5.com.
mail            CNAME   land-5.com.
news            CNAME   land-5.com.

funn            A       206.6.177.3
illusions       CNAME   funn.land-5.com.
@               TXT     "LAND-5 Corporation"

;
;       Workstations
;
ws_177200       A       206.6.177.200
                MX      10 land-5.com.   ; Primary Mail Host
ws_177201       A       206.6.177.201
                MX      10 land-5.com.   ; Primary Mail Host
ws_177202       A       206.6.177.202
                MX      10 land-5.com.   ; Primary Mail Host
ws_177203       A       206.6.177.203
                MX      10 land-5.com.   ; Primary Mail Host
ws_177204       A       206.6.177.204
                MX      10 land-5.com.   ; Primary Mail Host
ws_177205       A       206.6.177.205
                MX      10 land-5.com.   ; Primary Mail Host
; {Many repetitive definitions deleted - SNIP}
ws_177250       A       206.6.177.250
                MX      10 land-5.com.   ; Primary Mail Host
ws_177251       A       206.6.177.251
                MX      10 land-5.com.   ; Primary Mail Host
ws_177252       A       206.6.177.252
                MX      10 land-5.com.   ; Primary Mail Host
ws_177253       A       206.6.177.253
                MX      10 land-5.com.   ; Primary Mail Host
ws_177254       A       206.6.177.254
                MX      10 land-5.com.   ; Primary Mail Host

Można jeszcze zwrócić uwagę na to, że stacje robocze nie posiadają indywidualnych nazw, lecz raczej prefix po którym następuje dwuczłonowy fragmnet adresu IP. Korzystanie z takiej konwencji może znacznie ułatwić opiekę nad DNSem, lecz nie jest przez wszystkich najmilej widziane.

5.5 /var/named/zone/206.6.177

Komentarz później.


@               IN      SOA     land-5.com. root.land-5.com. (
                                199609206       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      land-5.com.
                        NS      ns2.psi.net.
;
;       Servers
;
1       PTR     router.land-5.com.
2       PTR     land-5.com.
3       PTR     funn.land-5.com.
;
;       Workstations
;
200     PTR     ws_177200.land-5.com.
201     PTR     ws_177201.land-5.com.
202     PTR     ws_177202.land-5.com.
203     PTR     ws_177203.land-5.com.
204     PTR     ws_177204.land-5.com.
205     PTR     ws_177205.land-5.com.
; {Many repetitive definitions deleted - SNIP}
250     PTR     ws_177250.land-5.com.
251     PTR     ws_177251.land-5.com.
252     PTR     ws_177252.land-5.com.
253     PTR     ws_177253.land-5.com.
254     PTR     ws_177254.land-5.com.

definicja domeny odwrotnej powoduje zwykle najwięcej kłopotów. Służy do znajdywania nazwy komputera, znając jego adres IP. Przykład: Posiadasz serwer IRC i przyjmujesz połączenia od klientów. Jednakże jako serwer Norweski chcesz jedynie zezwalać na połączenia komputerów norweskich lub skandynawskich. Po nawiązaniu połączenia procedury biblioteki C są w stanie ustalić spod jakiego adresu IP zostało nawiązane nowe połączenie, ponieważ adres IP zdalnego komputera jest przekazywany w pakietach danych przesyłanych siecią. Teraz możesz skorzystać z funkcji gethostbyaddr, która znajduje nazwę odpowiadającą podanemu adresowi IP. Gethostbyaddr zapyta serwer DNS, który z kolei dokona całego wyszukania. Zakładając, że klient połączył się z komputera ws_177200.land-5.com, adres IP przekazany przez proceduty biblioteki lib C do serwera DNS będzie brzmiał: 206.6.177.200. Aby dowiedzieć się jaka nazwa odpowiada temu adresowi musimy znależć wartość rekordu 100.177.6.206.in-addr.arpa. Serwer DNS wpierw znajdzei serwery domane arpa, in-addr.arpa, 206.in-addr.arpa, 6.206.in-addr.arpa dochodząc do serwera 177.6.206.in-addr.arpa w land-5. Ostatecznie otrzyma stamtąd odpowiedź, że dla 200.177.6.206.in-addr.arpa istnieje rekord PTR o wartości ws_177200.land-5.com, co znaczy, że adresowi 206.6.177.200 odpowiada nazwa ws_177200.land-5.com. Podobnie jak w przypadku wyjaśnien odszukiwania adresu dla nazwy prep.ai.mit.edu, powuższe wyjaśnienie trochę mija się z rzeczywistością.

Powracając do przykładu IRC. Serwer IRC akceptuje połączenia pochodzące z krajów skandynawskich, tzn. *.no, *.se, *.dk. Nazwa ws_177200.land-5.com nie pasuje do żadnego z powyższych wzorców i serwer odmówi połączenia. Gdyby nie istniało odwzorowanie odwrotne adresu 206.6.177.200 poprzez strefę in-addr.arpa, wtedy serwer nie miałby możliwości znalezienia nazwy łączącego się komputera a porównywanie adresów ip z wzorcami domen, nigdy nie przynosiłoby poprawnych rezultatów.

Niektórzy twierdzą, żę odwrotne odwzorowanie adresów IP jest ważne jedynie dla serwerów, lub nie jest ważne w ogóle. Nie do końca: wiele serwerów ftp, news, irc, a nawet niektóre serwery http (WWW) nie zezwolą na połączenia z komputerów, których adresy nie są zarejestrowane w domenie odwrotnej. Dlatego faktem jest, że rejestracja w domenie odwrotnej jest konieczna.

6. Utrzymanie i konserwacja

Utrzymywanie w pracy ciągłej.

Prócz pilnowania aby proces named byl zawsze katywny pozostaje jedynie pilnowanie, aby plik root.cache był zawsze aktualny. Najprostszą metodą jest skorzystanie z programu dig, wpierw należy go uruchomić bez żadnych argumentóww, otrzymamy plik root.cache uzywany przez nasz serwer. Następnie należy o to samo zapytać jeden z głównych serwerów DNS (root servers) wydając polecenie dig @rootserver. Zauważysz, że wynik tego polecenia bardzo przypomina plik root.cache z dokładnością do kilku liczb. Te liczby nie mogą uczynić nam żadnej szkody. Zapisz wynik polecenia do pliku (dig @e.root-servers.net >root.cache.new), a następnie zastąp nim stary plik root.cache.

Pamiętaj, aby po zamianie pliku root.cache zrestartować proces named.

Al Longyear przysłał mi poniższy skrypt, który można uruchamić i automatycznie uaktualniac plik root.cache. Zainstaluj go w crontabie i zpomnij. Niniejszy skrypt zakłada, że na twoim komputerze działa system poczty elektornicznej i istnieje alias pocztowy hostmaster. Przed uruchomieniem powinienes go dostosować so swoich ustawien.


#!/bin/sh
# polish translation piotr.pogorzelski@ippt.gov.pl 1997
# Uaktualnianie informacji o głównych serwerach DNS.
# Ten skrypt powinien byc uruchamiany automatycznie raz w miesiacu
# przez program cron.
#
(
 echo "To: hostmaster <hostmaster>"
 echo "From: system <root>"
 echo "Subject: Automatyczne uaktualnienie pliku named.cache"
 echo

 export PATH=/sbin:/usr/sbin:/bin:/usr/bin:
 cd /var/named

 dig  @rs.internic.net . ns >named.cache.new

 echo "Plik named.cache zostal uwaktualniony i zawiera teraz następujące informacje:"
 echo
 cat named.boot.new

 chown root.root named.cache.new
 chmod 444 named.cache.new
 rm -f named.cache.old
 mv named.cache named.cache.old
 mv named.cache.new named.cache
 ndc restart
 echo
 echo "Program serwera DNS został uruchomiony na nowo, aby zapewnić korzystanie z nowych informacji."
"
 echo "Stary plik został zachowany jako named.cache.old"
/var/named/named.cache.old."
) 2>&1 | /usr/lib/sendmail -t
exit 0

Niektórzy z was mogłi zauważyć, że root.cahce jest również dostępny w Internicu przez ftp. Proszę nie korzystajcie z ftp aby uaktualnić plik root.cache, przedstawiona powyżej metoda jest bardziej przyjazna sieci.

7. Automatyczna konfiguracja połączeń modemowych.

W tym rozdziale wyjaśnię w jaki sposób skonfigurowałem swój system, aby automatyzować wszsytkei zadania. Moj sposób rozwiązania problemu może zupełnie nie nadawać się do twojej konfiguracji, lecz zawsze możesz skorzystać z pomysłów. Poza tym ja korzystam z ppp, wiele osób używa slip lub cslip, tak więc niemal wszystkie szczegóły twojej konfiguracji mogą różnić się od mojej. Lecz program dip używany do obsługi połączeń slip powinien być w stanie zrealizować wiele pomysłów, z których korzystam.

Zwykle, gdy nie jestem przyłączony do sieci, moj plik resolv.conf zawiera po prostu wiersz

domain uio.no

Taka konfiguracja zapewnia, że nie muszę czekać na gdy procedury biblioteki odpowiedzialne za rozwiązywanie nazw bedą staraly się nawiazac połączenia z zewnętrznymi serwerami DNS. Lecz gdy jestem połączony chce posiadać uruchomiony proces named, a plik resolv.conf powinien zawierac informacje niezbędne do poprawnej pracy DNSu. Rozwiązałem ten problem tworząc dwa wzorce pliku resolv.conf, resolv.conf.local i resolv.conf.connected. Ten ostatni wygląda jak opisywany wcześniej resolv.conf.

Aby połączyć się z siecią uruchamiam skrypt o nazwie 'ppp-on':


#!/bin/sh
echo calling...
pppd

pakiet pppd posiada plik o nazwie options, w którym deklaruje się szczególy dotyczące sposobu nawiązywania połączeń. Tuż po zestawieniu połączenia PPP, pppd uruchamia skrypt o nazwie ip-up (jest to dokładnie opisane na stronie podręcznika programu pppd). Oto fragment powyższego skryptu:


#!/bin/sh
interface="$1"
device="$2"
speed="$3"
myip="$4"
upip="$5"
 ...
cp -v /etc/resolv.conf.connected /etc/resolv.conf
 ...
/usr/sbin/named

To znaczy uruchom named. Kiedy PPP jest rozłączanie, pppd uruchamia skrypt ip-down:


#!/bin/sh
cp /etc/resolv.conf.local /etc/resolv.conf
read namedpid </var/run/named.pid
kill $namedpid

W ten sposób named jest uruchamiany po nawiazaniu połączenia i zabijany po jego rozłączeniu.

Niektóre programy, irc lub talk, przyjmują zbyt wiele założeń dlatego aby talk i udogodnienie dcc w irc działały poprawnie trzeba również poprawić plik hosts. Do swojego skryptu if-up dodałem polecenia:


cp /etc/hosts.ppp /etc/hosts
echo $myip      roke >>/etc/hosts

hosts.ppp zawiera po prostu


127.0.0.1       localhost

,a polecenie echo dodaje numer ip, ktory otrzymalem dla mojego komputera (roke). Zamiast tego powinieneś użyć nazwy komputera, którą sam używasz. Możesz ją poznaćwykonując polecenie hostname.

Uruchamianie demona named gdy nie jest się przyłączonym do sieci prawdopodobnie nie jest najlepszym rozwiazaniem. Dlatego, że named będzie starał się wysłać zapytania, a ponieważ posiada dlugi czas oczekiwania, każdy program, który będzie próbował rozwiązać nazwę korzystając z dńśu będzie musiał równie długo oczekiwać na odpowiedź, która i tak nigdy nie nadejdzie. Jeśli przyłączasz się do Internetu przez łącze dzwonione, powinieneś uruchamiac named tuz po zestawieniu łącza i zabijać go w momencie rozłączenia. Dodatkowe wskazówki w tym temacie znajdziesz w rozdziale FAQ.

Niektórzy z pracujacych na wolnych łączach lubią korzystać z dyrektywy forwarders. Jeśli twój dostawca internetu posiada serwery DNS o adresach 1.2.3.4 i 1.2.3.5, możesz do pliku named.boot dodać wiersz


forwarders 1.2.3.4 1.2.3.5

Plik named.cache powinien pozostać pusty. W ten sposób zmiejszysz ruch generowany przez twój komputer i prawdopodobnie wszystko zacznie działać szybciej. Jest to szczególnie ważne, gdy płacisz za przesłane bajty. Dodatkowa zaleta tego rozwiązania polega na tym, że pozwala pozbyć się obowiązku opieki i nadzorowania oprogramowania DNS, ponieważ pusty plik named.cache nie wymaga odświerzania.

8. FAQ

W tym rozdziale przedstawię kilka z najczęściej zadawanych pytań dotyczących DNSu i tego dokumentu. Prócz pytań będą również odpowiedzi, przeczytaj dokładnie ten rozdział, zanim zdecydujesz się wysłać do mnie list.

  1. Jak korzystać z DNS w sieci chronionej firewallem?

    Kilka wskazówek: `forwarders',`slave', zapoznaćsię z literaturą prezentowaną na końcu.

  2. W jaki sposób zmusic DNS do rotacyjnego przekazywania adresu z puli adresów danej usługi, powiedzmy www.bardzo.zajety.serwer, w celu osiągnięcia równomiernego rozłożenia obciążenia na kilka serwerów.

    Nazwa www.bardzo.zajęty.serwer musi posiadać kilka rekordów A. bind 4.9.3 i nowszy przekazuje kolejne adresy z puli. Takie rozwiązanie nie zadziała ze starszymi wersjami binda.

  3. Chcę uruchomić DNS w zakmniętej sieci Intranetu. Co mam zrobić?

    Pomiń root.cahce, zajmij się jedynie plikami stref/domen. To znaczy, ze niu musisz już pilnować aby root.cache był aktualny.

  4. W moim systemie nie ma programu ndc. Co mam zrobić?

    To znaczy, że w twoim komputerze jest zainstalowany stary, trochę przestarzały program bind. Jeśli bezopieczeństwo sieci jest dla ciebie ważne, natychmiast zainstaluj najnowszą wersję binda. Jeśli nie, możesz pracować dalej tak jak jest. Tylko zamiast uruchamiac ndc start muszisz wydać poleceni named. ndc reload to named.reload, a ndc restart to named.restart. Większość tych programów znajduje się w /usr/sbin.

  5. Jak soknfigurować drugorzędny serwer domeny?

    Jeśłi serwer podstawowy posiada adres 127.0.0.1, to do pliku named.boot musisz dodac wiersz:


      secondary     linux.bogus             127.0.0.1       sz/linux.bogus
      
    

  6. Chciałbym aby named działał nawet wtedy, gdy nie ejstem przyłączony do internetu.

    Ian Clark przesłał mi następującą wiadomość, w której wyjaśnia jak to zrobić:

    Moj named działa na komputerze. ktory robi 'Masquerade'. Posiadam dwa
    pliki root.cache, jeden root.cache.real zawierający prawdziwe adresy
    serwerów głównych i drugi root.cache.fake zawierający ...
    
    --------------
    ; root.cache.fake
    ; this file contains no information
    --------------
    
    Po rozłączeniu kopiuje root.cache.fake na root.cache i restartuje
    named.
    
    Po podłączeniu, kopiuje root.cache.real na root.cache i restartuje
    named.
    
    Jest to robione automatycznie w skryptach, odpowiednio ip-down i
    ip-up.
    
    Przy pierwszym zapytaniu w trybie off-line, serwer nie posiada
    wszystkich niezbędnych informacji i raportuje t ow syslogu, ale jakoś
    mogę z tym żyć:
    
    Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN
    
    U mnie ten schemat działa poprwnie.Mogę korzystać z nameserwera na
    komputerach lokalnych bez dodatkowych czasów oczekiwania na połączenie
    z nieosiągalnymi serwerami zewnętrzymi w trybie off-line i poprawnie
    działającym DNSem w trybie on-line.
    

  7. Gdzie serwer podręczny przechowuje zgromadzone w czasie pracy informacje? Czy jest jakaś metoda sterowania rozmiarem tych zasobów?

    Wszelkie pośrednie informacje są gromadzone w pamięci, nigdy nie są zachowywane na dysku. Za każdym razem, kedy named konćzy prace, inforamacje przechowywane w pamięci podręcznej są gubione. Administrator nie ma żadnej kontroli nad pamięcią podręczną, ani nad jej rozmiarem (najnowsze wersje pozwalaja sterowac rozmiarem pamieci cache [pp]). Możesz to naprawic "modyfikując" named. Nie jest to jednak zalecane.

  8. Czy named między kolejnymi uruchomieniami zachowuje pamięc podręczną na dysku? Czy mogę go do tego zmusic?

    Nie, named nie zachowuje pamięci podręcznej na dysk w momencie zakończenia pracy. To znaczy, że informacje w pamięc podręczna muszą być odtwarzne od początku po każdym zrestartowaniu programu. Możesz to naprawic "modyfikując" named. Nie jest to jednak zalecane.

9. Jak zostać pełno etatowym administratorem DNSu.

Dokumnetacja i narzędzia.

Istnieje prwdziwa dokumentacja. Drukowana i OnLine. Aby stać się prawdziwym administratorem DNS należy przeczytać kilkanaście pozycji. Jeśli ktoś preferuje papier polecam DNS and BIND by C. Liu and P. Albitz from O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X. Czytałem, jest doskonała. Rozdział poświęcony DNSowi można znaleźć w TCP/IP Network Administration, by Craig Hunt from O'Reilly..., ISBN 0-937175-82-X. Dobry administrator DNS (lub jakikolwiek) musi również przeczytać Zen and the Art of Motorcycle Maintenance by Robert M. Prisig :-) Dostępne jako ISBN 0688052304 oraz inne pozycje.

ONLine dostępne są na przykład takie pozycje: http://www.dns.net/dnsrd/, http://www.vix.com/isc/bind.html; FAQ, podręcznik (BOG; Bind Operations Guide) jak również dokumenty opisujące protokoły i chwyty dotyczące DNSu. Większości z tego nie przeczytałem, dlatego nie jestem pełnoetatowym administratorem DNS. Z drugiej strony Arnt Gulbrandsen przeczytał BOG i jest nim zachwycony. Grupa nowinkowa comp.protocols.tcp-ip.domains jest poświęcona DNSowi. I na koniec wiele dokumentów RFC dotyczy DNSu. Prawdopodobnie najważniejsze z nich to:

RFC 2052

A. Gulbrandsen, P. Vixie, A DNS RR for specifying the location of services (DNS SRV), October 1996

RFC 1918

Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear, Address Allocation for Private Internets, 02/29/1996.

RFC 1912

D. Barr, Common DNS Operational and Configuration Errors, 02/28/1996.

RFC 1713

A. Romao, Tools for DNS debugging, 11/03/1994.

RFC 1712

C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, DNS Encoding of Geographical Location, 11/01/1994.

RFC 1183

R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, New DNS RR Definitions, 10/08/1990.

RFC 1035

P. Mockapetris, Domain names - implementation and specification, 11/01/1987.

RFC 1034

P. Mockapetris, Domain names - concepts and facilities, 11/01/1987.

RFC 1033

M. Lottor, Domain administrators operations guide, 11/01/1987.

RFC 1032

M. Stahl, Domain administrators guide, 11/01/1987.

RFC 974

C. Partridge, Mail routing and the domain system, 01/01/1986.

10. Od tłumacza

Zdaje sobie sprawę, że niniejsze tłumaczenie zawiera mnóstwo błędów. Niestety nie jestem w stanie dokładnie sprawdzić całego dokumentu i świadomie pozostawiam tę pracę czytelnikowi. Będę wdzięczny za wszelkie uwagi na temat tego dokumentu, wytykanie błędów, literówek, składni i wszelkie inne, które mogą przyczynić się do jego ulepszenia.

Wszelkie tego typu uwagi proszę przesyłać na adres piotr.pogorzelski@ippt.gov.pl

Inne przetłumaczone dokumenty można znaleźć na stronie http://www.jtz.org.pl/. Zapraszamy!.

piotr.pogorzelski@ippt.gov.pl. doc-linux-pl-2002.06.14.orig/html/DOSEMU-HOWTO.pl.html0100664000175000017500000015454206770264140020550 0ustar covencoven Opis emulatora systemu operacyjnego DOS

Opis emulatora systemu operacyjnego DOS

Autor: Mike Deisher
Uaktualnione przez Uwe Bonnes dla dosemu-0.64.4, 15 Marca 1997
Uaktualnione przez Davida Hodgesa davidhodges@altavista.iname.com
Dla dosemu-0.98.6, 24 Kwietnia 1999
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v2.0, 14 Sierpnia 1999


Jest to dokument opisujący dosemu i zawierający Często Zadawane Pytania na jego temat. Najbardziej aktualna wersja oryginału tego dokumentu znajduje się po adresem www.dosemu.org. Wersji oryginalnej możesz też poszukać w Polsce pod adresem ftp.icm.edu.pl. Dokument ten został napisany w standardzie ISO-8859-2.

1. Wstęp.

1.1 Co to w ogóle jest DOSEMU?

Cytując podręcznik, dosemu jest programem dla wszystkich użytkowników danego serwera, który korzysta z pewnych specjalnych cech jądra Linuksa oraz procesora 80386, aby uruchomić system MS-DOS/FreeDOS/DR-DOS. Emulator tego systemu, kombinacja sprzętowych i programowych trick-ów, ma następujące właściwości:

W tym miejscu chciałbym podziękować Piotrowi Tęczyńskiemu oraz Wojtkowi Gałązce za pomoc w przetłumaczeniu powyższych pięciu punktów.

1.2 Na jakich systemach operacyjnych działa DOSEMU ?

DOSEMU zostało pierwotnie napisane dla Linuksa. Działa także w NetBSD i możliwe, że także w FreeBSD, jednak emulacje graficzne racej nie będą działać w NetBSD. Co oznacza, że wszystkie programy DOS-owe używające trybu graficznego (większość programów) nie będą działały.

1.3 Na jakich procesorach działa DOSEMU ?

Działa tylko na rodzinie Intel 80x86, czyli 80386, 80486, Pentium itp.

1.4 Co jeśli mam procesor Alpha/Sparc/Motorola/inny nie-Intel ?

DOSEMU działa tylko na rodzinie procesorów x86, ale są wyjścia alternatywne: Bochs (http://www.bochs.com) jest shareware'owym emulatorem komputera PC z dostępem do kodu źródłowego, który to emulator działa na większości Uniksów (jak również na MS-Windows). A są jeszcze inne opcje (non-free) - poczytaj FAQ grupy comp.emulators.misc dostępne w Polsce pod adresem ftp.icm.edu.pl/pub/doc/usenet/comp/emulators/misc/

1.5 Czy potrzebuję MS-DOS-a, aby używać DOSEMU ?

Nie. Potrzebujesz jakiejś wersji DOS-a, ale nie musi to być koniecznie MS-DOS. Przeczytaj rozdział "Jakie wersje DOS-a działają z DOSEMU ?".

1.6 Czy mogę uruchamiać programy dla Microsoft Windows w DOSEMU ?

Nie jest to rozsądne. Lepiej żebyś użył emulatorra Windows -- Wine (http://www.winehq.com). Jeśli upierasz się, aby uruchomić Windows w DOSEMU, to poczytaj rozdział 8 -- DOSEMU i MS-Windows 3.1.

1.7 Chcę uruchomić coś co nie działa w DOSEMU czy WINE.

Przeczytaj punkt 1.4.

1.8 Nazwy i liczby.

(xx/yy/zz) oznacza dzień xx, miesiąc yy, rok zz (9/2/97).
winemu oznacza uruchomienie WinOS/2 w dosemu (10/2/97).

1.9 Jakiej wersji dosemu powinienem używać?

Dosemu używa tego samego schematu numerowania wersji co jądro. Drugie liczby nieparzyste oznaczają wersję rozwojową, czyli niestabilną, drugie parzyste liczby oznaczają wersję uznaną za stabilną. Podczas pisania tego dokumentu, v0.98.6 jest najnowszą stabilną wersją, podczas gdy v0.99.10 jest najnowszą wersją rozwojową. Tak więc jeśli chcesz używać dosemu, zdobądź najnowszą stabilną wersję.

1.10 Jaka jest najnowsza wersja dosemu i skąd ją mogę wziąć?

Najnowszą wersją dosemu na dzień dzisiejszy (9/4/99) jest dosemu0.98.6 i można ją znaleźć na:

SUNSite Polska

ftp.dosemu.org

[Od tłum.]
Lepiej używać adresu w Polsce, bo z zagranicy czas ściągania może się znacznie wydłużyć.

Pamiętaj, że to jest kod ALPHA: mogą być tam poważne błędy i mało dokumentacji na temat nowości. W wersji testowej znajdują się błędy. Używaj jej tylko jeśli chcesz się aktywnie włączyć w jej rozwój. Nie zgłaszaj błędów w wersji rozwojowej - napraw je.

1.11 Gdzie mogę zadawać pytania?

Jeśli masz problemy związane z instalacją i uruchamianiem dosemu po przeczytaniu dokumentacji, najpierw spróbuj sobie sam pomóc: Twoje pytanie zostało już pewnie zadane i odpowiedź udzielona. Spróbuj poszukać tej informacji w Internecie. Np. możesz zajrzeć do

DejaNews - największego zbioru artykułów z grup dyskusyjnych z całego świata.

aby znaleźć wszystkie artykuły, które zawierają podane przez ciebie słowo. W ten sposób pomożesz sobie prędzej niż zadawaniem dobrze znanego pytania na jakiejś liście. To także uwalnia programistów od odpowiadania na trywialne pytania i przyczynia się do tego, aby nowsze wersje oprogramowania powstawały szybciej.

[Od tłumacza] Istnieje także polska grupa dyskusyjna na temat Linuksa, gdzie możesz pytać o dosemu pod warunkiem, że instalujesz je na Linuksie. Jej nazwa to pl.comp.os.linux, można się także na nią zapisać listownie pod adresem listserv@ict.pwr.wroc.pl.

1.12 Gdzie mogę zgłaszać zauważone błędy i zadawać pytania?

Jeśli chcesz zadać pytanie lub zgłosić błąd w dosemu, powinieneś rozważyć zapisanie się na listę dyskusyjną linux-msdos. Aby zapisać się na nią, wyślij list na adres Majordomo@vger.rutgers.edu o treści

    subscribe linux-msdos imię_nazwisko@twoj.adres.pocztowy

Jeśli będziesz chciał się kiedyś wypisać z tej listy, to wyślij pocztę o treści

    unsubscribe linux-msdos imię_nazwisko@twoj.adres.pocztowy

pod ten sam adres co powyżej(11/8/95). Kiedy jesteś zapisany na tę listę możesz na nią wysyłać listy kierując pocztę na adres linux-msdos@vger.rutgers.edu. Istnieje bramka pomiędzy tą listą a grupą dyskusyjną linux.dev.msdos. Jeśli twój dostawca Internetu nie prowadzi tej grupy, to poproś go o dodanie jej(10/2/97). Zanim zadasz pytanie powinieneś przeczytać dokładnie całą dokumentację, włącznie z tym HOWTO i sprawdzić jedno z archiwów listy dyskusyjnej wymienione na www.dosemu.org i sprawdzić czy twoje pytanie zostało już zadane i czy ktoś na nie odpowiedział.

1.13 Jaka dokumentacja jest dostępna dla dosemu?

Dokumentacja jest zawarta w pakiecie DOSEMU. Główne pliki z dokumentacją (README.txt i README-tech.txt) pokrywają ogólnie wszystkie aspekty DOSEMU i mogą być bardziej aktualne niż to HOWTO.

Podręcznik pod nazwą "dosemu Novice's Altering Guide", albo w skrócie DANG stanowi mapę wewnętrznego sposobu działania dosemu. Jest on przeznaczony dla żądnych przygody, dla tych którzy chcą modyfikować kod źródłowy. DANG jest pod opieką Alistair MacDonald ( alistair@slitesys.demon.co.uk) i można go znaleźć w katalogu doc w drzewie katalogów dosemu.

Lista niepowodzeń EMU (EMUfailure.txt) jest listą programów, o których wiadomo, że NIE działają DOSEMU.

No i oczywiście jest dosemu FAQ/HOWTO. Ale o tym już wiesz, nie? Jest ono wysyłane raz na jakiś czas na listę dyskusyjną i znajduje się też w katalogu doc w drzewie katalogów dosemu. Najnowsza wersja oryginału znajduje się pod adresem www.dosemu.org.

1.14 Mam program, który nie działa i nie jest w EMUfailure.txt.

Najpierw sprawdź czy powodem nie jest coś co wiadomo, że nie działa w DOSEMU, wymienione w EMUfailure.txt. Jeśli uważasz, że znalazłeś coś nowego, to zgłoś to do linux-msdos@vger.rutgers.edu. Możliwe, że uda się to uruchomić z pomocą innych. Podaj szczegółowe informacje na temat twojej konfiguracji, wersję jądra, DOSEMU itp. No i podaj też zaobserwowane błędy. Możesz użyć xdos, żeby przekleić myszką błędy, ale postaraj się utrzymać czytelność raportu. Znamy też zawartość pliku ../etc/config.dist więc wyślij tylko te linijki z dosemu.conf, które mają jakieś znaczenie. Spróbuj uruchomić DOSEMU z trybem śledzenia (debug mode) i przyślij nam najpierw tylko te części, które wydają się mieć związem z problem. Naprawdę mało ludzi ma ochotę wczytywać się w czyjeś długie załączniki, żeby wyśledzić co jest nie tak. Ale trzymaj te logi pod ręką w razie gdyby się ktoś dopytywał szczegółów.

1.15 Jak mam informować o zmianach lub dodatkach w HOWTO?

Preferowaną metodą jest edycja pliku dosemu-HOWTO-xx.x.sgml, żeby nanieść zmiany, stworzenie pliku z różnicami przez napisanie czegoś takiego:

diff -uw plik-oryginalny plik-nowy > zmiany

i wysłanie pliku zmiany na adres davidhodges@altavista.iname.com.
Jeśli nie znasz SGML-a, to nie szkodzi. Zmiany będą akceptowane w jakiejkolwiek formie. Stworzenie pliku "zmiany", to po prostu ułatwienie życia opiekunowi HOWTO. :-)

1.16 Wiadomości od Grega...

O ile nie stwierdza się inaczej, dokumenty HOWTO są chronione prawami autorskimi ich autorów. Mogą one być rozprowadzane w całości lub w części, w jakiejkolwiek postaci fizycznej czy elektronicznej tak długo, dopóki znajduje się w nich ta wzmianka. Dystrybucja komercyjna jest dozwolona, a nawet zachęca się do niej; chociaż autor chciałby być poinformowany o takowej.

Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem.

Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO.

Jeśli masz pytania skontaktuj się z Gregiem Hankisem, koordynatorem programu Linux HOWTO pod adresem gregh@sunsite.unc.edu(11/8/95).

2. Kompilacja i instalacja dosemu.

2.1 Gdzie są instrukcje instalacyjne?

Znajdują się one w pliku "QuickStart" dołączonym do dystrybucji.

2.2 Dziesięć najczęściej spotykanych problemów podczas instalacji dosemu.

  1. Zapomniałeś przeczytać podręcznika QuickStart.
  2. Próbujesz skompilować jakąś starą wersję dosemu.
  3. Próbujesz kompilować z jądrem starszym niż 2.0.28 lub 2.1.15.
  4. Masz złą wersję źródeł jądra w /usr/src/linux albo nie masz pliku /usr/src/linux/include/version.h
  5. Używasz dosemu z jądrem, które nie ma wkompilowanej obsługi IPC.
  6. Kompilujesz przy pomocy gcc starszego niż 2.7.2 albo z biblioteką libc starszą niż 5.x.x
  7. Zapomniałeś zmodyfikować plików /etc/dosemu.conf, /etc/dosemu.users i /var/lib/dosemu/global.conf.
  8. Uruchamiasz DOSEMU z dostępem do partycji podczas gdy są one już zamontowane.
  9. Nie instalujesz dosemu zalogowany jako root.

2.3 Jak mam zrobić binaria a.out?

Poczynając od wersji 0.64.4 nie ma już obsługi formatu a.out. Jeśli koniecznie jej potrzebujesz, musisz użyć wersji 0.64.3.1. Skrypt konfiguracyjny powinien się tym zając jeśli masz standardową konfigurację.

2.4 Jak mam skompilować dosemu na maszynie z małą ilością RAM-u?

Marty Leisner (leisner@sdsp.mc.xerox.com) zgłosił (8/4/95)

"Jeśli masz problemy z pamięcią, np. kończy się swap, to możesz dodać wyrażenie CFLAGS+=-fno-inline za definicją CFLAGS w pliku dpmi/Makefile. Bądź ostrożny i sprawdź czy masz swap. Przekonałem się, że Linux często pada jeśli nie ma swap-u."

2.5 Kompilacja przerywa się na jakichś dziwnych błędach dotyczących "slang".

Przypuszczalnie zainstalowałeś swoją wersję biblioteki Slang i podczas kompilacji miałeś ustawienie slangforce off w pliku Makefile. Musisz to zmienić na slangforce on.

2.6 Jakie są dostępne opcje podczas kompilacji, które mogę zmieniać ?

W pliku compiletime-settings.help znajdziesz opis takich opcji. W README.txt znajdziesz opis opcji, które możesz zmieniać po kompilacji.

2.7 Czy muszę uruchamiać dosemu jako root?

Nie. Chociaż DOSEMU porzuca przywileje root-a gdzie tylko jest to możliwe. Bezpieczniej jest nie uruchamiać DOSEMU jako root, szczególnie jeśli uruchamiasz w nim programy korzystające z DPMI. Większość programów nie potrzebuje, żeby DOSEMU działało z przywilejami root-a, szczególnie jeśli uruchamiasz DOSEMU pod X-ami. Nie powinieneś pozwalać użytkownikom na uruchamianie wersji suid root jeśli to tylko możliwe, a tylko wersję bez uprawnień root-a. Można to skonfigurować dla każdego użytkownika osobno w pliku /etc/dosemu.users.

Programy, które wymagają bezpośredniego dostępu do portów sprzętu (np. jeśli jakiś program musi komunikować się ze sprzętem nie obsługiwanym przez Linuksa i DOSEMU) wymagają, aby DOSEMU działało z prawami root-a. Ale drukarki, porty szeregowe, myszy i karty graficzne (i w małym zakresie dżwiękowe) są emulowane przez DOSEMU i nie potrzeba bezpośredniego dostępu do sprzętu. Nie potrzeba wtedy także praw root-a, aby to działało.

2.8 Jak mam łatać dosemu.

Jeśli łatasz dosemu z jednej wersji do drugiej, napisz "make pristine;./configure; make". Jeśli nie napiszesz "make pristine", przynajmniej nowa wersja wykonywalna będzie zła jeśli całość się w ogóle skompiluje(9/2/97).

2.9 Jakie wersje DOS-a działają z dosemu.

Wszystkie wersje DOS-a powinny działać z DOSEMU, jednak z pewnymi kruczkami:

FreeDOS nie ma jeszcze działającego przekierowywania, więc nie będziesz mógł mieć dostępu do partycji Linuksa czy do Novella. Pamiętaj też, że FreeDOS to wersja bardzo beta i może się wywalić kiedykolwiek psując system plików itp., itd.

DOS 4.01 miał problemy sam w sobie więc także w DOSEMU nie będzie działał.

MsDos-7 czyli Win 95 także działa, ale zakładając, że nie masz włączonego logo startowego i nie wystartujesz środowiska graficznego. Jeśli uczynisz obraz dysku startowym tak zwaną "dyskietką ratunkową", która jest ci oferowana podczas instalacji Windows-ów, będziesz miał dobre ustawienia. Jeśli użyjesz normalnej instalacji Win95, aby przenieść pliki systemowe, to zajrzyj do pliku msdos.sys zapisanym na obrazie dysku i zmień ustawienia w sekcji [Options] na takie:

[Options]
Logo=0
BootGUI=0

(7/3/97)

3. Ustawienia twardego dysku.

3.1 Jak mam używać swojego dysku z dosemu?

Po pierwsze zamontuj parytcję DOS-ową jako podkatalog w drzewie Linux-a. Na przykład stwórz katalog "/dos" w Linux-ie (mkdir -m 755 /dos) i dodaj taką linię

   /dev/hda1       /dos     msdos   umask=022

do pliku /etc/fstab. (W tym przykładzie, partycja jest zamontowana w trybie tylko-do-odczytu. Możesz go zamontować w trybie odczyt-zapis zamieniając "022" na "000" i używając w poleceniu mkdir opcji -m 777). Teraz mount /dos.

W README.txt czytamy:

można mieć jakiś katalog Linuksa z całą zawartością jako C:. Skopiuj IO.SYS, MSDOS.SYS czy co tam trzeba do tego katalogu (np. /var/lib/dosemu/bootdir), do pliku /etc/dosemu.conf wpisz:
$_hdimage = "bootdir"
i już. DOSEMU zrobi z tego przekierowany napęd i będzie mogło wystartować z niego. Przed wystartowaniem DOSEMU możesz zmodyfikować config.sys i autoexec.bat w tym katalogu. Idąc dalej; można mieć bardziej wyrafinowaną konfigurację. Zakładając, że chcesz mieć ten sam napęd co wtedy kiedy startujesz prawdziwego DOS-a, musisz poprostu zamontować tę partycję w Linuksie (np: /dos) i umieścić linki do podkatalogów w katalogu, z którego DOSEMU startuje. W ten sposób decydujesz które katalogi/pliki są widzialne w DOSEMU a które nie. Oto mały i niekompletny przykład takiej konfiguracji:
config.sys autoexec.bat command.com -> /dos/command.com io.sys -> /dos/io.sys msdos.sys -> /dos/msdos.sys dos -> /dos/dos bc -> /dos/bc windows -> /dos/windows
Jest jednak jedna wada; nie można używać w tej konfiguracji jądra DosC (FreeDOS), ponieważ nie posiada ono jeszcze działającego przekierowania (przypuszczalnie będzie kiedyś w przyszłości).

3.2 Jak mogę się dostać do obrazu dysku z Linux-a?

Użyj mtools. Do pliku /etc/mtools.conf dopisz linię:

   drive n:  file="/var/lib/dosemu/hdimage" MTOOLS_SKIP_CHECK=1 \
   MTOOLS_LOWER_CASE=1 MTOOLS_NO_VFAT=1 partition=1 offset=128

Potem możesz już używać mtools, np. "mdir n:". "mcopy n:/config.emu /tmp" skopiuje plik config.emu z obrazu dysku DOS-owego do katalogu /tmp na Linuksie. Możesz go tam zmodyfikować i skopiować z powrotem. Użyj takiej litery dla dysku jaką chcesz, N: jest tylko przykładem.

3.3 Czy mogę używać dysku spakowanego (stacked/double-spaced/super-stored)?

W tej chwili standardowe jądro nie potrafi obsłużyć takich dysków przy pomocy programów "lredir" czy "emufs". Jest jednak łata, przy pomocy której można zamontować skompresowane pliki. Nazywa się "dmsdosfs". Można ją znaleźć w Polsce na

SUNSite Polska, albo w USA pod adresem sunsite.unc.edu.

Dobrym pomysłem jest też zaglądanie do katalogu incoming w poszukiwaniu nowszej wersji. Oryginalna zawartość jest pod adresem sunsite.unc.edu. Opcja "wholedisk" ze starszych wersji DOSEMU nie działa w nowszych wersjach, chociaż linia:

   $_hdimage = "/dev/hda1"

może działać. Jednak ryzykujesz utratę danych na tej partycji w przypadku wywalenia się DOSEMU.

Jeśli twoja partycja DOS-owa jest już zamontowana z dostępem dla zapisu i próbujesz uruchomić dosemu z dostępem do parytcji, to wyświetli ono komunikat o błędzie i przerwie działanie. Takie zachowanie zapobiega robieniu przez Linuksa i DOS-a niezależnych zapisów na twojej partycji, co w konsekwencji zaśmieciłoby ci tylko dysk(11/8/95).

---------------------

Jeśli masz zainstalowane LILO, to powyższe nie będzie działać. Chociaż...

Thomas Mockridge (thomas@aztec.co.za) zgłosił (5/8/94)

Aby wystartować (boot) dosemu z LILO i Stacker-em 4.0 robisz małe obejście...

  1. przy pomocy polecenia dd przenieś MBR do pliku (czy Norton Utilities, w każdym bądź razie pierwsze 512 bajtów).
  2. wystartuj DOS-a (rzeczywisty DOS - nie dosemu), potem wykonaj polecenie fdisk /mbr i uczyń partycję DOS-ową aktywną (DOS-owym fdisk-iem).
  3. skopiuj nowy MBR do pliku.
  4. zamień na oryginalny MBR.
  5. skopiuj ten drugi MBR do /var/lib/dosemu/partition.hda? (gdziekolwiek tam masz parytcję DOS-ową).
  6. ustaw w dosemu.conf
                   disk {partition "/dev/hda? ?"}
    
  7. Wystartuj dosemu i voila! Nie ma LILO.

W nowszych wersjach DOSEMU musisz zmienić linię

   disk {partition "/dev/hda? ?"}

na

   $_hdimage = "/dev/hda1"

Holger Schemel (q99492@pbhrzx.uni-paderborn.de) zgłosił (10/2/97), że

Działa nawet dobrze pod dosemu z MS-DOS-em 6.0. Jeśli masz jakieś kłopoty, to musisz ręcznie zmodyfikować plik "DBLSPACE.INI" i zmienić literę dysku na taką jaką twój dysk otrzymuje pod dosemu.

Darren J Moffat (moffatd@dcs.gla.ac.uk) zgłosił także (27/3/94)

"...jeśli tylko możesz to używaj 6.2! Tylko upewnij się, że masz dyskietkę startową z LILO pod ręką ponieważ DOS 6{.2} zmieni MBR."

3.4 Tworzenie własnych plików hdimage.

Najłatwiej użyć programu mkdexe - szczegóły znajdziesz w plik README.txt. Starym sposobem (nie wiem po co ktokolwiek miałby to robić w ten sposób, no ale tak na wszelki wypadek podaję) robi się to tak:

Jest dodatkowy program mkfatimage16, który pozwala na tworzenie nagłówków plików hdimage. Pełna informacja na ten temat znajduje się na stronie podręcznika systemowego (man/mkfatimage16.1) dołączonej do twojej dystrybucji.

Aby stworzyć obraz dysku z geometrią odpowiadającą prawdziwemu dyskowi o pojemności 32 MB wykonaj polecenie:

   mkfatimage16 -k 32768 > hdimage

W większości przypadków będzie to za dużo; jeśli potrzbujesz tak dużo miejsca, to pomyśl nad wykorzystaniem przekierowania.

Zwykle dobrym pomysłem jest sformatowanie napędu po takiej operacji.

4. Porty równoległe, szeregowe i myszy.

4.1 Dostęp do portów działał w starszych wersjach, a teraz nie chce!

Przeczytaj README.txt i sekcję na temat portów w ../etc/config.dist

4.2 Dostęp do portów był szybszy w starszych wersjach!

Aby móc logować każdy dostęp do portu, każdy taki dostęp wywołuje przerwanie z poza trybu vm86. To zabiera trochę czasu. Jeśli nie chcesz, żeby dostęp do portów był logowany, użyj klucza "fast" w odpowiedniej sekcji.

4.3 Gdzie są (kompatybilne z microsoftem) sterowniki mysz?

Tom Kimball (tk@pssparc2.oc.com) zgłosił(24/11/93)

Kilku ludzi mówiło, aby używać różnych sterowników i zasugerowało niektóre. Znalazłem parę, które wydają się działać.

   oak.oakland.edu:/pub/msdos/mouse/mouse701.zip   (mscmouse)
   oak.oakland.edu:/pub/msdos/mouse/gmous102.zip   (gmouse)

Normalnie możesz używać wewnętrznego sterownika z dosemu, więc nie potrzebujesz żadnego dodatkowego sterownika do myszy w dosemu poza winemu(10/2/97).

4.4 Dlaczego nie działa sterownik myszy?

Mark Rejhon (mdrejhon@magi.com) zgłosił(7/4/95)

Jeśli uruchomisz sterownik do myszy, a on się po prostu zawiesi (może to trwać około 30-60 sekund), ale jeśli czekasz dłużej niż minutę, aby sterownik zaczął działać, spróbuj podać w linii poleceń port COM, na którym jest mysz.

4.5 Dlaczego dosemu blokuje COM4?

Rob Janssen (rob@pe1chl.ampr.org) zgłosił(24/3/94)

Według jmorriso@bogomips.ee.ubc.ca, "dosemu wciąż blokuje COM4 (0x2e8, IRQ 5). Portu 0x2e8 nie ma w tablicy ports{} w pliku konfiguracyjnym. Muszę uruchamiać setserial /dev/cua3 irq 5 po zakończeniu dosemu."

Jest to spowodowane BIOS-em karty VGA. Stwierdziłem to włączając śledzenie portu i wypatrzyłem kiedy się to dzieje.

Wyłącz opcję "allowvideoportaccess" w pliku konfiguracyjnym i będzie dobrze. Jeśli będziesz miał wtedy problemy z wizją, to spróbuj bardziej ograniczyć zasięgi portów IO (np. 40-43).

4.6 Jak mam używać dosemu z portami szeregowymi?

4.7 Jak mogę przełączać kontrolę linii szeregowej pomiędzy dosemu a powłoką?

John Taylor (taylor@pollux.cs.uga.edu) zgłosił(25/5/94)

Mam Linux-a 1.1.13 i chcę wskazać dużą zaletę, którą należy chronić i należy uniknąć jej zniknięcia (moim skromnym zdaniem). Wraz z wersją 52 mogę uruchomić program "screen". Ze screen-a, mogę wywołać DOS-a -D-a. To co jest najlepsze, to to, że polecenia screen-a (polecenia z CTRL-A) wciąż działają. Oznacza to, że mogę wcisnąć CTRL-A C i otworzyć nowe okno z powłoką unix-ową i przełączać się pomiędzy nimi (DOS/UNIX). Pozwala mi to kontrolować linię szeregową poprzez dosemu bardzo efektywnie, ponieważ przełączanie się jest bardzo proste.

4.8 Jak mogę zmusić do działania porty szeregowe?

W pliku konfiguracyjnym dosemu.conf znajdują się linie, które przekierowują wyjście drukarki do programu lpr albo do pliku. Jeśli chcesz mieć bezpośredni dostęp do gołego żelastwa, to wykomentuj te linie i dodaj taką:

$_ports { device /dev/lp0 fast range 0x3bc 0x3bf } # lpt0

dla portu drukarki z kartą kontrolną (odpowiada to /dev/lp0), albo

$_ports { device /dev/lp1 fast range 0x378 0x37f } # lpt1

lub

$_ports { device /dev/lp1 fast range 0x278 0x27f } # lpt2

odpowiednio dla LPT1 (/dev/lp1) i LPT2 (/dev/lp2)(9/2/97).

Hans Lermen (lermen@dosemu.org) pisze:

Ale UWAGA: Linii tych nie należy po prostu _dodawać_, łańcuchy te powinny być łączone, o tak:

   $_ports = "...."  $_ports = $_ports, " device /dev/lp0 fast range
   0x3bc 0x3bf" = Puste miejsce jest ważne.

5. Wieloużytkownikowość i nieinteraktywne sesje.

5.1 Czy mogę używać dosemu na systemie wieloużytkownikowym?

Tak. Można skonfigurować DOSEMU dla każdego użytkownika osobno. Szczegóły znajdziesz w README.txt.

5.2 Jak mogę uruchamiać polecenia DOS-a nieinteraktywnie?

Możesz zrobić to w jeden z następujących sposobów: 1. przekieruj plik do standardowego wejścia DOSEMU, 2. użyj opcji konfiguracyjnej keystroke i opcji -I podczas uruchamiania jak to jest opisane w README.txt, aby podać znaki, które mają być zinterpretowane tak jakby były wpisane z klawiatury podczas działania DOSEMU. 3. użyj programu mkdexe, aby zrobić plik DEXE - mały system plików DOS-a zawierający tylko program do uruchomienia - szczegóły znajdziesz w README.txt.

Oto kilka dodatkowych alternatyw:

Daniel T. Schwager (danny@dragon.s.bawue.de) zgłosił(2/7/94), że

Możesz użyć różnych plików konfiguracyjnych (i różnych obrazów startowych z różnymi plikami autoexec.bat) i wywoływać dosemu w ten sposób:

$ dos -F mój_zrobiony_dosemu.conf

---------------------

Dietmar Braun (braun@math20.mathematik.uni-bielefeld.de) zgłosił(4/7/94), że

Nie ma żadnego problemu jeśli użyjesz przekierowania z dosemu. Jest możliwe przekierowania litery dysku na katalog Linux-owy podany w zmiennej środowiskowej.

Tak więc ja mam skrypt w powłoce nazwany "DOS", który robi coś takiego:

 mkdir /tmp/dos.$$
 DOSTMP=/tmp/dos.$$; export DOSTMP

a potem mały trick, żeby "echo $* > $DOSTMP/startup.bat" rzeczywiście zadziałało (właściwie mały programik w C, który zamienia '/' na '\' i poprawnie oznacza końce linii, i dodaje ^Z na końcu pliku), tworzy pliki startowe, dołączenia itd. w tym katalogu, a potem uruchamia dosemu. W pliku "autoexec.bat" dysk C: jest odwzorowany z obrazu dysku na ten katalog tymczasowy, który ma dołączenia dla $HOME i $PWD.

Tak więc jeśli chcę zobaczyć nazwy moich plików skróconych do wersji 8.3, mogę napisać "DOS dir" i mam zawartość mojego bierzącego katalogu. Tak więc mam pełno-wieloużytkownikowego DOS-a (nie mam żadnej partycji DOS-owej a odwzorowanie na Linux-a zachowuje odpowiednie prawa dostępu dla użytkownika) i wielozadaniowego (sesje dosemu są zupełnie niezależne). Zrobiłem tak raz, żeby móc używać sterownika do drukarki pod DOS-a. Pole df z mojego printcap-a wskazuje właściwie na program DOS-owy. Tak więc możesz nawet robić programy DOS-owe, które będą działać jako filtry dl lpr-a.

6. dosemu i Netware.

6.1 Jak dostać się do Netware z DOSEMU ?

Jak zwykle preferowany jest dostęp z systemu plików Linux-a. Zamontuj dyski z Netware'a przy pomocy narzędzi Caldera's Netware albo darmowego narzędzia Volker-a Lendecke - ncpfs ( ftp.icm.edu.pl a adres macierzysty to ftp://ftp.gwdg.de:/pub/linux/misc/ncpfs). Jeśli potrzebujesz rzeczywistego dostępu do IPX-a np. aby uruchomić program "syscon" z Novell-a, przeczytaj plik ../doc/NOVELL-HOWTO.txt. W tej chwili najprawdopodobniej nie można się dostać do Netware przy pomocy FreeDOS.

7. dosemu i X-y(9/2/97).

7.1 Czy mogę uruchomić dosemu na konsoli podczas działania X-ów?

Ronald Schalk (R.Schalk@uci.kun.nl) zgłosił (17/1/94), że

Tak, nie ma problemu. Tylko pamietaj, aby używać CTRL-ALT-<Fn> do poruszania się pomiędzy wirtualnymi konsolami i możesz uruchamiać jakiekolwiek aplikacje pod Linux-a (dosemu to też aplikacja pod Linux-a). Prawie zawsze mam uruchomionego WP5.1 w sesji dosemu.

[Uwaga: Użyj CTRL-ALT-F7, aby przełączyć się z powrotem do X-ów jeśli X-y uruchomione są na 7 virtualnej konsoli.]

7.2 Czy możliwe jest uruchamianie dosemu w oknie w X-ach?

Jeśli masz zainstalowane X-y i udało ci się skompilować dosemu oraz uruchomić go w trybie tekstowym, to powinieneś móc uruchomić "xdos" lub "dos -X", żeby uruchomić je w oknie w X-ach. Jeśli to nie działa, to sprawdź następujące punkty.

  1. Wkompilowana obsługa X-ów w dosemu. Jest to opcja domyślna, chociaż jeśli w pliku z opcjami kompilacji podałeś "x off", to nie masz obsługi X-ów. Tak więc zmień "x off" na "x on", napisz "make pristine; make; make install" i powinieneś otrzymać skompilowane dosemu z obsługą X-ów jeśli masz zainstalowane biblioteki X-ów w /usr/X11R6.
  2. Ustaw mapę klawiatury w X-ach. W xterm-ie napisz:
         xmodmap -e "keycode 22 = 0xff08"
         xmodmap -e "keycode 107 = 0xffff"
    
    Linie te ustawiają poprawną obsługę klawiszy odpowiednio backspace i delete.
  3. Konfiguracja opcji w pliku /etc/dosemu.conf związanych z X-ami.

Możesz też uruchomić dosemu w kolorowym xterm-ie, co nie jest zalecane ponieważ większość kolorowych xterm-ów źle obsługuje złożone metody wyświetlania tekstu w dosemu. To nie wymaga włączonej obsługi X-ów w dosemu. Chociaż jeśli naprawdę chcesz to zrobić, to postępuj według poniższych kroków:

  1. Zaistaluj ansi_xterm. Zalecany pakiet można znaleźć na ftp,icm.edu.pl.
  2. Ustaw mapę klawiatury w X-ach. W xterm-ie napisz:
         xmodmap -e "keycode 22 = 0xff08"
         xmodmap -e "keycode 107 = 0xffff"
    
    Linie te ustawiają poprawną obsługę klawiszy odpowiednio backspace i delete.
  3. Skonfiguruj w pliku /etc/dosemu.conf opcje związane z terminalem (nie X-ami).

Marty Leisner (leisner@sdsp.mc.xerox.com) zgłosił (31/3/95)

W bazie danych xrdb mam następujące zasoby:

dosxterm*Font:  vga
dosxterm*geometry:      80x25
dosxterm*saveLines: 25

albo mam alias-a"dosxterm=term -fn vga -title dosxterm -geometry 80x25 -sl 25"

Jeśli używasz metody z xrdb, to wszystko co musisz zrobić to napisać "xterm -name dosxterm".

7.3 Xdos nie działa na odległym ekranie X-ów!

W tej chwili, dosemu używa rozszerzeń MIT do pamięci dzielonej. Rozszerzenia te działają tylko na lokalnym ekranie. Jeśli chcesz uruchomić dosemu na odległym ekranie, to skompiluj dosemu z ustawieniem "mitshm off" w pliku z opcjami do kompilacji po poleceniu "make pristine" albo na czystym drzewie ze źródłami.(9/2/97).

7.4 Xdos nie znajduje czcionek VGA.

Sprawdź czy czcionki VGA, które zainstalowałeś są na liście font.dir w katalogu, w którym je instalowałeś:

hertz:~> grep misc /usr/X11R6/lib/X11/XF86Config
    FontPath    "/usr/X11R6/lib/X11/fonts/misc/"
hertz:~> grep vga /usr/X11R6/lib/X11/fonts/misc/fonts.dir 
vga.pcf vga
vga11x19.pcf vga11x19
hertz:~> ls /usr/X11R6/lib/X11/fonts/misc/vga*
/usr/X11R6/lib/X11/fonts/misc/vga.pcf
/usr/X11R6/lib/X11/fonts/misc/vga11x19.bdf
/usr/X11R6/lib/X11/fonts/misc/vga11x19.pcf

Jeśli zainstalowałeś jakieś czcionki pod X-y, tak jak wtedy kiedy pierwszy raz instalowałeś dosemu z obsługą X-ów, musisz uruchomić programy "mkfontdir" a potem "xset fp rehash". Instalacja dosemu powinna się zająć poleceniem "mkfontdir" i poinformuje cię o "xset fp rehash". Powiedz nam jeśli ci to nie działa.

7.5 Czcionki VGA są bardzo małe w mojej dużej rozdzielczości.

Poszukaj czcionek vga11x19. (13/2/97).

7.6 Kompilacja dosemu przerywa się na jakichś dziwnych błędach dotyczących X-ów.

Jak już to zostało powiedziane wcześniej dosemu domyślnie używa rozszerzeń MIT do pamięci dzielonej. W XFree86 są one dostępne tylko w wersji 3.1.2 i nowszej. Jeśli masz starszą wersję, to zastanów się nad uaktualnieniem lub skonfiguruj dosemu tak, aby nie używało tych rozszerzeń (zobacz ostatnią sekcję)(9/2/97).

7.7 Czy emulacja ansi działa poprawnie?

Marty Leisner (leisner@sdsp.mc.xerox.com) zgłosił(31/3/95), że

Tak. Używam nnansi.com pod X-ami. tryby 25-, 43- i 50-liniowe działają poprawnie, chociaż tryb 50-liniowy jest trudny w użyciu przy rozdzielczości 1024x768 (o ile nie użyjesz mniejszych czcionek albo większego monitora). Tryb 43-liniowy zmieni rozmiar xterm-a tak, aby zawierał on 43 linie.

8. dosemu i MS-Windows 3.1.

8.1 Czy możliwe jest uruchomienie MS-Windows 3.1 w dosemu?

W pliku ../doc/README.Windows czytamy:

***************************************************************
*    UWAGA!!! UWAGA!!! UWAGA!!! UWAGA!!! UWAGA!!! UWAGA!!!    *
*                                                             *
*  Uwaga! Nie jest to jeszcze w pełni obsługiwane i jest      *
*  wiele znanych błędów! Wielkie programy prawie na pewno     *
*  NIE BĘDĄ DZIAŁAĆ!!! BĄDŹ PRZYGOTOWANY NA PADY SYSTEMU      *
*  JEŚLI TEGO SPRÓBUJESZ!!!                                   *
*                                                             *
*    UWAGA!!! UWAGA!!! UWAGA!!! UWAGA!!! UWAGA!!! UWAGA!!!    *
***************************************************************

No dobra, możliwe jest wystartowanie WINOS2 (zmodyfikowanej wersji Windows 3.1, której używa OS/2) pod dosemu. Wielkie dzięki dla Lutz-a & Dong-a!

Ale, POTRZEBUJESZ OBU LICENCJI, dla WINDOWS 3.1 oraz OS/2 !!!

Jest wiele znanych problemów. Windows-y bardzo często się wywalają i mogą za sobą pociągnąć dane. Wielkie programy nie będą się ładować itp., itd.

Innymi słowy nie jest to jeszcze gotowe do codziennego użytku. Wiele kart graficznych ma problemy (możesz zobaczyć miły biały ekran, chociaż poszukaj dalej win31-in-xdos). Twoje grupy programów będą znikać... Po prostu - fatalnie.

Więcej szczegółów znajdziesz w README.txt.

8.2 Czy mogę uruchamiać 32-bitowe programy z winemu

Przykro mi, nie. Win32 musi działać na najniższym poziomie, a to jest niewykonalne w Linuksie. (27/04/97)

8.3 Komunikat o błędzie: Cannot find the vdtapi.386 file when starting dosemu.

Jak to już zostało wyjaśnione wcześniej winemu nie umie obsłużyć 32-bitowych programów. Wszystkie sterowniki kończące się na 386 są 32-bitowe. Aby uruchomić winemu musisz wyrzucić z pliku win.ini wszystkie odwołania do sterowników .386 (27/04/97)

8.4 Windows 3.x w xdos.

Jeśli chodzi o wersję 0.64.3, to jest ona w stanie uruchomić Windows-y w xdos. Oczywiście nie jest to wcale zalecane, ale jeśli rzeczywiście chcesz spróbować, jest to bezpieczniejsze niż uruchamianie Windows 3.1 na konsoli, ponieważ _kiedy_ padnie, nie zablokuje ci klawiatury czy ekranu.

Wskazówki:

  1. Zdobądź żródła dosemu i Linux-a.
  2. Rozpakuj dosemu.
  3. Uruchom ./configure", żeby skonfigurować dosemu (skrypt ten włączy domyślnie vm86plus).
  4. Napisz "make", aby skompilować pakiet.
  5. Zdobądź sterowniki Trident SVGA dla Windows-a. Pliki te to tvgaw31a.zip i/lub tvgaw31b.zip. Są one dostępne pod adresm garbo.uwasa.fi. (jakieś mirror-y?).
  6. Rozpakuj sterowniki Trident.
  7. W instalacji Windows-a, zainstaluj sterownik Trident "800x600 256 color for 512K boards".
  8. Zrób wszystko co opisano powyżej, żeby zaistalować OS2WIN31.
  9. Uruchom xdos.
  10. W dosemu, przejdź do katalogu Windows-ów i uruchom winemu.
  11. Trzymaj kciuki.

8.5 Czy mogę zainstalować Windows-y z wewnątrz dosemu?

Nie, nie możesz. DOS powie ci coś w stylu:

The XMS driver you have on your system is not compatible with Windows...

Musisz zainstalować Windows-y z DOS-a. Możesz skopiować drzewo z Windows-ami gdzieś do Linux-a i użyć lredir, aby zamontować ten katalog w tym samym miejscu, w którym jest pod dosem. Na przykład:

Masz Windows-y w d:\windows Katalog ten jest zamontowany pod Linux-em na /dosc Kopiujesz drzewo z Windows-ami na Linux-a, np: "cp -a /dosd/windows/ /usr/share" W dosemu przekierowujesz skopiowane drzewo w ten sposób: lredir d: linux\fs\dosd

Teraz dosemu nie może mieszać w twoim katalogu z Windows-ami, ale także zmiany w tym katalogu nie są widoczne przez dosemu. Jeśli chcesz zrobić to samo z Windows-ami na C:, to zobacz w FAQ jak przekierować C:.

Ale możesz też użyć "setup-u" z katalogu Windows-ów, żeby zainstalować jakieś sterowniki lub pozmieniać jakieś ustawienia.(14/2/97)

8.6 Uwagi na temat myszy w Windows 3.1 w xdosemu.(win31-in-xdos)

  1. Użyj sterownika myszy "mouse.drv" z WinOS2.
  2. Aby mysz działała poprawnie musisz wpisać nastepujące linie do pliku wini.ini:
         [windows]
         MouseThreshold1=0
         MouseThreshold2=0
         MouseSpeed=0
    
  3. Kursor myszy nie jest rysowany przez X-y, ale przez Windows-y, tak więc zależy on od częstości odświeżania (refresh rate), ale zmiany położenia myszy nie będą opóźniane.
    (Właściwie masz dwa kursory, ale kursorowi z X-ów nadawany jest "niewidzialny kształt" podczas gdy znajduje się on wewnątrz okienka z DOS-em.)
  4. Ponieważ położenie przekazywane do Windows-ów jest interpretowane względnie, musimy wyskalować kursor. Jest to robione autoamtycznie za każdym razem kiedy znajdziesz się w obszarze okna z DOS-em: Kursorowi nadawane są współrzędne (0,0) a potem otrzymuje on z powrotem swoje położenie względem okna X-owego. Więc jeśli chcesz wyskalować kursor, po prostu przesuń go poza okno z DOS-em i z powrotem do wewnątrz.

(10/2/97)

8.7 Czemu moja ikona zniknęła z Program Manager-a?

MS-Windows i WinOS2 różnie obsługują grupę "Program Manager". MS-Win zapisuje ustawienia w "progman.ini", WINOS2 zapisuje zawartość "progman.ini" w "system.ini". Oto wskazówka od (friest@acm.org (Todda T. Friesa)):

cat progman.ini >> system.ini

Pamiętaj żebyś użył ">>" :-)

9. Grafika i dźwięk.

9.1 Czy mogę uruchamiać pod dosemu gry z 32-bitową grafiką?

Mark Rejhon (mdrejhon@magi.com) zgłosił(8/4/95)

Biorąc pod uwagę ostatnie poprawki w implementacji DPMI, które pojawiły się w wersji 0.60 można teraz w dosemu uruchamiać niektóre gry z 32-bitową grafiką. Jeśli gra jest kompatybilna z sesją DOS-ową w OS/2, to są spore szanse, że zadziała także w dosemu. (Przykładami takich gier są Descent, Dark Forces, Mortal Kombat 2,Rise of The Triad, Wszystkie zostały uruchomione z pozytywnym skutkiem w dosemu.)

Zanim uruchomisz jakąś grę z grafiką, klawiaturę musisz mieć skonfigurowaną na tryb surowy (raw mode) i włączone tryby graficzne VGA w pliku /etc/dosemu.conf.

Zauważ jednak, że będziesz musiał wyłączyć dźwięk w grze. (Ktoś będzie musiał zaprogramować emulację karty dźwiękowej zanim będziemy mogli tego uniknąć). Zauważ też, że odświeżanie w grze może być trochę wolne, z powodu wielozadaniowości Linux-a i braku obsługi dużej częstotliwości odświeżania.. Tak więc gry mogą działać w prędkości od 5 do 100 procent swojej mocy. Typowa prędkość, to ok. 50 procent w ostatnich wersjach dosemu i ma ostatecznie wzrosnąć.

Kto wie, może to nawet będzie działać. Jeśli nie chce ci to działać, sprawdź listę "EMUfailure" czy program tam nie występuje, albo czy nie jest w kategorii programów, które teraz ani przupuszcalnie w ogóle nie będą działać w dosemu. Jeśli sądzisz, że powinno się go wymienić na liście "EMUfailrue", to zgłoś to do linux-msdos@vger.rutgers.edu.

Jeśli włączysz DPMI i dosemu uruchamiane jest z prawem "suid root", to automatycznie robisz sobie dziurę w systemie (szczególnie jeśli używasz gier bazujących na dos4gw), klient jest w stanie dostać się do całej przestrzeni użytkownika, więc może także modyfikować kod dosemu. Włączenie opcji "secure" w pliku /etc/dosemu.conf

$_secure = "ngd" # opcja secure dla: n (zwykłych użytkowników), g (guest), d (dexe)

blokuje to. W każdym razie w X-ach lepiej jest uruchamiać DOSEMU jako zwykły użytkownik niż jako root.

9.2 Podczas wychodzenia z dosemu mam zaśmiecony cały ekran.

(8/4/95)

Problem jest w tym, że informacje o czcionce dla tekstowego ekranu nie są zachowywane. Zdobądź pakiet "svgalib". Bieżące źródła są w SUNSite Polska.

Może też znajdować się w twojej dystrybucji Linux-a jako prekompilowany pakiet. Użyj programu savetextmode, aby zachować bieżący tryb tekstowy i czcionki w pliku w katalogu /tmp zanim uruchomisz dosemu. Potem, po wyjściu z dosemu uruchom textmode, żeby odzyskać stan sprzed uruchomienia.

Dodatek od (lermen@elserv.ffm.fgan.de(11/2/97)):

Spójrz także do src/arch/linux/debugger/README.recover i README.dosdebug, dosdebug może ci pomóc w naprawie.

9.3 Dlaczego moje programy dźwiękowe nie działają w DOSEMU?

W DOSEMU znajduje się szczątkowy emulator SoundBlaster (SBemu) - dokumentacja do niego znajduje się pod adresem www.slitesys.demon.co.uk/a.macdonald/dosemu/sound/. Całość jest dopiero na etapie tworzenia więc większość programów DOS-owych korzystających z dżwięku nie będzie działać poprawnie.

10. Gry.

10.1 Duke3d nie działa.

Hans Lermen <lermen@elserv.ffm.fgan.de> napisał:(16/2/97)

Duke3d musi być skonfigurowany przez setup. Musisz tam wybrać 'keyboard + mouse', w przeciwnym wypadku nie będzie działać.

11. Problemy i rozwiązania.

11.1 Sprawa dotycząca bezpieczeństwa.

Aby dosemu mogło być w pełni wykorzystane musi być "suid root". Większość programów DOS-owych tego nie potrzebuje. Działając pod X-ami raczej nie potrzebujesz uprawnień root-a. DOSEMU działa z takimi uprawnieniami tylko tam gdzie jest to konieczne, i jak najszybciej się takich uprawnień pozbywa. Ale w przypadku DPMI, program dos-owy ma dostęp do całego obszaru użytkownika, a więc może tez modyfikować kod dosemu. Użycie opcji 'secure on' w pliku /etc/dosemu.conf blokuje tę możliwość. Jest jeszcze kilka innych ważnych aspektów związanych z bezpieczeństwem omówionych w README.txt.

11.2 Kiedy uruchamiam niektóre programy pojawia się "ERROR: general protection" i DOSEMU kończy działanie.

Zdarza się to wtedy kiedy program używam DPMI, a ty nie włączyłeś obsługi DPMI. Spróbuj zmienić w /etc/dosemu.conf linię:

$_dpmi = (off)

na

$_dpmi = (nnnn)

gdzie nnn jest liczbą określającą pamięć w kB, którą chcesz przeznaczyć na programy DOS-owe (Np. DOOM wymaga około 4000 kB). Jeśli to zrobisz, nie powinieneś uruchamiać DOSEMU z prawami root-a (zobacz punkt o bezpieczeństwie) - zawsze lepiej jest nie uruchamiać DOSEMU z prawami root-a jeśli to tylko możliwe.

Innym możliwym powodem jest fakt, że program taki używa VCPI (przeczytaj EMUfailure.txt), albo w inny sposób przełącza się w tryb chroniony (inaczej niż przez DPMI). W takim przypadku nigdy nie będzie działać w DOSEMU.

Jeśli żadne z powyższych nie odpowiada twojemu przypadkowi, to przeczytaj punkt 1.14 "Mam program, który nie działa i nie jest w EMUfailure.txt"

11.3 Dosemu pada podczas startu. Mam zainstalowane Win95.

Dosemu zakłada, że wersje DOS-u na obrazie dysku oraz na napędzie, który odwzorowujesz są takie same. Jeśli nie, to dosemu padnie wcześniej czy później. Podczas wyboru jaki daje Win95 po wciśnięciu klawiszy F4, F5 lub F8 po tekście "Uruchamianie systemu Win95" wersje na dysku Win95 mogą się zamienić. Miej szczególnie na uwadze command.com. Niech zmienna "shell" w config.emu wskazuje na poprawną statyczną wersję command.com-a, np: shell=c:\win95\command.com c:\ /P /E:1024 (97/02/28)

11.4 Dosemu się zawiesza! Jak mogę je zakończyć?

Przełącz się na inną konsolę i uruchom program dosdebug, potem wpisz kill - może to potrwać chwilę, ale zadziała.

11.5 Dosemu padło i nie mogę nic pisać.

Daniel Barlow(jo95004@sable.ox.ac.uk) zgłosił(8/4/95)

Jeśli nie masz terminala, ani dostępu poprzez sieć, żeby się zalogować, możliwe, że będziesz musiał wcisnąć przycisk "RESET". Jeśli jednak możesz w jakiś sposób dostać się do używalnej powłoki, to uruchom "kbd_mode -a", aby przełączyć klawiaturę w tryb ASCII, i/lub "stty sane", na konsoli żebyś widział co piszesz.

Mądrą rzeczą jest uruchamianie dosemu poprzez skrypt, w którym polecenie "kbd_mode -a" byłoby wykonywane zaraz po zakończeniu dosemu. Kiedy dosemu padnie, skrypt powinien wykonać polecenie kbd_mode.

11.6 Włączyłem pamięć EMS w /etc/dosemu.conf, ale to nie pomaga.

Rob Janssen (rob@pe1chl.ampr.org) zgłosił(11/7/94)

Nie zapomnij załadować dostarczanego ems.sys z pliku config.sys.

11.7 Jak się pozbyć tych denerwujących komunikatów "disk change"?

(11/8/94)

Zdobądź i zainstaluj klogd (sysklogd). Powinieneś znaleźć ten program na SUNSite Polska.

11.8 Dlaczego dosemu nie chce się uruchomić drugi raz po wyjściu w trybie konsoli?

Aldy Hernandez (aldy@sauron.cc.andrews.edu) zgłosił(8/7/94), że

Powinieneś wyłączyć cache grafiki i/lub BIOS-u.

11.9 Dlaczego dosemu uruchamia się na terminalu, a nie chce na konsoli?

JyiJiin Luo (jjluo@casbah.acns.nwu.edu)(19/4/94) zgłosił

Przedtem miałem dokładnie ten sam problem. Stwierdziłem, że muszę wyłączyć całkowicie przesłanianie (shadow) grafiki w BIOS-ie. Od tej pory dosemu działa dobrze na moim systemie.

11.10 Jak mogę przyśpieszyć dosemu?

W niektórych przypadkach ciekawe efekty można uzyskać poprzez próbowanie różnych wartości zmiennej HogThreshold w pliku dosemu.conf.

Daniel Barlow(jo95004@sable.ox.ac.uk) zgłosił(8/4/95)

Zmienna HogThreshold powinna być teraz ustawiana na conajmniej połowę wartości BogoMips jaką wskazuje system podczas ładowania.

11.11 Mój CDROM ma problemy podczas odczytu niektórych plików pod dosemu.

Vinod G Kulkarni (vinod@cse.iitb.ernet.in)(7/4/94) zgłosił, że

Kiedy CDROM jest montowany spod Linux-a i używany pod dosemu (napęd odwzorowany), mogą wystąpić problemy. Sterownik do CDROM-u (iso9660) umieszczony w jądrze próbuje zgadnąć typ pliku (tj. binarny czy tekstowy). Jeśli nie zgadnie, to próbuje dalej używając heurystyki. Metoda ta zawodzi w pewnych okolicznościach kiedy (prawie) tekstowy plik ma być potraktowany jako binarny. (Nie wiem czy to jest błąd czy zaleta.)

Wynikiem tego jest to, że jeśli skopiujesz taki plik z CDROM-u (z Linux-a - niekoniecznie z dosemu), to plik wynikowy będzie większy niż plik oryginalny. (Puste znaki sa dodawane przed ^J i ^M.) Więc program uruchamiany w dosemu podaje komunikat o błędzie lub się zawiesza, co może dawać mylne wrażenie o problemach z dosemu.

Rob Janssen (pe1chl@rabo.nl) zgłosił(10/8/94), że

Sposobem na rozwiązanie tego problemu jest wyłączenie konwersji. Podczas montowania CDROM-u dodaj opcję "-o conv=binary" do polecenia mount, albo użyj takiego wpisu w /etc/fstab:

/dev/cdrom      /cdrom          iso9660 conv=binary,ro

Nie są potrzebne łaty do jądra.

11.12 Jak mam zobaczyć wyniki śledzenia?

Co do wersji 0.60 wyniki te są przekierowywane do pliku podanego w linii poleceń. Użyj polecenia "dos -D+a -o /tmp/debug", aby zapisać wszystkie wyniki śledzenia w pliku /tmp/debug. Nie powinno być już potrzeby przekierowywania stderr.

11.13 Dlaczego litery na ekranie są wyświetlane ddwwaa razy?

Nick Holloway (alfie@dcs.warwick.ac.uk) zgłosił(22/2/94), że

Zdarza się to tylko jeśli uruchamiasz DOS-a na konsoli z ustawionym "istrip". Sądze, że jest to spowodowane tym, że surowe kody klawiszy są powielane przez "istrip, tak że puszczenie klawisza widziane jest jako jego wciśnięcie.

Tak, że obsługa wejściowa musi być wyłączona jeśli używasz kodów klawiszy na konsoli (nie byłoby to dobrym pomysłem na terminalu).

11.14 Dosemu psuje mi ekran?

Przy kartach nie do końca obsługiwanych w dosemu, z włączonym dostepem do grafiki na konsoli pad dosemu może pozostawić konsolę w prawie nieużywalnym stanie. Aby przygotować się na taką sytuację, Spudgun <spudgun@earthlight.co.nz> wysłał następujące rozwiązanie. Najpierw zapisz swoje rejestry z konsoli

~> cat /usr/bin/savetextmode
~> restoretextmode -w /etc/textregs
~> restorefont -w /etc/fontdata

Potem, kiedy dosemu padnie, uruchom następujący skrypt:

restoretextmode -r /etc/textregs
restorefont -r /etc/fontdata
restorepalette

Jeśli to nie pomoże, to nic nie pomoże.
Przekonałem się także, że uruchomiony Xserwer ustawiał moją kartę graficzną w dziwny stan, a ten skrypt tylko pogarszał sprawę. Myślę, że pomogła zmiana Xserwer-a i/lub uruchamianie savetextmode na vt podczas działania X-ów.(08/04/97)

11.15 MS FoxPro 2.6 nie chce działać.

FoxPro 2.6 nie chce działać na napędach sieciowych. Alexey Naidyonov <growler@growler.tsu.tula.ru> stwierdza:
Sądzę, że twoje pliki są na przekierowanym dysku, tak? Problem w tym, że FoxPro nie działa na takich dyskach, ale kiedy ustawiłem disk { partition ... } w /etc/dosemu.conf, to działał.

12. Wkład w projekt dosemu.

12.1 Kto jest odpowiedzialny za dosemu?

Dosemu tworzone jest na podstawie pracy Matthiasa Lautnera i Roberta Sandersa. Hans Lermen (lermen@elserv.ffm.fgan.de) jest odpowiedzialny za organizację najnowszej wersji dosemu.

                       Historia DOSEMU

          Wersja           Data             Osoba
         -------------------------------------------------
          0.1        3 Września 1992   Matthias Lautner
          0.2        13 Września 1992  Matthias Lautner
          0.3        ???                 Matthias Lautner
          0.4        26 Listopada 1992   Matthias Lautner
          0.47       27 Stycznia 1993    Robert Sanders
          0.47.7     5 Lutego 1993    Robert Sanders
          0.48       16 Lutego 1993   Robert Sanders
          0.48pl1    18 Lutego 1993   Robert Sanders
          0.49       20 Maja 1993        Robert Sanders
          0.49pl2    18 Listopada 1993   James MacLean
          0.49pl3    30 Listopada 1993   James MacLean
          0.49pl3.3  3 Grudnia 1993    James MacLean
          0.50       4 Marca 1994       James MacLean
          0.50pl1    18 Marca 1994      James MacLean
          0.52       16 Czerwca 1994       James MacLean
          0.60       9 Kwietnia 1995       James MacLean
          0.64.4     9 Lutego 1997       Hans Lermen
          0.66.3     20 Kwietnia 1997      Hans Lermen
          0.98.1     9 Grudnia 1998    Hans Lermen
          0.98.6     21 Marca 1999      Hans Lermen

12.2 Chcę pomóc. Z kim mam się skontaktować?

Projekt dosemu jest rezultatem wysiłku drużynowego. Jeśli chcesz wnieść jakiś wkład, to przeczytaj DPR (dosemu Project Register). Aktualną kopię możesz znaleźć w doc/DANG.

12.3 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to:

doc-linux-pl-2002.06.14.orig/html/Dos2Linux-HOWTO.pl.html0100664000175000017500000015611206770264140021376 0ustar covencoven Szybkie przejście od DOS-a do Linux-a.

Szybkie przejście od DOS-a do Linux-a.

Autor: Guido Gonzato, Guido@ibogfs.cineca.it
v1.0 11 Grudnia 1996
Wersja polska: Bartosz Maruszewski, B.Maruszewski@jtz.org.pl
v1.31, 26 Lipca 1997


Dokument ten jest dedykowany tym wszystkim (wkrótce byłym) użytkownikom DOS-a, którzy zdecydowali się przejść na Linux-a, system typu Unix pierwotnie przeznaczony na komputery klasy PC. Dokument ten został napisany w standardzie ISO-8859-2. Oryginalna wersja znajduje się pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/docs/HOWTO. Nowsza wersja zawiera uaktualnione wskazania na katalog z jądrami na ftp.icm.edu.pl.

1. Wprowadzenie.

1.1 Czy Linux jest dla ciebie odpowiedni?

Więc chcesz przejść z DOS-a na Linux-a ? Dobry pomysł, ale ostrzegam: może ci to wyjść bokiem. Według mnie nie ma takiego czegoś jak "najlepszy komputer" czy "najlepszy system operacyjny"; wszystko zależy od tego do czego dana konfiguracja ma służyć. Dlatego też nie wierzę, że Linux jest najlepszym wyjściem dla każdego - nawet jeśli jest on technicznie lepszy od wielu komercyjnych systemów operacyjnych. Naprawdę nie pożałujesz Linux-a jeśli to czego szukałeś, to software do programowania, Internet, TeX... w ogóle techniczny software, ale jeśli w większości potrzebujesz software'u komercyjnego, jeśli nie czujesz się na siłach uczyć setek poleceń i wklepywać je z klawiatury, to szukaj gdzie indziej.

Linux nie jest (jak na razie) tak łatwy w użytkowaniu i konfigurowaniu jak Windows czy Mac, tak więc przygotuj się do grzebania w plikach konfiguracyjnych. Pomimo tych przestróg, powiem ci, że jestem 100% przekonany, że jeśli należysz do tej dobrej grupy użytkowników, to odnajdziesz w Linux-ie swoją komputerową Nirvanę.

Zakładam, że

To HOWTO zastępuje poprzednie mini-HOWTO o tym samym tytule.

1.2 Tak jest. Powiedz mi jeszcze.

Zainstalowałeś Linux-a na PC-cie. Założyłeś sobie konto, wykonując instrukcje podczas instalacji (jeśli nie, to wpisz adduser teraz !!!) i Linux działa. Właśnie wpisałeś swój login (indentyfikator) i hasło (password) i patrzysz na ekran myśląc: "No... i co teraz?"

Teraz - nie rozpaczaj. Jesteś prawie gotów robić to samo co w DOS-ie i wiele więcej. Jeślibyś działał na DOS-ie a nie na Linux-ie zrobiłbyś jedną z tych rzeczy:

Ucieszysz się bardzo jeśli dowiesz się, że to samo można robić pod Linux-em w podobny sposób jak pod DOS-em. Pod DOS-em przciętny użytkownik używa tylko kilku poleceń z ponad 100 dostępnych; to samo można powiedzieć o Linux-ie. Jeśli przypadkowo nie znasz poleceń do wykonywania tego co jest w liście powyżej, to odpuść sobie - nie czytaj. Nie będę wyjaśniał co to katalog czy zmienna PATH.

Kilka notek zanim pójdziemy dalej:

Jesteś teraz gotowy, aby uczyć się Linux-a.

1.3 Dla niecierpliwych.

Nie możesz się już doczekać ? No to masz tu skrót poleceń Linux-a:

   
   DOS                     Linux                   Uwagi
   ------------------------------------------------------------------------------
   
   BACKUP                  tar -Mcvf device dir/   zupełnie coś innego
   CD dirname\             cd dirname/             prawie ta sama składnia
   COPY file1 file2        cp file1 file2          ------ " ------
   DEL file                rm file                 UWAGA: nie ma UNDELETE
   DELTREE dirname         rm -R dirname/          ------ " ------
   DIR                     ls                      nie zupełnie ta sama
                                                   składnia
   EDIT file               vi file                 raczej ci się nie spodoba
                           emacs file              ten jest lepszy
                           jstar file              podobny do EDIT-a
   FORMAT                  fdformat,
                           mount, umount           raczej inna składnia
   HELP command            man command             ta sama filozofia
   MD dirname              mkdir dirname/          prawie ta sama składnia
   MOVE file1 file2        mv file1 file2          ------ " ------
   NUL                     /dev/null               ------ " ------
   PRINT file              lpr file                ------ " ------
   PRN                     /dev/lp0,
                           /dev/lp1                ------ " ------
   RD dirname              rmdir dirname/          ------ " ------
   REN file1 file2         mv file1 file2          nie dotyczy wielu plików
   RESTORE                 tar -Mxpvf device       inna składnia
   TYPE file               less file               o wiele lepszy
   WIN                     startx                  dwa różne bieguny !!!

2. Pliki i programy.

2.1 Pliki: pojęcie ogólne.

Linux posiada system plików - co oznacza "struktura katalogów i plików" - bardzo podobny do DOS-owego. Pliki posiadają nazwy, które podlegają specjalnym zasadom, są zapisywane w katalogach, niektóre są wykonywalne, a wśród tych większość ma różne opcje. Możesz też używać masek ('*', '?'), przekierowań strumieni oraz potoków. Jest tylko trochę mniejszych różnic.

Możesz teraz skoczyć do sekcji Tłumaczenie poleceń z DOS-a na Linux-a, ale na twoim miejscu czytałbym dalej.

2.2 Dołączenia symboliczne.

Systemy typu Unix mają taki typ pliku, który nie istnieje pod DOS-em - symboliczne dołączenie. Można to uważać za wskaźnik na plik lub katalog i może być używany zamiast tego pliku czy katalogu, na który wskazuje. Coś podobnego do skrótów w Win'95. Przykładami dołączeń symbolicznych mogą być: /usr/X11, który wskazuje na /usr/X11R6; /dev/modem, który wskazuje na /dev/cua0 lub /dev/cua1.

Aby utworzyć symboliczne dołączenie napisz:

     ln -s <plik_lub_katalog> <nazwa_dołączenia>

Na przykład:

   $ ln -s /usr/doc/g77/DOC g77podrecznik.txt

Teraz możesz wykonywać operacje na g77podrecznik.txt zamiast na /usr/doc/g77/DOC.

2.3 Atrybuty plików w Linux-ie.

Każdy plik i katalog w Linux-ie ma swoje prawa dostępu, zwane przez użytkowników DOS-a atrybutami. Postaram się przybliżyć to pojęcie i wyjaśnić co oznacza magiczne 755.

Jak wydasz polecenie ls -l to wyświetli się coś na kształt:

   -rw-r--r--   1 root     root        32251 Feb 15 14:32 DOS2Linux
   -rw-r--r--   1 root     root        38338 Feb 20 13:15 DOS2Linux.pl.sgml
   -rw-r--r--   1 root     root        18144 Feb 19 18:34 Locales-HOWTO.sgml
   -rw-r--r--   1 root     root         1398 Feb 19 18:30 howto.dat
   -rw-r--r--   1 root     root          317 Feb 14 14:24 next.gif
   -rw-r--r--   1 root     root           37 Feb 19 20:03 plik_log
   -rw-r--r--   1 root     root          317 Feb 14 14:24 prev.gif
   -rw-r--r--   1 root     root          610 Feb 19 12:01 slowniczek
   -rw-r--r--   1 root     root         5655 Feb 16 21:54 slowniczek.uwagi
   -rw-r--r--   1 root     root         2601 Feb 18 22:29 tlumaczenie.howto
   -rw-r--r--   1 root     root          316 Feb 14 14:24 toc.gif
   -rw-r--r--   1 root     root          723 Feb 20 12:40 todo
   -rw-r--r--   1 root     root         1307 Feb 19 19:36 zasady

Pierwsza kolumna z lewej to właśnie wspomniane prawa dostępu, 3. i 4. to właściciel i grupa do jakiej dany plik należy. Ogólnie wygląda to tak:

   -  rwx  rwx  rwx

r - read (możliwość czytania) w - write (możliwość zapisu) x - execute (możliwość wykonywania, bądź dla katalogów możliwość przeszukiwania i ustawienia go jako bieżący cd) Oczywiście w rzeczywostości nie ma tam spacji, ale je robię dla czytelności. W miejscu pierwszej kreski może znajdować się jedna z liter: d, l, b, c - są to tylko najpopularniejsze. I tak oznaczają one odpowiednio: katalog, symboliczne dołączenie, urządzenie blokowe, urządzenie znakowe. Dalej: od lewej: pierwsza trójka liter to prawa dla właściciela pliku, druga trójka - dla grupy do jakiej należy plik, trzecia - dla pozostałych użytkowników. W pierwszej i drugiej trójce mogą się pojawić litery s lub S zamiast x - oznacza to, żeby wykonać plik z takimi prawami jakie ma właściciel pliku albo grupa, a nie ten kto go uruchamia. Na przykład plik /usr/bin/passwd ma ustawione pierwsze x na s, żeby mógł dokonać zapisu do pliku /etc/passwd, do którego może pisać tylko root, a nie zwykły użytkownik, który uruchamia ten program.

Polecenie chmod pozwala zmieniać te prawa dostępu - jeśli jesteś właścicielem pliku.

Podstawmy sobie następujące wartośći:

   -  rwx  rwx  rwx
      421  421  421
        4    2    1  - te wartości są dla s, S i t
                       (na temat 't' zobacz "man chmod")

Żeby ustawić jakieś prawa dostępu należy dodać do siebie te liczby, które stoją przy prawach, które chcemy ustawić, ale dla każdej trójki osobno. Trochę przykładów dla lepszego zrozumienia:

   - r-x --- --- nazwa_pliku
     4 1
To będzie 4+0+1, 0+0+0, 0+0+0 czyli 500. chmod 500 nazwa_pliku zmieni prawa dostępu na odczyt i wykonywanie dla właściciela i zabierze wszystkie prawa dla grupy i innych użytkowników.

   - rwx r-x r-x nazwa_pliku
     421 4-1 4-1

To będzie 4+2+1, 4+0+1, 4+0+1 czyli 755 - to jest chyba najczęstsze ustawienie.

   - rws r-x r-x
     421 4 1 4 1
       4

To będzie 4+0+0 - najważniejsze są wartości s, S, t chyba, że ich nie ma - 4+2+1 4+0+1, 4+0+1 czyli 4755

Teraz łatwiejszy sposób na zmianę praw dostępu. Polecenie chmod może też przyjmować takie parametry:

   
     chmod ugoa+-=rwx <plik>

I tak: u - user (właściciel pliku), g - group (grupa do jakiej plik należy), o - others (pozostała część użytkowników). + ustawia podane prawa, a - zabiera. = czyni podane prawa jedynymi prawami jakie posiada dany plik.

Przykłady:

     chmod u+x <plik> - nadaje właścicielowi pliku prawo do
        wykonywania go.
     chmod ug+rx <plik> - nadaje właścicielowi i grupie, do której
        należy plik prawa do odczytu i wykonywania

To powinno wyjaśnić wiele spraw związanych z prawami dostępu. Więcej szczegółów znajdziesz w podręczniku systemowym "man".

2.4 Pliki: Porównanie podstawowych poleceń DOS-owych z Linux-owymi.

   DOS          Linux

   COPY         cp
   DEL          rm
   REN          mv
   TYPE         cat
   MORE         more, less - można też używać jako polecenie, nie tylko
                             jako filtr (ten drugi jest lepszy, ma więcej
                             możliwości)
   Przekierowywanie strumieni i potoki wygladają tak samo.
   
   Maski: '*', '?' oraz [znaki]
        [znaki] - oznacza pokolei każdy, ale zawsze jeden, z
        wymienionych w środku znaków, np:
        
        ls *[abc] - wyświetl nazwy plików kończących się na 'a' lub 'b' lub 'c'
        ls *[a-g] - wyświetli nazwy plików kończących się na jedną z
                    liter od a do g
   
   nul          /dev/null
   prn,lst      /dev/lp0, lpr
   
   PRZYKŁADY
   
   DOS                                  Linux
   
   C:\GUIDO>copy joe.txt joe.doc           $ cp joe.txt joe.doc
   C:\GUIDO>copy *.* total                 $ cat * > total
   C:\GUIDO>copy fractals.doc prn          $ cat fractals.doc | lpr
   C:\GUIDO>del temp                       $ rm temp
   C:\GUIDO>del *.bak                      $ rm *~
   C:\GUIDO>ren paper.txt paper.asc        $ mv paper.txt paper.asc
   C:\GUIDO>type letter.txt                $ more letter.txt
   C:\GUIDO>type letter.txt                $ less letter.txt
   C:\GUIDO>type letter.txt > nul          $ cat letter.txt >/dev/null
           n/d                             $ more *.txt *.asc
           n/d                             $ cat section*.txt
           n/d - niedostępne
Uwagi:
1) * jest sprytniejszą maską pod Linux-em:
- * oznacza jakąkolwiek nazwę nie zaczynającą się na .
- *.* oznacza nazwę, która ma w środku kropkę
- p*r oznacza nazwę zaczynająca się na p a kończącą na r
- *c* oznacza nazwę zawierającą w środku c
2) Podczas używania less możesz poruszać się po pliku
- w przód - spacja
- w tył - b
lub strzałkami
- wszystkie dostępne funkcje otrzymasz naciskając h
3) W Linux-ie NIE MA UNDELETE, więc pomyśl dwa razy zanim skasujesz.
4) W Linux-ie znaczek > przekierowuje standardowe wyjście, ale nie standardowe wyjście błędów; aby błędy także znalazły się w pliku musisz napisać np. cat plik >plik_log 2>&1 - ale to działa tylko w powłoce bash lub sh. Od tłumacza: aby dowiedzieć się jaką powłokę używasz napisz echo $shell
5) Nie ma polecenia DOS-owego RENAME; tzn. ren *.xxx *.yyy nie zadziała
6) Używaj cp -i oraz mv -i, aby zostać ostrzeżonym, kiedy plik ma zostać zmazany.

2.5 Wykonywanie programów: wielozadaniowość i sesje.

Aby uruchomić program podaj jego nazwę i wciśnij <<ENTER>>. Jeśli katalog (sekcja Katalogi), w którym znajduje się dany program, jest w zmiennej PATH (sekcja Inicjacja systemu), program się uruchomi. Wyjątek: W przeciwieństwie do DOS-a, pod Linux-em jeśli program znajduje się w katalogu bieżącym nie uruchomi się, o ile katalog bieżący nie jest w zmiennej PATH. Rozwiązanie: wpisz ./<prog>.

Oto jak wygląda typowy wiersz poleceń: $ polecenie -o1 -o2 ... -on par1 par2 ... parn <wejście >wyjście gdzie o1,2,...,n to opcje polecenia, a par1,2,...,n to parametry. Możliwe jest uruchomienie kilku poleceń w jednym wierszu poleceń: $ polecenie1; polecenie2; ...; polecenien

To by było wszystko na temat uruchamiania programów, gdyby nie jedna z najważniejszych zalet Unix-ów a tym samym i Linux-a czyli wielozadaniowość. Słowo to oznacza, że systemy operacyjne typu Unix mogą wykonywać kilka programów (od teraz procesów) na raz. Można uruchomić procesy w tle oraz w pierwszym planie. Można także działać na kilku sesjach na raz - to tak jakbyś pracował na kilku komputerach na raz !

- Na konsoli (czyli na komputerze, na którym jest zainstalowany Linux) dostępnych jest standardowo 6-7 wirtualnych ekranów (zwanych wirtualnymi konsolami); aby się pomiędzy nimi przełączać użyj klawiszy ALT+F1..6-7, albo ALT+strzałka
- Aby uruchomić nową sesję bez opuszczania bieżącej napisz su - <identyfikator> Jest to pożyteczne kiedy na przykład jesteś zalogowany jako zwykły użytkownik, a chcesz zamontować dysk (sekcja Dyskietki) - tylko root może to zrobić
- Aby zakończyć sesję wpisz exit. Jeśli są jakieś zawieszone zadania (zobacz dalej) zostaniesz ostrzeżony
- Aby odpalić proces w pierwszym planie napisz: $ program [-opcje] [parametry] [<wejście] [>wyjście]
- Aby odpalić proces w tle napisz: $ program [-opcje] [parametry] [<wejście] [>wyjście] &
- Aby zobaczyć ile jest procesów napisz: ps Polecenie to pokaże listę procesów aktualnie działających. Każdy z nich ma swój niepowtarzalny numer PID (Process IDentifier)
- Aby zakończyć/zabić proces napisz $ kill <PID> Możesz zabić proces jeśli np. nie wiesz jak go normalnie zakończyć. Czasami proces się stawia i nie chce dać się zabić (no ja też bym się stawiał ;) ), ale i tak jest na niego sposób: $ kill -9 <PID> W dodatku powłoka (odpowiednik COMMAND.COM-u; większość używa bash-a) pozwala na zatrzymanie lub czasowe zawieszenie procesu, wysłanie procesu w tło, powrót procesu do pierwszego planu. W tym kontekście procesy nazywają się "jobs" (czyli zadania).
- Aby zobaczyć ile jest zadań napisz $ jobs zadania są identyfikowane poprzez numer jaki nada im powłoka a nie poprzez PID
- Aby zatrzymać proces uruchomiony w pierwszym planie wciśnij CTRL+C lub CTRL+D - nie zawsze zadziała
- Aby zawiesić proces uruchomiony w pierwszym planie wciśnij CTRL+Z
- Aby wysłać zawieszony proces w tło napisz $ bg <nr_zadania>
- Aby przywrócić proces do pierwszego planu napisz $ fg <nr_zadania>
- I jeszcze raz, aby zabić zadanie napisz: $ kill %<nr_zadania>

Używając tych poleceń możesz jednocześnie formatować dysk, archiwizować jakieś pliki, kompresować jakieś pliki, kompilować program, albo kilka, rozpakowywać jakieś archiwum i jeszcze na dodatek mieć wiersz poleceń do swojej dyspozycji HA !! Spróbuj zrobić to pod DOS-em albo nawet Windowsami, a zobaczysz różnicę między Unixami a domowymi systemami operacyjnymi.

2.6 Uruchamianie programów na komputerach odległych.

Aby uruchomić jakiś program na odległym komputerze, którego adres to daleko.wielki.pl, napisz:

     telnet daleko.wielki.pl

Po zalogowaniu się uruchom swoje ulubione programy. Oczywiście nie muszę mówić, że trzeba mieć konto na odległym komputerze.

Jeśli masz X11 możesz nawet uruchamiać aplikacje pod XWindows na tamtym komputerze i wyswietlać je na swoim ekranie. Niech daleko.wielki.pl będzie odłegłym komputerem obsługującym XWindows, a tutaj.linux.pl twoim komputerem. Aby uruchomić z tutaj.linux.pl program pod XWindows tak, aby uruchomił się on na daleko.wielki.pl

Et voila! Teraz program będzie działał na komputerze odległym, a wyniki jego działania będą wyświetlane na twoim ekranie. Nie próbuj tego robić przez łącze PPP.

3. Używanie katalogów.

3.1 Katalogi: pojęcie ogólne.

Poznaliśmy już różnicę między plikami w DOS-ie i Linux-ie. Co do katalogów, to w DOS-ie katalogiem głównym jest \, natomiast w Linux-ie jest to /. Tak samo kolejne podkatalogi oznacza się aaa/sss/ddd. Przykłady: DOS: \PROGRAMS\C++\SOURCES\HELLO.CPP Linux: /home/guido/papers/geology/mid_eocene.tex

Jak zwykle '..' to katalog nadrzędny, a '.' to katalog bieżący. Pamiętaj, że Linux nie pozwoli ci na wykonywanie poleceń cd, rd czy md, gdzie ci się podoba. Każdy użytkownik zaczyna pracę w systemie w swoim domowym katalogu nadanym mu przez administratora; np. u mnie jest to: /home/guido.

3.2 Prawa dostępu katalogów.

Katalogi także mają swoje prawa dostępu. To czego dowiedziałeś się z sekcji Prawa dostępu odnosi się również do katalogów. Atrybut 'x' oznacza, że możesz dany katalog uczynić katalogiem bieżącym (cd), w - możesz skasować z niego pliki (zależnie od ich praw dostępu) albo sam katalog.

Na przykład, aby zabronić innym użytkownikom dostępu do swojego katalogu domowego /home/guido/ napisz:

     chmod o-rwx /home/guido

3.3 Katalogi: Porównanie podstawowych poleceń DOS-owych z Linux-owymi.

        DOS                     Linux

        DIR                     ls, find, du
        CD                      cd, pwd
        MD                      mkdir
        RD                      rmdir
        
        PRZYKŁADY

   C:\GUIDO>dir                            $ ls
   C:\GUIDO>dir file.txt                   $ ls file.txt
   C:\GUIDO>dir *.h *.c                    $ ls *.h *.c
   C:\GUIDO>dir/p                          $ ls | more
   C:\GUIDO>dir \*.tmp /s                  $ find / -name "*.tmp"
   C:\GUIDO>cd                             $ pwd
           n/d - patrz uwaga               $ cd
           n/d - patrz uwaga               $ cd ~
           n/d - patrz uwaga               $ cd ~/temp
   C:\GUIDO>cd \other                      $ cd /other
   C:\GUIDO>cd ..\temp\trash               $ cd ../temp/trash
   C:\GUIDO>md newprogs                    $ mkdir newprogs
   C:\GUIDO>md \progs\turbo                $ mkdir /progs/turbo
   C:\GUIDO>rd newprogs                    $ rmdir newprogs
   C:\GUIDO>rd \progs\turbo                $ rmdir /progs/turbo
   
Uwaga 1: jeśli chcesz skasować katalog rmdir musi on być pusty; możesz skasować katalog wraz z zawartością poleceniem rm -r.
< Uwaga 2: znak ~ jest skrótem nazwy twojego katalogu domowego. Polecenia cd i cd ~ zmienią ścieżkę bieżącą na twój katalog domowy niezależnie od tego, gdzie jesteś w danym momencie; polecenie cd ~/tmp zmieni bieżący katalog na /home/twój_dom_kat/tmp. Rozumiesz zasadę ?
Uwaga 3: cd - odwraca ostatnie polecenie cd.

4. Dyskietki, dyski twarde i takie inne.

4.1 Urządzenia.

Nigdy o tym nie myślałeś, ale DOS-owe polecenie FORMAT A: robi o wiele więcej niż się wydaje. W rzeczywistości, kiedy wydajesz polecenie FORMAT, to:
- sformatuje ono fizycznie dysk;
- stworzy katalog A:\ (czyli utworzy system plików na dyskietce)
- uczyni dyskietkę dostępną dla użytkownika (zamontuje ją).

Te trzy kroki są oddzielnymi zadaniami w Linux-ie. Możliwe jest przygotowanie i używanie dyskietek w formacie MS-DOS, chociaż są także dostępne inne formaty; najpopularniejeszym jest ext2, ale dla dyskietek lepszy jest minix. Oto sposób w jaki można przygotować dyskietkę (standardową 1.44 MB) do pracy:
- musisz się zalogować jako root,
- fdformat /dev/fd0H1440 lub mformat a: - żeby mieć dyskietkę w formacie MS-DOS
- przed rozpoczęciem używania dyskietki musisz ją zamontować: mount /dev/fd0 /mnt
katalog /mnt musi istnieć.

Teraz możesz używać dyskietki; jej obraz jest w katalogu /mnt. BARDZO WAŻNE - zanim wyjmiesz dyskietkę ze stacji - odmontuj ją:
umount /mnt Oczywiście musisz formatować tylko nieużywane dyskietki. Jeśli chcesz korzystać ze stacji B: to zamień wszędzie fd0 na fd1.

Wszystko co robiłeś poprzez A: czy B: robi się teraz poprzez katalog /mnt. Przykłady:

   DOS                             Linux
   
   C:\GUIDO>dir a:                 $ ls /mnt
   C:\GUIDO>copy a:*.* \docs\temp  $ cp /mnt/* /docs/temp
   C:\GUIDO>copy *.zip a:\zip      $ cp *.zip /mnt/zip
   C:\GUIDO>a:                     $ cd /mnt
   A:\>                            /mnt$
   

Nie muszę chyba mówić, że tak jak możesz zamontować dyskietkę tak i możesz zamontować dowolne urządzenie z danymi. (dysk twardy, CD-ROM, taśma itp.) Spójrz do katalogu /dev, żeby zobaczyć jakie możesz montować urządzenia. (UWAGA: jest tam około 1000 plików, lepiej użyj ls /dev | less). Np. Aby zamontować CD-ROM napisz
mount -t iso9660 /dev/cdrom /cdrom

To był "oficjalny" sposób na montowanie dyskietek, ale jest inny sposób - łatwiejszy. Ponieważ jest to uciążliwe ciągle się przełączać na root-a po to, aby zamontować dyskietkę - każdemu użytkownikowi możemy pozwolić na montowanie dyskietek. W taki sposób:

Teraz żeby zamontować dyskietkę z systemem MS-DOS, ext2 albo CD-ROM napisz:

   $ mount /mnt/a:
   $ mount /mnt/a
   $ mount /mnt/cdrom

/mnt/a, /mnt/a: i /mnt/cdrom są teraz dostępne dla każdego użytkownika. Zauważyłem, że aby móc pisać do /mnt/a od razu po przygotowaniu dyskietki trzeba napisać:

   # mount /mnt/a
   # chmod 777 /mnt/a
   # umount /mnt/a
   

Pamiętaj, że udostępniając w ten sposób użytkownikom dyskietki robisz wielką dziurę w bezpieczeństwie systemu.

4.2 Archiwizacja.

Teraz jak już umiesz się posługiwać dyskietką, kilka słów na temat archiwizacji danych. Jest kilka pakietów, które mogą ci pomóc, ale ten najpopularniejszy i najłatwiejszy do archiwizowania na wielu nośnikach to tar.

   # tar -M -cvf /dev/fd0H1440 /katalog_do_arch

Upewnij się, że dyskietka jest sformatowana i kilka innych jest gotowych. Aby odarchiwizować dane włóż dyskietkę do stacji i napisz:

   # tar -M -xpvf /dev/fd0H1440

5. Konfigurowanie systemu.

5.1 Pliki startowe systemu.

W DOS-ie są dwa pliki systemowe, które sa odpowiedzialne za konfigurację systemu podczas startu, ustawienie zmiennych i ewentualnie uruchomienie jakichś programów.

W Linux-ie jest o wiele więcej takich plików, z których kilku nie powinieneś ruszać dopóki nie będziesz wiedział dokładnie co robisz. Oto te najważniejsze:

   PLIKI                        UWAGI
   
   /etc/inittab                 nie dotykaj !
   /etc/rc.d/*                  nie dotykaj !

Jeśli wszystko czego chcesz, to ustawienie zmiennej PATH czy innej albo zmiana wyglądu komunikatu "login" albo automatyczne odpalenie jakiegoś programu podczas wlogowywania się, to zajrzyj do tych plików:

   PLIK                         UWAGI
   
   /etc/issue                   ustawia format komunikatu "login"
   /etc/motd                    ustawia komunikat wyświetlający się
                                zaraz po wlogowaniu się
   /etc/profile                 powłoka bash/sh - ustawia globalnie
                                (dla wszystkich użytkowników) różne zmienne
   /etc/csh.cshrc               to samo dla powłoki tcsh/csh - z tego
                                pliku nie może być nic wyświetlane na ekran
   /etc/csh.login               powłoka tcsh/csh - stąd możesz wyświetlać na ekran
   /home/twoj_dom_kat/.profile  powłoka bash/sh - robi to co chcesz
   /home/t_d_k/.cshrc           patrz wyżej - z tą różnicą, że
                                ustawienia dotyczą tylko ciebie
   /home/t_d_k/.login                    -----"------

Jeśli pliki .login albo .profile istnieją, to zostaną przeczytane po zalogowaniu się na końcu i zostaną wykonane zawarte w nich polecenia (Coś jakby AUTOEXEC.BAT)

Przykład - spójrz na ten plik .profile:


   # Jestem sobie komentarzem
   echo Środowisko:
   printenv | more   # ekwiwalent polecenia SET pod DOS-em
   alias d='ls -l'   # chyba rozumiesz, co to jest alias
   alias up='cd ..'
   echo "Przypominam ci, że zmienna PATH zawiera: "$PATH
   echo "Miłego dnia, "$LOGNAME

   PATH i LOGNAME - tak, zgadłeś - to są zmienne środowiskowe
   # To jest funkcja w powłoce
   ctgz() # Wyświetla zawartość archiwum .tar.gz
   {
     for file in $*
     do   
       gzip -dc ${file} | tar tf -
     done 
   }
   # koniec pliku .profile

5.2 Pliki startowe programów.

Pod Linux-em wirtualnie wszysto można ustawić tak, jak chcesz. Większość programów ma jeden lub więcej plików startowych, w których możesz poustawiać różności. Często jest to ˙nazwa_programurc w twoim katalogu domowym. Zauważ, że są one ukryte; pliki ukryte wyświetla się ls -a. Niektóre programy, jak tin, elm, netscape, xfm tworzą katalogi .nazwa i tam umieszczają swoje pliki startowe. Pierwsze, które będziesz chciał modyfikować to:

~/.joerc - joe to bardzo popularny edytor - polecam
~/.xinitrc - używany podczas uruchamiania Xwindows (jeśli masz mniej niż 8MB RAM-u to lepiej nie uruchamiaj) poleceniem startx
~/.fvwmrc - używany przez menedżera okienek fvwm. Przykład możesz znaleźć w /usr/lib/X11/fvwm/system.fvwmrc
~/.xfm - używany przez menedżera plików xfm pod Xwindows
~/.Xdefault - używany przez emulator terminala pod X - rxvt

Pamiętaj ! Dla tych wszystkich plików i innych, które spotkasz w przyszłości - PPS

6. Troszkę programowania.

6.1 Pisanie skryptów: takie .BAT-y tylko lepsze.

Jeśli używałeś plików .BAT, aby ułatwić sobie życie (Ja używałem i to dużo), to to samo można zrobić w Linux-ie używając aliasów - zobacz przykład wyżej. Ale jeśli twoje pliki .BAT były bardziej skomplikowane, to polubisz programowanie w powłoce - jest tak samo wydajne jak QBasic, jeśli nie bardziej. (nawet jeśli nie używałeś bardziej skomplikowanych plików .BAT, to i tak będziesz z czasem programował w powłoce. Chociażby dlatego, że wszelkie wersje instalacyjne programów pod Linux-a są napisane w skryptach.) Powłoka ma takie elementy jak: zmienne, instrukcje while, case, for, if...then...else i wiele innych, co może być alternatywą nawet dla dobrego języka programowania.

Aby napisać skrypt, wszystko co musisz zrobić, to napisać zwykły plik tekstowy zwierający polecenia, zapisać go i uczynić wykonywalnym. To ostatnie możesz zrobić poleceniem: chmod u+x <nazwa> Aby go wykonać wpisz jego nazwę - pamiętaj, że Linux nie widzi plików w katalogu bieżącym więc dodaj ./ na początku nazwy, albo dodaj katalog bieżący '.' do zmiennej PATH.

Słowo ostrzeżenia: Standardowy edytor systemowy 'vi' nie jest najszczęśliwszym edytorem - szczególnie jeśli ktoś jest przyzwyczajony do takich edytorów jak ne.exe czy te spod środowiska Pascal/C++. Jak już to radziłem wcześniej lepiej używać joe, który jest dostępny w każdej standardowej dystrybucji. Na wszelki wypadek powiem, że:
- aby coś wpisać w 'vi' trzeba najpierw nacisnąć 'i'
- aby wyjść bez zachowania zmian: 'ESC:q!'
- aby wyjść z zachowaniem zmian: 'ESC:x'

Pisanie skryptów pod Unix-ami, to tak obszerny temat, że można by napisać książkę na ten temat (w istocie są książki na ten temat :) ), więc nie będę się tutaj dalej zagłębiaj, tylko podam przykład, który mam nadzieję przyda się i z którego możesz wyciągnąć kilka podstawowych zasad.


   #!/bin/sh
   # Jestem sobie komentarzem
   # nie zmieniaj pierwszej linii !!! - musi tam być
   echo "To jest system: `uname -a`" # użyj wyjścia polecenia uname
   echo "Nazywam się $0" # zmienne wbudowane
   echo "Podałeś mi następujące $# parametry: "$*
   echo "Pierwszy parametr to: "$1
   echo -n "Jak się nazywasz? " ; read imie
   echo spójrz na róznicę: "Cześć $imie" # cytowanie z "
   echo spójrz na różnicę: 'Cześć $imie' # cytowanie z '
   DIRS=0 ; FILES=0
   for file in `ls .` ; do
     if [ -d ${file} ] ; then # jeśli plik jest katalogiem
       DIRS=`expr $DIRS + 1`  # DIRS = DIRS + 1
     elif [ -f ${file} ] ; then
       FILES=`expr $FILES + 1`
     fi
     case ${file} in
       *.gif|*jpg) echo "${file}: plik graficzny" ;;
       *.txt|*.tex) echo "${file}: plik tekstowy" ;;
       *.c|*.f|*.for) echo "${file}: plik żródłowy" ;;
       *) echo "${file}: inny plik" ;;
     esac
   done
   echo "Jest ${DIRS} katalogów i ${FILES} plików"
   ls | grep "ZxY--!!!WKW"
   if [ $? != 0 ] ; then # kod wyjścia ostatniego polecenia
     echo "ZxY--!!!WKW nie znaleziono"
   fi
   echo "wystarczy... jeśli chcesz wiedzieć więcej, to poczytaj"
   echo "podręcznik systemowy""

7. C dla ciebie.

Chyba nie spodziewałeś się znaleźć GW czy QBasic-a na Linux-ie ?? W Unix-ach językiem systemowym i podstawowym jest C, pokochaj albo rzuć. Wiele innych języków (FORTAN, Pascal, Lisp, Basic, Perl, awk ale nie Turbo Pascal) są także dostępne. Zakładając, że znasz już C, oto kilka wytycznych dla tych, którzy wychowali się na Turbo C++ czy innym z DOS-owych braci C. Kompilator C pod Linux-em to gcc i wcale nie ma żadnych gwizdków, dzwonków i bajerów, ktore mają DOS-owe wersje. Żadnego środowiska, zintegrowanej pomocy (CTRL+F1) czy zintegrowanego debuggera itp. Jest to goły kompilator wywoływany z wiersza poleceń; bardzo wydajny z resztą. Żeby skompilować swoje standardowe hello.c napisz:
gcc hello.c, a jeśli chcesz mieć nazwę pliku wynikowego taką samą jak plik źródłowy to napisz gcc -o hello hello.c. Pierwsze polecenie utworzy plik wykonywalny a.out. Żeby dołączyć jakąś bibliotekę dodaj opcję -l<arg>, np. gcc -o matma matma.c -lm
Opcja -l<arg> zmusza gcc, aby dołączyło bibliotekę /usr/lib/lib<arg>.a, tak więc -lm dołączy /usr/lib/libm.a.

To wszystko jest dobre dopóki piszesz małe programy. Ale kiedy twój program składa się z kilku plików źródłowych, musisz użyć narzędzia make. Załóżmy, że napisałeś jakiś interpreter: jego plik główny to parser.c i dołącza do siebie dwa pliki parser.h i xy.h. Chcesz używać procedur zawartych w parser.c, w programie calc.c, który znowu dołącza parser.h. Co za bałagan ! Co musisz zrobić aby skompilować calc.c ?

Musisz napisać tzw. Makefile, który informuje kompilator o zależnościach pomiędzy poszczególnymi programami. W naszym przypadku to będzie:



      # Oto plik Makefile używany do kompilacji calc.c
      # W miejsce <TAB> naciśnij tabulator
                        
      calc: calc.o parser.o
      <TAB>gcc -o calc calc.o parser.o -lm
      # calc zależy od dwóch plików objektowych: calc.o i parser.o
      
      calc.o: calc.c parser.h
      <TAB>gcc -c calc.c
      # calc.o zależy od dwóch plików żródłowych: calc.c i parser.h
   
      parser.o:  parser.c parser.h xy.h
      <TAB>gcc -c parser.c
      # parser.o zależy od trzech plików źródłowych
                          
      # koniec pliku Makefile

Zapisz ten plik jako Makefile i napisz make aby skompilować calc.c; możesz także zapisać go jako calc.mak i wtedy napisać make -f calc.mak. No i oczywiście PPS :) na temat make.

Wcześniej powiedziałem, że nie ma pomocy do C. To nie całkiem prawda... niektóre funkcje są opisane w podręczniku systemowym.

Jest bardzo dużo bibliotek do C; wśród pierwszych, które będziesz chciał użyć mogą znaleźć się:

Dwie ostatnie można znaleźć pod adresami: bloch.phys.uwm.edu/pub/xforms
www.volftp.vol.it/IT/IT/ITALIANI/MORELLO/index.htm Te biblioteki ułatwiają bardzo programowanie pod XWindows. Jeśli nie możesz przeżyć bez IDE a'la Borland, to zdobądź pakiet xwpe z ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/apps/editors. Powinieneś go polubić.

8. Pozostały 1%.

8.1 "Odrootowić się".

Złym pomysłem jest logowanie się jako root, żeby robić zwykłe codzienne rzeczy. Używanie tego konta jest dość niebezpieczne i powinno być przeznaczone tylko do administracji. Aby utworzyć konto dla siebie wykonaj polecenie: adduser podając następnie informacje takie jak swój identyfikator, hasło, numer grupy itp. (wciśnij <<ENTER>> na pytania, których nie rozumiesz.) Od tłumacza: Może się tak zdarzyć, że pojawi się komunikat 'password locked' lub coś podobnego. Zajrzyj wtedy do katalogu /etc i zobacz czy jest tam plik .passwd.lock lub o podobnej nazwie i skasuj go.

8.2 Tworzenie wirtualnej pamięci.

Teoretycznie Linux może być uruchomiony już na 2MB RAM-u. Od tłumacza: Ale ja bym nie radził uruchamiania go przy takiej ilości pamięci, z resztą obecnie chyba żadna dystrybucja nie da się zainstalować jeśli masz mniej niż 4MB RAM-u, a niektóre wymagają nawet 8MB. Ale im więcej pamięci masz tym więcej możesz zrobić. XWindows jak już wspomniałem nie będą działać w miarę sensowanie jeśli masz mniej niż 8MB RAM-u. Aby dodać sobie jeszcze 8MB wirtulanej pamięci wpisz jako root w wierszu poleceń:


     # dd if=/dev/zero of=/swapfile bs=1024 count=8192
     # mkswap /swapfile 8192
     # sync
     # swapon /swapfile

Dodaj ostatnią linię do pliku /etc/rc.d/rc.local, aby udostępnić tę pamięć za każdym razem kiedy będziesz startował Linux-a.

8.3 Używanie tar-a i gzip-a.

W Unix-ach bardzo popularnymi programami do archiwizacji i kompresji są tar i gzip.

Aby stworzyć archiwum wpisz w wierszu poleceń:
tar cvf <nazwa_archiwum.tar> <pliki_do_zarchiwizowania>

Aby wydobyć pliki z archiwum wpisz:
tar xpvf <nazwa_archiwum.tar> <pliki>

Aby wyświetlić zawartość archiwum napisz:
tar tf <nazwa_archiwum> | less

Opcja 'v' powoduje wyświetlenie plików archiwizowanych albo wyciąganych z archiwum, jeśli nie chcesz tego, możesz ja pominąć.

Aby skompresować pliki możesz użyć compress albo gzip. Ten pierwszy jest już przestarzały i nie powinien być używany.

compress <plik> albo gzip <plik> skompresuje plik. uncompress <plik>.Z albo gzip -d <plik>.gz odkompresuje plik.

Jeśli ściągasz z sieci jakiś pakiet w 99% przypadków jest to skompresowane archiwum (xxx.tar.gz lub xxx.tgz). Żeby rozpakować i odarchiwizować za jednym zamachem wpisz:
tar xzf xxx.tar.gz Opcji 'z' możesz także używać przy archiwizowaniu i przeglądaniu archiuwm skompresowanego. Przy okazji warto powiedzieć, że pakiety te są już tak przygotowane, że możesz je rozpakować w katalogu głównym - / i wszystkie programy znajdą się na swoim miejscu. Zakładając oczywiście, że nie pogrzebałeś za bardzo na swoim systemie.

Programy arj, zip, unzip, rar, unrar także są dostępne pod Linux-em.

8.4 Instalacja aplikacji.

Mieści się tutaj już to co wspomniałem o plikach xxx.tar.gz. Dystrybucja Slackware ma swój program, który pomaga przy instalacji pakietów - pkgtool. Dystrybucja Red Hat ma rpm - trochę mniej przyjazny. Dystrybucja Debian pewnie też coś takiego ma, ale ponieważ nie miałem z nią kontaktu, więc nie wiem.

Są też aplikacje, które mają swoje własne systemy instalacji. Jak rozpakujesz jakiś pakiet przeczytaj zawsze pliki README albo INSTALLATION, a znajdziesz tam informacje na temat jak zainstalować dany pakiet. Duża część pakietów jest rozprowadzana jako źródła i musisz je najpierw skompilować. Najlepiej rozpakować je w katalogu /usr/src przeznaczonym na źródła i tam poczytać jak dany pakiet skompilować i zainstalować. Z reguły wszystko co musisz zrobić to rozpakować pakiet i napisać make albo make install. Oczywiście będziesz potrzebował kompilatora gcc. Pamiętaj, że instalacja pakietów to zadanie dla root-a.

8.5 Triki, bez których nie możesz się obejść.

Dopełnianie nazw poleceń i nazw plików/katalogów. Jeśli wpiszesz nie całą nazwę polecenia i naciśniesz <TAB> to powłoka dopełni za ciebie nazwę albo wyświetli wszystkie zaczynające się na podany ciąg. Np. zamiast pisać gcc dddddddllllllllluuuuga.nazwa.pliku - na dodatek nie pomylić się w ilości d l oraz u napisz gcc ddd<TAB>.

Oglądanie zawartości ekranu, która się przesunęła do góry: Możesz to zrobić wciskając <SHIFT+PGUP> - ile możesz obejrzeć zależy od tego ile masz pamięci na karcie graficznej. Jeśli podasz polecenie script <plik> to wszystko co pojawi się na ekranie znajdzie się także w pliku <plik> dopóki nie podasz polecenia exit.

Reset ekranu: jeśli zdarzy ci się wyświetlić plik binarny to może się to skończyć tym, że zamiast znaku zachęty będziesz miał jakieś krzaki. Napisz wtedy na ślepo, ale dokładnie, reset albo echo <CTRL+V> <ESC> c <ENTER> albo echo <CTRL+V> <CTRL+O> <ENTER>

Komunikaty od jądra: spójrz do pliku /var/adm/messages albo /var/log/messages jako root, aby poczytać komunikaty od jądra włączając to co pojawiło się podczas startu systemu.

8.6 Pożyteczne programy.

Po pierwsze - gdzie je znaleźć. Ponieważ wszyscy wiecie jak się poruszać po sieci i jak używać archie-go i ftp podam wam tylko najważniejsze adresy dla Linux-a. Są to:

Pierwsze dwa mają swoje kopie w Polsce pod adresem ftp.icm.edu.pl. Zalecam ich używać - o wiele szybszy transfer. I tak:

Programy:

8.7 Pospolite rozszerzenia i programy z nimi związane.

W przyszłości na pewno zetkniesz się z wieloma rozszerzeniami. Oto lista tych najpopularniejszych:

9. To tyle.

Gratulacje ! Łyknąłeś trochę Unix-a i jesteś gotów do pracy i eksperymentowania. Pamiętaj, że twoja wiedza na temat systemu jest bardzo mała i jesteś zobowiązany dużo ćwiczyć, żeby dobrze się posługiwać Linux-em. Ale jeśli wszystko co miałeś zrobić to pościągać aplikacje i pracować z nimi, to założę się, że to co napisałem tutaj to wystarczająco. Na dzisiaj nie wiem wiele więcej, a jakoś udaje mi się pracować z Linux-em codziennie !

Jestem pewien, że Linux ci się spodoba i dalej będziesz się go uczył i poznawał. Założę się też, że już nigdy nie wrócisz do DOS-a ! Mam nadzieję, że wyraziłem się dostatecznie jasno i zrozumiale i zrobiłem dobry uczynek dla moich trzech czy czterech czytelników.

9.1 Prawa autorskie.

O ile nie stwierdza się inaczej, dokumenty HOWTO są chronione prawami autorskimi ich autorów. Mogą one być rozprowadzane w całości lub w części, w jakiejkolwiek postaci fizycznej czy elektronicznej tak długo, dopóki znajduje się w nich ta wzmianka. Dystrybucja komercyjna jest dozwolona, a nawet zachęca się do niej; chociaż autor chciałby być poinformowany o takowej.

Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem.

Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO.

Jeśli masz pytania skontaktuj się z Gregiem Hankisem, koordynatorem programu Linux HOWTO po adresem gregh@sunsite.unc.edu.

9.2 Disclaimer.

"Szybkie przejście od DOS-a do Linux-a" zostało napisane przez Guido Gonzato, Guido@ibogfs.cineca.it. Wielkie dzięki dla Matta Welsha, autora podręcznika "Linux Installation and Getting Started", dla Ian Jackson, autora "Linux frequently asked questions with answers", dla Giuseppe Zanetti, autora "Linux - Il sistema operativo FREE SOFTWARE per personal computer 386/486", dla wszystkich, którzy przysłali mi pocztę z sugestiami no i szczególne podziękowania dla Linusa Torvaldsa i GNU, którzy dali nam Linuxa !!!

Dokument ten dostarczany jest "taki jaki jest". Włożyłem wiele wysiłku, aby napisać go tak dokładnie jak tylko potrafiłem, ale wykorzystujesz informacje tu zawarte na własne ryzyko. Nie jestem odpowiedzialny w żadnym wypadku za jakiekolwiek zniszczenia wynikłe z winy korzystania z tego dokumentu. Tłumacz także nie jest odpowiedzialny za żadne zniszczenia.

Wszelkie odzewy, prośby, sugestie, krytyki itd. są mile widziane.

Ciesz się z życia ! (i z Linux-a)

Guido =8-)

9.3 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl/HOWTO/

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to:

doc-linux-pl-2002.06.14.orig/html/Firewall-HOWTO.pl.html0100644000175000017500000015701207477234140021314 0ustar covencoven Firewalle i proxy serwery

Firewalle i proxy serwery

Mark Grennan, markg@netplus.net
v0.4, 8 listopad 1996
Wersja polska: Ziemek Borowski ziembor@ziembor.waw.pl v0.1 8 lipiec 1997


Dokument ten powstał w celu uczenia podstaw systemów firewalli oraz dostarczenia niektórych szczegółów w zakresie ustawania (konfigurowania) filtrujących i posredniczacych firwalli na Linuxie. Oryginalna wersja tego dokumentu znajduje się pod adresem: http://okcforum.org/~markg/Firewall-HOWTO.html zaś polskie tłumaczenie: http://www.ziembor.waw.pl/~ziembor/JTZ/Firewall-HOWTO.pl.html Niniejsza wersja opisuje stan z 1997 roku. Jeśli nadal używasz jąder z serii 2.0 (nie 2.2 lub 2.4) to jest to dokument dla Ciebie. Następna wersja tego dokumentu opisuje ew. poza ipfwadm także ipchains (dostępne z jądrami 2.2) -- zawiera tyle błędów, że należałoby je napisać od nowa. Jeśli szukasz informacji na temat budowania firewalli pod linuksem odsyłam raczej do tłumaczeń dokumentacji IPtables wykonanych przez Łukasza Bromirskiego http://mr0vka.eu.org/.

1. Wprowadzenie

Dokument ten Firewall-HOWTO został napisany przez Davida Ruddera mailto:drig@execpc.com. Chciałbym Mu podziękować za zezwolenie na uaktualnienie jego pracy.

Firewalle zyskały ostatnio wielką sławę jako defintywne rozwiązanie w dziedzinie bezpieczeństwa Internetu. Większość tej sławy jest zasłużona, jednak część wynika z nieporozumienia. To JTZ ma na celu przegląd: czym są firewalle, jak je konfigurować, czym są serwery proxy i jak je konfigurować oraz aplikacje (zastosowania) tej technologii poza zakresem bezpieczeństwa.

1.1 Informacja zwrotna, uwagi.

Wszelkie uwagi będą mile widziane. Proszę: DONOŚCIE O WSZELKICH NIEŚCISŁOŚCIACH W TYM DOKUMENCIE . Jestem człowiekiem, i jestem omylny. Jeśli znajdziesz jakieś popraw je (w moim najwyższym interesie). Będę próbował odpowiedzieć na wszystkie listy, ale jestem zajętym człowiekiem, tak więc nie obrażaj się proszę jeśli nie odpowiem.

Mój adres: markg@netplus.net

1.2 Deklaracje

NIE ODPOWIADAM ZA JAKIEKOLWIEK ZNISZCZENIA WYNIKAJĄCE ZE STOSOWANIA TEGO DOKUMENTU Dokument ten jest pomyślany jako wprowadzenie do technologii firewalli i serwerów proxy. Nie jestem, i nie zamierzam sobie rościć pretensji do bycia ekspertem w sprawach bezpieczeństwa. Jestem po prostu człowiekiem który przeczytał co nieco, i pasjonuje się komputerami bardziej niż inni. Proszę, pisząc ten tekst chcę pomóc ludziom zaznajomić się z tym tematem, i nie jestem gotów dawać głowy za dokładność podawanych przeze mnie danych.

1.3 Copyright

Jeśli nie jest powiedziane inaczej, prawa autorskie dokumenty z serii Linux Jak To Zrobić należą do każdego z autorów. Mogą być powielane i rozpowszechniane w w całości w częściach, w formie ,,papierowej'' i elektronicznej dopóki wszędzie (w każdej z części) zachowana jest informacja o prawach i autorstwie. Komercyjna redystrybucja jest dozwolona i wskazana; jednakże, autor powinien być poinformowany o tym fakcie.

Wszystkie tłumaczenia, poprawki językowe, i prace włączające muszą zawierać niniejszą notę o prawach autorskich.

Jeśli masz jakieś zapytania, proszę o kontakt: Mark Grennan mailto:markg@netplus.net.

1.4 Moje pobudki do tej pracy.

Pomimo wielu dyskusji w grupach comp.os.linux.* (w ciągu ostatniego roku) na temat firewalli wydaje mi się trudnym znalezienie informacji których potrzebowałem do ustawienia i skonfigurowania firewalla. Oryginalna wersja tego HOWto była pomocna, ale nieaktualna. Mam nadzieję, że ta poprawiona wersja ,,Firewall HOWto'' autorstwa Davida Ruddera dostarczy wszystkim informacji jakiej potrzebują do stworzenia działających ,,ścian ognia'' w ciągu godzin, nie tygodni.

Poza tym uważam że powinienem zwrócić mój dług społeczności Linuxowej.

1.5 TODO (do zrobienia)

1.6 Zobacz także:

Węzeł pajęczyny należący do Trusted Information System's (TIS) posiada wspaniała kolekcję dokumentacji dotyczącej firewalli i pokrewnych tematów.

Poza tym pracuję na projektem dotyczącym bezpieczeństwa: ,,Bezpieczny Linux''. W miejscu tym zgromadziłem wszystkie informacje, dokumentacje i programy potrzebne do stworzenia bezpiecznego Linuxa. Napisz do mnie jeśli chcesz otrzymać więcej informacji.

2. Understanding Firewalls

Firewall - ,,ściana ogniowa'' jest terminem wziętym z konstrukcji samochodu. W samochodach firewalle fizycznynie oddzielają silnik od pasażerów. To znaczy, że chronią one pasażerów w wypadku gdy silnik zapali się cały czas dostarczając kontroli nad nim.

Komputerowe firewalle są urządzeniami, które chronią sieci prywatne od części publicznej (jakiej jak Internet).

Komputer będący ,,ścianą ognia'' od tej chwili nazywany ,,firewallem'' może (musi) być obecny tak w sieci chronionej jak i w Internecie. Chroniona sieć nie może być osiągalna z Internetu, podobnie jak Internet nie może być osiągalny z chronionej sieci.

Dla niektórych dosięgnięcie Internetu z izolowanej sieci jest możliwe jedynie poprzez zalogowanie się na firewallu (telnetem) i penetracja Sieci stamtąd.

Najprostszą formą firewalla jest podwójnie zadomowiony system (tj. system z podwójnym połączeniem sieciowym). Jeśli możesz ZAUFAĆ WSZYSTKIM swoim użytkownikom, możesz prosto skonfigurować Linuxa (wyłączając przy kompilacji jądra forwarding / gatewaying) Mogą oni logować się na tym systemie i używać aplikacji sieciowych takich jak telnet, FTP, czytać pocztę i innych jakich dostarczasz.

Z takim ustawieniem, tylko jeden komputer z twojej sieci widzi resztę świata poza firewallem. Pozostałe systemy w twojej chronionej sieci nie potrzebują nawet ustawienia domyślnego routingu.

Aby powyższy firewall działał MUSISZ UFAĆ WSZYSTKIM SWOIM UŻYTKOWNIKOM Nie jest to zalecane rozwiązanie.

2.1 Wady firewalli

Problemem filtrujących firewalli jest to, że ograniczają dostęp do twojej sieci z Internetu. Tylko usługi na filtrowanie których zezwoliłeś są dostępne. Na serwerach proxych użytkownicy mogą autoryzować się na firewallu i dopiero wtedy mają (z systemu wewnątrz sieci prywatnej) dostęp do Internetu.

Poza tym, nowe typy klientów sieciowych i serwerów przybywają prawie codziennie. Musisz wtedy wynaleźć nowy sposób zezwolenia na kontrolowany ich dostęp do twojej sieci, zanim będą użyte.

2.2 Typy firewalli

Istnieją dwa typy firewalli:

  1. firewalle filtrujące IP - blokują cały ruch, ale przepuszczają dopuszczony.
  2. serwery proxy - serwery połączeniowe - wykonują połączenie sieciowe za ciebie.

Filtujące firwalle

Firewalle filtrujące działają na poziomie pakietów IP. Są zaprojektowane do kontroli przepływu bazując na adresie źródłowym, docelowym, porcie i typie pakietu (zawartych w każdym z pakietów).

Ten typ firewalli jest bardzo bezpieczny, ale traci wiele typów zapisu. Może zablokować ludziom z dostęp z sieci prywatnej, ale nie powie, kto dostał się do twojego systemu publicznego, ani kto wyszedł z sieci lokalnej do Internetu.

Filtrujące firewalle są bezwzględnymi filtrami. Nawet jeśli chcesz dać komuś z zewnątrz dostęp do twoich serwerów ,,prywatnych'' nie jesteś w stanie bez dania tego dostępu wszystkim (tłum. jak rozumiem spod tego adresu)

Linux posiada opcję filtrowania pakietów w jądrach powyżej 1.3.x.

Serwery proxy

Serwery proxy pozwalają na niebezpośredni dostęp do Internetu, przez firewall. Najlepszym przykładem jak to pracuje jest osoba telnetująca się do systemu i stamtąd wykonująca następne połączenie. Tylko że w wypadku serwerów proxy proces ten następuje automatycznie. Gdy łączysz się z proxy serwerem za pomocą oprogramowania klienckiego startuje on swojego klienta i dostarcza ci danych których zarządzałeś.

Ponieważ serwery proxy podwajają każde połączenie, możliwe jest zapisywanie każdego z nich.

Wspaniałą rzeczą w serwerach proxy jest to, że są w pełni bezpieczne, gdy są prawidłowo ustawione. Nie pozwalają nikomu przejść. Nie dokonują bezpośredniego routingu.

3. Ustawianie firewalla

3.1 Wymagania sprzętowe.

Naszym przykładem nich będzie komputer i486-DX66 z 16 Mb RAMu oraz 500Mb partycją Linuxową. System ten posiada dwie karty sieciowe, jedną połączoną z naszą siecią prywatną, a drugą do sieci lokalnej nazywanej strefą zdemilitaryzowaną (DMZ). DMZ posiada router połączony do Internetu.

Jest to całkiem przyjemny standard dla biznesu. Powinieneś użyć jednej karty sieciowej oraz modemu z PPP do intenetu.

Firewall powinien posiadać dwa adresy IP.

Znam wielu ludzi posiadających małe LANy w domu z dwoma lub trzema komputerami. Możesz rozpatrzyć następujący model: włożyć wszystkie modemy do komputera z Linuxem (np. starą i386) i połączyć wszystkie do Internetu łączem komutowanym. Z takim ustawieniem, gdy tylko jedna osoba ciągnie dane może użyć wszystkich modemów (a więc i działać 2-3 krotnie szybciej ; -).

4. Oprogramowanie dla firewalli

4.1 Dostępne pakiety

Jeśli wszystkim czego potrzebujesz jest filtrujący firewall potrzebujesz jedynie Linuxa i podstawowych pakietów sieciowych. Jednym z pakietów który może nie zawierać się w twojej dystrybucji jest IP Firewall Administration tool (przyp. tłum. w RedHacie 4.0 i Debianie 1.2.* jest) (IPFWADM) z http://www.xos.nl/linux/ipfwadm/

Jeśli chcesz postawić serwer proxy potrzebujesz jednego z niżej wymienionych pakietów:

  1. SOCKS
  2. TIS Firewall Toolkit (FWTK)

4.2 TIS Firewall Toolkit kontra SOCKS

Trusted Information System ( http://www.tis.com) jest fragmentem kolekcji programów zaprojektowanych dla firewalli. Program ten udostępnia podobne rzeczy jak SOCK, ale jest zbudowany na innych zasadach. Tam gdzie Socks posiada jeden program przeprowadzający wszystkie transakcje s internetem, TIS dostarcza jednego programu dla każdego z narzędzi których chcesz użyć w firrewallu.

Dla pokazania kontrastu użyjmy przykładów WWW i dostępu za pomocą telnetu. Używając SOCKS, ustawiasz jeden plik konfiguracyjny i jednego demona. Używając tego pliku tak telnet jak i WWW są dostępne, podobnie jak inne usługi których nie zakazałeś.

W pakiecie TIS ustawiasz jednego demona dla (osobno) WWW i Telnetu z osobnymi plikami konfiguracyjnymi. Po zrobieniu tego inne usługi internetowe są zakazane dopóki ich explicite nie ustawisz. Jeśli demon dla specyficznych usług jest niedostępny (tak jak talk), istnieją ,,plug-in-y'' dla demona, ale nie tak elastyczne i łatwe w konfiguracji jak inne narzędzia.

Różnica wygląda na niewielką, jest jednak istotna. SOCKS pozwala Ci być spokojnym. Przy kiepsko ustawionym SOCKS serwerze ktoś z wewnątrz może uzyskać większy dostęp do Internetu niż było początkowo planowane. Z pakietem TIS ludzie wewnątrz sieci mają jedynie taki dostęp na jaki zezwolił administrator.

SOCKS są łatwiejszy do konfiguracji, łatwiejszy do kompilacji i pozwala na większą elastyczność. TIS jest bardziej bezpieczny, jesli chcesz ustawiać użytkowników wewnątrz chronionej sieci. Oba dostarczają całkowitego bezpieczeństwa z zewnątrz.

Opiszę proces instalacji obydwu.

5. Przygotowanie Linuxa

5.1 Kompilacja jądra.

Zacznij od świeżej instalacji twojej dystrybucji Linuxowej (ja użyłem RedHata 3.0.3 (Picasso) i poniższe przykłady bazują na tej dystrybucji). Im mniej oprogramowania zainstalujesz tym mniej będzie w nim dziur, tylnych wejść i / lub błędów wprowadzających do twojego systemu problem bezpieczeństwa, więc zainstaluj jedynie minimalny zestaw aplikacji.

Użyj stabilnego jądra. Ja użyłem 2.0.14. Oto jest dokumentacja podstawowych ustawień:

Będziesz potrzebował rekompilować jądro sytemu z odpowiednimi opcjami. (patrz Kernel-HOWto, Ethernet-HOWto oraz NET-2 HOWto jeśli nie zrobiłeś tego wcześniej). Oto są sieciowe ustawienia które poznałem wykonując komendę make config

  1. Under General setup
    1. Turn Networking Support ON
  2. Under Networking Options
    1. Turn Network firewalls ON
    2. Turn TCP/IP Networking ON
    3. Turn IP forwarding/gatewaying OFF (UNLESS you wish to use IP filtering)
    4. Turn IP Firewalling ON
    5. Turn IP firewall packet loggin ON (this is not required but it is a good idea)
    6. Turn IP: masquerading OFF (I am not covering this subject here.)
    7. Turn IP: accounting ON
    8. Turn IP: tunneling OFF
    9. Turn IP: aliasing OFF
    10. Turn IP: PC/TCP compatibility mode OFF
    11. Turn IP: Reverse ARP OFF
    12. Turn Drop source routed frames ON
  3. Under Network device support
    1. Turn Network device support ON
    2. Turn Dummy net driver support ON
    3. Turn Ethernet (10 or 100Mbit) ON
    4. Select your network card

Teraz możesz dokonać rekompilacji i reinstalacji jądra oraz zrestartować system. Twoja karta/y sieciowa/e powinny pojawić się w trakcie procedury startowej. Jesli tak się nie dzieje sprawdź w innych JTZ, i próbuj dopóki nie będą działać.

5.2 Ustawienie dwóch kart sieciowych

Jeśli masz dwie kary sieciowe w swoim komputerze w większości przypadków potrzebujesz dodać twierdzenie w pliku /etc/lilo.conf opisujące ich IRQ i adresy. W moim wypadku wygląda to tak:

  append= " ether=12,0x300,eth0 ether=15,0x340,eth1 " 

5.3 Ustawienie adresów sieciowych

Jest to naprawdę interesująca część. Teraz jest czas na podjęcie kilku decyzji. Dopóki nie chcemy dać dostępu komputerom z Internetu do żadnej z części naszej sieci lokalnej nie musimy używać prawdziwych adresów. Istnieją numery wydzielone z internetowych do ustawienia odrębnych sieci prywatnych (przyp. tłumacza: klasa A 10.0.0.0-10.255.255.255, klasy B, i klasy C: 192.168.0.0.0-192.166.255.255) Ponieważ każdy potrzebuje więcej adresów i ponieważ adres nie mogą się powtarzać w Internecie jest to dobry wybór.

Wybraliśmy jedną z tych klas: 192.168.2.xxx, i użyjemy jej w naszym przykładzie.

Twój serwer proxy będzie członkiem obu sieci i będzie przekazywał dane do i z sieci prywatnej.

      199.1.2.10  __________  192.168.2.1  192.168.2.2
   _ __ _    \ |     | /      ____/__________
   | \/ \/ |    \| Firewall |/      | Stacja    |
  / Internet \--------|     |------------| Robocza    |
  \_/\_/\_/\_/    |__________|      |_______________|

Jeśli używasz filtrującego firewalla możesz używać tych numerów stosując IP masquearading Firewall będzie przesyłał pakiety i tłumaczył numery IP na ,,PRAWDZIWE'' adresy w Internecie.

Musisz przydzielić prawdziwy adres IP karcie sieciowej widocznej z Internetu (na zewnątrz). I przydzielić adres 192.168.2.1 karcie Ethernetowej wewnątrz. To będzie adres IP twojego gatewaya/proxy. Możesz przydzielić pozostałym maszynom ze swojej sieci numery z zakresu 192.168.2.2-192.168.2.254.

Odkąd używam RedHat Linux

do ustawienia sieci przy starcie dodaję plik ifcfg-eth1 w katalogu /etc/sysconfig/network-scripts/. Jest on czytany w trakcie startu systemu i ustawiania sieci i tablic routingu.

Mój ifcfg-eth1 wygląda następująco:

  #!/bin/sh
  #>>>Device type: ethernet
  #>>>Variable declarations:
  DEVICE=eth1
  IPADDR=192.168.2.1
  NETMASK=255.255.255.0
  NETWORK=192.168.2.0
  BROADCAST=192.168.2.255
  GATEWAY=199.1.2.10
  ONBOOT=yes
  #>>>End variable declarations
Możesz także użyć tego skryptu do automatycznego połączenia modemowego do twojego IPS. Spójrz na skrypt ipup-pop

Jeśli używasz modemu do łączenia się z siecią twój zewnętrzny adres będzie przydzielony w trakcie połączenia.

5.4 Testowanie twojej sieci

Zacznij od sprawdzenia ifconfig i trasowania (routingu) jeśli masz dwie karty wynik polecenia ifconfig powinien wyglądać następująco:

 #ifconfig
 lo    Link encap:Local Loopback
      inet addr:127.0.0.0 Bcast:127.255.255.255 Mask:255.0.0.0
      UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
      RX packets:1620 errors:0 dropped:0 overruns:0
      TX packets:1620 errors:0 dropped:0 overruns:0

 eth0   Link encap:10Mbps Ethernet HWaddr 00:00:09:85:AC:55
      inet addr:199.1.2.10 Bcast:199.1.2.255 Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0
      TX packets:0 errors:0 dropped:0 overruns:0
      Interrupt:12 Base address:0x310

 eth1   Link encap:10Mbps Ethernet HWaddr 00:00:09:80:1E:D7
      inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0
      TX packets:0 errors:0 dropped:0 overruns:0
      Interrupt:15 Base address:0x350

a twoja tablica trasowania mniej więcej tak:

 #route -n
 Kernel routing table
 Destination   Gateway     Genmask     Flags MSS  Window Use Iface
 199.1.2.0    *        255.255.255.0  U   1500  0    15 eth0
 192.168.2.0   *        255.255.255.0  U   1500  0    0 eth1
 127.0.0.0    *        255.0.0.0    U   3584  0    2 lo
 default     199.1.2.10   *        UG  1500  0    72 eth0

Uwaga: 199.1.2.0 jest numerem interface po internetowej stronie firewalla zaś 192.168.2.0 jest wewnątrz.

Teraz spróbuj pingnąć się do Internetu z firewalla. Ja zwykłem używać nic.dnn.mil jako punktu testowego (w Polsce doradzałbym bilbo.nask.org.pl 148.81.16.51). Jest to wciąż dobry test, ale nie dostarcza tylu informacji ile by się chciało.

Jeśli nie rusza za pierwszym razem spróbuj zapukać do innych komputerów poza swoją siecią lokalną. Jeśli nie działa to znaczy że twoje połączenie PPP jest źle ustawione. Przeczytaj jeszcze raz Net-2 HOWto i spróbuj jeszcze raz.

Następnie pingnij się z firewalla do komputera wewnątrz chronionej sieci. Każdy komputer powinien móc sondować inny. Jeśli nie spójrz jeszcze raz do Net-2 HOWto i popraw ustawienia w swojej sieci.

Teraz spróbuj pingnąć zewnętrzny adres z wewnętrznej części chronionej sieci.

(Notka: to nie jest żaden z numerów IP zaczynających się od: 192.168.2.xxx.) Jeśli jest to możliwe, to znaczy że nie wyłączyłeś przesyłania IP w konfiguracji jądra. Upewnij się, że tego chcesz. Jeśli zostawisz tę opcję włączoną, musisz zapoznać się z częścią tego dokumentu opisującą filtrowanie pakietów IP.

Teraz spróbuj sondować internet zza swojego firewalla. Użyj tego samego adresu co poprzednio (np. bilbo.nask.org.pl). Znowu, jeśli wyłączyłeś IP Forwarding nie powinno działać. Albo powinno, jeśli włączyłeś.

Jeśli masz ustawiony IP Forwarding i używasz ,,PRAWDZIWYCH'' (nie 192.168.2.*) adresów IP i nie możesz wyjść na zewnątrz, ale możesz się dostać do internetowej strony swego firewalla sprawdź czy następny router przepuszcza pakiety z twojej sieci lokalnej (twój dostawca usług internetowych powinien coś o tym wiedzieć).

Jeśli przydzieliłeś swojej sieci adresy 192.168.2.* pakiety i tak nie będą filtrowane. Jeśli przechodzą mimo wszystko i masz IP masquerading włączone ten test też został zdany.

Masz teraz podstawową konfigurację systemu.

5.5 Zabezpieczanie firewalla.

Firewall nie spełnia swojego zadania jeśli zostawia otwarte okno dla ataków przez nieużywane usługi. ,,Źli chłopcy'' mogą zdobyć twierdzę i zmodyfikować ją dla swoich potrzeb.

Zacznij wyłączać niepotrzebne usługi. Spójrz na /etc/inetd.conf. Plik ten kontroluje coś co jest nazywane ,,super serwerem''. Kontroluje uruchamianie usług na żądanie.

Kompletnie wyłącz: netstat, systat, tftp, bootp oraz finger. Aby wyłączyć usługę wystarczy postawić znak # (tzw. hash) jako pierwszy znak w linii. kiedy to zrobisz wyślij sygnał HUP do procesu inetd pisząc: " kill -HUP < pid > " , gdzie < pid > jest numerem procesu inetd. Spowoduje to powtórne przeczytanie przez inetd pliku konfiguracyjnego

(inetd.conf) i restart.

Sprawdź teraz czy jesteś w stanie dostać się do portu obsługującego netstat telnet localhost 15 Jeśli otrzymasz wynik z netstata nie zrestartowałeś inetd prawidłowo.

6. Konfigurowanie filtrowania IP (IPFWADM)

By zacząć musisz włączyć przesyłanie pakietów IP w swoim jądrze i twój system powinien odsyłać wszystko co mu się prześle. Twoja tablica trasowania powinna być ustawiona i powinieneś miś dostęp tak wewnątrz jak do zewnętrznej Sieci.

Ale budujemy firwalla tak więc trzeba ograniczyć wszystkim dostęp do niego.

W moim systemie stworzyłem parę skryptów ustawiających zasady odsyłania pakietów i polityki dostępu. Wywołuję je z w skryptach z /etc/rc.d w czasie konfiguracji.

Domyślnie IP Forwarding w jądrze systemu odsyła wszystko. Dlatego twoje skrypty startowe firewalla powinny rozpoczynać swoja pracę od zakazania dostępu dla wszystkich i zerwania wszelkich połączeń dozwolonych w poprzednim uruchomieniu ipfw. Skrypt ten wykorzystuje pewien trick.

 #
# Ustawianie rozliczania i odsyłania pakietów IP
 #
 #  Forwarding
 #
 # Domyślnie  wszystkie usługi są zakazane.
 ipfwadm -F -p deny
 # Zerwij wszystkie połączenia
 ipfwadm -F -f
 ipfwadm -I -f
 ipfwadm -O -f
Teraz mamy doskonały firewall. Nic nie przechodzi. Bez wątpliwości pewna cześć usług powinna być przesyłana (i tego dotyczy następny przykład).

 # przesyłanie poczty do twojego MTA
 ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10
 25

 # przesyłanie połączeń pocztowych do innych MTA
 ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0
 1024:65535

 # przesyłanie WWW do twojego serwera
 /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D
 196.1.2.11 80

 # przesyłanie WWW do serwerów zewnętrznych
 /sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0
 1024:65535

 # przesyłanie ruchu DNS
 /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D
 196.1.2.0/24

Możesz byc zaintersowany w rozliczaniu ruchu przechodzącego przez twój firewall. Poniższy skrypt liczy każdy z pakietów. Powinieneś dodać linię albo liczyć ruch tylko dla jednego systemu.

 # Zerwanie wszystkich połączeń
 ipfwadm -A -f
 # Rozliczanie
 /sbin/ipfwadm -A -f
 /sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0
 /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24
 /sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0
 /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24
Jeśli potrzebowałeś firewalla filtrującego możesz skończyć lekturę. Miłego konfigurowania. ; -)

7. Instalowania serwera proxy - TIS

7.1 Pobranie oprogramowania

TIS FWTK jest dostępny pod adresem: ftp://ftp.tis.com/.

Nie popełnij tego błędu co ja. Kiedy dostaniesz się na serwer TIS PRZECZYTAJ ,,README'' Pakiet TIS fwtk jest w ukrytym katalogu na ich serwerze.

TIS wymaga być wysłał email do fwtk-request@tis.com zawierającego tylko słowo SEND w ,,ciele'' wiadomości aby poznać nazwę tego ukrytego katalogu (nie jest potrzebny temat dla tego listu). Ich system wyśle Ci wiadomość z nazwą katalogu w ciągu 12 godzin.

Piszę o wersji 2.0 (beta) TIS FWTK. Wersja ta kompiluje się dobrze (z pewnymi wyjątkami) i wygląda że wszystko pracuje (u mnie). Gdy zostanie opublikowana wersja pełna uaktualnię to HowTo.

Aby zainstalować FWTK stwórz katalog fwtk-2.0 w /usr/src. Przenieś tak kopię (fwtk-2.0.tar.gz) odpakuj ją (tar zxf fwtk-2.0.tar.gz).

FWTK nie pośredniczy w przekazywaniu SSL (bezpieczne dokumenty w WWW) ale posiada dodatek napisany przez Jean-Christophe Touvet. Jest on dostępny pod adresem ftp://ftp.edelweb.fr/pub/contrib/fwtk/ssl-gw.tar.Z. Touvet nie świadczy wsparcia technicznego dla tego kodu.

Używam zmodyfikowanej wersji: włączyłem moduł dostępu do bezpiecznych serwerów news Netscape napisany przez Eric Wedel ftp://mdi.meridian-data.com/pub/tis.fwtk/ssl-gw/ssl-gw2.tar.Z.

W naszych przykładach będę używał wersji Wedel'a.

Aby go zainstalować po prostu strwóż katalog ssl-gw w katalogu /usr/src/fwtk-2.0 i wsadź tam odpowiednie pliki. Kiedy instalowałem tę bramę potrzebne były drobne zmiany zanim mogłem skompilować resztę zestawu.

Pierwsza zmiana nastąpiła w pliku ssl-gw.c . Nie potrafił włączyć jednego z plików include.

 #if defined(__linux)
 #include    <sys/ioctl.h>
 #endif
Druga zmiana polegała na stworzeniu pliku Makefile. Skopiowałem jeden z innej ,,bramy'' i zastąpiłem nazwę tego modułu nazwą ssl-gw.

7.2 Kompilacja TIS FWTK

Wersja 2.0 FWTK kompiluje się łatwiej niż poprzednie. Wciąż jednak jest kilka rzeczy które powinny być zmienione zanim wersja beta będzie się kompilować bez przeszkód. Pozostaje mieć nadzieję, że do tak się stanie w pełnej wersji.

Aby to poprawić zacznij zmiany od katalogu /usr/src/fwtk/fwtk i skopiuj plik Makefile.config.linux na Makefile.config.

Nie uruchamiaj FIXMAKE. Instrukcja mówi byś to zrobił. Jeśli chcesz zniszczyć Makefile we wszystkich podkatalogach...

Wykonałem poprawkę do fixmake Problem polegał na tym, że fixmake dodawał '.' i '' do włączanych do Makefile linii.

 sed 's/^include[    ]*\([^ ].*\)/include \1/' $name .proto > $name

Następnie będziemy musieli wyedytować Makeconfig.file. Potrzebne będą dwie zmiany.

Autor programu ustawił źródła programu w swoim $HOME/. My kompilujemy w /usr/src i powinniśmy zmienić zmienną FWTKSRCDIR.

 FWTKSRCDIR=/usr/src/fwtk/fwtk

Po drugie, przynajmniej niektóre Linuxy używają bazy danych w formacie gdbm. W Makefile.config jest używana dbm Zapewne będziesz musiał to zmienić. Ja w RedHacie 3.0.3 musiałem.

 DBMLIB=-lgdbm
Ostania poprawka jest w katalogu x-gw. Błąd w wersji beta jest w pliku socket.c. Poprawka polega na usunięciu tych linii.

 #ifdef SCM_RIGHTS /* 4.3BSD Reno and later */
            + sizeof(un_name->sun_len) + 1
 #endif
Jeśli dodałeś ssl-gw do swojego katalogu źródeł trzeba jeszcze dodać do listy katalogów w Makefile.

 DIRS=  smap smapd netacl plug-gw ftp-gw tn-gw rlogin-gw http-gw
 x-gw ssl-gw

Teraz uruchom make.

7.3 Instalacja TIS FWTK

Uruchom make install. Standardowo katalogiem instalacyjnym jest /usr/local/etc. Możesz to zmienić (ja tego nie zrobiłem) na bardziej bezpieczny katalog. Ja zmieniłem prawa dostępu do niego na chmod 700 .

Na koniec pozostała nam konfiguracja firewalla.

7.4 Konfiguracja firewalla TIS FWTK

Teraz naprawdę rozpoczynamy. Musisz nauczyć system wywoływania tych nowych usług i stworzyć tablice do ich kontroli.

Nie próbuję przepisywać tutaj dokumentacji do TIS FWTK. Chcę pokazać takie ustawienia jakie u mnie działały i wyjaśnić problemy jakie spotkałem.

Istnieją trzy pliki kontrolujące firewalla.

Aby uzyskać poprawne funkcjonowanie FWTK powinieneś wyedytować te pliki poczynając od góry. Edycja jedynie services bez inetd.conf i netperm-table ustawionych prawidłowo uczyni twój system niedostępnym.

Plik netperm-table

Plik ten odpowiada za kontrolę kto ma dostęp do usług nadzorowanych przez TIS FWTK. Powinieneś myśleć o ruch z obu stron firewalla. Ludzie z zewnątrz twojej sieci powinni zidentyfikować się przed otrzymaniem dostępu, ale ludzie z wewnątrz mogą zostać dopuszczeni od razu.

Aby ludzie moli się zidentyfikować firewall używa programu o nazwie authsrv do trzymania bazy danych o użytkownikach i ich hasłach. Sekcja dotycząca autentyfikacji w netperm-table pozwala kontrolować gdzie jest trzymana baza danych i kto ma do niej dostęp.

Miałem trochę kłopotów z blokowaniem dostępu do usług. Weź pod uwagę że linia którą pokazuję używa '*' do dawania dostępu dla każdego do tej usługi. Prawidłowe ustawienie tej linii jest następujące: '' authsrv: premit-hosts localhost jeśli chcesz zachować ją pracującą.

 #
 # tablica konfiguracji serwera proxy 
 #
 # Autentyfikacja: reguły serwera i klienta
 authsrv:   database /usr/local/etc/fw-authdb
 authsrv:   permit-hosts *
 authsrv:   badsleep 1200
 authsrv:   nobogus true
 # Aplikacje klienckie używające serwera autentyfikacji
 *:      authserver 127.0.0.1 114

Aby zaincjalizować bazę danych wykonaj su do root`a i uruchom ./authsrv w katalogu /var/local/etc by stworzyć rekord opisujący administratora systemu.

Oto jest przykładowa sesja.

Przeczytaj dokumentację FWTK, by dowiedzieć się jak dodać użytkowników i grupy.

  #
  # authsrv
  authsrv# list
  authsrv# adduser admin  " Auth DB admin " 
  ok - user added initially disabled
  authsrv# ena admin
  enabled
  authsrv# proto admin pass
  changed
  authsrv# pass admin  " plugh " 
  Password changed.
  authsrv# superwiz admin
  set wizard
  authsrv# list
  Report for users in database
  user  group longname      ok?  proto  last
  ------ ------ ------------------ ----- ------ -----
  admin     Auth DB admin   ena  passw  never
  authsrv# display admin
  Report for user admin (Auth DB admin)
  Authentication protocol: password
  Flags: WIZARD
  authsrv# ^D
  EOT
  #
Kontrola przez bramę telnetu (tn-gw) polega na prostym przesłaniu i jest to pierwsza którą powinieneś ustawić.

W moim przykładzie pozwoliłem komputerom z wnętrza sieci prywatnej na dostęp bez autentyfikacji (permit-hosts 19961.2.* -passok).

Ale inni użytkownicy powinni wprowadzić swoją nazwę użytkownika i hasło. (permit-hosts * -auth)

Poza tym pozwoliłem jednemu innemu systemowi (196.1.2.202) na dostęp do firewalla bezpośrednio, bez przechodzenia przez procedury na nim. Sprawiają to dwie linie z inetacl-in.telnetd

Wyjaśnię ich działanie potem.

Powinieneś zachować krótki czas timeoutu.

 # reguły dostępu telnetu do firewalla:
 tn-gw:        denial-msg   /usr/local/etc/tn-deny.txt
 tn-gw:        welcome-msg   /usr/local/etc/tn-welcome.txt
 tn-gw:        help-msg    /usr/local/etc/tn-help.txt
 tn-gw:        timeout 90
 tn-gw:        permit-hosts 196.1.2.* -passok -xok
 tn-gw:        permit-hosts * -auth
 # Tylko administrator może wykonać telnet na port 24 firewalla.
 netacl-in.telnetd: permit-hosts 196.1.2.202 -exec
 /usr/sbin/in.telnetd
I to samo z r-command.

 #  reguły dostępu rlogin do firewalla
 rlogin-gw:  denial-msg   /usr/local/etc/rlogin-deny.txt
 rlogin-gw:  welcome-msg   /usr/local/etc/rlogin-welcome.txt
 rlogin-gw:  help-msg    /usr/local/etc/rlogin-help.txt
 rlogin-gw:  timeout 90
 rlogin-gw:  permit-hosts 196.1.2.* -passok -xok
 rlogin-gw:  permit-hosts * -auth -xok
 # Tylko administrator może wykonać telnet na port 24 firewalla.
 netacl-rlogind: permit-hosts 196.1.2.202 -exec /usr/libexec/rlogind
 -a

Nie powinieneś dawać nikomu bezpośredniego dostępu do firewalla, włączając w to dostęp prze FTP (tak pobieranie jak i wkładanie).

Jeszcze raz, linie zawierające permit-hosts pozwalają każdemu w chronionej na wolny dostęp do Internetu, zaś wszyscy inni muszą się autentyfikować. Włączyłem zapisywanie każdego pliku pobranego i wysłanego do mojej konfiguracji.

(-log { retr stor })

Timeouty FTP dają ci kontrolę nad tym jak długo będą utrzymywane ,,złe'' połączenia i jak długo będą utrzymywane połączenia bez żadnej aktywności.

 #  reguły dostępu ftp do firewalla
 ftp-gw:        denial-msg   /usr/local/etc/ftp-deny.txt
 ftp-gw:        welcome-msg   /usr/local/etc/ftp-welcome.txt
 ftp-gw:        help-msg    /usr/local/etc/ftp-help.txt
 ftp-gw:        timeout 300
 ftp-gw:        permit-hosts 196.1.2.* -log { retr stor }
 ftp-gw:        permit-hosts * -authall -log { retr stor }
WWW, Gopher i bazujące na przeglądarkach FTP jest kontrolowane przez http-gw. Pierwsze dwie linie tworzą katalog gdzie będą składowane pliki i dokumenty z FTP i WWW. Przy czym są one własnością root`a i są składowane w katalogu dostępnym tylko dla niego.

Połączenia WWW powinny być bardzo krótki. W ten sposób można kontrolować jak długo użytkownicy będą utrzymywać błędne połączenia.

 # reguły dostępu dla WWW i Gophera
 http-gw:   userid     root
 http-gw:   directory    /jail
 http-gw:   timeout 90
 http-gw:   default-httpd  www.afs.net
 http-gw:   hosts      196.1.2.* -log { read write ftp }
 http-gw:   deny-hosts   *

ssl-gw ustawia się tak samo ja i inne bramy. Bądź z nią ostrożny. W tym przykładzie pozwalam wszystkim z sieci chronionej na łączenie się z każdym z serwerów na zewnątrz z wyjątkiem adresów 127.0.0.* i 192.1.1.* oraz (wtedy) na otwieranie portów 443 do 563 używanych jako znane porty dla SSL.

# zasady dla bramy ssl:
 ssl-gw:     timeout 300
 ssl-gw:     hosts      196.1.2.* -dest { !127.0.0.* !192.1.1.*
 *:443:563 }
 ssl-gw:     deny-hosts   *

Poniżej znajduje się przykład jak użyć plug-gw aby pozwolić na połączenie do serwera news. W tym przykładzie zezwalam każdemu z sieci lokalnej na dostęp do tylko jednego systemu i tylko na porcie zajętym przez news.

W drugiej linii pozwalam serwerowi news przesłać dane z powrotem do chronionej sieci.

Ponieważ większość klientów spodziewa się, że pozostaje podłączenie w czasie gdy użytkownik czyta wiadomości timeout dla news powinien być długi.

 # brama dla modułu plug-gw i NetNews
 plug-gw:    timeout 3600
 plug-gw: port nntp 196.1.2.* -plug-to 199.5.175.22 -port nntp
 plug-gw: port nntp 199.5.175.22 -plug-to 196.1.2.* -port nntp

Brama dla fingera jest prosta. Każdy z chronionej sieci powinien się załogować i wtedy pozwalamy mu na użycie fingera na firewallu. Pozostali nie po prostu dostają wiadomość.

 # uruchomienie usługi finger
 netacl-fingerd: permit-hosts 196.1.2.* -exec /usr/libexec/fingerd
 netacl-fingerd: permit-hosts * -exec /bin/cat
 /usr/local/etc/finger.txt

Nie mam ustawionych usług dla poczty elektronicznej i X-Windows więc nie daję przykładów. Jeśli ktoś ma działający przykład, proszę o przysłanie mi.

Plik inetd.conf

Oto jest kompletny plik /etc/inetd.conf . Wszystkie niepotrzebne usługi zostały wykomentowane. Włączyłem pełny plik aby pokazać co wyłączyć i jak ustawić nową usługę w ścianie ognia. {od tłumacza: nie przekładam typowych dla tego pliku linii}

 #echo stream tcp nowait root    internal
 #echo dgram  udp wait  root    internal
 #discard   stream tcp nowait root    internal
 #discard   dgram  udp wait  root    internal
 #daytime   stream tcp nowait root    internal
 #daytime   dgram  udp wait  root    internal
 #chargen   stream tcp nowait root    internal
 #chargen   dgram  udp wait  root    internal
 # brama FTP w ścianie ognia
 ftp-gw   stream tcp nowait.400 root /usr/local/etc/ftp-gw ftp-gw
 # brama Telnetu w ścianie ognia
 telnet    stream tcp nowait   root /usr/local/etc/tn-gw
 /usr/local/etc/tn-gw
 # local telnet services
 telnet-a  stream tcp nowait   root /usr/local/etc/netacl in.telnetd
 # brama Gophera w ścianie ognia
 gopher    stream tcp nowait.400 root /usr/local/etc/http-gw
 /usr/local/etc/http-gw
 # brama WWW w ścianie ognia
 http stream tcp nowait.400 root /usr/local/etc/http-gw
 /usr/local/etc/http-gw
 # SSL  w ścianie ognia
 ssl-gw stream tcp   nowait root /usr/local/etc/ssl-gw  ssl-gw
 # NetNews firewall proxy (using plug-gw)
 nntp  stream tcp   nowait root  /usr/local/etc/plug-gw plug-gw nntp
 #nntp stream tcp   nowait root  /usr/sbin/tcpd in.nntpd
 # SMTP (email)  w ścianie ognia
 #smtp stream tcp   nowait root  /usr/local/etc/smap smap
 #
 # Shell, login, exec and talk are BSD protocols.
 #
 #shell    stream tcp   nowait root  /usr/sbin/tcpd in.rshd
 #login    stream tcp   nowait root  /usr/sbin/tcpd in.rlogind
 #exec stream tcp   nowait root  /usr/sbin/tcpd in.rexecd
 #talk dgram  udp   wait  root  /usr/sbin/tcpd in.talkd
 #ntalk    dgram  udp   wait  root  /usr/sbin/tcpd in.ntalkd
 #dtalk    stream tcp   waut  nobody /usr/sbin/tcpd in.dtalkd
 #
 # Pop and imap mail services et al
 #
 #pop-2  stream tcp nowait root /usr/sbin/tcpd  ipop2d
 #pop-3  stream tcp nowait root /usr/sbin/tcpd  ipop3d
 #imap  stream tcp nowait root /usr/sbin/tcpd  imapd
 #
 # The Internet UUCP service.
 #
 #uucp  stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico
 -l
 #
 # Tftp service is provided primarily for booting. Most sites
 # run this only on machines acting as  " boot servers. " 
 Do not uncomment
 # this unless you *need* it.
 #
 #tftp dgram  udp   wait  root  /usr/sbin/tcpd in.tftpd
 #bootps    dgram  udp   wait  root  /usr/sbin/tcpd bootpd
 #
 # Finger, systat and netstat give out user information which may be
 # valuable to potential "system crackers." Many sites choose to
 disable
 # some or all of these services to improve security.
 #
 # cfinger is for GNU finger, which is currently not in use in RHS
 Linux
 #
 finger    stream tcp nowait root  /usr/sbin/tcpd in.fingerd
 #cfinger   stream tcp nowait root  /usr/sbin/tcpd in.cfingerd
 #systat    stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx
 #netstat   stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f
 inet
 #
 # Time service is used for clock syncronization.
 #
 #time stream tcp nowait root /usr/sbin/tcpd in.timed
 #time dgram  udp wait  root /usr/sbin/tcpd in.timed
 #
 # Authentication
 #
 auth     stream tcp wait  root /usr/sbin/tcpd in.identd -w -t120
 authsrv    stream tcp nowait root /usr/local/etc/authsrv authsrv
 #
 # End of inetd.conf

Plik /etc/services

Tutaj się wszystko zaczyna. Gdy klient łączy się ze ścianą ognia dzieje się to na tzw. dobrze znanym porcie (niższym od 1024). Na przykład telnet łączy się na porcie 23. Serwer inetd słyszy prośbę o połączenie, i szuka nazwy tej usługi w /etc/services. Później wzywa programy wyznaczony dla tej usługi w /etc/inedt.conf

Niektóre z usług nie są normalnie tworzone przez wywołanie w /etc/serwices. Można przydzielać niektóre porty jak chcemy, Na przykład ja przydziałem usłudze ,,telnet administratora'' (telnet-a) port 24. Ty możesz przydzielić tę usługę na portowi 2323, jeśli chcesz. Dla administratora (CIEBIE) bezpośrednie połączenie ze ścianą ognia na porcie 24 nie 23 noże być potrzebne, jeśli masz ustawioną swoją chronionej sieci.

 telnet-a    24/tcp
 ftp-gw     21/tcp      # this named changed
 auth      113/tcp  ident  # User Verification
 ssl-gw     443/tcp

8. Serwer proxy SOCKS

8.1 Konfigurowanie serwera Proxy

SOCKS proxy server dostępny jest z adresu: ftp://sunsite.unc.edu/pub/Linux/system/Network/misc/socks-linux-src.tgz. Zawiera przykładowy plik konfiguracyjny w katalogu nazwanym: " socks-conf " . Zdekompresuj i untaruj te pliki w dowolnym katalogu i postępuj według instrukcji. Miałem kilka problemów kiedy kompilowałem go. Upewnij się, że twój Makefile jest prawidłowy.

Jedną z ważniejszych rzeczy jest pamiętanie o konieczności dodania serwera proxy do /etc/inetd.conf. Aby móc odpowiedzieć na żądania musisz dopisać następującą linię:

 socks stream tcp nowait nobody /usr/local/etc/sockd sockd

8.2 Konfiguracja serwera proxy

Program SOCKS potrzebuje dwóch oddzielnych plików konfiguracyjnych. Jeden z nich mówi tym komu udzielić dostępu a drugi w jaki sposób przekazywać żądania do właściwego serwera proxy. Plik decydujący o dostępie powinien znajdować się na serwerze. Plik dotyczący przekazywania dostępu (routingu) powinien znajdować się na każdej z maszyn Unixowych. W wypadku DOSa i częściowo MaCów komputery powinny mieć swój własny routing.

Plik dostępu.Access File

W wersji 4.2 Beta SOCSKsów plik dostępu nazywa się " sockd.conf " . powinien zawierać dwie linie: zezwolenia i zakazu. Każda z linii posiada trzy pozycje:

Identyfikator to permit lub deny Powinieneś użyć obu: każdy we właściwej linii. Adres IP powinien zawierać czterobajtowy adres w typowej dal IP notacji. np. 192.168.2.0. Modyfikator adresu także jest normalnym IP i pracuje jak maska. Rozwinięcie tego adresu da 32 bity (1 albo zero). Na przykład, w tej linii:

  permit 192.168.2.23 255.255.255.255
zezwalam na dostęp maszynom w których adres pasuje co do bitu z zadanym: pasuje tu tylko 192.168.2.23

  permit 192.168.2.0 255.255.255.0
zezwala na dostęp maszynom z gdyby od 192.168.2.0 do 192.168.2.255, w formie całej klasy C.

Nie powinieneś mieć następującej linii:

  permit 192.168.2.0 0.0.0.0
dającej dostęp dla wszystkich adresów.

Tak więc pierwsza linia daje zezwolenie dla tych adresów którym chcesz go dać, a druga zakazuje reszcie. Aby zezwolić na dostęp wszystkim z klasy 192.168.2.xxx potrzeba linii:

  permit 192.168.2.0 255.255.255.0
  deny 0.0.0.0 0.0.0.0
Zwróć uwagę na pierwsze " 0.0.0.0 " w linii zakazu. Z maską 0.0.0.0 taki adres nie istnieje. Wszystkie zera zostały tam wprowadzone bo są łatwe do zapisu.

Dopuszczalne jest umieszczenie większej ilości jeden zapisów w każdej z linii. Konkretni użytkownicy mogą ponadto otrzymać lub tracić prawo dostępu. jest to wykonywane przy pomocy autentyfikacji przy pomocy ident. Nie wszystkie systemu używają ident, włączając w to Trumpet Winsock , dlatego też nie włączam tu przykładów. Dokumentacja do SOCKS jest całkiem dobra w tej kwestii.

Tablica trasowania

Tablica routingu w SOCS jest niestety nazywana socks.conf.

Tablica routingu mówi klientom SOCKS kiedy używać socks a kiedy nie. Na przykład, w twojej sieci 192.168.2.3 nie potrzebuje używania socks do połączenia z 192.168.2.1. Po prostu łączy się bezpośrednio, po Ethernecie. Definiuje się automatycznie 127.0.0.1 jako loopback. Oczywiste jest, że nie potrzebujesz rozmawiać przez ścianę ogniową z samym sobą...

Są trzy typy rekordów:

Deny mówi SOCKS kiedy ma odmówić żądaniu. Rekord ten ma takie same trzy pola jak sockd.conf: identyfikator, adres i maska. Ogólnie, dopóki jest to modyfikowane przez sockd.conf, maska w pliku dostępu jest ustawiona na 0.0.0.0. Jeśli chcesz pozwolić na dzwonienie do siebie możesz to zrobić tutaj.

Rekord direct mówi które do których adresów nie używać SOCKS. Te adresy będą doręczone bez serwera proxy.

Jeszcze raz, mamy trzy pola: identyfikator, adres i maska.

  direct 192.168.2.0 255.255.255.0
W ten sposób kierujesz bezpośrednio cały ruch w chronionej sieci.

Rekord z sockd mówi komputerowi które z hostów są serwerem SOCKS

Składnia jest następująca:

 sockd @=<serverlist> <IP address> <modifier>
Zwróć uwagę na fragment: @= . Pozwala on na wprowadzenie listy serwerów proxy. W naszym przykładzie używamy tylko jednego. Ale możesz mieć wiele w celu zwiększenia przepustowości i obniżenia możliwości awarii.

Pola adresu IP i maski działają jak w innych przykładach. Specyfikujesz adres i zakres jego obowiązywania.

DNS zza firewalla Ustawienie usługi DNS zza firewalla jest prostymzadaniem. Potrzeba jedynie ustawienia DNS na maszynie z firewallem.I inne maszyny za firewallem będą go używały.

8.3 Współpraca z serwerami proxy

Unix

Aby twoje aplikacje działały z serwerami proxy potrzebujesz je zsockisy... ( " sockified " ). Będziesz potrzebował dwóch różnych telnetów (jeden do komunikacji bezpośredniej drugi przez serwer proxy). SOCKS przychodzą z instrukcją jak zSOCKifikować program, i z paroma programami przygotowanymi na tę modłę. Jeśli używasz zSOCKIfowanej wersji gdziekolwiek bezpośrednio SOCKS automatycznie przełączy cię na właściwą wersję. Z tego powodu trzeba zmienić nazwy wszystkich programów w naszej chronionej sieci i zstąpić je wersjami zSOCKisowanymi. Finger stanie się finger.orig, telnet stanie się telnet.orig i tak dalej. Musisz powiedzieć SOCKS o każdym w pliku include/socks.h.

Dobre programy są w stanie dostarczać tablic trasowania i zsocksifikować się same. Jednym z nich jest Netscape Navigator. Możesz używać serwerów proxy przez wprowadzenie adresu serwera (192.168.2.1 w naszym wypadku) w polu SOCKs w Menu Proxies. Każda aplikacja potrzebuje przynajmniej minimalnej informacji o tym co jest serwerem proxy.

MS Windows i Trumpet Winsock

Trumpet Winsock przychodzi z wbudowanymi możliwościami współpracy z serwerem proxy. W setup menu wprowadź adres serwera, i adresy komputerów dostępnych bezpośrednio. Program przekieruje na serwer wszystkie pakiety mające wyjść na zewnątrz.

Ustawienie serwera pośredniczącego do pracy z pakietami UDP.

Pakiet SOCKS pracuje jedynie z pakietami TCP, pomijając UDP. Powoduje to trochę mniejszą jego użyteczność. Wiele użytecznych programów, takich jak na przykład talk i Archie używa UDP. Jest jednak pakiet który może być użyty jako serwer proxy dla UDP: UDPrelay stworzony przez Toma Fitzgeralda fitz@wang.com. Niestety w chwili pisania tego tekstu nie jest on zgodny z Linuxem.

8.4 Wady serwerów proxych

Serwer proxy, jak pokazałem powyżej jest narzędziem bezpieczeństwa. Używanie go zwiększa dostępność do Internetu z ograniczoną liczbą adresów wiąże się jednak z wieloma niedogodnościami. Serwer proxy pozwala na większą dostępność internetu z sieci chronionej, ale pozostawia wnętrze całkowicie niedostępne z zewnątrz. Oznacza to brak możliwości uruchomienia wewnątrz sieci rozmaitych serwerów, talk i archie, oraz bezpośredniego wysyłania listów do chronionej sieci. Poniższe uchybienia wyglądają nieznacząca, ale sposób myślenia przebiega następująco:

Przypadek FTP pokazuje jeszcze jeden problem z serwerami proxymi. Kiedy pobieram pliki lub wydaję komendę ls, serwer FTP otwiera gniazdo (,,socket'') na maszynie klienckiej i wysyła o tym informację. Serwer proxy nie pozwala na to, tak więc FTP nie działa w sposób prawidłowy.

Poza tym serwery pośredniczące działają powoli. Z powodu większej wydajności większość innych metod dostępu do Internetu będzie szybsza.

Jeśli masz przydzielony adres IP, i nie martwisz się o bezpieczeństwo, nie używaj ścian ogniowych i/lub serwerów proxych. Jeśli nie masz nr. IP, i także nie martwisz się o bezpieczeństwo swojej sieci, możesz użyć jednego z ,,emulatorów IP'' takich jak Term, Slirp lub TIA. Term jest dostępny z ftp://sunsite.unc.edu/, Slirp z ftp://blitzen.canberra.edu.au/pub/slirp, zaś TIA z http://markertplace.com/. Pakiety te pracują szybciej, pozwalają na szybsze połączenia i na większy dostęp z sieci wewnętrznej do internetu. Serwery pośredniczące są dobre dla tych który mają duże sieci z komputerami mającymi mieć dostęp ,,w locie'' do internetu z jednorazowym ustawieniem, i minimalnym wkładem pracy potem.

9. Konfiguracja zaawansowana.

Przedstawiłem jedną konfigurację, którą wypróbowałem przez stworzeniem tego dokumentu. Przy czym ten zarys powinien wystarczyć dla większości ludzi. Myślę że poniższy opis zaawansowanych konfiguracji może rozwiać pozostałe wątpliwości. Jeśli oprócz tego masz jeszcze jakieś pytania poza tym co opisałem, albo cię to po prostu interesują cię szczegóły związane ze firewallami i serwerami proxy możesz przeczytać poniższy fragment.

9.1 Wielkie sieci wymagają położenia nacisku na bezpieczeństwo

Powiedzmy, na przykład, że jesteś szefem milicji obywatelskiej i chcesz ,,usieciowć'' swoją siedzibę. Masz pięćdziesiąt komputerów i 32 nr IP (5 bitów). Potrzebujesz możliwości dania różnych poziomów dostępu do sieci ponieważ powierzasz swoim współpracownikom różne zadania. Poza tym będziesz potrzebował izolacji określonych miejsc w sieci od reszty.

Poziomy dostępu:

  1. Poziom zewnętrzny - ukazywany wszystkim, tutaj werbujesz i zdobywasz nowych ochotników.
  2. Troop poziom ten przeznaczony jest dla ludzi którzy otrzymali dostęp z poziomu zewnętrznego. Tutaj jest miejsce gdzie uczysz o rządzie dusz i jak zrobić bombę.
  3. Mercenary Tutaj jest miejsce gdzie naprawdę planujesz chronić. Tutaj składujesz wszelkie informacje o tym jak rządy trzeciego świata zamierzają podbić świat, twoje plany dla Newt Gingich, Oklahoma City, składujesz tajne informacje.

Konfiguracja sieci

Numery IP są ustawione w następujący sposób:

Teraz budujemy dwie izolowane sieci, każda w innym pokoju. Są one trasowane przez ekranowany ethernet i są kompletnie niewidoczne z innych pomieszczeń. Na szczęście ekranowany Ethernet zachowuje się tak samo jak zwyczajny ethernet.

Każda z tych sieci jest połączona do jednej ze stacji linuxowych na dodatkowych adresach IP.

Są to serwery plików połączone do obu chronionych sieci. Jest tak, ponieważ planujemy dać dostęp tak dla sieci Troops ja i wyższej.

Serwer plików nosi numery 192.168.2.17 dla sieci Troop i 192.168.2.23 dla sieci Mercenary. Mają różne adresy ponieważ mają dwie różne karty sieciowe. network. IP Forwarding jest wyłączony.

IP Forwarding na obu stacjach linuxowych także jest wyłączony. Router nie powinien przesyłać pakietów przeznaczonych dla sieci 192.168.2.xxx dopóki mu tego wprost nie powiemy, tak więc dostęp do internetu pozostaje wyłączony. Wyłączenie przesyłania IP ma na celu zablokowanie połączeń z sieci Troop do sieci Mercenary na odwrót.

Serwer NFS może ponadto oferować różne pliki dla różnych sieci.

To łatwe przy drobnych operacjach z symbolicznymi odniesieniami można zrobić w ten sposób że wspólne pliki są dzielone przez wszystkich. Użycie tego typu ustawień i różnych kart sieciowych umożliwia Ci zastosowanie jednego serwera plików dla trzech sieci.

Serwer proxy

Teraz, dopóki wszystkie trzy poziomu będą możliwe do pracy w ramach wyznaczonych zadań będą potrzebowały dostępu do sieci. Zewnętrzna sieć jest połączona bezpośrednio z internetem, tak więc nie ma tu zastosowania dla serwera pośredniczącego. Sieci Mercenary i Troop znajdują się za ścianą ogniową więc potrzebny im serwer proxy. Konfiguracja obu jest bardzo podobna. Oba mają takie same adresu IP. Jedyna różnica polega na nieco innych parametrach.

  1. Nie każdy może użyć serwera plików dla dostępu do Interntu. Wystawia to go na wirusy i inne brzydkie rzeczu.
  2. Nie chcemy zezwolić sieci Troop na dostęp do WWW. Przechodzą szkolenie I jaki kolwiek przepły informacji mógłby zniszczyć jego efekty.

Tak więc w pliku sockd.conf w linuxie w sieci Troop znajdzie się następująca linia.

  deny 192.168.2.17 255.255.255.255
a w stacji przeznaczonej dla Mercenary:

  deny 192.168.2.23 255.255.255.255
Teraz w stacji linuxowej sieci Troop wpisujemy:

  deny 0.0.0.0 0.0.0.0 eq 80
Ten tekst mówi że zabraniamy dostępu wszystkich maszynom próbującym się dostać do portu równego (eq) 80 (http). Nadal pozwala się na dostęp do wszystkich usług z wyjątkiem WWW.

Teraz oba pliki powinny zawierać linie:

  permit 192.168.2.0 255.255.255.0
by zezwolić wszystkim komputerom z sieci 192.168.2.xxx na użycie tego serwera pośredniczącego zamiast tego który został zakazany (np. serwer plików i dostęp do WWW z sieci Troop).

W sieci Troop w pliku sockd.conf powinien wyglądać w ten sposób:

  deny 192.168.2.17 255.255.255.255
  deny 0.0.0.0 0.0.0.0 eq 80
  permit 192.168.2.0 255.255.255.0

a w sieci Mercenary mniej więcej tak:

  deny 192.168.2.23 255.255.255.255
  permit 192.168.2.0 255.255.255.0

To powinno zakończyć konfigurację wszystkiego. Każda z sieci jest izolowana, z prawidłowymi ustawieniami interakcji. Każdy powinien być szczęśliwy.

Dalej... Podbij świat...

10. Od tłumacza.

Zdaję sobie sprawę ile w tym tekscie jest potknięć językowych, przeinaczeń. Jeśli któreś cię drażnią prześlij mi swoje uwagi. Aha, jeszcze jedno. Wyrażenia firewall i ściana ogniowa oraz proxy i serwer pośredniczący traktuję (przynajmniej na razie) zamiennie. (choc już większość polskich odpowiedników (na życzenie publiczności) usunąłem.

Celowo pozostawiam tekst bez zwyczajowego (c) tłumacza ;-)

doc-linux-pl-2002.06.14.orig/html/Ftape-HOWTO.pl.html0100664000175000017500000017637406770264140020622 0ustar covencoven ftape-HOWTO - streamery w Linuxie - jak to zrobić

ftape-HOWTO - streamery w Linuxie - jak to zrobić

Autor : Kevin Johnson, <kjj@pobox.com>
v2.0, 15 Marca 1997
Wersja polska : Jakub Chmielewski yacoob@manager.ae.wroc.pl
v0.99.1, 6 lipca 1997 roku.


Dokument ten zawiera najważniejsze przykazania dotyczące sterownika ftape. Sterownik ten obsługuje napędy zgodne z QIC-40, QIC-80, QIC-3010 i QIC-3020. Standardy QIC-3010 i QIC-3020 znane są też jako 'Travan' (TR-2 i TR-3). Napędy te łączą się z komputerem przez kontroler dyskietek (FDC). Niniejszy tekst nie dotyczy urządzeń SCSI ani streamerów zgodnych z QIC-02. Napędy DAT zazwyczaj (zawsze?) komunikują się z komputerem przez sterownik SCSI. Tekst ten jest jednym z wielu dokumentów HOWTO. Listę tych prac można znaleźć tutaj a same dokumenty można ściągnąć przez ftp z ftp.icm.edu.pl, ftp.pwr.wroc.pl (to są polskie mirrory) lub z sunsite.unc.edu:pub/Linux/doc/HOWTO. Można też je oglądać na WWW - każdy mirror LDP

1. Legalności

Niniejszy dokument (ftape-HOWTO) może być reprodukowany i rozprowadzany w całości pod następującymi warunkami:

Copyright (c) 1993-1996 by Kai Harrekilde-Petersen
Email: khp@dolphinics.no

Copyright (c) 1996-1997 by Kevin Johnson
Email: kjj@pobox.com

Tłumaczenie na język polski:
Copyright (c) 1997 by Jakub Chmielewski
Email: yacoob@manager.ae.wroc.pl

Linux ftape-HOWTO jest darmowy; możesz go kopiować, modyfikować zachowując jednak postanowienia wesji drugiej (i następnych) Licencji GNU General Public Licence opublikowanej przez Free Software Foundation.

Dokument ten został napisany aby pomóc/usprawnić pracę użytkowników systemu Linux, jednak autor NIE DAJE ŻADNYCH GWARANCJI. Więcej szczegółów znajdziesz w GNU General Public Licence.

Autor zachęca do kopiowania i dytrybucji niniejszego dokumentu w celach prywatnych jak i komercyjnych, pod warunkiem, że pozostają one w zgodzie z zaleceniami GNU General Public Licence. Oznacza to, że można go kopiować jednak bez żadnych opłat (z wyjątkiem tych pokrywających koszty reprodukcji) - czyli bez zysku. Autor (no i tłumacz) wyraża niniejszym zgodę na reprodukowanie swojej pracy w jakiejkolwiek postaci - fizycznej bądź elektronicznej.

Uwaga! Prace oparte na Linux ftape-HOWTO (w szczególności tłumaczenia) muszą być dostępne zgodnie z GNU General Public Licence i oryginalny copyright musi zostać nienaruszony. Jeśli dodałeś nowe informacje do tego dokumentu, musisz utworzyć jego tekst źródłowy (tzn w formacie SGML) aby móc go uaktualniać. Prześlij, proszę swoje uaktualnienia do autora: kjj@pobox.com. Pozwoli to na dołączenie twoich informacji do oryginału i pozwoli wszystkim się z nimi zapoznać.

Autor zachęca do załączania niniejszego dokumentu do dokumentacji twoich programów. Zgodnie z wcześniejszym zezwoleniem możesz ten tekst drukować lub w innej formie przekazywać osobom trzecim (oczywiście zachowując copyright). Możesz także, jeśli uznasz to za stosowne dołączyć odpowiedni ,,dodatek instalacyjny'' dotyczący twojego programu lub zmienić treść odpowiednich rozdziałów.

Autor chciałby być informowany o jakichkolwiek planach publikowania tego tekstu w celach komercyjnych. Zapewni to Tobie dostęp do aktualnych wersji dokumentu. Jeśli zdarzy się, że jego nowsza wersja będzie miała ukazać się lada dzień, może zechcesz poczekać z publikacją twojej pracy do czasu ukazania się najświeższej wersji.

Jeśli rozprowadzasz ten dokument w celach komercyjnych, wszelkie wartości materialne (finansowo płynne) jak i wydrukowane egzemplarze dokumentu przekazane autorowi spotkają się z jego wielką wdzięcznością. Wesprzesz w ten sposób autorów darmowego oprogramowanie oraz Linux Documentation Project.

Jeśli masz pytania, komentarze, oto adres autora: kjj@pobox.com.

2. Historia uaktualnień

wersja 2.0 (15.3.1997)

wersja 1.9 (20.9.1996)

wersja 1.8 (22.5.1996)

wersja 1.7.1 (13.2.1996)

wersja 1.7 (January 28.1.1996)

wersja 1.6.2 (23.1.1996)

wersja 1.6.1 (16.1.1996)

wersja 1.6 (10.1.1996)

3. Wstęp

Sterownikiem ftape i jego źródłami administruje Claus Heine <claus@momo.math.rwth-aachen.de>. Jego strona WWW znajduje się w http://samuel.math.rwth-aachen.de/~LBFM/claus/ftape/ftape-page.html.

Jeśli masz jakieś problemy, pytania związane z ftape, spróbuj umieścić je na liście linux.dev.tape. Jest to lista Usenet, która jest kopią listy dyskusyjnej linux-tape@vger.rutger.edu (zobacz też punkt Śledzenie rozwoju ftape'a) Polecam korzystanie z grup dyskusyjnych zamiast bezpośrednio z listy, ponieważ serwer vger jest co nieco przeciążony listami.

Wracając do streamerów osobiście używam ftape (to mój głównym środek archiwizacji danych na mojej maszynce :-). Nie chciałbym tutaj polecać jakiegokolwiek sprzętu. Ja używam Iomega Ditto Tape Insider 3200 i jest dla mnie wystarczający. Lista urządzeń obsługiwanych przez sterownik znajduje się w punkcie Napędy współpracujące z ftape'm.

Jeśli masz jakieś kłopoty ze streamerem a znalazłeś jakieś rozwiązanie podziel się swoimi uwagami z innymi (lista dyskusujna - linux.dev.tape) oraz ze mną (<kjj@pobox.com>).

Swoją pocztę przeglądam zwykle kilka razy na tydzień, staram się też odpowiadać na każdy list, ale nie mogę gwarantować, że odpiszę natychmiast. Często też przeglądam listy dyskusyjne linux.dev.tape oraz kernel'a

Jeśli niniejszy tekst dotarł do ciebie w formie drukowanej, lub też tylko w części odwiedź proszę stronę the Linux Documentation home page lub ftp to ftp://sunsite.unc.edu:/pub/Linux/doc/HOWTO aby dowiedzieć się czy nie ma nowszej wersji tego tekstu. Może to zaoszczędzić ci wiele kłopotu.

Jeśli zechcesz do mnie napisać, umieść proszę nagłówek ftape w linijce tematu listu. Może to uchronić twój list przed wirtualną śmiercią,

3.1 Co to jest ftape

ftape jest sterownikiem, który obsługuje różne typy tanich streamerów podłączanych do kontrolera dyskietek.

ftape nie jest programem archiwizującym - jest tylko sterownikiem, który pozwala używać tasiemca (tak samo jak sterownik SoundBlaster'a pozwala wykorzystać tę kartę) poprzez pliki /dev/[n]rft[0-3].

Pierwsze wersje ftape zostały napisane przez Bas'a Laarhoven'a z ,,niewielką pomocą ze strony przyjaciół'', którzy pomogli rozgryźć ECC (Error Correcting Code). Prawa autorskie do ftape'a należą do Bas'a i są zgodne z GNU Genral Public Licence, która to mówi: ,,spoko, możesz kopiować i rozdawać to, tylko pozwól i innym to robić''.

ftape jest już od dłuższego całkiem stabilnym sterownikiem. Jest wystarczająco bezpieczny aby na taśmach można było składować ważne dane (chociaż dobrym nawykiem jest sprawdzać swoje archiwa co jakiś czas, żeby nie być (nie)mile zaskoczonym pewnego pięknego poranka...).

ftape współpracuje z napędaami zgodnymi ze specyfikacją QIC-117 oraz z jednym z następujących standardów: QIC-80, QIC-40, QIC-30101 lub QIC-3020.

ftape nie współpracuje z napędami QIC-02, IDE (ATAPI) ani SCSI. Współpraca z napędami SCSI jest możliwa dzięki plikom /dev/[n]st[0-70 oraz jądru, które zawiera sterowniki SCSI. Informacje o napędach SCSI można znaleźć w SCSI-howto. Urządzenia ATAPI są obsługiwane przez kernel (jądro) od wersji 1.3.46. Zajrzyj do punktów Napędy współpracujące z ftape oraz Napędy nie współpracujące z ftape, w których znajduje się spis tych urządzeń.

4. Instalacja ftape'a

4.1 Gdzie można znaleźć ftape

Wersje 2.0.x jądra zawierają sterownik ftape w wersji 2.08. Jednak najlepiej zdobyć najnowszą wersję kodu źródłowego. Nowsza wersja zawiera pliki nie dołączone do jądra oraz dużo bogatszą dokumentację dotyczącą instalacji itd.

Najświeższe wersje sterownika (2.11a i wyżej) dostępne są na stronie http://samuel.math.rwth-aachen.de/~LBFM/claus/ftape/ftape-page.html. Gdy piszę ten dokument dostępna jest już wersja 3.xx ftape'a. Niemniej polecam starsze wydanie (2.xx), chyba że masz ochotę igrać z ogniem (3.xx jest wersją rozwojową i z pewnością ma kilka robaczków :-) ).

4.2 Instalacja sterownika

Niniejszy punkt zawiera informacje dotyczące instalacji sterownika w2.11a i czynnościach, które muszą ją poprzedzać.

Zakładam, że masz już skompresowany kod źródłowy (najprawdopodobniej ftape-2.11a.tar.gz). Umieść go w katalogu docelowym (np /usr/src lub ~/src) rozpakuj komendą tar xvzf ftape-2.11a.tar.gz Wszystkie pliki zostaną umieszczone w podkatalogu ftape-2.11a czyli w /usr/src/ftape-2.11a albo ~/src/ftape-2.11a. Można też wrzucić cały pakiet do /usr/src/linux/drivers/char/ftape ale osobiście radzę najpierw przeczytać dokumentację a potem zdecydować gdzie go umieścić.

Na początek przeczytaj plik README - zawiera on bardzo ważne informacje. Jeśli autor radzi zajrzeć do innych plików i zapoznać się z ich treścią - zrób to. Uchroni cię to przed przykrymi niespodziankami później i znacznie uprości dalszą instalację.

Dobra rada: NIE rozpoczynaj instalacji (kompilacji) pakietu jeśli dokładnie nie przeczytałeś README lub Install-guide. W pliku README autor wspomina o liście dyskusyjnej linux-tape. Ja radzę jednak zapisać się na linux.dev.tape, ponieważ serwer obsługujący tą pierwszą jest, jak już wspominałem, przeładowany.

Są dwa sposoby korzystania z ftape'a

Pierwsza metoda będzie zapewne nastręczać mniej kłopotów. Zaletą drugiej jest fakt, że moduł ładowany jest do pamięci tylko wtedy, gdy jest potrzebny (zawsze można go zdeinstalować bez konieczności przeładowania systemu). Autor wczesnych wersji sterownika (Bas Laarhoven) twierdzi jednak, że nie był on przeznaczony do kompilacji jako moduł (od tego czasu wiele się zmieniło i teraz ftape działa bez zarzutu w obydwu wersjach - przynajmniej u mnie - tłumacz :) ).

Na swoim komputerze sterownik kompiluję bezpośrednio do jądra. Myślę, że jest to lepsze rozwiązanie, ponieważ mniej jest z tym problemów. Radzę tak właśnie zrobić, chyba że masz dobry powód aby postąpić inaczej i jesteś przygotowany na komplikacje, które mogą wyniknąć podczas przygotowywania modułów. Jeśli zdecydujesz się kompilować sterownik bezpośrednio do jądra, to:

Jeśli używasz jądra w wersji 1.2, powinieneś zaopatrzyć się także w pakiet modules-1.3.57 a nie modules-1.2.8. (Bjø rn Ekwall, administrujący pakietem modules to właśnie zaleca).

Jeśli masz wersję 1.3.x jądra, powinieneś rozważyć przejście na wersję 2.0.x. Jądro 1.3.x było wersją rozwojową zanim powstała stabilna 2.0.x.

4.3 Śledzenie rozwoju ftape'a

Rozwój ftape'a można śledzić dzięki liście Usenet linux.dev.tape. Jak już wcześniej wspomniałem jest to kopia linux-tape@vger.rutgers.edu ale ze względu na przeciążenie tego serwera, radzę korzystać z Usenet'u.

Jeśli nie masz dostępu do Usenet'u możesz zapisać się na tę listę wysyłając e-mail'a do majordomo@vger.rutgers.edu o następującej treści: subscribe linux-tape'. Na początek otrzymasz list zawierający informacje o sposobie korzystania z listy (wysyłanie własnych uwag, sposób wypisania się z listy itd.) Miej jednak na uwadze, że nie mam (NIE MAM) żadnych przywilejów jeśli chodzi o tę listę. Nie jestem w stanie wypisać cię z niej, jeśli serwer nie chce zrobić tego automatycznie, mogę co najwyżej wysłać ci list z kondolencjami (co ci w niczym nie pomoże).

4.4 Współpraca ftape i stacji dyskietek

Jako, że streamer i stacja dysków łączą się z tym samym kontrolerem (i wykorzystują to samo przerwanie - IRQ6) nie mogą pracować równolegle. Dlatego, jeśli zamontowałeś już (mount) stację dysków i spróbujesz odwołać się do streamera, ftape wyświetli komunikat, że nie może przejąć przerwania IRQ6 i odmówi współpracy. Staje się to szczególnie uciążliwe, gdy chcesz stworzyć dyskietkę systemową (ratunkową), która korzystałaby z ftape'a. Rozwiązaniem jest albo ładowanie dyskietki startowej do ramdysku i wtedy odłączenie stacji dysków (umount) albo zaopatrzenie się w dwa kontrolery FDC.

5. Taśmy i streamer w użyciu

5.1 Formatowanie

Zanim taśma jest zdatna do użytku, musi zostać najpierw sformatowana. Proces formatowania dzieli taśmę na sektory i zapisuje najważniejsze informacje na nośniku. Inne streamery (SCSI itd) zwykle nie wymagają formatowania, ale te podłączane do FDC muszą po prostu udawać dyskietki (trochę to dziwne, ale tak to już jest).

Czy można formatować taśmy pod Linuxem?

Nie. (Na razie, bo trwają już prace nad tym)

Dopóki nie można tego robić pod Linuxem, trzeba niestety używać M* DOSa (Tfu!Błeeh...) albo kupować taśmy już sformatowane. Trzeba jednak pamiętać, że niektóre preformatowane taśmy zostały przygotowane bez sprawdzania czy nie zawierają błędnych sektorów!. Jeśli ftape stwierdzi, że taśma nie ma zaznaczonych żadnych błędnych sektorów, poinformuje cię o tym specjalnym ostrzeżeniem. Jeśli ftape będzie miał kłopoty z odczytem/zapisem twojej nowej taśmy, spróbuj sprawdzić ją pod DOS'em. Jeśli i dosowskiemu oprogramowaniu nie spodoba się twoja taśma, rozwiązaniem może być przeformatowanie jej. Pamiętaj jednak, że zanim będziesz mógł używać nowo sformatowane taśmy, musisz je najpierw wyczyścić poleceniem:

        # mt -f /dev/nftape erase

Jakich programów używać do formatowania taśm (dla DOS'u)?

Poniżej wymienione zostały programy, które zostały sprawdzone i chodzą:

A te programy są mniej lub bardziej pewne:

W zasadzie większość programów pod DOS'em całkiem nadaje się do formatowania taśm. Program Conner Backup Basics v1.0 miał błąd spowodowany złą interpretacją specyfikacji QIC przez programistów (sic). Błąd ten został poprawiony w wersji 1.1. ftape wykryje tę usterkę i nie ,,wysypie'' się na niej.

Od Dennisa T. Flaherty (<dennisf@denix.elk.miles.com>) dowiedziałem się ostatnio, że posiadacze Connera C260MQ (niestety tylko w USA) mogą otrzymać wersję 1.1 tego programu dzwoniąc pod numer 1-800-4Conner za darmo lub płacąc tylko za dyskietkę. Dla innych pocieszenie - wersja dla Windows nie ma tego błędu i powinna działać dobrze. Niektóre wersje oprogramowania pod Windows'y dla streamerów Colorado mają

błąd, ale ftape rozpoznaje i ,,obchodzi'' go.

Dobrym programem jest także Central Point Backup ale ten znów marnuje drogocenne miejsce na taśmie gdy znajdzie jakiś uszkodzony sektor.

UWAGA: Jeśli używasz innego oprogramowania pod DOS'a, nie wymienionego przeze mnie, napisz do mnie ( <kjj@pobox.com> żebym mógł uaktualnić powyższą listę.

5.2 Retenstioning

Taśmy QIC są szczególnie wrażliwe na rozciąganie. Powodem tego jest fakt, że podczas preformatowania zapisywana jest na nich informacja o sektorach, podczas gdy w innych rodzajach streamerów informacje synchronizacji (pozycjonowania) są zapisywane wraz z twoimi danymi. Jeśli taka taśma rozciągnie się, mogą wystąpić przekłamania odczytu (sektor się wydłuża). Oczywiście im dłuższa taśma, tym większe niebezpieczeństwo uszkodzenia nośnika.

Dobrym rozwiązaniem jest więc kilkuktrotne ,,retensionowanie'' (czyli rozprężanie) nowej taśmy przed pierwszym użyciem (zapisem danych albo formatowaniem). Retensionowanie taśmy zalecane jest także wtedy, gdy podczas odczytu występują błędy oraz przed każdym dokonaniem zapisu na taśmę.

        # mt -f /dev/nftape retension

5.3 Czyszczenie napędu

Powierzchnia taśmy pokryta jest związkiem tlenu. Kiedy nośnik styka się z głowicą zostawia na jej powierzchni niewielką ilość osadu. Co jakiś czas powinieneś ją czyścić. najlepiej użyć miękkiej szmatki lub czegoś z naturalnych włókien (żeby nie porysować głowicy) oraz płynu czyszczącego zalecanego przez producenta streamera. (Producent Jumbo-250 poleca zwykły czysty spirytus - swój chłop - tłumacz). Sposób czyszczenia powinien być opisany w instrukcji.

Jeszcze jedna uwaga: jeśli zacząłeś korzystać z zupełnie nowej taśmy, powinieneś także wyczyścić głowicę - nowe taśmy zostawiają więcej osadu po pierwszym użyciu.

Podziękowania dla Neal'a Friedman'a za doradzenie aby te informacje umieścić w tym dokumencie.

5.4 Napędy współpracujące z ftape

Wszystkie napędy zgodne z QIC-117 oraz zgodne z QIC-40, 80, 3010 lub 3020 powinny działać. ftape rozpoznaje także streamery QIC-WIDE i Travan (TR-1 to po prostu QIC-80 na 8 mm taśmie, TR-2 i TR-3 to odpowiednio QIC-3010 i 3020).

Na dzień dzisiejszy znane mi są następujące urządzenia współpracujące z ftape

Alloy Retriever 250

Archive 5580i, XL9250i

Colorado DJ-10, DJ-20 (tzn: Jumbo 120, Jumbo 250)

Colorado 1400

<kosowsky@bellini.harvard.edu> poinformował mnie o kłopotach podczas archiwizowania 1GB danych za pomocą tapera.

HP Colorado T1000

działa z taśmami 3M Travan 400M (TR-1) 120M. Zgłoszono już kilkukrotnie, że mt zawiesza się, ale działa z archiwami utworzonymi przez tar. Jeśli chcesz posługiwać się cpio, korzystaj raczej z ftape a nie z zftape. (<millner@millner.bevc.blacksburg.va.us>)

Wiele osób miało problemy z zftape - napęd ciągle zatrzymywał się i wznawiał pracę (<75104.1756@compuserve.com>). Wydaje się, że winny jest napęd, który zbyt szybko czyta dane i komputer gubi je; bufory DMA są opróżniane zanim zdążą się zapełnić. Rozwiązanie jest tu proste - użyć nowszej wersji zftape albo stosować większe bufory DMA. (<millner@millner.bevc.blacksburg.va.us>).

Conner C250MQ(T)

Napęd ten zgłasza błedy zapisu i często repozycjonuje taśmę (Frank Stuess z Nacamar Data Communications).

Conner TSM420R, TSM850R

Modele 400 i 800 współpracują tylko z taśmami TR-1.

Conner TST3200R

Pracuje z taśmami TR-3 (tzn. tylko pojemność 1600MB) przy prędkości 1Mbps. Współpracuje też z QIC-WIDE 400m (Sony 5122?) (<chris@cs.wmich.edu>). Obsługuje też taśmy TR-3, QIC-3010 oraz QIC-3020. Napęd dostarczany jest z kontrolerem FDC z 2MB RAMU na pokładzie.

Prawdopodobnie współpracuje z ftape 2.05 jeśli podłączony jest do szybkiego kontrolera (żeby móc korzystać z QIC-3020). Niektórzy nie mogą odczytywać rzadkich dyskietek. Prawdopodobnie trzeba grzebać w IRQ/portach/DMA (<chris@yakkocs.wmich.edu>).

Conner TST800R

Działą z taśmami TR-1, Sony QW5122F (210m) i DC2120. Ponoć pracuje z ftape 2.02e (ale nie 2.03b) oraz z v2.05 (<khp@pip.dknet.dk>). Wymaga patcha ''the length patch''. Zgłoszono mi, że możesz potrzebować zmodyfikować Makefile żeby upewnić się, że ftape odwołuje się do pierwszego (PRIMARY) kontrolera dyskietek (<jzc@primenet.com>). Pojawia się także błąd "Timer expired" gdy używane są taśmy TR-1 i ftape 2.05-2.07) (<les@amc.uva.nl>).

Conner CTT3200

CTT3200 jest przypuszczalnie odpowiednikiem Iomega Ditto 3200. Działa z dołączonym kontrolerem 2Mbps ale przy szybkości 1Mbps. Na niektórych maszynach nie działa pod DOSem (<jmorris@dtx.net>).

Conner 1.7G Tapestor (TSM1700R)

Działa z nośnikami QIC-WIDE (<pschmidt@slip.net>). Częściowo także z QIS-3200. Jeśli używasz kontrolera HSC-2, musisz zmienić numer kanału DMA (zwiększyć o 1, kanał 2? - w Makefile). Potem musisz zmodyfikować plik Makefile ftape'a, żeby ten uwzględnił zmiany. Jednak, nawet z tymi poprawkami ftape nie działa do końca poprawnie (co to znaczy flaky???) (<ttait@tiac.net>). Kontroler HSC może nie działać w trybie 2Mbps - wyświetlany jest tylko komunikat "dumb tape stop" i koniec. (<ttait@tiac.net>).

Escom or Archive (Hornet) 31250Q

Exabyte EXB-1500

Działa z taśmami QIC-3010, wymaga jednak łatki (,,the length patch'').

Exabyte TR-3

Irwin 80SX, Insight 80Mb

Iomega 250

Iomega Ditto Tape Insider 420, 1700

Iomega Ditto Tape Insider 3200

Właśnie tego streamera używam. Z mojego doświadczenia wiem, że standardowe ustawienie jumperów uniemożliwia poprawne działanie napędu. Numer irq i ioport pozostaw bez zmian (odpowiednio 6 i 0x370) ale zmień DMA z 3 na 2.

W starszych wersjach ftape trzeba dodać następującą linię do pliku vendors.h: {0x08882, 80, wake_up_colorado, "Iomega 3200"}

Problemy występują także z ftape v2.07 i jądrem 1.12.13. Jakiegokolwiek akceleratora by nie używać, na niektórych komputerach, napęd może być użyty tylko raz (<erwin@box.nl>). Czasami, także po pierwszym zapisie/odczycie, sterownik uznaje taśmę za zabezpieczoną przed zapisem (<erwin@box.nl>, <M.J.Ammerlaan@dutiwy.twi.tudelft.nl>). Zgłoszono raz wypadek przewinięcia taśmy poza swój koniec (czyli urwania jej...). Na inny błąd natrafiono podczas tworzenia archiwum komendą dd. Na początku działa poprawnie ale potem streamer zatrzymuje się, przewija taśmę do początku i zaczyna czytać aż do końca taśmy. Dzieje się tak najprawdopodobniej dlatego, że sterownik zatrzymuje taśmę na chwilę, co powinno spowodować przewinięcie jej o 3 segmenty w tył, ale zamiast tego taśma przewija się do początku. Patch, który miał naprawić te błędy niestety nie działa.

Iomega Ditto 800 Insider

Można używać taśm Travan TR1, TR2 albo DC2120, ale trzeba użyć łatki ,,the length patch''

(<klein@informatik.uni-rostock.de>).

Mountain FS8000

Reveal TB1400

Zgłoszono, że nie działa z jądrem 1.3.79 i ftape (nie podano numeru wersji) oraz jądrem 1.2.13 i zftape 1.04 (<colin@colina.demon.co.uk>).

Summit SE 150, SE 250

Tallgrass FS300

Jeśli twój kontroler to AHA1542B, musisz zwiększyć jego czas bus-on/bus-off. Antti Virjo (<klanvi@uta.fi>), pisze, że można tego dokonać zmieniając CMD_BUSON_TIME w pliku linux/drivers/scsi/aha1542.c z 4 na 12.

Teac 800

Memorex tape drive backup system

Wangtek 3040F, 3080F

W pliku vendors.h (katalog linux/drivers/char/ftape) znajduje się aktualna lista urządzeń obsługiwanych przez daną wersję ftape'a.

Jeśli chodzi o dobór sprzętu, to chociaż nie chciałbym tu specjalnie krytykować kontretnych urządzeń, doszły mnie słuchy, że Colorado Dj-20 (czyli Jumbo 250 - mój sprzęt! - tłumacz) jest raczej hałaśliwy (jak Jumbo Jet, ale co z tego? :( ). Mówi się, że nawet 5-10 razy głośniejszy od Connera (jakby to hałas miał jakikolwiek wpływ na dane - po prostu nie robić backupów w nocy i po kłopocie :).

UWAGA: Jeśli posiadasz sprzęt nie wymieniony na tej liście (albo vendors.h) , który mimo to dobrze współpracuje z ftape'm zgłoś ten fakt autorowi HOWTO (<kjj@pobox.com>).

5.5 kontrolery współpracujące z ftape

ftape obsługuje następujące specjalne kontrolery :

Obsługę kontrolera FC-10 włączono do ftape'a w wersji 1.12. Więcej informacji można znaleźć w plikach RELEASE-NOTES i Makefile w pakiecie ftape. Wersje 2.03 sterownika powinny obsługiwać już FC-20, ale dla pewności sprawdź w RELEASE-NOTES.

MACH-2 działa ze sterownikiem w wersji 1.14d wzwyż.

Aby móc korzystać z Iomega Tape Accelerator II, musisz użyć -DMACH2 (Makefile) oraz ustawić poprawne adresy I/O, IRQ oraz DMA. Będzie to działać przynajmniej z ftape-2.02 (wypróbowane przez Scott'a Bailey'a <sbailey@xcc.mc.xerox.com>)

Iomega Ditto Dash i inne kontrolery 2Mbps

Iomega Ditto Dash i inne kontrolery z możliwością transferu 2mbps używają układu Intel 82078-1. Obsługa tego układu jest cały czas w fazie rozwoju. Prace mają być zakończone w styczniu lub lutym '97 (czyli już dawno temu). Na razie jednak kontroler ten działa z normalną prędkością 1Mbps.

5.6 Napędy nie współpracujące z ftape

Jak już wcześniej wspomniałem WSZYSTKIE napędy podłączane do LPT nie są obsługiwane (a ja już wcześniej zauważyłem, że to się zmieniło ;) - tłumacz). Jest to spowodowane tym, że używają one innego sposobu komunikowania się z komputerem, który nie jest zgodny z QIC-117.

Irwin AX250L oraz IBM Internal Tape Backup Unit nie współpracują z ftape'm ponieważ są zgodne jedynie z QIC-117 ale nie z QIC-80 (używają własnego formatu (''servo (Rhomat)''). Nie wiem niestety nic o tym formacie ani gdzie można zdobyć jakieś informacje o nim.

COREtape light nie reaguje na komendy inicjujące, wysyłane przez sterownik, co czyni ten napęd bezużytecznym.

Iomega 2GB Ditto także nie działa z ftape'm, ponieważ używa własnego formatu, na temat którego Claus (zarządzający ftape) nie mógł uzyskać żadnych informacji.

5.7 Współpraca zewnętrznego streamera z ftape'm

Jeśli masz kontroler FDC, posiadający żeńskie łącze DB37 i masz możliwość dostarczenia zasilania do streamera, możesz używać go z ftape'm. Dobra, nie jest to zbyt zrozumiałe. Spróbujmy inaczej. Niektóre starsze kontrolery FDC mają złącze DB37 na krawędzi, służące do podłączania zewnętrznych stacji dysków.

Jeśli zaopatrzysz się w odpowiedni kabel podłączany do tego wejścia (czytaj: sam sobie go zrobisz), możesz zmusić ftape'a do obsługi twojego tasiemca. Sterownik nie rozróżnia bowiem zewnętrznych i wewnętrznych urządzeń. I dlatego dla niego oba warianty są identyczne.

UWAGA!! - dostępny jest już patch parport, który umożliwia obsługę urządzeń podłączanych do LPT (nie tylko streamerów) oraz patch obsługujący Trakkera (patrz punkt Od tłumacza).

Wtyczka zasilania to ta mała, taka jak w stacji 3,5". Musisz taką wtyczkę podłączyć do gniazda DB37. Jeśli chcesz użyć tylko jednego kable, możesz użyć 50 żyłowego i użyć kilku połączeń dla zasilania (i uziemienia).

Dotychczas nikt nie zgłosił mi, że takie coś działa. Jeśli tobie się uda pisz!

5.8 Płyty główne PCI i ftape

Niestety, niektóre płyty główne stwarzają problemy podczas używania ftape'a. Niektórzy mieli kłopoty z odpaleniem ftape'a na płycie PCI, a na zwykłęj 386-ce z ISA program chodził bez problemów (z tym samym streamerem). Jeśli ty także masz podobny problem, przejrzyj plik README.PCI w katalogu ftape'a.

6. Archiwizowanie i odtwarzanie danych

Punkt ten opisuje niektóre funkcje tar i mt.

6.1 Archiwizowanie

Do tego celu służą tar, dd, cpio, oraz afio. Jednak aby móc w pełni wykorzystać możliwości swojej zabawki będziesz musiał użyć komendy mt. Na początek radzę poznać tar, ponieważ za jego pomocą można zarchiwizować całe drzewo katalogów oraz odtworzyć pojedyncze pliki. cpio tworzy mniejsze archiwa, jest bardziej elastyczny od tar'a, chociaż nie ma niektórych opcji, jak np nadawanie nazw woluminom. afio tworzy archiwa, w których każdy plik jest spakowany a następnie dołączony do archiwum. To pozwala odzyskać pliki znajdujące się za miejscem wystąpienia błędu (np uszkodzania nośnika). Jeśli takie archiwum utworzone byłoby tar'em i gzip'em wszystkie dane znajdujące sie za tym miejscem zostałyby utracone! (Dla mnie jest to dobry powód, żeby nie kompresować danych przy archiwizacji). Wybór metody archiwizacji zależy od sytuacji oraz zalet i wad każdego z tych programów. Polecam zapoznać się z każdym z nich i samemu ocenić ich walory. Możliwe jest, że w przyszłości dokument ten zawierać będzie więcej informacji na ten temat.

No to bierzmy się do roboty!

Aby zachować katalog /usr/src/linux wraz z podkatalogami używając tar'a trzeba wydać polecenia:

        # cd /usr/src
        # tar cf /dev/ftape linux

Tą metodą dane zostaną zapisane bez kompresji, ale komputer będzie mógł nadążyć z dostarczeniem danych do streamera (Taśma nie będzie co chwila przewijana w tę i spowrotem). Jeśli chcesz skompresować dane użyj parametr(*) -z, np:

`tar czf /dev/ftape linux'

Więcej informacji o tar, dd i mt można znaleźć na stronach poręcznika (man pages) i w plikach texinfo dołączonych do tych programów.

(*) tar zakłada, że piersze parametr jest opcją/parametrem programu, nie trzeba więc używać `-'. Na przykład komendy `tar xzf /dev/ftape' oraz `tar -xzf /dev/ftape' są interpretowane identycznie.

6.2 Odtwarzanie danych

Dobra, teraz odtworzymy dane zapisane w poprzednim punkcie ( Archiwizowanie). Wpisz:

        tar xf /dev/ftape

i to wszystko...

Jeśli skompresowałeś dane, napisz:

        tar xzf /dev/ftape

Na samym końcy archiwum gzip najprawdopodobniej uraczy cię komunikatem o jakichś smieciach (co zakończy się komunikatem 'broken pipe' - tu urwane archiwum). Zignoruj to.

Informacje o innych narzędziach znajdziesz na stronach podręcznika.

6.3 Weryfikacja archiwum

tar posiada opcję d która umożliwia wykrycie różnic między archiwum na taśmie i plikami na dysku. Żeby zweryfikować poprawność zapisanych danych napisz:

        tar df /dev/ftape

Jeśli nie masz na swoim dysku strony podręcznika do tar, to listę opcji możesz otrzymać pisząc: `tar --help 2>&1 | less'

6.4 Zapisywanie kilku(nastu) archiwów na jednej taśmie

Żeby umieścić kilka archiwów na jednej taśmie musisz użyć programu mt. Jeśli używasz, którejś z popularnych dystrybucji (Slackware, Debian albo RedHat) najprawdopodobniej maż już go zainstalowanego.

Programy takie jak tar and cpio tworzą pojedyncze Taśmowe ARchiwum i nie mają bladego pojęcia o pozycjonowaniu taśmy (odnajdywaniu konkretnego archiwum na taśmie), one po prostu czytają albo zapisują co im się pod głowice napatoczy. mt potrafi przewijać taśmę do przodu i do tyłu ale nie umie czytać danych. Jak już pewnie zauważyłeś umiejętne posługiwanie się tar'em lub cpio oraz mt pozwoli na swobodne przemieszczanie się po taśmie i pełną nad nią kontrolę.

Aby skorzystać z dobrodziejstw mt musisz korzystać z pseudo-plików urządzeń nrft[0-3] (nftape), np: mt -f /dev/nftape fsf 2 spowoduje przesunięcie taśmy o dwa pliki (file marks) do przodu (pliki utworzone przez np tar'a). Potem używając tar'a lub cpio odczytujemy interesujące nas pliki.

Najczęściej pliki nrft[0-3] (tzw non-rewinding - czyli takie, które nie powodują przewinięcia taśmy automatycznie do początku po każdej zakończonej operacji) używane są do dołączaniam nowego pliku na końcu taśmy. A oto konkretny przykład:

6.5 Dołączanie nowych plików do archiwum

,,Czy można rozszerzać archiwum - utworzyć je a poźniej dołączać pliki na jego końcu?''

Nie. Chociaż w dokumentacji tar'a stoi jak byk, że za pomocą tar -Ar' można tego dokonać, z ftape'm to nie działa (przynajmniej na razie).

6.6 Montowanie/demontowanie (mount/umount) taśm

Jako, że streamer nie tworzy żadnego formalnego systemu plików (file system) na taśmie, nie można używać komendy mount/umount. Operacji na zawartości nośnika dokonuje się tylko przy użyciu tar'a albo innego programu przeznaczonego do obsługi streamera.

7. Tworzenie dyskietki systemowej (startowej) dla ftape

Niniejszy rozdział zostałnapisany przez Clausa Tøndering <ct@login.dknet.dk>.

Kiedy już zostaniesz szczęśliwym właścicielem streamera i całej kolekcji tasiemek z kopiami bezpieczeństwa zapytasz się pewnie: ,,Jeśli cały dysk twardy szlag weźmie i stracę wszystkie dane, w jaki sposób odtworzę zawartość moich taśm?''

Będziesz potrzebował zapasowej dyskietki startowej, zawierającej odpowiednie pliki (/dev/*rft*) oraz oprogramowania umożliwiających odtworzenie twojego twardziela z taśm.

Pierwszą rzeczą, którą powinieneś zrobić zanim zaczniesz czytać dalej jest zapoznanie się ,,Bootdisk HOWTO'' napisanym przez Grahama Chapmana <grahamc@zeta.org.au>. Dokument ten zawiera wszystkie przydatne informacje na temat tworzenia dyskietek systemowych. Poniższy tekst zawiera kilka dodatkowych wskazówek, które ułatwią ci pracę z Bootdisk-HOWTO.

8. Często zadawane pytania (FAQ)

Poniżej przytoczone zostały pytania, które mogą zostać potraktowane jako FAQ. Jeśli uważasz, że poniższa lista powinna zostać rozszerzona, napisz do mnie (dołącz odpowiedzi na zadane pytania :) dzięki! )

8.1 Czy ftape współpracuje z Iomega 2GB?

Niestety, nie. Iomega używa własnego formatu zapisu na swoich taśmach, niezgodnego z QIC. Administrator ftape'a nie mógł uzyskać dokumentacji tego formatu od producenta.

8.2 Jak szybki jest ftape?

Używając ftape'a można osiągnąć całkiem przyzwoite prędkości zapisu/odczytu. Oczywiście wszystko zależy od sprzętu: Colorado DJ-20 (Jumbo 250) oraz kontroler Adaptec 1542CF, weryfikując 70MB archiwum utrzymywał stałą prędkość transferu danych na poziomie 4.25MB/min (bez kompresji). Prędkość ftape'a zależy głównie od możliwości kontrolera FDC: AHA1542CD posiada kontroler ''post-1991 82077'' i może przesyłać dane z szybkością 1Mbit/sek. Jeśli twój FDC może przesyłać tylko 500Kbit/sek wydajność twojego systemu będzie prawdopodobnie o około połowę mniejsza.

8.3 Jak zmienia się ,,trace-level''?

,,Trace level'' (poziom śledzenia) lub ,tracing'' jest to parametr mówiący sterownikowi ile (i jakie) informacje o pracy napędu przekazywać na konsolę.

Poszczególne wartości tego parametru mają następujące znaczenie:

Wartość tego parametru można zmienić na trzy sposoby:

Sposób 1. insmod

Jeśli twój ftape jest modułem, możesz zdefiniować poziom jako opcję tej komendy.

         /sbin/insmod ftape.o tracing=<poziom-śledzenia>

Sposób 2. Zmiana ,,trace-level'' przy pomocy mt

Poziom śledzenia można także zmienić stosując małą ,,sztuczkę''. Wykorzystując komendę fsr programu mt możemy zmienić ten poziom. zftape niestety nie reaguje na to.

        mt -f /dev/ftape fsr <poziom-śledzenia>

Stosowanie komendy fsr jest nieformalną metodą zmiany poziomu śledzenia. W przyszłości najprawdopodobniej niemożliwe będzie użycie jej.

Sposób 3. Rekompilacja sterownika

Plik tracing.c zawiera linię int tracing=3; - tutaj właśnie zdefiniowana jest domyślna wartość ,,tracingu''. Zmień 3 na 0..8 i skompiluj.

8.4 Czy mogę wymieniać taśmy z kimś, kto używa MS-DOS?

Nie. Chociaż programy DOS'owskie stosują się do wszystkich zaleceń firmy QIC jeśli chodzi o specyfikację QIC-80, nie ma jeszcze programów, które pozwalałyby stosować taśmy nagrane w DOS'ie. Nie powinno być kłopotów z napisaniem takiego programu, pewnie większym problemem byłoby stworzenie przyjaznego interface'u użytkownika...

8.5 Jak to zrobić ... z tar'em?

Najlepiej przeczytać strony podręcznika (man) albo info dotyczące tar'a. Jeśli nie masz żadnej z nich, możesz spróbować 'tar --help 2>&1 | less'.

Jeśli twój tar jest v.1.11.1 albo starszy, powinieneś uaktualnić go do wersji 1.11.8. Dopiero ta obsługuje opcję -z czyli kompresję archiwum. Wersja ta ma także rozbudowaną pomoc (--help).

8.6 Transfer danych przez DMA powoduje pojawianie się błędów ECC

Niestety niektóre karty SVGA oraz Ethernet niepoprawnie dekodują swoje adresy. Zazwyczaj zdarza się to, gdy bufory ftape'a znajdują się pomiędzy 0x1a0000 a 0x1c0000. DMA ,,gubi'' swoje cykle i co drugi bajt zapisany ma wartość 0xff. Znana jest co najmniej jedna karta, która takie problemy powoduje - ATI 16bit VGA.

Najprostszym rozwiązaniem jest włożyć kartę do 8-bitowego slotu (niewystarcza przekofigurować jej na 8-bitowy transfer danych). Przesunięcie buforów ftape'a w inne miejsce pamięci jest tylko półśrodkiem - inne bufory DMA mogą mieć ten sam problem. Powiedzmy sobie jasno - błędy te nie są zawinione przez ftape'a.

8.7 insmod twierdzi, że wersja jądra jest błędna!

insmod może porównywać nr wersji jądra dla którego ftape'a został skompilowany z wersja aktualnie działającego jądra na dwa sposoby: przez porównanie numeru wersji jądra zapisanego w kodzie sterownika z nr działającego jądra albo, jeśli jądro i ftape zostały skompilowane z tzw ,,versioned symbols'' przez porównanie tych symboli.

Jeśli uaktualniłeś GCC do wersji 2.7.0 lub późniejszej, musisz skompilować narzędzia obsługujące moduły (m.in : insmod) jeszcze raz.

Nowsze wersje insmod pozwalają ,,zmusić'' jądro do załadowania modułu nawet, jeśli wcześniej wspomniane numery wersji się nie zgadzają.

8.8 Co to są te ,,versioned symbols''?

Jeśli podczas konfigurowania jądra (make config) na pytanie CONFIG_MODVERSIONS odpowiedziałeś twierdząco, wszystkie symbole jądra, które są eksportowane (tzn symbole, które ładowalne moduły ,,widzą'') są poszerzone o sumę kontrolną parametrów wywołania oraz tych zwracanych przez funkcje systemowe. Pozwala to np insmod'owi ustalić, czy definicja danej zmiennej albo funkcji jądra zmieniła się od czasu ostatniej kompilacji ftape'a.

Ten sposób ,,znakowania'' symboli sprzyja bezpieczeństwu systemu i weryfikacji kompatybilności poszczególnych jego składników.

Jeśli włączysz opcję CONFIG_MODVERSIONS w jądrze, pamiętaj aby wykasować znak '#' w linii MODULE_OPT znajdujący się przed `-DMODVERSIONS -include /usr/include/linux/modversions.h' w pliku ftapeMakefile. I na odwrót, jeśli wyłączysz tę opcję wstaw ten znak (# - znak komentarza) na powrót.

8.9 insmod mówi, że jądro 1.2.0 różni się od 1.2.0

Czy wstawiłeś łatkę (patch) jądra dotyczącą ksyms.c? Jeśli nie przeczytaj README.linux-1.2 dostarczany razem ze źródłem sterownika.

8.10 ftape wyświetla komunikat ,,This tape has no 'Linux raw format'''

Komunikat taki przywita cię, gdy próbujesz bawić się niewykasowaną, świeżo sformatowaną taśmą. Trzeba ją skasować, ponieważ ftape wymaga ,,magicznego nagłówka'' na taśmie, który pozwala sterownikowi posługiwać się nią. Wpisz:

#  mt -f /dev/nftape erase

8.11 Gdzie mogę znaleźć binaria/kody źródłowe/strony podręcznika programówtar/mt/cpio/dd?

Wszystkie te narzędzia są tworzone jako projekt GNU i można je znaleźć prawie na każdym serwerze ftp, (więc także na ftp.icm.edu.pl, ftp.pwr.wroc.pl). Na pewno zaś można je znaleźć na serwerze GNU : prep.ai.mit.edu[18.71.0.38]:/pub/gnu. Najnowsze wersje tych programów (na dzień 12 września 1996) to:

        cpio:   2.4.2 (cpio-2.4.2.tar.gz)
        dd:     3.13 (fileutils-3.13.tar.gz)
        mt:     2.4.2 (cpio-2.4.2.tar.gz)
        tar:    1.11.8 (tar-1.11.8.tar.gz)
        gzip:   1.2.4 (gzip-1.2.4.tar.gz)

Mogą być one skompilowane bez problemu w Linuxie v1.0.4, libc - v4.5.19, gcc - v2.5.8.

8.12 Gdzie można znaleźć informacje na temat standardu QIC?

Jeśli chcesz przyczynić się do rozwoju ftape'a lub stworzyć własne narzędzia (na przykład program do formatowania taśm) będziesz musiał zapoznać się z odpowiednimi specyfikacjami QIC. Dokumenty, w które powinieneś się zaopatrzyć, to: opis standardu QIC-80, -117, 3010 i 3020. QIC-117 dotyczy obsługi napędu na niskim poziomie - sposób komunikowania się z urządzeniem - nie będziesz więc go prawdopodobnie potrzebować. QIC-80/3010/3020 dotyczą ,,wyższego'' poziomu działania streamera (zawierają m.in. kody ECC, sposób zapisu samych plików na taśmie). Wszystkie te dokumenty można otrzymać od samej firmy:

Quarter Inch Cartridge Drive Standards, Inc.
311 East Carrillo Street
Santa Barbara, California 93101
Phone: (805) 963-3853
Fax:   (805) 962-1541

lub ściągając odpowiednie dokumenty (format Adobe Acrobat) z adresu

ftp.qic.org

8.13 Jaką wielkość bloku powinienem stosować używając tar'a?

Używając tar'a, dobrym pomysłem jest nakłonienie go do dzielenia danych archiwizowanych na części. Ponieważ ftape tnie archiwa na 29 kilobajtowe bloki, opcja -b58' powinna zapewnić sprawne działanie.

,,Dlaczego akurat 29kB?'' zapytasz pewnie? Zacznijmy więc od początku. Standard QIC-80 mówi, że dane powinny być chronione przez Error Correcting Code (ECC), który pozwala na detekcję i korektę ewentualnych błędów odczytu . Odmiana tego kodu stosowana przez QIC-80 znana jest pod nazwą Reed-Solomon (R-S) code. Zgodnie z jego zaleceniami ftape czyta 29 bajtów danych i na ich podstawie i tworzy 3 bajty parzystości. Aby zwiększyć wydajność kodu ECC, bajty parzystości zapisywane są zaraz po 29-ciu 1-kilobajtowych sektorów danych. ftape zapisuje więc 29kB danych plus 3 kB kodów ECC (29kB * 3b/29b) - co daje w sumie blok 32kB. ftape zawsze posługuje się 32kB blokami, z których tylko 29kB to dane a reszta to dane ECC.

Jeśli chcesz dowiedzieć się więcej na temat ECC i Red-Solomon codes przejrzyj pliki ecc.c oraz ecc.h.

8.14 ftape wykrywa więcej błędnych sektorów na taśmach QIC-3020 niż programy w DOS'ie

Jeśli dokładnie przyjrzysz się różnicy w ilości błędnych sektorów, to zauważysz, że jest ona równa 2784. Liczba, którą podaje ftape jest oczywiście poprawna ;-). Każda ''bezbłędnie'' sformatowana taśma ma 2784 sektory w stałych miejscach, które są umieszczone na mapie błędnych sektorów. Oto fragment specyfikacji dotyczących tych taśm: ''Ścieżki 5,7,9,11,13,15,17,19,21,23,25 i 27 wewnątrz 4 segmentów EOT lub BOT narażone są na zwiększone występowanie błędów spowodowanych odciskaniem się na nośniku otworów znajdujących się na początku taśmy (dzięki nim streamer wie, gdzie jest początek taśmy -tłumacz). Dlatego też, sektory te zostaną odznaczone jako błędne podczas formatowania i umieszczone na mapie błędnych sektorów.''

Daje to więc 12 ścieżek * 2 * 4 segmenty *29 sektorów = 2784 sektorów.

ftape podaje więc prawdziwą ilość sektorów wyłączonych z użycia, DOS zaś daje bardziej ,,optymistyczny'' obraz sytuacji, co lepiej chyba pokazuje jakość taśmy. Zachowanie ftape'a może zmienić się w przyszłości - być może podawane będą dwie wartości ilości błędnych sektorów, jednak zadanie to ma stosunkowo niski priorytet.

Powyższe informacje dotyczą także taśm QIC-3010.

8.15 Syslogd przesadza z ilością komunikatów ftape'a

Opcje NO_TRACE i NO_TRACE_AT_ALL służą do kontrolowania ilości informacji przekazywanych do pliku log'u. Użyj jednej z tych opcji w plik Makefile i skompiluj jeszcze raz.

8.16 ,,Polerowanie''

,,Polerowanie'' to nieskończone przewijanie po kawałeczku taśmy w przód i w tył - tak jakby streamer chciał wypolerować i tak już błyszczącą taśmę. To niecodzienne zjawisko zostało zaobserwowane na Jumbo 250 (przez 74404.3051@compuserve.com) oraz na Iomega 250 Ditto Insider (tom@opus.cais.com). W drugim przypadku okazało się, że to wina twardziela SCSI podłączonego do Adapteca 1542cf. Skontaktuj się ze mną jeśli masz swoje własne teorie na temat takiego zachowania.

8.17 Próbując skompilować ftape otrzymuję błąd: modversions.h: no such file or directory

Plik modversions.h jest tworzony podczas kompilacji jądra z włączoną opcją CONFIG_MODVERSIONS. Dokładniej, komenda make dep powoduje jego utworzenie.

Jeśli występuje w/w błąd, to prawdopodobnie zbiór ten został skasowany poleceniem make mrproper. Trzeba więc rekonfigurować jądro, i wykonać make dep aby przywrócić ów plik.

8.18 Co robi 'mt eom' jeśli nadpisuję nowy plik w środku taśmy?

EOM znaczy End Of Recorded Media - czyli miejscę w którym kończy się jakikolwiek zapis na taśmie.

,,Pliki'' na taśmie są specyficznym rodzajem plików - są one zapisywane sekwencyjnie (gęsiego) i taki jest też do nich dostęp. Zapisując dane na taśmie możemy dołączać nowy plik na końcu gąśiennicy lub też uciąć ją w połowie i wyrzucając ogon dokleić nasze nowe archiwum. Ten drugi przypadek zachodzi właśnie wtedy gdy zapisujemy dane w środku zapisanej taśmy. ftape przed utworzeniem takiego archiwum kasuje (!) wszystkie pliki następujące po miejscu, w którym chcemy pisać (przenosi znak EOM w to miejsce) i zaczyna archiwizować.

Oznacza to, że nowy znak EOM znajdzie się zaraz za naszym nowo utworzonym archiwum.

Jedną z konsekwencji tego, jest fakt, że zapisując plik w środku taśmy, zostaje skasowany nie tylko zbiór znajdujący się wcześniej w tym miejscu ale także wszystkie po nim następujące.

8.19 Help! W pliku syslogu system raczy mnie komunikatem dmaalloc() failed!

Taki komunikat może pojawić się tylko wtedy, gdy instalujesz ftape'a jako moduł. Spróbuj uruchomić swapout na początek. Program ten dostarczany jest razem z kodem źródłowym ftape'a ale nie tym dostarczanym ze źródłami jądra, lecz w osobnym pakiecie ftape.X.y.tgz.

Oto przykład fragmentu pliku rc.local, który może wybawić cię z kłopotu:

        # Instaluj Streamera
        if [ -f /boot/modules/`uname -r`/misc/ftape.o ]; then
            echo Instaluję ftape'a, Linux w.`uname -r`
            swapout
            insmod /boot/modules/`uname -r`/misc/ftape.o
        fi

Tego rodzaju błąd nie wystąpi, jeśli wkompilujesz ftape'a bezpośrednio w jądro.

8.20 Czy wszysko jest w porządku, gdy wykonując komendę mt fsf, mt bsf taśma się nie przesuwa?

Oczywiście. Sterownik po prostu zmienia swój wewnętrzny licznik, gdy wydajesz jedną z tych komend. Taśma zostanie przewinięta w odpowiednie miejsce, kiedy wydasz polecenie zapisu/odczytu.

9. Odpluskwianie sterownika ftape.

9.1 Jądro/ftape zawiesza się gdy ..... - czy to błąd?

Nie, tak miało być ;‐)

A teraz poważnie. Dobry program się nie wiesza. Szczególnie jądro tego nie robi lub nie powinno tego robić. Jeśli jednak tak się stanie i możesz udowodnić, że to ftape jest winowajcą, możesz uznać to jako Błąd, Który Powinien Być Usunięty. Napisz do administratora (<kjj@pobox.com>) oraz na listę dyskusyjną.

9.2 No dobra, to błąd - jak go zgłośić?

Na początek, upewnij się, że możesz odtworzyć sytuację w której wystąpił ,,błąd''. Fałszywe błędy są szczególnie wredne, bo bardzo trudno je wytropić (podobnie jak i prawdziwe):-/. Oto krótka lista małego myśliwego:

Zwiększ wartość ,,trace level'' do 7 (prawie maksymalny poziom śledzenia) i uruchom program/komendę które sprawiały kłopot. Potem przeczytaj informacje zawarte w logu jądra (lub /proc/kmsg/ zależnie od tego gdzie jądro umieszcza swoje komunikaty). Sprawdź, co wypisuje tam ftape. Na początku może to się wydawać kompletnym bełkotem ale komunikaty jądra/ftape'a mogą okazać się ważnym źródłem informacji o twoich problemach. Większość zapisów zawiera nazwę funkcji, która go wysłała, co może uprościć znacznie odpluskwianie. Następnie przejrzyj odpowiednie pliki źródłowe i spróbuj sam zlokalizować robaka ;-). Jeśli wersja twojego jądra (lub ftape'a) jest nie pierwszej świeżości spróbuj użyć nowszej (lub najnowszej) i wtedy sprawdź czy błąd jeszcze występuje. Jeśli zdecydujesz się przesłać informacje o nim, pamiętaj, żeby umieścić istotne informacje o twoim systemie - wersje jądra, ftape'a, dane płycty głównej (ISA/PCI/....) szybkości zegara, kontrolera FDC i samego tasiemca. Opisz dokładnie i zwięźle sytuację. Niektórzy nie mogą odpalić streamera na płytach PCI a na 396DX ISA wszystko gra i buczy (dlatego przyglądnij się dokładnie punktowi Płyty główne PCI i ftape).

Pomyśl także o tych biednych duszyczkach, które płacą niemało kapuchy za dostęp do Internetu - nie wysyłaj potężnych logów sterownika bez wyraźnego powodu. Zamiast tego opisz swój problem i zaoferuj, że wyślesz log do zainteresowanych.

Swoje spostrzeżenia/raport wyślij do <linux-tape@vger.rutgers.edu>. Możesz także napisać do <claus@momo.math.rwth-aachen.de>.

10. Podziękowania

Oto lista ludzi, którzy przyczynili się do powstania niniejszego dokumentu. Chciałbym także przeprosić tych, którzy powinni się znaleźć na niej a jakimś trafem tak się nie stało.

Kai Harrekilde-Petersen <khp@dolphinics.no>: Poprzedni administrator ftape'a oraz HOWTO.

Andrew Martin <martin@biochemistry.ucl.ac.uk>: Wniósł wiele dodatkowych informacji w HOWTO.

Bas Laarhoven <bas@vimec.nl>: Autor ftape'a.

11. Od tłumacza

11.1 Obsługa napędów podłączanych do portu równoległego

W oryginalnej wersji Ftape-HOWTO autor nie zamieścił informacji na temat możliwości obsługi streamerów podłączanych do portu równoległego. Wkrótce jednak, mam nadzieję, zostanie zapełniona ta luka i będzie o tym można przeczytać w niniejszym Ftape-HOWTO.

Ze swojej strony mogę dodać, że jest już dostępna łatka na jądro (2.0.29 i 2.0.30 oraz w wersjach rozwojowych 2.1.xx) parport, która pozwala na obsługę urządzeń podłączanych do portu równoległego - nie tylko streamerów. Jedyny znany mi model stremaera działający z tą łatką to Trakker. Bezpośrednią obsługą tego urządzenia zajmuje się druga, osobna łatka.

Miałem przyjemność pracować z owymi ,,nowościami'' oraz Trakkerem i moje wrażenia są co najmniej pozytywne. Chociaż ,,testowałem'' dość wczesną wersję trakker.c i na początku streamer nie chciał w ogóle odpalić, wkrótce otrzymałem poprawioną wersję źródła i mogłem już tworzyć pierwsze archiwa.

Więcej informacji o łatce parport można znaleźć na stronie http://www.cyberelk.demon.co.uk/parport.html. Informacje o łatce dla Trakkera są na stronie http://www.informatik.uni-oldenburg.de/~delwi/trakker.html

Jeśli znasz inne urządzenia współpracujące z parport'em, daj mi znać yacoob@manager.ae.wroc.pl. Dzięki!

11.2 Słowo o Ftape-HOWTO-pl

Zmiany

Jedyne zmiany w stosunku do oryginalnego tekstu, dotyczą adresów internetowych pod którymi można znaleźć inne dokumenty - wskazałem polskie mirrory. Inne zmiany są odznaczone w dokumencie dopiskiem tłumacz. Więcej grzechów nie pamiętam.

Adres

Najnowsze wersje niniejszego dokumentu znajdują się na stronie http://manager.ae.wroc.pl/~yacoob/ftape-HOWTO-pl.html

,,Feedback'' czyli wszelkie comments dotyczące performance

Jeśli masz jakieś uwagi/zastrzeżenia/skargi dotyczące tego dokumentu (tłumaczenia Ftape-HOWTO) podziel się nimi ze mną. Wszelkie wytknięte błędy (literówki, koślawe tłumaczenie, błędy merytoryczne) postaram się usunąć jak najszybciej.

Jakub Chmielewski yacoob@manager.ae.wroc.pl

doc-linux-pl-2002.06.14.orig/html/Hebrew-HOWTO.pl.html0100664000175000017500000006011306770264140020756 0ustar covencoven The Hebrew HOWTO

The Hebrew HOWTO

Maintained by Yair G. Rajwan, yair@hobbes.jct.ac.il
v0.4, 12 wrzesień 1995
Wersja polska: Gwidon S. Naskrent naskrent@hoth.amu.edu.pl
v1.0, wrzesień 1997


Te dokument "Często Zadawane Pytania" (FAQ) / HOWTO opisuje konfigurowanie maszyny linuxowej by używała znaków hebrajskich w systemie X-Windows oraz na Wirtualnych Konsolach (WK). Najświeższą wersję Hebrew-HOWTO uzyskać można z mojej strony WWW albo z <tt>ftp://hobbes.jct.ac.il</tt>.

1. Wstęp

Każde ustawienia językowe różne od oryginalnego amerykańskiego angielskiego mają dwa aspekty:

  1. Wyświetlanie prawidłowych znaków - dla hebrajskiego jest to standard ISO-8859-8.
  2. Odwzorowywanie klawiatury

W hebrajskim jest o wiele więcej (pisanie od prawej do lewej, geometria w X-Windows itd.), ale to HOWTO (przynajmniej pierwszy szkic) zajmuje się tylko sprawami podstawowymi.

Więcej informacji znaleźć można w różnych "narodowych" HOWTOs (German, Danish itd.) oraz w ISO-8859-1 HOWTO ( ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit FAQ-ISO-8859-1).

1.1 Zmiany

1.2 Podziękowania

To HOWTO przygotowano z pomocą całej grupy Linux-il - "Grupa Izraelskich Użytkowników Linuxa", a zwłaszcza:

Grupa Linux-il (Linux-il@hagiga.jct.ac.il)

Vlad Moseanu (vlad@actcom.co.il)

Gili Granot (gil@csc.cs.technion.ac.il)

Harvey J. Stein (hjstein@math.huji.ac.il)

Dovie Adler (dadler@hobbes.jct.ac.il)

Gavrie Philipson (gavrie@shekel.jct.ac.il)

2. Standardy reprezentacji znaków hebrajskich

2.1 ASCII

Żeby wyjaśnić raz na zawsze jedną rzecz: nie ma czegoś takiego jak ośmiobitowe ASCII. ASCII to tylko siedem bitów. Każdy ośmiobitowy kod nie jest ASCII, ale to nie znaczy że nie jest standardem. ISO-8859-8 jest standardem, ale nie [jest równoważne] ASCII. Dziękuję!

2.2 Hebrajski w DOS

Kodowanie znaków hebrajskich zaczyna się od 128 dziesiętnie (alef). Wymaga więc ono ośmiu bitów. Jest to to co ma się na EPROMach kart wideo jako czcionkę sprzętową [w Izraelu - przyp. tłum.] Wszystkie DOSowe edytory hebrajskiego używają tej tabeli (Qtext, HED itd.)

2.3 Hebrajski w ISO

Kodowanie znaków hebrajskich zaczyna się od 224 (alef). Jest to standard internetowy, międzynarodowy i faktyczny standard MS Windows i Macintoshów (Dagesh itd.)

2.4 Stary hebrajski dla PC

Jest to kodowanie ośmiobitowe i wyparte z użytku, ponieważ zajmuje zasadniczo ten sam przedział ASCII co angielskie małe litery. Najlepiej więc jest go unikać. Niemniej kiedy hebrajski w ISO utraci ósmy bit wskutek działania jakiegoś ignoranckiego unixowego mailera (tak że otrzymasz plątaninę angielskich liter dla hebrajskiej części listu zmieszaną z normalnym angielskim, odwróconym lub nie). Jeśli w liście mieszały się hebrajski i angielski, jest to przykra sytuacja, bowiem otrzymasz albo hebrajski z bałaganem, albo angielski z bałaganem...

2.5 Konwersje

Oto kilka prostych komend do konwersji z każdego standardu na inny:

DOS - ISO:      tr '\200-\232' '\340-\372' < {dos_file} > {iso_file}
ISO - DOS:      tr '\340-\372' '\200-\232' < {iso_file} > {dos_file}
OLD - DOS:      tr -z '\200-\232' < {old_Hebrew_file} > {dos_file}

UWAGA: Numery używane przez tr są w kodzie ósemkowym!

3. Wirtualne Konsole (WK)

Każda dystrybucja Slackware dostarczana jest z kbd; pakiet ten zwany jest keytbls w Slackware (dysk a4 w wersji 2.3.0 - kbd 0.90). Joel Hoffman dostarczył hebrajskie czcionki i układy klawiatury ze swojego oryginalnego pliku codepage.tar.Z. Zajrzyj do /usr/lib/kbd/consolefonts i poszukaj plików iso08.* (czcionki w standardzie ISO-8859-9, dostosowany jest do nich układ klawiatury).

Wsadź poniższe linie do /etc/rc.d/rc.local:

-----
#!/bin/sh
#       Wstaw tu swoją lokalną konfigurację
#
INITTY=/dev/tty[1-6]
PATH=/sbin:/etc:/bin:/usr/sbin:/usr/bin
#
#       kbd - Ustaw czcionkę na konsoli i układ klawiatury
#       ustaw NumLock i tryb metabitu na konsolach od /dev/tty1 do 6
for tty in $INITTY
do
#       setleds -D +num < $tty > /dev/null
        setmetamode metabit < $tty > /dev/null
done
#       ISO-8859-8 (klawiatura i konsola)
setfont iso08.f16
mapscrn trivial
loadkeys Hebrew
#       zezwól na odzworowywanie
for tty in $INITTY
do
        echo -n -e "\\033(K" >$tty
done
-----

UWAGA: Jeśli używasz X Windows bądź ostrożny używając setleds, może to spowodować zawieszenie się X-serwera.

Powyższe ustawienia działają bez zarzutu z hebrajską wersją pico i pine, i wyświetlają poprawny hebrajski w ISO-8859-8 (X Windows, MS Windows).

4. Konfiguracja X Windows - XFree86 3.1

4.1 Czcionki hebrajskie

XFree86 3.1 dostarczany jest z dwoma [bitmapowymi] czcionkami hebrajskimi: heb6x13 i heb8x13. Dodatkowe czcionki znaleźć można w sieci:

4.2 Instalacja czcionek

4.3 Zmuszenie aplikacji Xowej do używania czcionek hebrajskich

Krótko mówiąc, musisz ustawić odpowiedni zasób.

Xterm

Wstaw poniższą linię do $HOME/.Xresources:

xterm*font: heb8x13

lub po prostu uruchom xterm poprzez xterm -fn heb8x13. Powyższa czcionka jest o wiele za mała, więc poszukaj lepszej... patrz uwagi co do startu X11.

Netscape

Zwykle użyć możesz czcionek hebrajskich z snunit-project, Zainstaluj je tak jak opisano, a potem wstaw poniższe wartości domyślne do swojego lokalnego .Xdefaults, bądź do app-defaults/Netscape.

----
*documentFonts.latin1.variable.italic*slant:            r
*documentFonts.latin1.variable.boldItalic*slant:        r
*documentFonts.latin1.variable*family:                  web
*documentFonts.latin1.fixed*family:                     webmono
*documentFonts.latin1*registry:                         iso8859
*documentFonts.latin1*encoding:                         8
----

Ogólnie rzecz biorąc, możesz wstawić dowolną czcionkę zamiast powyższych tak długo jak obsługuje ją X11, tak jak opisano.

4.4 Odwzorowywanie klawiatury

Z jakiegoś powodu X-serwer nie dziedziczy układu klawiatury z poprzedniego paragrafu [tj. z konsoli - dop. tłum.], a zresztą i tak wolałbym przezdefiniować lewy Alt, prawy Alt i ScrollLock. Naciśnięcie Alt razem z jakimś klawiszem da znak hebrajski, ScrollLock zaś ustawi tryb hebrajski na stałe.

By tego dokonać użyjemy xmodmap. Poniższe jest plikiem .Xmodmap, który poprawia również błędy dotyczące klawisza NumLock.

-----
! Hebrajski układ klawiatury dla XFree86 (dla klawiatury amerykańskiej)
! Vlad Moseanu
!
keysym Alt_L = Mode_switch
keysym Alt_R = Mode_switch
!clear Mod1
clear Mod2
!add Mod1 = Alt_L
add Mod2 = Mode_switch
!
! Przyporządkuj wartości każdemu klawiszowi
!
keycode   8 =
keycode   9 = Escape
keycode  10 = 1 exclam
keycode  11 = 2 at
keycode  12 = 3 numbersign
keycode  13 = 4 dollar
keycode  14 = 5 percent
keycode  15 = 6 asciicircum
keycode  16 = 7 ampersand
keycode  17 = 8 asterisk
keycode  18 = 9 parenleft
keycode  19 = 0 parenright
keycode  20 = minus underscore
keycode  21 = equal plus
keycode  22 = Delete
keycode  23 = Tab
keycode  24 = q Q slash Q
keycode  25 = w W apostrophe W
keycode  26 = e E 0x00f7 E
keycode  27 = r R 0x00f8 R
keycode  28 = t T 0x00e0 T
keycode  29 = y Y 0x00e8 Y
keycode  30 = u U 0x00e5 U
keycode  31 = i I 0x00ef I
keycode  32 = o O 0x00ed O
keycode  33 = p P 0x00f4 P
keycode  34 = bracketleft braceleft
keycode  35 = bracketright braceright
keycode  36 = Return
keycode  37 = Control_L
keycode  38 = a A 0x00f9 A
keycode  39 = s S 0x00e3 S
keycode  40 = d D 0x00e2 D
keycode  41 = f F 0x00eb F
keycode  42 = g G 0x00f2 G
keycode  43 = h H 0x00e9 H
keycode  44 = j J 0x00e7 J
keycode  45 = k K 0x00ec K
keycode  46 = l L 0x00ea L
keycode  47 = semicolon colon 0x00f3 colon
keycode  48 = apostrophe quotedbl comma quotedbl
keycode  49 = grave asciitilde semicolon asciitilde
keycode  50 = Shift_L
keycode  51 = backslash bar
keycode  52 = z Z 0x00e6 Z
keycode  53 = x X 0x00f1 X
keycode  54 = c C 0x00e1 C
keycode  55 = v V 0x00e4 V
keycode  56 = b B 0x00f0 B
keycode  57 = n N 0x00ee N
keycode  58 = m M 0x00f6 M
keycode  59 = comma less 0x00fa less
keycode  60 = period greater 0x00f5 greater
keycode  61 = slash question period question
keycode  62 = Shift_R
keycode  63 = KP_Multiply
!keycode  64 = Alt_L Meta_L
keycode  65 = space
keycode  66 = Caps_Lock
keycode  67 = F1
keycode  68 = F2
keycode  69 = F3
keycode  70 = F4
keycode  71 = F5
keycode  72 = F6
keycode  73 = F7
keycode  74 = F8
keycode  75 = Escape
keycode  76 = F10
keycode  77 = Num_Lock
keycode  78 = Scroll_Lock
keycode  79 = KP_7
keycode  80 = KP_8
keycode  81 = KP_9
keycode  82 = KP_Subtract
keycode  83 = KP_4
keycode  84 = KP_5
keycode  85 = KP_6
keycode  86 = KP_Add
keycode  87 = KP_1
keycode  88 = KP_2
keycode  89 = KP_3
keycode  90 = KP_0
keycode  91 = KP_Decimal
keycode  92 = Sys_Req
keycode  93 =
keycode  94 =
keycode  95 = F11
keycode  96 = F12
keycode  97 = Home
keycode  98 = Up
keycode  99 = Prior
keycode 100 = Left
keycode 101 = Begin
keycode 102 = Right
keycode 103 = End
keycode 104 = Down
keycode 105 = Next
keycode 106 = Insert
keycode 107 = Delete
keycode 108 = KP_Enter
keycode 109 = Control_R
keycode 110 = Pause
keycode 111 = Print
keycode 112 = KP_Divide
!keycode 113 = Alt_R Meta_R
keycode 114 = Break
!
! Tego pliku .Xmodmap używać można dla ustawienia prawidłowej klawiatury
! numerycznej przy ustawieniu ServerNumLock w pliku XF86Config. W tym
! wypadku obsługą NumLock zajmuje się X-serwer.
!
!
keycode  136 = KP_7
keycode  137 = KP_8
keycode  138 = KP_9
keycode  139 = KP_4
keycode  140 = KP_5
keycode  141 = KP_6
keycode  142 = KP_1
keycode  143 = KP_2
keycode  144 = KP_3
keycode  145 = KP_0
keycode  146 = KP_Decimal
keycode  147 = Home
keycode  148 = Up
keycode  149 = Prior
keycode  150 = Left
keycode  151 = Begin
keycode  152 = Right
keycode  153 = End
keycode  154 = Down
keycode  155 = Next
keycode  156 = Insert
keycode  157 = Delete
-----

Aby używać powyższego .Xmodmap zdefiniuh "Scroll-Lock Mode-Lock" w XF86Config.

4.5 Składanie powyższych przykładów razem

Jeśli używasz xdm, plik $HOME/.xsession powinien wyglądać jak niżej:

-----
#!/bin/sh
# $XConsortium: Xsession,v 1.9 92/08/29 16:24:57 gildea Exp $
#
# General defs
#
export OPENWINHOME=/usr/openwin
export MANPATH=/usr/local/man:/usr/man/preformat:/usr/man:/usr/X11R6/man
#export HOSTNAME="`cat /etc/HOSTNAME`"
export PATH="/bin: /usr/bin: /usr/X11/bin: /usr/X386/bin: /usr/TeX/bini: /usr/local/bin: /usr/games:."
LESS=-MM
if [ -z $XAPPLRESDIR ]; then
        XAPPLRESDIR=/usr/lib/X11/app-defaults:/usr/local/lib/X11/app-defaults
else
        XAPPLRESDIR=$XAPPLRESDIR:/usr/lib/X11/app-defaults
fi
export XAPPLRESDIR
#
sysresources=/usr/lib/X11/Xresources
sysmodmap=/usr/lib/X11/Xmodmap
resources=$HOME/.Xresources
xmodmap=$HOME/.Xmodmap
if [ -f $sysresources ]; then
        xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
        xmodmap $sysmodmap
fi
if [ -f $resources ]; then
        xrdb -merge $resources
fi
if [ -f $xmodmap ]; then
        xmodmap $xmodmap
fi
#
# Uruchom aplikacje
#
# xterm -ls -sb &
xhost +                 # uważaj !!!
exec fvwm
-----

Jeśli wolisz startx, użyj powyższego jako przykładowego .xinitrc.

5. Konfiguracja powłok

Po więcej szczegółów zajrzyj do ISO 8859-1 HOWTO.

5.1 bash

Stwórz plik $HOME/.inputrc zawierający co następuje:

-----
set meta-flag On
set convert-meta Off
set output-meta On
-----

5.2 csh/tcsh

Zdefiniuj co następuje w pliku $HOME/.login lub /etc/csh.login:

setenv LANG iw_IL.ISO8859-8 (lub iw_IL)

Ponieważ jednak binarna wersja tcsh jest faktycznie skompliowana bez NLS, zmienną LANG można ustawić dowolnie i nadal będzie ona działać (nie ma potrzeby tworzenia /usr/lib/nls...).

6. Aplikacje

6.1 vim

6.2 Hebrajski pine and pico

Pine i towarzyszący mu edytor pico zostały przerobione przez Helen Zommer z CC-huji; adres e-mail do zgłaszania błędów to pineh-bug@horizon.cc.huji.ac.il. Można je ściągnąć z ftp://horizon.cc.huji.ac.il/pub.

6.3 Niektóre hebrajskie wersje emacsa.

6.4 Dosemu

Dla dosemu na WK możesz użyć swojej czcionki hebrajskiej z EPROMu karty graficznej, a jeśli jej nie masz, istnieje cała masa DOSowych czcionek hebrajskich z obsługą od EGA do VGA.

Co do X-Windows, powinieneś zdobyć plik ftp://sunsite.unc.edu/pub/Linux/X11/fonts/hebxfonts-0.1.tgz. Zawiera on kilka czcionek, w tym jedną zwaną vgah.pcf, która powienieneś zainstalować w swoim katalogu z czcionkami jak opisano powyżej

6.5 XHTerm

Istnieje pisane od podstaw przeniesienie zwykłego xterma na użytek z hebrajskimi czcionkami (XHTerm = xterm + obsługa hebrajskiego). Wersja dla Suna udostępniona została z pomocą Danny'ego <tt>danny@cs.huji.ac.il</tt>. Jewgienij ma jakąś łatę do używania tej wersji pod Linuxa. Razem z jego wersją powinieneś znaleźć już skompilowany XHTerm dla X11R5 oraz X11R6. xhterm używać powinieneś z opcją -fn i hebrajską czcionką jak opisano! Wersję Danny'ego (dla Suna) uzyskać można z ftp://ftp.huji.ac.il/pub/local/xhterm, a połatana wersja Jewgienija Stambulczika znajduje się w ftp://plasma-gate.weizmann.ac.il/pub/software/linux. Zdobądź ją stamtąd, a otrzymasz z nią pięć czcionek: [heb10x20.pcf, heb6x13.bdf, heb6x13.pcf, heb8x13.bdf, heb8x13.pcf]

6.6 TeX--XeT - hebrajski Tex.

Największym problemem z TeXem po hebrajsku jest to że znaki powinny biec w tył względem widoku (tj. pico powinien wstawiać znaki od prawej do lewej), tak więc najlepszą rzeczą jest zdobycie XHterm plus zwykły emacs i pisanie hebrajskim od lewej do prawej, a także do tyłu. Nowsze dystrybucje NTeXa na SunSite (v. 1.5) zawierają wszystko, w tym TeX--XeT, skompilowany dla Linuxa. Zdobyć go można z ftp://sunsite.unc.edu.gz/pub/Linux/apps/tex/ntex. Starszą wersję TeX--XeT uzyskać można z ftp://noa.huji.ac.il/tex. Tą starszą wersję trzeba jednak zrekompilować (niepolecane). Te wydania TeXa działają dobrze jeśli używasz LaTeXa 2.09. Jeśli chcesz używać LaTeXa 2e (bieżący standard, de facto), masz problem. Alon Ziv (alonz@csa.cs.technion.ac.il) pracuje obecnie nad obsługą hebrajskiego w LaTeX 2e, z użyciem systemu Babel. Nie znam obecnego stanu prac - zapytaj go!

7. Konfiguracja drukarki

Nie ma co dużo mówić: jeśli masz zwykłą drukarkę igłową ASCII (ktoż dzisiaj ma?) jest spora szansa że w EPROMie są hebrajskie znaki. Jeśli używasz postscriptu, powienieneś załadować czcionki do drukarki (zawsze możesz użyć do tego czcionek sieciowych wspomnianych powyżej. Czcionek tych można także używać z GhostScriptem.

Jeśli masz drukarkę PCL (LaserJet itd.) możesz użyć albo kasetek z czcionkami, albo GhostScriptu.

8. Produkty komercyjne

8.1 El-Mar software.

Obsługa hebrajskiego dla X Windows i Motifa, produkt El-Mar Software, która dodaje funkcjonalność hebrajską do wielu części i warstw X Windows i Motifa, w tym Xlib, wszystkie widgety Motifa, hterm (hebrajski xterm), dema i proste pożyteczne aplikacje (np. dwujęzykowy edytor oparty na Motif), czcionki (w tym skalowalne Type1), menedżera klawiatury uwzględniającego hebrajski oraz push-mode dla aplikacji nie-Motifowych itd. Mimo wprowadzenia wielu nowych cech i wariacji widgetów Motiffa, obsługa ta nie modyfikuje w żaden sposób wewnętrznej struktury danych Motifa, tak więc instniejące aplikacje, skompilowane i złączone w środowisku i bibliotekami niehebrajskimi można przełączyć (bez rekompilacji!) i uruchamiać z hebrajskim (dzielone biblioteki można zastępować, więc nawet przełączenie nie jest potrzebne!) Używając innego naszego narzędzia, Motif/Xplorer, możesz wziąć aplikacje komercyjne (bez źródła) i przetłumaczyć je na hebrajski. Takim sposobem dodano obsługę hebrajskiego do Oracle Forms 4, Kappy i OMW Intellicorpu, CA-Unicenter i wielu innych szeroko używanych narzędzi Unixowych sprzedawanych w Izraelu. Produkt ten zakupiła i zastosowała większość sprzedawców stacji roboczych (dziewięciu z nich, w tym najwięksi: Sun, HP, SGI), i wiele innych firm wytwarzających oprogramowanie. Pliki makefile istnieją na ponad 30 platform i systemów operacyjnych. Wierzymy tylko w "otwarte" oprogramowanie, tak więc wszyscy klienci otrzymują kompletny kod źródłowy. Posiadamy dobre stosunki z przodującymi siłami w tym przemyśle, w tym z działami technicznym X-Consortium oraz COSE.

Eli Marmor
El-Mar Software Ltd.
Tel.: 050-237338
FAX: 09-984279
marmor@sunshine.cs.biu.ac.il

PS. Zapowiedź obsługi arabskiego w X Windows i Motifie spodziewana jest w styczniu [1996]. Angielski, hebrajski i arabski obsługiwane będą ośmioma bitami (!), wliczając w to pełny zestaw znaków arabskich.

9. Hebrajski wokoło sieci

9.1 WWW

9.2 Gopher

9.3 Ftp

doc-linux-pl-2002.06.14.orig/html/INFO-SHEET-HOWTO.pl.html0100664000175000017500000011430407457640740021154 0ustar covencoven Linux: Podstawowe informacje o systemie

Linux: Podstawowe informacje o systemie

Autor: Michael K. Johnson, <johnsonm@redhat.com>
v4.14, 1 września 1998
Wersja polska: Tomasz 'tsca' Sienicki, <tsca@edb.dk>
v1.02, 10 grudnia 2001


Dokument niniejszy zawiera podstawowe wiadomości o systemie operacyjnym Linux, opis jego możliwości i wymagań, oraz odnośniki do odpowiednich zasobów.

1. Wprowadzenie do Linuksa

Linux jest całkowicie darmowym systemem operacyjnym zgodnym ze standardem POSIX, z rozszerzeniami SYSV i BSD (to znaczy, że wygląda jak Unix, ale nie jest oparty o jego kod). Dostępna jest zarówno jego skompilowana wersja, jak i kod źródłowy. Prawa autorskie do Linuksa należą do Linusa Torvaldsa (<torvalds@transmeta.com>) oraz osób współtworzących kod. Linux jest rozpowszechniany za darmo na warunkach określonych w licencji GNU. Treść tej licencji dołączana jest do pakietu ze źródłami systemu, można się z nią również zapoznać pod adresem ftp://prep.ai.mit.edu/pub/gnu/COPYING. (Od tłumacza: tłumaczenie licencji GPL na język polski znajduje się pod adresem http://www.linux.org.pl/gpl.php.)

Linux jako taki to tylko jądro systemu operacyjnego, część odpowiedzialna za obsługę sprzętu, zarządzanie plikami, procesami, itd. Dopiero odpowiednie zestawienie jądra ze zbiorem programów użytkowych i aplikacji tworzy całość systemu operacyjnego. Takie zestawienie nazywa się dystrybucją. Słowo Linux, chociaż tak naprawdę oznacza tylko jądro, używane jest powszechnie -- i poprawnie! -- w znaczeniu ,,system operacyjny oparty na jądrze Linuksa''. Zwięzły opis poszczególnych dystrybucji znajduje się w Distributions-HOWTO. Żadna z tych dystrybucji nie jest ,,oficjalnym Linuksem''.

Linux nie jest oprogramowaniem ,,public domain'' ani ,,shareware''. Jest to system darmowy, a powszechnie używanymi terminami są freeware lub oprogramowanie wolnodostępne (Open Source Software[tm], zob. http://www.opensource.org (od tłumacza: informacje nt. Open Source po polsku znajdują się pod adresem http://www.opensourcepl.org)). Rozdawnictwo i sprzedaż kopii Linuksa dozwolone są pod warunkiem jednoczesnego udostępnienia kodu źródłowego. W przypadku wprowadzenia własnych modyfikacji do kodu prawnie wymagane jest udostępnienie również źródeł owych modyfikacji. Szczegóły zawarte są w licencji GNU.

Linux jest wolnodostępny i takim pozostanie. Ze względu na naturę licencji GPL, o którą ten system jest oparty, nielegalne byłoby tworzenie go w inny sposób. Zwróć uwagę, że ,,wolnodostępny'' oznacza dostępność kodu źródłowego, a nie po prostu darmowość; dozwolone jest bowiem rozpowszechnianie Linuksa za pieniądze. Jedynym warunkiem jest udostępnianie z nim jego kodu źródłowego. To oczywiście uogólnienie; jeśli interesują Cię szczegóły, zapoznaj się z treścią licencji GPL.

Linux działa na komputerach 386/486/Pentium wyposażonych w szyny ISA, EISA, PCI i VLB. IBM-owska magistrala MCA nie jest najlepiej obsługiwana przez jądra 2.0.x i wcześniejsze, sytuacja zmieniła się jednak w wersji 2.1.x i kolejnych, zob. http://glycerine.itsmm.uni.edu/mca.

Istnieje wersja dla procesorów Motorola 680x0 (chodzi o komputery takie jak Amigi, Atari i VME), która działa już całkiem dobrze. Wersja ta pracuje na Motoroli 68020 z MMU, na 68030, 68040, 68050, wymaga też FPU. Działa już X Window System i sieć. Zob. news:comp.os.linux.m68k.

Linux działa dobrze również na procesorach Alpha DECa. Obecnie wspierane są takie platformy, jak "Jensen", "NoName", "Cabriolet", "Universal Desktop Box" (Multia) i inne. Zob. http://www.azstarnet.com/~axplinux/FAQ.html.

Wspierane są też SPARCi Suna (większość maszyn sun4c, sun4m i sun4u; rozwijane wsparcie dla sun4). Obecnie jedyną dostępną na SPARC dystrybucją jest Red Hat. Zob. http://www.redhat.com/support/docs/rhl-sparc/.

Aktywnie tworzona jest wersja na PowerPC (w tym PowerMac (Nubus i PCI), Motorola, IBM i Be). Zob. http://www.cs.nmt.edu/~linuxppc/ i http://www.linuxppc.org/.

Wersje na inne maszyny (również MIPS (zob. http://linus.linux.sgi.com i http://lena.fnet.fr/) i ARM) są na różnych etapach rozwoju; nie oczekuj zbyt wiele. Jeśli możesz zaangażować się w rozwój tych wersji, z pewnością znajdziesz współpracowników.

Rozwój Linuksa przekroczył już etap testowania; wersja 1.0 ukazała się 14 marca 1994. System nie jest wolny od błędów, a w trakcie pracy na nim na pewno pojawią się w nim i zostaną usunięte kolejne niedoskonałości. Linux rozwijany jest w sposób ,,otwarty'' -- wszystkie kolejne wersje, niezależnie od tego, czy można je uznać za ,,gotowe'', czy nie, są udostępniane użytkownikom. Informacja o stabilności kolejnych wersji zawarta jest w ich numerze: wersje n.x.y gdzie x jest liczbą parzystą są wersjami stabilnymi, a zwiększanie się liczby y oznaka kolejne poprawki (np. wersje 1.2.2 i 1.2.3 różnią się od siebie tylko ilością wprowadzonych poprawek, a nie możliwościami). Wersje n.x.y gdzie x jest liczbą nieparzystą są wersjami testowymi wypuszczanymi dla osób pracujących nad ich rozwojem; mogą być niestabilne i wieszać się, stale też zwiększają się ich możliwości. Gdy bieżąca wersja rozwojowa jądra zostaje uznana za stabilną, zostaje ona ,,zamrażana'' jako kolejna wersja stabilna, a rozwijana wersja otrzymuje nowy numer.

Większość wersji jądra, i stabilnych i rozwojowych, jest raczej godna zaufania; ,,stabilna'' oznacza w tym kontekście dodatkowo ,,powoli zmieniająca się''. Można używać którejkolwiek z tych wersji, jeśli działa ona zgodnie z oczekiwaniami (chyba, że koniecznie chcesz mieć wersję najnowszą). Na przykład pochodząca z 1992 roku wersja 0.97p1 bezproblemowo używana była na pewnym serwerze przez 136 dni bez przerwy (a działałaby pewnie dłużej, gdyby operator koparki przypadkowo nie uszkodził transformatora). Znane są przypadki ciągłego używania Linuksa przez ponad rok, wiadomo też o komputerze, na którym wg ostatnich wiadomości wersja 0.99p15s chodziła nieprzerwanie od 600 dni.

Obecną stabilną wersją jądra jest 2.0.35 (numer będzie się zmieniał w miarę dodawania nowych sterowników i wprowadzania poprawek), rozpoczęto też prace nad wersją 2.1.x. Pakiet z kodem źródłowym jądra Linuksa zawiera plik Documentation/Changes opisujący zmiany, o których należy wiedzieć przy zmienianiu używanej wersji na nowszą. Większość użytkowników Linuksa po prostu aktualizuje od czasu do czasu całą dystrybucję, a tym samym i jądro.

Jak już wspomniano, model rozwoju jądra Linuksa jest modelem otwartym i zdecentralizowanym (w przeciwieństwie do modelu stosowanego w przypadku rozwoju wielu innych rodzajów oprogramowania); oznacza to, że najnowsze wersje są zawsze udostępniane użytkownikom. Co za tym idzie, każda wersja posiadająca jakąś nową funkcjonalność zawiera błędy -- ale dzięki jej upublicznieniu błędy te są bardzo szybko (często w przeciągu godzin) wyłapywane i usuwane.

Natomiast zamknięty i scentralizowany model rozwoju oprogramowania oznacza, że tylko jedna osoba lub grupa pracuje nad projektem, a nowe wersje oprogramowania publikowane są tylko wtedy, gdy autorzy uznadzą je za wolne od błędów. Powoduje to często znaczne wydłużenie się czasu oczekiwania na nową wersję i na poprawki błędów oraz generalnie wolniejszy rozwój. Najnowsze wersje takiego oprogramowania są czasem wyższej jakości niż wersje oprogramowania tworzonego w sposób otwarty, ceną jednak jest znaczne spowolnienie rozwoju.

Oba w/w modele rozwoju oprogramowania omówione i zanalizowane zostały w The Cathedral and the Bazaar Erica Raymonda; zob. http://sagan.earthspace.net/~esr/writings/cathedral-bazaar/.

1 września 1998 ostatnią stabilną wersją jądra jest 2.0.35, a wersją rozwojową 2.1.119.

2. Możliwości Linuksa

3. Zagadnienia sprzętowe

3.1 Minimalne wymagania sprzętowe

Prawdopodobnie najuboższą konfiguracją sprzętową umożliwiającą uruchomienie Linuksa jest 386SX/16, 1 MB RAM, stacja dysków 1.44 lub 1.2 MB, którakolwiek ze wspieranych kart graficznych (+ oczywiście klawiatura, monitor, itd). Taki sprzęt pozwoli na uruchomienie systemu i sprawdzenie, czy w ogóle działa on na tym komputerze; nie da się jednak na czymś takim wykonywać żadnej sensownej pracy. Omówienie minimalnych konfiguracji znajdziesz pod adresem http://rsphy1.anu.edu.au/~gpg109/mem.html.

Żeby móc cokolwiek zrobić potrzeba trochę miejsca na dysku twardym. 5 do 10 MB powinno wystarczyć na bardzo prostą instalację (zawierającą tylko podstawowe polecenia systemowe i może jedną lub dwie proste aplikacje -- np. program terminala). Taki system jest jednak bardzo ograniczony i niewygodny, zajmuje bowiem prawie całe dostępne miejsce -- chyba, że zainstalowane aplikacje są naprawdę małe. Generalnie nadaje się tylko do celów testowych, i przechwałek na temat niewielkich wymagań sprzętowych.

3.2 Zalecana konfiguracja sprzętowa

Jeśli zamierzasz uruchamiać wymagające dużej mocy obliczeniowej programy takie jak gcc, X, czy TeX, potrzebujesz procesora szybszego niż 386SX/16 -- chociaż cierpliwym i taki wystarczy.

W praktyce system bez X wymaga 4 MB, a z X 8 MB. Więcej niż 4 MB zalecane jest również w przypadku systemu obsługującego wielu użytkowników równocześnie, oraz systemu, pod którym jednocześnie będzie pracować kilka dużych programów (jak chociażby kompilacji). Oczywiście wszystko to będzie działać również przy mniejszej ilości pamięci; Linux wykorzysta w takim przypadku pamięć podręczną (powolną pamięć dyskową); jest to jednak tak wolne, że prawie nie da się tego używać. 16 MB znacząco ogranicza wykorzystanie pamięci dyskowej przy uruchomieniu wielu programów, a 32 MB przy normalnej pracy jednego użytkownika zazwyczaj całkowicie eliminuje problem. 64 i więcej MB zalecane jest przy jednoczesnym uruchamianiu wielu bardzo pamięciożernych aplikacji.

Wielkość wymaganej przestrzeni dyskowej zależy naturalnie od rodzaju instalowanego oprogramowania. Zwykły zestaw uniksowych narzędzi, powłok i programów do administrowania systemem swobodnie zmieści się na 10 MB -- zostanie nawet trochę miejsca na pliki użytkownika. System bardziej kompletny (np. Red Hat, Debian, czy inna dystrybucja) wymaga do 60 do 600 MB w zależności od instalowanych komponentów. Do tego dodać należy miejsce przeznaczone na pliki użytkowników. Przy dzisiejszych cenach twardych dysków nie ma sensu ryzykowanie, że nagle zabraknie miejsca. Warto więc nabyć dysk o pojemności co najmniej 2 GB, a lepiej 4 GB lub nawet więcej -- nie zmarnuje się, to pewne. Linux bezproblemowo obsługuje duże dyski twarde, np. popularne ostatnio dyski 11 GB na IDE i 18 GB na SCSI.

Jeśli chcesz/potrzebujesz/stać Cię na konfigurację lepszą od minimalnej, możesz rozszerzyć swój komputer o więcej pamięci, większy dysk twardy, szybszy procesor i inne urządzenia. Linux różni się tu bardzo od DOS-a, w którym rozszerzanie pamięci dawało umiarkowane zaledwie efekty -- w Linuksie różnica jest ogromna. Powodem jest oczywiście ograniczenie DOS-a do 640 Kb, ograniczenie, od którego Linux jest wolny.

3.3 Wspierany sprzęt

CPU (procesor):

Wszystko, co może uruchomić programy w trybie chronionym 386. Wszystkie modele 386, 486, Pentium, Pentium Pro, Pentium II i ich klony powinny działać (286 i starsze być może będą któregoś dnia obsługiwane przez mniejsze jądro zwane ELKS, nie należy od niego jednak oczekiwać tych samych możliwości). Wersje dla procesorów 680x0 (dla x=2+zewnętrzna jednostka zarządzania pamięcią (MMU), 3, 4 lub 6) obsługujących komputery Amiga i Atari dostępne są na serwerze tsx-11.mit.edu w katalogu 680x0. Wspierane jest również wiele maszyn DEC Alpha, SPARC i PowerPC. Trwają prace nad wersjami dla architektur ARM, StrongARM i MIPS.

Magistrale:

PCI, ISA, EISA i VLB. Obsługa MCA (głównie PS/2) jest jeszcze niekompletna (prace trwają, patrz wyżej). Linux wymaga od sprzętu więcej niż DOS, Windows, czy większość pozostałych systemów operacyjnych. Oznacza to, że pod kontrolą tych mniej wymagających systemów sprzęt może działać bezbłędnie, a pod Linuksem zawiedzie. Linux jest doskonałym testerem pamięci...

RAM (pamięć):

Na platformach intelowskich do 1 GB; na platformach 64-bitowych więcej. Niektórzy (w tym Linus) zauważyli, że dodanie pamięci bez powiększenia bufora (cache) bardzo spowalnia ich komputer. Jeśli po rozszerzeniu pamięci zaobserwujesz podobne objawy, zwiększ cache. Niektóre komputery nie są w stanie zbuforować więcej niż określoną ilość pamięci (najczęściej jest to 64 MB), niezależnie od tego, ile fizycznie pamięci jest zainstalowane. Jest to spowodowane tym, że BIOS oryginalnie nie był przeznaczony do wykrywania pamięci ponad 64 MB. Jądra 2.1.x i nowsze automatycznie radzą sobie z takimi sytuacjami, natomiast jądra 2.0.35 i wcześniejsze wymagają podania im specjalnego parametru podczas inicjalizacji systemu.

Pamięci masowe:

Obsługiwane są typowe dyski AT (EIDE, IDE, 16-bitowe kontrolery z MFM, RDD lub ESDI), jak również dyski SCSI, CD-ROMy na obsługiwanej karcie SCSI i typowe kontrolery XT (8-bitowe kontrolery z MFM lub RLL). Wspierane karty SCSI to: Advansys, seria Adaptec 1542, 1522, 1740, 27xx, i 29xx (z kilkoma wyjątkami), Buslogic MultiMaster i Flashpoint, kontrolery oparte o NCR53c8xx, kontrolery DPT, Qlogic ISP i FAS, Seagate ST-01 i ST-02, seria Future Domain TMC-88x (lub inne karty z kością TMC950), TMC1660/1680, Ultrastor 14F, 24F i34F, Western Digital wd7000, i inne. Obsługiwane są również pamięci taśmowe SCSI, QIC-02, i niektóre QIC-80. Obok CD-ROMów IDE i SCSI wspierany jest też szereg CD-ROMów o zastrzeżonej architekturze (są to m.in. Matsushita/Panasonic, Mitsumi, Sony, Soundblaster, Toshiba, ATAPI (EIDE), SCSI i inne). Informacje o konkretnych modelach znajdują się w Hardware Compatibility HOWTO. Wykazy te są i zawsze będą niekompletne. Bardziej aktualnych informacji dostarczają producenci dystrybucji.

Karty graficzne:

Pracę w trybie tekstowym umożliwiają karty VGA, EGA, CGA, Hercules (i zgodne). Wyświetlać grafikę i pracować z X-Window można za pomocą (co najmniej) zwykłych kart VGA, niektórych Super-VGA (większość z kart bazujących na kości Tseng, Paradise i niektórych Tridentach), S3, 8514/A, ATI, Matrox, i Herculesa (używanym przez Linuksa serwerem X jest XFree86, co determinuje, które karty są obsługiwane. Pełna lista samych wspieranych kości zajmuje ponad stronę. Patrz http://www.XFree86.org/).

Sieć:

Zbiór obsługiwanych kart sieciowych zawiera: 3COM 503/509/579/589/595/905 (501/505/507 są wspierane, ale nie polecane), AT&T GIS (neé NCR) WaveLAN, większość kart opartych o WD8390 lub WD80x3, NE1000/2000 i większość ich klonów, AC3200, Apricot 82596, AT1700, ATP, DE425/434/435/500, D-Link DE-600/620, DEPCA, DE100/101, DE200/201/202 Turbo, DE210, DE422, Cabletron E2100 (nie polecana), Intel EtherExpress (nie polecana), EtherExpress Pro, EtherExpress 100, DEC EtherWORKS 3, HP LAN, HP PCLAN/plus, większość kart opartych o AMD LANCE, NI5210, ni6510, SMC Ultra, DEC 21040 (tulip), Zenith Z-Note ethernet. Żadna z kart Zircom i Cabletron (oprócz E2100) nie jest obsługiwana, ponieważ producent odmówił udzielenia programistom odpowiednich informacji. Obsługa sieci światłowodowych: karty DEFxx DEC-a. Obsługa protokołu sieciowego Point-to-Point: PPP (zarówno dla urządzeń asynchronicznych (modemy), jak i połączeń synchronicznych (ISDN)), SLIP, CSLIP, PLIP. Ograniczona obsługa Token Ring.

Port szeregowy:

Większość kart opartych o 16450 i 16550 UART, w tym AST Fourport, Usenet Serial Card II i inne. Wspierane inteligentne karty to: seria Cyclades Cyclom (wsparcie od producenta), seria Comtrol Rocketport (wsparcie od producenta), Stallion (większość kart: wsparcie od producenta), i Digi (niektóre karty: wsparcie od producenta). Obsługa ISDN, frame relay (tranzytu ramki) i łącza dzierżawionego.

Inny sprzęt:

SoundBlaster, ProAudio Spectrum 16, Gravis Ultrasound, większość pozostałych kart dźwiękowych, większość (wszystkie?) rodzajów myszy (Microsoft, Logitech, PS/2), itd.

4. Niekompletny spis sportowanego i innego oprogramowania

Pod Linuksem dostępne są wersje większości podstawowych narzędzi i programów znanych z systemów uniksowych, w tym prawie całość oprogramowania opartego na licencji GNU i wiele pochodzących z różnych źródeł klientów X. Słowo `wersje' jest być może zbyt mocne, często bowiem dzięki zgodności Linuksa z normą POSIX programy te nie wymagają żadnych (lub prawie żadnych) modyfikacji do kompilacji pod tym systemem. Aplikacji nigdy za wiele; dla użytkowników i administratorów Linuksa pojawia się ich coraz więcej. Zapytaj producenta swojego ulubionego komercyjnego programu dla Unixa, czy wypuścił już jego wersję na Linuksa!

Poniżej znajduje się niekompletna lista oprogramowania działającego pod Linuksem:

Podstawowe komendy Unix-a:

ls, tr, sed, awk itp, itd, (wymień którąś -- i zapewne będzie w Linuksie).

Narzędzia programistyczne:

gcc, gdb, make, bison, flex, perl, rcs, cvs, prof.

Języki programowania i środowiska:

C, C++, Objective C, Java, Modula-3, Modula-2, Oberon, Ada95, Pascal, Fortran, ML, scheme, Tcl/tk, Perl, Python, Common Lisp i wiele innych.

Środowiska graficzne:

GNOME i KDE (desktopy), X11R6 (XFree86 3.x), X11R5 (XFree86 2.x), MGR.

Edytory:

GNU Emacs, XEmacs, MicroEmacs, jove, ez, epoch, elvis (GNU vi), vim, vile, joe, pico, jed i inne.

Powłoki (szele):

bash (zgodny z POSIX sh), zsh (zawiera tryb zgodności z ksh, pdksh, tcsh, csh, rc, es, ash (prawie całkowicie zgodna z sh powłoka używana jako /bin/sh w BSD), i wiele więcej.

Telekomunikacja:

PPP, UUCP, SLIP, CSLIP, pełen zestaw narzędzi TCP/IP, kermit, szrz, minicom, pcomm, xcomm, term (pozwala na uruchamianie wielu powłok, przekierowywanie ruchu sieciowego i zdalną pracę pod X, a wszystko to na jednej linii telefonicznej), Seyon (popularny program komunikacyjny dla X), wiele pakietów do obsługi faksów i poczty głosowej (przy użyciu ZyXELa i innych modemów). Zdalna praca przez port szeregowy lub sieć też oczywiście jest możliwa.

Newsy i poczta:

C-news, innd, trn, nn, tin, smail, elm, mh, exmh, pine, mutt, itd.

Procesory tekstu:

TeX, groff, doc, ez, LyX, Lout, Linuxdoc-SGML, i inne.

Gry:

Nethack, wiele Mud-ów, gier dla X-ów i mnóstwo innych. Jedną z gier jest przeglądanie gier dostępnych na tsx-11 i sunsite. :-)

Wszystkie te programy (a nie jest to nawet setna część dostępnego oprogramowania) są darmowe. Zwiększa się też dostępność oprogramowania komercyjnego; spytaj producenta swojego ulubionego komercyjnego programu o wersję dla Linuksa!

5. Kto używa Linuksa?

Linux jest dostępny za darmo, nie trzeba nigdzie rejestrować posiadanych i używanych kopii -- trudno jest więc stwierdzić, ilu ludzi używa tego systemu. Jednak faktem jest, że kilka firm utrzymuje się wyłącznie ze jego sprzedaży, a linuksowe grupy są jednym z najbardziej obleganych zakątków Usenetu -- użytkowników musi więc być miliony; trudno jednak o konkretne dane. Najlepsze badania rynku szacują obecnie tę liczbę na 7,5 do 11 milionów.

Odważny człowiek, Harald T. Alvestrand (<Harald.T.Alvestrand@uninett.no>), podjął ambitną próbę policzenia użytkowników Linuksa ,,sztuka po sztuce''. Jeśli chcesz zostać policzony, użyj formularzy dostępnych na stronach http://counter.li.org/ lub wyślij e-mail o jednym z dwóch tematów: I use Linux at home (,,używam Linuksa w domu'') lub I use Linux at home and at work (,,używam Linuksa w domu i w pracy'') na adres linux-counter@uninett.no. Honorowane są również zgłoszenia nieosobiste, o szczegóły pytaj autora projektu.

Harald wysyła co miesiąc aktualne statystyki na grupę comp.os.linux.misc. Informacje te są również dostępne na WWW: http://counter.li.org/.

6. Skąd wziąć Linuksa?

6.1 Anonimowy serwer FTP

Wolną od ograniczeń w dystrybucji dokumentację Linuksa znajdziesz na serwerze the Linux Documentation Project: ftp://sunsite.unc.edu/pub/Linux/docs/LDP/ i http://sunsite.unc.edu/LDP/. (Od tłumacza: polskie wersje dużej części umieszczonych tam dokumentów znajdują się na stronach JTZ: http://www.jtz.org.pl/.)

Po najświeższe wiadomości zajrzyj na grupę comp.os.linux.announce.

Linuksa ściągnąć można z (m.in.) następujących anonimowych serwerów ftp:

Nazwa                          Adres IP         Katalog
=============================  ===============  ===============
tsx-11.mit.edu                 18.172.1.2       /pub/linux
sunsite.unc.edu                152.2.22.81      /pub/Linux
ftp.funet.fi                   128.214.248.6    /pub/Linux
net.tamu.edu                   128.194.177.1    /pub/linux
ftp.mcc.ac.uk                  130.88.203.12    /pub/linux
src.doc.ic.ac.uk               146.169.2.1      /packages/linux
fgb1.fgb.mw.tu-muenchen.de     129.187.200.1    /pub/linux
ftp.informatik.tu-muenchen.de  131.159.0.110    /pub/comp/os/linux
ftp.dfv.rwth-aachen.de         137.226.4.111    /pub/linux
ftp.informatik.rwth-aachen.de  137.226.225.3    /pub/Linux
ftp.Germany.EU.net             192.76.144.75    /pub/os/Linux
ftp.lip6.fr                    132.227.77.2     /pub/linux
ftp.uu.net                     137.39.1.9       /systems/unix/linux
wuarchive.wustl.edu            128.252.135.4    mirrors/linux
ftp.win.tue.nl                 131.155.70.100   /pub/linux
ftp.stack.urc.tue.nl           131.155.2.71     /pub/linux
srawgw.sra.co.jp               133.137.4.3      /pub/os/linux
cair.kaist.ac.kr                                /pub/Linux
ftp.denet.dk                   129.142.6.74     /pub/OS/linux
NCTUCCCA.edu.tw                140.111.1.10     /Operating-Systems/Linux
nic.switch.ch                  130.59.1.40      /mirror/linux
sunsite.cnlab-switch.ch        193.5.24.1       /mirror/linux
cnuce_arch.cnr.it              131.114.1.10     /pub/Linux
ftp.monash.edu.au              130.194.11.8     /pub/linux
ftp.dstc.edu.au                130.102.181.31   /pub/linux
ftp.sydutech.usyd.edu.au       129.78.192.2     /pub/linux

tsx-11.mit.edu oraz fgb1.fgb.mw.tu-muenchen.de są oficjalnymi serwerami GCC.

Niektóre serwery są kopiami innych -- jeśli możesz, użyj najbliższego (sieciowo) sobie.

Co najmniej sunsite.unc.edu i ftp.informatik.tu-muenchen.de udostępniają usługę ftp przez e-mail. Więcej informacji pod adresami ftpmail@sunsite.unc.edu i ftp@informatik.tu-muenchen.de.

Jeśli czujesz się zagubiony, zajrzyj do Distribution-HOWTO, gdzie wymieniona jest część dystrybucji. W chwili obecnej, przynajmniej w USA, najpopularniejsze są Red Hat i Debian.

6.2 Płytki CD

Większość ludzi instaluje Linuksa z kompaktów. Dystrybucje rozrosły się do setek megabajtów oprogramowania; ściąganie tego przez modem 28.8 lub ISDN trwa dłuuugo.

Linuksa na płytce można nabyć na dwa sposoby: jako część archiwów FTP, albo bezpośrednio od producenta. Nabycie archiwów często umożliwia wybór dystrybucji, oznacza jednak również rezygnację ze wsparcia technicznego. Przy zakupie od producenta dystrybucji zazwyczaj wybrać nie można, oferowana jest za to jakaś forma wsparcia (najczęściej pomoc w instalacji).

6.3 Inne źródła

Istnieje więcej BBSów niż jest plików w dystrybucji Linuksa. Od czasu do czasu lista tych BBSów ogłaszana jest na grupie comp.os.linux.announce. Popytaj wśród przyjaciół i w LUGach (Grupach Użytkowników Linuksa), albo zamów którąś z komercyjnych dystrybucji (ich lista znajduje się w Linux distribution HOWTO dostępnym pod adresem http://sunsite.unc.edu/LDP/HOWTO/Distributions-HOWTO oraz w grupie comp.os.linux.announce).

(Od tłum.: w Polsce najłatwiejszą i najtańszą formą uzyskania Linuksa jest zakup jednego z czasopism komputerowych dołączających płytki z którąś z dystrybucji. O konkrety pytaj na grupie pl.comp.os.linux.)

7. Status prawny Linuksa

Chociaż Linux dostarczany jest z kompletnym kodem źródłowym, system ten nie jest własnością publiczną -- jest oprogramowaniem chronionym prawami autorskimi, dostępnym jednakże za darmo na warunkach licencji GPL -- tam też znajdziesz więcej informacji na ten temat. Działające pod Linuksem programy również chronione są odpowiednimi prawami autorskimi, chociaż wiele z nich także dostępnych jest na licencji GPL. X Window rozpowszechniany jest na licencji MIT X, a niektóre programy użytkowe na licencji BSD. W każdym razie dozwolone jest rozpowszechnianie oprogramowania dostępnego na serwerze FTP (inaczej nie byłoby go tam).

8. Bieżące informacje o Linuksie

Ponad cztery lata temu powstał miesięcznik Linux Journal. Skierowany jest do wszystkich użytkowników Linuksa, zawiera artykuły o różnym stopniu trudności. Prenumerata jednoroczna kosztuje 22 dolary w USA, 27 dolarów w Kanadzie i Meksyku, 32 dolary w pozostałych miejscach, płatne w dolarach USA. Prenumeratę zamawia się pocztą elektroniczną (subs@ssc.com), faksem (+1-206-782-7191), telefonicznie (+1-206-782-7733), lub pocztą tradycyjną (Linux Journal, PO Box 85867, Seattle, WA 98145-1867, USA). SSC udostępnia swój publiczny klucz PGP, kodując nim e-maila z zamówieniem prenumeraty bez strachu można podać numer swojej karty kredytowej. W/w klucz PGP uzyskuje się poleceniem finger info@ssc.com .

Istnieje szereg poświęconych Linuksowi grup oraz list dyskusyjnych. Linux FAQ zawiera więcej informacji o tych ostatnich (FAQ to znajduje się na wspomnianych serwerach FTP i w grupach dyskusyjnych).

Na moderowaną grupę comp.os.linux.announce wysyłane są ogłoszenia n/t Linuksa (nowe programy, poprawki, itd).

Na moderowaną grupę comp.os.linux.answers wysyłane są dokumenty FAQ (,,Najczęściej Zadawane Pytania''), HOWTO (,,Jak To Zrobić''), itp.

Niemoderowana grupa comp.os.linux.admin jest miejscem dyskusji o administrowaniu systemami linuksowymi.

Niemoderowana grupa comp.os.linux.development.system poświęcona jest rozwojowi jądra. Pytania dotyczące programów można tu zadawać wyłącznie, jeśli są one blisko powiązane z jądrem. Inne programistyczne zapytania kierować należy na grupę comp.unix, chyba, że dotyczą one konkretnych aplikacji. W takim przypadku właściwą grupą jest comp.os.linux.development.apps.

Niemoderowana grupa comp.os.linux.development.apps przeznaczona jest na dyskusje o rozwoju aplikacji dla Linuksa. Nie należy pytać tam, skąd takie aplikacje ściągnąć, nie jest to również miejsce na rozmowy o aplikacjach jeszcze nieistniejących.

Na grupę comp.os.linux.hardware wysyłać można pytania dot. działania sprzętu pod Linuksem.

Grupa comp.os.linux.networking poświęcona jest zagadnieniu rozwoju, działania i konfiguracji oprogramowania sieciowego pod Linuksem.

comp.os.linux.x zajmuje się systemem X Window.

Następczyni comp.os.linux, grupa comp.os.linux.misc, przeznaczona jest dla dyskusji na tematy niewymienione powyżej.

Powodem rozbicia comp.os.linux na podgrupy było zmniejszenie ruchu na grupie macierzystej, dlatego nie krospostuj między grupami comp.os.linux.*! Jedynym wyjątkiem jest wysłanie ogłoszenia do news:comp.os.linux.announce i którejś z niemoderowaych grup. Nie przestrzegając tej zasady narażasz się na niemiłe potraktowanie...

Źródłem wiadomości o Linuksie na WWW jest http://sunsite.unc.edu/LDP/.

9. Przyszłość

Od czasu jądra 1.0 wprowadzono do systemu istotne ulepszenia. Linux 1.2 miał krótszy czas dostępu do dysków, udoskonalone terminale, ulepszone zarządzanie pamięcią wirtualną, wsparcie dla wielu platform, quoty i inne. Linux 2.0 (obecna stabilna wersja) zawiera jeszcze więcej poprawek, włączając w to poprawki w szybkości działania, nowe protokoły sieciowe, jedną z najszybszych na świecie wersję TCP/IP i znacznie więcej. Linux 2.2 będzie jeszcze szybszy i będzie obsługiwał większą ilość protokołów sieciowych oraz urządzeń niż obecnie.

Jednak, mimo że kod źródłowy jądra to już ponad 3/4 miliona linii, wiele jeszcze zostało do napisania, w tym również dokumentacji. Jeśli chciałbyś pomóc w jej tworzeniu, zasubskrybuj listę dyskusyjną linux-doc@vger.rutgers.edu; wyślij na adres majordomo@vger.rutgers.edu list zawierający słowo ,,help'' w treści (NIE w temacie).

10. O tym dokumencie

Autor niniejszego dokumentu, Michael K. Johnson, <johnsonm@redhat.com> prosi o wszelkie, nawet drobne, uwagi; trudno bowiem stworzyć dobrą dokumentację całkowicie samemu.

Mniej-więcej bieżącą wersję tego tekstu znajdziesz zawsze pod adresem http://sunsite.unc.edu/LDP/.

10.1 Formalności

Znaki handlowe są własnością ich posiadaczy. Nie udziela się żadnych gwarancji co do informacji zawartych w niniejszym dokumencie. Użycie i rozpowszechnianie na własne ryzyko. Zawartość tego dokumentu jest własnością publiczną (public domain), bądź jednak uprzejmy i przy cytowaniu zaznacz autorstwo.

11. Od tłumacza

Przetłumaczyłem najnowszą dostępną wersję dokumentu. Niestety, w momencie, w którym to piszę, tekst oryginalny nie był uaktualniany od dwóch lat; biorąc pod uwagę szybki rozwój Linuksa, liczyć się należy z możliwością, że część informacji jest przestarzała. Na pewno jednak wszystkie zmiany w stanie faktycznym, które nastąpiły w przeciągu tych dwóch lat, są zmianami na lepsze. :-)

Wersja oryginalna dokumentu ("INFO-SHEET") znajduje się pod adresem http://sunsite.unc.edu/LDP/. Z polskimi tłumaczeniami pozostałych dokumentów HOWTO zapoznać się możesz pod adresem http://www.jtz.org.pl/.

Copyright for the translation:
(c) 2000, 2001 by Tomasz 'tsca' Sienicki, <tsca@edb.dk> doc-linux-pl-2002.06.14.orig/html/ISP-Hookup-HOWTO.pl.html0100664000175000017500000012257106770264140021447 0ustar covencoven ISP-Hookup-HOWTO czyli jak przyłączyć Linuxa do Internetu

ISP-Hookup-HOWTO czyli jak przyłączyć Linuxa do Internetu

Egil Kvaleberg, egilk@sn.no
vs.23, 9 December 1996
Wersja polska: Piotr Pogorzelski piotr.pogorzelski@ippt.gov.pl
w1.0, luty 1997


Informacje tutaj zawarte mają pokazać w jaki sposób przyłączyć Linuxa do usług oferowanych przez dostawcę Internetu przy wykorzystaniu połączenia modemowego. Przedstawiono podstawy procedury dzwonienia, zestawiania połączenia protokołem IP oraz obsługi poczty elektronicznej i nowinek (news).

1. Wprowadzenie

Ten opis powstał aby odpowiedzieć na kilka pytań związanych z konfiguracją Linuxa umożliwijącą dzwonienie do dostawcy Internetu (ISP) i korzystanie z dostarczanych przez niego usług.

Aby wspomóc te osoby, które będą podłączały swego Linuxa do ISP po raz pierwszy, postarmy się przedyskutować większość napotkanych problemów. Nie unikniemy niestety pewnego nałożenia się tematyki tego dokumentu z innymi dokumentami JTZ (HOWTO) lub ksiązkami LDP. Postaramy się odwoływać do tych dokumentów aby zapewnić lepsze zrozumienie problemu i dokładniejszą informację.

Większość istniejącej dokumentacji jest pomyślana pod kątem użytkowników z pewnym doświadczeniem, początkującym użytkownikom może sprawiać sporo kłopotu wyłowienie odpowiedniej informacji.

Aby ułatwić sobie życie, w prezentowanych dalej przykładach przyjęto następujące założenia:

Nasz dirk bedzie nazywał swój komputer roderick.

Wszystkie odnośniki w tabeli powyżej powinny zostać zastąpione przez jakiekolwiek odpowiednie inforamcje dla twojego przypadku. Zwykle potrzebne są niewielkie zmiany w przypadku korzystania z innego dostawcy internetu.

1.1 Nowe wersje tego dokumentu.

Nowe wersje tego dokumentu będą okresowo wysyłane do pl.comp.os.linux.answers. Bedą również umieszczane w różnych archiwach ftp i WWW włączając:

ftp://sunsite.icm.edu.pl/pub/Linux/docs/HOWTO

Najnowszą wersję tego dokumentu można będzie znaleźć pod adresem

http://www.jtz.org.pl/Html/ISP-Hookup-HOWTO.pl.html

1.2 Uwagi

Wszelkie poprawki błędów, informacje dodatkowe, uwagi krytyczne i inne proszę kierować na adres

piotr.pogorzelski@ippt.gov.pl

1.3 Żadnych gwarancji

Żadnych gwarancji. Nie ponosimy żadnej odpowiedzialności za jakiekolwiek wykorzystanie informacji zawartych w tym dokumencie. Jest to jedna z pierwszysch wersji i istnieje możliwość, że przedstawione inforamcje nie są prawidłowe.

Przedstawiamy jedną z wielu możliwych konfiguracji. W świecie Linuxa zawsze jest wiele metod zrealizowania określonego zadania. Paragrafy zawierające wskazówki dla rozwiązań alternatywnych oznaczyliśmy tak:ALT: Również podawane odnośniki do serwerów FTP i WWW mogą stać się nieaktualne, wraz z pojawieniem się nowszych wersji programów.

Większość opisywanych programów jest dotępna wraz z kodem źródłowym na licencji GNU lub podobnej.

1.4 Informacje o prawach autorskich

Prawa utorskie należą do (c)1996 Egil Kvaleberg (tłumaczenie (c)1997 Piotr Pogorzelski). Dokument jest dostępny pod następującymi warunkami:

gregh@sunsite.unc.edu Numer telefonu i adres pocztowy mozna uzyskać poleceniem finger.

2. Jak mogę się połączyć z resztą świata?

Zakładamy, że zostało zainstalowane niezbędne oprogramowanie sieciowe (np. podstawowe pakiety serii N w dystrybucji Slackware) i już wiesz, który port szeregowy jest wykorzystywany przez twój modem.

Domyślna konfiguracja pozwala na bezpośreni dostęp do urządzenia /dev/modem jedynie administratorowi (użytkownik root).

Aby połączyć się z ISP i uzyskać tam dostęp do powłoki (interpretera poleceń) można skorzystać z programu minicom. Jest bardzo prosty i intuicyjny w użyciu.

2.1 Konfiguracja podstawowa

Konfigurację komputera do pracy sieciowej musimy przeprowadzić jako administrator (root). Zanim zaczniesz robić coś więcej upewnij się, że plik /etc/hosts.deny zawiera nastpujący wiersz

ALL: ALL
Zwykle nie masz nic przeciwko korzystaniu przez siebie z komputera, dodaj więc dodatkowy wiersz do /etc/hosts.allow: ALL: LOCAL lub jeśli się upierasz
ALL: 127.0.0.1
W ten sposób zabezpieczasz się przed dostępem do twojego komputera z internetu, w tych rzadkich chwilach kiedy jesteś do niego pezpośrednio połączony przez PPP lub SLIP. Przedstawione poniżej inforamcje dotyczą połączenia PPP z dynamicznym przydziałem adresu IP. Jeśli korzystasz z linii dzierżawionej, napotkasz na pewne różnice.

Przyjemnie jest mieć komputer o ładnej nazwie. Użytkownicy korzystający z dynamicznie przydzielanych adresów IP mogą zupełnie dowolnie wybrać nazwę swego komputera. Jeśli już się na jakąś zdecydowałęś umieść ją w pliku /etc/HOSTNAME:

roderick

Kolejnym krokiem jest skonfigurowanie dostępu do serwera nazw (serwera DNS), czego dokonujemy odpowiednio modyfikując plik /etc/resolv.conf:

search .
nameserver 193.212.1.0
Serwer nazw mnusi byc określony przez numer IP, który jest rózny dla każdego dostawcy internetu (ISP). Jeśli jest to konieczne można podać trzy róne srwery nazw. Będą przepytywane w kolejności w jakiej występują w pliku.

Jeśli chesz miec możkiwość korzystanie z krótkich nazw np. jakiśkomputer jako skrótu dla jakiśkomputer.acme.net, musisz zmienic pierwszy wiersz pliku /etc/resolv.conf dodając:

search acme.net

Wymagane jest również minimalne skonfigurowanie pliku /etc/hosts. W większości wypadków wystarczy aby zawierał:

127.0.0.1 localhost
0.0.0.0   roderick
Ci, którzy korzystają ze stałego adresu IP (linia dzierżawiona) oczywiści zastąpią nim podane przez nas 0.0.0.0.

Podobne minimalna zwartość /etc/networks wygląda następująco:

loopback  127.0.0.0
localnet  0.0.0.0

Należy również ustalić nazwę zewnętrznej domeny pocztowej i umieścić ją w pliku /etc/mailname:

acme.net

Identyfikator użytkownika i hasło konta u dostawcy, musi być zapisane w /etc/ppp/pap-secrets

dirk * PrettySecret

Jeśli dostawca ISP zamiast protokołu PAP używa CHAP, właściwa nazwa pliku jest następująca /etc/ppp/chap-secrets.

I na koniec, zanim zostanie uruchomione PPP musimy zdefiniować procedurę połączenia. Robimy to umieszczając anstępujące inforamcje w pliku /etc/ppp/chatscript:

TIMEOUT 5
"" ATZ
OK ATDT12345678
ABORT "NO CARRIER"
ABORT BUSY
ABORT "NO DIALTONE"
ABORT WAITING
TIMEOUT 45
CONNECT ""
TIMEOUT 5
"name:" ppp
Może okazać się konieczne dopracowanie sczegółów. Numer telefonu w trzecim wierszu musi byc oczywiście zmieniony. Być może, niektórzy powinni zamienić sposób inicjownaia modemu ATZ na coś bardziej wyrafinowanego, zależnie od rodzaju posiadanego modemu. Ostatni wiersz oznacza, ze oczekujemy zachęty name: na którą odpowiadamy ppp. Inne systemy/dostawcy mogą mieć inne procedury wchodzenia do systemu.

Aby faktycznie zainicjować połączenie i protokół ppp naeży wydać następujące polecenie:

exec pppd connect \
     'chat -v -f /etc/ppp/chatscript' \
      -detach crtscts modem defaultroute \
      user dirk \
      /dev/modem 38400
Powinniśmy być w tej chwili połączeni aż do momentu, kiedy program pppd zostanie zabity przez Ctrl-C. Wszelkie komunikaty dotyczące zestawiania połączenia mozna znaleźć w plikach w katalogu /var/log. Aby je odczytać spróbuj wykonać polecenie:
tail /var/log/messages

Tak długo jak PPP jest aktywne, posiadasz bezpośredni dostęp do Internetu możesz korzystać z takich programów, jak ftp, ncftp, rlogin, telnet, finger itp. Wszystkie te programy powinny być cześcią pakietów sieciowych (uprzednio przez ciebie zainstalowanych, patrz początek dokumnetu).

Więcej informacji na temat PPP jest dostępne w PPP-HOWTO i plikach:

/usr/lib/ppp/README.linux

/usr/lib/ppp/README.linux-chat

Na koniec uwaga na temat bezpieczeństwa. Plik /etc/inetd.conf zawiera listę wszystkich usług jakie twój komputer oferuje na zewnątrz. Po zmianach jakie wykonaliśmy w pliku /etc/hosts.deny dostęp z zewnątrz do twego komputera nie jest możliwy. Ci, którzy tego potrzebują, muszą uzyskać na to pozwolenie, pozwolenie musi być wydane przez zmodyfikowanie pliku /etc/hosts.allow. Pozwolenie na ruch lokalny wymaga dopisania:

ALL: LOCAL
Wiecej informacji uzyskarz w podręczniku, patrz man 5 hosts_access.

I ostania mała uwaga: Istnieje małe nieporozumienie związane z nazewnictwem protokołów POP. Definicja w pliku /etc/services zgodna niemal ze wszystkim wygląda nastepująco:

pop2      109/tcp   pop-2          # PostOffice V.2
pop3      110/tcp   pop-3 pop # PostOffice V.3

ALT: Zamiast programu chatscript, można korzystać z lepszego, dającego większą swobodę dip. Ale razem z programem diald.

ALT: Ci sczęśliwcy, którzy mają stałe połączenie TCP/IP przez np. kartę Ethernet mogą całkowicie zignorować wszystko co było pisane na temat PPP i zacząć się uczyć jak skonfigurować swoją kartę sieciową.

ALT: Inni mogą nie mieć możliwości korzystania z PPP, lecz mają do dyspozycji SLIP, który jest obsługiwany w podobny sposób co PPP. Inna możliwością, którą należy rozważyć jest UUCP. Jescze inni mogą polegać na wymianie nowinek i poczty za pomocą SOUP. Opis tego ostatniego przypadku można znaleźć w:

ftp://ftp.sn.no/user/bjorn/Linux-offline.tgz

Kolejnym rozwiązanie m jest program TERM, patrz Term-HOWTO.

3. A co z WWW?

Jeśli uważasz, ze w WWW najważniejszy jest tekst, możesz chcieć skorzystać z przeglądarki Lynx. Można ją znaleźć pod adresem:

ftp://sunsite.unc.edu/pub/Linux/system/Network/info-systems/lynx-2.3.bin2.tar.gz ( Ostatnia znana wersja to 2.6. Zwykle kazda dystrybucja posiada Lynxa, wystarczy go wiec zainstalować tak jak inne programy)

Jeśli posiadasz zainstalowane X Window, możesz skorzystać z wielu przeglądarek graficznych. Chimerę możesz znaleźć w:

ftp://sunsite.unc.edu/pub/Linux/system/Network/info-systems/chimera-1.65.bin.ELF.tar.gz

http://www.unlv.edu/chimera/

Mosaic:

ftp://sunsite.unc.edu/pub/Linux/system/Network/info-systems/Mosaic-2.7b1-aout.tgz

ftp://ftp.NCSA.uiuc.edu/Web/Mosaic/Unix/binaries/2.6

Mozilla (Netscape):

ftp://sunsite.unc.edu/pub/Linux/system/Network/info-systems/netscape-v11b3.tar.gz

ftp://ftp.cs.uit.no/pub/www/netscape

przeglądarki się cały czas zmieniają, cały czas są dostępne coraz to nowe ich wersje.

Korzystanie z nich podlega pewnym warunkom. Zapoznaj się z nimi.

4. Jak wysłać i otrzymać pocztę?

Po pierwszes sprawdz, czy zainstalowny jest sendmail. (jesli uzywasz Debiana, uważaj. Debian uzywa smail'a nie sendmail'a). Sendmail sortuje wewnętrzną i wychodzącą pocztę, buforuje wychodzące listy do momentu kiedy może je przesłać dalej.

Sendmail bazuje na pliku konfiguracyjnym /etc/sendmail.cf. Przykładowy plik konfiguracyjny, dobry dla użytkowników korzystających z usług prowajdera internetu mozna znaleźć w:

ftp://ftp.sn.no/user/egilk/sendmail.cf Ten z kolei wymaga zinstalowania programu procmail, lub może być łatwo zmieniony, tak aby wykorzystywał program deliver.

Oczywiście konieczne jest posiadanie oficjalnej domeny dla poczty wychodzącej na zewnątrz, coś co jest określone w /etc/sendmail.cf:

# who I masquerade as (null for no masquerading)
DMacme.net
Taka konfiguracja zakłada, ze lokalnie na komputerze korzystasz z takiego samego identyfikatora, jak u dostawcy. Jeśli tak, to sendmail jest już skonfigurowny do przesyłania poczty bezpośrednio do adresata. Aby uniknąc długotrwałych powtarzających się połączeń z komputerem odbierającym pocztę wygodnie jest korzystać z komputera prowajdera jako bufora. Włączamy to modyfikując opcję DS w pliku /etc/sendmail.cf:
# "Smart" relay host (may be null)
DSmail.acme.net
Pamiętaj, ze sendamil jest bardzo wrażliwy na znaki tabulatora w pliku konfiguracyjnym sendmail.cf. Rozważ używanie do tych celów edytora vi, aby mieć pewność ze znaki tabulacji, które były w pliku konfiguracyjnym nie zostaną zamienione na odstępy podczas zachowywania zmodyfikowanego pliku na dysku.

Odbieranie poczty może być wygodnie zrealizowane za pomocą protokołu POP3, który może być inicjowany za każym razem kiedy następuje zestawienie połączenia. Prosty skrypt do przetestowania tej możliwości wygląda następująco:

sendmail -q
popclient -3 -v mail.acme.net -u dirk -p "PrettySecret" \
       -k -o /usr/spool/mail/dirk
Ten skrypt może być uruchamiany po zestawieniu połączenia PPP. Pamiętaj, ze to jest jedynie skrypt testowy. Upewnij się że lokalna skrzynka pocztowa pozostaje nietknięta. Opcja -k oznacza, ze poczta jest pozostawiana w skrzynce na komputerze prowajdera, a sciągana jest jedynie kopia listu. Oczywiście po sprawdzeniu poprawności wszystkich ustawień usuniesz tę opcje.

Pamiętaj, że twoje hasło będzie widoczne w wierszu poleceń (patrz program ps). To powinno zostać poprawione tak szybko jak to tylko możliwe (ASAP)

Bezpieczniejsza i lepsza wersja teko skryptu znajduje się pod adresem:

ftp://ftp.sn.no/user/egilk/pop-script.tar.gz

Wymaga aby był zainstalowany program procmail, lecz tego raczej nie będziesz żałował.

ftp://sunsite.unc.edu/pub/Linux/system/Mail/mailhandlers/procmail-3.10-2.tar.gz

Procmail jest prostym i elastycznym narzędziem, które umożliwia sortowanie przychodzącej poczty na ogromną ilość sposobów. Dodatkowo może również zastąpić program vacation i podobne.

Pamiętaj, że używanie procmaila w taki sposób jak my to robimy w tym przykładzie jest różne od tego co znajdziesz w dokumentacji procmaila. .forward nie jest konieczny i jeśli nie sortujemy przychodzącej poczty nie potrtzebujemy również pliku .procmailrc.

Użytkownik, do czytania i wysyłania listów powinien korzystać z takich programów jak elm lub pine.

ALT: Szary człowiek korzystający z konta u prowajdera (tam czytający pocztę)nie musi mieć działającego demona sendmaila. Warto wtedy wyłaczyć uruchamianie sendmaila przy starcie komputera. Trzeba w tym celu zmodyfikować /etc/rc.d/rc.M. (W RedHat'cie skorzystaj z programu control-panel (sysvtool))

ALT: Zamiast sendmaila można też skorzystać z prostszego smaila. Dobry opis konfiguracji (oraz wiekszość informacji, którą do tej pory przedstawiliśmy) znajdzesz w Linux Network Administrator's Guide.

ALT: Do tworzenia nowych plików konfiguracyjnych sendmail.cf wykorzystuje się pliki z makrodefinicajami m4. Drobne zmiany jest lepiej jednak wykonywać bezpośrednio w pliku /etc/sendmail.cf.

ALT: Istnieją również prostsze, choć nie tak elastyczne alternatywy. Mozna używać dobrze skonfigurowanego pine'a, lub nowszych wersji różnych przeglądarek WWW.

ALT: Wiele osób jest zachwycone pakietem Gnus towarzyszącemu programowi/edytorowi Emacs. Więcej informacji na tet temat szukaj pod adresem:

http://www.ifi.uio.no/~larsi/

ALT: Alternatywą dla popclient jest pop-perl5. Dostępny z:

ftp://sunsite.unc.edu/pub/Linux/System/Mail/pop-perl5-1.1.tar.gz

5. Nowinki

5.1 Jak skonfigurować czytnik nowinek online?

Tak długo, jak jest aktywne PPP, masz możliwość korzystania z nowinek online. Istnieje mnóstwo dostępnego oprogramowania. Zwykle wybiera sie pomiędzy rtin i trn.

Aby rozpocząc czytanie nowinek trzeba jeszcze tylko powiadomić czytnik, z którego serwera ma korzystać. Wystarczy zmodyfikować plik .profile dodając nową zmienną środowiskową:

export NNTPSERVER=news.acme.net

Aby twoj adres (From) pojawiający się w wysyłanych na nowinki listach był poprawny, niektóre porgramy wymagają dodania jescze jednej zmiennej:

export NNTP_INEWS_DOMAIN=acme.net

5.2 Jak skonfiguraować czynanie nowinek offline?

Aby moc czytać nowinki offline, dzieki temu obniżyć rachunki za telefon, a jednocześnie uzyskać większą elastyczność, trzeba skonfigurować lokalny bufor nowinek (news-spool). Wymaga to pewnej konfiguracji, jak również wolnego miejsca na dysku. Po wstępnym skonfigurowaniu, później wszystko powino działać już samo z siebie, wymagając tylko trochę sprawdzenia i poprawek od czasu do czasu.

Opiszemy dwa rózne rozwiązania.

5.3 Jak skonfigurować C News?

Rozwiązanie tutaj opisane opiera się na sewerze nowinek C News i protokole NNTP. C News powstało z myslą o pracy w zupełnie innej konfiguracji, lecz jest na tyle elastyczny, że potrafi sobie poradzić i w tej systuacji. Można również skorzystać z nowszego serwera INN, który może jednak wymagać trochę więcej zasobów. Pamiętaj aby nie zainstalować obu; nie potrafią współistnieć w pokoju.

Jest bardzo ważne aby wszelkie zabiegi kongiracyjno-pielęgnacyjne wykonywać jako użytkownik news i aby wszystkie pliki konfiguracyjne umieścić w /usr/lib/news. Będąc zalogowanym jako root wystrczy napisać su news; cd.

Najważniejsze pliki konfiguracyjne:

5.4 Jak skonfiguraować Leafnode?

Innym rozwiązaniem jest zainstalowanie i skonfigurowanie zintegrowanego pakietu leafnode. Obsłuży wszelkie zadania wymagane przez osobisty bufor nowinek i jest prosty w konfiguracji. można go znaleźć pod adresem:

http://www.troll.no/freebies/leafnode.html

Podobnie jak w przypadku C News, wszelkie prace administracyjne przy nowinkach nalezy wykonywać jako użytkownik news.

Katalogiem macierzystym dla leafnode jest /usr/lib/leafnode. Instalacja wygląda następująco:

cd /usr/lib/leafnode
tar -xzvf leafnode-0.8.tgz
cd leafnode-0.8
make
su
make install

Nadal będąc zalogowanym jako root, zmodyfikuj wiersz w pliku /etc/inetd.conf strujący obslugą protokołu nntp:

nntp  stream  tcp  nowait  news  /usr/sbin/tcpd /usr/local/sbin/leafnode
I włącz :
killall -HUP inetd

Teraz znów musisz pracować jako news. Zmień wiesz w pliku /usr/lib/leafnode/config definiujący serwer NNTP, z którego będziemy korzystać. W naszym przykładzie:

server = news.acme.net

Leafnode potrafi o siebie zadbać jeśli do crotaba dopisze się następujące polecenie (poprzez uruchomienie jako użytkownik news polecenia crontab -e ):

# expire Leafnode, once a day
0 4 * * * /usr/local/sbin/texpire

Następujące polecenie, wydane jako użytkownik news powoduje wymianę nowinek z serwerem (zakładamy, zę działa PPP):

/usr/local/sbin/fetch

Uzytkownicy, którzy chcą teraz czytać nęwsy powinni skorzystać z wcześniejszego opisu Jak skonfigurować czytanie nowinek online?, pamiętając, że konfiguracje trzeba wykonać dla lokalnego komputera tzn:

export NNTPSERVER=localhost

To by bylo wszystko. Pierwsze polecenie fetch skopiuje listę dostępnych grup. Leafnode będzie monitorował, które grupy są czytane i adaptował się do nowej systuacji przy następnym uruchomieniu.

ALT: Alternatywą dla leafnode jest nntpcache dostępny pod adresem:

ftp://ftp.suburbia.net/pub/nntpcache/nntpcache.tgz

6. Jak zautomatyzować procedurę łączenia się z dostawcą?

Pod Linuxem automatyczna obsługa wysyłania i przyjmowania poczty i nowinek jest całkiem prosta.

Po pierwsze należy utworzyć plik /usr/lib/ppp/ppp-on odpowiedzialny za zainicjowanie połączenia z prowajderem. Czesto będzie zawierał tylko tyle:

/usr/sbin/pppd
Kolejne niezbędne informacje należy umieścić w pliku /etc/ppp/options:
connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript"
crtscts
modem
defaultroute
asyncmap 00000000
user dirk
/dev/modem 38400

Zakończenie połączenia zapewni dostarczona wersja /usr/lib/ppp/ppp-off.

Aby przetestować funkcjonalność tego rozwiązania należy stworzyć skrypty odpowiedzialne za wykonanie kilku zadań. Skrypt do porania poczty został opisany wcześniej, zakładamy, ze znajduje się w katalogu /home/dirk/pop.

Skrypt do wymiany poczty może być utworzony np. w /root/mail:

#! /bin/sh
#
# wymień pocztę z dostawcą
# 10 minutes timeout:
TIMEOUT=600
DT=10

# kopnij sendmaila (opróżnia kolejkę listów do wysłania)
sendmail -q &

# pobież pocztę:
su dirk -c /home/dirk/pop

# poczekaj aż sendmail zakończy pracę:
t=0
while ! mailq | grep -q "Mail queue is empty"; do
    t=$[$t+$DT]
    if [ $t -gt $TIMEOUT ] ; then
     echo "sendmail -q timeout ($TIMEOUT).."
     exit 1
    fi
    sleep $DT
done

exit 0

Skrypt do wymiany nowinek może być umieszczony np. w /usr/lib/news/news:

#!/bin/sh
#
# wymień nowinki z prowajderem
# musi byc uruchomiony jako news
cd /usr/lib/news

#uaktualnij kolejkę wychodzącą (C News):
/usr/lib/newsbin/input/newsrun < /dev/null

#wymień nowinki:
/usr/lib/newsbin/newsx acme news.acme.net

#opróżnij kolejkę przychodzących nowinek:
/usr/lib/newsbin/input/newsrun < /dev/null
Skrypt łączący te wszytkie kawałki możne umieścić np. w: /root/news+mail:
#!/bin/sh
#
# wymień poczte i nowinki z dostawcą
# musi być wykonywany jako root
#
if ! /usr/lib/ppp/ppp-on; then
    exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15

#wymien nowinki i pocztę :
/root/mail &
su news -c ~news/news
wait

#rozłącz się
/usr/lib/ppp/ppp-off

#uaktualnij kolejkę nowinek przychodzących (C News):
su news -c /usr/lib/newsbin/input/newsrun < /dev/null &

exit 0

Łatwo jest tak zmodyfikować przedstawione skrypty, że połączenie będzie nawiązywane jedynie wtedy, gdy jakiś list lub artykuł oczekiwał bedziena wysłanie. Nazwijmy go /root/news+mail.cond, pamiętając jednak, że trzeba go dostosować do własnej konfiguracji (nazewnicwa) bufora nowinek:

#!/bin/sh
#
# wymień poczte i nowinki jeśli cokolwiek czeka na wysłanie
# (C News spool)
if [ -s /var/spool/news/out.going/acme/togo ] ||
    ! ( mailq | grep -q "Mail queue is empty"); then
     /root/news+mail
fi

Pozostaje jescze określić kiedy ten skrypt będzie wykonywany. Skorzystamy z polecenia crontab -e jako użytkownik root (pamiętamy, ze ten skrypt musi byc wykonywany jako root). Załózmy, że zawsze chcemy wymieniać pocztę i nowinki po raz pierwszy o 7 rano i potem co 4 godziny o jest coś do wysłania:

00 7      * * *     /root/news+mail
00 11,15,19,23 * * *     /root/news+mail.cond
Zanim połączysz wszystkie części razem, upewni się, że każda z nich działa prawidlowo. Później do tych skryptów można dołączać kolejne, wykonujące takie zadania, jak synchronizacja zegara (za pomocą ntpdate) czy automatyczne uaktualnianie stron WWW u prowajdera (za pomocą FTP),poprawianych na lokalnym komputerze.

ALT: W zależności od upodobań możliwe jest również odwrócenie całego procesu. Za każdym razem, kiedy zostaje zainicjowane PPP uruchamiany jest skrypt /etc/ppp/ip-up. Można do niego dodać uruchamianie innych skryptów obsługujących wymianę poczty i nowinek. Więcej inforamcji o PPP w podręczniku, patrz man pppd .

ALT: Możliwa jest również taka konfigracja, w której PPP jest uruchamiane automatycznie, w momencie wykrycia próby korzystania z sieci. W wielu przypadkach jest to bardziej eleganckie rozwiązanie, lecz zła konifuracja może spowodować częste (kosztowne) połączenia modemowe. Więcej informacji na ten temat można znaleźć pod adresem:

http://www.cs.toronto.edu/~schenk/diald.html

Program narzędziowy diald jest dostępny:

ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/diald-0.13.tar.gz

Pod powyższym adresem można znleźć inne informacje o połączeniach PPP.

7. Zakończenie

7.1 Coś jescze o czym powinienem wiedzić?

PostMaster: root
ftp: root
news: root
usenet: root
FaxMaster: root
fax: root
WebMaster: root
MAILER.DAEMON: root

ftp://ftp.sn.no/user/egilk/yarn2mf.zip

8. Informacje o dostawcach internetu

Dokładniejsze informacje o dostawcach internetu można znaleźć w wielu miejscach:

Demon Internet (demon.co.uk)

ftp://ftp.demon.co.uk/pub/unix/linux/Demon/slack3.0.help.tgz

Easynet TBA

Netcom http://www.netcom.com/bin/webtech/NetCruiser/Operating_Systems/Linux/linux.cfg.html

PowerTech, Schibstednett, Telenor Online

http://home.sn.no/~egilk/no-isp.html

Primenet TBA

Stanford

http://www-leland.stanford.edu/~wkn/Linux/network/network.html

Jeśli znasz innych, tutaj nie przedstawionych, daj nam znać. Czekamy na informacje od polskich dostawców internetu. Chętnie je tutaj zamieścimy. Wyslij list na adres piotr.pogorzelski@ippt.gov.pl

8.1 Jak dowiedzieć się więcej?

Ksiązka oracowana w ramach projektu Linux Documentation Project p.t. Linux Administrator's Guide napisana przez Olafa Kircha wydaje się być lekturą obowiązkową dla każdego, kto zamierza zajmować się czymkolwiek w jakiś sposób związany z sieciami TCP/IP i Internetem.

ftp://sunsite.unc.edu/pub/Linux/docs/linux-doc-project/network-guide/nag-1.0.ascii.tar.gz

Dokumentacja poszczególnych pakietów oprogramowania zwykle dostarcza szczegówłowych informacji, której potrzebujesz. Nawet jeśli nie jest wystarczająca jest to zawsze jakiś początek. Pamiędaj o stronach podręcznika. Spróbuj:

man pppd

Cześć dokumentacji na temat różnych programów znajdziesz w katalogu /usr/doc.

Bardzo polecamy następujące dokumenty HOWTO Niektóre z nich są już przetłumaczone na język polski.

8.2 Podziękowania

Przedstawione informacje pochodzą z wielu źródeł. Podziękowania za bezpośredni lub pośredni wkład w powstanie tego dokumentu.

Adam Holt <holt@graphics.lcs.mit.edu>
Arne Coucheron <arneco@oslonett.no>
Arne Riiber <riiber@oslonett.no>
Arnt Gulbrandsen <agulbra@troll.no>
Bjorn Steensrud <bjornst@powertech.no>
Gisle Hannemyr <gisle@a.sn.no>
Hans Amund Rosbach <haro@sesam.dnv.no>
Hans Peter Verne <hpv@ulrik.uio.no>
Harald T Alvestrand <Harald.T.Alvestrand@uninett.no>
Harald Terkelsen  <Harald.Terkelsen@adm.hioslo.no>
Haavard Engum <hobbes@interlink.no>
Johan S. Seland <johanss@sn.no>
John Phillips <john@linux.demon.co.uk>
Jorn Lokoy <jorn@oslonett.no>
Kenneth Tjostheim <kenneth.tjostheim@asplanviak.no>
Kjell M. Myksvoll <kjell.myksvoll@fou.telenor.no>
Kjetil T. Homme <kjetilho@math.uio.no>
Michael Meissner <meissner@cygnus.com>
N J Bailey <N.J.Bailey@leeds.ac.uk>
Nicolai Langfeldt <janl@math.uio.no>
Ove Ruben R Olsen <Ove.R.Olsen@ub.uib.no>
R. Bardarson <ronb@powernet.net>
Steinar Fremme <steinar@fremme.no>
Sverre H. Huseby <sverrehu@ifi.uio.no>
Trond Eivind Glomsrod <teg@stud.imf.unit.no>
Tommy Larsen <tommy@mix.hive.no>

9. Od tłumacza

Zdaje sobie sprawę, że niniejsze tłumaczenie zawiera mnóstwo błędów. Niestety nie jestem w stanie dokładnie sprawdzić całego dokumentu i świadomie pozostawiam tę pracę czytelnikowi. Będę wdzięczny za wszelkie uwagi na temat tego dokumentu, wytykanie błędów, literówek, składni i wszelkie inne, które mogą przyczynić się do jego ulepszenia.

Wszelkie tego typu uwagi proszę przesyłać na adres piotr.pogorzelski@ippt.gov.pl

Inne przetłumaczone dokumenty można znaleźć na stronie http://www.jtz.org.pl. Zapraszamy!.

doc-linux-pl-2002.06.14.orig/html/Install-HOWTO.pl.html0100664000175000017500000017400206770264140021153 0ustar covencoven Instalacja Linuxa

Instalacja Linuxa

na podstawie The Linux Installation HOWTO by Eric S. Raymond
v4.3, 10 December 1996
Wersja polska Piotr Pogorzelski piotr.pogorzelski@ippt.gov.pl
w1.0 Luty 1997


Niniejszy dokument objaśnia w jaki sposób zdobyć i zainstalować Linuxa. Wszyscy rozpoczynający przygodę z Linuxem powinni rozpocząć czytanie dokumentacji Jak To Zrobić (HOWTO) od tego właśnie dokumentu.

1. Wprowadzenie

1.1 Dlaczego powstał ten dokument

Linux jest darmową implementacją systemu UNIX, zdolną pracować na niedrogich komputerach osobistych (powstał na koputerach PC386, w chwili obecnej można go uruchomić na 486, 586, Pentium PowerPC, SunSparc i DEC Alpha). Obsługuje szeroki zbiór róznego rodzaju oprogramowania włączając w to X Window, Emacs, sieć TCP/IP (SLIP/PPP) i wiele innych aplikacji.

Zakładamy, że wiesz już co nieco o Linuxie, przynajmniej tyle, że istnieje, a teraz chcesz się dowiedzieć jak najwięcej o samej instalacji. Skoncentrujemy się na wersji dla komputerów PC, która jest najbardziej popularna, lecz wiele z zamieszczonych poniżej informacji dotyczy również komputerów PowerPC, Alpha i Sparc.

1.2 Inne źrodła informacji

Jeśli nigdy nie słyszałeś o Linuxie, jest kilka miejsc, gdzie można znaleźć podstawowe informacje o systemie. Poszukiwania należy rozpocząć od strony domowej Projektu LDP, którą można znaleźć pod adresem http://sunsite.unc.edu/mdw/linux.html. Najnowszą wersję niniejszego dokumnetu można znaleźć pod adresem http://www.jtz.org.pl/Html/Install-HOWTO.pl.html

Najnowszą wersję angielską zanjdziesz tutaj http://sunsite.unc.edu/pub/Linux/docs/HOWTO/Install-HOWTO.

Czytanie powinieneś rozpocząć od przejrzenia informacji zawartej w takich dokumnetach jak: Linux INFO-SHEET i Linux META-FAQ. Dokument `Linux Frequently Asked Questions' zawiera wiele popularnych pytań (i odpowiedzi!) na temat Linuxa -- nowi użytkownicy muszą go przeczytać.

Pomoc możesz również znaleźć w grupie Usenet News pl.comp.os.linux.

Projekt Dokumentacji Linuxa (LDP), przygotowuje zestaw podręczników i książek o Linuxie, wszystkie z nich są swobodnie rozpowszechniane w sieci i dostępne na stronie domowej projektu LDP.

Książka ``Linux Installation and Getting Started'' jest kompletnym przewodnikiem opisującyn jak zdobyć, zainstalować i korzystać z Linuxa. Zawiera kompletne wprowadzenie do użytkowania i prowadzenia systemu oraz o wiele więcej inforamcji niż przedstawiono tutaj. Możesz ją przeglądać lub pobrać kopię ze strony domowej projektu LDP.

1.3 Nowe wersje tego dokumentu

Nowe wersje "Instalacja Linuxa - jak to zrobić" będą okresowe wysyłane na listę pl.comp.os.linux.odpowiedzi. Będzie również umieszczana w różnych archiwach WWW i FTP dotyczących Linuxa, włączając stronę domową LDP.

Ostatnią wersję tego dokumentu można zawsze znaleźć pod adresem http://www.jtz.org.pl/Html/Install-HOWTO.pl.html.

1.4 Uwagi i poprawki

Jeśli masz jakiekolwiek uwagi lub poprawki do tego dokumnetu, proszę nie wahaj się napisać do piotr.pogorzelski@ippt.gov.pl. Jestem otwarty na wszelkie uwagi, również te krytyczne. Jeśli znajdziesz jakiś błąd w tym dokumencie, proszę powiadom mnie o tym, abym mógł go poprawić w następnej wersji. Dziękuję.

Proszę nie przysyłajcie mi pytań, jak sobie poradzić z kłopotami ze sprzętem jakie napotkaliście w czsie instalacji. Zapoznajcie się z ``Linux Installation and Getting Started'', informujcie producenta lub szukajcie pomocy w grupie pl.comp.os.linux. Ten dokument ma być zwięzłym źródłem informacji o zwykłej instalacji -- w przygotowaniu jest dokument poświęcony problemom, jakie napotykacie w czasie instalacji.

2. Ostatnie zmiany

3. Zanim zaczniesz

Zanim zaczniesz instalować Linuxa muszisz być absolutnie pewien, że komputer na którym chcesz to zrobić jest do tego odpowiedni, oraz zdecydować się, którą dystrybucję chcesz zainstalować.

3.1 Wymagania sprzętowe

Jakiego rodzaju komputer jest potrzebny do urchomienia Linuxa? Dobre pytanie. Wymagania sprzętowe zmieniają sie okresowo, Listę sprzętu, który pracuje pod Linuxem można znaleźć w Linux Hardware-HOWTO http://sunsite.unc.edu/mdw/HOWTO/Hardware-HOWTO.html. Inny spis można znależć w Linux INFO-SHEET, http://sunsite.unc.edu/mdw/HOWTO/INFO-SHEET.html.

W przypadku komputera, wydaje się, że przykładowa konfiguracja może wyglądać następująco:

Jakakolwiek płyta ISA, EISA, VESA Local Bus lub PCI, 80386, 80486, Pentium lub P-6. Aktualnie architektura MicroChannel (MCA) jaką można znaleźć w komputerach IBM PS/2 nie jest obsługiwana. Dowolny procesor od 386SX do P-6 bedzię działał. Koprocesor nie jest potrzebny, choc warto go mieć.

Potrzebne jest co najmniej 4MB RAM. Linux potrafi pracować nawet z 2MB RAM, lecz wiekszość instalacji i oprogramowania wymaga 4MB (RedHat do instalacji potrzebuje 8MB, potem działa na 4MB). Jeśli planujesz pracę pod X Window, proponuję 8, lub 16MB RAM.

Oczywiście niezbędny jest twardy dysk, oraz standardowy kontroler dyskowy AT. Wszystkie dyski i sterowniki typu MFM, RLL i IDE będą pracować poprawnie. Linux potrafi pracować z wieloma dyskami i sterownikami standardu SCSI. Więcej informacji na ten temat oraz na temat samego SCSI można znaleźć w Linux SCSI-HOWTO. Jeśli budujesz komputer od zera, specjalnie dla Linuxa, dodatkowy koszt przeznaczony na zakup urządzeń SCSI jest warty zwiększenia osiągów systemu i jego niezawodności.

Bedzie niezbędny napęd 3.5". Choć napędy 5.25" sa obsługiwane przez Linuxa, są one coraz mniej popularne i nie można liczyć, że uda się znaleźć dystrybucje przeznaczone na takie dyskietki. (Bardzo okrojony Linux może być uruchomiony na jednej dyskietce, lecz jego przydatność sprowadza się jedynie do sytuacji awaryjnych lub właśnie do samej instalacji nowego systemu.)

Potrzebna jest również karta grafiki snadardu MDA, Hercules, CGA, EGA, VGA, lub Super VGA oraz odpowiedni monitor. Ogólnie rzecz biorąc jeśli karta grafiki i monitor pracują pod MS-DOSem to powinny również pracować pod Linuxęm. Jeśli jednak planujesz uruchamiać X Window, istnieją dodatkowe ograniczenia dotyczące obsługiwanych kart graficznych. Więcej na ten temat można znaleźć w dokumencie Linux XFree86-HOWTO, http://www.jtz.org.pl/Html/XFree86-HOWTO.pl.html , który zawiera inforamcje nt uruchamiania i wymagań X Window.

Przydatny jest również CD-ROM. Jeśli jest to CD-ROM typu ATAPI, SCSI lub "prawdziwy" IDE to nie powinno być żadnych kłopotów.(Uważaj na tanie napędy reklamowane jako IDE, które nie są do końca prawdziwymi napędami IDE). Jeśli twój CD-ROM wykorzystuje firmową kartę rozszerzenia, może się zdarzyć, że jądro, które znajduje się na dyskietce instalcyjnej nie będzie w stanie go rozpoznać, co uniemożliwi instalację z plytki CD. Rownież napędy CD przyłączone do portu równoległego nie będą pracować. Jeśli masz wątpliwości zajżyj do Linux CD-ROM HOWTO, http://sunsite.unc.edu/mdw/HOWTO/CD-ROM-HOWTO.html, gdzie znajdziesz dokładną listę obsługiwanego sprzętu.

Tak zwane urządzenia "Plug'n'Play" mogą stanowić problem. Obsługa tych urządzeń jest aktywnie rozwijana, lecz nie ma jej jescze w jądrze 2.0.25. Na sczęście zwykle jest to problem z kartami dźwiękowymi lub sieciowymi kartami Ethernet.

3.2 Wymagane zasoby dyskowe i współistnienie z innymi systemami

Potrzebne jest wolne miejsce na twardym dysku. W zależności od tego jakie i ile oprogramowania planujesz zainstalować może to być od 40 do 500 MB. Większość instalacji wymaga od 40 do 80 MB. Obejmuje to miejsce na oprogramowanie, swap (pamięć wirtualną) i trochę wolnej przestrzeni dyskowej dla użytkowników.

Można uruchomić Linuxa również na 10 MB lub mniej, lecz równie dobrze pełna instalacja może zając ponad 500 MB. Ta wielkość zależy głównie od ilości oprogramowania, które zainstalujesz i ile przestrzeni dyskowej zostanie przeznaczone dla użytkowników.

Linux może współistnieć na tym samym dysku z innymi systemami operacyjnymi, takimi jak MS-DOS, Microsoft Windows czy OS/2. (W rzeczywistości możesz mieć nawet dostęp do plików DOSu, a nawet wykonywać niektóre niektóre programy DOSu po Linuxem). Innymi słowy podczas podziału dysku na partycje, Linux, MS-DOS i OS/2 zyją na własnych partycjach. Więcej inforamcji o takich mieszanych konfiguracjach później.

Nie musisz uruchamiać MS-DOSu czy OS/2 aby móc używać Linuxa. Linux jest zupełnie innym, niezależnym systemem operacyjnym i jego instalacja i użytkowanie nie zależy od innych systemów.

Podsumowując, minimalny zestaw dla Linuxa nie jest znacząco większy od tego wymaganego przez sprzedawane dzisiaj sytemy MS-DOS lub Windows 3.1 ( i jest dużo mniejszy od minimalnego zestawu potrzebnego do uruchomienia Windows 95!). Jeśli posiadasz 386 lub 486 z co najmniej 4MB RAM, to będziesz szczęśliwy pracując pod Linuxem. Linux nie wymaga dużej ilości przestrzeni dyskowej, pamięci czy mocy procesora. Matt Welsh, człowiek, który zapoczątkował ten dokument używał Linuxa na komputerze 386/16 MHz. (najwolniejszy komputer jaki można zdobyć) z 4 MB RAM i być całkiem z tego zadowolony. Im więcej chcesz robić tym więcej potrzebujesz pamięci, lepszego procesora. Z naszego doświadczenia wynika, że 486 z 16 MB RAM pracująca pod Linuxem jest lepsza od kilkunastu modeli drogich stacji roboczych.

3.3 Wybór dystrybucji Linuxa

Zanim będziesz mógł rozpocząć instalację Linuxa, musisz się zdecydować na jedną z dostępnych ``dystrybucji'' Linuxa. Nie ma jednej, standardowej dystrybucji Linuxa -- istnieje ich wiele. Każda z nich ma własną dokumentację i instrukcję instalacji.

Dystrybucje Linuxa są dostępne na krązkach CD, FTP, taśmie, dyskietkach. Linux Distribution HOWTO, http://sunsite.unc.edu/mdw/HOWTO/Distribution-HOWTO.html, zawiera opisy wielu dystrybucji Linuxa dostępnych przez FTP lub za zaliczeniem pocztowym (głównie w USA, już niedługo również w Polsce).

W zamierzchłych czasach, kiedy po raz pierwszy powstał ten dokument (1992-1993), większość zdobywała Linuxa wpierw sciągając go przez ftp (lub przez modem z różnych BBSów) na lokalny dysk, następnie kopiując je na niezliczone ilości dyskietek. Jedna z tych dyskietek służyłą następnie do wystartownia systemu i zainstalowania całej reszty. Mając szczęscie (i dobry nośnik na dyskietkach) kończyło się instalację po kilku godzinach, lub powtarzało ją na nowo.

Choć nadal można wybrać tę drogę, istnieją teraz mniej stresujące metody. Najprościej jest kupić jedną z wysokiej jakości dystrybucji komercyjnych, rozprowadzanych na krązkach CD takich, jak RedHat, Craftworks, LinuxPro lub WGS. Są one dostępne zwykle poniżej $50 w twojej księgarni lub sklepie komputerowym. Zaoszczędzsz wiele niepotrzebnie zmarnowanego czasu.

Można również kupić zestawy CD takie jak InfoMagic Linux Developer's Resource. Zawierają zwykle kilka dystrybucji Linuxa oraz świerzą kopię takich archiwów jak sunsite lub tsx-11.

Pod koniec tego dokumentu skoncentrujemy się jak zainstalować Linuxa z takiego właśnie zestawu, który nie posiada wydrukowanej instrukcji instalacji. Jeśli twój Linux jest zaopatrzony w w drukowaną instrukcję to ten dokument może stanowić dobre wprowadzenie lecz ostatecznie należy się kierować informacjami zawartymi w tej instrukcji.

4. Krótki opis instalacji

4.1 Basic Installation Steps

Szkic instalacji Linuxa jest prosty:

  1. Zbierz informacje o konfiguracji twojego sprzętu
  2. Zrób dyskietki instalacyjne.
  3. Jeśli pragniesz zainstalować Linuxa na tym samym komputerze razem z innym systemem operacyjnym (Linux i DOS, Linux i Windows, albo wszystkie 3) zmień ustawienie partycji na dysku (wolne miejsce dla Linuxa).
  4. Wystartuje komputer z dyskietki Instalacyjnej, otrzymasz dostęp do Napędu CD.
  5. Przygotuj system plików dla Linuxa. (Jeśli do tej pory nie zmieniłeś układu partycji, zrobisz to teraz.)
  6. Zainstaluj część podstawową z krążka CD.
  7. Wystartuj Linuxa z CD.
  8. (Opcjonalnie) Zainstaluj więcej pakietów z CD-ROMu.

4.2 Podstawowe elementy zestawu instalacyjnego.

Tak wyglądają podstawowe części dystrybucji instalacyjnej:

  1. Pliki README i FAQ. Zwykle umieszczone w katalogu głównym krązka CD. Dostępne tuż po zamontowaniu CD. (W zależności od tego jak zostały zrobione mogą być nawet dostępne pod MS-DOS lub MS Windows). Radzimy przeczytać te pliki, jak tylko bedą dostępne. Mogą zawierać ważne informacje o zmianach i poprawkach.
  2. Kilka(naście) obrazów dyskietek instalacyjnych. (częstko w oddzielnym podkatalogu) Jeden z nich zsotanie przez ciebie zapisany na dyskietce tworząc w ten sposób dyskietkę startową. Musisz wybrać jeden obraz dyskietki instalacyjnej taki, który najlepiej pasuje do twojego sprzętu. W chwili obecnej, jest to juz jeden plik. Obsługa urządzeń jest kompilowana w postaci niezależnych modułów, które sa ładowane na życzenie).A number of bootdisk images (often in a subdirectory. (w chili obecnej to sie zmienilo i jest juz zwykle tylo jeden plik z obrazem dyskietki instalacyjnej (pp)).

RAWRITE.EXE jest niezbędny, jeśli planujesz tworzenie dykietek instalacyjnych w środowisku MSDOS. Jęsli nasz dostęp do UNIXowej stacji robozcej, która posiada stację dsykietek, możesz zrobic dyskietki instalacyjne na niej, korzystając z programu `dd'. Czasami można znaleźć przygotowny skrypt do tworzenia dyskietek instalacyjnych,

5. Szczegółowy opis procesu instalacji

5.1 Przygotowanie się do instalacji

Linux efektywniej wykorzystuje elementy twojego komputera niż MS-DOS, Windows czy Windows NT, ale w konsekwencji jest mniej tolerancyjny na źle skonfiguraowany sprzęt. Jest kilka rzeczy, które możesz zrobić, które zmiejszą prawdopodobieństwo, że instalacja zostanie przerwana przez tego typu problem.

Po pierwsze zgromadź wszelką dokumentację na temat posiadanego sprzętu -- plyty głównej, karty graficznej, monitora, modemu itp -- i umieść je gdzieś pod ręką.

Po drugie, zgromadź dostępną informacje o aktualnych ustawieniach podzespołów twojego komputera. Jeśli masz na komputerze zainstalowany MS-DOS (co najmniej v5.0) zrób wydruk informacji jakie udziela narzędzie msd.exe. Zagwarantuje to pełną i poprawną informacje na temat karty graficznej i myszy co będzie pomocne przy konfiguracji X Window.

Po trzecie sprawdź czy komputer nie ma kłopotów sprzętowych, które mogą spowodować nieodwracalne blokady (zawieszenia) podczas samej instalacji.

Jeśli to możliwe zdobądź telefon bardziej zaawansowanego użytkownika Linuxa. W dziewięciu na dziesięc przypadków nie będziesz go potrzebował, lecz jaki to komfort mieć go podczas instalacji.

Ile czasu to może potrwać? Na podstawowy system, trzeba liczyć około godziny. Jesli na komputerze ma być więcej niż jeden sytem spodziewaj się trzech godzin (w takim przypadku jest większe prawdopodobieństwo wystąpienia błędów).

5.2 Tworzenie dyskietek startowych

Twój krążek CD może zawierać materiały lub narzędzia pomocne przy instalacji, które przeprowadzą cię przez proces tworzenia dyskietek instalacyjnych przy pomocy prostych interacyjnych programów. Mogą to być równie dobrze programy instalacyjne pracujące pod MS-DOSem (patrz program redhat.exe w dystrybcji RedHat), pod UNIXem lub pod jednym i drugim.

Jeśli w twojej dystrybucji znalazłeś taki program, powinieneś go użyć i potraktować resztę tego rozdziału jako materiał poglądowy. Skorzystaj z tego programu, jego autorzy na pewno lepiej wiedzieli o specyficznych cechach dystrybucji niż my. Zaoszczędzisz sobie wielu kłopotów.

Więcej dokładnych informacji na temat tworzenia dystkietek startowych (boot disk i root disk) znajdziesz w Linux Bootdisk HOWTO http://sunsite.unc.edu/mdw/HOWTO/Bootdisk-HOWTO.html.

Wpierw musisz wybrać plik dsyku startowego (disk boot image), który jest najleszy dla sprzętu, który posiadasz. Jeśli musisz to zrobić ręcznie, zwykle spostrzeżesz, ze (a) albo pliki mają nazwy, które ułataiwają wybranie odpowiedniego, lub (b) istnieje plik zawierający opis cech każdego z dostępnych plików dyskietki startowej.

Następnie należy przygotować dwie lub trzy dyskietki high-density sformatowane pod MS-DOSem. Muszą być tego samego rodzaju, to znaczy jeśli napęd startowy jest 3.5" obie dyskietki muszą być 3.5"-we. Następnie należy użyć RAWRITE.EXE do zapisania plików z obrazem dyskietek startowych na dyskietki.

Uruchom go bez żadnych prametrów, po postu tak:

C:\> RAWRITE

Odpowiedz na pytanie o nazwę pliku, który należy zapisać na dyskietce nazwę napędu do którego pisać (np. A:). RAWRITE skopiuje plik blok po bloku bezpośrednio na dyskietkę. Użyj RAWRITE do zrobienia kolejnych dyskietek instalacyjnych (np COLOR144). Jak skończysz staniesz się posiadaczem dwóch dyskietek: jednej startowej i drugiej zawierającej system plików z katalogiem głównym. Pamiętaj, że tych dyskietek nie można już odczytać pod MS-DOSem ( wpewnym sensie są w formaci ``Linuxa'').

Pod Unixem to samo można zrobić wykorzystując program dd(1). (Potrzebna jest oczywiście stacja robocza z napędem dyskietek) Na przykład na komputerach Sun, na których dyskietkę reprezentuje plik specjalny /dev/rfd0, można zastosować następujące polecenie:

$ dd if=bare of=/dev/rfd0 obs=18k

Na niektórych stacjach roboczych należy koniecznie podać rozmiar bloku wyjściowego (np Sun) w przeciwnym wypadku kopiowanie się nie uda. Jesli napotksz na klópoty, podręcznik dd(1) powinien być pomocny.

Upewnij się, że używasz dobrej jakości dydkietek. Wykorzystywane dydkietki nie mogą mieć złych bloków.

Pamietaj, ze nie musisz mieć działającego Linuxa lub MS-DOS, aby móc zainstalować Linuxa. Posiadanie Linuxa lub dosu ułatwia zrobienie dyskietek instslscyjnych z plików znajdującyh się na CD.

Jeśli nie masz na swoim komputerze żadnego systemu skorzystaj z komputera kolegi. Przygotuj na nim dyskietki instalacyjne i posłuż się nimi na swoim komputerze.

5.3 Zmiana partycji na dyskach z zainstalowanym DOSem/Windowsami

W większości pracujacych systemów, twardy dysk jest już podzielony na partycje dla DOSu, OS/2 itd. Konieczna będzie zmiana rozmiaru tych partycji, tak aby zwolnić odpowiednią ilość miejsca dla Linuxa. Jesli planujesz instalację, gdzie na jednym dysku będą współistnieć różne systemy, mocno plecamy zapoznanie się z jednym lub więcej następujących mini-HOWTO, które opisują dokładniej różne konfiguracje instalacji wielosystemowych.

Nawet jęsli nie mają bezpośredniego zastosowania dla twojej sytuacji, na pewno pomogą w głębszym zrozumieniu idei i wyagań.

UWGA: Część dystrybucji może być zainstalowana na partycji MS-DOS w oddzielnym katalogu (to jest zupełnie cos innego niż instalowanie Z partycji MS-DOS). Linux wykorzystuje w tym celu system plików o nazwie UMSDOS, który pozwala na traktowanie podkatalogu na partycji MS-DOS jako systemu plików Linuxa. W ten sposób zmiana rozmiaru partycji nie jest konieczna.

Możemy zasugerować tę metodę w przypadkach, gdy dysk jest już podzielony na 4 partycje i zmiana partycji będzie bardziej kłopotliwa niż jest to warte. Lub w przypadku, gdy chesz sprawdzić jak wygląda Linux, przed podziałem dysku na partycje, wtedy jest to dobra metoda. Jednak w większośi wypadków sugerujemy zmianę rozmiarów partycji, tak jak jest to tutaj opisane. Jeśli zamierzasz korzystać z UMSDOS, robisz to na własną rękę -- nie jest to udokumentowane w tym dokumencie. Od tej chwili zakładamy, że NIE korzystasz z syztemu UMSDOS i, że przeprowadzisz operację zmiany partycji.

Partycja jest to część twardego dysku, wydzielona dla konkretnego systemu operacyjnego. Jeśli masz zainstalowany tylko MS-DOS, zatem prawdopodobnie masz na twardym dysku tylko jedną partycje przeznaczoną w całości na MSDOS. Aby korzystać z Linuxa muszisz jednak zmienić układ partycji, tak aby była jedna partycja dla MS-DOS i jedna (lub) więcej dla Linuxa.

Partycje dzielą się generalnie na 3 rodzaje : podstawowe (primary), rozszerzone (extended) i logiczne. W skrócie, partycje podstawowe są jednymi z czterech głównych partcji. Jednakże jeśli potrzebujesz więcej niż cztery partycje na jednym dysku, musisz utworzyć partycję rozszerzoną, która może zawierać wiele partycji logicznych. Dane są przchowywane wyłącznie na partycji podstawowej lub logicznej.

Inaczej mówiąc większość ludzi korzystają z partycji podstawowych. Jeśli potrzeba jest więcej niż 4 partycje należy utworzyć partycję rozszerzoną. Partycje logiczne są tworzone na partycji rozszerzonej, no i proszę mamy więcej niż 4 partycje na dysku.

Możesz zainstalować Linuxa również na drugim fizycznym dysku. Wystarczy podać nazwę odpowiedniego urządzenia podczas tworzenia partycji Linuxowej. Wiecej szczegółow na ten temat późnizej.

Wróćmy do zmiany rozkładu partycji na dysku. Problem polega na tym, że nie istnieje sposób, aby zrobić to (w łatwy sposób) bez zniszczenia danych znajdujących się na partycji, której rozmiar zmieniamy. Datego muszisz zrobić pełną kopię wszelkich danych na dysku, zanim zaczniesz zmieniać rozmiary partycji. Ziana rozmiaru partycji będzie polegała na jej usunięciu i odtworzeniu, lecz o mniejszym rozmiarze.

UWAGA: Istnieje program pod MSDOS służący do zmiany rozmiaru partycji bez konieczności jej uprzedniego usunięcia. Nazywa się FIPS. Patrz http://sunsite.unc.edu/Linux/system/Install. Korzystając z FIPSa, programu porządkującego dysk (takiego jak Norton Speed Disk) i mając trochę szczęścia powinieneś móc odpowiednio zmienić rozmiary partycji bez niszcenia znajdującyhc się na nich danych. Mimo wszystko nadal sugerujemy wykonanie pełnej kopii dysku, przed korzystaniem z programu FIPS.

Jednakże jeśli nie korzystasz zprogramu FIPS, klasyczna metoda polega n skorzystaniu z programu FDISK. Powiedzm, że masz dysk o pojemności 80MB i chciałbyś go podzielić na dwie części -- 40MB dla MS-DOS i 40 MB dla Linuxa. W tym celu musisz uruchomićpod MS-DOSem program FDISK, usunąc partycję 80MB przeznaczoną na DOS, następnie utworzyć w jeje miejscu nową partycję o rozmiarze 40MB i zakończyć program pozostawiając niezagospodarowane 40MB. Możesz następnie sformatować nowo utworzoną partycję i zainstaować swoje oprogramowanie z wykonanej uprzednio kopii. (Prosze pamietac, aby do wykonywanai operacji programem FDISK startować system z dyskietki, na krórej powinny znaleźć sie przynajmniej programy FDSIK, FORMAT i SYS). Póżniej w czasie instalacji Linuxa, pozostawione 40MB zostanie wykorzystane do utworzrnia partycji Linuxa i zaistalowanie na niej systemu.

W skrócie, aby zmienić rozmiar partycji należy wykonać następujace działania (za pomocą programu FDISK):

  1. Zrób pełną kopię dysku
  2. Zrób dyskietkę strtową MS-DOS, np poleceniem
    FORMAT /S A:
    (uwaga, wszystkie dane na dyskietce zostana zniszczone).
  3. Skopiuj na tę dyskietkę programy FDISK.EXE and FORMAT.COM, oraz inne narzędzia, których będą ci potrzebne. (Np. narzędzia do odtworzenia programów i systemu z wykonanej kopii.
  4. Wystartuj MS-DOS z nowo utworzonej dyskietki..
  5. Uruchom FDISK, podając jeśli to możliwe, który dysk chcesz modyfikować (C: lub D:).
  6. Skorzystaj z menu programu i usuń te partycje, których rozmiar chcesz zmienić. To zniszczy wszystkie dane znajdujące się na tych partycjach.
  7. Skorzystja z menu programu FDISK, aby utworzyć nowe partycje,o mniejszym rozmiarze.
  8. Zakończ pracę z FDISKiem i sformatuj nowo utworzone partycje programem FORMAT.
  9. Odtwórz dane na nowo sformatowanych partycjach z wykonanych wcześniej kopii.

Zwróć uwagę, że dosowy program FDISK da ci możliwość utworzenia ``Logical DOS drive'' (logicznego dysku MSDOS). Logiczny dysk MSDOS to po prostu partycja logiczna twojego dysku. Możesz zainstalowac Linuxa na partycji logicznej, lecz nie chcesz utworzenia taj partycji logicznej DOSowym programem FDISK. Jeśli aktualnie korzystasz z logicznego dysku MSDOS i chcesz w tym miejscu zainstalować Linuxa, powinieneś usunąć logiczny dysk MSDOS za pomocą DOSowego FDISK i (później) utworzyć w tym miejscu nową logiczną partycję dla Linuxa.

Sposób zmiany rozmiaru partycji dla OS/2 lub innych systemów operacyjnych jestpodobny. Szczegółów szukaj w dokumentacji tych systemów.

5.4 Tworzenie partycji dla Linuxa

Po zmianie rozmiaru partycji, potrzebujesz utworzyć partycje dla Linuxa. Zanim powiemy jak to zrobić opowiemy wpierw o partycjach i systemach plików pod Linuxem.

Podstawowe inforamacje o partycjach

Linux wymaga co najmniej jednej partycji dla głownego systemu plików (root filesystem), który będzie zaierał jądro Linuxa i dodatkowe oprogramowanie.

Możesz myśleć o systemie plików jako o partycji sformatowanej dla Linuxa. Systemy plików służą do przechowywania plików. Każdy system Linuxowy musi miec co najmniej główny system plików. Jednakże wielu użytkowników preferuje korzystanie z wielu systemów plików -- jeden dla każdej większej części poddrzewa katalogów. Na pryzkład możesz chieć utworzyć oddzielny system plików do przechowywania plików w katalogach poniżej katalogu /usr.(Zwróć uwagę, że na sytemach UNIX, katalogi oznacza się kreską pochyloną wprzód, a nie w tył jak to robi MSDOS.) W takim przypadku będziesz posadał zarówno główny system plików, jak i system plików dla katalogu /usr.

Każdy system plików wymaga oddzielnej partycji. Dlatego jeśli chesz korzystać z głównego sustemu plików i systemu plików /usr muszisz utworzyć dwie partycje.

Dodatkowo, większość użytkowników tworzy partycję dla pamięci wymiany (swap partition). Jesli masz, powiedzmy 4MB RAM i 10 MB partycji wymiany, tak długo jak dotyczy to Linuxa, posiadasz 14MB pamięci virtualnej.

Korzystając z obszaru wymiany, Linux przenosi na dysk niewykorzystywane sptrony pamięci, pozwalając uruzhomić więcej aplikacji w tym samym czasie. Ponieważ wymiana pamięci jest powolna, nie jest to sposób na zwiekszenie rozmairu pamięci RAM. Jednakże aplikacje, które wymagają dużej pamięci (jak X Window System) często polegają na pamięci wymiany, w przypadkach gdy jest niedostatecznie dużo pamięci RAM.

Niemal wszysy użytkwonicy Linuxa korzystają z partycji wymiany. Jeśli posiadasz 4MB RAM , partycja wymiany jest konieczna aby można zainstalować Linuxa. Mocno zalecamy utowrzenie partycji wymiany na stałe chyba, że posiadasz w swoim komputerze dużą ilość pamięci RAM.

Rozmaiar partycji wymiany zależy jak dużo potrzebujesz pamięci wirtualnej. Często zaleca się aby mieć minimum 16MB pamięci wirtualnej (RAM + pamięć wymiany). Czyli jeśli masz 8MB ram powinieneś utworzyć partycję wymiany o rozmiarze 8MB. Pamiętaj, że partycja wymiany nie może być większa niż 128 MB. Dlatego jeśli potrzebujesz pamięci wymiany więcej niż128 MB, musisz utworzyć większą liczbę partycji wymiany. Mozesz mieć nie więcej niż 16 partycji wymiany.

Wiećej inforamcji na temat teorii obszaru wymiany i partycji w dokumencie Linux Partition mini-HOWTO ( http://sunsite.unc.edu/mdw/HOWTO/mini/Partition).

Uwaga: jest możliwe (choć jest to trochę sztuczka) współdzielenie partycji wymiany między linuxem i Windows 95 w konfiuracjach, gdzie oba te systemy są zainstalowane. Więcej inforamcj w tym temacie zawiera dokument Linux Swap Space Mini-HOWTO, http://sunsite.unc.edu/mdw/HOWTO/mini/Swap-Space.

Uwaga #1: Ieśli posiadasz dysk EIDE z partycjką większą niż 504MB, twOj BIOS może nie pozwolić na wystartowanie zainstalowanego na niej Linuxa. Pamiętaj aby utrzymywać swoją partycję główną poniżej granicy 504MB. To nie powinno być problemem w przypadku sterowników SCSII, które mają zwykle własny BIOS. Szczególy techniczne znajdziesz w Large Disk Mini-HOWTO, http://sunsite.unc.edu/mdw/HOWTO/mini/Large-Disk.

Uwaga #2: Uzywasz jednocześnie dysków IDE i SCSI? Jesli tak, to uważaj. BIOS może nie pozwalać na usuchamianie systemu z dysku SCSI.

Rozmiary partycji

Poza partycją wymiany i partycją dla głównego systemu plików, będziesz chciał dodatkowe na przechowywanie oprogramowania i katalogów macierzystych użytkowników.

Teoretycznie możliwa jest konfiguracja z jedną duża partycją na wszystko, lecz niemal nikt tego nie robi. Posiadanie więcej niż jedna partycji ma kilka zalet:

W dzisiejszych czasach ogromnych dysków, dobra konfiguracja podstawowa używa małej partycji głównej (poniżej 80MB), średniego rozmiaru partycji /usr (do 300MB) na oprogramowanie systemowe i partycję /home przeznaczoną dla pliku użytkowników, która w zleżności od twojej decyzji może wykorzystywać pozostałą część dysku lub odpowiednią liczbę MB.

Jeśli przewidujesz uruchomoienie Usenet News, możesz przydzielić oddzielną partycję katalogowi /var przeznaczoną na pocztę, newsyi pliki tymczasowe lub wydzielić specjalną partyucję tylko dla obsługi Usenet News, kontrolując w ten sposób maksymalne możliwe wykorzystanie zasobów dyskowych przez Usenet News. Lecz w dzisiejszych czasach kiedy ogrome dyski są coraz tańsze ważniejsze jest aby to wszystko było dla ciebie zrozumiałe, dlatego swoją pierwszą instalację Linuxa zrób po prostu w najprostszy sposób.

5.5 Ładowanie dysku startowego (boot disk)

Pierwszym krokiem jest uruchomienie systemu ze zrobionego przez ciebie dysku startowego. Zwykle Linux Laduje się bez jakiejkolwiek ręcznej ingerencji. Zachęta startowa zniknie po 10 sekundach. Lecz podając w zachęcie startowej po nazwie jądra różne parametry masz możliwość przekazaniu jądru różnych informacji o konfiguracji twojego sprzętu, np. adres i numer przerwania sterownika SCSI lub geometrię dysków. Jest to konieczne, gdy Linux sam nie wykryje kontrolera SCSI lub geometrii dysku.

W szczególnośći wiele sterowników SCSI bez BIOSu wymaga podania adresu portu i przerwania IRQ podczas ładowania systemu. Komputery IBM PS/1, ThinkPad i ValuePoint nie przechowują geometrii dysku w pamięci CMOS i należy je podać podczas uruchamiania systemu. (Później będziesz miał możliwość takiego skonfigurowania systemu aby sam mógł przekazywac niezbędne parametry).

Uważaj na komunikaty wyświetlane podczas ładowania systemu. Znajdziesz tam informacje o sprzęcie jaki został wykryty przez jądro. W sczególności jeśli masz sterownik SCSI powinieneś zobaczyć listę wykrytych urządzeń SCSI. Jeśli zobaczysz komunikat:

SCSI: 0 hosts

to znaczy, żę sterownik SCSI nie został wykryty i muszisz powiadomić jądro gdzie go szukać.

System będzie wyświetlał informacje o znalezionych partycjach i wykrytych urządzeniach. Jeśli któraś z tych informacji nie jest poprawna lu brakuje innej, której się spodziewałeś będziesz musiał wymusić wykrycie sprzędu prze podanie odpowienich parametrów na zachęcie startowej.

Z drugiej strony, gdy wszysko idzie jak po maśle i wygląda, zę wszystkie urządzenia zostały rozpoznane prawidłowo, przejdź do następnego rozdziału ``Ładowanie dysku z głównym systemem plików (root disk)''.

Wymuszenie wykracia urządzenia polega na wprowadzeniu w wierszu zachęty startowej ospowiednich parametrów wg. następującej składni:

linux <parameters...>

Dostępnych jest kila/nascie róznych parametrów. Przedstawimy kilka najbardziej popularnych. Nowoczesne instalacje konstruują dysk startowy w ten sposób, abyś mógł uzyskać dodatkową pomoc w czasie wpisywania danych w wierszu zachęty startowej. Bedą tam opisane parametry jądra które mozęsz wykorzystać.

Jeśli masz pytania dotyczące opcji startowych, proszę przeczytaj Linux SCSI HOWTO, które powinno być dostępne w każdym archimuwm FTP (lub tam skąd otrzymałkeś ten dokument). SCSI HOWTO dokładniej objaśnia sprawy związane z SCSI i Linuxem.

5.6 Korzystanie z dyskietką z głównym systeme plików (root disk)

Po wystartowaniu systemu z dyskietki startowej zostaniesz poproszony o włożenie dyskietki(ek) z systemem plików. W tym momencie powinieneś wyjąć z napędu dyskietkę startową i włożyć w jej miejsce dyskietkę z systemem plików (root disk). Następnie wciśnij enter. Być może za chwilę będziesz musiał włożyć kolejną dyskietkę z systemem plików.

Co się w tej chili dzieje? Dyskietka z systemem plików zapewnia minimalne oprogramowanie tworząc miniaturowy system operacyjny wykorzystując do tego dysk w pamięci RAM (ponieważ twardy dysk nie jest jescze przygotowany) tzw. ramdysk.

Dysk z systemem plików ładuje do ramdysku mały zestaw niezbędnych plików i programów instalacyjnych, z których będziesz korzystał do przygotowania twardego dysku i zainstalowania później na nim (z krążka ćd lub innego nośnika) pełnego systemu.

Instalacja w trybie tekstowym lub graficznym (X)

Starsze dystrybucje (włączając Sackware) udostępniały w tym momencie interperter poleceń (shell) i wymagały wprowadzenia ręcznie poleceń instalacyjnych do tego w odpowiedniej kolejności. Jest to nadal możliwe, lecz nowsze dystrybucje uruchamiają programy instalacyjne (wybór z menu za pomoca klawiszy kursora), które starają się w sposób interaktywny poprowadzić cię przez procedurę instalacyjną, dając po drodze mnóstwo wskazówek.

Prawdopodobnie będziesz maił również możliwość skonfigurowania X, tak aby dalsza częsć instalacji mogła zostać przeprowadzona w trybie graficznym. Jeśli wybierzesz tę drogę, program instalcyjny przepyta cię jaką myszkę posiadasz, jaka karta graficzna jest zinstalowana w twoim komputerze, jakiego monitora używasz. Po zainstalowaniu Linuxa podane tutaj przez ciebie informacje zostaną zachowane dla ciebie. Będziesz mógł je później dostroić tak., aby lepiej wykorzystać posiadany sprzęt, ponieważ na tym stopniu instalcji wystarczy ustawić podstawową rozdzielczośc 640x480 SVGA.

X nie sa konieczne do instalacji, lecz (zakładając, że uda się je poprawnie skonfigurować) wielu ludzi znajduje ten sposób instalcji łatwiejszym w użyciu. Tak czy inaczej będziesz chciał uruchomić X, więc zrobienie tego na samym początku też ma trochę sensu.

Po prostu daj się prowadzić programowi. Przeprowadzi cię przez niezbędne stopnie instalacji: przygotowanie twardego dysku, utworzenie początkowych kont użytkowników, istalacja dodatkowych pakietów oprogramowania.

W kolejnych podrozdziałach opiszemy pewne obszary, które mogą sprawiać trochę trudności, tak jak byś musiał je wykonywać ręcznie. Powinno ci to pozwolić zrozumieć co tak na prawdę robi program instalacyjny i dlaczego to robi.

Korzystanie z fdisk i cfdisk

Twoim pierwszym zadanie mpo załadowaniu jądra Linux abędzie utworzenie lub zmiana tabel partycji na dyskach. Nawet jeśli już zrobiłeś coś za pomoćą DOSowgo programu FDISK, musisz teraz powrócić do tego tematu i wprowadzić dodatkowe, specyficzne dla Linuxa informacje.

To tworzenia lub zmiany partycji Linuxa korzystamy z programu fdsik w wersji dla Linuxa, lub jego okienkowej wersji cfdisk.

Zwykle program instalacyjny sprawdza czy istnieją już odpowiednie tabele partycji i proponuje uruchonienie dla nich fdisk lub cfdisk. cfdisk jest z pewnościa łatwiejszy w użyciu, lecz jego aktualne wersje są również bardziej wrażliwe na nieprawidłowe lub uszkodzone informacje jakie mogą znaleźć w tabeli partycji.

Dlatego (szczególnie podczas instalacji na nowym sprzęcie) może się okazć, że musisz wpierw uruchomić fdisk aby nadał tabelom partycji stan, który jest już odpowiedni dla programu cfdisk. Spróbuj uruchomić cfdisk, jeśli będzie się na coś skarżył, uruchom fdisk. (Jeśli budujesz system jedynie dla Linuxa, to dobra może się okazać metoda uruchomienia fdsik i usunięcia wszystkich partycji, a następnie założenie ich na nowej, pustej tabeli partycji bardziej intuicyjnym programem cfdisk.)

Kilka uwag, które mają zastosowanie zarówno do fdisk, jak i cfdisk. Oba rozumieją podany im argument jako nazwa dysku na którym chcesz wykonać operację. W Linuxie kolejne dyski nazwywane są następująco:

Przykład: aby utworzyć partycję Linuxa na pierwszym dysku SCSI, powinieneś użyć polecenia (twój program instalacyjny może ją wygenerować na podstawnie podanych przez ciebie informacji):

cfdisk /dev/sda

Jeśli uruchomisz fdisk lub cfdisk bez żadnych argumentów, dyskiem domyślnym będzie w takiej systuacji /dev/hda.

Aby utworzyć partycję Linux na drugim dysku, po prostu podaj /dev/hdb w przypadku dysku IDE lub jeśli używasz dysków SCSI /dev/sdb.

Partycje Linuxa nie muszą być na tym samym fizycznym dysku. Mogłbyś utworzyć partycję dla głównego systemu plików na dysku /dev/hda i partycję wymiany na dysku /dev/hdb. W takim przypadku uruchom fdisk lub cfdisk dla każdego dysku.

Pod Linuxem, partycje otrzymują nazwy w zależności od dysku do którego należą. Np. perwsza partycja na dsyku /dev/hda nazywa się /dev/hda1,druga /dev/hda2 itd. Jeśli masz jakieś partycje logiczne ich nazwy rozpoczynają sę od /dev/hda5 i kolejno /dev/hda6 itd.

Uwaga: Nie powinieneś Linuxowymi programami fdsik lub cfdisk tworzyć lub usuwać partycji dla systemów peracyjnych innych niż Linux. To znaczy nie twórz lub usuwaj partycji MS-DOS za pomocą narzędzi Linuxa; wykorzystaj w tym celu programy jakie dostarcza MS-DOS (FDSIK). Jeśli stworzysz partycję MS-DOS za pomocą programu fdsik lub cfdisk istnieje możliwość, żę msdos jej nie rozpozna nie nie wystartuje poprawnie.

Oto przykład wykorzystania programu fdsik>. Mamy pojedynczą partycję MS-DOS o rozmiarze 61693 bloków. Reszta dysku jest wolna dla Linuxa (pod Linuxem jeden blok oznacz a1024 bajrty, czyli 61693 oznacza 61 MB). W tym przykładzie utworzymy dwie partycje, wymiany(swap) i głównego systemu plików(root). Być może, po przeczytaniu dyskucji o podziale dysku na partycje, powinieneś rozszerzyć ten przykład do czterech partycji: wymiany, głownego systemu plików (), systemu plików dla oprogramowania systemowego (/usr) i partycji dla plików użytkowników (/home).

Na początku wydajemy polecenie ``p'' aby wyświetlić aktualny stan tabeli partycji. Jak widać, /dev/hda1 (pierwsza partycja dysku /dev/hda) jest partycją DOSową o rozmiarze 61693 bloków.

Command (m for help):   p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders 
Units = cylinders of 608 * 512 bytes

     Device Boot  Begin   Start     End  Blocks   Id  System
  /dev/hda1   *       1       1     203   61693    6  DOS 16-bit >=32M

Command (m for help):

Następnie wydajemy polecenie ``n'' w celu utworzenia nowej partycji. Partycja na główny system plików będzie miała 80MB.

Command (m for help):  n 
Command action 
    e   extended 
    p   primary partition (1-4)
p

Tutaj program spytał się , czy chcemy utworzyć partycję podstawową czy rozszerzoną. W większości przypadków chesz utworzyć partycje podstawową, chyba, ze potrzebujesz podzielić dysk na więcej niż 4 partycje. Patrz rozniał ``Zmiana rozmiaru partycji'', tam ta sprawa byłą dyskutowana dokładniej.

Partition number (1-4): 2
First cylinder (204-683):  204
Last cylinder or +size or +sizeM or +sizeK (204-683): +80M

Pierwszy cylinder partycji powinien być pierwszym cylindrem za poprzednią partycją. W tym przypadku /dev/hda1 kończy się na cylindrze 203, więc rozpoczynamy nową partycję od cylindra 204.

Jak widać korzystamy z notacji ``+80M'', definiuje partycję o rozmiarze 80MB. Podobnie notacja ``+80K'' określa partycje o rozmiarze 80KB, a podanie ``+80'' stworzyło by partycję o rozmiarze 80 bajtów.

Warning: Linux cannot currently use 33090 sectors of this partition
Ostrzeżenie: Linux nie może wykorzystać 33090 sektorów tej partycji.

Jeśli zobaczycs takie ostrzeżenie, możesz je zignorować. Pozostało ze starych czasów, kiedy system plików Linuxa nie mógł przekraczać rozmiaru 64MB. Jednakże nowe systemy plików przełamały tę brierę. W chwili obecnej partycje mogą mieć maksymalny rozmiar 4 terabajtów.

Następnie tworzymy partycję wymiany o rozmiarze 10 MB, /dev/hda3.

Command (m for help): n
Command action 
    e   extended 
    p   primary partition (1-4) 
p

Partition number (1-4): 3
First cylinder (474-683):  474
Last cylinder or +size or +sizeM or +sizeK (474-683):  +10M

Ponownie przeglądamy zawartość tabeli partycji. Pamiętaj o zanotowniu tych informacji, sczególnie rozmiarów poszcególnych partycji w blokach. Będziesz potrzebować tych informacji później.

Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders 
Units = cylinders of 608 * 512 bytes

     Device Boot  Begin   Start     End  Blocks   Id  System
  /dev/hda1   *       1       1     203   61693    6  DOS 16-bit >=32M
  /dev/hda2         204     204     473   82080   83  Linux native
  /dev/hda3         474     474     507   10336   83  Linux native

Zwróć uwagę, że partycja wymiany (tutaj /dev/hda3) jest typu ``Linux native''. Musimy zmienić jej typ na ``Linux swap'', tak aby program instlacyjny mogł ją rozpoznać. W tym celu wykonaj polecenie t programu fdisk:

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82

Jeśli skorzystasz z polecenia ``L'' to zobaczysz, że 82 odpowiada typowi Linux swap.

Aby zkończyć prace programu fdisk i zachować poczynione zmiany na dysku, należy wydać polecenie ``w''. Aby wyjść BEZ zachowywania jakichkolwiek zmian należy wcisnąć ``q''.

Po zakończeniu pracy z programem fdisk, system może zasugerować restart komputera, aby upewnić się, że wprowadzone zmiany zostaną zauważone przez system. Zasadniczo nie ma powodu do restartu komputera po zakończeniu pracy fdisk -- nowe wersje fdisk i cfdisk są na tyle sprytne, że potrafią uaktualnić tabelę partycji bez restartowania systemu.

Czynności po przydzieleniu partycji

Po edycji tabeli partycji, program instalacyjny powinien zajrzeć do nich i zaoferować włączenie obszaru wymiany (swapa). Odpowiedz Tak.

(System pyta się o włączenie partycji wymiany, aby zminimalizować możliwość popełnienia błędu w sytuacji, gdy na dysku istniją partycje innych systemów operacyjnych i jedna z partycji nie należących do Linuxa zostanie mylnie rozpoznana jako partycja wymiany.)

Następnie program poprosi o przydzielenie nazw katalogów (takich jak /, /usr, /var, /tmp, /home itp) każdej partycji Linuxowej, którą pragniesz wykorzystać.

Istnieje tylko jedna prosta zasada. Musi istnieć system plików o nazwie / i musi umożliwiac załadowanie systemu (bootable). Pozostałe partycje mogą zostać nazwane zupełnie dowolnie. Lecz są pewne konwencje mowiące jak je nazwać ( w którym miejscu drzewa plików mają być zamontwane), które (jeśli się do nich dostosujesz) w przyszłości ułatwią ci życie.

Wcześnej polecaliśmy podstawową konfiguracje składającą siez trzech partycji, małej partycji głównej, średniego rozmiaru partycji przeznaczonej an oprogramowanie systemowe i dużej partycji dla katalogów macierzystych użytkowników. Tradycyjne partycje te będą montowane w katalogach /, /usr i /home. Nazwa /usr pochodzi z zamierzchłych czasów, gdy (znacznie mniejsze) systemy UNIX przechowywały pliki systemowe i katalogi użytkowników na jednej partycji (innej niż partycja główna /). Część oprogramowania nadal polega na tej właściwości.

Jeśli posiadasz więcej niż jeden obszar katalogów domowych użytkowników, zwykle nazywa się je /home1, /home2, /home3. Tak się może stać gdy posisadasz dwa fizyczne dyski. Na naszym komputerze układ systemu plików wygląda następująco.

Filesystem         1024-blocks  Used Available Capacity Mounted on
/dev/sda1              30719   22337     6796     77%   /
/dev/sda3             595663  327608   237284     58%   /usr
/dev/sda4            1371370    1174  1299336      0%   /home
/dev/sdb1            1000949  643108   306130     68%   /home2

Drugi dysk (sdb1) nie jest w całości przydzielony do /home2/ Partycja wymiany znajdująca się na tym dysku nie została ujęta w wykazie. Możesz zobaczyć, że partycja /home jest największym obszarem na sda i /home2 jest obszarem użytkownika na dysku sdb.

Jeśli zamierzasz stworzyć partycję na pliki robocze (scratch), spool, tymczasowa, pocztową lub newsową nazwij ją ./var. FIXME W przeciwnym wypadku prawdopodobnie chcesz utowrzyć katalog /usr/var i utworzyć dowiązanie symbliczne /var wskazujące właśnie na ten katalog (/usr/var). Program instalacyjny może zaoferować zrobiebie tego za ciebie.

5.7 Instalacja pakietów z oprogramowaniem

Po przygotowaniu partycji pozostała część instalacji powinna być automatyczna. Twój program instalacyjny poprowadzi cię przez liczne menu i pozwoli określić skąd będą instalowane pakiety, na kórych partycjach będzeie instalowany Linux itd.

Nie zamierzamy tutaj dokumentować wszystkich szegółow specyficznych dla tej części instalacji. Jes to część, która różni się najbardziej między dystrybucjami (utorzy tradycyjnie współzawodniczą aby zyskać tutaj jak najwięcej), lecz jest to również jedna z najprostszych częsci instalacji. A programy instalacyjne są intuicyjne, z ekranami pomocy, które można wywołać niema w dowolnym momencie instalowania pakietów.

5.8 Po zinstalowaniu pakietów z oprogramowaniem

Po zinstalowaniu pakietów z oprogramowaniem, jeśli wszystko przebiegło bez kłopotów, program instalacyjny, zanim po raz pierwszy załaduje jądro z twrdego dysku przeprowadzi cię przez kilka procedur konfiguracji poszczegórnych części systemu.

LILO, LInux LOader czyli ładowacz Linuxa

LILO (skrót od LInux LOader) jest programem, który pozwala załadować Linuxa (jak również inne systemy operacyjne, np. MS-DOS) z twardego dysku twojego komputera.

Program instalacyjny spyta się, czy zainstalować LILO na twoim dysku. Jeśli nie posiadasz na tym dysku OS/2, odpowiedz `tak'. OS/2 ma specjalne wymagania, patrz Wybrane konfiguracje LILO

Zainstalowanie LILO jako podstawowego ładowacza systemów powoduje, że dodatkowa dyskietka startowa staje się niepotrzebna. Przy każdym starcie komputera, możesz powiedzieć LILO, który system ma załadować.

Tworzenie dyskietki startowej (opcjonalnie)

Program instalacyjny może ci również dać szansę utworzenia ``standardowej dyskietki startowej'', której możesz użyć do uruchomienia twojego nowo zinstalowanego Linuxa. (Jest to starsza i mniej wygodan metoda, która zakłada, że zwykle bedziesz uruchamiał MS-DOS, lecz gdy będziesz chciał uruchomić Linuxa skorzystasz z tej dyskietki startowej.)

Aby ją zrobić, potrzebujesz czystej, foramtowanej dyskietki wysokiej gęstości (1.2, 1.44 takiej, jak naped A:) Po prostu kiedy cię o to poprosi program instalacyjny włóż dyskietkę do napędu i dyskietka startowa zostanie utworzona. (to nie jest to samo co instalacyjna dyskietka startowa i nie możesz ich wzajemnie zamieniać.)

Dodatkowa konfiguracja systemu

Procedura poinstalacyjna może cię również prowadzić przez wiele menu, pozwalając skonfigurować twój system. To znaczy określic rodzaj i miejsce podłączenia myszy i modemu, strefę czasową i inne parametry. Po orostu staraj się odpowiadać na pytania.

System może ci również zaproponować utowrzenie kont użytkowników, lub założenie hasła na koto administratora (root). Nie jest to trudne i zwykle polega na przeczytaniu instrukcji i wykonaniu prosrych czynności.

6. Ładowanie nowo zainstalowanego systemu

Jeśli wszystko poszło zgodnie z planem, powinieneś mieć teraz mozliwość załadowania z twardego dysku Linuxa, wykorzystując do tego LILO. Alternatywą jest załadowanie Linuxa z nowo utworzonej dyskietki startowej (nie oryginalnej startowej dyskietki instalacyjnej). Po załadowaniu systemu zaloguj się jako root. Gratulacje! Masz swój własny system Linux.

Jeśli ładujesz system za pomocą LILO, spróbuj podczas restartu komputera przycisnąc (i trzymać przyciśnięty) przycisj shift, control, lub alt. Pozwoli to na uzyskanie dostępu do wiersza zachęty startowej (boot prompt). Wciśnij tab, a zobaczysz listę opcji. W ten sposób możesz załadować bezpośrednio przez LILO Linuxa, MS-DOS lub cokolwiek innego.

7. Po pierwszym uruchomieniu Linuxa

Powinieneś właśnie patrzeć na zachęte do wejścia do systemu. Gratulacje!

7.1 Bycie administratorem systemu

W zależności od tego jak przebiegła faza instalacji, możesz chcieć utworzyć konta użytkowników, zmienić nazwę swojego komputera lub skonfigurować (na powrót) X. Jest znacznie więcej rzeczy, które mogłbyć ustawiać i konfiguraować, urządenia do wykonywania kopii, połączenie SLIP/PPP z dostawcą Internetu itp.

Powinna ci pomóc dobra książka o administrowaniu systemem UNIX. (Sugerujemy Essential Systems Administration, O'Reilly and Associates.) Z czasem nabierzesz doświadczenia. Powinieneś przeczytać różne inne dokumenty Linux JTZ, takie jak NET-2-JTZ czy Printing-JTZ.

7.2 Wybrane konsiguracje LILO

LILO jest programem ładującym systemy operacyjne , który można wykorzystać do wyboru w czasie uruchamiania komputera, który dokładnie system oeracyjny ma tym razem zostać załadowany. Sa duże szanse, że program instalcyjny automatycznie skonfigurował i zainstalował LILO podczas instalacji systemu (chyba, że używasz OS/2, wedy powinieneś wykonać to o czym tutaj piszemy). Jeśli tak, to możesz pominąć resztę tego rozdziału.

Jeśłi zainstalowałeś LILO jako podstawowy (primary) ładowacz systemu, będzie obsługiwał pierwszy stopień procesu ładowania systemu dla wszystkich systemów operacyjnych zainstalowanych na twardym dysku. Jednakże możesz pracowaćz OS/2 który ma własnego ładowacz, Boot Manager. W takim przypadku chesz aby Bot Manager był podstawowoym ładowaczem systemu i wykorzystywał lilo do załadowania Linuxa (jako drugorzędny ładowacz systemu).

Jeśli muszisz skonfigurować LILO ręcznie, bedzie to wymagało edycji pliku /etc/lilo.conf. Poniżej przedstawiamy przykład pliku konfiguracyjnego LILO, dla pryzpadku gdy główną partycją Linuxa jest /dev/hda2, a MS-dOS jest zainstalowany na /dev/hdb1 (na drugim fizycznym dysku).

# Powiedz LILO, aby się zainstalwoał jako podstawowoy ładowacz systemu na
# dysku /dev/hda.
boot = /dev/hda
# Plik z obrazem programu ładującego;prawdopodobnie nie powinieneś tego zmieniać
install = /boot/boot.b

# Schemat ładowania Linuxa
image = /vmlinuz       # plik zawierający jądro
  label = linux        # nadajmy tej pozycji nazwę "linux"
  root = /dev/hda2     # /dev/hda2 jako główny (root) syste, plików
  vga = ask            # zapytaj się o tryb VGA
  append = "aha152x=0x340,11,7,1"  # dodaj to do zachęty startowej
                                   # (parametry przekazywane do jądra)
                                   # w cely wykrycia sterownika SCSI

# schemat ładowania MS-DOSu
other = /dev/hdb1      # To jest partycja MS-DOS
  label = msdos        # nadajemy tej pozycji nazwę "msdos"
  table = /dev/hdb     # Tabela partycji drugiego dysku

Po zakończonej edycji pliku /etc/lilo.conf uruchom program /sbin/lilo jako root. W ten sposó zainstalujesz LILO na swoim dysku. Pamiętaj, ze muszisz uruchmić /sbin/lilo po każdej kompilacji jądra, aby ładowacz wskazywał na prawidłowy plik (coś czym się teraz nie powinieneś zupełnie przejmować, lecz należy pamiętać).

Zwróć uwagę na sposób wykorzystania opcji append w pliku /etc/lilo.conf w celu podania parametrów startowych, jak to robiliśmy uruchamiając system z instalacyjnej dyskietki startowej.

Możesz teraz zrestartować komputer i załadować system z twardego dysku. LILO załaduje domyślnie system który jest opisany w pliku konfiguracyjnym jako pierwszy. Aby uzyskać dostęp do wiersza zachęty starowej i menu dostępnych systemów, trzymaj w czasie startu komputera przyciśnięty klawisz shift, control lub alt; powinieneś zoaczyć taką zachętę:

Boot:
Podaj teraz etykietę/nazwę systemu operacjnego jaką nadałeś każdej pozycji w pliku /etc/lilo.conf; w tym przypadku będzie to albo linux albo msdos, lub wciśnij tab aby uzyskać listę etykiet.

Załózmy teraz, ze chcesz wykorzystać LILO jako drugorzędny ładowacz sytemu,np. gdy chcesz ładować Linuxa za pomocą Boot Managera systemu OS/2. Aby załadować system z Partycji Linuxa pod Boot Managerem niestety musisz utworzyć tę partycję za pomocą programu FDISK systemu OS/2 (nie programem fdisk w dystrybucji Linuxa) i sformatować ją jako FAT lub HPFS, tak aby OS/2 o niej wiedział (podziekuj IBM).

Aby LILO ładowało Linuxa za pomocą Boot Managera, chcesz aby LILO zainstalowało się tylko na partycji głównej Linuxa (w naszym przykładzie jest to /dev/hda2). W takim przypadku plik konfiguracyjny LILO będzie wyglądał następująco:

boot = /dev/hda2
install = /boot/boot.b
compact

image = /vmlinuz
  label = linux
  root = /dev/hda2
  vga = ask

Zwróć uwagę, na zmianę w wierszu boot. Po uruchomieniu /sbin/lilo powinieneś być w stanie dodać partycję Linuxa do listy Boot Managera. Ten sam schemat postępowania powinien działać również w przypadku innych systemów operacyjnych.

8. Uwagi administracyjne

8.1 Warunki korzystania

Prawa autorskie do tego dokumentu należą do 1996 by Eric S. Raymond. Możesz swobodnie korzystać z tego dokumentu, rozpowszechniać i kopiować pod warunkiem, że:

Powyższe ograniczenia mają na celu ochronę potencjalnych czytelników przed niepoprawnymi lub nieaktualnymi wersjami. Jeśli myślisz, że znalazłeś wyjątek o tej reguły, zapytaj mnie.

8.2 Podziękowania

Podziękowania dla Matta D. Welsha, który zapoczątkował ten dokument. Usunąłem większość specyficzną dla dystrybucji Slackware i ukierunkowałem reszte dokumentu na istalację z napędu CD, lecz znaczna część dokumentu nadal należy do niego,

Wersja 4.1 była znacząco ulepszona dzięki uwagom David Shao <dshao@best.com>.

9. Od tłumacza

Prawa autorskie tłuamczenia należą do (c)1997 piotr.pogorzelski@ippt.gov.pl. Wersję polską można rozpowszechniać na warunkach opisanych powyżej. Zmiany w stosunku do wersji angielskiej:

Najnowsze wersje przetłumaczonych na język polski dokumentów HOWTO szukaj tutaj: http://www.jtz.org.pl.

Kontakt z osobami zajmującymi się tłumaczeniami: jtz@ippt.gov.pl.

Powodzenia.

doc-linux-pl-2002.06.14.orig/html/Intranet-Server-HOWTO.pl.html0100664000175000017500000012663106770264140022602 0ustar covencoven Linux Intranet Server HOWTO

Linux Intranet Server HOWTO

Autor: Pramod Karnad karnad@indiamail.com
v2.11, 7 Kwietnia 1997
Wersja polska: Leszek Urbański tygrys@fidonet.org.pl
v1.0, 31 Lipca 1998


Ten dokument opisuje jak ustawić Intranet używając Linuxa jako serwer obsługujący Unixa, Netware, NT i Windows. Wystarczy nawiązać połączenie z maszyną Linuxową, aby używać wszystkich platform. Znajdują się tu dokładne objaśnienia jak ustawić HTTP używając serwera NCSA, oraz jak połączyć się z nim używając klientów TCP/IP Novell'a, Microsoft Windows 3.1, WFWG, Win 95, WinNT i MacTCP z Apple PowerMac. Dokument ten został napisany w standardzie ISO8859-2. Oryginał tego dokumentu znajduje się na http://www.inet.co.th/cyberclub/karnadp/http.html.

1. Wprowadzenie

Mówiąc prosto, Intranet to opisowy wyraz używany dla implementacji technologii Internetowych w organizacjach korporacyjnych, bez zewnętrznego połączenia do globalnego Internetu. Ta implementacja jest wykonana w taki sposób, żeby dostarczyć ogromne zasoby informacyjne organizacji do każdego miejsca pracy, z minimalnym kosztem, czasem i wysiłkiem. Ten dokument stara się wytłumaczyć w prosty sposób, jak ustawić Intranet używając gotowych, tanich lub darmowych narzędzi.

Ten dokument przyjmuje, że wiesz już, jak zainstalować TCP/IP w twoim serwerze Linuxowym, oraz połączyć go fizycznie do sieci LAN używając karty sieciowej Ethernet. Przyjmuje też, że posiadasz podstawową wiedzę o systemach Netware, WinNT i Mac'ach. Konfiguracja serwera Netware została pokazana na przykładzie wersji 3.1x jako podstawy. Możesz też użyć INETCFG, uzyskując ten sam rezultat. Po stronie klientów, omawiamy Windows 3.1x, Windows for Workgroups, Win95, WinNT, oraz Apple PowerMac.

W przykładach używam prywatnych adresów sieci (RFC-1918) - 172.16.0.0 i 172.17.0.0. Możesz wybrać odpowiadające adresy, zależnie od twojej konfiguracji.


       Serwer       Serwer      Serwer
       Linuxowy     Netware     WFWG/NT
      172.16.0.1   172.16.0.2   172.16.0.3
         |           |           |           172.16.0.0
   ------+-----+-----+--------+--+--------------
               |              |
               |              | 172.16.0.254
          Stacja robocza 1  Router
           172.16.0.5         | 172.17.0.254
                              |
                    ----------+-------+--------
             172.17.0.0               |
                              Stacja robocza 2
                                  172.17.0.5

1.1 Co będzie potrzebne

Przed rozpoczęciem instalacji, będą potrzebne następujące programy:

1.2 Nowe wersje tego dokumentu

Nowe wersje Linux Intranet Server HOWTO będą okresowo wysyłane na comp.os.linux.announce i comp.os.linux.help. Będą też umieszczane na różnych Linuxowych serwerach FTP, włącznie z sunsite.unc.edu.

Najświeższa wersja tego dokumentu jest dostępna w formacie HTML pod adresem http://www.inet.co.th/cyberclub/karnadp/http.html

1.3 Kontakt z autorem

Jeżeli masz pytania lub komentarze o tym dokumencie, wyślij do mnie list na adres karnad@indiamail.com.

Sugestie, krytyka i każdy inny rodzaj poczty są zawsze mile widziane. Jeżeli znajdziesz błąd w tym dokumencie, daj mi znać, żebym mógł go poprawić w następnej wersji. Dziękuję.

2. Instalacja serwera HTTP

Kiedy ściągasz serwer, masz dwie opcje: pobrać źródła i skompilować je samodzielnie, albo wziąć binaria. Binaria pod Linuxa (ELF) są dostępne z NCSA, ale tylko najnowsza wersja.

2.1 Przygotowania przed ściąganiem

Serwer NCSA poprowadzi cię przez kolejne opcje konfiguracji i przygotuje różne pliki. Ale zanim ściągniesz HTTPd, przygotuj odpowiedzi na następujące pytania:

System Operacyjny

Po pierwsze musisz wybrać między źródłami i binariami. Jeżeli twój system nie figuruje w menu, będziesz musiał pobrać domyślne źródła i skompilować je samemu.

Żeby sprawdzić wersję twojego Linuxa przejdź do linii poleceń twojej maszyny i napisz:

  linux:~$  uname -a
powinna pojawić się linia podobna do tej
   linux:~$  uname -a
   Linux linux 2.0.29 #4 Tue Sep 13 04:05:51 CDT 1994 i586
   linux:~$

Wersja Linuxa to 2.0.29.

Pozostałe parametry mogą być podane przed ściąganiem lub później, podczas modyfikacji pliku srm.conf w katalogu /usr/local/etc/httpd/conf. Dokładne nazwy dyrektyw, które pojawiają się w pliku httpd.conf, są pokazane w nawiasach. Jedyny wyjątek to dyrektywa DocumentRoot, która pojawia się w pliku srm.conf.

Typ procesu (ServerType)

Ta dyrektywa określa sposób działania serwera HTTPd na twoim komputerze. Preferowana metoda to ,,standalone''. Dzięki temu demon HTTP będzie działał cały czas. Jeżeli wybierzesz ładowanie HTTPd przez ,,inetd'', binaria serwera będą ładowane do pamięci na każde zapytanie przeglądarek, co może spowolnić twój serwer.

Przydzielanie portu (Port)

Dyrektywa ta definiuje port twojej maszyny, na którym HTTPd będzie nasłuchiwał zapytań HTTP. Jeżeli możesz zalogować się jako root, użyj standardowego ustawienia - 80. Jeżeli nie, wybierz port od 1025 do 65535.

UserID serwera (User)

Jest to nazwa użytkownika, jaką przybierze serwer podczas odpowiadania na zapytania HTTP i wykonywania operacji na plikach. Musisz to ustalić tylko jeżeli serwer jest uruchamiany jako root. Jeżeli nie masz uprawnień root'a, użyj swoją nazwę użytkownika, a jeśli jesteś administratorem systemu, możesz chcieć stworzyć specjalnego użytkownika, żeby kontrolować prawa dostępu do plików.

Grupa identyfikacyjna serwera (Group)

Określa identyfikator grupy serwera. Jest to dyrektywa bardzo podobna do poprzedniej i jest potrzebna tylko wtedy, gdy serwer pracuje w trybie ,,standalone''.

Jeżeli nie masz uprawnień root'a, użyj nazwy twojej głównej grupy. Możesz dowiedzieć się, do jakiej grupy należysz, wydając polecenie groups w linii poleceń Linuxa.

Adres email administratora serwera (ServerAdmin)

Gdy użytkownicy serwera mają problemy z serwerem, powinni wysyłać pocztę pod adres określony tą dyrektywą. Możesz tu umieścić swój osobisty adres e-mail.

Katalog serwera (ServerRoot)

Jest to miejsce, w którym znajduje się serwer. Jeżeli masz uprawnienia root'a, umieść serwer w jego domyślnym katalogu - /usr/local/etc/httpd. Jeżeli nie możesz zalogować się jako root, wybierz podkatalog w twoim katalogu domowym. Możesz dowiedzieć się o nazwie twojego katalogu domowego komendą pwd.

Katalog plików danych serwera (DocumentRoot)

Ta dyrektywa określa miejsce plików HTML (nie tylko - np. plików graficznych, skryptów CGI itp. - przyp. tłum.). Domyślny katalog to /usr/local/etc/httpd/htdocs. Możesz także wybrać katalog domowy specjalnego użytkownika, którego wybrałeś dyrektywą ,,User'', albo podkatalog w twoim katalogu domowym, jeżeli nie możesz logować się jako root.

Jeżeli nie wiesz, jakie ustawienia wybrać, użyj domyślnych. Teraz możesz już ściągnąć NCSA HTTPd z http://hoohoo.ncsa.uiuc.edu/docs/setup/OneStep.html.

Powinieneś przeczytać dokumentację HTTPd, znajdującą się na http://hoohoo.ncsa.uiuc.edu/docs/, zanim zaczniesz instalować HTTPd. Jeżeli będziesz chciał skompilować kod źródłowy serwera, będziesz musiał zmodyfikować pliki makefile w każdym z trzech katalogów (support, src, cgi-src). Jeżeli twoja wersja Linuxa jest już obsługiwana przez te pliki, wystarczy tylko napisać make linux w katalogu serwera (np. /usr/local/etc/httpd). (? - przyp. tłum.)

2.2 Kompilacja HTTPd

Jest to prosta czynność - wystarczy napisać make linux w linii poleceń w głównym katalogu serwera. Uwaga: Użytkownicy starej wersji Linuxa, nie obsługującej binariów ELF, muszą odkomentować linię #define NO_PASS w pliku portablility.h (pamiętaj, że ,,#'' w pliku języka C jest dyrektywą kompilatora - można tam wpisać ,,define'' lub ,,undef'' - chociaż może jest to tam ,,zakomentowane'' dodatkowymi ,,#'' - przyp. tłum.) i ustawić DBM_LIBS = -ldbm w pliku Makefile przed kompilacją HTTPd.

3. Testowanie HTTPd

Po zainstalowaniu HTTPd, zaloguj się jako root i uruchom go, pisząc httpd &. (przyjmując, że zainstalowałeś go jako ,,standalone'') Powinieneś widzieć go teraz w liście generowanej przez polecenie ps. Najprostszy sposób przetestowania HTTPd, to telnet. W linii poleceń Linuxa napisz

   linux:~$  telnet 172.16.0.1 80

gdzie 80 jest domyślnym portem dla HTTP. Jeżeli ustawiłeś dyrektywę ,,Port'' na inny niż 80, wpisz ten numer zamiast 80. Powinieneś otrzymać odpowiedź wyglądającą tak jak to:

   Trying 172.16.0.1...
   Connected to linux.mydomain.
   Escape character is '^]'.

Teraz, kiedy wpiszesz jakikolwiek znak i naciśniesz enter, powinieneś otrzymać odpowiedź podobną do poniższej.

   HTTP/1.0 400 Bad Request
   Date: Wed, 10 Jan 1996 10:24:37 GMT
   Server: NCSA/1.5
   Content-type: text/html

   <HEAD><TITLE>400 Bad Request < /TITLE> < /HEAD>
   <BODY><H1>400 Bad Request < /H1>
   Your client sent a query that this server could
   not understand.<P>
   Reason: Invalid or unsupported method.<P>
   < /BODY>

Teraz możesz połączyć się z serwerem używając innych komputerów.

4. Łączenie się z serwerem Linuxowym

Odwołuję cię do diagramu w rozdziale Wprowadzenie, znajdują się tam używane w tym dokumencie adresy. Stacja robocza 1 (dalej nazywana W/S1) znajduje się w sieci 172.16.0.0 i może bezpośrednio połączyć się z serwerem Linuxowym, a Stacja Robocza 2 (W/S2) jest w sieci 172.17.0.0, musi więc używać bramki (gateway)/routera 170.17.0.254, żeby dostać się do maszyny Linuxowej. Adres bramki jest potrzebny tylko podczas konfiguracji W/S2. Netware odwołuje się do bramki jako do ,,ip_router''.

Uźyję W/S2 dla zilustrowania konfiguracji klientów. Żeby skonfigurować W/S1 zmień jedynie adres 172.17.0.5 na 172.16.0.5 i zignoruj wszystkie odwołania do bramki/routera.

Jeżeli nie masz routera, nie musisz czytać następnej sekcji - przejdź do

4.1 Konfiguracja serwera Linuxowego

Jeżeli nie masz routera, możesz ominąć tą sekcję.

Musisz skonfigurować serwer Linuxowy, żeby rozpoznawał router. Dzięki temu bedzie pozwalał Stacji Roboczej 2 połączyć się z serwerem WWW. Powinieneś zalogować się jako root, żeby skonfigurować serwer Linuxowy. W linii poleceń serwera napisz

   route add gw default 172.16.0.254

Żeby używać tej bramki za każdym razem, kiedy uruchamiasz serwer Linuxowy, wyedytuj plik /etc/rc.d/rc.inet1 i zmień linię zawierającą definicję bramki na GATEWAY = "172.16.0.254". Upewnij się, że linia GATEWAY nie jest odkomentowana.

(W dystrybucji RedHat możesz umieścić informacje o bramce m.in. w pliku /etc/rc.d/rc.local - wstaw tam polecenie ,,route add default gw 172.16.0.254'' - przyp. tłum.)

Możesz też dodać routing do konkretnych sieci po drugiej stronie routera. Możesz to uzyskać poleceniem

   route add -net 172.17.0.0 gw 172.16.0.254

W celu dodawania tego routingu przy każdym uruchomieniu Linuxa, dodaj powyższą komendę do pliku /etc/rc.d/rc.local.

4.2 Konfiguracja serwera NetWare

W celu skonfigurowania serwera Netware, powinieneś mieć uprawnienia nadzorcy (Supervisor) lub przynajmniej uprawnienia operatora konsoli (Console Operator). Jeżeli nie możesz ich uzyskać, poproś o pomoc twojego administratora sieci.

Na serwerze włącz typ ramek Ethernet_II w twojej sieci LAN, wydając następujące komendy, lub dołączając je do pliku AUTOEXEC.ncf.

   load NE2000 frame=Ethernet_II name=IPNET
   load TCPIP
   bind IP to IPNET addr=172.16.0.2 mask=FF.FF.FF.0

Możliwe, że będziesz musiał podać numer slotu karty podczas ładowania drivera NE2000 (zależnie od twojej konfiguracji). (np. ,,load NE2000 slot=3 frame=...'')

4.3 Konfiguracja klienta NetWare

Jeżeli używasz PC-tów, możesz wybrać pomiędzy Windows 3.1, WFWG (Windows for Workgroups - przyp. tłum.) i Windows '95. Procedura instalacji w Win95 różni się od starszych wersji windows jeżeli używasz 32 bitowego klienta Microsoftu lub Novella. Jeśli będziesz używać klienta 16 bitowego, procedura instalacji jest identyczna dla wszystkich tych środowisk, możesz więc używać instrukcji dotyczących Windows 3.x. Instrukcje instalacji klienta 32 bitowego znajdują się w sekcji Instalacja w Windows 95.

Windows 3.x

Jeżeli używasz Win3.1 lub WFWG, możesz zainstalować Klienta Netware (nazywanego ,,VLM'') i dodatkowe pliki dostarczane z dyskietką obsługi TCP/IP:

TCPIP.exe, VTCPIP.386, WINSOCK.dll i WLIBSOCK.dll

Zauważ, że plik WINSOCK.dll różni się od dostarczanych z Win95 i Trumpetem. Zainstaluj Klienta Netware z obsługą windows. Skopiuj pliki VTCPIP.386, WINSOCK.dll i WLIBSOCK.dll do katalogu SYSTEM, a plik TCPIP.exe do katalogu NWCLIENT. Zmodyfikuj teraz plik STARTNET.bat w katalogu NWCLIENT:

   lsl
   ne2000                    ----> driver twojej karty sieciowej
   c:\windows\odihlp.exe     ----> jeżeli używasz WFWG
   ipxodi
   tcpip                     ----> dodaj tą linię
   nwip                      ----> jeżeli używasz Netware/IP
   vlm

Stwórz podkatalog, powiedzmy, \NET\TCP i skopiuj pliki HOSTS, NETWORKS, PROTOCOLS i SERVICES z katalogu /etc serwera Linuxowego, lub katalogu SYS:ETC na serwerze Netware. Zmodyfikuj skopiowany plik HOSTS, dodając linię dotyczącą serwera Linuxowego. To pozwoli ci odwoływać się do serwera jako http://linux.mydomain/ zamiast http://172.16.0.1/, kiedy używasz przeglądarki WWW -

   127.0.0.1      localhost
   172.16.0.1     linux.mydomain

Zmodyfikuj plik NET.cfg w katalogu NWCLIENT

   Link Driver NE2000
       port 300
       int 3
       MEM D0000
       FRAME Ethernet_802.2

; ---- dodaj te linie ----

      FRAME Ethernet_II

   Protocol TCPIP
      PATH TCP_CFG C:\NET\TCP
      ip_address  172.17.0.5
      ip_netmask  255.255.255.0
      ip_router   172.17.0.254     ---> dodaj adres twojej bramki tylko
                                   ---> wtedy, jeżeli musisz jej używać,
                                   ---> żeby dostać się do serwera HTTP

   Link Support
      MemPool 6192       ---> Minimum to 1024 - spróbuj użyć innych wartości
      Buffers 10 1580    ---> To też może być wysterowane

;---------------------------------
; Jeżeli używasz Netware/IP będziesz musiał dodać takie linie
;
   NWIP
      NWIP_DOMAIN_NAME  mydomain
      NSQ_BROADCAST   ON
      NWIP1_1 COMPATIBILITY   OFF
      AUTORETRIES     1
      AUTORETRY SECS  10

W pliku SYSTEM.ini w katalogu WINDOWS dodaj taki wpis dla VTCPIP.386:

   [386Enh]
   .....
   network=*vnetbios, vipx.386, vnetware.386, VTCPIP.386
   .....

Zrestartuj komputer i uruchom STARTNET.bat. Możesz teraz używać swojej ulubionej przeglądarki WWW, żeby oglądać twoje strony. Nie musisz logować się do sieci Netware i uruchamiać TCPMAN (jeżeli używasz Trumpet Winsock).

Windows 95

Sekcja ta opisuje instalację 32-bitowego klienta dla Windows 95. Po pierwsze musisz zainstalować następujące składniki:

W celu ich instalacji kliknij na ikonach: Mój Komputer, Panel Sterowania, Sieć. Kliknij ,,Dodaj''. Znajdziesz się w oknie, w którym wyświetlone są następujące napisy: Klient, Karta, Protokół, oraz Usługa.

Żeby zainstalować Klienta sieci Netware, wykonaj następujące czynności:

  1. Kliknij dwukrotnie na napisie Klient
  2. Kliknij na ,,Microsoft'' lub ,,Novell''
  3. Kliknij dwukrotnie na ,,Klient Sieci Netware''

Żeby zainstalować protokół TCP/IP

  1. Kliknij dwukrotnie na napisie ,,Protokół''
  2. Kliknij na ,,Microsoft''
  3. Kliknij dwukrotnie na TCP/IP

Windows 95 domyślnie instaluje kilka innych protokołów. Usuń je, podświetlając je i klikając przycisk ,,Usuń''. Zazwyczaj Windows 95 instaluje protokół Microsoft NetBeui, oraz protokół kompatybilny z IPX/SPX. Możesz usunąć NetBeui, ale IPX/SPX będzie potrzebny, jeżeli będziesz chciał logować się na serwer Netware.

W celu skonfigurowania TCP/IP, kliknij na TCP/IP, Właściwości i na pasku ,,Adres IP''. Wprowadź adres IP w polu ,,Podaj adres IP'' jako 172.17.0.5. W polu ,,Maska Podsieci'' wprowadź 255.255.255.0. Następnie wybierz pasek ,,Bramka'' (lub ,,Router'' - przyp. tłum.); wprowadź adres bramki w polu ,,Nowa bramka'' - 172.17.0.254 i kliknij przycisk ,,Dodaj''. Adres bramki powinien znajdować się w polu zainstalowanych bramek. Kliknij OK.

Powinieneś zobaczyć prośbę o zrestartowanie komputera, zrób to. Powinieneś teraz być w stanie używać przeglądarki do połączenia się z serwerem HTTP.

4.4 Konfiguracja Klienta Microsoft

Ta sekcja koncentruje się na opisaniu dostępu do sieci TCP/IP za pomocą Klienta Microsoft, korzystając z systemów

Uwaga: Żebyś mógł odwoływać się do serwera Linuxowego jako http://linux.mojadomena/ zamiast http://172.16.0.1/ w przeglądarce WWW i programach intranetowych, musisz zmodyfikować plik hosts. Możesz też dodać rekordy dla wszystkich twoich komputerów (Netware, Unix, WinNT). Systemy Windows trzymają swój plik HOSTS w katalogu \WINDOWS lub w \WINDOWS\SYSTEM, zależnie od wersji. Zmodyfikuj ten plik, dodając linię dla serwera Linuxowego:

   127.0.0.1      localhost
   172.16.0.1     linux.mojadomena

   172.16.0.2     netware.mojadomena
   172.16.0.3     winNT.mojadomena
   172.16.0.5     ws_1

Windows for Workgroups

Ta sekcja opisuje instalację 32-bitowego klienta w WFWG. Najpierw musisz ściągnąć sterowniki TCP/IP dla Windows z serwera Microsoftu. Najnowsza obecnie wersja to 3.11b z ftp://ftp.microsoft.com/ lub z innych serwerów jako tcp32b.exe. Upewnij się, że zainstalowałeś Win32 przed uruchomieniem 32-bitowego sterownika TCP/IP.

Kiedy rozpakowałeś już pliki TCP/IP do tymczasowego katalogu (np. C:\TEMP, sprawdź, czy masz plik OEMSETUP.INF w katalogu \WINDOWS\SYSTEM. Jeżeli tak, zmień jego nazwę. Skopiuj OEMSETUP.INF z katalogu TEMP do \WINDOWS\SYSTEM. Jeżeli uruchamiałeś inne stosy TCP/IP w twoim systemie, usuń je zanim przejdziesz dalej.

Uruchom Ustawienia Sieci lub Ustawienia Windows/Zmień Ustawienia Sieci.

Powinieneś zostać zapytany o kartę sieciową - wybierz odpowiednią. Jeżeli nie zostałeś zapytany,

Zostaniesz poproszony o skonfigurowanie stosu TCP/IP. Zawsze możesz zmienić konfigurację, podświetlając protokół TCP/IP pokazany w polu Karty Sieciowe i klikając przycisk Ustaw.

Kliknij OK. System poprosi cię o zrestartowanie komputera, zrób to. Powinieneś móc przeglądać strony na serwerze HTTP.

Windows 95

Ta sekcja opisuje instalację 32-bitowego klienta Microsoft w Windows 95. Najpierw musisz zainstalować następujące komponenty:

W celu ich instalacji kliknij na ikonie Mój Komputer, następnie Panel Sterowania, Sieć. Kliknij ,,Dodaj''. Znajdziesz się w oknie z napisami: Klient, Karta, Protokół, oraz Usługa.

Żeby zainstalować Klienta Sieci Microsoft:

  1. Kliknij dwuktornie na ,,Klient''
  2. Kliknij na ,,Microsoft''
  3. Kliknij dwukrotnie na ,,Sieć Microsoft''

Instalacja protokołu TCP/IP:

  1. Kliknij dwukrotnie na ,,Protokół''
  2. Kliknij na ,,Microsoft''
  3. Kliknij na ,,TCP/IP''

Domyślnie Windows 95 instaluje kilka protokołów. Usuń je, podświetlając je i klikając przycisk ,,Usuń''. Zazwyczaj Win95 instaluje protokół Microsoft NetBeui.

W celu konfiguracji TCP/IP, kliknij na ,,TCP/IP'', ,,Właściwości'', oraz na pasku ,,Adres IP''. Wprowadź twój adres IP w polu ,,Podaj adres IP'' - 172.14.0.5. W polu ,,Maska Podsieci'' wpisz 255.255.255.0. Wybierz pasek ,,Bramka'' i wprowadź adres routera w polu ,,Nowa Bramka'' - 172.17.0.254. Kliknij przycisk ,,Dodaj''.

Adres bramki powinien się teraz pojawić w polu zainstalowanych bramek. Kliknij OK. Powinieneś otrzymać prośbę o zrestartowanie systemu - zrób to. Możesz teraz użyć przeglądarki, żeby połączyć się z serwerem HTTP.

Windows NT

Ta sekcja opisuje instalację klienta TCP/IP dla WinNT 4.0.

Powinieneś zostać zapytany o kartę sieciową - wybierz odpowiednią.

W celu dodania protokołu

Zostaniesz poproszony o skonfigurowanie stosu TCP/IP. W każdej chwili możesz zmienić ustawienia, podświetlając protokół TCP/IP i klikając na ,,Właściwości''.

Kliknij OK. System poprosi cię o restart. Możesz teraz używać dowolnej przeglądarki do łączenia się z serwerem HTTP.

4.5 Konfiguracja TCP/IP na Macintoshu

Jeżeli używasz Macintosha, możesz skorzystać z tej sekcji, opisującej instalację MacTCP na PowerMacach.

Uwaga: Żebyś mógł odowoływać się do serwera Linuxowego jako do http://linux.mojadomena/ zamiast http://172.16.0.1/ w przeglądarce WWW i wszystkich twoich programach intranetowych, musisz wyedytować plik hosts. Format tego pliku jest inny od stostowanego w Unixach. Plik hosts Maca jest oparty na RFC-1035. Możesz też dodać rekordy dla innych komputerów (Netware, Unix, WinNT). MacOS trzyma swój plik HOSTS w ,,folderze Preferencji'' w ,,folderze Systemowym''. Do tego pliku dodaj linię dla serwera Linuxowego:

  linux.mojadomena    A  172.16.0.1

  netware.mojadomena  A  172.16.0.2
  winNT.mojadomena    A  172.16.0.3
  ws_1                A  172.16.0.5

MacTCP

Ta sekcja opisuje instalację MacTCP. Najpierw musisz ściągnąć MacTCP z serwera Apple lub zainstalować go z ,,Internet Connection CD''. W celu skonfigurowania MacTCP, kliknij Menu Jabłko/ Panel Sterowania/ TCP/IP. W oknie konfiguracji wybierz ,,Połącz przez:'' ,,Ethernet''. Zmień ,,Ustawienie'' na ,,Ręczne''

Kliknij OK. Możesz połączyć się teraz z serwerem HTTP.

5. Konfiguracja Intranetu

Intranet nie jest kompletny bez możliwości dzielenia zasobów na róźnych platformach. Będziesz potrzebował obsługi innych systemów plików, w celu uzyskania dostępu do danych na nich. Ten dokument dostarcza informacji o podłączaniu Linuxa do komputerów z następującymi popularnymi systemami plików:

Te systemy plików mogą być wkompilowane do jądra Linuxa albo dodane jako moduły, zależnie od wersji Linuxa. Jeżeli nie wiesz, jak skompilować jądro, możesz odwołać się do Kernel HOWTO http://www.jtz.org.pl/Html/Kernel-HOWTO.pl.html i Module HOWTO http://www.jtz.org.pl/Html/Module-HOWTO.pl.html.

5.1 NCPFS

W celu współdzielenia plików z serwera Netware, będziesz potrzebował obsługi NCP (ncpfs). NCPFS działa z jądrami od 1.2.x i 1.3.71. Nie działa z żadnym starszym jądrem 1.3.x. Nie może odczytywać bazy danych NDS w Netware 4.x, ale może używać adresowania (??? ,,bindery'' binder to spinacz albo np. przydzielanie portów usługom - przyp. tłum.). Jeżeli używasz Netware 4.0, możesz włączyć adresowanie dla konkretnych domen (??? ,,containers'' pojemniki - przyp. tłum.) używając komendy Set Bindery Context na konsoli:


  set Bindery Context = KORPORACJA.MOJADOMENA;UŻYTKOWNIKWEB.MOJADOMENA

W powyższym przykładzie, włączono adresowanie dla tych dwóch domen.

Będziesz musiał ściągnąć programy systemu plików NCP z ftp://sunsite.icm.edu.pl/pub/Linux/system/filesystems/ncpfs/ncpfs.tgz (Obecnie ncpfs-2.0.10).

Instalacja

Żeby zainstalować ncpfs napisz

   zcat ncpfs.tgz | tar xvf -

żeby rozpakować pliki do ich katalogu (można też łatwiej, tar xzvf ncpfs.tgz - przyp. tłum.). W przypadku tego pliku otrzymasz katalog ncpfs-2.0.10. Zmień katalog na ncpfs-2.0.10 przed kontynuowaniem instalacji. Przeczytaj plik README i zmień Makefile, jeżeli jest to potrzebne.

Sposób instalacji ncpfs zależy od wersji twojego jądra. W 1.2 powinieneś po prostu napisać ,,make'', a potem ,,make install'' - zainstaluje to binaria i strony man.

Jeżeli używasz 1.3.71 lub późniejszego, będziesz musiał przekompilować jądro. Od tej wersji część jądra z ncpfs jest załączona w źródłach. Żeby sprawdzić, czy jądro musi być rekompilowane, napisz

   cat /proc/filesystems

Powinna pokazać się (między innymi - przyp. tłum.) linia mówiąca o ncpfs.

Jeżeli nie, możesz albo przekompilować jądro, albo dodać ncpfs jako moduł. Żeby przekompilować jądro, musisz napisać ,,make config'', a kiedy program zapyta cię o

The IPX protocol (CONFIG_IPX) [N/y/?]

odpowiedz ,,y''. Prawdopodobnie nie jest ci potrzebna pełna sieć wewnętrzna, o którą zostaniesz następnie zapytany. Kiedy jądro zostanie zainstalowane zresetuj system, sprawdź /proc/filesystems, i jeżeli wszystko działa, kontynułuj instalację programów ncpfs. Zmień katalog na zawierający ściągnięte pliki ncpfs i napisz ,,make'', a po kompilacji ,,make install'', żeby zainstalować różne programy i strony man.

Montowanie NCPFS

W celu sprawdzenia typu instalacji napisz

ipx_configure --auto_interface=on --auto_primary=on

poczekaj 10 sekund i napisz

slist

Powinieneś uzyskać listę serwerów Netware. Jesteśmy gotowi do współdzielenia plików z serwera Netware.

Załóżmy, że musisz dostać się do plików HTML z katalogu \home\htmldocs na dysku VOL1: serwera MOJADOMENA_NW. Radzę stworzyć użytkownika (na przykład) ,,EXPORT'' z hasłem ,,EXP123'' na serwerze, do którego udzielasz dostępu do danego katalogu używając SYSCON lub NWADMIN.

W maszynie Linuxowej stwórz nowy katalog /mnt/MOJADOMENA_NW. Wpisz

   ncpmount -S MOJADOMENA_NW -U EXPORT -P EXP123 /mnt/MOJADOMENA_NW

żeby zamontować katalog. Komenda

   ls /mnt/MOJADOMENA_NW/vol1/home/htmldocs

wypisze listę wszystkich plików w MOJADOMENA_NW/VOL1:\HOME\HTMLDOCS (używając notacji Netware). Jeżeli napotkasz jakiś problem, przeczytaj IPX HOWTO http://sunsite.unc.edu/mdw/HOWTO/IPX-HOWTO.html, żeby usyskać więcej informacji o protokole IPX.

5.2 SMBFS

W celu współdzielenia plików z serwera Windowsowego, potrzebna ci będzie obsługa SMB (smbfs).

Będziesz musiał ściągnąć programy dla systemu plików SMB z ftp://sunsite.unc.edu/pub/Linux/system/filesystems/smbfs/smbfs.tgz (obecnie wersja smbfs-2.0.1).

Instalacja

Żeby zainstalować programy smbfs napisz

   zcat smbfs.tgz | tar xvf -
żeby rozpakować pliki do ich katalogu (można też tar xzvf smbfs.tgz - przyp. tłum.). W przypadku wersji 2.0.1 otrzymasz katalog smbfs-2.0.1. Zmień katalog na ten z smbfs przed kontynuowaniem instalacji. Przeczytaj plik README i zmień Makefile, jeżeli jest to potrzebne.

Sposób instalacji smbfs zależy od wersji twojego jądra. W 1.2, powinieneś napisać po prostu ,,make'', a potem ,,make install'', żeby zainstalować binaria i strony man.

Jeżeli używasz jądra 2.0 lub późniejszego, będziesz musiał przekompilować jądro. Od tej wersji, obsługa smbfs jest już w źródłach jądra. W celu sprawdzenia, czy jądro potrzebuje rekompilacji, napisz

   cat /proc/filesystems

Powinna wyświetlić się (między innymi - przyp. tłum.) linia o smbfs.

Jeżeli nie, możesz albo przekompilować jądro, albo dodać obsługę smbfs jako moduł. W celu rekompilacji jądra napisz ,,make config'', a kiedy program zapyta się o dodanie obsługi systemu plików SMB, opowiedz tak. Kiedy jądro zostanie poprawnie zainstalowane zresetuj system, sprawdź /proc/filesystems i jeżeli wszystko jest w porządku kontynuuj instalację programów smbfs. Zmień katalog na zawierający ściągnięte pliki smbfs i napisz ,,make''. Po kompilacji napisz ,,make install'', żeby zainstalować różne binaria i strony man.

Montowanie SMBFS

W naszym przykładzie przyjmijmy, że serwer Windows NT nazywa się ,,MOJADOMENA_NT'' i współdzieli swój katalog C:\PUB\HTMLDOCS o nazwie dzielonej ,,HTDOCS'' bez hasła. W maszynie Linuxowej stwórz nowy katalog /mnt/MOJADOMENA_NT. Wpisz

   smbmount //MOJADOMENA_NT/HTMLDOCS /mnt/MOJADOMENA_NT -n

żeby zamontować system plików SMB. Jeżeli to nie działa, spróbuj

   smbmount //MOJADOMENA_NT/COMMON /mnt/MOJADOMENA_NT -n -I 172.16.0.3

Wpisanie komendy

   ls /mnt/MOJADOMENA_NT

wypisze wszystkie pliki w \\MYDOM_NT\PUB\HTMLDOCS (używając notacji Windowsowej).

5.3 NFS

Najpierw potrzebne jest ci jądro z obsługą NFS bądź to wkompilowaną, bądź jako moduł.

Załóżmy, że posiadasz komputer Unixowy z NFS'em o nazwie MOJADOMENA_UNIX i z adresem IP 172.16.0.4. Możesz sprawdzić udostępniane (exported) przez ten komputer katalogi pisząc

   showmount -e 172.16.0.4

Kiedy znamy już udostępniane katalogi, możemy zamontować je wpisując odpowiednią komendę mount. Radzę ci utworzyć podkatalog w ,,/mnt/'' (powiedzmy ,,MOJADOMENA_UNIX'') i używać go jako punkt montowania.

   mount -o rsize=1024,wsize=1024 172.16.0.4:/pub/htmldocs /mnt/MOJADOMENA_UNIX

Może zajść potrzeba zmiany rsize i wsize, zależnie od twojego środowiska. Jeżeli napotkasz jakiś problem, przeczytaj NFS HOWTO http://sunsite.unc.edu/mdw/HOWTO/NFS-HOWTO.html, żeby uzyskać więcej informacji o protokole NFS.

6. Dostęp do Sieci

Teraz, kiedy skonfigurowaliśmy serwer HTTP i klientów, oraz połączyliśmy serwer Linuxowy z innymi serwerami, musimy wykonać parę małych ustawień na serwerze Linuxowym, żeby uzyskać możliwość dostępu do zamontowanych systemów plików z przeglądarek WWW.

6.1 Dostęp do zamontowanych systemów plików

Istnieją dwie metody dostępu do zamontowanych systemów plików przez strony HTML.

6.2 Łączenie się z Internetem

Możesz połączyć twój intranet z Internetem, żeby uzyskać dostęp do poczty elektronicznej i wszystkich wspaniałych informacji, które zawiera. Proponuję napisanie krótkiej notatki opisującej jak to zrobić, dla przyszłej wersji dokumentu. Dokładne wyjaśnienie znajduje się w ISP Hookup HOWTO http://www.jtz.org.pl/Html/ISP-Hookup-HOWTO.html i Diald mini HOWTO http://www.jtz.org.pl/Html/mini/Diald.pl.html.

6.3 Inne możliwości

W biurze serwer HTTP może być używany do zapewnienia przezroczystego dostępu do informacji z innych serwerów, znajdujących się pod różnymi lokacjamii w różnych katalogach. Dane mogą być prostymi dokumentami w Wordzie, arkuszami kalkulacyjnymi w Lotusie lub złożonymi bazami danych.

Ta technologia jest zazwyczaj używana w następujące sposoby:

7. Inne zastosowania

Oto lista innych interesujących rzeczy, które możesz wykonać dzięki Linuxowemu serwerowi intranetu. Wszystkie programy wymienione poniżej należą do kategorii freeware lub sharewere.

Jeżeli znasz inne interesujące zastosowania serwera intranetu na Linuxie, napisz do mnie.

8. Autorstwo i Legalność

8.1 Podziękowania

Dziękuję ludziom z NCSA za zapewnienie tak wspaniałej dokumentacji, Davidowi Andersonowi i innym za wypróbowanie tego HOWTO i przysyłanie komentarzy. Opis Netware/IP powstał dzięki Romelowi Floresowi (rom@mnl.sequel.net).

8.2 Informacje o prawach autorskich

Prawa autorskie tego dokumentu: © 1996, 1997 Pramod Karnad. Jest on rozpowszechniany pod następującymi warunkami:

9. Od tłumacza

Jeżeli masz jakieś sugestie, albo znalazłeś błąd, daj mi znać. doc-linux-pl-2002.06.14.orig/html/JTZ-HOWTO.pl.html0100644000175000017500000011317207405237160020211 0ustar covencoven Jak to zrobić (JTZ) czyli HOWTO po polsku

Jak to zrobić (JTZ) czyli HOWTO po polsku

Bartosz Maruszewski B.Maruszewski@jtz.org.pl
Michał Malarski malarz@it.pw.edu.pl
Piotr Pogorzelski piotr.pogorzelski@ippt.gov.pl

v 3.6, 11 Grudnia 2001


Informacje co to takiego JTZ, skąd się to wzięło, czemu to ma służyć, komu to jest potrzebne, a komu nie. Najnowsza wersja tego dokumentu znajduje się na naszym serwerze FTP ftp.jtz.org.pl oraz na Polskiej Stronie Tłumaczeń. Chciałbym zauważyć, że dokument ten dość często się zmienia, więc pilnuj proszę czy masz najnowszą wersję. Szczególnie zwracam uwagę na słowniczek.

1. Projekt JTZ

1.1 Co to jest JTZ ?

Wszystko zaczęło się od tego, że kilku osobom chciało się poświęcić troche czasu (bynajmniej nie wolnego) (choć jeden z nich sugerował, że podobno miał mieć jakieś ferie, czy coś w tym stylu, lecz przecież każdy rozsądny człowiek wie, że nie ma czegoś takiego jak ferie, urlop, wolna chwila. To są puste pojęcia wymyślone przez *owców, które mają jedynie namącić ludziom w głowach) i wspomóc World Linux Domination Project Polska (choć część z nich na pewno sobie nie zdawała sprawy z tego co robi) tłumacząc HOWTO na nasz rodzimy język.

Dosyć szybko zebrała się mała grupka ludzi, którzy rzuciwszy w kąt inne sprawy zabrali się do dyskusji co przetłumaczyć, jak to przetłumaczyć i co z tymi tłumaczeniami robić. Na szczęście nie byli w tym najlepsi (w tłumaczeniach też nie, jak sami zobaczycie), więc się zajęli innym sprawami (wesela, kino, spacer itp.).

Ku ogólnemu zdziwieniu okazało się, że ich wysiłek nie poszedł na marne i zaczęły pojawiać się pierwsze efekty ich działań (o nich za chwilę). Również ich dyskusje, zaowocowały pewnymi ustaleniami, które od tej pory stały się obowiązującym prawem.

Osobą koordynującą projekt jest Bartosz Maruszewski B.Maruszewski@jtz.org.pl

1.2 Ustalenia, które stały się obowiązującym prawem.

Te ogniste dyskusje, o których wcześniej pisałem (wymiana kilkunastu listów między trzema osobami) doprowadziły do przyjęcia następujących zasad :

1.3 Ludzie, czyli kto to robi

Chwilowo jest nas niewielu. Ci, o których wiemy (być może są tacy, którzy samotnie, w zapomnieniu zrobili już tę całą robotę, lecz my o nich nic nie wiemy) to:

Jeśli chcesz do nas dołączyć zapisz się na naszą listę, lecz pamiętaj, że jest ona przeznaczona, dla osób pracujących nad tłumaczeniami, nie służy do przyglądania się, jak postępują prace. Adres listy to jtz@ippt.gov.pl lub jtz@jtz.org.pl. Aby się na nią zapisać wyślij na adres majordomo@ippt.gov.pl list zawierający

subscribe jtz Imię Nazwisko

Paweł Więcek coven@pwr.wroc.pl opiekuje się pakietem naszych tłumaczeń dostarczanym dla Debiana. Pakiet ten jest dostępny jako "unstable doc-linux-pl" pod adresem ftp://ftp.ists.pwr.wroc.pl/coven/debian lub na dowolnej kopii serwera GNU/Linux Debian.

Michał Malarski malarz@it.pw.edu.pl stworzył pakiet tłumaczeń przeznaczonych dla RedHata. Pakiet ten dostępny jest pod adresem ftp://srl.it.pw.edu.pl/pub/JTZ/RedHat.

1.4 Pierwsze rezultaty

Postanowiliśmy, że przetłumaczone dokumenty będą udostępniane szerszemu gronu dopiero, kiedy będą się do tego nadawały ;-). To znaczy, że przetłumaczony dokument musi wpierw troche poczekać, zostać ponownie sprawdzony przez autora i dopiero potem może pokazać się szerszej publiczności.

Chcemy jednak, abyście wiedzieli czego możecie oczekiwać w najbliższym czasie i jaki jest stopień zaawansowania prac. Czekamy również na wasze reakcje i oczekiwania. Wasze głosy mogą wpłynąć na kolejność w jakiej będą tłumaczone te dokumenty. Zajrzyj na Polską Stronę Tłumaczeń.

Jeśli chcesz wiedzieć nad czym w tej chwili pracujemy, wyślij na adres B.Maruszewski@jtz.org.pl list, który w polu Subject: zawiera napis HOWTO-info. Otrzymasz mniej więcej taką odpowiedz:


From: Bartosz Maruszewski <B.Maruszewski@jtz.org.pl>
Subject: Re: HOWTO-info
Date: Tue, 25 Feb 1997 16:47:27 +0100 (MET)
Lines: 38


========== KTO ========== ===== CO ROBI ===== ===== CO ZROBIL =====
Ja                                SMB              BootPrompt
                                                      Kernel
                                                    m. Locales
                                                    m. DOS2Linux
--------------------------------------------------------------------
Piotr P.                         META              Instalation
                                Serial              ISP-HookUp
                                NET2               LargeDisk
                                Ethernet
--------------------------------------------------------------------
Piotr T.                        XFree86,
                                  WWW
                                Java-CGI
--------------------------------------------------------------------
Pawko O.                        Sound
                               Modules

========== SPIS ==========
Howtos:
BootPrompt(*), BootDisk(*), Instalation(*), Kernel(*), Modules(*),
Printing(-Usage), SCSI, SMB(*), Serial(*), Sound(*), UMSDOS, ISP-HookUp(*),
META(*), NET2(*), Ethernet(*)

Mini-Howtos:
LILO, LargeDisk(*), Colour-ls, Consoles(-Many), DOS2LINUX(*), Getty-ps,
KeySetup, Keystroke, Locales(*), Quota, Swap-Space, Upgrade, X*(*), Diald,


(*) - oznacza zrobione, badz w trakcie tlumaczenia
m. - mini HOWTO

1.5 Przetłumaczone dokumenty

Aktualne informacje znajdziesz na Polskiej Stronie Tłumaczeń.

Wszystkie przetłumaczone dokumenty (w różnych formatach) można znaleźć na naszym serwerze FTP ftp://ftp.jtz.org.pl/

2. Słownik

Jeśli znajdziesz jakieś nowe słowo/wyrażenie, które nadaje się do słownika, albo znajdziesz lepsze określene dla któregoś słowa/wyrażenia już będącego w słowniku, to wyślij je do Bartka Maruszewskiego B.Maruszewski@jtz.org.pl.

**
v3.4.6
**

acknowledgement - podziękowania (jako tytuł sekcji), wyrazy uznania
actual - rzeczywisty, ostateczny, faktyczny, bieżący
adapter - sterownik
affect - dotyczyć, mieć negatywny wpływ na
aggregate works - prace zebrane
arrangement - ustawienie
aspect ratio - współczynik kształtu/obrazu
based - oparty na
bit bucket - kosz na bity
boot - załadować, wystartować system, 
boot diskette - dyskietka startowa
boot prompt - zachęta startowa
broadcasting - rozgłaszanie, nadawanie
can access - ma dostęp
carry out - wypełnij, wykonać, przeprowadzić
chip - układ scalony
command - polecenie
command output - wynik/rezultat polecenia
(to) crash - wywalić się, załamanie, pad/paść
credits - wyrazy uznania
debug - odpluskwiać
derivative works - prace pochodne
disable - wyłączyć
disclaimer - zastrzeżenie
driver - sterownik
to edit - (z)modyfikowac
entry - pozycja
EPROM burner - programator eprom-ów
expire - wygasnąć
feed - zasilać, zasilanie, dostarczać
figure out - stwierdzić
filesystem - system plików
flexibility - elastyczność
for details - więcej na temat szczegółów dotyczących
hack - przerobić (odnośnie jądra Linuksa)
hardware - sprzęt
header/include files - pliki nagłówkowe
interface - interfejs
introduction - wprowadzenie
issue a command - wykonać
xxx issue - sprawa dotycząca xxx
jumper - zworka, przełącznik
kill - usun (o procesie)
learn about - nauczyć się, dowiedzieć się o
line - wiersz
maintain - opiekować się
maintained - prowadzony/pielęgnowany/utrzymywany przez
major - liczba główna
man - podręcznik (man)
map - odwzorowywać
masquerading - maskowanie
memory window - ramka pamięci
minor - liczba poboczna
mirror - kopia
normal - zwykly
note - zauważ, uwaga, zapamiętaj
obey - podlegać, być posłusznym
override -- zmienić, nadpisać
pipe -- potok
poll - sprawdzać, próbkować, monitorować
probe - przeszukiwać, sprawdzać, wykrywać, dokonywać detekcji
processed - interpretowane, przetwarzane
prompt - zachęta
put - umieścić
to query - pytać, sprawdzać
reboot - przeładowanie
reflect - odzwierciedlać
release - wersja, wydanie
root - administrator
root filesystem - główny system plików
section - rozdział
shadow - przesłaniać
share - współdzielić
shell - powłoka, interpreter
shell prompt - zachęta powłoki, interpretera
software - oprogramowanie
spool directory - katalog zadań, katalog buforowania
stream -- strumień
support - obsługiwać
symbolic link - dołączenie/dowiązanie/wskazanie symboliczne
system call - funkcja systemowa
terms of use - warunki stosowania/używania/korzystania
third-party books - książki wydawnictw/autorów, nie związanych z 
                    firmą produkującą opisywaną rzecz
                    albo
                    książki osób trzecich
total - całkowity
tune - ustawić, dostroić
unlike - w przeciwieństwie do, niepodobny do
upgrade - odnawianie, odswieżanie, uaktualnianie
usage - stosowanie
using this technique - za pomocą tego sposobu, tym sposobem
utility, tool - narzędzie
work-around - obejści
X - nazwa systemu graficznych okienek uniksa to:
                         X
                  X Window System
                    X Version 11
            X Window System, Version 11
                        X11
 ***** Żadnej innej _SZCZEGÓLNIE_   *XWindows*   nie przyjmuję *****

skróty od zwrotów:
- według - wg 
- wyżej wymienione - ww.


==========================================================

Wyrazy których nie tłumaczymy:
firewall, bridge, host, proxy, log, stdin, stdout, locale, *roff,
timeout, routing, router

mieszczą się tutaj także wszelkie polecenia systemowe i nazwy programów
X, emacs, *TeX, *script.
===========================================================

Jak odmieniać wyrazy nietłumaczone, zaczerpnięte z j. angielskiego oraz
wszelkie skróty?
Wyrazy zaczerpnięte z ang. to takie jak: Linux, Unix, fax...

***************
     UWAGA
***************
Odmiana słowa Linux:
(podaję za słownikiem języka polskiego)
ten Linux
tego Linuksa
temu Linuksowi
tego Linuksa
z Linuksem
o Linuksie
O! Linuksie. :)

Żadnej innej nie przyjmuję. Jeśli znajdę w jakimś tłumaczeniu:
Linuxie, Linux-ie itp, to NIE AKCEPTUJE go.

Jeśli wyraz kończy się na spółgłoskę, to piszemy
końcówkę polską wg rodzaju jaki dany wyraz przyjmuje w j. polskim
(NIE STOSUJEMY myslnikow do oddzielenia polskiej koncowki od skrotu):
np: ten firewall -- tego firewalla
ten RAM -- tego RAMu

W dopełniaczu (kogo? czego?) skrótu kończącego się na spółgłoskę zawsze
używamy końcówki 'u': DOSu, BIOSu itd.

Jeśli wyraz kończy się na samogłoskę, to dodajemy apostrof i piszemy
końcówkę polską wg rodzaju jaki dany wyraz przyjmuje w j. polskim:
np: ten bridge - tego bridge'a

Jeśli wyraz kończy się na tzw. nieme "e", to lepiej unikać jego
odmiany, np: edytor joe -- w edytorze joe, edytora joe. A nie edytorze
joe'u czy edytora joe'a ...

3. Trochę danych technicznych dla tłumaczy.

Wcześniej już zostało wspomniane, że piszemy w formacie SGML. Format ten bardzo przypomina HTML więc jeśli znasz ten ostatni, to nie powinien on ci nastręczać większych trudności. Do konwersji z formatu SGML na inne formaty służy pakiet sgml-tools.

3.1 Krótki minikurs SGML-a.

Wielu z was chce się przyłączyć, ale pisze do mnie, że nie zna SGMLa. No i piszę do każdego litanię wszystkich zasad itp. Żeby tego nie robić postanowiłem zamieścić kilka porad jak z niego korzystać.

To naprawdę nie jest trudne.

3.2 sgml-tools

Więcej informacji o pakiecie sgml-tools można znaleźć na stronie projektu SGMLTools

Pakiet sgml-tools wywodzi się od dawnego pakietu linuxdoc-sgml. Zmianę nazwy pakietu argumentuje się tym, że poprzednia nazwa wiązała pakiet z Linuxem, co nie było zgodne z rzeczywistością. Można go było używać również pod kontrolą innych systemów operacyjnych.

Aktualnie projekt ten jest chwilowo zawieszony, więc z wszelkimi problemami musimy rodzić sobie sami. Aktualne wersje tego pakietu są dwie:

Ponieważ jesteśmy zainteresowani DTD linuxdoc to używamy wersji 1.0.9. Co prawda nie każę używać ci dokładnie tej wersji, ale nie jestem w stanie ci powiedzieć, czy wersja, którą używasz można łatwo przekonać do obsługi polskich tłumaczeń.

3.3 Teraz trochę o konwersji.

Jak już wspomniałem do konwersji z formatu SGML służy pakiet programów sgml-tools. Programy z tego pakietu, których będziesz używał to najprawdopodobniej:

Aby wygenerować poprawne JTZ-ty musisz prawdopodobnie zmodyfikować kilka plików z pakietu sgml-tools. Informacje jak to zrobić znajdzesz poźniej.

Do wygenerowania pięciu głównych formatów (poza SGML oczywiście) należy wykonać kolejno polecenia:


sgml2html -s 0 -l pl nazwa.pl.sgml
sgml2txt -f -c latin nazwa.pl.sgml
sgml2latex -o ps  -p a4 nazwa.pl.sgml
sgml2latex -o dvi -p a4 nazwa.pl.sgml
sgml2latex -o tex -p a4 nazwa.pl.sgml

W powyższym przykładzie zmienna systemowa PLIK oznacza nazwę dokumentu poddawanego konwersji. Jeżeli często przeprowadzasz konwersję do wszystkich formatów polecam napisanie sobie podobnego skryptu.


#!/bin/sh

sgml2html -s 0 $1.pl.sgml
sgml2txt -f -l pl -c latin $1.pl.sgml
sgml2latex -o ps  -p a4 $1.pl.sgml
sgml2latex -o dvi -p a4 $1.pl.sgml
sgml2latex -o tex -p a4 $1.pl.sgml

Aby dokonać konwersji należy wywołać powyższy skrypt z parametrem bedącym nazwą dokumentu SGML (z pominięciem rozszerzeń .pl.sgml)

Oczywiście możesz również eksperymentować z innymi opcjami, ale ten zestaw opcji wydaje się być najwłaściwszy. Opcje te oznaczają:

3.4 Polonizacja pakietu sgml-tools

Instrukcja ta dotyczy wersji 1.0.9-2 pakietu sgml-tools. Informacja ta nie oznacza, że w innych wersjach należy postąpić inaczej. Sposób postępowania na pewno nie zmienił się od wersji 1.0.7. Sposób postępowania dla starszych wersji pakietu sgml-tools czy też dla pakietu linuxdoc-sgml (poprzednika pakietu sgml-tools) opisany jest w sekcji historycznej.

Chcemy uzyskiwać poprawne dokumenty w formatach:

Aby poradzić sobie z powyższymi problemami musimy zmodyfikować dwa pliki.

Pierwszy z nich odpowiada za odnośniki w wersjach HTML dokumentów. Jest to plik

/usr/lib/sgml-tools/SGMLTools/Lang.pm
W pliku tym musimy dodać definicję języka polskiego, oraz odpowiednie napisy dla tej definicji.

Drugi z plików jest plikiem odpowiadającym za znaczniki w generowanym pliku w formacie LaTeX. Plikiem tym jest

/usr/lib/sgml-tools/dist/linuxdoc/latex2e/mapping
w pliku tym modyfikujemy informację o nagłówku dokumentu LaTeX tworzonego podczas konwersji. Musimy zdefiniować użycie znaków wg. standardu Latin2 oraz języka polskiego.

Aby było łatwiej dokonać te zmiany przygotowałem odpowiedni patch do automatycznego dokonania potrzebnych zmian. Patch ten jest dostępny w sieci ftp://ftp.jtz.org.pl/tools.

Ponieważ niektórzy mogą mieć problem ze ściągnięciem ww. pliku jego zawartość zamieszczam też poniżej:


*** /usr/lib/sgml-tools/SGMLTools/org/Lang.pm   Mon Mar 22 05:29:00 1999
--- /usr/lib/sgml-tools/SGMLTools/Lang.pm       Tue May 18 22:44:50 1999
***************
*** 60,65 ****
--- 60,66 ----
    pt portuges portuguese
    ca catalŕ catalan
    it italiano italian
+   pl polski polish
    ro română romanian
  );

***************
*** 164,169 ****
--- 165,171 ----
       "pt" => "Página anterior",
       "ca" => "Pŕgina anterior",
       "it" => "Indietro",
+      "pl" => "Poprzednia",
       "ro" => "Înapoi"
    },
    "Next" => {
***************
*** 177,182 ****
--- 179,185 ----
       "pt" => "Página seguinte",
       "ca" => "Pŕgina següent",
       "it" => "Avanti",
+      "pl" => "Następna",
       "ro" => "Înainte"
    },
    "Contents" => {
***************
*** 190,195 ****
--- 193,199 ----
       "pt" => "Índice",
       "ca" => "Índex",
       "it" => "Indice",
+      "pl" => "Spis treści",
       "ro" => "Cuprins"
    },
    "Table of Contents" => {
***************
*** 203,208 ****
--- 207,213 ----
       "pt" => "Índice geral",
       "ca" => "Índex general",
       "it" => "Indice Generale",
epackage\[latin2\]{inputenc}\n"
                        "\\usepackage{t1enc}\n"
-                       "\\usepackage{babel}\n"
+                       "\\usepackage\[polish\]{babel}\n"
                        "\\usepackage{epsfig}\n"
                        "\\usepackage{[OPTS]}\n"
                        "\\def\\addbibtoc{\n"
@@ -39,9 +39,9 @@
                        "\\usepackage{linuxdoc-sgml}\n"
                        "\\usepackage{qwertz}\n"
                        "\\usepackage{url}\n"
-                       "\\usepackage\[latin1\]{inputenc}\n"
+                       "\\usepackage\[latin2\]{inputenc}\n"
                        "\\usepackage{t1enc}\n"
-                       "\\usepackage{babel}\n"
+                       "\\usepackage\[polish\]{babel}\n"
                        "\\usepackage{epsfig}\n"
                        "\\usepackage{[OPTS]}\n"
                        "\\def\\addbibtoc{\n"
@@ -56,9 +56,9 @@
                        "\\usepackage{linuxdoc-sgml}\n"
                        "\\usepackage{qwertz}\n"
                        "\\usepackage{url}\n"
-                       "\\usepackage\[latin1\]{inputenc}\n"
+                       "\\usepackage\[latin2\]{inputenc}\n"
                        "\\usepackage{t1enc}\n"
-                       "\\usepackage{babel}\n"
+                       "\\usepackage\[polish\]{babel}\n"
                        "\\usepackage{epsfig}\n"
                        "\\usepackage{[OPTS]}\n"
                        "\\def\\title#1{\n"

Aby wykorzystać ten plik należy wykonać komendę:

patch -p0 < sgml-tools.patch

To jest wszystko co musisz zrobić. Powtórzę jeszcze raz: jedyne operacje jakie musisz wykonać, aby spolonizować sgml-tools 1.09 to:

Jeżeli ktoś jest zainteresowany co dokładnie zostało i dlaczego zmienione to zapraszam do sekcji Technikalia - historia.

3.5 Co mam zrobić jeśli chcę poprawić dokument.

Po pierwsze wszelkie poprawki trzeba nanosić w formacie SGML.

Jeśli znalazłeś literówki, to po prostu popraw je i wyślij poprawioną wersję do tłumacza. Upewnij się przedtem czy masz najnowszą wersję, bo może błędy, które poprawiasz są już poprawione w nowszej wersji.

Jeśli chcesz ingerować w treść dokumentu, to postępuj wg. poniższej instrukcji:

4. Technikalia - historia

Ponieważ niektórzy korzystają ze starszych wersji oprogramowania i z różnych powodów nie chcą ich zmienić zdecydowaliśmy sie na pozostawienie starych sposobów zmuszenia do współpracy tamtego oprogramowania.

4.1 Jak korzystać z trybu psgml pod Xemacsem?

UWAGA!
Wraz z aktualnymi wersjami emacs'a dostarczany jest plik sgml-mode.elc odpowiedzialny za tryb SGML pod emacsem.

Całkiem prosto:

4.2 konwersja txt i html a sprawa polska

UWAGA!
Konwersja na formaty TXT oraz HTML dla użytkowników pakietu linuxdoc-sgml.

Do konwersji pliku źródłowego SGMLa na HTML i TXT służą odpowiednio programy sgml2html i sgml2txt. Wszystko co musisz pamiętać, to użycie odpowiedniej opcji dla sgml2txt, żeby zostawił polskie znaki w spokoju. Opcja ta, to -l. Podczas konwersji występuje z reguły błąd Couldn't find font 'C' czy jakoś tak - otóż nie ma się czym przejmować. Poprawny dokument tekstowy zostanie wygenerowany.

Co do konwersji na HTML, to tutaj problemu z polskimi literami nie ma, ale trzeba pamiętać, aby użyć opcji -L polish, żeby odwołania Next, Table of Contents i Previous zamienić na polskie odpowiedniki. Przed konwersją załóż plik /usr/lib/linuxdoc-sgml/rep/html/polish i wpisz w nim:

PrevPage: Poprzednia
NextPage: Następna
TOC: Spis&nbsp;Treści

4.3 Konwersja SGML -> LaTeX a sprawa polska

UWAGA!
O ile dobrze pamiętam opis ten dotyczy ostatniej wersji pakietu linuxdoc-sgml.

W poniższym tekście opisuję moje udane próby konwersji dokumentu z polskimi znakami diaktrycznymi zapisanego w formacie SGML na format LaTeX oraz DVI (Device Independent) i PS (PostScript).

LaTeX i LaTeX2e (epsilon)

Bezproblemowo znaki różnych alfabetów możemy używać tylko w nowym formacie LaTeXa (tzw. LaTeXu 2e), standardowo pozwalającym na pisanie z ogonkami. Aby można było używać jawnie polskich liter w LaTeXu w nagłówku dokumentu w formacie LaTeX wygenerowanego przez program sgml2latex muszą wystąpić następujące linie:


        \usepackage{t1enc}
        \usepackage[latin2]{inputenc}
        \usepackage[polish]{babel}

Najważniejsza jest pierwsza z nich:


        \usepackage{t1enc}

Linia ta umożliwia w ogóle pisanie z ogonkami.

Kolejna linia:


        \usepackage[latin2]{inputenc}

umożliwia zapisanie polskich liter w standardzie ISO Latin 2 (ISO 8859-2) a nie jakimiś przedziwnymi zaklęciami magicznymi LaTeXa.

Trzecia z nich, a mianowicie:


        \usepackage[polish]{babel}

daje nam jedynie dodakowy bajer: słowa w języku polskim w razie potrzeby zostaną poprawnie podzielone (zgodnie z regułami języka polskiego oczywiście).

Niestety program sgml2latex, generujący za każdym razem najpierw plik w formacie LaTeX, a dopiero później korzystając z tego pliku generuje pliki w formatach DVI i/lub PS, nie generuje odpowiednich linii w tym pliku.

Co nam generuje sgml2latex ?

Program sgml2latex umożliwia wygenerowanie pliku w formacie LaTeX lub LaTeX2e (z opcją -2e). Wszystko byłoby fajnie gdyby ten plik był poprawny dla nas (czyli zawierał linie wymienione powyżej). Niesety tak nie jest. Żeby to poprawić wystarczy jedynie trochę zmodyfikować plik

/usr/lib/linuxdoc-sgml/rep/latex2e/mapping

w którym jest opisany sposób konwersji pliku SGML do formatu LaTeX2e. W pliku tym we fragmencie dotyczącym konwersji tagu <article> zamiast linii


        "\\usepackage\[latin1\]{inputenc}\n"

należy wstawić trzy następujące linie:
        "\\usepackage{t1enc}\n"
        "\\usepackage\[latin2\]{inputenc}\n"
        "\\usepackage\[polish\]{babel}\n"

Pierwsze dwie z tych linii muszą znaleźć się koniecznie, natomiast trzecia wedle upodobania. Muszę jednak dodać, że w wypadku dodania trzeciej z tych linii konieczne jest odpowiednie skonfigurowanie programu dvips (przynajmniej ja to zrobiłem, w każdym razie korzystając z programu texconfig dodałem polski sposób dzielenia wyrazów.

Jeżeli korzystając z formatu SGML tworzymy także inne dokumenty można w taki sam sposób dokonać zmian w sekcjach dotyczących konwersji tagów <report>, <book> oraz <notes>. Te zmiany nie są jednak konieczne gdy pracujemy wyłącznie z dokumentami HOWTO.

Program sgml2latex i pliki DVI oraz PS

Już mamy poprawne generowanie plików w formacie LaTeX2e. Teraz jeszcze musimy posiadać LaTeXa w wersji 2e. Jeżeli mamy zainstalowany pakiet tetex (chyba jeden z popularniejszych w dystrybucjach Linuxa) to mamy odpowiedni program. Ponieważ program sgml2latex oczekuje, że program LaTeX2e wywołujemy przez latex2e to musimy mu taki sposób wywołania tego programu zapewnić. Najprościej jest w katalogu /usr/bin utworzyć skrót o nazwie latex2e do programu latex, czyli:


cd /usr/bin
ln -s latex latex2e

Konwersja właściwa, czyli jak uzyskać DVI lub PS

Po dokonaniu wyżej wymienionych modyfikacji żadne zmiany w dokumentzch SGML nie są już konieczne. Wystarczą jedynie odpowiednie opcje programu sgml2latex. Należy pamiętać o użyciu opcji -2e aby program generował pliki w formacie LaTeX2e a nie w starszym (LaTeX).

Aby uzyskać wersję w formacie DVI używamy komendy:

sgml2latex -2e -a -d nasz_plik.sgml

Analogicznie możemy wygenerować pliki w formacie PS:

sgml2latex -2e -a -p nasz_plik.sgml

Uwagi

Rozwiązanie jest w paru miejscach trochę toporne, ale skuteczne. Osobiście były to moje pierwsze kroki w LaTeXu, więc opis do czynności, które należy wykonać może być trochę nieodpowiedni. Wszelkie informacje o LaTeXu jakie potrzebowałem do uzyskania satysfakcjonujących mnie wyników uzyskałem z Polskiej Strony Ogonkowej.

5. Od autorów

Wszelkie uwagi do treści tego dokument będą oczywiście mile widziane. Gwoli wyjaśnienia dodamy tylko, że osobą koordynująca całością prac jest tylko i wyłącznie Bartosz Maruszewski B.Maruszewski@jtz.org.pl. Wszelkie uwagi dotyczące sekcji Projekt JTZ oraz Słownik należy kierować więc wyłącznie do niego.

Natomiast jeżeli będziesz miał jakieś problemy od strony technicznej z konwersją dokumentów z formatu SGML, czy też uwagi dotyczące sekcji Technikalia zgłoś się do Michała Malarskiego malarz@it.pw.edu.pl

doc-linux-pl-2002.06.14.orig/html/Kernel-HOWTO.pl.html0100664000175000017500000017333006770264140020770 0ustar covencoven Opis jądra Linux-a, jego instalacji itp.

Opis jądra Linux-a, jego instalacji itp.

Autor: Brian Ward, bri@cs.uchicago.edu
v1.0, 5 Czerwca 1999
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v3.0, 7 Sierpnia 1999


Dokument ten jest szczegółowym przewodnikiem do konfiguracji, kompilacji i odnawiania jądra. Zawarte są tutaj także sposoby rozwiązywania problemów związanych z jądrem dla systemów na procesorach rodziny ix86. Został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO. Nowsza wersja zawiera uaktualnione wskazania na katalog zawierający jądra na ftp.icm.edu.pl

1. Wprowadzenie.

Czy powinieneś to czytać? Hmm... zobaczmy czy masz następujące problemy:

1.1 Przeczytaj to najpierw! (Nie żartuję)

Niektóre z przykładów zawartych tutaj zakładają, że masz zainstalowane takie programy jak: GNU tar, find i xargs. Są one właściwie standardowe; nie powinno być z tym problemów. Zakłada się także, że znasz strukturę twojego systemu plików. Jeśli nie znasz to koniecznie trzymaj w ręku wydruk tego co pojawia się na ekranie po poleceniu mount, albo wydruk zawartości pliku /etc/fstab jeśli umiesz go przeczytać. Informacja ta jest ważna, i nie zmieni się dopóki nie zmienisz układu partycji na twoim dysku.

Najnowszą wersją jądra, dostępną podczas pisania tego dokumentu, była wersja 2.2.9. To znaczy, że wszystko w tym dokumencie odnosi się do tej właśnie wersji. Chociaż staram się napisać ten dokument tak niezależnym jak się tylko da, jądro jest ciągle rozwijane, więc jeśli dostaniesz nowszą wersję, nieuniknionym jest, że będą jakieś różnice. Ale to wciąż nie powinno stanowić dużego problemu, co najwyżej mogą wystąpić jakieś drobne różnice.

Są dwie ogólne wersje źródeł jądra Linux-a, stabilne i testowe. Stabilne wersje zaczynają się od wersji 1.0.x i są numerowane liczbami parzystymi (chodzi o liczbę drugą); 1.0.x, 1.2.x, 2.0.x jak również 2.2.x. Wersje te są uważane za najbardziej stabilne, wolne od dziur i błędów podczas ich dystrybucji. Jądra testowe ( 2.1.x, 2.3.x) są jądrami przeznaczonymi dla tych, którzy chcą je testować, wprowadzać jakieś zmiany, może nawet współpracować przy tworzeniu go. W wersjach tych może byc pełno błędów, mogą się zawieszać chociaż to wcale nie jest regułą i niekoniecznie musi się dziać. Jakby co, to zostałeś ostrzeżony.

1.2 Słowo na temat wyglądu.

Tekst, który tak wygląda jest albo czymś co pojawi się na ekranie, nazwą pliku, albo czymś co może być bezpośrednio wpisane z klawiatury (np. polecenie, czy jego opcje). Jeśli czytasz ten dokument jako zwykły plik tekstowy to tekst ten niczym się nie różni.

2. Ważne pytania i odpowiedzi na nie.

2.1 Co to jądro w ogóle robi?

Jądro w systemach typu Unix odgrywa rolę pośrednika między twoimi programami, a twoim sprzętem. Najpierw zajmuje się zarządzaniem pamięci dla wszystkich uruchomionych programów (procesów), i dba o to, aby wszystkie one dostały równą ilość czasu procesora. (albo nierówną jeśli tak zażądasz). Dodatkowo, posiada miły interfejs dla programów chcących "rozmawiać" z twoim sprzętem.

Jądro spełnia oczywiście o wiele więcej funkcji, ale to są najważniejsze, które należy znać.

2.2 Dlaczego miałbym chcieć odnowić swoje jądro?

Nowsze jądra z reguły mają wiekszą ilość sterowników, czyli mogą obsłużyć większą ilość urządzeń, mogą mieć ulepszone algorytmy zarządzania procesami, mogą działać szybciej niż starsze wersje, mogą być bardziej stabilne, mają także wiele poprawek błędów, które zdarzyły się w wersjach wcześniejszych. Większość ludzi odnawia swoje jądra ponieważ chcą większej ilości sterowników i naprawionych błędów.

2.3 Jaki sprzęt obsługują nowsze wersje jądra?

Przeczytaj Hardware-HOWTO. Możesz także zajrzeć do pliku config.in w źródłach jądra. Albo po prostu dowiedzieć się samemu jak napiszesz make config. W poleceniu tym znajdą się wszystkie obsługiwane przez dane jądro urządzenie. Ale nie będą to wszystkie urządzenia, które obsługuje Linux. Wiele popularnych sterowników (jak np. sterownik do PCMCIA i niektóre sterowniki do taśm) są rozprowadzane osobno jako ładowalne moduły.

2.4 Jakiej wersji gcc i libc potrzebuję?

Aby zobaczyć jaką masz wersję napisz gcc -v. Linus zaleca zawsze w pliku README wersję gcc, która powinna być użyta do kompilacji danego jądra. Jeśli nie masz tej wersji, dokumentacja w zalecanej wersji gcc powinna powiedzieć ci czy musisz odnowić libc. Nie jest to trudne, ale ważne jest, aby postępować zgodnie ze wskazówkami.

2.5 Co to jest ładowalny moduł?

Są to części jądra, które nie są zawarte bezpośrednio w nim. Kompiluje się je osobno i można je umieścić a następnie usunąć z uruchomionego jądra prawie zawsze. Z powodu tej elastyczności jest to teraz preferowana metoda pisania niektórych fragmentów jądra. Wiele popularnych sterowników urządzeń to ładowalne moduły.

2.6 Ile potrzebuję miejsca na dysku?

To zależy od twojej konkretnej konfiguracji. Skompresowane źródła zajmują mniej więcej 14 MB. Po rozkompresowaniu, skonfigurowaniu i kompilacji zajmuje kolejne 67 MB.

2.7 Jak długo zajmuje kompilacja?

Na nowszych maszynach zabiera to NAPRAWDĘ mniej czasu niż na starych. Np. na AMD K6-2/300 z szybkim dyskiem kompilacja wersji 2.2.x może zająć około 4 minut podczas gdy kompilacja tego samego jądra na starym Pentium, 486 czy 386 może trwać nawet godziny, czy dni ...

Jeśli to cię martwi, a masz w pobliżu szybszy komputer, to skompiluj jądra na nim (zakładając, że ustawisz poprawne parametry, że twoje narzędzia systemowe są w odpowiednich wersjach itd), a potem przesnieś skompilowane jądro (obraz) na wolniejszy komputer.

3. Jak właściwie skonfigurować to jądro?

3.1 Zdobywanie źródła.

Źródła możesz sciągnąć np. z ftp.kernel.org:/pub/linux/kernel - jest to główny serwer dla jądra Linux-a, albo z jakiejś bliższej ci kopii tego serwera. W Polsce najlepszym miejscem jest ftp.icm.edu.pl/pub/Linux/kernel. Z reguły nazwa jądra to linux-x.y.z.tar.gz, gdzie x.y.z jest numerem wersji. Tak jak już wspomniałem, wersje z nieparzystą drugą liczbą to wersje rozwojowe i mogą być niestabilne. Obok wersji .tar.gz są jeszcze wersje .bz2, które są mniejsze i zabierają mniej czasu do ściągnięcia.

Najlepiej używać adresu ftp.xx.kernel.org, gdzie xx to kod twojego kraju. Np. ftp.pl.kernel.org dla Polski.

Jeśli szukasz jakichś ogólnych informacji o Linux-ie, to zajrzyj pod adres www.linux.org. W Polsce także jest Polska Grupa Użytkowników Linux-a.

3.2 Rozpakowywanie źródła.

Zaloguj się jako root albo użyj polecenia su i zmień katalog na /usr/src cd /usr/src. Jeśli zainstalowałeś źródła do jądra podczas instalacji Linux-a w katalogu tym znajdziesz dołączenie symboliczne linux, które będzie wskazywało na katalog linux-x.y.z ze źródłami, które wtedy zainstalowałeś. Jeśli chcesz zachować stare źródła to usuń dołączenie linux poleceniem rm linux.

Jeśli takiego dołączenia nie ma, a jest katalog linux, to (jeśli chcesz zachować źródła starej wersji jądra) zmień nazwę linux na linux-x.y.z, gdzie x.y.z jest wersją tych źródeł. (zajrzyj do pliku linux/Makefile - w pierwszych trzech linijkach znajdziesz wersję źródeł znajdujących się w tym katalogu). Jeśli chcesz możesz skasować cały katalog linux i pozbyć się starych źródeł. W każdym razie upewnij się, że nie ma katlogu linux przed rozpakowanie źródeł.

Teraz w katalogu /usr/src rozpakuj źródła poleceniem tar zxpvf linux-x.y.z.tar.gz, jeśli na końcu nazwy pliku ze źródłami nie ma .gz to użyj polecenia tar xpvf linux-x.y.z. Zawartość archiwum wyświetli się na ekranie. Kiedy rozpakowywanie się skończy pojawi się nowy katalog linux. Dobrym pomysłem byłoby w tym momencie zmienić jego nazwę na linux-x.y.z i zrobić symboliczne dołączenie do tego katalogu o nazwie linux. Aby to zrobić użyj polecenia mv linux linux-x.y.z; ln -s linux-x.y.z linux. Teraz zmień bieżący katalog na linux i przejrzyj plik README. Znajdziesz tam sekcję o nazwie INSTALLING the kernel. Przeczytaj ją uważnie i wypełnij wszystkie polecenia, o których tam mowa.

Jeśli ściągnąłeś wersję .bz2 i masz program bzip2 (na jego temat można przeczytać pod adresem www.muraroa.demon.co.uk/), to zrób tak:

   bzcat2 linux-x.y.z.tar.bz2 | tar xvf -

3.3 Konfiguracja jądra.

UWAGA: Niektóre z uwag zawartych tutaj są podobne do tych z pliku Linusa README.

Polecenie make config wydane w katalogu /usr/src/linux uruchamia skrypt konfiguracyjny, który zadaje ci wiele pytań. Wymaga on zainstalowanego shella, więc sprawdź czy go masz. (/bin/bash, /bin/sh lub $BASH)

W wersjach 2.0.x i nowszych istnieją jeszcze dwa sposoby na konfigurację: make menuconfig jak sama nazwa wskazuje jest to konfiguracja za pomocą menu tekstowego. Można też wydać polecenie make xconfig co spowoduje uruchomienie miłej konfiguracji pod Xwindow. Pierwszy sposób wymaga zainstalowanej biblioteki (n)curses. Ta druga wymaga zainstalowanej biblioteki Tcl/Tk. Obie są dostarczane wraz ze standardowymi dystrybucjami. Te sposoby mają podstawową zaletę: jeśli się pomylisz, to łatwo jest wrócić i poprawić błąd.

Można teraz odpowiadać na kolejne pytania ukazujące się na ekranie. Odpowiada się zwykle literami "y" - tak i "n" - nie. Przy sterownikach jest jeszcze dodatkowa opcja "m" - oznacza skonfigurowanie go jako ładowalny moduł. Bardziej komicznym sposobem wyjaśnienia tej litery jest "może". Niektóre z bardziej oczywistych czy nie-krytycznych opcji nie zostały tutaj opisane; zobacz w sekcji "Inne opcje konfiguracji." W make menuconfig spacją zaznacza się daną opcję.

W wersjach 2.0.x i nowszych jest polecenie "?", która umożliwia wyświetlenie krótkiej pomocy na temat bieżącej opcji. Informacja ta jest prawdopodobnie najświeższa. Oto lista ważniejszych opcji, do jakiej hierarchii należą i krótki opis.

Kernel math emulation (Processor type and features)

Pytanie to dotyczy emulacji koprocesora przez jądro. Jeśli nie masz koprocesora matematycznego (masz czysty 386 albo 486SX), musisz tu odpowiedzieć "y". Jeśli masz koprocesor a odpowiesz "y", nie martw się -- koprocesor będzie użyty, a emulacja ignorowana. W połowie przypadków w tej chwili odpowiedzią będzie nie, ale nie martw się jeśli przypadkowo odpowiesz tak; jeśli nie trzeba, to nie będzie to użyte.

Enhanced (MFM/RLL) disk and IDE disk/cdrom support (Block Devices).

Przypuszczalnie potrzebujesz tej obsługi. Opcja ta oznacza, że jądro będzie obsługiwać standardowe dyski do komputerów PC, które są w posiadaniu większości ludzi. Sterownik ten nie zawiera obsługi dla dysków SCSI, pytanie o to będzie później w konfiguracji.

Zostaniesz zapytany następnie o sterowniki "old disk-only" i "new IDE". Wybierz jeden z nich; główna różnica pomiędzy nimi to taka, że stary sterownik obsługuje tylko dwa dyski na pojedynczym interfejsie, a nowy obsługuje drugi interfejs i napędy IDE/ATAPI CD-ROM. Nowy sterownik jest o około 4 kB większy od starego i ma być lepszy. To znaczy, że pomijając mniejszą ilość błędów może działać bardziej wydajnie, szczególnie jeśli masz dysk typu EIDE.

Networking support (General Setup).

Ogólnie powinieneś odpowiedzieć "y" jeśli twój komputer jest w sieci takiej jak Internet, albo jeśli chcesz używać protokołów SLIP czy PPP, aby mieć dostęp do Internetu. Aczkolwiek wiele pakietów (np. Xwindows) wymaga obsługi sieci nawet jeśli twój komputer nie jest podłączony do żadnej sieci; powinieneś tu odpowiedzieć "y". Później, zostaniesz zapytany czy chcesz obsługę protokołu TCP/IP; znowu, odpowiedz "y" jeśli nie jesteś absolutnie pewien.

System V IPC (General Setup).

Jedną z najlepszych definicji IPC (InterProcess Communication - Komunikacja Pomiędzy Procesami) znajduje się w glosariuszu w książce o Perlu. Nic więc dziwnego, że niektórzy programiści piszący w Perlu wykorzystują go do komunikacji między procesami, tak samo jak wiele innych pakietów (DOOM - z tych najbardziej znanych ;) ), więc odpowiedź "n" nie jest mądrym wyborem, o ile wiesz dokładnie co robisz.

Processor family (Processor type and features).(w starszych wersjach: Use -m486 flag for 486-specific optimizations)

Tradycyjnie, to wkompilowywało pewne optymalizacje dla konkretnego procesora; jądra działały dobrze także na inncyh procesoarch, ale były one troche większe. W nowszych wersjach się już tego nie stosuje i powinieneś odpowiedzieć na jaki procesor rzeczywiście kompilujesz jądro. Jądro skompilowane na 386 będzie działać na wszystkich procesorach.

SCSI support.

Jeśli masz urządzenia SCSI odpowiedz "y". Zostaniesz następnie zapytany o dalsze informacje, jak np.: obsługa CD-ROM-u, dysków i twojego adaptera. Zajrzyj do SCSI-HOWTO po więcej szczegółów.

Network device support.

Jeśli masz kartę sieciową, albo chciałbyś używać protokołów SLIP, PPP, albo kontrolera portu równoległego aby połączyć się z Internetem odpowiedz "y". Konfigurator spyta cię następnie o typ karty i rodzaj protokołu.

Filesystems.

Skrypt konfiguracyjny pyta cię następnie o to, jakie systemy plików chcesz obsługiwać:

Standard (minix) - Nowsze dystrybucje nie tworzą tego systemu plików, a wielu ludzi go nie używa, ale jednak użycie go mogłoby być dobrym pomysłem, ponieważ przydaje się on do odczytu dyskietek, dla których system ten jest mniej bolesny niż ext2.

Second extended - To jest standardowy system plików Linuxa. Prawie na pewno masz jeden z nich i musisz odpowiedzieć y.

msdos - Jeśli chcesz używać swej partycji dos-owej, albo montować dyskietki sformatowane pod ten system, odpowiedz "y".

Dostępne są jeszcze różne inne systemy plików z innych systemów operacyjnych.

/proc - (Pomysł jak mniemam z laboratorium Bella). Na dysku nie tworzy się systemu plików proc. To jest system plików, który służy do porozumiewania się z jądrem i procesami. Wiele programów wyświetlających procesy, jak np. ps używa tego systemu plików. Spróbuj czasami wykonać polecenie cat /proc/meminfo albo cat /proc/devices. Niektóre powłoki (w szczególności rc) używają /proc/self/fd (znane jako /dev/fd na innych systemach) do funkcji I/O. Powinieneś prawie na pewno odpowiedzieć tutaj "y". Wiele ważnych narzędzi do Linux-a zależy od tego systemu plików.

NFS - Jeśli twój komputer jest w sieci i chcesz używać systemów plików, które znajdują się na innych systemach z NFS, odpowiedz "y".

ISO9660 - Ten system plików jest na przeważającej ilości CD-ROM-ów. Jeśli więc chcesz używać CD-ROM-u odpowiedz "y".

Ale ja nie wiem jakiego systemu plików potrzebuję!

No dobra, napisz mount. Powinno się wyświetlić coś jak:

    blah# mount
    /dev/hda1 on / type ext2 (defaults)
    /dev/hda3 on /usr type ext2 (defaults)
    none on /proc type proc (defaults)
    /dev/fd0 on /mnt type msdos (defaults)

Spójrz na każdą linijkę; słowo obok type jest typem systemu plików. W tym przypadku / i /usr są typu second extended, używany jest także proc i jest także zamontowana dyskietka z systemem plików msdos (tfu!).

Możesz spróbować też cat /proc/filesystems jeśli masz system proc. Wyświetli ci to systemy plików wkompilowane w aktulanie używane jądro.

Konfiguracja rzadko używanych i nie krytycznych systemów plików może powodować niepotrzebne powiększanie się jądra; poczytaj sekcję o modułach jak tego uniknąć i sekcję "Pułapki", aby dowiedzieć się dlaczego powiększające się jądro nie jest pożądane.

Character devices.

Tutaj dołączasz sterowniki dla drukarki (równoległej, znaczy się), myszy szeregowej, myszy PS/2 (wiele Notebooków używa protokołu PS/2 dla swoich wbudowanych myszy), niektóre sterowniki do taśm, i inne tego typu "znakowe" urządzenia. Odpowiedz "y" kiedy znajdziesz urządzenie, którego używasz.

UWAGA: gpm to program, który pozwala na użycie myszy poza Xwindow i na kopiowanie tekstu pomiędzy wirtualnymi konsolami. Jest to całkiem przyjemne jeśli masz zwykłą myszkę szeregową, ponieważ koegzystuje ona z Xwindows, ale musisz uciekać się do specjalnych sztuczek dla innych.

Sound.

Jeśli czujesz wielką potrzebę usłyszenia dźwięków wydobywających się z tej maszynerii to odpowiedz "y" i napisz wszystko co wiesz na temat szczegółów twojej karty dźwiękowej i skompiluje sterownik. (Uwaga o konfiguracji kart dźwiękowych: jeśli zapyta cię czy chcesz zainstalować pełną wersję sterownika, możesz odpowiedzieć "n" i zaoszczędzić trochę pamięci wybierając tylko to co jest ci potrzebne.)

Jeśli myślisz poważnie o karcie dźwiękowej, to zajrzyj na dwie strony darmowych sterowników:

Inne opcje konfiguracji.

Nie wszystkie opcje konfiguracyjne są tu wymienione ponieważ zmieniają się zbyt często lub są oczywiste (na przykład: obsługa 3Com 3C509). Jest całkiem spora lista wszystkich opcji wraz ze sposobem umieszczenia jej w skrypcie Configure. Zajmuje się tą listą Axel Boldt ( boldt@math.ucsb.edu). Można go także zobaczyć jako jeden duży plik w dystrybucji jądra Documentation/Configure.help od wersji 2.0.

[Od tłumacza] Plik ten dla chyba dwóch wersji jądra jest przetłumaczony na język Polski. Zajrzyj pod adres www.jtz.org.pl/inne-polskie.html

Kernel hacking.

Wzięte z pliku README napisanego przez Linusa: opcja "kernel hacking" daje w rezultacie większe i wolniejsze jądro, może nawet uczynić je mniej stabilnym, przez konfigurowanie niektórych procedur, tak aby aktywnie próbowały łamać złe algorytmy i żeby można było znaleźć problemy jądra. (kmalloc()). Tak więc powinieneś odpowiedzieć tutaj "n" jeśli chcesz mieć normalnie działające i stabilne jądro.

3.4 I co teraz? (Makefile)

Jak już skończysz konfigurację pojawi się na ekranie wiadomość, że jądro zostało skonfigurowane i że należy sprawdzić top-level Makefile dla dodatkowej konfiguracji.

Ten top-level Makefile to plik o nazwie Makefile w katalogu /usr/src/linux. Zajrzyj tam. Przypuszczalnie nie będziesz tam nic zmieniał, ale spojrzeć nie boli :). Jak już zainstalujesz nowe jądro możesz zmienić jego opcje przy pomocy narzędzia rdev. Jeśli czujesz się zagubiony patrząc na ten plik, to nie przejmuj się nim.

4. Kompilacja jądra.

4.1 Czyszczenie i zależności.

Kiedy skrypt konfiguracyjny się skończy każe ci napisać make dep i (przypuszczalnie) make clean. Tak więc zaczynamy od make dep. Jest to pewne zabezpieczenie się, które sprawdza różne zależności, jak na przykład: czy pliki nagłówkowe są na swoich miejscach. Nie zajmuje to wiele czasu, no chyba, że twój komputer jest naprawdę wolny.

W starszych wersjach powinieneś jeszcze wydać polecenie make clean. To usuwa pozostałości po starej kompilacji jądra (pliki objektowe itp). Nie zapomnij tego kroku !!!

4.2 Kompilacja główna.

Po czyszczeniu i sprawdzeniu zależności możesz wpisać make bzImage lub make bzdisk (to jest ta część, która zabiera tyle czasu). make bzImage skompiluje jądro i zostawi je w pliku /usr/src/linux/arch/i386/boot/bzImage wśród innych rzeczy. To jest nowe skompresowane jądro. make bzdisk robi to samo, z tą różnicą, że umieszcza plik bzImage na dyskietce w stacji A:, którą mam nadzieję włożysz na czas do stacji :). (ten czas to sam koniec kompilacji, ale na wszelki wypadek radzę włożyć od razu, bo potem można zapomnieć) make bzdisk to dobry sposób na testowanie nowego jądra; jeśli coś pójdzie nie tak, po prostu wyjmujesz dyskietkę ze stacji, resetujesz i po krzyku. Może to być także pomocne jeśli przypadkowo usuniesz jądro z dysku. (radzę uważać na to co się robi w katalogu głównym a szczególnie w katalogu /boot). Możesz jej także użyć do instalacji innych systemów, ponieważ wystarczy przegrać zawartość tej dyskietki na inną.

Wszystkie, nawet te w połowie sensowne, jądra są skompresowane, z powodu literek "bz" na początku. Skompresowane jądro odkompresowuje się automatycznie w czasie wykonywania.

W starszych jądrach nie ma opcji bzImage. Było to po prostu zImage. Opcja ta jest wciąż dostępna, jednak biorąc pod uwagę obecne rozmiary jądra nie poleca się tego sposobu kompresji.

4.3 Inne parametry dla "make" przy kompilowaniu jądra.

make mrproper spowoduje dokładniejsze wyczyszczenie. Czasem jest to potrzebne; możesz to robić przy instalacji każdej łaty (patch). make mrproper skasuje także twój plik z bieżącą konfiguracją, więc możesz sobie zrobić kopię tego pliku (.config).

make oldconfig spróbuje skonfigurować jądro na podstawie starego pliku konfiguracyjnego; przejdzie za ciebie przez proces konfiguracji (make config). Jeśli jeszcze nigdy przedtem nie kompilowałeś jądra lub nie masz starego pliku konfiguracyjnego wtedy przypuszczalnie nie powinieneś tego robić, bo będziesz chciał zmienić konfigurację domyślną.

Przeczytaj sekcję o modułach na temat szczegółów dotyczących make modules.

4.4 Instalacja jądra.

Jeśli masz już nowe jądra i wydaje ci się, że ono działa tak jak chciałeś, czas aby je zainstalować. Większość ludzi używa do tego celu LILO (Linux Loader). make bzlilo zainstaluje jądro, uruchomi lilo, aby odświeżyć informacje i przygotuje wszystko, aby zresetować i załadować nowe jądro. ALE TYLKO w przypadku, gdy LILO jest skonfigurowane następująco: jądro to /vmlinuz, lilo jest w /sbin, a twój plik konfiguracyjny od lilo to /etc/lilo.conf i zgadza się z tym co jest powyżej.

W innym przypadku musisz użyć bezpośrednio polecenia lilo. Jest to pakiet całkiem prosty do zainstalowania i używania, ale ma tendencję do załamywania ludzi swoim plikiem konfiguracyjnym. Zajrzyj do pliku /etc/lilo/config - w starszych wersjach; lub /etc/lilo.conf - w nowszych wersjach, i sprawdź bieżące ustawienia. Plik ten wygląda tak:

    image = /vmlinuz
        label = Linux
        root = /dev/hda1
        ...

image = odnosi się do aktualnej wersji zainstalowanego jądra. Większość używa nazwy /vmlinuz. Ale równie dobrze może to być nazwa xxx, jądro, czy pliczek (nie jestem pewien co do polskich liter, ale zawsze można poeksperymentować :) ) label = używane jest przez LILO, aby dowiedzieć się jaki system lub jądro załadować, a root = jest katalogiem głównym danego systemu. Zrób kopię jądra, którego teraz używasz i skopiuj nowo zrobione jądro na miejsce starego (czyli napisz cp bzImage /vmlinuz jeśli używasz nazwy vmlinuz i jesteś w katalogu /usr/src/linux/arch/i386/boot. Potem uruchom LILO - w nowszych wersjach po prostu uruchamiasz lilo; w starszych może będziesz musiał uruchomić /etc/lilo/install albo nawet /etc/lilo/lilo -C /etc/lilo/config.

Jeśli chcesz wiedzieć więcej na temat konfiguracji LILO, albo nie masz LILO, zdobądź najnowszą wersję i poczytaj dokumentację.

Aby załadować jedną ze starszych wersji jądra, które mam nadzieję zachowałeś :) skopiuj linie od image = xxx w pliku konfiguracyjnym LILO na dół pliku, zmień xxx na nazwę twojego zachowanego pliku (wraz z pełną ścieżką). Zmień label = zzz na np. label = old-kernel i uruchom ponownie lilo. Możesz też wstawić linię delay = x, gdzie x jest ilością dziesiętnych części sekundy, do pliku konfiguracyjnego LILO, aby zatrzymać ładowanie na określoną ilość sekund i przerwać je np. klawiszem SHIFT, a potem wpisać nazwę którą nadałeś starszej wersji jądra (tę label = z pliku konfiguracyjnego LILO, a nie nazwę pliku jądra) w razie gdyby stało się coś nieprzyjemnego.

5. Łatanie jądra (patchowanie).

5.1 Zakładanie łaty.

Pakiety, które pozwalają na odnowienie jądra to łaty. Na przykład: jeśli masz wersję 1.1.45 i znajdziesz plik o nazwie patch46.gz to znaczy, że możesz odnowić swoje jądro do wersji 1.1.46. Możesz zrobić kopię źródeł, które masz (make clean a potem cd /usr/src; tar zcvf old-kernel.tar.gz linux)

Tak więc kontynuując powyższy przykład załóżmy, że masz plik patch46.gz w katalogu /usr/src. Bedąc w katalogu /usr/src wydaj polecenie zcat pacth46.gz | patch -p0 albo patch -p0 < patch46 jeśli łata nie jest skompresowana. Zobaczysz teraz trochę ścieżek i nazw plików oraz komunikatów przelatujących przez ekran, o tym co się udało a co nie. Wszystko to przelatuje zbyt szybko, żeby nadążyć z czytaniem, także właściwie nie wiesz czy się udało czy nie. Możesz użyć parametru -s do polecenia patch, aby poinformować je, żeby wyświetlało tylko komunikaty o błędach. Aby zobaczyć czy coś poszło nie tak, poszukaj plików z rozszerzeniem .rej w katalogu /usr/src/linux. Niektóre wersje patch (starsze wersje, które mogły być skompilowane na gorszym systemie plików) zostawiają błędy w plikach z rozszerzeniem #. Możesz użyć polecenia find, aby znaleźć te pliki:

      cd /usr/src/linux; find ./ -name '*.rej' -print

Polecenie to wyświetli wszystkie pliki z rozszerzeniem rej znajdujące się w bieżącym katalogu i jego podkatalogach.

Jeśli wszystko poszło dobrze, wydaj teraz po kolei polecenia make clean, make config i make dep tak jak opisano w sekcjach 3 i 4.

Do polecenia patch jest trochę opcji. Jak już wspomniałem, patch -s spowoduje wyświetlenie na ekran tylko wiadomości o błędach. Jeśli trzymasz źródła w innym katalogu niż /usr/src/linux, polecenie patch -p1 wydane w tym katalogu, gdzie trzymasz źródła zrobi wszystko bez błędów. Inne opcje polcenia patch są dobrze opisane w podręczniku "man".

5.2 Jeśli coś pójdzie nie tak.

(Uwaga: ta sekcja odnosi się w głównej mierze do starszych wersji jądra.)

Najczęstszym problemem było to, że kiedy polecenie patch modyfikowało plik config.in nie wyglądał on tak jak powinien, bo zmodyfikowałeś go, aby pasował do twojego komputera. Zostało to już poprawione, ale w starszych wersjach błąd ten pozostał. Aby to naprawić, przeczytaj plik config.in.rej i zobacz co pozostało z oryginalnej łaty. Zmiany są zwykle zaznaczane znakami + i - na początku linii. Spójrz na linie otaczające tę zaznaczoną i przypomnij sobie, czy były one ustawione na tak, czy na nie. Teraz w pliku config.in zmień "y" na "n" i "n" na "y" tam gdzie trzeba. Wydaj polecenie patch -p0 < config.in.rej a jeśli poinformuje cię, że się powiodło, wtedy możesz kontynuować konfigurację i kompilację. Plik config.in.rej pozostanie, ale możesz go skasować.

Jeśli odkryjesz dalsze problemy, mogłeś zainstalować jakąś łatę nie w kolejności. Jeśli na ekranie pojawi się taka wiadomość: previously applied patch detected: Assume -R? oznacza to, że przypuszczalnie próbujesz nałożyć łatę o wersji mniejszej niż źródła twojego jądra. Jeśli odpowiesz "y", polecenie patch spróbuje zdegradować twoją wersję, i najprzypuszcalnie się to nie powiedzie, przez co będziesz musiał zdobyć całkiem nowe źródła. (co w sumie wcale nie jest takim złym pomysłem).

Aby odinstalować jakąś łatę użyj patch -R na oryginalnej.

Jak już się wszystko tak pomiesza, że nie będziesz mógł dojść do ładu, to najlepszym sposobem jest zdobyć nowe źródła jądra i zacząć od nowa.

5.3 Pozbywanie się plików ".orig".

Po zaledwie kilku łatach pliki .orig zaczynają niebezpiecznie rosnąć. Na przykład: usunięcie plików .orig z wersji 1.1.51, która była ostatnio czyszczona w wersji 1.1.48 spowodowało zwolnienie ponad 500 kB dysku.

    find . -name '*.orig' -exec rm -f {} ';'

Polecenie to spowoduje usunięcie wszystkich plików .orig z bieżącego katalogu i jego podkatalogów.

Wersje patch, które używają plików .# zamiast plików .rej, używają tyldy (~) zamiast plików .orig.

Są lepsze sposoby pozbycia się plików .orig, które zależą od polecenia GNU xargs:

    find .  -name '*.orig' | xargs rm

lub metoda całkiem bezpieczna ale trochę "głośna" (dużo komunikatówna ekranie):

    find . -name '*.orig' -print0 | xargs --null rm --

5.4 Inne łaty.

Są jeszcze inne łaty (tzw. niestandardowe), niż te które dystrybuuje Linus. Jeśli ich użyjesz łaty Linusa mogą nie działać i będziesz musiał je albo odinstalować, dopasować źródła albo łatę, zainstalować nowe źródła, albo jakaś kombinacja tego. Może to być trochę frustrujące, więc jeśli nie chcesz grzebać w źródłach (z możliwością narobienia niezłego bajzlu), odinstaluj niestandardowe wersje łat zanim zainstalujesz łatę Linusa, albo po prostu zainstaluj nowe źródła. Wtedy możesz zobaczyć czy łaty niestandardowe wciąż działają. Jeśli nie to albo utknąłeś ze starym jądrem i będziesz próbował zmusić jakoś źródło albo łatę, żeby zaczęła działać, albo będziesz czekał (pewnie błagał) o nową łatę.

Jak pospolite są te niestandardowe łaty?
Przypuszczalnie o nich usłyszysz. Ja używałem łaty "noblink" na moich wirtualnych konsolach, bo nienawidzę mrugającego kursora. Ta łata jest (a przynajmniej była) często odnawiana dla nowszych wersji jądra. Z większością nowych sterowników jako ładowalne moduły, chociaż częstotliwość niestandardowych łat znacznie spada.

6. Pakiety dodatkowe.

Jądro Linux-a ma wiele zalet, które nie znajdują się w źródłach. Są one rozprowadzane jako osobne pakiety. Niektóre z tych najbardziej popularnych są tu wymienione.

6.1 kbd

Konsola Linux-owa ma chyba więcej zalet niż na to zasługuje. Pomiędzy nimi znajdują się takie jak: zmiana czcionek, zmiana układu klawiszy, zmiana trybów wyświetlania (w nowszych wersjach). Pakiet kbd to programy, które pozwalają użytkownikowi na robienie tego wszystkiego plus wiele czcionek i układów klawiatur dla prawie wszystkich klawiatur i jest on dostępny z tego samego miejsca, gdzie znajdują się źródła jądra.

6.2 util-linux

Rik Faith ( faith@cs.unc.edu ) złożył razem obszerną kolekcję narzędzi do Linux-a, które dziwnym trafem nazywają się util-linux. Obecnie zajmuje się nimi Andries Brouwer ( util-linux@math.uio.no ). Dostępne są one poprzez anonimowe ftp z ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/system/misc. Zawiera ona takie narzędzia jak: setterm, rdev, czy ctrlaltdel, które są związane z jądrem. Jak Rik twierdzi, Nie instaluj tego zestawu bez zastanowienia. Nie trzeba instalować całej zawartości pakietu, mogłoby to nawet spowodować poważne problemy.

6.3 hdparm

Jak więszkość pakietów, ten był łatą i dodatkiem dla jądra. Łaty zostały z czasem związane na stałe z jądrem, a ten program stał się osobnym pakietem. W rękach niedoświadczonego użytkownika jest on bardzo niebezpieczny. Więc nie używaj go jeśli nie wiesz co robisz.

6.4 gpm

gpm - general purpose mouse czyli, w dość wolnym tłumaczeniu :), mysz o ogólnym zastosowaniu. Program ten pozwala na przenoszenie zawartośći pomiędzy wirtualnymi konsolami i inne pożyteczne rzeczy jak np. tłumaczenie protokołów pomiędzy różnymi typami myszek, używanie wielu myszek...

7. Niektóre pułapki.

7.1 make clean

Jeśli twoje nowe jądro zaczyna robić dziwne rzeczy po rutynowym odnowieniu, przypuszczalnie zapomniałeś wydać polecenie make clean przed kompilacją nowego jądra. Oznaki takie to może być cokolwiek od zawieszania się systemu bez powodu, przez dziwne problemy z funkcajmi I/O, do ślimaczej szybkości. Nie zapomnij także wydać polecenia make dep.

7.2 Wielkie albo wolne jądro.

Jeśli twoje jadro zżera ogromną ilość pamięci, jest zbyt duże, albo po prostu kompiluje się w nieskończoność nawet jeśli masz swoje nowiutkie Quadbazillium-III/4400, najprawdopodobniej skonfigurowałeś niepotrzebnie pełno sterowników. Jeśli czegoś nie używasz, to nie konfiguruj, bo to naprawdę zabiera niepotrzebnie pamięć. Najbardziej oczywistym symptomem przy zbyt dużym jądrze jest bardzo częste swapowanie (jeśli twój dysk ciągle rzęzi, a nie jest jednym z tych starych orłów Fujitsu, które brzmią jak lądujący odrzutowiec, przejrzyj konfigurację swojego jądra).

Możesz dowiedzieć się ile pamięci zabiera twoje jądro odejmując wartość total mem z pliku /proc/meminfo albo z polecenia free od całkowitej ilości pamięci w twoim komputerze.

7.3 Port równoległy nie działa/moja drukarka nie działa.

Opcje które musisz włączyć na PC-cie to: Najpierw w sekcji "General Setup" włącz "Parallel port support" oraz "PC-style hardware". Następnie w sekcji "Character devices" włącz "Parallel printer support".

No i potem zostają nazwy. W wersji 2.2 zastosowano inne nazwy niż w starszych wersjach. Powodem tego jest, to że w starym jądrze miałeś lp1 a teraz jest to lp0. Spójrz do dmesg albo w katalogu /var/log/.

7.4 Jądro się nie kompiluje.

Jeśli się rzeczywiście nie kompiluje, to pewnie jakaś łata się nie zainstalowała poprawnie. Twoja wersja "gcc" może także być nie w porządku. Albo pliki nagłówkowe są skopane. Upewnij się także czy symboliczne dołączenie, o których Linus pisze w README, są poprawnie zrobione. W ogólności jeśli standardowe jądro się nie kompiluje, to coś poważnego jest z systemem i niezbędna jest ponowna instalacja niektórych narzędzi.

W niektórych przypadkach "gcc" może się wysypać z powodu problemów sprzętowych. Komunikaty w tym przypadku to: xxx exited with signal 15 i w ogólności są one bardzo tajemnicze. Pewnie bym o tym nie wspominał, gdyby nie to, że mi się to zdażyło - miałem kiedyś wadliwą pamięć cache a kompilator wtedy hulał sobie po pamięci gdzie chciał. Najpierw spróbuj przeinstalwać gcc. Podejrzenia na sprzęt rzucaj dopiero jeśli jądro się kompiluje przy wyłączonym zewnętrznym cache'u, albo przy zmniejszonej ilości pamięci RAM itp.

Z reguły ludzi to trochę denerwuje jak im powiesz, że mają popsuty sprzęt. Cóż, ja tego nie zmyślam. Jest FAQ na ten temat - www.bitwizard.nl/sig11/.

7.5 Nowa wersja jądra nie chce się załadować.

Albo nie uruchomiłeś lilo po skopiowaniu jądra na miejsce starego, albo źle skonfigurowałeś. Najczęściej spotykanym problemem jest nie wkompilowanie obsługi twoejgo dysku lub systemu ext2. Kiedyś miałem problem z plikiem konfiguracyjnym LILO; było tam boot = /dev/hda1 a powinno być boot = /dev/hda. Na początku to może byc naprawdę denerwujące, ale potem jak już masz dobry plik konfiguracyjny nie powinieneś go zmieniać.

7.6 Zapomniałeś uruchomić lilo, albo system się w ogóle nie ładuje.

Oooj! Najlepszą rzeczą jaką można zrobić to załadować system z dyskietki lub CDROMu (no trzeba je oczywiście mieć :) ) i przygotować nową dyskietkę startującą (np. make zdisk). Musisz wiedzieć, gdzie jest twój główny system plików i jakiego jest typu. (ext2, minix). W przykładzie poniżej musisz także wiedzieć gdzie i na jakim systemie jest /usr/src/linux i gdzie jest zwykle zamontowany.

W następującym przykładzie "/" to /dev/hda1, a partycja, na której znajduje się katalog linux to /dev/hda3 normalnie montowana na /usr. Działające jądro jest w katalogu /usr/src/linux/arch/i386/boot i nazywa się bzImage.

Pomysł polega na tym, że jeśli masz działające bzImage, można tego użyć dla nowej dyskietki. Inna alternatywa, która może, ale nie musi działać (to zależy jak bardzo namieszałeś) opisana jest za tym przykładem.

Najpierw, załaduj system z dyskietki, którą akurat masz i zamontuj system plików, na którym znajduje się działające jądro:

   mkdir /mnt
   mount -t ext2 /dev/hda3 /mnt

Jeśli pojawi się komunikat, że katalog /mnt już jest - zignoruj go. Przy mount na pewno pojawi się komunikat ostrzegający, że montujesz niesprawdzony system plików - zignoruj go. Zmień katalog na ten, w którym znajduje się działające jądro (pamiętaj, że teraz masz dysk w katalogu /mnt). Umieść sformatowaną dyskietkę w stacji A: (nie dyskietkę, z której startowałeś !!!), przerzuć jądro na dyskietkę i skonfiguruj je dla twojego głównego systemu plików:

   cd /mnt/src/linux/arch/i386/boot
   dd if=bzImage of=/dev/fd0
   rdev /dev/fd0 /dev/hda1

Zmień katalog na / (cd /) i odmontuj katalog /mnt (umount /mnt). Powinieneś być teraz w stanie załadować system tak jak normalnie z tej dyskietki. Nie zapomnij uruchomić lilo po restarcie (czy co tam źle zrobiłeś).

Jak już wspomniałem jest jeszcze inna metoda. Jeśli masz kopię działającego jądra, możesz jej użyć dla zrobienia dyskietki startowej. Weźmy znów powyższe warunki i załóżmy, że działająca kopia to /vmlinuz. Zrób to samo co powyżej z tymi zmianami: /dev/hda3 zmień na /dev/hda1/ (gł. system plików) /mnt/src/linux na /mnt if=bzImage na if=vmlinuz

------------------------------------------------------------------
Od tłumacza:

Szczerze powiem/napiszę, że nie wiem po co ten człowiek tak komplikuje sprawę. Podam tu sposób, ktorego ja używam:

Najpierw sprawdź czy masz takie linijki na początku pliku /etc/lilo.conf:

   prompt
   timeout=50

Jeśli nie to je dopisz.

W swoim pliku /etc/lilo.conf mam zawsze dwie sekcje:

image=/boot/vmlinuz
        label=linux
        root=/dev/hda1
        read-only
image=/boot/vmlinuz-old
        label=linux-old
        root=/dev/hda1
        read-only

Ja nazywam jądra z wersją na końcu (/vmlinuz-2.0.18) i robię symboliczne dołączenie ln -s /vmlinuz-2.0.18 /vmlinuz. Jeśli kompiluję tę samą wersję jądra, to przed kompilacją/instalacją ZAWSZE robię kopię jądra, które mi działa (powiedzmy cp /vmlinuz-2.0.18 /vmlinuz.2.0.18.old);
Jak już skompiluję jądro to kopiuje je na /vmlinuz-wersja, przedtem KOPIA !!! - tylko jeśli kompilujemy tę samą wersję jądra, którą już używamy, bo nowsza wersja będzie miała inny numer na końcu. Po skopiowaniu zmieniamy dołączenie symboliczne (jeśli instalujemy nową wersję) - rm /vmlinuz; ln -s /vmlinuz-nowa_wersja /vmlinuz; oraz ln -s /vmlinuz-2.0.18.old /vmlinuz-old; potem uruchamiamy lilo i restartujemy komputer. Jeśli nowe jądro nie działa, to startujemy stare jądro (wpisujemy po pojawieniu się boot: lub LILO: na ekranie linux-old) i po wciśnięciu ENETERa mamy znowu działający system.

Jeśli nie działające jądro było w tej samej wersji co poprzednie (po prostu potrzebowałeś coś dodać), to trzeba uruchomić system w trybie "single" (linux-old init single), odzyskać stare moduły ze zrobionej poprzednio kopii katalogu /lib/modules/x.y.z i zrestartować jeszcze raz system pamiętając, żeby startować stare jądro. Albo po prostu zmień odpowiednie dowiązanie /vmlinuz, żeby wskazywało też na starą wersję jądra (ln -s /vmlinuz-x.y.z.old /vmlinuz) i NIE ZAPOMNIJ po każdej takiej operacji uruchomić /sbin/lilo.

------------------------------------------------------------------

Używanie LILO z dużymi dyskami (z wiekszą ilością cylindrów niż 1023) może powodować problemy. Przeczytaj mini-HOWTO LILO i Large-Drives, jeśli chcesz znać więcej szczegółów.

7.7 Pisze mi "warning: bdflush not running".

No i dobrze, że pisze, bo to może być poważny problem. Poczynając od wersji jądra 1.0.0 (około 20 kwietnia 1994) program update, który okresowo zapisuje zawartość bufora na dysk, został zmieniony. Zdobądź źródła programu "bdflush" (powinieneś je znaleźć tam gdzie jądro) i skompiluj. Dopóki nie uruchomisz tego programu radzę używać wersji jądra starszej od 1.0.0 (Czy ta wersja jest jeszcze do zdobycia !!!?). Instaluje się samo jako update, a po restarcie nowe jądro nie powinno juz narzekać.

7.8 Nie mogę zmusić mojego CD-ROM-u IDE/ATAPI do współpracy.

Naprawdę dziwne. Bardzo dużo ludzi ma ten problem. Pewnie dlatego, że jest dużo przypadków, w których to się może dziać.

Jeśli twój CD-ROM to jedyne urządzenie na konkretnym interfejsie IDE, musi być skonfigurowany zworkami jako master lub single. To jest najczęstszy problem.

Creative Labs umieszcza teraz interfejs IDE na swoich kartach dźwiękowych. To prowadzi do ciekawego problemu, bo niektórzy mają tylko jeden interfejs IDE, wielu ma dwa interfejsy IDE na swoich płytach głównych (zwykle na IRQ15), więc najpopularniejszym rozwiązaniem jest uczynić interfejs na karcie dźwiękowej trzecim (IRQ11, a przynajmniej tak mi mówili).

To powoduje w Linux-ie problemy, ponieważ wersja 1.2.x nie obsługuje trzeciego interfejsu IDE (obsługa jest w którejś z wersji 1.3.x, ale pamiętaj - to jest wersja testowa, i nie wykrywa sama tego interfejsu). Aby to obejść masz trzy możliwości:

Jeśli masz już drugi interfejs, to przełóż CD-ROM na ten drugi interfejs jeśli jest wolny. Możesz wtedy wyłączyć interfejs z karty dźwiękowej, co zachowa jedno IRQ.

Jeśli nie masz drugiego interfejsu, ustaw interfejs na karcie dźwiękowej (ale nie ten od dźwięku, tylko IDE) na przerwanie IRQ15 za pomocą zworek. Powinno działać.

7.9 Pisze coś o przestarzałym rutingu.

Weź nową wersję programu route i wszelkie inne programy, które się zajmuja rutingiem. /usr/include/linux/route.h (który właściwie jest plikiem w /usr/src/linux) sie zmienił.

7.10 Firewall mi nie działa w wersji 1.2.0

Weź wersję co najmniej 1.2.1.

7.11 "Not a compressed kernel Image file".

Nie używaj jako jądra pliku vmlinux w katalogu /usr/src/linux stworzonego podczas kompilacji. Plik, który powinieneś użyć to: /usr/src/linux/arch/i386/boot/bzImage.

7.12 Problemy z konsolą po odnowieniu do wersji 1.3.x.

Zmień słowo dumb na linux w pliku /etc/termcap w sekcji dotyczącej konsoli. Mozliwe też, że będziesz musiał zrobić terminfo.

7.13 Nie mogę skompilować różnych rzeczy po odnowieniu jądra.

Źródła jądra zawierają pewną liczbę plików nagłówkowych (te co się kończą na .h), do których odwołują się standardowe pliki nagłówkowe w /usr/include. Przeważnie wygląda to tak:

     #include <linux/xxyy.h>

Zwykle w katalogu /usr/include jest symboliczne dołączenie linux wskazujące na /usr/src/linux/include/linux. Jeśli dołączenia tego nie ma, albo wskazuje na złe miejsce, to rzeczywiście większość programów się nie skompiluje. Jeśli zdecydowałeś, że źródła zajmują za dużo miejsca na dysku i skasowałeś je, to to jest właśnie twój problem. Razem z tymi źródłami skasowałeś pliki nagłówkowe. Inny problem to problem z dostępem do plików: Jeśli twój root ma umask ustawiony tak, że użytkownicy nie mogą widzieć plików przez niego stworzonych, i rozpakowałeś źródła bez opcji p (zachowaj oryginalne flagi dostępu), użytkownicy nie będą mogli użyć kompilatora. Najprościej naprawić to w ten sposób:

   zaloguj się jako root
   cd /usr/src/linux/
   chmod -R go+r include/

7.14 Zwiększanie limitów.

Kilka następujących przykładowych poleceń może pomóc tym, którzy zastanawiają się jak zwiększyć pewne programowe ograniczenia wprowadzone przez jądro:

echo 4096 > /proc/sys/kernel/file-max
echo 12288 > /proc/sys/kernel/inode-max
echo 300 400 500 > /proc/sys/vm/freepages

8. Uwaga na temat uaktualnienia do wersji 2.0.x i 2.2.x.

Wersje jądra 2.0.x i 2.2.x wprowadziły trochę zmian w instalacji. Plik Documentation/Changes zawiera informacje, które powinieneś poznać, kiedy uaktualaniasz swoje jądro do którejś z tych wersji. Najprzypuszczalniej będziesz musiał odnowić także niektóre kluczowe pakiety, takie jak: gcc, libc i SysVInit, i może dostosować kilka plików systemowych. Ale nie panikuj !

9. Moduły.

Ładowalne moduły jądra mogą zaoszczędzić trochę pamięci i ułatwić konfigurację. Obszar działania modułów urósł już do tego, że zawierają one systemy plików, sterowniki do kart Ethernet, do taśm, do drukarek i wiele innych.

9.1 Instalacja narzędzi modułowych.

Narzędzia te sa dostępne stamtąd, skąd masz źródła jądra. Nazywają się modutils-x.y.z.tar.gz; wybierz najwyższą wersję równą, albo mniejszą od wersji twojego jądra. Rozpakuj poleceniem tar zxvf modutils-x.y.z. Wejdź do stworzonego katalogu i poczytaj plik README. Wypełnij dokładnie instrukcje na temat instalacji (jest ona z reguły bardzo prosta: make install lub coś podobnego). Powinieneś mieć teraz programy: insmod, rmmod, ksyms, lsmod, genksyms, modprobe i depmod w katalogu /sbin. Jeśli chcesz przetestować narzędzia z przykładowym sterownikiem "hw" w insmod; przejrzyj plik INSTALL w tym katalogu.

insmod ładuje moduł do uruchomionego jądra. Moduły mają z reguły roszerzenie .o; przykładowy moduł wspomniany wyżej nazywa się drv_hello.o, a więc aby go załadować, napisz: insmod drv_hello.o. Aby zobaczyć jakie moduły są aktualnie używane przez jądro użyj lsmod. Powinien wyświetlić coś takiego

   blah# lsmod
   Module:      #pages: Usedby:
   drv_hello       1

drv_hello jest nazwą modułu, używa jednej strony (4kB) pamięci i żadne inne moduły nie zależą od niego w tej chwili. Aby usunąć ten moduł z jądra użyj rmmod drv_hello. Zauważ, że rmmod chce nazwy modułu a nie pliku. Weź ją z polecenia lsmod. Inne narzędzia modułowe są opisane w podręczniku man.

9.2 Moduły dystrybuowane z jądrem.

Jeśli chodzi o wersję 2.0.30 większość sterowników dostępna jest w postaci modułów. Aby ich użyć, najpierw upewnij się czy nie skonfigurowałeś ich jako stałe części jądra. To znaczy: nie odpowiadaj "y" na pytania ich dotyczące podczas konfiguracji, ale "m" jeśli jest taka możliwość. Po skompilowaniu jądra napisz make modules i make modules_install. Pierwsze polecenie skompiluje wszystkie sterowniki wyspecyfikowane jako moduły, a drugie zainstaluje je w katalogu /lib/modules/x.y.z, gdzie x.y.z jest wersją jądra. Po zainstalowaniu tych modułów wejdź do katalogu /lib/modules/x.y.z i napisz modprobe -a, jeśli masz ten program.

$lsqb;Od tłumacza] Jeśli kompilujesz jądro o wersji takie samej jak to które używasz obecnie, to na wszleki wypadek przed poleceniem make modules_install, zrób w katalogu /lib/modules/ kopię katalogu o nazwie takiej samej jak wersja obecnego jądra.

Moduły są szczególnie przydatne do systemów plików albo sterowników urządzeń, których rzadko używasz. Np. jeśli chcesz użyć dyskietki msdos, to najpierw piszesz insmod /lib/modules/x.y.z/fs/msdos.o i używasz tej dyskietki. Po skończeniu piszesz rmmod msdos. Operacja ta zaoszczędza jakieś 50 kB RAM-u - niby nic ale jak się uzbiera kilka takich sterowników to docenisz tę zaletę. Co do systemu plików minix to powinien on być zawsze wkompilowany w jądro na stałe, w razie użycia dyskietki startowej. Na dyskietkach jest właśnie minix.

------------------------------------------------------------------
Od tłumacza: Znowu facet skomplikował sprawę. Jest narzędzie, które zajmuje się za ciebie ładowaniem i usuwaniem odpowiednich modułów do i z pamięci. Nazywa się kerneld czyli kernel daemon. Jeśli użyjesz czegoś co wymaga sterownika w module, kerneld załaduje za ciebie ten moduł, a potem go wyrzuci jak już przestaniesz tego używać. Aby go użyć musisz odpowiedzieć na pytanie konfiguracyjne dotyczące kerneld "Kernel daemon support" "y". Przedtem jeszcze odpowiedz "y" na pytanie "Modules support" czy jakoś tak, żeby móc w ogóle używać modułów. Po kompilacji jądra wszystko idzie tak samo jak opisane powyżej. Jeszcze jedno: jeśli masz dystrybucję RH to sprawdź czy w pliku /etc/rc.d/rc.sysinit jest uruchamiany /sbin/kerneld. Jeśli nie, to sprawdź czy uruchamia się tam program depmod. jeśli też nie to dopisz te linijki:

     /sbin/depmod -a
     
     if [ -x /sbin/kerneld ]; then
        /sbin/kerneld
     fi

za linijką która wygląda mniej więcej tak:

      mount -n -o remount,rw /

Jeśli masz Slackware sprawdź czy w pliku /etc/rc.d/rc.M jest uruchamiany /sbin/kerneld. Jeśli nie, to sprawdź czy uruchamia się tam program depmod. Jeśli też nie, to dopisz te linijki

     /sbin/depmod -a
     
     if [ -x /sbin/kerneld ]; then
        /sbin/kerneld
     fi

za linijką która wygląda mniej więcej tak:

      mount -n -o remount,rw /

Jeśli masz dystrybucję Debian to: 1) sprawdź czy jest plik /etc/init.d/kerneld, jeśli tak to 2) sprawdź czy w /etc/rcX.d/ jest dowiązanie do tego pliku (będzie to plik SYYkerneld), jeśli jest, to wszystko jest w porządku. X - numer runlevel-u który standardowo uruchamiasz. (sprawdź w pliku /etc/inittab linijkę initdefault)
Jeśli któryś z tych warunków jest niespełniony to:

ad 1) załóż plik /etc/init.d/kerneld o treści:

#!/bin/bash

# source function library
. /etc/rc.d/init.d/functions


case "$1" in
  start)
        echo -n "Starting kerneld "
        if [ -f "/sbin/kerneld" ]; then
                /sbin/kerneld
                /sbin/depmod -a
        fi

        touch /var/lock/subsys/kerneld
        ;;
  stop)
        echo -n "Shutting down kerneld: "
        killproc kerneld
        rm -f /var/lock/subsys/kernled
        echo
        ;;
  *)
        echo "Usage: kerneld {start|stop}"
        exit 1
esac

exit 0

ad 2) napisz

     cd /etc/rcX.d/
     ln -s /etc/init.d/kerneld SYYkerneld

YY musi być numerem przed ładowaniem modułów; najlpiej jak najwcześniej. ------------------------------------------------------------------

10. Sztuczki i wskazówki.

10.1 Przekierowywanie wyjścia z poleceń make i patch.

Jeśli chciałbyś mieć zapisane w pliku to co działo się podczas wykonywania poleceń make i patch, możesz przekierować wyjście tych komend do pliku. Najpierw dowiedz się w jakiej powłoce pracujesz:

   echo $shell

Jeśli jest to /bin/sh albo /bin/bash, wtedy przekierowywanie wyjścia wygląda tak:

   polecenie 2>&1 | tee nazwa_pliku_do_zapisania

Jeśli jest to /bin/csh albo /bin/tcsh, to wygląda to tak

   polecenie |& tee nazwa_pliku_do_zapisania

Jeśli używasz rc (a raczej nie używasz), wtedy wygląda to tak:

   polecenie >[2=1] | tee nazwa_pliku_do_zapisania

10.2 Instalacja warunkowa jądra.

Są jeszcze inne metody testowania nowego jądra bez ruszania starego, oprócz tych z dyskietkami. LILO ma możliwość ładowania jądra z jakiegokolwiek miejsca na dysku (jeśli twój dysk ma więcej niż 1023 cylindry [512 MB lub więcej], przeczytaj dokumentację LILO, żeby dowiedzieć się jakie są z tym związane problemy). Tak więc jeśli dodasz takie linie:

     image = (tu wstaw katalog, w którym znajduje się nowe jądro)
         label = new_kernel

na końcu pliku konfiguracyjnego LILO, możesz wybrać jakie jądro chcesz ładować, bez ruszania starego jądra (po wykonaniu lilo oczywiście). Najprostszym sposobem poinformowania LILO, które jądro chcemy załadować jest wciśnięcie klawisz SHIFT podczas startu (w momencie kiedy na ekranie pojawi się "LILO"). Wtedy pojawi się znak zachęty. Wpisując tu new_kernel, lub nazwę, którą nadałeś w pliku konfiguracyjnym LILO nowemu jądru, poinformujesz LILO, żeby załadowało nowe jądro.

Jeśli chcesz trzymać kilka różnych źródeł jądra na dysku (to zabiera DUŻO miejsca - ostrożnie) najprostszym sposobem jest nazywanie ich linux-wersja_jądra. Musisz wtedy zrobić symboliczne dołączenie ln -s linux-wersja linux żeby używać wybranej wersji. Przed zrobieniem takiego dołączenie upewnij się, że ostatni parametr do "ln" nie jest katalogiem, bo wtedy nie będzie to to, czego się spodziewałeś.

10.3 Odnowienia jądra.

Russel Nelson ( nelson@crynwr.com ) umieszcza zmiany jakie zaszły w bieżącej wersji jądra. Są one krótkie i możesz zajrzeć tam zanim postanowisz odnowić jądro. Są one dostępne poprzez anonimowe ftp z ftp.emlist.com w katalogu pub/kchanges lub poprzez WWW - http://www.crynwr.com/kchanges. Spis zmian możesz znaleźć także w ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/kernel/changes.

11. Inne dokumenty HOWTO, które mogą się przydać to:

12. Różności

12.1 Od autora.

Autorem i człowiekim opiekującym się tym dokumentem jest Brian Ward bri@cs.uchicago.edu Proszę przysyłać mi wszelkie komentarze, dodatki, poprawki (te są najważniejsze).

Jak chcesz możesz zajrzeć na moją stronę WWW:

            
<htmlurl url="http://www.math.psu.edu/bri/" name="www.math.psu.edu/bri/">

Pomimo, iż staram się odpowiadać na pocztę kiedy tylko mogę, to musisz pamiętać, że dostaje dużo listów codziennie. Więc odpowiedzenie na twój list może zająć trochę czasu. Szczególnie jeśli wysłałeś mi jakieś pytanie, spróbuj być jak najbardziej dokładny. Jeśli piszesz o niedziałającym sprzęcie (czy coś podobnego) muszę wiedzieć jaka jest konfiguracja tego sprzętu. Jeśli piszesz o błędzie, to nie pisz, że "próbowałem, ale nie działa..." Muszę znać chociaż błąd jaki się pojawił. Chciałbym także wiedzieć jaka była wersja jądra, gcc i libc. Jeśli powiesz mi, że używasz tej-i-tej dystrybucji to mi wiele nie powie. Nie obchodzi mnie to, że zadajesz proste pytania. Kto pyta, nie błądzi! Chciałbym podziękować wszystkim, którzy wspierali mnie podzas pisania tego dokumentu.

Jeśli twoje pytanie nie było związane z jądrem albo jest w jakimś języku, którego nie znam, to mogę nie odpowiedzieć.

Jeśli wysłałeś do mnie list i nie otrzymałeś odpowiedzi w jakimś sensownym czasie (3+ tygodni). To całkiem możliwe, że przypadkowo skasowałem twój list (przepraszam). Napisz jeszcze raz.

Dostaję dużo poczty z pytaniami, które są właściwie problemami sprzętowymi. W porządku, ale pamiętaj, że przecież nie znam wszystkich urządzeń na świecie i nie wiem na ile mogę być pomocny. Osobiście używam maszyn z procesorem AMD, kontrolery SCSI Adaptec i Sybios oraz dyski SCSI IBM.

Wersja -0.1 została napisana 3 października 1994. Dokument ten jest dostępny w formatach: SGML, PostScript, TeX, roff i jako czysty tekst.

12.2 Co jest jeszcze do zrobienia.

Sekcja na temat sztuczek i wskazówek jest jeszcze trochę mała. Mam nadzieję, że się rozrośnie wraz z przybywaniem sugestii. To samo odnosi się do sekcji pakiety dodatkowe. Potrzeba mi więcej informacji na temat śledzenia (debugging) i odzyskiwania po padach systemu.

12.3 Oto ci, którzy się przyczynili do powstania tego HOWTO.

Dołączona jest mała część README Linusa na temat opcji rozgryzania jądra.(kernel hacking) (Dzięki Ci Linus!)

uc@brian.lunetix.de (Ulrich Callmeier): polecenia patch -s, xargs.

quinlan@yggdrasil.com (Daniel Quinlan): poprawki i dodatki do wielu sekcji.

nat@nataa.fr.eu.org (Nat Makarevitch): mrproper, tar -p i wiele innych

boldt@math.ucsb.edu (Axel Boldt): uzbierany spis opcji konfiguracyjnych jądra dotyczących sieci. Przesłane mi.

lembark@wrkhors.psyber.com (Steve Lembark): sugestie odnośnie wyboru jądra przy starcie.

kbriggs@earwax.pd.uwa.edu.au (Keith Briggs): kilka sugestii i poprawek.

rmcguire@freenet.columbus.oh.us (Ryan McGuire): dodatki na temat "make"

dumas@excalibur.ibp.fr (Eric Dumas): tłumaczenie francuskie

simazaki@ab11.yamanashi.ac.jp (Yasutada Shimazaki): tłumaczenie japońskie

jjamor@lml.ls.fi.upm.es (Juan Jose Amor Iglesias): tłumaczenie hiszpańskie

mva@sbbs.se (Martin Wahlen): tłumaczenie szwedzkie

jzp1218@stud.u-szeged.hu (Zoltan Vamosi): tłumaczenie węgierskie

B.Maruszewski@jtz.org.pl (Bartosz Maruszewski): tłumaczenie polskie

donahue@tiber.nist.gov (Michael J Donahue): korekta literówek, wygrał konkurs o kromkę chleba

rms@gnu.ai.mit.edu (Richard Stallman): pomysł na bezpłatną dokumentację i dystrybucję

dak@Pool.Informatik.RWTH-Aachen.DE (David Kastrup): NFS

esr@snark.thyrsus.com (Eric Raymond): różności.

Ci, którzy przysyłali mi pytania z problemami także byli pomocni.

12.4 Prawa autorskie, licencja i takie inne.

Dokument chroniony prawami autorskimi © Briana Warda, 1994-1999. Można rozprowadzać kopie tego dokumentu o ile na wszystkich będzie zachowana uwaga o prawach autorskich i to pozwolenie.

Można kopiować i dystrybuwać ten dokument w wersji modyfikowanej pod warunkiem dosłownego kopiowania zakładając, że praca pochodna jest dystrybuowana z takimi samymi prawami jak ten dokument. Tłumaczenia zaliczają się także do wersji modyfikowanych.

Gwarancja: Żadna.

Zalecenia: Dystrybucja komercyjna jest dozwolona. Jednak zaleca się najpierw kontakt z autorem, aby mieć najświeższe dane (możesz mi wysłać kopię tego co chcesz dystrybuować). Tłumacze są także zobowiązani najpierw się skontaktować ze mną. Wersja wydrukowana wygląda o wiele ładniej.

12.5 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /pub/Linux/JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to:

doc-linux-pl-2002.06.14.orig/html/Keyboard-HOWTO.pl.html0100664000175000017500000020376006770264140021311 0ustar covencoven The Linux Keyboard HOWTO

The Linux Keyboard HOWTO

Andries Brouwer, aeb@cwi.nl
v2.5, 27 sierpień 1997
Wersja polska: Gwidon S. Naskrent naskrent@hoth.amu.edu.pl
v1.1, 29 X 1997


Notka ta zawiera informacje na temat klawiatury i konsoli w Linuxie, oraz używania znaków spoza ASCII. Opisuje ona wersję 2.0 Linuxa. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/

1. Użyteczne programy

Poniższe pakiety zawierają programy odnoszące się do klawiatury lub konsoli:

kbd-0.90.tar.gz zawiera loadkeys, dumpkeys, showkey, setmetamode, setleds, setfont, showfont, mapscrn, kbd_mode, chvt, resizecons, disalloc, getkeycodes, setkeycodes.

util-linux-2.6 zawiera setterm, kbdrate. (Tak, more w util-linux 2.6 zrzuca core z powodu konfliktu nazw. Zachowaj swoją starą kopię, albo używaj util-linux-2.5, albo zmień 'savetty' na 'my_savetty' w more.c).

shutils-1.12 zawiera stty.

open-1.4.tgz zawiera open (które powinno się przemianować na openvt. Patrz też dynamic-vc-1.1.tar.gz).

SVGATextMode-1.6.tar.gz zawiera SVGATextMode, program który zastępuje stare resizecons

Dystrybucja X zawiera xmodmap, xset, kbd_mode (patrz też X386keybd(1) co do sytuacji pod XFree86 1.3, oraz Xserver(1) co do rozszerzenia XKEYBOARD pod X11R6).

termcap-2.0.8.tar.gz zawiera termcap, starą bazę danych właściwości terminala. ncurses-1.9.9e.tar.gz zawiera bazę termlib która zastępuje termcap (wiele programów jednak ciągle używa termcap).

Patrz loadkeys(1), setleds(1), setmetamode(1) co do kodów wysyłanych przez różne klawisze i ustawiania diod poza X. Pod X, użyj xmodmap(1).

Patrz setfont(8) co do ładowania czcionek konsoli. Wielu ludzi woli załadować jakąś czcionkę w rodzaju iso01.f16, ponieważ domyślna jest czcionką sprzętową karty graficznej, i często jest to czcionka "Code Page 437", w której brakuje akcentowanych znaków i innych symboli z zestawu Latin-1.

Patrz setterm(1), kbdrate(8) co do właściwości takich jak kolory tła i pisma, wygaszanie ekranu, szybkość powtarzania klawiszy - wszystko poza X. Pod X, patrz xset(1), też co do dźwięku przy naciśnięciu klawisza i głośności dzwonka.

Plik /etc/termcap definiuje Esc-sekwencje dla wielu programów które odnoszą się do konsoli (lub innego terminala). Bardziej nowoczesna wersja znajduje się w /usr/lib/terminfo. (Patrz terminfo(5). Pliki terminfo są kompilowane kompilatorem terminfo /usr/lib/terminfo/tic, patrz tic(1). Ich zawartość obejrzeć można używając programu infocmp, patrz infocmp(1). Sekwencje konsoli linuxowej opisane są w console_codes(4).

2. Ogólnie o klawiaturze

Naciskasz klawisz, a kontroler klawiatury wysyła kody skanowe do sterownika klawiatury jądra. Niektóre klawiatury można programować, ale przeważnie kody klawiszy odpowiadające klawiszom są stałe. Sterownik klawiatury jądra przesyła po prostu cokolwiek otrzymuje do programu aplikacji, gdy ta jest w trybie skanowania kodów, na przykład podczas działania X. W przeciwnym razie przekłada on strumień kodów skanowych na kody klawiszy, odpowiadające zdarzeniom naciśnięcia i zwolnienia klawisza (pojedyncze naciśnięcie klawisza może wytworzyć do sześciu kodów skanowych). Kody te [klawiszy] są przesyłane do programu aplikacji gdy znajduje się on w trybie kodów klawiszy (używane, na przykład, przez showkey). W przeciwnym razie, owe kody klawiszy porównywane są z rozkładem klawiatury, i znaleziony tam znak lub ciąg znaków jest przesyłany do aplikacji, bądź następuje wykonanie opisanej tam czynności. (Na przykład, jeśli naciśnie się i zwolni klawisz a, klawiatura wysyła kody skanowe 0x1e i 0x9e, przekształcane są one na kody klawiszy 30 i 158, a potem przesyłane jako 0141, kod ASCII lub Latin-1 litery 'a'; jeśli naciśnie się i zwolni Delete, klawiatura wysyła kody skanowe 0xe0 0x53 0xe0 0xd3, przekształcane na kody klawiszy 111 i 239, a potem przesyłane jako czterosymbolowa sekwencja ESC [ 3 ~, wszystko to zakładając amerykański układ klawiatury jako domyślny (przykładem kombinacji klawiszy której przypisana jest czynność jest Ctrl-Alt-Del).

Tłumaczenia pomiędzy nieczęstymi kodami skanowymi i klawiszy można dokonać używając narzędzia setkeycodes - tylko bardzo nieliczni będą go potrzebować. Tłumaczenia pomiędzy kodami klawiszy i znakami bądź ciągami znaków lub czynności, to jest układem klawiatury, dokonuje się przy pomocy narzędzia loadkeys. Po szczegóły patrz getkeycodes(8), setkeycodes(8), dumpkeys(1), loadkeys(1).

Tam gdzie w powyższym opisie piszę "przesłane do aplikacji", znaczy to rzeczywiście "przesłane do sterownika terminala". To jest, dalsze przetwarzanie jest bardzo podobne do przetwarzania tekstu który odbierany jest na złączu szeregowym. Szczegóły tego przetwarzania ustala program .

3. Ogólnie o konsoli

I odwrotnie, kiedy wypisujesz coś na konsolę, najpierw podpada to pod standardowe przetwarzanie tty, a potem dostarczane jest sterownikowi konsoli. Sterownik konsoli emuluje vt100 i przekłada dane wejściowe aby rozpoznać Esc-sekwencje vt100 (ruchu kursora, czyszczenia ekranu itp.) Znaki które nie są częścią Esc-sekwencji są najpierw przetwarzane na Unicode, używając jednej z czterech tablic odwzorowań jeśli konsola nie była od początku w trybie UTF-8, potem odnoszone do tabeli opisującej zależność między wartościami Unicode i pozycjami w czcionce, a uzyskane ośmio- lub dziewięciobitowe indeksy zapisywane są w pamięci ekranu, gdzie powodują wyświetlenie kształtów znaków znalezionych w ROMie znakowym karty graficznej. Do ROMu znakowego można załadować własne czcionki używając setfont, załadować odpowiadającą tablicę odwzorowań Unicode używając loadunimap, i załadować tablicę odwzorowań użytkownika używając mapscrn. Więcej szczegółów poniżej.

Istnieje wiele konsol (zwanych Wirtualnymi Konsolami lub Wirtualnymi Terminalami) które dzielą ten sam ekran. Możesz ich używać jako oddzielnych urządzeń, albo uruchamiając na nich oddzielne sesje logowania, albo po prostu przesyłając na nie jakieś dane wyjściowe z początku czy końca system log. Patrz niżej ("Przełączanie konsol") co do tego jak je ustawiać i przełączać się między nimi.

4. Kasowanie terminala

Na ekranie są śmieci, a wszystkie naciśnięcia klawiszy dają w efekcie znaki do rysowania ramek. Co robić?

Wiele programów przerysuje ekran po naciśnięciu ^L. Może to pomóc w sytuacji gdy na ekranie znajdują się śmieci z modemu lub nadany komunikat. Komenda clear czyści ekran.

Komenda reset kasuje sterownik konsoli. Pomaga to w sytuacji gdy ekran pełen jest dziwnych znaków graficznych, a także jeśli skurczy się do jednej linii na dole. Jeśli nie masz tej komendy, bądź jeśli robi ona coś innego, stwórz własną dodając poniższe dwie linie do pliku wykonywalnego reset w swojej ścieżce:

#!/bin/sh
echo -e \\033c

to jest, masz zamiar posłać dwa znaki: Esc-c, na konsolę.

Dlaczego ekran czasami się miesza i wyświetlane jest 24 lub jedna linia, zamiast zwykłych 25? Cóż, głównym winowajcą jest tutaj TERM=vt100 (albo jakiś inny terminal z 24 liniami) zamiast TERM= linux przy łączeniu się zdalnie. Jeśli stanie się to na /dev/tty2 napisz:

% cat > /dev/tty2
^[c
^D

na jakieś innej WK (gdzie wpisujesz cztery symbole do cat: Esc, c, Enter, Ctrl-D) i odśwież ekran na /dev/tty2 (możliwie używając ^L), co przywróci porządek. Oczywiście stałym rozwiązaniem jest używanie odpowiedniego kawałka termcap lub terminfo.

Dlaczego tak się dzieje że czasami dostajesz masę znaków do rysowania ramek, np. po wysłaniu na ekran pliku binarnego za pomocą cat ? Istnieje wiele Esc-sekwencji które zmieniają zestaw znaków, a twój plik może przypadkiem zawierać niektóre z nich. Esc c to ogólne przekasowanie, lekarstwo na wszystko, ale jeżeli wiesz dokładnie co poszło nie tak, możesz to naprawić bez kasowania innych atrybutów konsoli. Na przykład po

% cat
^N
^D

twój znak zachęty konsoli będzie się cały składał ze znaków do rysowania ramek. Napisz teraz (na ślepo):

% cat
^O
^D

I wszystko jest znów w porządku (wpisałeś trzy symbole do każdego cat: ^N lub ^O, Enter, ^D). Żeby zrozumieć co się dzieje, patrz "Zestawy znaków konsoli" poniżej.

Jeśli załadowałeś jakiś dziwną czcionkę i chcesz powrócić do domyślnej.

% setfont

wystarczy (założywszy że zachowałeś domyślną czcionke w domyślnym miejscu). Jeśli ta czcionka nie zawiera osadzonej mapy unikodowej (i wypisuje złe symbole dla znaków akcentowanych), wpisz

% loadunimap

Na przykład, jeśli wykonam

% loadkeys de-latin1

będę miał niemiecką klawiaturę, a klawisz na lewo od Enter wypisze mi a-umlaut. Działa to, ponieważ a-umlaut występuje na stronie kodowej 437, i mapa unikodowa jądra jest inicjalizowana dla CP 437, a moja karta graficzna ma wbudowaną czcionkę CP 437. Jeśli teraz załaduję czcionkę ISO-8859-1 używając

% setfont iso01.f16

nadal wszystko działa, bowiem setfont podstawia jądru ważną mapę unikodową (jeśli do czcionki nie jest dołączona mapa), a bez mapy jądro odwołuje się bezpośrednio do czcionki, a to jest zupełnie poprawne dla systemu ISO-8859-1 z czcionką iso01.f16. Ale przywrócenie poprzedniej czcionki za pomocą

% setfont

daje dużą sigmę zamiast a-umlaut - wszystkie akcentowane znaki są pomieszane, ponieważ ta czcionka również nie ma osadzonej mapy unikodowej. Po wykonaniu

% loadunimap

która ładuje domyślną mapę unikodową (prawidłową dla domyślnej czcionki), wszystko znów działa jak trzeba. Zwykle loadunimap nie jest wywoływane bezpośrednio, lecz przez setfont. Tak więc poprzednie dwie komendy można zastąpić przez

% setfont -u def

Czcionki etiopskie oraz lat1u*.psf mają osadzone tabele znaków Unicode. Większość pozostałych nie ma.

Na starych terminalach wydruk zawierający znaki tabulacji może wymagać opóźnienia, więc musisz napisać

% stty tab3

(patrz stty(1)).

Tryb graficzny zmienić możesz używając resizecons albo SVGATextMode. To zwykle załatwia aspekt wyświetlania. Po stronie wprowadzania może istnieć wiele potencjalnie niewłaściwych rzeczy. Jeśli X, DOOM, albo jakiś inny program używający trybu "surowego" pada, twoja konsola może ciągle znajdować się w stanie "surowym" (lub "półsurowym"), i trudno jest wydawać polecenia. Patrz "Jak wyjść z trybu surowego" poniżej. Jeśli załadowałeś zły układ klawiatury, to

% loadkeys -d

ładuje ponownie układ domyślny, ale może się okazać że trudno jest napisać "-" ! Alternatywa to:

% loadkeys defkeymap

Czasami nawet litery są poplątane. Warto wiedzieć że istnieją cztery główne typy klawiatur: QWERTY, QWERTZ, AZERTY i Dvoraka. Trzy pierwsze nazwane są od pierwszych sześciu klawiszy i z grubsza odpowiadają krajom angielsko-, niemiecko-, i francuskojęzycznym. W porównaniu z QWERTY, układ QWERTZ zamienia Y i Z. W porównaniu z QWERTY, układ AZERTY zamienia Q i A, W i Z, i ma M na prawo od L, na pozycji średnika. Układ Dvoraka ma zupełnie inny porządek liter.

4.1 Sprzętowe kasowanie klawiatury

Coś może być nie w porządku na poziomie niższym niż wie o tym Linux. Istnieją co najmniej dwa różne niższe poziomy (klawiatura i sterownik klawiatury) w których wydać można komendę "wyłącz klawiaturę" sprzętowi za nią odpowiedzialnemu. Klawiatury często można zaprogramować na używanie jednego z trzech różnych zestawów kodów skanowych.

Niemniej nie wiem o żadnym przypadku w którym okazałoby się to jakimś problemem.

Niektóre klawiatury mają wbudowaną zdolność zmiany układów. Stormy Henderson (stormy@ghost.net) pisze: "Jeśli twoja klawiatura przeprogramowała się przez przypadek, możesz (na klawiaturze Gateway AnyKey) nacisnąć control-alt-suspend_macro by skasować ustawienia klawiszy do stanu normalnego".

5. Delete i Backzspace

Nakłonienie Delete i Backspace do prawidłowej pracy jest wcale trywialne, zwłaszcza w środowisku mieszanym, gdzie komunikujesz się z konsolą, z X, bash, emacsem, logujesz się zdalnie itd. Może będziesz musiał wyedytować kilkanaście plików konfiguracyjnych żeby powiedzieć wszystkim konkretnym programom czego dokładnie chcesz. Z jednej strony problemem jest jakie klawisze wypisują jakie kody (i jak te kody przetrawia kermit czy emacs), a z drugiej strony jakie funkcje są przypisane jakim klawiszom.

Ludzie często skarżą się "mój klawisz wstecznej spacji nie działa", jak gdyby ten klawisz miał wbudowaną funkcję "skasuj poprzedni znak". Niestety wszystko co ten, albo każdy inny, klawisz robi to wypisanie kodu, i można tylko mieć nadzieję że sterownik tty jądra i wszystkie aplikacje można tak skonfigurować że klawisz wstecznej spacji rzeczywiście działa jako klawisz kasujący poprzedni znak.

Większość unixowych programów otrzymują swoje dane wejściowe tty przez sterownik tty jądra w trybie "niesurowym", i zwykłe polecenie stty ustala znak kasujący. Jednak programy takie jak bash, emacs czy X przetwarzają dane wejściowe własnymi metodami, i muszą być każde z osobna przekonane do właściwego działania.

5.1 Jak powiedzieć Unixowi jakiego znaku chcesz używać żeby skasowaćostatnio napisany znak?

% stty erase ^?

Jeśli znak jest kasowany, ale w dziwny sposób, coś jest nie w porządku z twoimi ustawieniami tty. Jeśli ustawione jest echoprt, kasowane znaki ujęte są między \ oraz /. Jeśli echoe nie jest ustawione, znak kasowania jest wypisywany (co jest rozsądne w przypadku gdy jest to znak drukujący, jak #). Większość ludzi woli stty echoe -echoprt. Napisanie stty sane zrobi to i więcej. Napisanie stty -a pokazuje bieżące ustawienia. Jak to się stało że domyślnie nie były poprawne? Będą, jeżeli użyjesz poprawnego getty.

Zauważ że wiele programów (jak bash, emacs itd.) mają swoje własne przypisania klawiszy (zdefiniowane w ~/.inputrc, ~/.emacs itd.) i nie wpływa na nie ustawienie znaku kasowania.

Standardowy unixowy sterownik tty nie rozpoznaje kursora, ani klawiszy (takich jak klawiszy strzałek) przesuwających bieżącą pozycję, i stąd nie ma też komendy takiej jak "skasuj bieżący znak". Ale na przykład możesz nauczyć bash na konsoli rozpoznawania Delete wstawiając

set editing-mode emacs
"\e[3~":delete-char

do ~/.inputrc

"Kiedyś getty dobrze oddawało DEL i BS, ale teraz się popsuło"

Dawniej, sterownik konsoli zwykle wypisywał BS-spacja-BS (\010\040\010) gdy otrzymał znak DEL (\177). Dzisiaj, znaki DEL są ignorowane (tak jak powinny, ponieważ sterownik emuluje vt100). Zdobądź lepsze getty, tj. takie które nie wypisuje DEL.

"Login zachowuje się inaczej przy pierwszej i drugiej próbielogowania"

Przy pierwszej próbie, komunikujesz się z getty. Przy drugiej próbie, komunikujesz się z login, innym programem.

5.2 Jak powiedziec Linuxowi jaki kod wysyłać po naciśnięciu klawisza

Na konsoli lub, ściślej, gdy nie jesteś w trybie (pół)surowym, użyj

% loadkeys mykeys.map

A pod X użyj

% xmodmap mykeys.xmap

[gdzie mykeys.(x)map to oczywiście konkretny plik definicji klawiatury - przyp. tłum.]

Zauważ że (od XFree86-2.1) X czyta linuxowe ustawienia układów klawiatury przy initializacji Xowego keymap. Chociaż oba systemy nie są w 100% kompatybilne, oznacza to że w wielu przypadkach używanie xmodmap> stało się zbędne. Załóżmy, na przykład, że chcesz żeby twój klawisz Backspace dawał wsteczną spację (^H, ósemkowe 010), a szary klawisz Delete DEL (ósemkowe 012), dodaj poniższe do etc/rc.local (albo tam gdzie trzymasz swoje pliki inicjalizacyjne).

/usr/bin/loadkeys << EOF
keycode 14 = BackSpace
keycode 111 = Delete
EOF

Zauważ że zmieni to funkcję tych klawiszy tylko gdy nie używa się modyfikatorów. Domyślnie jądro Linuxa pozwala Ctrl-Backspace wypisywać wsteczną spację - czasami przydaje się to jako zapasowe wyjście, gdy stwierdzisz że możesz wypisywać tylko znaki DEL.

Lewy klawisz Alt jest czasem zwany klawiszem Meta, a domyślnie kombinacje AltL-X są przypisane do symbolu Meta-X. Ale jakim ciągiem znaków jest Meta-X? Ustalane jest to (via tty) przez znacznik Meta, ustawiony komendą setmetamode. Dwiema możliwościami są: Esc X albo X iloczyn logiczny 0200.

Dlaczego klawisz Backspace nie wysyła domyślnie wstecznejspacji?

(i) Ponieważ vt100 miał klawisz Delete nad klawiszem Enter.

(ii) Bo Linus tak postanowił.

5.3 Jak nakazać X zamianę Delete i Backspace

% xmodmap -e "keysym BackSpace = Delete" -e "keysym Delete = BackSpace"

Albo, jeśli chcesz tylko żeby klawisz Backspace dawał wsteczną spację:

% xmodmap -e "keycode 22 = BackSpace"

Albo, jeśli chesz tylko żeby klawisz Delete dawał Delete:

% xmodmap -e "keycode 107 = Delete"

(ale zwykle takie jest już domyślne przypisanie).

5.4 Jak powiedzieć emacsowi co robić gdy otrzyma Delete lubwsteczną spację

Wsadź do swojego pliku .emacs linie jak niżej:

  (global-set-key "\?" 'delete-backward-char)
  (global-set-key "\C-h" 'help-command)

Oczywiście możesz w ten sam sposób przypisać inne polecenia innym klawiszom. Zauważ że niektóre tryby główne i poboczne redefiniują przypisania klawiszy. Na przykład w trybie szukania przyrostowego [incremental mode] można znaleźć kod:

(define-key map "\177" 'isearch-delete-char)
(define-key map "\C-h" 'isearch-mode-help)

Oznacza to że używanie dwóch powyższych komend globalnych może nie być dobrym pomysłem. Za dużo jest miejsc z wbudowanym założeniem ^H = pomoc i Del = delete. Nie oznacza to że musisz ustawić klawisze tak żeby Backspace dawało Del. Ale jeśli tak nie jest, najłatwiej jest zmienić ich układ na najniższym możliwym poziomie emacsa.

5.5 Jak nakazać emacsowi zamienienie Delete i Backspace

Wsadź do swojego pliku .emacs linie jak niżej:

  (setq keyboard-translate-table (make-string 128 0))
  (let ((i 0))
  (while (< i 128)
      (aset keyboard-translate-table i i)
      (setq i (1+ i))))
  (aset keyboard-translate-table ?\b ?\^?)
  (aset keyboard-translate-table ?\^? ?\b)

Ostatnie wersje emacsa mają funkcję keyboard-translate, więc można uprościć powyższe do

(keyboard-translate ?\C-h ?\C-?)
(keyboard-translate ?\C-? ?\C-h)

Zauważ że pod X emacs może rozróżniać Ctrl-h i klawisz Backspace (niezależnie od tego jakie kody oba wypisują na konsoli), a domyślnie emacs będzie widział klawisz wstecznej spacji jako DEL (wykonujący polecenia kasowania, przypisane temu znakowi, a nie polecenia pomocy, przypisane do ^H). Można rożróżniać Backspace i Delete, np. poprzez

  (global-unset-key [backspace] )
  (global-set-key [backspace] 'delete-backward-char)
  (global-unset-key [delete] )
  (global-set-key [delete] 'delete-char)

5.6 Jak nakazać kermitowi zamienienie Delete i Backspace

Wsadź do swojego pliku .kermrc linie jak niżej:

  set key \127 \8
  set key \8 \127

5.7 Jak poinformować xterm o twoich ulubionych trybach tty

Xterm dziedziczy zwykle tryby tty po programie który go wywołał. W xdm, domyślne klawisze kasowania i usuwania to # i @, jak w starej dobrej wersji 6 Unixa. Jeśli nie podoba ci się to, możesz wsadzić coś podobnego do

  XTerm*ttymodes: erase ^? kill ^U intr ^C quit ^\ eof ^D susp ^Z start ^Q stop ^S eol ^@

do /usr/lib/X11/app-defaults/XTerm albo do $HOME/.Xresources, zakładając że masz linię

  xrdb $HOME/.Xresources

w swoim $HOME/.xinitrc.

5.8 Jak poinformować xmosaic że klawisz Backspace wypisuje Del

Wsadzenie

  *XmText.translations: #override\n\
         <Key>osfDelete: delete-previous-character()
  *XmTextField.translations: #override\n\
          <Key>osfDelete: delete-previous-character()

do twojego $HOME/.Xresources pomoże.

W Netscape FAQ można jednak przeczytać:

        Dlaczego mój klawisz Backspace nie działa w polach tekstowych?
        Domyślnie, Linux i XFree86 dostarczane są ze źle skonfigurowanymi
        klawiszami Backspace i Delete. Wszystkie programy oparte na Motif
        (w tym oczywiście Netscape Navigator) będą w ten sam sposób źle
        działać.

        Specyfikacja Motif mówi że Backspace ma kasować poprzedni znak a
        Delete ma kasować znak następny. Linux i XFree86 są dostarczane
        z takim ustawieniem że oba klawisze - Backspace i Delete - wypisują
        Delete.

        Możesz to naprawić używając któregoś z programów xmodmap, xkeycaps
        bądź loadkeys i sprawić że odpowiedni klawisz wypisuje klawsym
        wsteczna spacja, a nie Delete.

        Możesz to również naprawić używając pliku .motifbind; patrz
        strona man VirtualBindings(3).

        Uwaga: nie używaj zasobów *XmText.translations lub *XmTextField.
        translations próbując naprawić ten problem. Jeśli tak zrobisz,
        rozwalisz pozostałe przypisania klawiszy w polach tekstowych NN.

5.9 Lepsze rozwiązanie dla programów używających Motifa, jak netscape

Ted Kandell (ted@tcg.net) sugeruje co następuje:

Dodaj poniższe gdzieś w swoim .profile:

  stty erase ^H

Jeśli używasz basha, dodaj poniższe linie do swojego .inputrc:

       "\C-?": delete-char
       "\C-h": backward-delete-char

Dodaj następujące linie do swojego pliku .xinitrc:

       xmodmap <<-EOF
       keycode 22  =  BackSpace osfBackSpace
       keycode 107 =  Delete
       EOF

       # wystartuj tu swojego managera okien, np.
       #(fvwm) 2>&1 | tee /dev/tty /dev/console

       stty sane
       stty erase ^H
       loadmap <<-EOF
       keycode 14  = BackSpace
       keycode 111 = Delete
       EOF

Będzie to definitywnie działać dla klawiatury PC 101 lub 102-klawiszowej, z każdym rozkładem Linuxa/XFree86.

Ważną częścią uczenia aplikacji motifowych takich jak Netscape poprawnej pracy jest dodanie osfBackSpace do keycode 22, oprócz BackSpace.

Zauważ nie po obu stronach znaku = nie mogą się znajdować spacje.

5.10 Co z termcap i terminfo?

Gdy ktoś ma problemy z wsteczną spacją, ma on tendencję do patrzenia w swój kawałek termcap (lub terminfo) opisujący terminal; i rzeczywiście, istnieje tam zdolność kb (lub kbs) opisująca kod wypisywany przez klawisz Backspace. Niemniej niewiele programów jej używa, więc - chyba że masz problemy z jednym konkretnym programem - prawdopodobnie błąd leży gdzie indziej. Oczywiście poprawienie swojego kawałka termcap (terminfo) nie jest złym pomysłem tak czy owak. Patrz niżej pod "Zmienna TERM".

6. Zestawy znaków konsoli

Jądro próbuje wywnioskować najpierw jaki symbol rozumieć przez każdy podany przez użytkownika bajt, a następnie gdzie ten symbol jest umieszczony w bieżącej czcionce.

Jądro wie o pięciu tłumaczeniach bajtów na symbole konsoli-ekranu. W trybie Unicode (UTF-8) kod UTF-8 jest przekształacany bezpośrednio na Unicode. Założeniem jest że prawie wszystkie potrzebne symbole w Unicode się znajdują, a w przypadkach gdzie nie jest to prawdą zarezerwowane są kody 0x00ff* dla bezpośredniego dostępu do czcionki. Poza trybem Unicode, używa się jednej z tabeli tłumaczeń. Te cztery tabele to: a) Latin1 -> Unicode, b) grafika vt100 -> Unicode, c) PC -> Unicode, d) zdefiniowane przez użytkownika.

Istnieją dwa zestawy znaków, zwane G0 i G1, i jeden z nich jest zestawem bieżącym (początkowo G0). Wypisanie ^N spowoduje że bieżącym zestawem będzie G1, ^O że G0.

Zmienne G0 i G1 wskazują na tablice tłumaczeń, i mogą być zmienione przez użytkownika. Początkowo wskazują na tablice a) i b), odpowiednio. Sekwencje Esc(B, Esc(0, Esc(U, Esc(K powodują że G0 wskazuje na tablice tłumaczeń a), b), c), d), odpowiednio. Sekwencje Esc)B, Esc)0, Esc)U, Esc)K powodują że G1 wskazuje na tablice tłumaczeń a), b), c), d), odpowiednio.

Sekwencja Esc-c powoduje skasowanie terminala, czyli to czego chcesz jeżeli ekran jest cały zaśmiecony. Często doradzane echo ^V^O spowoduje tylko że zestawem bieżącym będzie G0, ale nie ma gwarancji że G0 pokazuje na tablicę a). W niektórych dystrybucjach istnieje program reset(1), który wypisuje po prostu echo ^[c. Jeśli twój kawałek termcap dla konsoli jest poprawny (i ma :rs=\Ec:), wtedy zadziała także setterm -reset.

Zdefiniowaną przez użytkownika tablicę odwzorowań ustawić można używając mapscrn(8). Rezultatem odwzorowania jest to że jeżeli wypisywany jest symbol c, to wysyłany do pamięci ekranu jest symbol s = map[c]. Obraz bitowy który odpowiada s znajduje się w ROMie znakowym, i może zostać zmieniony przy pomocy setfont(8).

7. Przełączanie konsoli

Domyślnie przełączania konsoli dokonuje Alt-Fn lub Ctrl-Alt-Fn. Pod X (lub nowszymi wersjami dosemu) działa tylko Ctrl-Alt-Fn. Wiele układów klawiatur pozwala na cykliczne przemieszczanie się między konsolami przy użyciu Alt-strzałka_w_prawo i Alt-strzałka_w_lewo.

XFree86 1.3 nie wie że przyciśnięty jest Alt gdy przełączasz się do okienka X. Tak więc nie możesz przełączyć się natychmiast na jakąś innej WK, ale musisz najpierw zwolnić Alt. W drugą stronę powinno to działać; jądro zawsze zanotowywuje stan góra/dół wszystkich klawiszy. (na tyle na ile można; na niektórych klawiaturach część klawiszy nie wysyła kodu skanowego po naciśnięciu, np. klawisze PFn na FOCUS 9000) lub zwolnieniu (np. klawisz Pause na wielu klawiaturach).

XFree86 1.3 zapisuje czcionki załadowane do ROMu znakowego przy starcie i przywraca je przy przełączaniu konsoli. Tak więc efekt setfont na WK zostaje wymazany gdy przełączasz się między X i zewnętrzem. Używanie setfont pod X może doprowadzić do dziwnych rezultatów.

Pod kontrolą programową WK można zmieniać używając komendy chvt.

7.1 Zmiana numeru Wirtualnych Konsoli

To pytanie ciągle pojawia się od czasu do czasu, ale odpowiedź brzmi: już masz ich dosyć. Od wersji 1.54 jądra istnieje od 1 do 63 wirtualnych konsol. Nowa konsola tworzona jest natychmiast po otwarciu. Usuwa się ją narzędziem disalloc (ale można ją usunąć tylko gdy nie ma z nią skojarzonych procesów).

Dla starszych jąder, zmień linię

#define NR_CONSOLES     8

w include/linux/tty.h (nie zwiększaj tej liczby powyżej 63), i zrekompiluj jądro.

Jeśli jeszcze nie istnieją, stwórz urządzenia tty używając MAKEDEV lub mknod ttyN c 4, gdzie N oznacza numer tty. Na przykład:

for i in 9 10 11 12; do mknod /dev/tty$i c 4 $i; done

albo, lepiej, (ponieważ zatroszczy się to również o właściciela i prawa dostępu)

for i in 9 10 11 12; do /dev/MAKEDEV tty$i; done

Jeśli chcesz żeby nowe WK uruchamiały getty, dodaj linie w /etc/inittab (ale jest znacznie lepiej mieć uruchomione tylko dwie getty, i tworzyć więcej konsol dynamicznie w razie potrzeby. W ten sposób będziesz miał więcej pamięci gdy nie używasz wszystkich konsol, a także więcej konsol, w razie gdybyś naprawdę ich potrzebował. Wyedytuj /etc/inittab i wykomentuj wszystkie getty prócz dwóch pierwszych).

Gdy konsole są przydzielane dynamicznie, zazwyczaj najłatwiej jest mieć tylko jedną czy dwie z uruchomionym getty. Więcej otwiera się za pomocą open -l -s bash. Nieużywane konsole (bez skojarzonych procesów) usuwa się za pomocą disalloc. Ale, rzec możesz, zajęty jestem czynnościami w których nagle potrzebuję więcej konsol, a nie mam znaku zachęty bash aby wydać polecenie open. Na szczęście możliwe jest stworzenie nowej konsoli po naciśnięciu jednego klawisza, bez względu na to co dzieje się na konsoli bieżącej. Jeśli masz spawn_login z kbd-0.90.tar.gz i wstawisz

        loadkeys << EOF
        alt keycode 103 = Spawn_Console
        EOF
        spawn_login &
do etc/rc.local, naciśnięcie Alt-strzałka_w_górę utworzy nową WK z uruchomionym login (i przełączy się na nią). Używając spawn_console & zamiast spawn_login & uzyskasz tam uruchomiony bash. Patrz też open-1.4.tgz oraz dynamic-vc-1.1.tar.gz.

To jaka czynność winna być podejmowana po naciśnięciu tego klawisza Spawn_Console można również ustawić w /etc/inittab pod kbrequest, jeśli masz świeży plik inicjalizacyjny. Patrz inittab(5) (czynność ta może być czymś zupełnie innym - nazwałem ten klawisz Spawn_Console po prostu dlatego że do tego go wykorzystywałem).

Na terminalach wyliczonych w /etc/securetty/ możesz zalogować się tylko jako root. Istnieją programy które czytają ustawienia terminala z plików /etc/ttys/ i /etc/ttytype. Jeśli masz takie pliki, i stworzysz dodatkowe konsole, dobrym pomysłem mogłoby być również dodanie dla nich linii w tych plikach.

8. Ctrl-Alt-Del i inne specjalne kombinacje klawiszy

8.1 Ctrl-Alt-Del (przeładowanie)

Jeśli naciśniesz Ctrl-Alt-Del (albo każdy inny klawisz z przypisanym przed loadkeys klawsymem Boot) komputer albo przeładuje się natychmiast (bez sync), albo do init wysyła się SIGINT. To pierwsze zachowanie jest domyślne. Może je zmienić root używając systemowego wywołania reboot(), patrz ctrlaltdel(8). Niektóre pliki init zmieniają wartość domyślną. To co nastąpi gdy init otrzyma SIGINT zależy od użytej wersji tegoż - często określa to pole pf w /etc/inittab (co oznacza że możesz w tym przypadku uruchomić dowolny program).

W obecnym jądrze Ctrl-AltGr-Del nie jest już domyślnie przypisane do Boot.

8.2 Inne kombinacje

Name            Default binding
-------------------------------
Show_Memory     Shift-Scrollock     [pokazuje info o pamięci]
Show_Registers  AltGr-ScrollLock    [pokazuje zawartość rejestrów]
Show_State      Ctrl-ScrollLock     [pokazuje status]
Console_n       Alt-Fn and Ctrl-Alt-Fn  (1 <= n <= 12) [konsola nr n]
Console_{n+12}  AltGr-Fn                (1 <= n <= 12) [konsola nr n+12]
Incr_Console    Alt-RightArrow      [o konsolę w górę]
Decr_Console    Alt-LeftArrow       [o konsolę w dół]
Last_Console    Alt[Gr]-PrintScreen [ostatnia konsola]
Scroll_Backward Shift-PageUp        [przewija ekran w górę]
Scroll_Forward  Shift-PageDown      [przewija ekran w dół]
Caps_On                             [włącza duże litery. CapsLock działa
                                    jako przełącznik]
Compose         Ctrl-.              [tryb składania, np. '+e daje é]

8.3 Kombinacje w X

Ctrl-Alt-Fn     Przełącza na WK nr n
Ctrl-Alt-KP+    Następny tryb
Ctrl-Alt-KP-    Ostatni tryb
Ctrl-Alt-BS     "zabija" X

[KP+ i KP- to szary plus i minus z klawiatury numerycznej - przyp. tłum.]

Na niektórych płytach głównych Ctrl-Alt-KP- i Ctrl-Alt-KP+ są równoważne naciśnięciu przycisku Turbo. To jest, oba dadzą w wyniku kody skanowe 1d 38 4a ca b8 9d i 1d 38 4e ce b8 9d, i oba przełączać będą między trybem turbo (>= 25 Mhz) i nie-turbo (8/12 Mhz). (te kombinacje klawiszy często działają tylko po ustawieniu zworkami na płycie głównej).

Perry F. Nguyen (pfnguyen@netcom22.netcom.com) pisze: AMI BIOS ma właściwość która blokuje klawiaturę i miga diodami jeżeli naciśnięto kombinację Ctrl-Alt-Backspace w czasie pytania o hasło BIOS, aż to hasło nie zostanie wpisane.

8.4 Kombinacje Dosemu

Ctrl-Alt-Fn     Przełącz na WK nr n (od wersji 0.50, wcześniej Alt-Fn)
Ctrl-Alt-PgDn   "zabij" dosemu (w trybie SUROWYM klawiatury)

(i wiele innych kombinacji - patrz dokumentacja dosemu)

8.5 Składanie symboli

Jeden symbol może być złożony przy użyciu kilku klawiszy.

Zauważ że istnieją przynajmniej trzy takie mechanizmy złożeń:

  1. Mechanizm sterownika klawiatury Linuxa, używany w połączeniu z loadkeys.
  2. Mechanizm X - patrz X386keybd(1), później XFree86kbd(1). Pod X11R6: zmodyfikuj /usr/X11R6/lib/X11/locale/iso8859-1/Compose.
  3. Mechanizm emacsowy uzyskiwany po załadowaniu "iso-insert.el" lub wywołaniu iso-accents-mode.

W X porządek obu symboli jest dowolny; i Compose-,-c i Compose-c-, dadzą dla Linuxa i emacsa domyślnie działa tylko ta pierwsza sekwencja. Dla X lista kombinacji złożeń jest ustalona. Linux i emacs są elastyczne. Te trzy domyślne listy są nieco podobne, ale różnią się szczegółami.

9. Różne właściwości konsoli

10. Jak wyjść z trybu surowego

Jeśli jakiś program używający trybu klawiatury K_RAW zakończy działanie bez przywrócenia trybu klawiatury do K_XLATE, trudno jest coś zrobić - nie działa nawet Ctrl-Alt-Del. Niemniej można czasami uniknąć naciskania przycisku Reset (co jest też pożądane; twoi użytkownicy mogą się zdenerwować jeśli przerwiesz im sesję Hacka przeładowaniem; możesz też uszkodzić swój system plików). Proste rozwiązania opierają się na zalogowaniu się z innego terminalu lub innego komputera i wykonania kbd_mode -a. Procedura poniżej zakłada że nie jest uruchomiony X, i że ekran znajduje się w trybie tekstowym, że znajdujesz się w znaku zachęty bash, że używasz amerykańskiego układu klawiatury i że znakiem który przerywa działanie komendy jest u ciebie Ctrl-C.

Krok 1. Uruchom X. Jak poniżej: naciśnij 2 (nie zwalniaj), naciśnij F12 (nie zwalniaj) i natychmiast potem naciśnij =. Uruchomi to X. (Wyjaśnienie: jeśli naciśnięcie klawisza wysyła kod klawisza K, to zwolnienie klawisza wysyła kod K+128. Być może twoja powłoka nie lubi tych znaków powyżej 128, więc unikamy wysłania ich nie zwalniając żadnego z klawiszy. Musimy jednak być szybcy, w przeciwnym razie nastąpi powtarzanie klawiszy. Cyfra 2 daje Ctrl-C, które usuwa poprzednie śmieci, F12 daje X, a = Return). Twój ekran może być teraz szary, ponieważ nie wskazano .xinitrc. Ctrl-Alt-Fn jednak działa, możesz więc przejść do innej WK (Ctrl-Alt-BS także działa, ale zwraca cię do poprzedniego stanu, a tego nie chcesz).

Step 2. Ustaw zmianę trybu klawiatury. (Na przykład poprzez sleep 5; kbd_mode -a).

Step 3. Opuść X. Alt-Fx (często Alt-F7) przywraca X, a wtedy Ctrl-Alt-Backspace powoduje wyjście z niego. W ciągu pięciu sekund twoja klawiatura znów będzie nadawała się do użytku.

Jeśli chcesz przygotować się na tą okoliczność, uczyń \215A\301 (3 symbols) aliasem na kbd_mode -a. Teraz naciśnięcie tylko = F7 = (trzy symbole) przywróci cię do normalności.

11. Diody na klawiaturze

1. Są to znaczniki klawiatury zależne od tty; każda WK ma swój NumLock, CapsLock i ScrollLock. Domyślnie te znaczniki pokazywane są przez diody. Zwykłym sposobem ich zmiany jest naciśnięcie odpowiedniego klawisza (uwaga uboczna: naciśnięcie klawisza NumLock w trybie klawiszy aplikacji nie zmieni stanu NumLock, ale wypisze Esc-sekwencję. Jeśli chcesz żeby klawisz NumLock zawsze zmieniał stan NumLock, przypisz go do Bare_Num_Lock).

2. Następnie, na każde tty istnieją domyślne znaczniki klawiatury, aby zinicjalizować je gdy nastąpi przekasowanie. Tak więc jeśli chcesz żeby NumLock był cały czas włączony, jest to możliwe. Zwykle zmienić to można przez setleds -D.

3. Istnieje możliwość że diody nie oddają stanu znaczników klawiatury, ale coś innego.

3A. To coś innego może być jakimiś trzema bitami gdzieś w jądrze - co można wykorzystać jeżeli chcesz pilnować bitów stanu jakiegoś sprzętu czy programu. Jeśli chcesz tego, zmodyfikuj źródło jądra aby wywoływało gdzieś register_leds()/

3B. To coś innego może być też czymkolwiek co jakiś program chce pokazać za pomocą diod. Tak więc osoby które lubią takie rzeczy mogą ułożyć ze światełek ładne wzorki. Jeśli chcesz tego, użyj ioctl KBSETLED.

To drugi sposób nie jest "na tty", ale wybór pomiędzy pierwszym a drugim sposobem jest.

Podsumowując: każde tty ma znacznik kbd -> ledmode. Jeśli ma on wartość LED_SHOW_FLAGS, wtdy pokazane są znaczniki klawiatury (NumLock itd.) konkretnego tty. Jeśli ma on wartość LED_SHOW_IOCTL, wtedy diody pokazują każdą wartość którą ostatnio im przypisano za pomocą ioctl KBSETLED.

Dodać można że X używa ioctl-ów aby ustawić diody, ale nie kasuje swojej WK przy wyjściu, tak więc po używaniu X istnieć może jedna WK która nie jest w domyślnym stanie LED_SHOW_FLAGS. Można to naprawić wykonując setleds -L na tej WK. Patrz setleds(1).

12. Zmienna TERM

Wiele programów używa zmiennej TERM i bazy danych /etc/termcap lub /usr/lib/terminfo/* żeby zadecydować które ciągi znaków wysłać by wyczyścić ekran, przesunąć kursor itd., i często także by zdecydować który ciąg znaków wysyłany jest przez klawisz wstecznej spacji [użytkownika], klawisze funkcyjne itp. Tą wartość ustawia zrazu jądro (dla konsoli). Zwykle wartość tą ponownie ustawia getty, używając /etc/ttytype lub argumentu podanego w /etc/inittab. Czasami jest ona również ustawiana w /etc/profile.

Starsze systemy używają TERM=console lub TERM=co80x25. Nowsze systemy (z ncurses 1.8.6) używają bardziej dookreślonego TERM=linux lub TERM=linux-80x25. Niemniej starsze wersje setterm sprawdzają obecność TERM równej con* i dlatego odmawiają pracy z TERM=linux.

Od wersji jądra 1.3.2, domyślną wartością jądra dla konsoli jest TERM=linux.

Jeśli masz plik termcap bez kawałka opisującego linux, dodaj słowo linux do kawałka dla konsoli:

        console|con80x25|linux:\

i ustaw /usr/lib/terminfo/l/linux jako kopię lub odnośnik symboliczny do /usr/lib/terminfo/c/console.

12.1 Terminfo

W kawałku terminfo dla konsoli linuxowej od ncurses 1.8.6 brakuje kich1=\E[2~, czego potrzebują niektóre programy. Wyedytuj plik i skompiluj go tic.

13. Jak zmusić inne programy do działania ze znakami spoza ASCII

W dawnych złych czasach było to wcale nużące. Każdy program z osobna musiał być indywidualnie przekonywany do zostawienia twoich bitów w spokoju. Nie żeby dzisiaj wszystko było łatwe, ale ostatnio wiele narzędzi GNU nauczyło się reagować na LC_CTYPE=iso_8859_1 lub LC_CTYPE=iso-8859-1. Spróbuj najpierw tego; jeśli nie pomoże, spójrz na podpowiedzi poniżej. Zauważ że w nowszych wersjach libc procedura setlocale() działa tylko jeżeli zainstalowałeś pliki locale (tj. w /usr/lib/locale).

Przede wszystkim ósmy bit powinien przetrwać przetwarzanie danych wejściowych w jądrze, więc upewnij się że ustawiłeś stty cs8 -istrip -parenb

A. Dla emacsa szczegóły w dużym stopniu zależą od wersji. Informacja poniżej dotyczy wersji 19.34. Wstaw linie:

        (set-input-mode nil nil 1)
        (standard-display-european t)
        (require 'iso-syntax)

do swojego $HOME/.emacs. Pierwsza linia (mówiąc ściślej - końcowe 1) mówi emacsowi żeby nie obcinał ósmego bitu ze wprowadzanych znaków. Druga linia mówi emacsowi żeby nie wyświetlał znaków spoza ASCII jako wartości ósemkowych. Trzecia linia wyszczególnia właściwości składni i tablicę konwersji małych/dużych liter dla zestawu znaków Latin-1. Dwie ostatnie linie są zbędne jeżeli masz coś podobnego do LC_TYPE=ISO-8859-1 w swoim środowisku (zmienna ta może też nazywać się LC_ALL albo po prostu LANG. Jej wartość może być czymkolwiek co zawiera ciąg znaków 88591, 8859-1 lub 8859_1).

To już dobry początek. Na terminalach które nie potrafią wyświetlać symboli ISO-8859-1 spoza ASCII, komenda

        (load-library "iso-ascii")

spowoduje że znaki akcentowane wyświetlane będą jako {,c}a. Jeśli twoja klawiatura nie daje łatwego sposobu wprowadzania znaków spoza ASCII, to

        (load-library "iso-transl")

uczyni dwuznakową sekwencję ^X8 znakiem składania [Compose], tak że czteroznakowa sekwencja ^X8,c daje c-cedilla. Bardzo niewygodne.

Komenda

        (iso-accents-mode)

włączy lub wyłączy tryb akcentów ISO-8859-1, w którym sześc klawiszy: `, ', ", ^,  , / są klawiszami diakrytyk które modyfikują następujący po nich symbol. Kombinacje specjalne:  c daje c z cedillą,  d daje islandzkie eth,  t daje islandzkie thorn, "s daje niemieckie scharfes-s, /a daje a z kółeczkiem, /e daje ligaturę ae,  < i  > dają guillemoty,  ! daje odwrócony wykrzyknik,  ? odwrócony pytajnik. '' daje akcent acute. Jest to układ domyślny. Zmienna iso-languages jest listą par (nazwa języka, układ akcentów), a układ niedomyślny wybrać można poprzez

    (iso-accents-customize LANGUAGE)

Tutaj LANGUAGE może być jednym z "portuguese", "irish", "french", "latin-2", "latin-1".

Ponieważ domyślnym klawiszem Compose w Linuxie jest Ctrl-., może być wygodniej używać tego wszędzie. Spróbuj

   (load-library "iso-insert.el")
   (define-key global-map [?\C-.] 8859-1-map)

(Ta ostatnia linia nie będzie działać pod xterm, jeśli używasz emacs -nw, ale w tym wypadku możesz wstawić)

        XTerm*VT100.Translations:       #override\n\
        Ctrl <KeyPress> . : string("\0308")

do swojego .Xresources.)

B. Dla less, ustaw zmienną środowiskową LESSCHARSET=latin1 Zrób to również jeśli widzisz <255> lub <AD> w tym co wypisuje man; niektóre wersje less będą oddawać "miękki" myślnik (ósemkowo 0255, szesnastkowo 0xAD) w ten sposób, jeśli nie pozwoli im się wypisywać Latin-1.

[jeśli to nie pomoże, wywołuj less z opcją -r, bądź ustaw alias. Jeśli nawet to nie pomoże, albo masz powłokę która nie obsługuje aliasów, ustaw zmienną LESSCHARDEF na wartość 32.224c - przyp. tłum.]

C. Dla ls, podaj opcję -N (być może zechcesz ustawić alias)

D. Dla bash (wersja 1.13.*), wstaw

        set meta-flag on
        set convert-meta off

i, według Danish HOWTO,

        set output-meta on

do swojego $HOME/.inputrc.

E. dla tcsh, użyj

        setenv LANG     US_en
        setenv LC_CTYPE iso_8859_1

Jeśli masz w swoim systemie nls, używane są odpowiednie algorytmy. W przeciwnym razie tcsh założy iso_8859_1, niezależnie od wartości podanych w zmiennych LANG i LC_TYPE. Patrz sekcja NATIVE LANGUAGE SYSTEM w tcsh(1). Danish HOWTO twierdzi: setenv LC_CTYPE ISO-8859-1; stty pass8)

F. Dla flex, podaj opcję -8, jeśli program przetwarzający który ono tworzy ma operować na ośmiobitowych danych wejściowych (oczywiście że ma).

G. Dla elm, ustaw displaycharset na ISO-8859-1. (Danish HOWTO: LANG=C i LC_CTYPE=ISO-8859-1)

H. Dla programów używających curses (takich jak lynx David Sibley donosi: "Zwykły pakiet curses używa ósmego bitu dla odwrócenia kolorów tła i ekranu (patrz flaga _STANDOUT zdefiniowana w /usr/include/curses.h). Niemniej ncurses zdaje się być czyste ośmiobitowo i wyświetla iso-latin-8859-1 poprawnie.

I. Dla programów używających groff (takich jak man), upewnij się że używasz -Tlatin zamiast -Tascii. Stare wersje programu man używają również col, więc następny punkt stosuje się odpowiednio.

J. Dla col, upewnij się że 1) ustawiony jest tak żeby wykonywać setlocale(LC_CTYPE,""); i 2) ustawiłeś zmienną środowiskową LC_CTYPE=ISO-8859-1.

K. Dla rlogin, użyj opcji -8.

L. Dla joe, sunsite.unc.edu:/pub/Linux/apps/editors/joe-1.0.8-linux.tar.gz działa podobno po wyedytowaniu pliku konfiguracyjnego. Ktoś inny powiedział: "joe: wstaw opcję -asis do /isr/lib/joerc, w pierwszej kolumnie.

M. Dla LaTeX: \documentstyle[isolatin]{article}. Dla LaTeX2e: \documentclass{article}\usepackage{isolatin} gdzie isolatin.sty jest dostępny z ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit.

Ładna dyskusja na temat ISO-8859-1 i tego jak zarządzać ośmiobitowymi znakami zawarta jest w pliku grasp.insa-lyon.fr:/pub/faq/fr/accents (po francusku). Inną ładną dyskusję (po angielsku) można znależć w rtfm.mit.edu:pub/usenet-by-group/comp.answers/character-sets/iso-8859-1-faq. A jeszcze jedną (?), w ftp.vlsivie.tuwien.ac.at:/pub/8bit/FAQ-ISO-8859-1.

Jeśli chcesz poprawić program który żle zachowuje się ze znakami ośmiobitowymi, musisz pamiętać o tym że jeśli używasz w nim typu "signed char", znaki mogą mieć wartości ujemne, a używanie ich jako indeksu tablicy nie uda się. Niektóre programy można poprawić dodając rozsądnie rzutowania na typ unsigned char.

14. Co dokładnie robi XFree86-2.1 podczas inicjalizacji układu klawiatury?

Od wersji 2.1 XFree86 zainicjuje swój układ klawiatury z układu linuxowego, na tyle na ile można. Linux jednak miał 16 pozycji na klawisz (jedna na każdą kombinację modyfikatorów Shift, AltGr, Ctrl, Alt) a obecnie 256 pozycji na klawisz, podczas gdy X ma cztery pozycje na klawisz (jedna na każdą kombinację Shift i Mod), tak więc część informacji musi się zgubić.

X najpierw czyta plik Xconfig, gdzie można znależć definicje klawiszy LeftAlt, RightAlt, RightCtl, ScrollLock keys takie jak Meta, ModeShift, Compose, ModeLock czy ScrollLock - patrz X386keybd(1), później XFree86kbd(1).

Za Mod przyjmuje się lewy Alt, chyba że prawy Ctrl zdefiniowano jako ModeShift lub ModeLock, w którym to przypadku przyjmuje się prawy Ctrl, lub chyba że tak zdefiniowano prawy Alt, w którym to przypadku przyjmuje się prawy Alt. Ustala to w jaki sposób cztery znaczenia klawisza pod XFree86 są wybierane z szesnastu znaczeń linuxowych. Zauważ że dzisiaj Linux domyślnie nie rozróżnia pomiędzy dwoma klawiszami Ctrl i Shift. X jednak rozróżnia.

Następnie czytany jest układ klawiatury z jądra i poczynione zostają oczywiste odpowiednie przypisania pod X. Przypisania "klawiszy czynnościowych" - Show_Memory, Show_State, Show_Registers, Last_Console, Console_n, Scroll_Backward, Scroll_Forward, Caps_On and Boot są ignorowane, tak samo jak klawisze diakrytyk i klawisze blokujące klawiaturę w określonym trybie [locks] (z wyjątkiem ShiftLock), oraz klawisze "ASCII-x"

Później używane są definicje z pliku Xconfig. Tak więc definicja klawisza Compose z Xconfig weźmie górę nad wartością znajdującą się w układzie klawiatury Linuxa.

Co dzieje się z ciągami znaków skojarzonymi z klawiszami funkcyjnymi? Nic. X nie posiada takiej koncepcji (ale możliwe jest zdefiniowanie łańcuchów znaków dla klawiszy funkcyjnych w xterm - zauważ jednak że najpierw otrzymuje te klawisze program zarządzający oknami).

Nie wiem jak przekonać xterm że powinien używać układu klawiatury X w czasie naciskania Alt; wydaje się że po prostu patrzy na swój zasób eightBitInput, i zależnie od tego jaką ma wartość logiczną albo ustawia ósmy bit znaku, albo wypisuje dodatkowy znak Escape (tak jak setmetamode(1) robi na konsoli).

15. Niecodzienne klawisze i klawiatury

Dwa klawisze: PrintScrn/SysRq i Pause/Break są szczególne w tym że mają one dwa kody klawiszy: pierwszy ma kody 84 z naciśniętym równocześnie Alt, i kod 99 w przeciwnym razie; drugi ma kod klawisza 101 z naciśniętym równocześnie Ctrl i kod 119 w przeciwnym razie. Tak więc nie ma sensu przypisywać funkcji Alt-kod 99 lub Ctrl-kod 119.

Jeśli masz dziwne klawisze które nie wypisują pod Linuxem żadnego kodu lub wysyłają komunikaty takie jak "unrecognized scancode"), a twoje jądro to 1.1.63 lub późniejsze, możesz użyć setkeycodes(1) by powiedzieć o nich [kodach] jądru. Nie będą one jednak działać pod X. Gdy przypisano im kod klawisza za pomocą setkeycodes, można im przypisać funkcję za pomocą loadkeys.

16. Przykłady użycia loadkeys i xmodmap

Zamiana Caps Lock i Control na klawiaturze (zakładając że używasz układów klawiatur 0-15; sprawdź przez dumpkeys | head -1)

  % loadkeys
  keymaps 0-15
  keycode 58 = Control
  keycode 29 = Caps_Lock
  %

Powyższa zamiana tylko pod X:

  % xmodmap .xmodmaprc

gdzie .xmodmaprc zawiera linie

  remove Lock = Caps_Lock
  remove Control =  Control_L
  keysym  Control_L  =  Caps_Lock
  keysym  Caps_Lock  = Control_L
  add Lock = Caps_Lock
  add Control = Control_L

O co chodzi z tymi numerami klawiszy? Backspace ma 14 pod Linuxem, a 22 pod X? No cóż, numery najlepiej uważać za przydzielone dowolnie; linuxowy numer klawisza znaleźć można używając showkey(1), a numer Xowy przez xev(1). Często numer Xowy będzie o 8 większy niż linuxowy.

Coś co ludzie chcą zmieniać to przypisania klawiszy funkcyjnych. Załóżmy że chcesz aby F12 wypisywał ciąg znaków "emacs". Wtedy

% loadkeys
keycode 88 = F12
string F12 = "emacs "
%

zrobi to. Ściślej, procedura wygląda mniej więcej tak: (i) znajdź kody klawiszy które mają mieć zmienione przypisania, za pomocą showkey(1), (ii) zachowaj bieżący układ klawiatury, zrób kopię i ją edytuj.

% dumpkeys > my_keymap
% cp my_keymap trial_keymap
% emacs trial_keymap
% loadkeys trial_keymap
%

Format tablicy zgadnąć można patrząc na wynik dumpkeys, a opisuje go keytables(5). Gdy nowy układ klawiatury działa tak jak tego chcemy, możesz wstawić wywołanie

               loadkeys my_new_keymap

do /etc/rc.local czy coś takiego, żeby wykonywać je automatycznie w czasie ładowania. Zauważ że zmiana klawiszy modyfikujących jest zawiła, a nowicjusz może łatwo wplątać się w sytuację z której wydostać się może tylko ekspert.

Domyślnym katalogiem układów klawiatur jest /usr/lib/kbd/keytables. Domyślnym rozszerzeniem plików układów jest .map. Tak więc loadkeys uk załaduje prawdopodobnie /usr/lib/kbd/keytables/uk.map.

(Na moim komputerze) /dev/console jest odnośnikiem symbolicznym do /dev/tty0, a jądro uważa /dev/tty0 za synonim bieżącej WK. XFree86 zmienia właściciela /dev/tty0, ale nie przywraca stanu poprzedniego po zakończeniu. Tak więc polecenie dumpkeys może się nie powieść, ponieważ ktoś inny jest właścicielem /dev/tty0; w takim przypadku możesz wpierw uruchomić X.

16.1 "Mogę używać tylko jednego palca do pisania"

Czy klawisze Shift, Ctrl i Alt mogą się zachowywać jak przełączniki?

Tak, po napisaniu:

% loadkeys
keycode 29 = Control_Lock
keycode 42 = Shift_Lock
keycode 56 = Alt_Lock
%

klawisze lewy Control, Shift i Alt będą działać jako przełączniki. Odpowiednie numery podaje showkey (zwykle są to 29, 97, 42, 54, 56, 100 dla lewego i prawego Control, Shift i Alt odpowiednio), a funkcje to Control_Lock, Shift_Lock, Alt_Lock, ALtGr_Lock.

Co z klawiszami "sticky" [zachowywanymi w buforze do naciśnięcia następnego klawisza(y) - przyp. tłum.] ?

Od wersji 1.3.33, jądro wie o modyfikatorach "sticky". Działają one na następny naciśnięty klawisz. Tak więc, tam gdzie wcześniej trzeba było trzysymbolowej sekwencji Shift_Lock-a-Shift_Lock można teraz używać dwusymbolowej sekwencji SShift_Lock-a.

Bieżąca wersja pakietu kbd nie zawiera jeszcze kodu dla "stickies", tak więc trzeba je wywoływać używając ich kodów szesnastkowych. Na przykład:

% loadkeys
keymaps 0-15
keycode 54 = 0x0c00
keycode 97 = 0x0c02
keycode 100 = 0x0c03
%

uczyni prawe Shift, Ctrl i Alt wersjami "sticky" klawiszy lewych.

Od wersji 0.93 można napisać

   % loadkeys
   keymaps 0-15
   keycode 54 = SShift
   keycode 97 = SCtrl
   keycode 100 = SAlt
   %

by otrzymać ten sam rezultat. Pozwoli to napisać ci Ctrl-Alt-Del trzema naciśnięciami klawiszy, używając jednej ręki to obtain the same result.

17. Zmiana trybu ekranowego

Jak dotąd wiem o sześciu sposobach zmiany rozdzielczości:

1. W czasie kompilacji zmień linię

        SVGA_MODE=      -DSVGA_MODE=NORMAL_VGA

w /usr/src/linux/Makefile.

1A. Po kompilacji użyj rdev -v - okropna łata, ale istnieje.

2. W czasie ładowania systemu: wstaw vga=ask do pliku konfiguracyjnego lilo [zwykle /etc/lilo.conf - przyp. tłum.], a lilo spyta się jakiego trybu ekranowego użyć. Kiedy już wiesz, wstaw tam vga=mypreference.

3.W czasie uruchamiania: A. Użyj komendy resizecons (jest to bardzo prymitywne opakowanie ioctl VT_RESIZE). B. Użyj komendy SVGATextMode (jest to mniej prymitywne opakowanie ioctl VT_RESIZE).

4. Nie "na konsoli":

Pod dosemu, bądź używając svgalib itd. możesz zmienić sprzętowy tryb ekranowy bez powiadamiania o tym konsoli. Czasami jest to użyteczne w ustawianiu resizecons lub SVGATextMode set up: użyj dosemu i jakiegoś programu DOSowego by przełączyć się na pożądany tryb ekranowy, zrzuć (powiedzmy z innej WK) zawartość wszystkich rejestrów sprzętowych karty graficznej, i użyj ich w inicjalizacji której wymagają resizecons i SVGATextMode. W niektórych przypadkach gdy tryb ekranowy przełączył się na jakiś stan nie do użytku, odpalenie dosemu, poleganie na BIOSie co do ustawienia trybu ekranowego i "zabicie" dosemu używając kill -9 jest najprostszą metodą przywrócenia porządku.

17.1 Instrukcje co do używania resizecons

Zdobądź svgalib i skompiluj program restoretextmode. Wystartuj komputer we wszystkich możliwych trybach ekranowych (używając vga=ask) w pliku konfiguracyjnym lilo i zapisz zawartość rejestrów sprzętowych karty graficznej do plików KxW (K=kolumny, W=wiersze), np. 80x25, 132x44 itd. Wstaw te pliki do /usr/lib/kbd/videomodes. Teraz resizecons 132x44 zmieni tryb ekranowy za ciebie (i wyśle SIGWINCH do wszystkich procesów które o tym wiedzą, oraz załaduje inną czcionkę jeśli to konieczne).

Obecnie wykonanie resizecons kończy się sukcesem wtedy tylko gdy jest dość pamięci na starą i nową konsolę równocześnie.

18. Zmiana częstości powtarzania klawiszy

Przy starcie jądro Linuxa ustawia częstość powtarzania na wartość maksymalną. Dla większości klawiatur jest to rozsądne, ale dla niektórych oznacza że nie możesz dotknąć klawisza żeby nie otrzymać trzech kopii odpowiadającego mu symbolu. Użyj programu kbdrate(8) by zmienić częstość powtarzania lub, jeśli to nie pomoże, zmodyfikuj lub usuń sekcję


     ! ustaw częstość powtarzania klawiatury na maximum

         mov     ax,#0x0305
         xor     bx,bx           ! clear bx
         int     0x16

w /usr/src/linux/[arch/i386/]boot/setup.S.

19. Przewijanie

Istnieją dwa sposoby zmuszenia ekranu do przewinięcia się. Pierwsza, zwana "twardym przewijaniem" to pozostawienie tekstu w pamięci ekranu w bieżącej postaci, ale zmienienie punktu oglądania. Jest to bardzo szybkie. Druga, zwana "miękkim przewijaniem" polega na przesuwaniu całego ekranu tekstowego w górę lub dół. Jest to o wiele wolniejsze. Sterownik konsoli jądra wypisze tekst zaczynający się u górnej granicy pamięci ekranu, kontynuując aż do dołu, potem znów skopiuje część dolną na górną, i tak dalej, cały czas używając twardego przewijania by pokazać właściwą część ekranu. Możesz przewijać w tył aż do górnej granicy pamięci ekranu używając Shift-PageUp (szary PageUp) i z powrotem w dół używając Shift-PageDown (szary PageDown), zakładając domyślny układ klawiatury. Ile można przewinąć w tył wyznacza więc ilość pamięci ekranu którą masz, i nie możesz jej zwiększyć. Jeśli potrzebujesz przewinąć więcej, użyj jakiegoś programu który buforuje tekst, jak less czy screen - używając bufora na dysku możesz wrócić do tego co robiłeś tydzień temu. (dla xterm można ustawić możliwe przewijanie w tył dodając linię w rodzaju XTerm*saveLines: 2500 do .Xresources.)

Przy zmianie wirtualnych konsol zawartość ekranu starej WK jest kopiowana do pamięci jądra, a zawartość ekranu nowej WK jest kopiowana z pamięci jądra do pamięci ekranu. Tylko ekran widzialny jest kopiowany, nie całość pamięci ekranu, tak więc zmiana konsoli powoduje utratę całej informacji o przewijaniu.

Czasami twarde przewijanie nie jest pożądane, na przykład gdy sprzęt nie posiada możliwości zmiany punktu oglądania ekranu. Pierwszym przykładem byłą maszyna braillowska, która oddaje zawartość górnej części pamięci ekranu w braille'u. Istnieje opcja używana w czasie ładowania jądra (no-scroll, która mówi sterownikowi konsoli by nie używał twardego przewijania. Patrz bootparam(7)).

20. Wygaszanie ekranu

setterm -blank nn nakaże sterownikowi konsoli wygasić ekran po nn minutach bezczynności. Używając nn równego 0, wygaszanie można wyłączyć. W niektórych starszych jądrach nabierało to efektu dopiero po pierwszym przerwaniu klawiatury.

Opcja s xset(1) ustawi parametry wygaszacza pod X.

Sprzętowe tryby ekranowe oszczędzające energię można włączyć/wyłączyć używając programu setvesablank podanego w komentarzu na początku /usr/src/linux/drivers/char/vesa_blank.c.

21. Zrzuty ekranu

setterm -dump N zrzuci zawartość eranu /dev/ttyN do pliku screen.dump w bieżącym katalogu. Patrz setterm(1).

Prawidłową zawartość ekranu /dev/ttyN odczytać można używając urządzenia /dev/vcsN (gdzie "vcs" oznacza "virtual console screen"). Na przykład, mógłbyś uruchomiony zegar który wyświetla bieżący czas w górnym prawym rogu konsoli (patrz program vcstime w kbd-0.92.tar.gz). Samo zrzucenie zawartości następuje po cat /dev/vcsN. Owe urządzenia /dev/vcsN nie zawierają znaków LF (nowej linii), ani atrybutów (jak kolory). We wnętrzu programu lepiej jest zapewne zamiast tego użyć /dev/vcsaN ("virtual console screen w/ attributes") - zaczyna się ono nagłówkiem podającym liczbę wierszy i kolumn oraz położenie kursora. Patrz vcs(4).

22. Niektóre właściwości vt100 - tryb klawiszy aplikacji

: Czasami moje klawisze kursora dają dziwne kody.

Gdy terminal znajduje się w trybie klawiszy aplikacji klawisze kursora wypisują Esc O x, a w przeciwnym razie Esc [ x, gdzie x = A, B, C, D. Niektóre programy ustawiają terminal w tryb klawiszy aplikacji; jeśli przerwiesz je przez kill -9, albo jeśli padną, tryb nie zostanie przestawiony.

        % echo -e '\033c'  

Kasuje wszystkie właściwości bieżącej WK do domyślnych. Zmiany tylko trybu klawiszy aplikacji dokonuje się przez:

        % echo -e '\033[?1h' 

(ustawia) i

        % echo -e '\033[?1l' 

(kasuje).

23. Niekompatybilość sprzętowa

Niektóre osoby zauważyły że tracą wpisywane znaki gdy aktywny jest napęd stacji dysków. Wygląda na to że może to być problem z płytami głównymi Uni-486WB.

(proszę napisać do mnie żeby potwierdzić: "tak, mam ten sam problem"; zaprzeczyć "nie, wszystko w porządku z moim Uni-486WB; zmienić: "mój komputer Xyz ma ten sam problem").

Tjalling Tjalkens (tjalling@ei.ele.tue.nl) donosi o bardzo podobnych problemach z "niemarkową płytą główną GMB-486 UNP VESA z procesorem AMD 486DX2-66" - w czasie pracy stacji dyskietek niektóre naciśnięcia klawiszy gubią się, w czasie pracy streamera (Conner C 250 MQ) traci się wiele naciśnięć.

Niektóre osoby doświadcząją sporadycznych zawieszeń - czasami związanych z pracą twardego dysku lub innego urządzenia I/O.

ulf@rio70.bln.sni.de (Ulf Tietz) pisze: "Miałem te same problemy gdy dostroiłem swoją płytę główną na zbyt dużą szybkość. Ustawiłem więc wszystkie czasy oczekiwania (CLK, wait statements) na bardziej konwencjonalne wartości, i problemy zniknęły".

bhogan@crl.com (Bill Hogan) pisze: "Jeśli masz AMI BIOS, możesz spróbować ustawić emulację Gate A20 na "chipset" (jeśli masz taką opcję). Za każdym razem gdy miałem ten parametr ustawiony na jakąś inną opcję ("fast", "both", "disabled"), miałem częste zawieszenia się klawiatury".

--------------------------------------------------------------------

Uprasza się o dodatki i poprawki Andries Brouwer - aeb@cwi.nl

doc-linux-pl-2002.06.14.orig/html/Keystroke-HOWTO.pl.html0100664000175000017500000002551106770264140021525 0ustar covencoven Linux Keystroke HOWTO

Linux Keystroke HOWTO

Zenon Fortuna zenon@netcom.com
v2.0, kwiecień 1995
Wersja polska: Gwidon S. Naskrent naskrent@hoth.amu.edu.pl
v1.0, 29 X 1997

1. Co to jest Keystroke-HOWTO?

Dokument ten napisany został dla użytkowników którzy chcą przypisać specjalne czynności niektórym klawiszom na klawiaturze. Sugerowana metoda to użycie loadkeys(1) bądź zmiana defkeymap.c i zbudowanie na nowo jądra.

Tekst ten NIE omawia przemapowywania klawiszy klawiatury, np. Delete czy BackSpace. Co do informacji na temat przemapowywania klawiszy przeczytaj Backspace Mimi-HOWTO autorstwa Stevena Lee.

Metodę opisaną poniżej przetestowano na jądrze 1.2.1, zamieszczonym w dystrybucji 2.2 Slackware.

2. Historia zmian

4 IV 95 - wersja 2.0 Przystosowana do wersji jądra 1.2.1; -proste zmiany w sugerowanych modyfikacjach pliku "my_keytable.map" -zmodyfikowany przykład "key_macro" ze zrzutami ekranu przez /dev/vcs*

7 V 94 - wersja 1.0 Wersja wyjściowa Keystroke-HOWTO, oparta w działaniu na wersji jądra 1.0

3. Krótki opis

Wirtualny terminal Linuxa oraz sterowniki klawiatury przyjmują domyślny układ klawiatury taki jak zdefiniowany w pliku /drivers/char/defkeymap. c źródeł jądra. Dwunastu klawiszom funkcyjnym PC przydać można łańcuchy przypisane wykonywanym przez nie czynnościom. Po naciśnięciu któregoś z tych klawiszy, być może z dodanymi klawiszami Alt lub Ctrl, bieżący wirtualny terminal dodaje określony łańcuch do swoich buforów danych wejściowych i wyjściowych, emulując w efekcie wprowadzenie owego łańcucha tak jakby został wpisany z klawiatury.

Ustawieniem odpowiedniego łańcucha dla danego klawisza funkcyjnego możemy uprościć wykonywanie wybranych komend, na przykład wywołując skrypt powłoki /usr/local/bin/key_macro, który możemy utworzyć i modyfikować wedle własnego uznania.

3. Narzędzia do modyfikacji sterownika klawiatury.

Możemy użyć loadkeys(1), dumpkeys(1) oraz showkey(1):

Jeśli twój system linuxowy nie posiada tych narzędzi, możesz je zdobyć poprzez ftp jako pakiet kbd-0.89.tar.gz lub kbd-0.90.tar.gz z sunsite.unc.edu:/pub/Linux/system/Keyboards, lub tsx-11.mit.edu:/pub/linux/sources/system Powinieneś użyć GNUsowskiego tar aby wypakować potrzebne pliki.

4. Zmiana pliku układu klawiatury

Jądro Linuxa zawiera skompilowany kod defkeymap.c, który tworzony jest narzędziem loadkeys(1) z pliku defkeymap.map. Oba pliki umieszczone są w katalogu src/linux/drivers/char.

Potrzebujemy zmodyfikować plik defkeymap.map, tak więc zróbmy jego lokalną kopię przez

# cp defkeymap.map my_keytable.map

lub

# dumpkeys > my_keytable.map

Istnieje także duży zbiór różnych plików z układami klawiatury w katalogu /usr/lib/kbd/keytables, z których defkeymap.map może zostać użyty w twoim systemie w miejsce src/linux/drivers/char/defkeymap.map.

Poleca się metodę używającą dumpkeys(1), ponieważ zdarzyć się może iż twoje jądro było już modyfikowane lub utworzony dla ciebie z innym plikiem defkeymap.map niż ten który możesz znaleźć.

Przeczytajmy zawartość pliku my_keytable.map: znajduje się tam ponad 300 linii kodu, i możemy tam znaleźć trzy grupy deklaracji: pierwsza składa się z linii zawierających słowo "keycode", być może z dołączonymi dodatkowymi słowami w rodzaju "alt", "control", itd. Druga grupa składa się z linii ze słowem "string", trzecia z linii ze słowem "compose".

Więcej o składni tego pliku można przeczytać w keytables(5)

4.1 Przykład modyfikacji pliku układu klawiatury

Jako przykład przypisania makrołańcucha naciśnięciu klawisza funcyjnego, każmy Ctrl-F1 wywoływać nasz skrypt /usr/local/bin/key_macro.

Po pierwsze powinniśmy dowiedzieć się jaki jest kod klawisza funkcyjnego F1. Możemy narzędzia użyć showkey(1) i poznać kod naciskając F1.

Zamiast tego możemy poszukać ciągu "F1" w pliku my_keytable.map i znaleźć następującą linię:

        keycode  59 = F1

Sugeruje to że kodem klawisza dla F1 jest 59. Linia ta określa również że po naciśnięciu F1 sterownik klawiatury powinien wysłać łańcuch oznaczony kodem "F1". Aby zobaczyć zawartość tego łańcucha, poszukać można wzoru "string F1" i znaleźć

        string F1 = "\033[[A"

Oznacza to że po naciśnięciu klawisza F1 sterownik klawiatury wysyła "Esc [ [ A" (bez spacji).

Nie powinniśmy zmieniać tego łańcucha, ponieważ niektóre aplikacje polegają na nim jako na domyślnej czynności klawisza F1.

Możemy jednak zdefiniować nową czynność dla Ctrl-F1, założywszy że nie jest ona zarezerwowana przez jądro dla innych specjalnych czynności. Aby obejrzeć przypisania klawisza F1 razem z Ctrl, Shift i innymi trybami, możemy zaglądnąć do pliku my_keytable.map używając:

# grep 59 my_keytable.map

W przypadku gdy nie ma tam linii z "control keycode 59", możemy użyć Ctrl-F1 bez problemów (gdy istnieje linia z "shift control keycode 59 nadal wszystko jest ok).

Dodajmy następującą linię do pliku my_keytable.map:

control keycode 59 = key_symbol

gdzie "key_symbol" określać będzie czynność klawisza Ctrl-F1. Jądro 1.2.* pozwala na dynamiczną alokację łańcuchów, ale nazwa dla "key_symbol" musi zostać wybrana tylko z ustalonego zbioru nazw. Między innymi dozwolone są symbole F1-F246. Dla my_keytable.map w moim systemie nieużywane było F21, ale powinieneś obejrzeć swój plik i wybrać odpowiedni klawsym. Możemy więc dopisać linię:

     control keycode 59 = F21

Teraz musimy zdefiniować zawartość F21, dodając linię

     string F21 = "/usr/local/bin/key_macro\n"

Podsumowywując, uczyniliśmy dwie zmiany w stosunku do oryginalnego my_keytable.map: zadeklarowaliśmy nowy łańcuch F21 oraz to że Ctrl-F1 będzie wywoływać zawartość F21.

4.2 Czasowe zmiany w ustawieniach klawiatury

Zmieniwszy właściwie my_keytable.map możemy skopiować zmiany do sterownika klawiatury jądra używając narzędzia loadkeys(1):

% loadkeys my_keytable.map

Pozwolenie modyfikacji sterownika klawiatury jądra dawane jest każdemu kto posiada prawa odczytu urządzenia /dev/console.

Aby sprawdzić czy zamierzone zmiany zostały zainstalowane, możemy użyć narzędzia dumpkeys(1) by sprawdzić wartość F21, na przykład:

% dumpkeys | grep F21

Możemy zobaczyć:

keycode 59 = F1         F11     Console_13      F21

string F21 = "/usr/local/bin/key_macro\012"

co jest ok, bowiem "\012", lub LF, odpowiada \n

Teraz naciśnięcie Ctrl-F1 powinno wywołać skrypt /usr/local/bin/key_macro, tak jak zamierzaliśmy.

4.3 Zmiany na stałe

Zmiany w sterowniku klawiatury jądra narzucone loadkeys(1) trwają do następnego przeładowania systemu (albo następnego odwołania do loadkeys).

Możemy zmienić plik /etc/rc.d/rc.local aby wywołał loadkeys z naszym plikiem my_keytable.map jako argumentem. Zamiast tego zmodyfikować możemy src/linux/drivers/char/defkeymap.c i ponownie skompilować jądro z nowymi wartościami domyślnymi.

Nie powinniśmy zmieniać pliku defkeymap.c ręcznie, lecz raczej wygenerować go narzędziem loadkeys(1):

# mv defkeymap.c defkeymap.c.ORIG
# loadkeys --mktable my_keytable.map > defkeymap.c

Następnie powinniśmy wygenerować nowe jądro, zasadniczo zmieniając katalog na bazowy katalog źródeł jądra, i używając make(1).

W końcu, powinniśmy użyć lilo(1) aby zainstalować i załadować nasze nowe jądro.

5. Przykład skryptu key_macro

Szczególnie użytecznym skryptem dla prostych operacji związanych z naciskaniem klawiszy może być skrypt powłoki przygotowywujący, bądź drukujący, zrzut ekranu.

Przykład ten uległ zmianie od czasów wersji 1.0 Linuxa, z powodu zmian w jądrze, które nie udostępnia już wywołania systemowego ioctl(0,TIOCLINUX).

Aby przeczytać zrzuty ekranu wirtualnej konsoli należy wpierw przygotować parę plików urządzeń. Jako root możemy stworzyć co następuje:

# mknod /dev/vcs1  c 7 1
# mknod /dev/vcs2  c 7 2
...
# mknod /dev/vcs63 c 7 63

Oczywiście wystarczy mieć tylko pliki /dev/vcs* odpowiednie dla wirtualnych konsoli których się używa.

Kod poniżej powinien być uważany za przykład możliwego pliku /usr/local/bin/key_macro:

#!/bin/sh
#
# Oto przykład użytecznego skryptu key_macro
#

VT_NUMBER=`tty|cut -c9-`
FILE=/tmp/vt$VT_NUMBER.dump
cp /dev/vcs$VT_NUMBER $FILE
echo zrzut ekranu zachowany w $FILE
#
# Odkomentuj poniższą linię gdy chcesz by zrzut był drukowany
# lpr $FILE

6. Uwagi

Nie ma praktycznego limitu sumy długości wszystkich łańcuchów które moglibyśmy chcieć załadować do sterownika klawiatury. Poprzedni stały bufor długości FUNC_BUFSIZE (ustawiony na 512 bajtów) został w Linuxie 1.2.* zastąpiony strategią dynamicznego przydzielania buforów w kawałkach po 512 bajtów każdy.

Najświeższą kopię Keystroke-HOWTO znaleźć można w

"ftp.netcom.com:/pub/ze/zenon/linux/howto" name="ftp.netcom.com:/pub/ze/zenon/linux/howto">

7. Dalsze pomysły?

W razie gdybyś znalazł coś wartego dodania do tego dokumentu, prześlij proszę swoje uwagi na adres "mailto:zenon@netcom.com" name= "zenon@netcom.com"> - dzięki (zf).

doc-linux-pl-2002.06.14.orig/html/Large-Disk-HOWTO.pl.html0100664000175000017500000005436107473012340021466 0ustar covencoven Duże dyski

Duże dyski

Andries Brouwer, aeb@cwi.nl
v1.0, 960626
wersja polska piotr.pogorzelski@ippt.gov.pl
wersja 1.0, 5 marca 1997


Wszystko na temat geometrii dysków i granicy 1024 cylindrów.

1. Postawienie problemu

Załóżmy, że posiadasz dysk z więcej niż 1024 cylindrami. Co więcej załóżmy, że posiadasz system który korzysta z BIOSu. Wtedy masz problem. Masz problem ponieważ zwykły interfejs We/Wy twojego dysku realizowany przez przerwanie BIOSu INT13, które do przekazywania numeru cylindra, na którym ma zostać wykonana operacja We/Wy korzysta z 10-cio bitowego pola, przez co cylindry o numerze 1024 i wiekszym są niedostępne.

Na szczęście Linux nie korzysta z BIOSu, więc nie ma tego problemu.

No prawie, poza dwoma przypadkami:

(1) Kiedy uruchamiasz swój system, Linux jeszcze nie działa i nie potrafi uchronić cię przed kłopotami z BIOSem. Ma to wpływ na pracę LILO i innych ładowaczy systemów (boot loaders).

(2) Wszystkie systemy operacyjne korzystające z tego samego dysku muszą zgadzać się co do położenia poszczególnych partycji. Innymi słowy, jeśli korzystasz na jednym dysku z Linuxa i powiedzmy DOSu, wtedy oba muszą interpretować tabelę partycji w ten sam sposób. Ma to wpływ na sposób zachownia jądra i programu fdisk.

Poniżej znajdziesz sczegółowy opis wszelkich istotnych szczegółów. Zauważ, że wszelkie informacje odnoszą się do jądra w wersji 2.0.8. Inne wersje jądra mogą zachowywać się troszkę inaczej.

2. Ładowanie systemu (Booting)

Podczas ładowania systemu, BIOS odczytuje z pierwszego dysku twardego (lub z dyskietki) sektor 0 (znany jako główny sektor startowy (Master Boto Record, MBR)) i wykonuje skok do znalezionego tam kodu - zwykle do programu ładowania początkowego. Te małe programy ładujące (ładowacze) jakie się tam znajdują, nie posiadają wlasnych drajwerów dyskowych i korzystają z funkcji BIOSu. To znaczy, że jądro Linuxa może zostać załadowane, tylko wtedy gdy w całości znajduje się poniżej 1024 cylindra.

Ten problem można bardzo łatwo rozwiązać. Upewnij się, że jądro (i być może inne pliki wykorzystywane do startu systemu, np. pliki odzworowań programu LILO) znajdują się na partycji, która w całości zawiera się w obszrze ponizej 1024 cylindra dysku, do którego BIOS ma dostęp - zwykle pierwszy lub drugi dysk twojego komputera.

Poza tym ładowacz i BIOS muszą się zgadzać w sprawie geometrii dysku. Tutaj może okazać się pomocne skorzystanie w konfiguracji LILO z opcji linear. Więcej szczegółów później.

3. Geometria dysku i partycje

Jeśli posiadasz na jednym dysku kilka systemów operacyjnych, wtedy każdy z nich używa jednej lub więcej partycji. Niezgodność w ocenie, gdzie te partycje się dokładnie znajdują może mieć katastrofalne konsekwencje.

Rekord MBR zawiera tabelę partycji określającą, gdzie znajdują się partycje (podstawowe). Tabela zawiera 4 pozycje (dla 4 partycji) i wygląda mniej więcej tak:

struct partition {
        char active;    /* 0x80: startowa, 0: nie strtowa */
        char begin[3];  /* CHS pierwszego sektora partycji */
        char type;
        char end[3];    /* CHS ostatniego sektora partycji */
        int start;      /* 32 bitowy numer sektora (licząc od 0) */
        int length;     /* 32 bitowa liczba sektorów */
};
(gdzie CHS oznacza numer cylindra/głowicy/sektora).

Jak widać informacja jest nadmiarowa: lokalizacja partycji jest podana zarówno w 24-ro bitowych polach begin i end, oraz w 32-dwu bitowych polach start i length.

Linux korzysta jedynie z pól start i length, dlatego potrafi obsłużyć partycje o liczbie sektorów nie przekraczającej 2^32 tzn. partycje o rozmiarze nie większym niż 2 TB. Czyli dwieście razy większą od dysków obecnie dostępnych na rynku. Możemy mieć nadzieje, że będzie to wystarczające na najbliższe 10 lat, a może więcej.

Niestety, funkcja BIOSu INT13 korzysta z inforamacij CHS zakodowanych w polach 3bajtowych, przy czym na numer cylindra przeznaczonych jest 10 bitów, 8 bitów na numer głowicy i 6 bitów na numer sektora na ścieżce. Dozwolone numery cylindrów to 0-1023, głowic 0-255 i dozwolona liczba sektorów na ścieżce wynosi 1-63 (tak, sektory na ścieżce są liczone od 1, a nie od 0). Na tych 24 bitach można zaadresować nie więcej niż 8455716864 bajtów (7.875 GB), dwieście razy więcej niż rozmiar dysków dostępnych w roku 1983.

Kolejne, ważniejsze (groźniejsze) ograniczenie polega na tym, że standard interfejsu IDE pozwala jedynie na: 256 sektorów na ścieżce, 65536 cylindrów i 16 głowic. Sam w sobie pozwala na dostęp do 2^37 = 137438953472 bajtów (128 GB), lecz w połączeniu z ograniczeniami nałożonymi przez BIOS, faktycznie umożliwia na dostęp tylko do 528482304 bajtów (504 MB).

Nie jest to wystarczające dla dostępnych obecnie dysków i ludzie są zmuszeni do stosowania różnego rodzaju sztuczek, zarówno sprzętowych, jak i programowych.

4. Translacja i Disk Managery

Nikogo nie interesuje jaka jest `rzeczywista' geometria dysku. Tak na prawdę, liczba sektorów na ścieżce często jest zmienna - więcej na ścieżkach zewnętrznych i mniej na ścieżkach wewnętrznych - nie ma tak na prawdę `rzeczywstej' liczby sektorów na ścieżce. Dla użytkownika najwygodniej jest traktować dysk jako liniową tablicę sektorów, ponumerowanych 0,1 ... i pozostawić sterownikowi zadanie odnalezienia położenia danego sektora na dysku.

To numerownie liniwe znane jest pod skrótem LBA. Adres liniowy należacy do sektora (c,h,s) dla dysku o geometrii (C,H,S) jest równy c*H*S+h*S+(s-1). Wszystkie sterowniki SCSI porozumiewają się według standardu LBA, niektóre sterowniki IDE również.

BIOS zamienia 24-bitowe pole (c,h,s) na adres LBA i przekazuje to sterownikowi, który rozumie co to jest LBA. Dzięki temu ponownie mamy dostęp do 7.785 GB. Nie jest to wystarczające dla wszystkich dysków, lecz jest to lepsze niż to co było. Zauważ, że CHS wykorzystywane przez BIOS nie ma żadnego związku z rzeczywistością.

Coś poddobnego dzieje się w sytuacji, gdy sterownik nie rozumie adresów LBA, lecz BIOS wie o translacji (w Setupie BIOSu jest to zwykle oznaczane jako `Large'). Teraz BIOS prezentuje systemowi operacyjnemu geometrię (C',H',S') i używa geometrii (C,H,S) do komunikacji ze sterownikiem. Zwykle S=S' C'=C/N i H'=H*N, gdzie N jest najmniejszą potęgą 2, zapewniającą spełnienie warunku ' <= 1024 (w celu zminimalizowania marnującej się przestrzeni przez zaokrąglenie w dół C'=C/N). Ta metoda również pozwala uzyskać dostęp do 7.875 GB.

Jeśli BIOS nic nie wie na tema `Large' lub LBA, wtedy pozostają rozwiązania oparte na odpowiednich drajwerach. Takie programy, jak OnTrack lub Ez-Drive zamieniają programy obsługi dysku należące do BIOSu na własne. Często jest to realizowane, przez umieszenie kodu należacego do Disk Managera w rekordzie MBR i kolejnych sektorach dysku (OnTrack nazywa to DDO: Dynamic Drive Overlay) aby był on uruchamiany przed załadowniem jakiegokolwiek systemu operacyjnego. To wyjaśnia kłopoty związane ze startowniem systemu z dyskietki, dla dysków z zainstalowanym programem Disk Manager.

Efekt całego tego zamieszania jest mniej więcej taki sam, jak w przypadku translacji przez BIOS - lecz w sytuacjach, gdy na jednym dysku znajduje się wiele systemów operacyjnych programy typu Disk Manager mogą sprawiać wiele kłopotów.

Linux od wersji 1.3.14 rozpoznaje istnienie programu Boot Manager firmy OnTrack i od wersji 1.3.29 firmy EZ-Drive. Więcej szczegółów znajdziesz dalej.

5. Translacja wykonywana przez jądro dla dysków IDE

Jeśli jądro Linuxa rozpozna istnienie na dysku IDE programu typu disk manager, spróbuje przeprowadzić identyczną translację jaką robi ten właśnie program, tak aby widzieć te same partycje co np. MS-DOS z programe OnTrack lub EZ-Drive. Jeśli jednak w parametrach startowych zostanie przekazana geometria dysku, nie jest wykonywana żadna translacja. Tak więc opcja startowa `hd=cyls,heads,secs' może zniszczyć zgodność z programem typu disk manager.

Translacja wykonywana przez jądro polega na wypróbowaniu kolejno liczby głowic równej 4, 8 ,16, 32, 128, 255 (utrzymując stałą wartość H*C) aż do spełnienia warunku C <= 1024 lub H = 255.

Trochę uwag na temat tekstu poniżej - nagłówki podrozdziałów są identyczne z pojawiającymu się w komunikatach startowych. Tutaj i w całym tekscie typy partycji podane są szesnastkowo.

5.1 EZD

Rozpoznano drajwer EZ-Drive poniważ pierwsza partycja podstawowa jest typu 55. Geometria dysku podlega opisanej powyżej translacji i tabela partycji z sektora 0 zostaje pominięta - zmiast tego korzystamy z tabeli partycji znajdującej się w sektorze 1. Numery bloków dyskowych pozostają niezmienione, lecz zapis sektora 0 zostaje przekierowany do sektora 1. To zachownie może zostać zmienione przez ponowne skompilowanie jądra przy zdefiniowaniu w pliku ide.c #define FAKE_FDISK_FOR_EZDRIVE 0 .

5.2 DM6:DDO

Rozpoznano drajwer OnTrack Manager (na pierwszym dysku) ponieważ pierwsza partycja podstawowa jest typu 54. Geometria dysku podlega opisanej powyżej translacji i cały dysk zostaje przesunięty o 63 sektory (tak więc stary sektor 63 staje się sektorem 0). Następnie nowy rekord MBR (z tabelą partycji) zostaje odczytany z nowego sektora 0. To przesunięcie oczywiście ma na celu zrobienie miejsca dla DDO - dlatego nie jest wykonywane dla innych dysków.

5.3 DM6:AUX

Rozpoznano drajwer OnTrack Manager (na innych dyskach) ponieważ pierwsza partycja podstawowa jest typu 51 lub 53. Geometria dysku podlega opisanej powyżej translacji.

5.4 DM6:MBR

Rozpoznano starszą wersję drajwera OnTrack Manager poniważ znaleziono podpis drajwera (sprawdzono, że przesunięcie znalezione w 2-gim i 3-cim bajcie rekordu MBR nie jest większe od 430, i zmienna typu short znaleziona pod tym adresem jest równa 0x55AA, po której występuje bajt nieparzysty). Geometria dysku podlega opisanej powużej translacji.

5.5 PTBL

Na końcu wykonywany jest test próbujący wydedukować istnienie translacji na podstawie wartości pól start i end partycji podstawowej: Jeśli cylinder początkowy i końcowy jednej z partycji jest mniejszy od 256, a sektory początkowy i końcowy mają numery odpowiednio 1, i 63, a końcowe numery głowic są równe 31, 63 lub 127, wtedy wnioskujemy, że translacja dysku jest aktywna, i wykorzystujemy liczbę głowic równą odpowiednio 32, 64 i 127 (ponieważ zwykle partycja kończy się na granicy cylindra i interfejs IDE nie pozawala na więcej niż 16 głowic). Być może jest tu błąd i genhd.c nie powinien sprawdzać dwóch najwyższych bitów zmiennej przechowującej numer cylindra? Jednakże nie wykonuje się żadej translacji, jesli aktualny pogląd na istniejącą geometrię już zakłada 63 sektory na ścieżce i co najmniej tyle samo głowic (ponieważ to prawdopodownie oznacza, ze translacja już została dokonana).

6. Konsekwencje

Jakie to wszystko ma znaczenie? Dla użytkowników Linuxa tylko jedno: muszą się upewnić, że LILO i fdisk używają `poprawnej' geometrii, gdzie `poprawna' w przypadku fdiska jest rozumiana jako geometria używana przez inne systemy operacyjne znajdujące sie na tym samym dysku, a w przypadku LILO, że jest to geometria pozwalająca na poprawną współpracę z BIOSem podczas ładowania systemu.

Jak fdisk dowiaduje się o geometrii? Pyta się jądra przy pomocy funkcji ioctl HDIO_GETGEO. Lecz użytkownik może podać dowolną geometrię dysku przez parametry w wierszu poleceń lub później w samym programie.

Jak LILO dowiaduje się o geometrii dysku? Pyta się jądra przy pomocy funkcji ioctl HDIO_GETGEO. Lecz użytkownik może podać łasne inforamacje z pomocą opcji `disk='. Można również skorzystac z opcji linear, co spowoduje, że LILO zachowa w pliku odwzorwania (map file) adres LBA, zamiast CHS i podczas ładowania sytemu odczyta geometrię dysku (wykorzystujęc funkcję nr 8 przerwania INT 13).

Skąd jądro wie co odpowiedzieć? Ha!, po pierwsze użytkownik może przekazć mu odpowiednie informacje jako parametr wiersza zachęty startowej: `hd=cyls,heads,secs'. W innym przypadku jądro przepyta na ten temat sprzęt.

6.1 Szczególy IDE

Trochę szczegółów. Drajwer IDE posiada cztery źródła informacji o geometrii dysku. Pierwsze (G_user) to dane podane przez użytkwonika w wierszu zachety. Drugie (G_bios) to inforamcje BIOSu (tylko dla pierwszego i drugiego dysku), które są odczytywana podczas uruchamiania systemu, przed przełączeniem się w tryb 32-bitowy. Trzecie (G_phys) i czwarte (G_log) są przekazywane przez sterownik IDE jako odpowiedź na polecenie IDENTIFY - są to `fizyczna' i aktualna `logiczna' geometria dysku.

Z drugiej strony, sterownik potrzebuje dwóch informacji o geometrii dysku: lecz posiada z jednej strony G_fdisk, przekazywane przez funkcję ioctl HDIO_GETGEO, a z drugiej strony G_used, które jest naprawdę wykorzystywane do wykonywania operacji We/Wy. Zarówno G_fdisk, jak i G_used są inicjowane: wartościami G_user jeśli są podane, G_bios jeśli ta inforamcja jest dostepna wg. CMOS, lub G_phys w przeciwnym wypadku. Jesli G_log wygląda rozsądnie to G_used przybiera tę własnie wartość. W przeciwnym wypadku, jeśli G_used nie ma większego sensu i G_phys wygląda OK, wtedy G_used przyjmuje wartość G_phys. W tym przypadku `rozsądnie' oznacza, że liczba głowic jest w zakresie 1-16.

Innymi słowy parametry wiersza zachęty są ważniejsze od informacji pobranych z BIOSu i określają jaką geometrię widzi fdisk, lecz jeśli podane informacje odpowiadają geometri poddanej translacji (wiecej niż 16 głowic), wtedy operacje We/wy jądra zostaną zastąpione odpowiedzią sterownika na polecenie IDENTIFY.

6.2 Szczegóły SCSI

Sytuacja w przypadku SCSI jest trochę inna, ponieważ polecenia SCSI używają logicznych numerów bloków, tak więc geometria dysku nie ma absolutnie żadnego znaczenia dla operacjami We/Wy. Jednakże format tabeli partycji jest ciągle ten sam, więc fdisk musi wymyśleć jakąś geometrię i również w tym przypadku korzysta z funkcji HDIO_GETGEO - w rzeczywistości fdisk nie rozróżnia dysków IDE i SCSI. Jak każdy może się sam przekonać (na podstawie szczegółowego omówienia poniżej) poszcególne drajwery wymyślają różne geometrię. Rzeczywiście jeden wielki balagan.

Jeśli nie korzystasz DOSu, to unikaj wszelkich ustawień rozszerzonych translacji i jeśli to możliwe, używaj ustawień 64 głowice, 32 sektory na ścieżce (wtedy jeden cylinder ma ładny rozmiar 1MB). Unikniesz problemów, gdy przeniesiesz dysk z jednego sterownika do innego. Niektóre dyski SCSI (aha152x, pas16, ppa, qlogicfas, qlogicisp) są tak nerwowe w sprawach zgodności z MS-DOSem, że nie pozwolą systemowi z zainstalowanym wyłącznie systemem Linux na wykorzystanie więcej niż 8GB. To jest błąd.

Jaka jest rzeczywista geometria? Najprostsza odpowiedź mówi, że nie ma czegoś takiego. I gdyby była, to nie chciałbyś wiedzieć, i na pewno NIGDY, ale to PRZENIGDY nie mów o tym fdiskowi, LILO lub jądru. To jest po prostu sprawa pomiędzy dyskiem i sterownikiem SCSI. Pozwolisz, że powtórzę: tylko głupcy mówią fdiskowi/LILO/jądru o rzeczywistej geometrii dysków SCSI.

Lecz jeśli jesteś ciekaw i nalegasz, możesz spytać o to sam dysk. Istnieje bardzo ważne polecenie READ CAPACITY, które przekazuje całkowią objętość dysku, a drugie polecenie MODE SENSE (patrz Rigid Disk Drive Geometry Page (strona 04)) pozwala odczytać liczbę cylindrów i głowic (ta informacje nie może być zmieniona), natomiast w Format Page (strona 03) podaje liczbę bajów w sektorze i liczbę sektorów w ścieżce. Ta ostania liczba jest zwykle zależna od wycięcia (notch) i liczba sektorów na ścieżce jest zmienna - ścieżki zewnętrzne posiadają więcej sektorów, wewnętrzne mniej. Program pracujący pod Linuxem o nazwie scsiinfo poda ci te wszystkie informacje.

Jest wiele szcegółów i komplikacji, i jest jasne, że nikt (prawdopodobnie nawet sam system operacyjny) nie chce wykorzystywać tej informacji. Co więcej, tak długo jak martwimy się tylko o fdisk i LILO, zwykle otrzymuje się odpowiedz typu C/H.S=4476/27/171 - wartości, które nie mogą być wykorzystane przez fdisk, ponieważ tabela partycji rezerwuje jedynie dla C/H/S odpowiednio 10/8/6 bitów.

To skąd na ten temat bierze informację funkcja HDIO_GETGEO ? Cóz, albo ze sterownika SCSI lub zgaduje. Wygląda, że niektóre dyski myslą, że interesuje nas `rzeczywistość', lecz nas oczywiście interesuje jedynie jakie parametry będą używane przez FDISK pod DOSem czy OS/2 (lub AFDISK Adapteca).

Pamiętaj, że fdisk Linuxa potrzebuje znać liczbę głowic H i sektorów na ścieżce S, aby móc zamienić numer sektora w foramcjie LBA na adres c/h/s, lecz liczba cylindrów C nie ma znaczenia w tej konwersji. Niektóre dyski używają (C,H,S)=(1032,255,63) w celu zasygnalizowania, że dysk ma co najmniej 1023*255*63 sektorów. Niestety to nie ujawnia aktualnego rozmiaru dysku i będzie ograniczało użytkowników większości wersji programu fdisk do wykorzstania tylko około 8GB ich dysków - w dzisiejszych czasach jest to poważne ograniczenie.

W opisie przedstawionym poniżej, M oznacza całkowitą pojemność dysku, a C,H i S liczbę cylindrów, głowic i sektorów na ścieżce. Jeśli traktujemy C jako wynik działania C = M / (H*S), wtedy wystarczy podać H i S.

Domyślnie H=63,S=32.

aha1740, dtc, g_NCR5380, t128, wd7000:

H=64, S=32.

aha152x, pas16, ppa, qlogicfas, qlogicisp:

H=64, S=32 unless C > 1024, W takim przypadku H=255, S=63, C = min(1023, M/(H*S)). (Tak więc C jest obcięte i h*s*C nie jest aproksymacją rozmiaru dysku M. Taka sytuacja potrafi ogłupić większość wersji programu fdsik.) Kod w pliku ppa.c wykorzystuje M+1 zamiast M i twierdzi, że to z poowdu błędu w sd.c M jest przesunięte o 1.

advansys:

H=64, S=32 chyba, że C > 1024 i co więcej przy włączonej opcji BIOSu `> 1 GB', co w takim przypadku daje H=255, S=63.

aha1542:

Spytaj sterownika, który z możliwych dwóch schematów translacji jest w użyciu, i użyj albo H=255, S=63 lub H=64, S=32. W ostanim przypadku wyświetlany jest komunikat startowy "aha1542.c: Using extended bios translation".

aic7xxx:

H=64, S=32 chyba, że C > 1024, i co więcej jeśli przekazano parametr startowy (boot) "extended", lub jeśli w pamięci SEEPROM, lub BIOSie był ustawiony bit `extended', to w takim przypadku przyjmuje się H=255, S=63.

buslogic:

H=64, S=32 chyba, że C >= 1024, i co więcej na sterwoniku została włączona translacja rozszerzona, co w takim pryzpadku powoduje przyjęceie parametrów H=128, S=32 jeśli M < 2^22 lub H=255, S=63 w przeciwnym wypadku. Jednakże po dokonaniu wyboru (C,H,S) odczytywana jest tabela partycji i jeśli dla jednej z trzech możliwości (H,S) = (64,32), (128,32), (255,63) gdziekolwiek zgadza się równość endH=H-1, wtedy stosowana jest dana para (H,S) i wyświetlany jest komunikat "Adopting Geometry from Partition Table".

fdomain:

Znajduje parametry w tabeli parametrów dysku BIOSu, lub odczytuje tabelę partycji i używa translacji H=endH+1, S=endS w przypadku pierwszej partycji (pod warunkiem, że nie jest pusta), lub używa H=64, S=32 w przypadku gdy M < 2^21 (1 GB), lub H=128, S=63 jeśli M < 63*2^17 (3.9 GB) w przeciwnym wypadku. H=255, S=63.

in2000:

Użyj pierwszej pary (H,S) = (64,32), (64,63), (128,63), (255,63), dla której zajdzie nierówność C <= 1024. W przeciwnym wypadku skróć C do 1023.

seagate:

Odczytuje C,H,S z dysku. (Horror!) Jeśli C lub S jest zbyt duże wtedy przyjmuje S=17,H=2 i podwaja H aż V <<;= 1024. To znaczy, że H będzie miało wartość 0, jeśliM > 128*1024*17 (1.1 GB). To jest błąd.

ultrastor and u14_34f:

W zależności o trybu sterownika wykorzystywane jest jedno z następujących odwzoroań:((H,S) = (16,63), (64,32), (64,63))

Jeśli drajwer nie poda geometrii dysku, powracamy do metody polegającej na zgadywaniu na podstawie zawartości tabeli partycji, lub całkowitej pojemności dysku.

Zobacz tabelę partycji. Ponieważ powszechnie partycja kończy się na granicy cylindra, znając dla każdej partycji end = (endC,endH,endS) możemy po prostu przyjąć H = endH+1 and S = endS. (Przypomnij sobie, że sektory liczy się od 1.) A dokładniej wykonywana jest następująca operacja. Jeśli istnieje niepusta partycja, odczytaj tę o największej wartości beginC. Dla tej partycji sprawdź end+1, obliczone przez dodanie start i length przy założeniu, że ta partycja kończy się na granicy sektorów. Jeśli obie wartości się zgadzają lub jeśli endC = 1023 i start+length jest całkowitą wielokrotnością (endH+1)*endS, wtedy możemy założyć, że ta partycją rzeczywiście była wyrównana do granicy cylindra i przyjąć H = endH+1 i S = endS. Jeśli jednak tak nie jest, a to dlatego, że nie ma żadnej partycji, lub dlatego, że partycje mają dziwne rozmiary wtedy spróbuj wykorzystać pojemność dysku M. Algorytm: przyjmij H=M/(62*1024) (zaokrąglone w górę), S = M/(1024*H) (zaokrąglone w gorę), C = M/(H*S) (zaokrąglone w dół). W ten sposób otrzymamy geometrię (C,H,S), prz czym C nie przekroczy 1024, a S 62.

7. Od tłumacza

Wszelkie uwagi na temat tłumaczenia mile widziane. Uwagi merytoryczne prosze kierować do autora tekstu angielskiego, chyba że podejżewasz, że są one wynikiem błędnego tłumaczenia.

Inne dokumenty HOWTO przetłumaczone na język polski znajdziesz tutaj: http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/.

Wersje txt i html lepiej nadajace sie do druku sa tutaj: ftp://www.ippt.gov.pl/pub/Linux/JTZ/.

doc-linux-pl-2002.06.14.orig/html/META-HOWTO.pl.html0100664000175000017500000004043306770264140020273 0ustar covencoven Linux Meta-FAQ

Linux Meta-FAQ

Michael K. Johnson, johnsonm@redhat.com
v4.5, 16 July 1996
Wersja polska Piotr Pogorzelski piotr.pogorzelski@ippt.gov.pl
w 1.0.1, Luty 1997


To jest META-FAQ dla Linuxa. Jest to głównie lista wartościowych źródeł inforacji. Jeśli chcesz się dowiedzieć więcej o Linuxie, lub masz problemy i szukasz pomocy zapoznaj się podanymi dokumentami. Pierwszą wersją tego dokumentu napisał Lars Wirzenius (wirzeniu@cc.helsinki.fi) . Obecnie opiekuje się nim Michael K. Johnson (johnsonm@redhat.com). Wersją polską opiekuje się piotr.pogorzelski@ippt.gov.pl. Napisz do mnie jeśli masz jakiekolwiek pytania na temat tego dokumentu.

1. Wprowadzenie

Co to jest Linux?

Linux jest niezależną implementacją systemu operacyjnego zgodnego ze standardem POSIX, z rozszerzeniami pochodzącymi z systemów SYSV i BSD, który został stworzony od samego początku (wygląda i zachowuje się jak Unix). Nie ma w nim prawnie zastrzeżonego kodu. Linux jest swobodnie rozpowszechniany na warynkach Licencji GNU Public License. Działa na komputerach zgodnych IBM PC o architekturze ISA lub EISA (z różnymi wariantami magistrali lokalnej VLB i PCI) z procesorem 386 lub lepszym.

Dodatkowo, został przeniesiony na komputery typu Amiga i Atari z jednostami MMU. To znaczy proesory 68020 z zewnętrznymi jednostami MMU, 68030, 68040 lub 68060. Wymagana jest również jednostak FPU (koprocesor), cybą, ze ktoś w końcu napisze emulator FPU. Patrz /pub/linux/680x0 w mirrorach tsx-11.mit.edu.

Aktualne versje jądra obslugują również architekturę DEC Alpha i Sun SPARC. Dystrybucja RedHat Commercial Linux jest aktualnie jedyną dystrybucją dla procesorów Alpha. Dla procesora SPARC dostępna jest dystrybucja Red Hat i Debian (lub wkrótce będzie).

Obsługa ARM, PowerPC i MIPS jest w różnych stadiach rozwoju. Czytaj comp.os.linux.announce.

Dokładne inforamcje o wymaganiach sprzętowych znajdziesz w FAQ. Jądro Linuxa zostało napisane przez Linusa Torvaldsa (Linus.Torvalds@.Helsinki.FI) z Finlandii i wielu innych ochotników z całego świata. Większość oprogramowania pracującego pod Linuxem jest darmowa, wiele z nich pochodzi z projektu GNU.

FAQ na temat Linuxa

Zbiór najczęściej zadawanych pytań wraz z odpowiedziami, w którym odpowiedź na większość pytań znajdziesz szybciej niż w sieci. Dostępny w większości archiwów ftp (/pub/linux/docs na tsx-11.mit.edu) i rtfm.mit.edu, podstawowym miejscu przechowywania wszelkich dokumentów FAQ.

Dokumenty HOWTO

Podobne do FAQ, lecz zamiast odpowiedzi na częste problemy wyjaśniają jak wykonać różne, powszechne zadania, np. jak zamówić dystrybucję Linuxa, jak skonfigurować drukarkę, zestawić podstawowe połąćzenie UUCP w celu dystrybucji Usenet News, itp. Zobacz sunsite.icm.edu.pl /pub/Linux/sunsite/docs/HOWTO, znajdziesz tam pełen zestaw najnowszych wersji wszystkich dokumentów HOWTO. Inne miejsca z aktualnymi kopiami to susnite.icm.edu.pl ftp.cc.gatech.edu i tsx-11.mit.edu.

Dodatkowo, istnieje wiele którkich, dowolnie sormatowanych dokumentów nazwanych mini-HOWTO. Opisują bardzo specyficzne tematy, np. co to jest BogoMIPS lub jak używać Color-ls. Są dostępne w katalogu /pub/Linux/susnite/docs/HOWTO/mini.

Grupy nowinkowe na temat Linuxa

Istnieje kilkanaście grup usenet news na temat Linuxa. W jezyku polskim jest pl.comp.os.linux. Dobrym pomysłem jest też śledzenie grupy comp.os.linux.announce, która jest moderoana przez Larsa Wirzeniusa. Aby umieścić na niej jakąś wiadomość należy ją wysłać do linux-announce@news.ornl.gov. Wszelkie pytania na temat tej grupy należy kierować bezpośrednio do Larsa Wirzeniusa na adres wirzeniu@kruuna.helsinki.fi.

Grupa comp.os.linux.announce jest grupą moderowaną i służy do umieszczania ogłoszeń na temat nowych wersji programów, poprawek, ogłoszeń o różnych wydarzeniach dotyczących Linuxa.

Grupa comp.os.linux.answers jest grupą moderowaną, na którą są przesyłane róznego rodzaju dokumentacje, miedzy innymi Linux FAQ i wszelkie dokumenty HOWTO.

Grupa comp.os.linux.setup jest grupą niemoderowaną przeznaconą do dyskusji spraw związanych z konfiuracją Linuxa.

Grupa comp.os.linux.admin jest grupą niemoderowaną przeznaczoną do dyskusji na temat administrowania Linuxem.

Grupa comp.os.linux.development.system jest grupą niemoderowaną przeznaczoną do dyskusji na temat rozwoju jądra Linuxa. Pytania związane z budową różnych aplikacji jakie mogą być umieszczane w tej grupie muszą dotyczyć wyłącznie współpracy danej aplikacji z jądrem. Wszelkie inne pytania dotyczące budowy aplikacji są zwykle specyficzne dla Unixa i powinny być kierowane do grupy comp.os.unix, chyba że są bardzo specyficzne dla Linuxa, a wtedy należy je kierować do comp.os.linux.apps.

Grupa comp.os.linux.development.apps jest grupą niemoderowaną przeznaczoną do dyskusji na tematy związane z budową aplikacji specyficznych dla Linuxa. Nie jest przeznaczona do poszukiwania rożnego rodzaju aplikacji pod linuxa, ani nie jest miejscem na dyskusję jakie aplikacje powinny się pojawić.

Grupa comp.os.linux.hardware służy do dyskusji na temat sprzetu, lecz pytania muszą dotyczyć Linuxa.

Grupa comp.os.linux.networking służy do dyskusji problemów związanych z rozwojem obsługi i konfiguracją sieci.

Grupa comp.os.linux.x służy do dyskusji na temat problemów korzystania z X Window System specyficznych dla Linuxa.

Grupa comp.os.linux.misc jest grupą niemoderowaną, gdzie można dyskutować na inne tematy, które nie pasują do wymieniownych wcześniej grup, a które dotyczą Linuxa.

Zasadniczo nie należy wysyłać atykułu do kilku grup jednocześnie (crosssposting). Wyjątkiem jest okazjonalne wysyłanie wiadomości do grupy niemoderowanej i comp.os.linux.announce. Ideą podziału comp.os.linux. na tak wiele grup było zmiejszenie ruchu w każdej z nich. Ci, którzy się temu nie podporządkują będą tępieni bez litości...

Inne grupy dyskusjne

Nie zakładaj, że wszystkie twoje pytania są specyficzne dla grup poświęconych Linuxowi. Jeśli twoje pytanie tak na prawdę dotyczy programowania w szelu pod unixem lub klonem unixa, to zadaj pytanie w comp.os.unix.shell. Dotyczy Emacsa? Pytaj w gnu.emacs.help. Również jeśli nie znasz innej grupy gdzie mógłbyś zadać to pytanie, lecz wydaje ci się, że powinna istnieć, spytaj grzecznie w swoim liscie czy ktoś nie zna grypy, która bylaby lepsza do zadania tego pytania. Użytkownik Linuxa powinie pamiętać co najmniej o takich grupach, jak comp.unix.{questions,shell,programming,bsd,admin} i comp.windows.x.i386unix .

World-Wide Web

Greg Hankins, gregh@cc.gatech.edu, opiekuje się stroną domową WWW dla projektu Linuxa. URL: http://sunsite.unc.edu/mdw/linux.html

Polish HOWTO

Zanim zaczely powstawać tłumaczenia dokumentów angielskich, powstał http://sunsite.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/Polish-HOWTO. Chyba pierwszy dokument o Linuxie w Polsce i po polsku.

HOWTO po polsku

Na początku 1997 roku zawiązała się grupa osób w celu przetłumaczenia dokumentów HOWTO na język polski. Zobacz http://www.jtz.org.pl/

Kontakt z ludźmi zajmującymi się tłumaczeniem HOWTO na polski to ogólnie dostępna lista jtz@ippt.gov.pl. Można na nią wysłać list nie będąc na tę listę zapisanym, lecz pamiętaj, że jest ona przeznaczona przede wszystkim dla osób pracujących nad tłumaczeniami. Pamiętaj o tym wysyłając tam list.

Lokalizacja programów

Już od ponad roku inna grupa ludzi pracuje nad tłuamczeniem komunikatów programów GNU. Dzieki temu już niedługo twój Linux będzie mówił do ciebie po polsku. Więcej informacji znajdziesz pod adresem ftp://ftp.torun.pdi.net/pub/nls.

Linux Plus

Wreszcie pojawiło sie pierwsze czasopismo o Linuxie po polsku. Pierwszy numer został wydany w styczniu 1997. Dp czasopisma dołączony jest CD-ROM. Cena detaliczna 20 zł. Więcej inforamcji na ten temat w redakcji linuxplus@software.com.pl, tel/fax (22) 6251308, adres LinuxPlus, Puszczyka 20, 02-784, Warszawa

Linux Journal

Czasopismo Linux Jouranl powstało ponad dwa lata temu. Znajdziesz tam artykuły odpowiednie niemal dla każdego poziomu znajomości Linuxa i chce być pomocne dla wszystkich użytkowników Linuxa. Subsktypcja kosztuje $22 w USA, $27 w kanadzie i Meksyku, i $32 dla reszty świata, płatne w doralrach amerykańskich. Prośby o subskrybcje proszę wysyłać pod adres subs@ssc.com lub faxem do USA 1-206-782-7191, lub pocztą na adres Linux Journal, PO Box 85867, Seattle, WA 98145-1867 USA. Jeśli chcesz przesłać numer karty kredytowej pocztą elektroniczną, SSC udostępnia publiczny klucz PGP: finger info@ssc.com.

Katalog oprogramowania

Inforamcję o darmowym oprogramowaniu dostępnym pod Linuxa można znaleźć w ``Katalogu oprogramowania dla Linuxa'' (Linux Software Map, LSM), ktróą można znaleźć na sunsite.icm.edu.pl w /pub/Linux/sunsite/docs/LSM.gz.

Inforamcje o prowadzonych nie-komercyjnych projektach można znaleźć w ``Spisie projektów'' (Projrcts Map), wysyłanym okresowo do comp.os.linux.announce i przechowywanej w sunsite.unc.edu w katalogu /pub/Linux/sunsite/docs/Projects-Map/Projects-Map.gz.

Informacje o produktach komercyjnych znajdują się w ``Spisie oprogramowania komercyjnego dla Linuxa'' wysłanym okazjonalnie do comp.os.linux.announce.

2. Jak zdobyć Linuxa

3. Archiwa FTP Linuxa

Kompletna lista archiwów ftp Linuxa znajduje się w dokumencie Linux INFO-SHEET, który zawsze można znaleźć w tsx-11.mit.edu w katalogu /pub/linux/docs/. dostępne są wersje DVI (INFO-SHEET.dvi) i PostScript (INFO-SHEET.ps). Najważniejsze archiwa przedstawiono poniżej. Archiwum najbliżej ciebie znajdziesz w Linux INFO-SHEET.

textual name             numeric addr    Linux directory
=======================  ==============  ===============
tsx-11.mit.edu           18.86.0.44      /pub/linux
sunsite.unc.edu          152.2.22.81     /pub/Linux
ftp.funet.fi             128.214.248.6   /pub/Linux
ftp.sunsite.icm.edu.pl   148.81.209.3    /pub/Linux

Pierwsze trzy, są to główne archiwa linuxa, gdzie umieszcane jest najwięcej nowych programów. Istnieje wiele mirrorów, korzystaj z najbliższego (w sensie polączeń sieciowych).

3.1 Linux w BBS-ach

Okazjonanie ktoś przesyła listę BBSów w których jest dostępny Linux. Możesz z nich korzystać jeśli nie masz dostępu do FTP. Lista ta jest dostępna w ftp.cdrom.com w pliku /pub/linux/docs/bbs.list. Jesli nie masz dostępu do ftp możesz ją otrzymać za pomocą programu ftpmail (opisanego później w tym dokumencie) lub poproś przyjaciela, który ma distęp do internetu.

3.2 Linux na nośnikach fizycznych

Linux jest dystrybuwany przez wielu sprzedawców na dyskietkach, krązkach CD i taśmach. Przeczytaj Distribution HOWTO wysyłane regularnie do comp.os.linux.announce i dostępne w susnite.unc.edu jako /pub/Linux/docs/HOWTO/distribution-HOWTO.

W Polsce Linux jest dostepny głównie przez FTP. Wydawnictwo software wydało krążek z dystrybucją REdHat 3.0.3 jesienią 1996. Wraz z pierwszym numerem LinuxPlus dostępna była płytka CD z dystrybucją RedHat 4.0, drugi nume zawierał Debiana 1.2. Wraz z pojawieniem się LinuxPlus powstała możliwść zdobycia w miarę aktualnej dystrybucji CD, bez konieczności kupowania krązków za granicą lub w firmach specjalizujących się w ich sprowadzaniu.

3.3 AFS

Linux jest dostępny przez AFS przez zamontowanie wolumenu project.linux z sipb.mit.edu.

3.4 Uslugi ftpmail

Sunsite oferuje usługę ftp-mail --- mail ftpmail@sunsite.unc.edu.

4. Dystrybucje Linuxa

Linux jest rozpowszechniany przez jego autora jako jądro. Inni zgromadzili wokół niego oprogramowanie i stworzyli tzw. dystrybucje, z których powstała ogroman większość instalacji Linuxa. Lączą one jądro udostępnione przez autora z dodtkowym oprogramowaniem budując w ten sposób kompletny system. Wiekszośc dystrybucji zawiera zrówno oprogramowanie systemowe, jak również aplikacje.

Istnieje kilkanaście dystrybucji Linuxa dostępnych w różnych miejscach. Sunsite gromadzi niemal wszystkie z nich i udostępnia w katalogu /pub/Linux/distributions. Najczęsciej polecane, swobodnie dostępne to Red Hat, Debian i Slackware. Wszystkie są dostępne za darmo przez internet, jak również za opłata na krązkach CD.

Istnieją również inne dystrybucje Linuxa. Większość komercyjnych dystrybucji Linuxa ogłasza sięw Linux Journal.

5. Listy dyskusyjne dotyczące linuxa

Najpopularniejsza i jedyna w polsce linux@sprocket.pwr.wroc.pl złączona z grupą usenet news pl.comp.os.linux stanowi najlepsze zródło inforamcji o Linuxie w Polsce.

Inne wykorzystywane przede wszystkim przez ludzi pracujących nad rozwojem oprogramowania lub dotyczące dyskusji nie dostępnych publicznie wersji testowych. Adresy znajdziesz w Linux FAQ. Wyślij list na adres majordomo@vger.rutgers.edu z jednym słowem help w treści listu, a otrzymasz list wyjaśniający jak zapisać się na dostepne tam grupy.

Zachowaj te odpowiedz, gdzyż znajdziesz tam informacje jak się z takich grup wypisać. Jesli nie zapoznasz się z inforamacjami w tym liście i bedziesz wysyłał do tych grup z prośbą o wypisanie cię z nich zostaniesz sponiewierany za marnowanie łączy i cudzych pieniędzy.

6. Dokumentacja różnego rodzaju oprogramowania

Wiele programów jest dostępnych z pewnego rodzaju dokumentacją, często wpliku o nazwie README lub podobnej. BARDZO dobrym pomysłem jest uważne przestudiowanie takich plików. Nudno jest oglądać (i odpowiadać) na pytania, na które odpowiedź można znaleźć w dokumentacji.

7. Więcej dokumentacji

Projekt dokumentacji dla Linuxa (Linux Dokumentation Project, LDP) opracował mnóstwo dokumentacji. W tej chili jest dostępne ponad 1600 stron dokumentacji w postaci książek udostępnionych do darmowego kopiowania i rozpowszechniania. Powstało również wiele stron podręcznika (man pages) i powstaje ich coraz więcej. Zobacz sunsite.icm.edu.pl:/pub/Linux/sunsite/docs/LDP, znajdziesz tam dokumenty stworzone przez LDP. LDP dostarcza również opisane wcześniej dokumety HOWTO.

8. Trzymanie ręki na pulsie

Ważne nowe wersje oprogramowania są zwykle ogłaszane w grupie newsowej comp.os.linux.announce. finger torvalds@klaava.helsinki.fi lub finger @linux.cs.helsinki.fi aby otrzymać informacje o najnowszej wersji jądra.

9. Ten dokument

Ostania wersja tego dokumentu powinna być zawsze dostępna pod adresem http://www.jtz.org.pl/Html/META-HOWTO.pl.html, a najnowszą werję angielską na podstawie której powstał ten dokument znajdziesz pod adresem http://sunsite.unc.edu/mdw/linux.html

10. Prawa autorskie

Znaki firmowe należą do ich właścicieli. Nie gwarantujemy satysfakcji. Żadnych gwarancji związanych z tym dokumentem. Nie jest ważny tam, gdzie jest to zabronione

Zawartość teg odokuemntu jest własnością publiczną (public domain), lecz jeśli bedziesz go cytował, grzeczność nakazuje wspomnieć o autorach.

11. Od tłumacza

Prawa autorskie tłumaczenia należą do (c) 1997 piotr.pogorzelski@ippt.gov.pl. Możesz robić z nim co zechcesz pod warunkiem, że zachowasz informacje o prawach autorskich.

Zmiany w stosunku do oryginału to zmiana odwołań sunsite.unc.edu do jego kopii na sunsite.icm.edu.pl, rozdziały o polskich dokumentach i tłumaczeniach, oraz tekst o Linux+.

doc-linux-pl-2002.06.14.orig/html/MILO-HOWTO.pl.html0100664000175000017500000015323306770264140020310 0ustar covencoven MILO HOWTO

MILO HOWTO

Autor: David A. Rusling david.rusling@reo.mts.dec.com
v0.84, 6 Grudnia 1996
Wersja polska: Leszek Urbański tygrys@fidonet.org.pl
v1.0, 24 Lipca 1998


Ten dokument opisuje Miniloader (Miniładowacz), program dla komputerów opartych na procesorze Alpha, który może być używany do inicjalizacji maszyny i ładowania Linuxa. Alpha Linux Miniloader (jest to jego pełna nazwa) jest też znany jako MILO. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp://gatekeeper.dec.com/pub/Digital/Linux-Alpha/Miniloader/docs.

1. Wprowadzenie

Ten dokument opisuje Miniładowacz (Miniloader) dla Linuxa na Alphę AXP (MILO). To firmware jest używane do inicjalizacji systemów Alpha AXP, załadowania oraz startowania Linuxa i w końcu do zapewnienia kodu PAL (PALcode) dla Linuxa.

1.1 Prawa autorskie

Prawa autorskie Alpha Miniloader (MILO) HOWTO: Copyright (C) 1995, 1996 David A. Rusling.

Prawa autorskie. Jak wszystkie Linuxowe dokumenty HOWTO, może być powielane i rozpowszechniane w całości lub w części, za pomocą każdego środka przekazu, fizycznego lub elektronicznego, jeżeli uwaga o prawach autorskich została zachowana na wszystkich kopiach. Komercyjna redystrybucja jest dozwolona i zalecana; jednakże autor chciałby być powiadomiony o takich dystrybucjach. Możesz też przetłumaczyć to HOWTO na dowolny język, jeżeli zostawisz wypowiedź o prawach autorskich oraz oświadczenie niezmienione, oraz dodasz notatkę o tłumaczu.

Oświadczenie. Próbowałem umieścić tu najpoprawniejsze i najnowsze informacje, które są mi dostępne, nie mogę jednak zagwarantować, że ich użycie nie spowoduje utraty danych lub sprzętu. NIE ZAPEWNIAM ŻADNEJ GWARANCJI dotyczącej informacji w tym HOWTO, nie mogę być więc odpowiedzialny za jakiekolwiek skutki użycia danych z niego.

1.2 Nowe wersje tego dokumentu

Najświeższa wersja tego dokumentu znajduje się pod adresem ftp://gatekeeper.dec.com/pub/Digital/Linux-Alpha/Miniloader/docs, a David Mosberger-Tang był uprzejmy umieścić go w formacie HTML na jego znakomitej stronie o Linux-Alpha http://www.azstarnet.com/~axplinux/.

2. Co to jest MILO?

Na systemach PC opartych na procesorach Intel, firmware zwane BIOSem uruchamia komputer i ładuje obraz (image) do uruchomienia z bloku startowego systemu plików DOSu. Jest to mniej więcej to samo, co wykonuje MILO na systemach Alpha, jednakże istnieje kilka interesujących różnic pomiędzy BIOSem a MILO, jedną z nich jest używanie przez MILO niezmodyfikowanych standardowych sterowników urządzeń Linuxa. MILO jest firmware'em, inaczej niż LILO, który jest ładowany przez BIOS. Główne funkcjonalne części MILO to:

  1. PALcode,
  2. Kod uruchamiania pamięci (buduje tablice stronicowania i włącza adresowanie wirtualne),
  3. Kod grafiki (emulacja BIOSu i TGA (21030)),
  4. Kod jądra Linuxa. Na niego składa się prawdziwy kod (np. obsługa przerwań) i pseudo-jądro,
  5. Sterowniki urządzeń blokowych Linuxa (np. sterownik stacji dysków),
  6. Obsługa systemu plików (ext2, MS-DOS i ISO9660),
  7. Kod interfejsu użytkownika (MILO)
  8. Kod interfejsu jądra (uruchamia HWRPB i mapę pamięci dla Linuxa),
  9. Kod NVRAM do zarządzania zmiennymi środowiskowymi

Dalsze akapity dokładnie opisują funkcjonalne części MILO.

PALcode jest cienką warstwą oprogramowania dostosowującą procesor do konkretnego systemu operacyjnego. Działa w specjalnym trybie (PALmode), który posiada kilka ograniczeń, ale używa standardowego zestawu instrukcji Alphy i tylko pięciu dodatkowych instrukcji. W ten sposób, na procesorze Alpha mogą być uruchamiane systemy tak różne, jak np. Windows NT, OpenVMS, Digital UNIX i oczywiście Linux. PALcode, którego używa MILO (i przez to sam Linux) jest, jak reszta MILO, darmowa. Pochodzi z przykładu ewaluacyjnych płyt głównych (Evaluation Boards, EB) dla Digital UNIXa. Różnice pomiędzy kodami PAL wynikają z różnic w sposobach obsługi przerwań w procesorach Alpha (płyty główne do 21066 mają inną mapę I/O niż systemy 21064+2107x (2107x to APECS, chipset do 21064 - przyp. tłum.)), oraz z liczby dostępnych płyt głównych.

Żeby MILO działał poprawnie, musi znać ilość dostępnej pamięci i miejsce, w którym Linux będzie działał, musi też być w stanie przydzielić tymczasową pamięć dla sterowników urządzeń Linuxa. Kod utrzymuje mapę pamięci, która posiada rekordy dla permanentnie i tymczasowo przydzielonych stron. W czasie uruchamiania MILO dekompresuje się w poprawne miejsce pamięci fizycznej. Kiedy przekazuje kontrolę jądru Linuxa, zarezerwowywuje pamięć dla skompresowanej wersji samego siebie, kodu PAL (który jest potrzebny jądru) i trochę struktur danych. To zostawia większość pamięci w systemie dla samego Linuxa.

Ostatnia część kodu pamięci to ustawienie i włączenie adresowania wirtualnego w celu zapewnienia poprawnego miejsca w wirtualnej pamięci dla struktur danych, które Linux spodziewa się tam zobaczyć.

MILO zawiera kod grafiki, który inicjalizuje i używa urządzenia graficznego dla systemu. Wykryje i będzie używać urządzenie VGA, jeśli takie istnieje, jeżeli nie, będzie próbował użyć urządzenia TGA (21030). Gdy i to się nie powiedzie, przyjmie, że nie istnieje urządzenie graficzne (tylko np. terminale szeregowe - przyp. tłum.). Emulacja BIOSu, którą posiadają standardowe, skompilowane obrazy MILO, to emulacja Digitala, która obsługuje większość, jeżeli nie wszystkie dostępne standardowe urządzenia graficzne.

Sterowniki urządzeń Linuxa ,,żyją'' wewnątrz jądra i spodziewają się od niego konkretnych usług. Niektóre z nich są zapewniane bezpośrednio przez kod Linuxa, np. obsługa przerwań, a inne działają dzięki specjalnym procedurom wyglądającym dla sterowników jak procedury jądra.

Najsilniejsza cecha MILO, to możliwość osadzenia w nim niezmienionych sterowników urządzeń Linuxa. Daje to potencjał obsługi każdego urządzenia, które obsługuje Linux. MILO zawiera wszystkie urządzenia blokowe wkompilowane w jadro, które zostaje przy nim zbudowane, a także dużo kodu urządzeń (np. ll_rw_blk()).

MILO ładuje jądro Linuxa z prawdziwych systemów plików, a nie z bloków startowych i innych dziwnych miejsc. Potrafi czytać systemy plików MSDOS, EXT2 i ISO9660. Pliki spakowane gzipem są obsługiwane i rekomendowane, zwłaszcza jeżeli ładujesz [system] z dyskietki, co jest dosyć wolne. MILO rozpoznaje je po rozszerzeniu .gz.

W MILO zawiera prosty sterownik klawiatury, który razem z równie prostym sterownikiem grafiki pozwala posiadać mu spartański interfejs użytkownika. Interfejs ten pozwala poznać systemy plików na skonfigurowanych urządzeniach, ładować Linuxa, uruchamiać programy do uaktualniania pamięci flash, oraz ustawiać zmienne środowiskowe kontrolujące ładowanie systemu. Tak jak w LILO, możesz przekazywać parametry do jądra.

MILO musi powiedzieć jądru Linuxa na jakim działa systemie, ile pamięci posiada i ile z tej pamięci jest wolne. Robi to używając struktury danych HWRPB (blok parametrów restartowania sprzętu) i skojarzonych z nią opisów części pamięci. Są one umiejscawiane w odpowiednim miejscu pamięci wirtualnej zaraz przed przekazaniem kontroli jądru Linuxa.

3. Standardowe, pre-kompilowane obrazy MILO

Jeżeli będziesz chciał uruchamiać Linuxa na standardowych płytach głównych Alphy, możesz użyć pre-kompilowanych, ,,standardowych'' obrazów (images) MILO. (notka od tłumacza: radzę zabootować Alphę ze standardowych obrazów, a potem zbudować własny, gdy Linux będzie już działał) Obrazy te (razem ze źródłami i innymi ciekawymi rzeczami) znajdują się na ftp://gatekeeper.dec.com/pub/Digital/Linux-Alpha/Miniloader

Podkatalog images zawiera po jednym podkatalogu na każdy system (np. AlphaPC64), a obrazy MILO są nazywane w następujący sposób:

  1. MILO - wykonywalny obraz MILO, może on być ładowany na wiele sposobów,
  2. fmu.gz - Program zarządzania pamięcią flash,
  3. MILO.dd - Obraz dla dyskietki startowej. Powinien być zapisany programem rawrite.exe lub dd pod Linuxem.

Katalog test-images zawiera, tak jak images po jednym katalogu na standardowy system. Obrazy znajdujące się w tym katalogu są raczej eksperymentalne, ale zawierają najnowsze opcje.

4. Kompilacja MILO

(Uwaga: pamiętaj, że nie możesz zbudować MILO i jądra dla Alphy na Intel'u! Musisz dysponować drugą Alphą, albo zbudować jądro po uruchomieniu Linuxa ze standardowych obrazów MILO. Na Intelu jądro nawet się nie zacznie kompilować - spróbuj zbudować jądro na Alphę na pececie - w pliku Makefile zamień ARCH=i386 na ARCH=alpha... - przyp. tłum.)

MILO kompiluje się oddzielnie, nie razem z jądrem. Ponieważ MILO potrzebuje części jądra do poprawnego funkcjonowania (np. obsługi przerwań), musisz najpierw skonfigurować i skompilować jądro, odpowiadające MILO, który chcesz skompilować. Zazwyczaj znaczy to, że powinieneś kompilować jądro z tą samą wersją co MILO. A więc MILO-2.0.25.tar.gz będzie kompilować się z linux-2.0.25.tar.gz. MILO może skompilować się z nowszą wersją jądra, ale nie musi. Dodatkowo teraz, kiedy biblioteki dzielone ELF są w pełni obsługiwane, istnieją dwie wersje źródeł MILO. Żeby zbudować je w systemie ELF, musisz najpierw rozpakować standardowe źródła, a potem nałożyć łatę (patch) ELF na te źródła (musi mieć ten sam numer wersji). Przyjmę teraz, że źródła jądra oraz skompilowane obiekty (.o) znajdują się w katalogu /usr/src/linux, a jądro zostało w pełni skompilowane komendą make boot. (pamiętaj o ustawieniu ARCH=alpha w pliku Makefile jądra PRZED wydaniem polecenia make (menu)(x)config!!! - przyp. tłum.)

Żeby skompilować MILO, zmień katalog na zawierający źródła MILO i przywołaj make komendą:

$ make KSRC=/usr/src/linux config

Tak jak podczas kompilacji jądra, zadane zostanie kilka pytań.

Echo output to the serial port (MINI_SERIAL_ECHO) [y]

Przesyłać wyjście do portu szeregowego (MINI_SERIAL_ECHO) [y]

Dobrym pomysłem jest włączenie przesyłania wiadomości printk jądra do /dev/ttyS0, jeżeli można to zrobić. Jeżeli możesz (i chcesz), napisz ,,y'', jeżeli nie, ,,n''. Wszystkie standardowe, pre-kompilowane obrazy MILO posiadają wejście/wyjście na port szeregowy COM1.

Use Digital's BIOS emulation code (not free) (MINI_DIGITAL_BIOS_EMU) [y]

Użyć kodu emulacji BIOSu Digitala (nie jest darmowy) (MINI_DIGITAL_BIOS_EMU) [y]

Ten kod jest załączony jako biblioteka, która jest darmowa dopóki używa się jej w systemie opartym na procesorze Alpha. Źrodła nie są dostępne. Jeżeli odpowiesz n, zbudowana zostanie alternatywna darmowa emulacja BIOSu. Jej źródła są dołączone do MILO. Pamiętaj, że obecnie nie możesz wybrać emulacji Digitala w systemach ELF (biblioteka nie jest jeszcze gotowa), musisz więc odpowiedzieć ,,nie'' na to pytanie.

Build PALcode from sources (Warning this is dangerous) (MINI_BUILD_PALCODE_FROM_SOURCES) [n]

Zbudować PALcode ze źródeł (Uwaga to jest niebezpieczne) (MINI_BUILD_PALCODE_FROM_SOURCES) [n]

Powinieneś zrobić to tylko jeżeli modyfikowałeś źródła kodu PAL, jeżeli nie, użyj standardowego, pre-kompilowanego kodu PAL dołączonego do MILO.

Teraz jesteś gotowy do zbudowania obrazu MILO:

$ make KSRC=/usr/src/linux

Kiedy kompilacja zostanie zakończona, obraz MILO znajduje się w pliku o nazwie milo. Będzie się tam też znajdować wiele obrazów o nazwach milo.*, które powinny być zignorowane.

5. Ładowanie MILO

Najlepiej obsługiwany sposób ładowania MILO to ładowanie z firmware'u Windows NT ARC, ponieważ większość systemów zawiera tą metodę. Jednakże istnieje wiele różnych sposobów ładowania MILO. Może on być załadowany z:

5.1 Ładowanie MILO z firmware'u Windows NT ARC

Większość, jeżeli nie wszystkie systemy oparte na Alfie AXP posiadają Windows NT ARC firmware i jest to preferowana metoda inicjalizowania MILO i Linuxa. Kiedy firmware Windows NT działa i posiadasz poprawny dla twojego systemu obraz MILO, metoda ta jest bardzo łatwa do używania.

Windows NT ARC firmware jest środowiskiem, w którym mogą działać programy, wykonując odwołania do firmware'u w celu wykonywania różnych akcji. Windows NT OSloader jest programem, który spełnia tą funkcję. Linload.exe jest znacznie prostszym programem, który jedynie wczytuje i uruchamia MILO. Ładuje on poprawny plik z obrazem do pamięci pod adres 0x00000000 i wtedy wykonuje odwołanie PAL ,,swap-PAL'' (zamień PAL) do niego. MILO, tak jak Linux, używa innego kodu PAL niż Windows NT i dlatego musi przeprowadzić zamianę. Następnie MILO przenosi się do 0x200000 i kontynuuje resetowanie kodu PAL.

Zanim dodasz opcję ładowania Linuxa, będziesz musiał skopiować linload.exe oraz MILO, którego chcesz załadować w miejsce, z którego Windows NT ARC będzie mógł go odczytać. W poniższym przykładzie przyjmuję, że ładujesz MILO z dyskietki w formacie DOS'a:

  1. W menu ładowania (boot menu) wybierz ,,Supplementary menu...'' (menu dodatkowe)
  2. W menu ,,Supplementary menu'' wybierz opcję ,,Set up the system...'' (ustaw system)
  3. W Setup menu wybierz ,,Manage boot selection menu...'' (menu zarządzania opcjami ładowania)
  4. W ,,Boot selections menu'' wybierz ,,Add a boot selection'' (dodaj opcję ładowania)
  5. Wybierz ,,Floppy Disk 0''
  6. Wprowadź ,,linload.exe'' jako katalog i nazwę pliku ładowacza systemu (osloader)
  7. Odpowiedz ,,tak'' na pytanie czy system operacyjny znajduje się na tej samej partycji co ładowacz systemu
  8. Wprowadź ,,\'' jako katalog główny systemu operacyjnego
  9. Zazwyczaj wpisuję ,,Linux'' jako nazwę tej opcji ładowania
  10. Odpowiedz ,,nie'' na pytanie o inicjalizację debuggera podczas ładowania
  11. Powinieneś wrócić do ,,Boot selections menu'', wybierz w nim opcję ,,Change a boot selection option'', a w niej opcję, którą właśnie stworzyłeś
  12. Użyj strzałki w dół, aby dostać się do rekordu ,,OSLOADFILENAME'', wpisz w nim nazwę obrazu MILO, którego chcesz używać, np. ,,noname.arc, następnie naciśnij return (enter).
  13. Nasiśnij ESC żeby wrócić do ,,Boot selections menu''
  14. Wybierz ,,Setup Menu'' (lub naciśnij jeszcze raz ESC), a w nim ,,Supplementary menu'' i ,,Save Changes''
  15. ESC cofnie cię do ,,Boot menu'', możesz już spróbować inicjalizować MILO. Jeżeli nie chcesz, żeby Linux był pierwszą opcją ładowania, możesz zmienić kolejność opcji w ,,Boot selections menu''.

Na końcu tych czynności powinieneś otrzymać opcję ładowania wyglądającą podobnie do tej:

LOADIDENTIFIER=Linux
SYSTEMPARTITION=multi(0)disk(0)fdisk(0)
OSLOADER=multi(0)disk(0)fdisk(0)\linload.exe    
OSLOADPARTITION=multi(0)disk(0)fdisk(0)     
OSLOADFILENAME=\noname.arc     
OSLOADOPTIONS=

Możesz teraz uruchomić MILO (i Linuxa). Możesz załadować linload.exe i MILO bezpośrednio z systemu plików, który rozumie Windows NT, takiego jak NTFS lub DOS na twardym dysku.

Linia OSLOADOPTIONS zawiera opcje, które zostaną przekazane do MILO. Jeżeli chcesz załadować Linuxa bezpośrednio z Windows NT ARC nie pauzując przy MILO, powinieneś wpisać następującą komendę w OSLOADOPTIONS:

boot sda2:vmlinux.gz root=/dev/sda2

Przeczytaj rozdział Interfejs użytkowwnika MILO, żeby uzyskać więcej informacji o komendach MILO.

Inna (ale jest to obejście :( ) metoda ładowania MILO przez WNT ARC, to umieszczenie MILO na dyskietce MS-DOS, nazwanie go fwupdate.exe i uruchomienie opcji ,,Upgrade Firmware''.

5.2 Ładowanie MILO z ,,Evaluation Board Debug Monitor''

Płyty ewaluacyjne (i często ich klony) posiadają obsługę Monitora płyt ewaluacyjnych (Alpha Evaluation Board Debug Monitor). Przeczytaj dokumentację twojego systemu przed rozpatrywaniem użycia tej metody ładowania MILO. Następujące systemy napewno obsługują Monitor:

Zanim użyjesz tej metody, pamiętaj, że wczesne wersje Monitora Ewaluacyjnego nie posiadały sterowników grafiki i klawiatury, musisz więc podłączyć inny komputer przez port szeregowy, żebyś mógł używać Monitora. Jego interfejs jest bardzo prosty, a komenda help pokazuje mnóstwo dostępnych komend. Najbardziej nas interesujące zawierają słowo boot albo load.

Monitor Płyt Ewaluacyjnych może załadować obraz przez sieć (netboot) albo z dyskietki (flboot). W obu przypadkach, ustaw adres ładowania na 0x200000 (> bootadr 200000) przed uruchomieniem obrazu.

Jeżeli obraz znajduje się na dyskietce (zauważ że obsługiwane są tylko dyskietki w formacie DOS), będziesz musiał wpisać następującą komendę:

 AlphaPC64> flboot <nazwa-obrazu-MILO> 

5.3 Ładowanie MILO z ,,bezpiecznej dyskietki startowej''

Tylko AXPPCI33 napewno obsługuje ,,bezpieczną dyskietkę startową'' (Sekcja NoName).

Jeżeli nie używasz standardowego, pre-kompilowanego obrazu .dd MILO, będziesz musiał zbudować dyskietkę startową SRM. Kiedy już skompilowałeś MILO, musisz wykonać następujące komendy w Digital Unix'ie:

fddisk -fmt /dev/rfd0a
cat mboot bootm > /dev/rfd0a
disklabel -rw rfd0a 'rx23' mboot bootm

Lub w Linuxie:

cat mboot bootm > /dev/fd0

Jeżeli masz standardowy obraz MILO (powiedzmy MILO.dd), możesz stworzyć dyskietkę startową, używając następującej komendy:

dd if=MILO.dd of=/dev/fd0

(radzę jednak zapisywać programem rawrite.exe spod DOS'a - ale poeksperymentować z dd można - przyp. tłum.)

5.4 Ładowanie MILO z pamięci Flash

Istnieje kilka systemów, gdzie MILO może być wypalone we flash'u i ładowane bezpośrednio (a nie przez firmware Windows NT ARC):

5.5 Ładowanie MILO z konsoli SRM

Konsola SRM (skrót od System Reference Manual, podręcznik systemowy (? - przyp. tygrys)) nie wie nic o systemach plików bądź partycjach dyskowych, oczekuje po prostu na zajęcie odpowiedniego przedziału kolejnych sektorów dysku przez drugorzędny ładowacz, zaczynając od danego offsetu. Informacja opisująca drugorzędny ładowacz (jego rozmiar i offset) znajduje się w pierwszym 512-bajtowym bloku. Żeby załadować MILO z konsoli SRM, musisz wygenerować taką strukturę w urządzeniu, do którego SRM ma dostęp (np. dyskietka). Do tego służy mboot i bootm, mboot jest pierwszym, opisującym blokiem, a bootm jest obrazem MILO zaokrąglonym do 512-bajtowego bloku.

Żeby załadować MILO z urządzenia zawierającego blok startowy, zbuduj mboot oraz bootm i nagraj je na urządzenie startowe następującą komendą:

$ cat mboot bootm > /dev/fd0

Możesz też ściągnąć odpowiedni plik MILO.dd i nagrać go używając RAWRITE.EXE lub dd.

Kiedy już to zrobiłeś, możesz uruchomić konsolę SRM i użyć jednej z jej wielu komend do załadowania MILO. Na przykład, jeżeli chcesz załadować MILO z dyskietki startowej, powinieneś użyć następującej komendy:

>>>boot dva0
(boot dva0.0.0.0.1 -flags 0)
block 0 of dva0.0.0.0.1 is a valid boot block
reading 621 blocks from dva0.0.0.0.1
bootstrap code read in
base = 112000, image_start = 0, image_bytes = 4da00
initializing HWRPB at 2000
initializing page table at 10400
initializing machine state
setting afinity to the primary CPU
jumping to bootstrap code
MILO Stub: V1.1
Unzipping MILO into position
Allocating memory for unzip
####...

Następujące systemy napewno posiadają konsolę SRM:

5.6 Informacje o płytach głównych

AXPPCI33 (NoName)

Płyta NoName może ładować MILO z firmware'u Windows NT ARC (Sekcja ładowanie MILO z Windows NT ARC), z konsoli SRM (Sekcja Ładowanie MILO z konsoli SRM), oraz z dyskietki startowej (Sekcja Ładowanie z dyskietki startowej). Można też, używając programu zarządzającego pamięcią flash, dostarczanego z MILO, możesz po załadowaniu Miniloadera wypalić jego obraz w taką pamięć (Sekcja korzystanie z programu zarządzającego pamięcią flash). Jednakże musisz pamiętać, że kiedy to zrobisz, stracisz poprzedni obraz tam zapisany, ponieważ płyta posiada miejsce tylko na jeden.

Sposób, w jaki NoName uruchamia system jest kontrolowany zestawem zworek na płycie, J29 i J28. Wyglądają one następująco:

                 4
       J29   2 x x x 6
             1 x x x 5

       J28   2 x x x 6
             1 x x x 5
                 3

Dwie opcje, które nas interesują, to piny 1-3 zworki J28, które ładują konsolę/ładowacz z pamięci flash, oraz piny 1-3 zworki J29, które uruchamiają konsolę lub ładowacz z dyskietki startowej. Pierwsze załadowanie MILO musi być przeprowadzone przy użyciu drugiej opcji.

Kiedy już wybierzesz ładowanie systemu z dyskietki ustawiając odpowiednią zworkę, włóż dyskietkę startową SRM zawierającą MILO do stacji i zresetuj komputer. Za parę sekund (po zgaśnięciu lampki stacji dysków) ekran powinien zrobić się biały, a MILO będzie mówił ci co się dzieje.

Jeżeli interesują cię tematy techniczne, wiedz, że NoName ładuje obrazy z dyskietki pod fizyczny adres 0x104000, a obrazy z pamięci flash pod adres 0x100000. Z tego powodu PALcode MILO zaaczyna się na 0x200000. Kiedy jest już załadowany, przenosi się w poprawne miejsce (zobacz relocate.S).

AlphaPC64 (Cabriolet)

AlphaPC64 może ładować MILO z firmware'u Windows NT ARC (Sekcja Ładowanie z Windows NT ARC), konsoli SRM (Sekcja Ładowanie MILO z konsoli SRM), oraz z Monitora Ewaluacyjnego (Sekcja Ładowanie z Monitora Płyt Ewaluacyjnych). Wszystkie te funkcję znajdują się w pamieci flash, w której znajduje się jeszcze miejsce na dodanie MILO, w celu ładowania go bezpośrednio. Można użyć programu zarządzania pamięcią flash, uruchamianego z MILO, a więc kiedy jest on uruchomiony, może być wczytany do pamięci nieulotnej (Sekcja używanie programu zarządzania pamięcią flash). System obsługuje zmienne środowiskowe MILO.

Można wybrać opcję ładowania (i MILO, kiedy znajduje się w pamięci flash) za pomocą kombinacji zworek i opcji inicjalizacji, która jest zapisywana w NVRAM zegara TOY.

Zworka służąca do tego celu to J2, bity SP o numerach 6 i 7 mają następujące znaczenie:

A więc, jeżeli SP 7 jest wyłączony, ładowany będzie Monitor Płyt Ewaluacyjnych, ponieważ jest zawsze pierwszą opcją w pamięci flash. Kiedy SP 7 jest włączony, wybrany zostanie obraz z zegara TOY. Zarówno Monitor, firmware Windows NT ARC, jak i MILO obsługują wybór opcji inicjalizacyjnej, ale musisz być bardzo ostrożny używając tej metody. Nie możesz na przykład ustawić opcji inicjalizacyjnej tak, żeby następnym razem system ładował MILO, kiedy używasz Windows NT ARC, ponieważ pozwala on tylko na ustawienie Monitora Ewaluacyjnego lub NT ARC jako opcji ładowania.

W celu zapisania MILO w pamięci flash za pomocą Monitora Płyt Ewaluacyjnych, będziesz potrzebował obrazu przystosowanego do tej metody ładowania. Procedura kompilacji tworzy plik MILO.rom, ale równie dobrze możesz stworzyć taki plik jedną z komend Monitora:

> makerom -v -i7 -l200000 MILO -o mini.flash

(napisz makerom, żeby dowiedzieć się, co znaczą poszczególne argumenty, powiem tylko, że 7 to identyfikator obrazu używany przez SROM, a -l200000 ustawia adres ładowania obrazu na 0x200000).

Załaduj ten obraz do pamięci (komendą flload, netload itd. (NIE fl/net boot tylko load - przyp. tłum.)) pod adres 0x200000 i wypal we flash'u:

AlphaPC64> flash 200000 8

(200000 to miejsce w pamięci obrazu, który ma być wypalony, a 8 to segment, w którym umieszczasz obraz. Istnieje 16 1024*64 bajtowych segmentów w pamięci flash, Debug Monitor znajduje się w segmencie pierwszym, a Windows NT ARC w czwartym).

Ustaw numer obrazu, który będzie ładowany przez SROM poprzez zapisanie jego numeru w zegarze TOY.

AlphaPC64> bootopt 131

(131 to trzeci obraz, 129 - pierwszy, 130 - drugi itd.)

Wyłącz zasilanie, zewrzyj siódmą zworkę i włącz komputer. Powinieneś zobaczyć MILO budzącego się do życia. Jeżeli nie, wyjmij 7 zworkę i zresetuj Monitor Ewaluacyjny.

EB66+

EB66+, tak jak wszystkie Płyty Ewaluacyjne Alpha zbudowane przez Digitala, posiada ,,Evaluation Board Debug Monitor'', można więc uruchamiać MILO przez niego (Sekcja Ładowanie z Monitora Ewaluacyjnego). Dosyć często (choć nie zawsze) płyty, które wyeluowały z EB66+, również posiadają Monitor. Zazwyczaj płyty te zawierają Windows NT ARC firmware (Sekcja Ładowanie przez Windows NT ARC). Można też skorzystać z programu zarządzania pamięcią flash, kiedy MILO jest uruchomiony (Sekcja używanie programu zarządzającego pamięcią flash). System ten obsługuje zmienne środowiskowe MILO.

Płyta główna posiada miejsce na kilka obrazów flash, są one kontrolowane zworkami. Dwa banki zworek (J18 i J16) znajdują się na dole płyty, po środku jej szerokości (jeżeli Alpha jest na górze). Możesz wybrać pomiędzy opcjami ładowania (i MILO, jeżeli został zapisany w pamięci flash), używając kombinacji zworek i opcji inicjalizacji zapisanej w NVRAM zegara TOY.

Kiedy zworka 7-8 banku J18 jest włączona, obraz ładowania jest opisany przez opcję inicjalizacyjną. Jeżeli są one wyłączone, załadowany zostanie Monitor Płyt Ewaluacyjnych.

Procedura wypalania obrazu w pamięci flash przez Monitor Ewaluacyjny jest identyczna, jak w przypadku AlphaPC64 (Sekcja AlphaPC64).

EB64+/Aspen Alpine

System ten jest podobny do AlphaPC64, nie posiada jednak pamięci flash do nagrania MILO. EB64+ posiada dwa ROMy, z których jeden zawiera firmware Windows NT ARC (Sekcja Ładowanie z firmware'u Windows NT ARC), a drugi Monitor Płyt Ewaluacyjnych (Sekcja Ładowanie z Monitora Ewaluacyjnego).

Aspen Alpine posiada tylko jeden ROM - Windows NT ARC.

Universal Desktop Box (Multia)

Jest to system bardzo kompaktowy, sprzedawany jako cały komputer, oparty na 21066. Posiada on urządzenie graficzne TGA (21030). Chociaż można wepchnąć do niego kartę graficzną PCI o małym rozmiarze, poczekaj lepiej na pełną obsługę TGA w XFree86. Płyta posiada firmware Windows NT ARC, z którego można ładować MILO (Sekcja ( Ładowanie z firmware'u Windows NT ARC).

EB164

EB164, tak jak wszystkie płyty ewaluacyjne Digitala, posiada Monitor Płyt Ewaluacyjnych, można więc za jego pomocą łatwo ładować MILO (Sekcja Ładowanie z Monitora Ewaluacyjnego). Dosyć często (choć nie zawsze) płyty, które wyeluowały z EB164, także zawierają Monitor. Zazwyczaj, płyty EB164 posiadają firmware Windows NT ARC (Sekcja Ładowanie z firmware'u Windows NT ARC). Dostępna jest też konsola SRM (Sekcja Ładowanie MILO z konsoli SRM). Dzięki programowi do zarządzania pamięcią flash uruchamianemu z MILO, można zapisać jego obraz w pamięci flash (kiedy MILO już działa) (Sekcja Używanie programu zarządzania pamięcią flash). System obsługuje zmienne środowiskowe MILO.

Płyty EB164 posiadają kilka obrazów ładujących, kontrolowanych zworkami. Dwuzworkowy bank nas interesujący to J1, znajduje się on w lewym, dolnym rogu płyty (kiedy Alpha jest na górze). Między opcjami ładowania (oraz MILO, jeżeli został zapisany w pamięci flash) możesz przełączać się używając kombinacji zworek i opcji inicjalizacyjnej, zapisanej w NVRAMie zegara TOY.

Kiedy zworka SP-11 banku J1 jest zwarta, ładowany będzie obraz opisany opcją inicjalizacyjną, a jeżeli jest rozwarta, ładowany będzie Monitor Płyt Ewaluacyjnych.

Wypalanie obrazu w pamięci flash przeprowadza się dokładnie tak, jak w AlphaPC64 (Sekcja AlphaPC64).

PC164

PC164, jak wszystkie Płyty Ewaluacyjne Alpha Digitala, posiada Monitor Płyt Ewaluacyjnych, jest to więc pierwsza możliwość ładowania MILO (Sekcja Ładowanie z monitora ewaluacyjnego). Dosyć często (choć nie zawsze) płyty, które wyeluowały z PC164, także posiadają Monitor. Zazwyczaj płyty te posiadają firmware Windows NT ARC (Sekcja Ładowanie z Windows NT ARC). Jest też dostępna konsola SRM (Sekcja Ładowanie MILO z konsoli SRM). Można również użyć programu do zarządzania pamięcią flash, uruchamianego z MILO, a więc kiedy Miniloader działa, może być zapisany w pamięci flash (Sekcja używanie programu zarządzającego pamięcią flash). System obsługuje zmienne środowiskowe MILO.

Systemy te posiadają kilka opcji ładowania w pamięci flash, kontrolowanych przez zworki. Główny blok zworek, J30, zawiera zworki konfiguracji systemu, oraz zworkę CF6, która, jeżeli włączona, uruchomi Monitor Ewaluacyjny. Standardowo zworka ta jest wyłączona.

Wypalanie obrazu do pamięci flash za pomocą Monitora Płyt Ewaluacyjnych przeprowadza się identycznie, jak w przypadku AlphaPC64 (Sekcja AlphaPC64).

XL266

XL266 jest jedną z płyt z rodziny systemów znanych jako Avanti. Posiada oddzielną kartę zawierającą procesor i pamięć cache, dołączaną do płyty pod prawidłowym kątem. Płyta ta może zastąpić swój odpowiednik - płytę do Pentium.

Niektóre z tych systemów posiadają konsolę SRM, a inne, np. właśnie XL266 posiadają jedynie firmware Windows NT ARC (Sekcja Ładowanie z firmware'u Windows NT ARC).

Oto moja lista kompatybilnych systemów:

Uwaga: System którego używałem do rozwoju MILO, to XL266 i dlatego jest to jedyny system, którego działanie mogę zagwarantować. Jednakże technicznie wszystkie powyższe systemy są odpowiednikami, mają te same chipsety oraz mechanizmy obsługi przerwań.

Platform2000

Jest to system oparty na 233MHz 21066.

6. Interfejs użytkownika MILO

Kiedy poprawnie zainstalowałeś/załadowałeś/uruchomiłeś MILO, zobaczysz znak zachęty MILO> (od MIniLOader, Miniładowacz) wyświetlony na ekranie. Jest to bardzo prosty intefejs użytkownika, którego musisz użyć w celu uruchomienia obrazu jądra Linuxa. Wpisanie ,,help'' jest dobrym pomysłem, ponieważ wyświetla przydatny opis komend.

6.1 Komenda ,,help''

Jest to chyba najbardziej pożyteczna komenda MILO:

MILO> help                                   
MILO command summary:                         

ls [-t fs] [dev:[dir]]
                    - List files in directory on device
boot [-t fs] [dev:file] [boot string]
                    - Boot Linux from the specified device and file
run [-t fs] dev:file
                    - Run the standalone program dev:file
show                - Display all known devices and file systems
set VAR VALUE       - Set the variable VAR to the specified VALUE
unset VAR           - Delete the specified variable
reset               - Delete all variables
print               - Display current variable settings
help [var]          - Print this help text

Devices are specified as: fd0, hda1, hda2, sda1...
Use the '-t filesystem-name' option if you want to use
  anything but the default filesystem ('ext2').
Use the 'show' command to show known devices and filesystems.
Type 'help var' for a list of variables.

------------------------------------------------------------------------------------

MILO> help
Opis komend MILO:

ls [-t fs] [urządzenie:[katalog]]
                               - Lista plików w katalogu danego urządzenia
boot [-t fs] [urządzenie:plik] [tekst ładowania]
                               - Załaduj Linuxa z pliku na danym urządzeniu
run [-t fs] [urządzenie:plik]
                               - Uruchom oddzielny program z podanej ścieżki
show                           - Pokaż wszystkie znane urządzenia i systemy plików
set ZMIENNA WARTOSC            - Przypisuje zmiennej ZMIENNA wartosc WARTOSC
unset ZMIENNA                  - Kasuje podaną zmienną
reset                          - Skasuj wszystkie zmienne
print                          - Pokaż obecne ustawienia zmiennych
help [var]                     - Wyświetl ten tekst pomocy

Urządzenia podaje się jako: fd0, hda1, hda2, sda1...
Użyj opcji ,,-t nazwa-systemu-plików'', jeżeli chcesz używać
  czegoś innego niż standardowy system plików (,,ext2'').
Użyj komendy ,,show'', żeby wyświetlić znane urządzenia i systemy plików.
Wpisz ,,help var'', żeby uzyskać listę zmiennych.

Uwaga: komenda bootopt występuje tylko w systemie AlphaPC64 (i podobnych). Odwołaj się do dokumentacji płyty, żeby dowiedzieć się, co ona znaczy.

Urządzenia. Dopóki nie użyjesz komendy, która musi użyć urządzenia, nie będzie miała miejsca jego inicjalizacja. Pierwsze show, ls, boot lub run, zawsze spowodują inicjalizację urządzeń w MILO. Urządzenia są nazywane dokładnie w ten sam sposób, co w Linuxie. A więc, pierwszy dysk IDE będzie nazywać się ,,hda'', a pierwsza partycja ,,hda1''. Użyj komendy ,,show'', żeby wyświetlić dostępne urządzenia.

Systemy plików. MILO obsługuje trzy systemy plików - MSDOS, EXT2 i ISO9660. Jeżeli urządzenie jest dostępne w systemie, można wykonać komendy ls, boot i run na obrazie zapisanym na tych systemach plików. Standardowy system MILO to EXT2, dlatego będziesz musiał powiedzieć MILO, że obecny jest inny system plików. Wszystkie komendy używające nazw plików pozwalają przekazać do nich typ systemu plików, używając opcji -t [nazwa systemu plików]. A więc jeżeli chcesz wyświetlić zawartość CD ROMu SCSI, możesz napisać:

MILO> -t iso9660 scd0:

Zmienne. MILO posiada kilka ustawialnych zmiennych, ułatwiających proces ładowanie. Jeżeli ładujesz MILO przez Windows NT ARC, MILO używa zmiennych ustawionych przez to firmware. W niektórych systemach (np. AlphaPC64), MILO tworzy własną listę zmiennych, które nie zmieniają się przy każdym ładowaniu. Są to:

MILO> help var
Variables that MILO cares about:
  MEMORY_SIZE      - System memory size in megabytes
  BOOT_DEV         - Specifies the default boot device
  BOOT_FILE        - Specifies the default boot file
  BOOT_STRING      - Specifies the boot string to pass to the kernel
  SCSIn_HOSTID     - Specifies the host id of the n-th SCSI controller.
  AUTOBOOT         - If set, MILO attempts to boot on powerup
                     and enters command loop only on failure.
  AUTOBOOT_TIMEOUT - Seconds to wait before auto-booting on powerup.

------------------------------------------------------------------------------------

MILO> help var
Zmienne, na które uważa MILO:
  MEMORY_SIZE      - Rozmiar pamięci systemu w megabajtach
  BOOT_DEV         - Definiuje domyślne urządzenie ładowania
  BOOT_FILE        - Definiuje domyślny plik ładowania
  BOOT_STRING      - Definiuje tekst przekazywany do jądra podczas startu
  SCSIn_HOSTID     - Definiuje identyfikator hosta n-tego kontrolera SCSI.
  AUTOBOOT         - Jeżeli jest ustawiona, MILO próbuje ładować system po włączeniu
                     zasilania i przechodzi do linii komend tylko w przypadku błedu.
  AUTOBOOT_TIMEOUT - Ile sekund MILO ma czekać przed autoładowaniem.

6.2 Ładowanie Linuxa

Komenda boot ładuje jądro Linuxa. Musi się ono znajdować na dysku w formacie EXT2 (SCSI, IDE lub na dyskietce), lub na kompakcie w formacie ISO9660. Obraz może być spakowany gzipem, MILO rozpozna go wtedy po rozszerzeniu .gz.

Zauważ, że wersja MILO nie musi odpowiadać wersji jądra, które ładujesz. Linuxa ładuje się następującą komendą:

MILO> boot [-t system-plików] urządzenie:nazwa-pliku [[opcja-ładowania] [opcja-ładowania] ...]

Gdzie urządzenie jest nazwą pliku urządzenia, którego chcesz używać, a nazwa-pliku jest nazwą obrazu jądra Linuxa. Wszystkie argumenty podane po nazwie pliku są przekazywane bezpośrednio do jądra.

Jeżeli instalujesz Red Hat'a, będziesz musiał podać urządzenie / i nie tylko. Powinieneś użyć komendy

MILO> boot fd0:vmlinux.gz root=/dev/fd0 load_ramdisk=1

MILO będzie automatycznie zawierał urządzenia wkompilowane w twój vmlinux. Testowałem sterowniki do stacji dysków, IDE i kilka sterowników SCSI (np. NCR 810). Wszystkie działają poprawnie. Ważne jest też poprawne ustawienie identyfikatora hosta SCSI. Domyślnie MILO zainicjalizuje go na najwyższej możliwej wartości (7), co powinno działać poprawnie. Jednakże jeżeli chcesz, możesz i tak ustawić identyfikator hosta n-tego kontrolera SCSI w systemie, ustawiając zmienną środowiskowąSCSIn_HOSTID na odpowiednią wartość. Na przykład, żeby ustawić hostid pierwszego kontrolera na 7, powinieneś wpisać następujące polecenie w linii poleceń MILO:

setenv SCSI0_HOSTID 7

6.3 Resetowanie Linuxa

Czasami będziesz chciał przeładować działającego Linuxa komendą shutdown -r now. W takim przypadku jądro Linuxa oddaje kontrolę MILO (przez odwołanie CallPAL HALT). Z tego powodu MILO zostawia skompresowaną kopię samego siebie w pamięci i wykrywa że system jest przeładowywany, korzystając z informacji przetrzymywanych w HWRPB (Hardware Restart Parameter Block, Blok Parametrów Restartu Urządzenia). Zaczyna wtedy przeładowanie, używając dokładnie tej samej komendy, która została użyta do ładowania jądra Linuxa ostatnim razem. MILO czeka przez 30 sekund przed ponownym załadowaniem jądra, co pozwala przerwać ten proces i załadować inne jądro, w jakikolwiek sposób.

6.4 Komenda ,,bootopt''

W systemach z pamięcią flash, takich jak AlphaPC64, EB164 i EB66+ istnieje kilka opcji ładowania. Są one zmieniane komendą bootopt. Posiada ona jeden argument, numer dziesiętny, który jest typem obrazu do załadowania po włączeniu zasilania/przeładowaniu systemu.

0 Ładowanie Monitora Płyt Ewaluacyjnych,
1 Ładowanie firmware'u Windows NT ARC.

W celu ładowania MILO z pamięci flash, potrzebna jest opcja inicjalizacyjna, znacząca ,,załaduj N-ty obraz z pamięci flash''. Jako argument, musisz podać 128 + N, więc jeżeli MILO jest trzecim obrazem, użyjesz komendy

MILO> bootopt 131

Uwaga: Bądź bardzo ostrożny z tą komendą. Nigdy nie ustawiaj bootopt na 0 (Monitor Płyt Ewaluacyjnych), zamiast tego użyj zworek na płycie głównej.

7. Używanie programu zarządzającego pamięcią flash

Komenda run jest używana do uruchamiania programu zarządzającego pamięcią flash (flash management utility, dalej będę nazywał go ,,fmu'' - przyp. tłum.). Zanim zaczniesz, będziesz potrzebował urządzenia dostępnego MILO i zawierającego fmu. Może on być (tak jak vmlinux) spakowany gzipem. Fmu uruchamia się następującą komendą:

MILO> fd0:fmu.gz

Kiedy program zostanie załadowany i zainicjalizowany, fmu poda trochę informacji o urządzeniu flash, oraz wyświetli linię poleceń. Znowu, komenda help jest bardzo użyteczna.

Linux MILO Flash Management Utility V1.0     Linux MILO Flash Management Utility V1.0

Flash device is an Intel 28f008SA            Urządzenie flash to Intel 28f008SA
  16 segments, each of 0x10000 (65536) bytes   16 segmentów, każdy po 0x10000 (65536) bajtów
Scanning Flash blocks for usage              Wykrywam zajętość bloków Flash
Block 12 contains environment variables      Blok 12 zawiera zmienne środowiskowe
FMU>                                         FMU>

Uwaga: W systemach obsługujących zmienne środowiskowe, gdzie istnieje więcej niż jeden blok flash (np. AlphaPC64), fmu będzie szukał bloku na zmienne środowiskowe MILO. Jeżeli taki blok istnieje, fmu powie, gdzie się on znajduje. Jeśli nie, musisz użyć komendy environment, żeby ustawić blok i go zainicjalizować. W powyższym przykładzie, blok 12 zawiera zmienne środowiskowe MILO.

7.1 Komenda ,,help''

FMU> help
FMU command summary:

list                - List the contents of flash
program             - Program an image into flash
quit                - Quit
environment         - Set which block should contain the environment variables
bootopt num         - Select firmware type to use on next power up
help                - Print this help text
FMU>

------------------------------------------------------------------------------------

FMU> help
Opis komend FMU:

list                - Wyświetl zawartość pamięci flash
program             - Zapisz obraz w pamięci flash
quit                - Zakończ program
environment         - Ustaw blok, który powinien zawierać zmienne środowiskowe
bootopt numer       - Wybierz typ firmware'u do użycia przy następnym uruchomieniu
help                - Wyświetl ten tekst pomocy
FMU>

Uwaga: Komendy environment i bootopt są dostępne tylko w płytach EB66+, AlphaPC64, EB164 i PC164 (i ich klonach).

7.2 Komenda ,,list''

Komenda ,,list'' pokazuje zawartość pamięci flash. Jeżeli istnieje więcej niż jeden blok, pokazana jest zawartość każdego. W poniższym przykładzie możesz zobaczyć, że Windows NT ARC używa blok 4-7 i blok 15.

FMU> list
Flash block:   0:DBM  1:DBM  2:DBM  3:WNT  4:WNT  5:WNT  6:WNT  7:WNT  8:MILO
        9:MILO 10:MILO 11:MILO 12:MILO 13:U 14:U 15:WNT
Listing flash Images
  Flash image starting at block 0:
    Firmware Id:  0 (Alpha Evaluation Board Debug Monitor)
    Image size is 191248 bytes (3 blocks)
    Executing at 0x300000
  Flash image starting at block 3:
    Firmware Id:  1 (Windows NT ARC)
    Image size is 277664 bytes (5 blocks)
    Executing at 0x300000
  Flash image starting at block 8:
    Firmware Id:  7 (MILO/Linux)
    Image size is 217896 bytes (4 blocks)
    Executing at 0x200000
FMU>

------------------------------------------------------------------------------------

FMU> list
Bloki Flash:   0:DBM  1:DBM  2:DBM  3:WNT  4:WNT  5:WNT  6:WNT  7:WNT  8:MILO
        9:MILO 10:MILO 11:MILO 12:MILO 13:U 14:U 15:WNT
Wyświetlam Obrazy Flash
  Obraz Flash (początek - blok 0)
    Firmware Id:  0 (Alpha Evaluation Board Debug Monitor)
    Rozmiar obrazu: 191248 bajtów (3 bloki)
    Wykonuje się na 0x300000
  Obraz Flash (początek - blok 3)
    Firmware Id:  1 (Windows NT ARC)
    Rozmiar obrazu: 277664 bajtów (5 bloków)
    Wykonuje się na 0x300000
  Obraz Flash (początek - blok 8)
    Firmware Id:  7 (MILO/Linux)
    Rozmiar obrazu: 217896 bajtów (4 bloki)
    Wykonuje się na 0x200000
FMU>

7.3 Komenda ,,program''

Fmu zawiera skompresowaną kopię obrazu flash MILO. Komenda ,,program'' pozwala zapisać ten obraz w pamięci flash. Komenda ta pozwoli ci wycofać się, ale zanim ją uruchomisz, powinieneś użyć komendy ,,list'', żeby zobaczyć gdzie nagrać MILO. Jeżeli MILO znajduje się już w pamięci flash, fmu zapyta się, czy go skasować.

FMU> program
Image is:
    Firmware Id:  7 (MILO/Linux)
    Image size is 217896 bytes (4 blocks)
    Executing at 0x200000
Found existing image at block 8
Overwrite existing image? (N/y)? y
Do you really want to do this (y/N)? y
Deleting blocks ready to program: 8 9 10 11
Programming image into flash
Scanning Flash blocks for usage
FMU>

------------------------------------------------------------------------------------

FMU> program
Obraz:
    Firmware Id:  7 (MILO/Linux)
    Rozmiar obrazu: 217896 bajtów (4 bloki)
    Wykonuje się na 0x200000
Znaleziono istniejący obraz w bloku 8
Nadpisać istniejący obraz? (N/y)? y
Czy napewno chcesz to zrobić? (y/N)? y
Kasowanie bloków do programowania: 8 9 10 11
Programowanie obrazu do pamięci flash
Szukanie zajętych bloków Flash
FMU>

Poczekaj, aż proces zostanie zakończony przed wyłączeniem systemu.

Uwaga: Nie mogę wyrazić dostatecznie mocno, jak musisz być ostrożny, żeby nie nadpisać istniejącego obrazu flash, który może być ci potrzebny, lub nie zniszczyć swojej płyty głównej. Dobrą zasadą jest niekasowanie Monitora Ewaluacyjnego. (!!! - przyp. tłum.)

7.4 Komenda ,,environment''

Wybiera blok flash mający zawierać zmienne środowiskowe MILO.

7.5 Komenda ,,bootopt''

Jest to ta sama komenda, co istniejąca w MILO, zobacz sekcję ( Komenda ,,bootopt'').

7.6 Komenda ,,quit''

Jest to raczej bez znaczenia. Jedyna droga powrotna do MILO (lub czegokolwiek innego), kiedy fmu działa, to restart systemu.

8. Ograniczenia

Niestety, świat nie jest doskonały, jest więc jak zawsze parę ograniczeń, o których powinieneś wiedzieć.

MILO nie jest przeznaczony do ładowania systemów operacyjnych innych niż Linux, jednakże może ładować obrazy łączone do działania w tym samym miejscu pamięci co Linux (czyli 0xFFFFFC0000310000). W ten sposób może działać fmu.

Źródła kodu PAL załączone w miniboot/palcode/cośtam są poprawne, jednakże są problemy, kiedy zostają zbudowane przy użyciu najnowszego gas (assembler GNU - przyp. tłum.). Można kompilować je, używając bardzo starego gas'a załączonego w oprogramowanu do Płyt Ewaluacyjnych Alpha (i w ten sposób zostały zbudowane). Próbuję namówić kogoś, żeby naprawił nowy gas. Obecnie jednak, jako obejście, umieściłem pre-kompilowany kod PAL dla obsługiwanych płyt, a David Mosberger-Tang umieścił naprawiony gas na swoim serwerze ftp.

9. Rozwiązywanie problemów

Oto kilka często spotykanych problemów razem z rozwiązaniami.

Czytanie dyskietek MS-DOS z Monitora Płyt Ewaluacyjnych.

Niektóre starsze wersje Monitora Płyt Ewaluacyjnych (przed 2.0) miały problemy z odczytywaniem dyskietek w formacie DOS zapisanych pod Linuxem. Zazwyczaj Monitor może wczytać kilka pierwszych sektorów, ale po chwili wchodzi w nieskończoną pętlę błędów o złych sektorach. Istnieje też pewna niekompatybilność między formatem DOS oczekiwanym przez Monitor Ewaluacyjny, a Linuxową implementacją DOSFS. Żeby skrócić tą długą historię: jeżeli napotkasz ten problem, spróbuj użyć DOS'a do zapisania dyskietki. Na przykład jeżeli nie ładuje się plik MILO.cab, użyj komputera z DOSem - włóż dyskietkę i napisz:

copy a:MILO.cab c:
copy c:MILO.cab a:
del c:MILO.cab

Spróbuj ponownie wystartować MILO z tej dyskietki. Powinno to rozwiązać problem.

MILO wyświetla długą sekwencję znaków ,,o>'' i nie przyjmuje poleceń.

Dzieje się to zazwyczaj kiedy MILO został skompilowany z portem COM1 jako drugorzędnym urządzeniem konsoli. W takim przypadku, MILO kopiuje wyjście na port COM1 i akceptuje wejście również z tego portu. Jest to świetne do wykrywania błędów, ale nie tak świetne jeżeli masz podłączone coś innego niż terminal. Jeżeli to się dzieje, odłącz lub wyłącz to urządzenie, do chwili uruchomienia jądra Linuxa. Kiedy Linux działa, wszystko będzie działało tak jak powinno.

MILO skarży się na zły numer magiczny obrazu jądra

Starsze wersje MILO nie obsługiwały formatu binarnego ELF, nie mogły więc rozpoznać obrazu ELF. Jeżeli napotkasz ten problem, ściągnij najnowszą wersję MILO. Wszystkie wersje po 2.0.20 obsługują ELF. Z drugiej strony, może to być wina zniszczonego obrazu. Powinieneś też pamiętać, że MILO sam nie rozpoznaje jeszcze obrazów skompresowanych GZIP'em - musisz dodać rozszerzenie ,,.gz'' do nazwy pliku.

MILO wyświetla ,,...turning on virtual addressing and jumping to the Linux Kernel'' i nic się nie dzieje

Oczywisty problem, to to, że jądro jest źle skompilowane, albo skompilowane na inny system Alpha. Inny to kompilacja jądra na urządzenie VGA, kiedy płyta posiada TGA (Zlxp) (lub odwrotnie). Dobrze jest wbudować w jądro wyjście na COM1 i podłączyć terminal, lub spróbować użyć jądro z dystrybucji Linuxa, którą zainstalowałeś.

MILO nie rozpoznaje dysku SCSI

Standardowe obrazy MILO posiadają wszystkie stabilne (dla Alphy) sterowniki urządzeń (na razie są to NCR 810, QLOGIC ISP, Buslogic i Adaptec 2940/3940) (uwaga - jest to stare HOWTO, a więc dużo się zmieniło - przyp. tłum.). Jeżeli twoja karta nie jest dołączona, może to znaczyć, że sterownik dla Alphy nie jest jeszcze stabilny. Spróbuj użyć najnowszych obrazów MILO. Możesz dowiedzieć się, jakie urządzenia SCSI zostały wkompilowane w obraz MILO, używając komendy ,,show''.

10. Podziękowania

Chciałbym podziękować:

Jest jeszcze kilka rzeczy, które powinny być zrobione, więc jeżeli chcesz coś dodać, daj mi znać ( david.rusling@reo.mts.dec.com), żebyśmy nie duplikowali swoich wysiłków.

Na końcu, duże ,,dziękuję'' dla Digitala, za produkowanie tak świetnego procesora (i płacenie mi za to).

11. Od tłumacza

Jeżeli znajdziesz jakieś błędy, daj mi znać. doc-linux-pl-2002.06.14.orig/html/Module-HOWTO.pl.html0100664000175000017500000025461706770264140021005 0ustar covencoven Linux Module-HOWTO

Linux Module-HOWTO

Autor: Lauri Tischler, ltischler@efore.fi
v1.1, 20 października 1996
Wersja polska: Paweł Olszewski alder@amg.net.pl
v1.01, 10 marca 1997


To jest Module-HOWTO, opisujący wszystkie możliwe parametry, które przekazywać można modułom Linuxa w trakcie ich ładowania. Zawarta tu informacja powstała w oparciu o jądro Linuxa w wersji 2.0.23.

1. Wstęp

Do napisania tego dokumentu zainspirował mnie znakomity BootPrompt-HOWTO Paula Gortmakera. Za zgodą Paula wykorzystałem jego pracę jako ramę, na której rozpiąłem swoje wywody. Różne części tego dokumentu zostały bezwstydnie, bez jakichkolwiek pozwoleń, skradzione z rozmaitych plików README i *.txt, które znaleźć można w katalogach źródłowych Linuxa. Składam szczere podziękowania wszystkim autorom tych tekstów - dzięki nim mógł powstać Module-HOWTO.

Struktura/kolejność modułów opisanych w niniejszym dokumencie jest w zasadzie analogiczna do zastosowanej w programie konfiguracyjnym jądra systemu - menuconfig, uruchomionym w trybie single_menu_mode=TRUE.

Zamieszczam tutaj wszystkie elementy, które w programie konfiguracyjnym mają opcję "moduł", niezależnie od faktu, czy mają one jakieś parametry ładowania czy też nie.

Wszystkie elementy opracowane są zgodnie z poniższym przykładowym schematem:


Polecenie ładowania:
        /sbin/modprobe ne.o io=0x300 irq=5
            
        io = 0          (Wymaga jawnego określenia wartości "io=0xNNN")
        irq = 0         (Próbuje określić ustawione IRQ poprzez autoIRQ)
        (Sprawdza porty: 0x300, 0x280, 0x320, 0x340, 0x360)
            
        Wymaga 8390.o

Autorem i opiekunem Module-HOWTO jest:

Lauri Tischler, ltischler@efore.fi

Wersja polska:

Pawko Olszewski, alder@amg.com.pl

v1.0, 23 lutego 1997

1.1 Deklaracja i Prawa autorskie

Ten dokument nie jest wyrocznią. Prawdopodobnie zawiera on jednak najbardziej aktualne informacje, jakie można znaleźć. Za to, co dzieje się z twoimi urządzeniami nie odpowiada nikt inny, jak tylko ty sam. Jeśli twój sprzęt pójdzie z dymem (...prawie niemożliwe!), nie biorę za to żadnej odpowiedzialności. Tzn. AUTOR ANI TŁUMACZ NIE SĄ ODPOWIEDZIALNI ZA JAKIEKOLWIEK USZKODZENIA POWSTAŁE W WYNIKU PODJĘCIA DZIAŁAŃ OPARTYCH NA INFORMACJI ZAWARTEJ W NINIEJSZYM DOKUMENCIE.

Prawa autorskie tego dokumentu (c) 1996 są własnością Lauri Tischlera. Tłumaczenie na polski - Paweł Olszewski (c) 1997. Udziela się pozwolenia na wykonywanie i rozprowadzanie kopii tego podręcznika przy zachowaniu jego brzmienia, pod warunkiem, że nota o prawach autorskich i niniejsze pozwolenie znajdą się w każdej kopii.

Zezwala się również na wykonywanie i rozprowadzanie zmodyfikowanych kopii tego dokumentu w nie zmienionym brzmieniu, pod warunkiem, że niniejsza nota o prawach autorskich zostanie w nich zamieszczona dokładnie tak samo jak w wersji oryginalnej, oraz że cała powstała w oparciu o ten dokument praca będzie rozprowadzana wraz z zezwoleniem identycznym do tego.

Zezwala się na kopiowanie i rozprowadzanie innych wersji językowych tego dokumentu, przy zachowaniu powyżej opisanych zasad co do wersji zmodyfikowanych.

Jeśli zamierzasz włączyć ten dokument do prac przeznaczonych do publikacji, proszę, skontaktuj się z autorem, aby mógł zapewnić, że posiadasz możliwie najbardziej aktualną informację.

Zdarzyło się kiedyś, że opublikowano nieaktualne wersje dokumentów HOWTO dotyczących Linuxa. Skutkiem tego programiści rozwijający Linuxa narażeni zostali na zbędny wysiłek z powodu zalewu pytaniami, na które udzielono już odpowiedzi w uaktualnionych wersjach dokumentów.

1.2 Dodatkowa Dokumentacja

Zalecane są następujące HOWTO:

Plik Documentation/Configure.help udziela dość dobrej, ogólnej informacji o tym, którym częściom jądra nadawać postać modułów, a którym nie.

Również krocie rozmaitych plików README, porozsiewanych (niestety) po całym Drzewie Katalogów Źródłowych Linuxa są dobrą i pouczającą lekturą.

Najbardziej aktualną dokumentacją zawsze będzie sam Kod Źródłowy. Na przykład, jeśli chcesz się dowiedzieć, jakie parametry mogą zostać przekazane karcie ethernet smc-ultra, zaglądasz do karalogu linux/drivers/net i oglądasz plik smc-ultra.c -- zazwyczaj gdzieś pod koniec tego pliku można znaleźć procedurę zwaną init_module. W obrębie tej procedury lub w jej pobliżu znajdziesz definicje parametrów i ich struktury, odpowiadające parametrom modułu.

1.3 Linuxowe Grupy Dyskusyjne

Jeśli masz pytania dotyczące przekazywania modułom parametrów w trakcie ich ładowania, w pierwszej kolejności PRZECZYTAJ ten dokument. Jeśli nie znajdziesz odpowiedzi na swoje pytanie/pytania ani tutaj, ani we wcześniej wymienionej dokumentacji dodatkowej, możesz spróbować spytać w grupach dyskusyjnych.

Ogólne pytania na temat konfigurowania systemu należy kierować do grupy comp.os.linux.setup. Prosimy, abyś respektował tę ogólną zasadę dotyczącą treści listów i nie przesyłał swoich zapytań ogólnych do grup poświęconych konkretnym zagadnieniom.

1.4 Nowe Wersje Tego Dokumentu

Nowe wersje oryginału tego dokumentu pobrać można przez anonimowy FTP z sunsite.unc.edu, z katalogu /pub/Linux/docs/HOWTO/* i wielu linuxowych archiwów lustrzanych. Poprawki będą dokonywane w miarę pojawiania się informacji o nowych sterownikach. Jeśli kopia, którą czytasz ma więcej niż 3 miesiące, oznacza to, że jest albo nieaktualna, albo że byłem leniwy i jej nie zaktualizowałem.

Najnowsza wersja niniejszego dokumentu w wersji polskiej znajduje się w oficjalnym archiwum polskich wersji dokumentów Linux HOWTO ftp://ftp.ippt.gov.pl/pub/Linux/JTZ/, a także pod adresem http://www.amg.net.pl/Linux/JTZ/.

Ten dokument został przygotowany przy użyciu systemu SGML, specjalnie skonfigurowanego dla celów Projektu Linux Howto. Dostępne są różne formaty wyjściowe, do których zaliczyć można: postscript, dvi, ascii, html oraz wkrótce TeXinfo.

Zalecałbym oglądanie tego dokumentu w formacie html (w przeglądarce WWW) lub w formacie Postscript/dvi. Oba z nich zawierają aktywne powiązania, które nie występują w formacie ascii.

Jeśli chcesz otrzymać oficjalną kopię angielską z sunsite, oto URL:

Module-HOWTO

1.5 Moduły eksperymentalne (kod alpha) lub niepełna informacja.

Oto lista modułów określonych w skryptach konfiguracyjnych jako eksperymentalne, posiadających niewystarczające informacje, lub takich, których Kodów Źródłowych nie rozumiem, bo jestem zbyt ciemny. Wybór należy do ciebie.

1.6 Historia wersji.

2. Programy narzędziowe do obsługi modułów

Jest to zestaw programów niezbędnych do obsługiwania modułów. W czasie, gdy to piszę, najświeższa wersja narzędzi do obsługi modułów to modules-2.0.0.tar.gz. Informacje na temat bieżącej wersji można znaleźć pod adresem http://www.pi.se/blox

Pierwszą informację o modułach udostępnili panowie Jacques Gelinas jacques@solucorp.qc.ca oraz Björn Ekwall bj0rn@blox.se za pośrednictwem pliku /usr/src/linux/Documentation/modules.txt.

2.1 Tworzenie modułów

W pierwszym kroku powinieneś skompilować jądro, tak jak jest to opisane w pliku linux/README. Ogólnie rzecz biorąc robi się to tak:

Przy make config, wybierasz, które elementy chcesz włączyć do rezydentnej części jądra, a które chcesz używać w postaci ładowalnych modułów. Zazwyczaj do części rezydentnej włączasz minimum składników koniecznych do załadowania systemu:

Liczba modułów nieustannie się zwiększa i dla wszystkich elementów, które można w danym jądrze skompilować do postaci modułów, będziesz mógł wybrać opcję m w make config .

Masz również możliwość stworzenia modułów, które są w mniejszym stopniu zależne od wersji jądra. Można tę opcję ustawić w trakcie make config, przez włączenie CONFIG_MODVERSIONS. Jest ona najbardziej przydatna w przypadku stabilnych wersji jądra, takich jak na przykład jądra serii 1.2 i 2.0. Jeśli masz moduły, które oparte są na kodach nie dołączonych do oficjalnych kodów źródłowych jądra, ta opcja z pewnością ci się spodoba...

Po skompilowaniu jądra, generujesz moduły poleceniem:

make modules

Nastąpi kompilacja wszystkich modułów i uaktualnienie katalogu linux/modules. W tymże katalogu znajdziesz masę dołączeń symbolicznych, wskazujących rozmaite pliki obiektowe w katalogach źródłowych jądra.

Teraz, gdy już stworzyłeś wszystkie moduły, powinieneś również wydać polecenie:

make modules_install

Skopiuje ono wszystkie nowo stworzone moduły do katalogów /lib/modules/wersja_jądra/, gdzie wersja_jądra to coś w rodzaju 2.0.1, zależnie od obecnie posiadanej przez ciebie wersji jądra.

Jak tylko przeładujesz nowo stworzone jądro, możesz instalować i usuwać moduły za pomocą programów narzędziowych insmod i rmmod. Jeśli przeczytasz stronę podręcznika systemowego man na temat insmod, dowiesz się również, jak łatwo jest skonfigurować moduł przy użyciu insmod (wskazówka: symbol=wartość).

2.2 Rozszerzone programy narzędziowe, modprobe i depmod.

Masz również dostęp do dwóch programów narzędziowych: modprobe i depmod. modprobe jest to wrapper lub rozszerzenie do insmod. Owe narzędzia wykorzystują (i utrzymują) zestaw plików, umieszczonych w katalogu /lib/modules, opisujących wszystkie dostępne dla danej wersji jądra moduły wraz z ich wzajemnymi zależnościami.

Przy użyciu programu modprobe, możesz załadować każdy moduł w następujący sposób:

/sbin/modprobe module

bez zwracania szczególnej uwagi na wersję jądra, które aktualnie pracuje, lub na fakt, od jakich innych modułów dany moduł zależy.

Z pomocą pliku konfiguracyjnego programu modprobe: /etc/conf.modules, możesz na rozmaite sposoby decydować o zachowaniu tego programu, w tym również o automatycznym ustawianiu opcji programu insmod dla poszczególnych modułów. Tak, tak, wszystko to jest również udokumentowane na stronach podręcznika systemowego "man"...

Aby z skutecznie używać programu modprobe, ogólnie rzecz biorąc, należy umieścić następujące polecenie w skrypcie /etc/rc.d/rc.S. (Na ten temat możesz przeczytać więcej w pliku rc.hints z pakietu programów narzędziowych do obsługi modułów, modules-x.y.z.tar.gz.)

/sbin/depmod -a

Zostaną znalezione zależności pomiędzy różnymi modułami. Wówczas, jeśli na przykład wpiszesz:

/sbin/modprobe umsdos

automatycznie załadujesz zarówno moduł msdos, jak i umsdos, ponieważ umsdos jeździ na baranach msdos.

2.3 Optymalne narzędzie, kerneld.

No dobra, przeczytałeś wszystko powyższe i jesteś bardzo zachwycony... Teraz mówimy ci, abyś zapomniał wszystko o tym, jak ładować i usuwać moduły ładowalne.

Z pomocą demona kerneld, wszystkie te rutynowe czynności będą wykonywane automatycznie. Wystarczy, że zaznaczysz "Y" przy opcji CONFIG_KERNELD w make config, oraz upewnisz się, że /sbin/kerneld jest uruchamiany możliwie jak najszybciej po załadowaniu systemu i że /sbin/depmod -a był już uruchamiany dla bieżącego jądra. (Więcej informacji na ten temat znajdziesz w pakiecie narzędziowym do obsługi modułów).

Ilekroć jakiś program zażyczy sobie, aby jądro wykonało funkcję, która jest dostępna jedynie w obrębie ładowalnego modułu, a moduł ów nie jest jeszcze zainstalowany w jądrze, jądro poprosi demona kerneld o zajęcie się tą sytuacją.

Oto, co się dzieje:

Śmietanką na całym naszym torcie jest to, że jeśli automatycznie zainstalowany moduł nie jest przez jakiś czas używany (zazwyczaj przez 1 minutę), jest on również automatycznie usuwany.

Powoduje to, że jądro używa minimalnego niezbędnego w danym momencie obszaru pamięci, umożliwiając jej bardziej efektywne wykorzystanie niż w charakterze pojemnika na nie używany kod.

Tak naprawdę, jest to jedynie efekt uboczny prawdziwej zalety kerneld: Musisz jedynie stworzyć jądro-minimum, mniej lub bardziej niezależne od faktycznej konfiguracji sprzętowej. Ustawienia wirtualnego jądra są natomiast nadzorowane w oparciu o plik konfiguracyjny, przy uwzlędnieniu bieżącego sposobu użytkowania komputera i jądra systemu.

Powinna to być dobra wiadomość dla osób opiekujących się wieloma komputerami, jak również dla tych, którzy opiekują się dystrybucjami.

Aby używać kerneld bez nadmiernych zmagań, będzie ci potrzebny modprobe z wersji, którą można uznać za świeżą w stosunku do twojego jądra, jak również plik konfiguracyjny dla modprobe (/etc/conf.modules).

Ponieważ modprobe zna większość modułów, najprostszy plik konfiguracyjny może wyglądać tak:


alias scsi_hostadapter aha1542  # czy też jakikolwiek inny kontroler SCSI, jaki
                                  posiadasz 

alias eth0 3c509 # lub jakaś inna, używana przez ciebie karta ethernet

# dla niektórych kart sieciowych możesz potrzebować
# wiersza opcji - "options"
options 3c509 io=0x300 irq=10

# możesz też potrzebować wiersza opcji dla jakiegoś innego modułu
options cdu31a cdu31a_port=0x1f88 sony_pas_init=1

Mógłbyś również dodać poniższe linie, ale są to jedynie upiększenia:

alias net-pf-3 off      # (nadal) brak modułu ax25
alias net-pf-4 off      # jeśli nie używasz modułu ipx
alias net-pf-5 off      # jeśli nie używasz modułu appletalk

Na koniec, dla pedantów: Możesz nazwać plik konfiguracyjny /etc/conf.modules, albo /etc/modules.conf, gdyż modprobe wie, jak postępować w każdym z tych przypadków.

3. Ogólne Ustawienia Jądra

Uwaga: nie możesz mieć obsługi a.out oraz ELF jednocześnie skompilowanych jako moduły. W przeciwnym razie nieźle się zapętlisz przy próbie uruchomienia insmod aby załadował obsługę a.out/ELF, co jest potrzebne do uruchmienia insmod ;-) Jeśli masz system w pełni ELF, ale potrzebujesz obsługę formatu a.out dla sesji Netscape od czasu do czasu, możesz obsługę a.out skonfigurować jako moduł.

W przeciwnym wypadku, prawdopodobnie powinieneś zostawić obsługę a.out w jądrze, natomiast jeśli w ogóle nie masz jeszcze ELF, możesz zignorować obsługe ELF.

3.1 Obsługa plików binarnych a.out (binfmt_aout.o).


Polecenie ładowania:
        /sbin/modprobe binfmt_aout.o

        Brak parametrów modułu.

3.2 Obsługa plików binarnych ELF (binfmt_elf.o).


Polecenie ładowania:
        /sbin/modprobe binfmt_elf.o

        Brak parametrów modułu.

3.3 Obsługa plików binarnych JAVA (binfmt_java.o).

JAVA jest obiektowo zorientowanym językiem programowania, rozwijanym przez firmę SUN; programy w języku JAVA kompilowane są do postaci "JAVA bytecode", która może później być interpretowana w trakcie uruchamiania na wielu różnych systemach operacyjnych. Owe pliki binarne JAVA stają się uniwersalnym formatem plików uruchamialnych. Ta opcja pozwala uruchamiać pliki binarne w Javie tak samo jak wszystkie inne programy: przez wpisanie ich nazwy.


Polecenie ładowania:
        /sbin/modprobe binfmt_java.o

        Brak parametrów modułu.

4. Stacja dysków i inne urządzenia blokowe

4.1 Sterownik Stacji Dysków (floppy.o).

Jest wiele opcji sterownika stacji dysków i wszystkie z nich są wymienione w pliku README.fd w katalogu linux/drivers/block. Po szczegółowe i aktualne informacje odwołuj się bezpośrednio do tego właśnie pliku.


Polecenie ładowania:
        /sbin/modprobe floppy.o 'floppy="<opcje>"'

        Wyjaśnienie opcji poniżej...

mask,allowed_drive_mask - Ustawia maskę bitową dozwolonych napędów jako mask. Domyślnie, dopuszczone są jedynie urządzenia 0 i 1 każdego kontrolera stacji dysków. Jest tak dlatego, że pewne niestandardowe urządzenia (płyty główne ASUS PCI) knocą klawiaturę kiedy korzysta się z urządzeń 2 lub 3. Opcja ta jest w pewnym stopniu zdezaktualizowana przez opcje CMOS.

all_drives - Ustawia maskę bitową dozwolonych napędów aby wszystkie były dozwolone. Użyj tego parametru jeśli do kontrolera stacji dysków podłączone masz więcej niż dwa napędy.

asus_pci - Ustawia maskę bitową dozwolonych napędów tak, aby dopuszczone były jedynie urządzenia 0 i 1. (Domyślne)

daring - Informuje sterownik stacji dysków, że masz dobrze zachowujący się kontroler napędów. Pozwala to na bardziej wydajną i płynną pracę, ale w przypadku pewnych kontrolerów może nie działać. Pewne operacje mogą być dzięki temu przyspieszone.

0,daring - Informuje sterownik stacji dysków, że kontroler napędów powinien być używany ostrożnie.

one_fdc - Informuje sterownik stacji dysków, że masz tylko jeden kontroler (domyślne).

two_fdc lub adres,two_fdc - Informuje sterownik stacji dysków, że posiadasz dwa kontrolery napędów. Uznaje się przy tym, że drugi kontroler ma adres adres. Owa druga opcja nie jest konieczna jeśli drugi kontroler jest pod adresem 0x370, oraz jeśli używasz opcji 'CMOS'.

thinkpad - Informuje sterownik stacji dysków, że posiadasz Thinkpad. Thinkpady używają odwróconą konwencję polecenia zmiany dysków.

0,thinkpad - Informuje sterownik stacji dysków, że nie masz Thinkpada.

omnibook lub nodma - Informuje sterownik stacji dysków, że DMA ma nie być używane w trakcie przesyłania danych. Jest to konieczne na Omnibookach HP, nie posiadają one bowiem kanału DMA, który mógłby być użyty przez sterownik stacji dysków. Opcja ta przydaje się również wtedy, gdy często otrzymujesz komunikaty "Unable to allocate DMA memory". Rzeczywiście, pamięć DMA musi być fizycznie ciągła, przez co trudniej ją przydzielić, podczas gdy bufory przeznaczone do innych celów mogą być przydzielone w pamięci wirtualnej. Jednakże odradzam tę opcję, jeśli posiadasz kontroler stacji dysków bez FIFO (8272A lub 82072). 82072A i późniejsze są OK. Aby używać nodma, potrzebujesz również co najmniej 486. Jeśli używasz trybu nodma, zalecam, abyś również ustawił próg czułości FIFO na 10 lub niższy, aby ograniczyć ilość generowanych przerwań przesyłu danych.

dma - Informuje sterownik stacji dysków, że dostępny jest działający kanał DMA (ustawienie domyślne).

nofifo - Całkowicie wyłącza FIFO. Jest to konieczne, gdy otrzymujesz komunikaty "Bus master arbitration error" od karty ethernet (lub innych urządzeń) w trakcie korzystania ze stacji dysków.

fifo - Włącza FIFO (domyślne)

[próg czułości],fifo_depth - Ustawia próg czułości FIFO. Opcja ta jest najbardziej stosowna w trybie DMA. Jeśli ten parametr jest wyższy, sterownik stacji dysków toleruje większe opóźnienia przerwań, ale generuje więcej przerwań, (tzn. w większym stopniu obciąża system). Jeśli parametr ten jest niższy, opóźnienia przerwań również powinny być mniejsze (procesor działa szybciej). Zaletą niższego progu czułości jest mniejsza ilość przerwań.

Aby wyregulować próg czułości fifo, włącz komunikaty przepełnienia/niedoboru przy użyciu komendy 'floppycontrol --messages'. Następnie skorzystaj z napędu. Jeśli otrzymasz dużo komunikatów przepełnienia/niedoboru ("Over/Underrun - retrying"), oznacza to, że próg czułości fifo jest za niski. Powinieneś podwyższać próg do momentu, w którym będziesz otrzymywać wyżej opisane komentarze tylko od czasu do czasu. Dobrze jest skompilować sterownik napędu dysków jako moduł przy okazji testowania czułości fifo. Pozwala to na testowanie różnych ustawień fifo bez konieczności przeładowywania systemu za każdym razem. Pamiętaj, że powinieneś wykonać 'floppycontrol --messages' po każdym załadowaniu modułu. Zazwyczaj regulowanie progu czułości fifo nie jest konieczne, gdyż domyślne ustawienie (0xa) jest rozsądne.

[napęd],[typ],cmos - Ustawia typ CMOS napędu napęd jako typ. Jest to konieczne jeśli masz więcej niż dwa napędy dysków (jedynie dwa mogą być zdefiniowane fizycznym CMOS), lub jeśli twój BIOS używa niestandardowych typów CMOS. Typy CMOS to:


                0 - Użyj wartość fizycznego CMOS
                1 - 5 1/4 DD
                2 - 5 1/4 HD
                3 - 3 1/2 DD
                4 - 3 1/2 HD
                5 - 3 1/2 ED
                6 - 3 1/2 ED
               16 - nie znany lub nie zainstalowany

(Uwaga: dla napędów ED istnieją dwa poprawne typy. Jest tak, ponieważ początkowo typ 5 wybrano dla napędów taśmowych, a 6 dla napędów ED. Było to ignorowane przez firmę AMI, która wykorzystywała typ 5 dla napędów ED. Oto dlaczego sterownik stacji dysków obsługuje oba).

unexpected_interrupts - Wypisanie ostrzeżenia w przypadku otrzymania nieoczekiwanego przerwania (zachowanie domyślne).

no_unexpected_interrupts lub L40SX - Nie wypisuj komunikatów w przypadku otrzymania nieoczekiwanego przerwania. Ta opcja jest potrzebna na laptopach IBM L40SX przy pewnych trybach graficznych. (Wydaje się, że jest jakaś współzależność obsługi grafiki i napędów dysków. Nieoczekiwane przerwania mają wpływ jedynie na wydajność i bezpiecznie można je pominąć).

4.2 Obsługa urządzenia blokowego loopback (loop.o).

Włączenie tej opcji umożliwi ci montowanie pliku jako system plików. Jest to przydatne, gdy chcesz sprawdzić system plików ISO9660 zanim wypalisz CD-ROM, lub jeśli chcesz używać obrazów zawartości dyskietek przed ich zapisaniem.

Opcja ta również umożliwia zamontowanie systemu szyfrowanego. Aby wykorzystać tę możliwość, potrzebujesz ostatnie uzupełnienia programów mount i innych o obsługę DES i IDEA. Możesz je znaleźć tutaj: http://www.binary9.net/nicholas/linuxkernel/patches.

Pamiętaj, że to pętlowe urządzenie blokowe nie ma nic wspólnego z urządzeniem loopback używanym przy połączeniach sieciowych komputera z nim samym.


Polecenie ładowania:
        /sbin/modprobe loop.o

        Brak parametrów modułu.

4.3 Obsługa sterownika urządzeń wielokrotnych [md] (RAID).

Ten sterownik pozwala połączyć kilka partycji twardych dysków w jedno logiczne urządzenie blokowe.

Programy narzędziowe do obsługi urządzeń md można znaleźć pod adresem sweet-smoke.ufr-info-p7.ibp.fr/public/Linux/md035.tar.gz. W tym samym miejscu zamieszczono również dokument md-FAQ.

Istnieją różne poziomy RAID (Redundant Array of Inexpensive Disks - Redundantna Macierz Niedrogich Dysków).

W chwili obecnej jedynie RAID-0 jest dostępny dla Linuxa. Tryb linearny nie jest uważany za część definicji RAID. Komisja Doradcza ds RAID również nie uznaje RAID-0 jako części definicji RAID z powodu braku redundancji danych.

Trybami, które warto zastosować, są RAID-0, RAID-1, RAID-5 oraz RAID-6.

Sterownik urządzeń wielokrotnych w trybie linearnym (addytywnym) (linear.o).

Jeśli wybierzesz tę opcję, sterownik urządzeń wielokrotnych będzie mógł pracować w tak zwanym trybie linearnym, tzn. połączy partycje twardych dysków po prostu dodając jedną do drugiej.


Polecenie ładowania:
        /sbin/modprobe linear.o

        Brak parametrów ładowania.

Urządzenia wielokrotne w trybie RAID-0 (pasmowym) (raid0.o).

Jeśli wybierzesz tę opcję, sterownik urządzeń wielokrotnych będzie mógł pracować w tak zwanym trybie raid0, tzn. połączy partycje twardych dysków w jedno urządzenie logiczne w taki sposób, aby zapełniane one były równomiernie, jedna porcja danych tu, jedna tam. Zwiększy to przepustowość, o ile partycje znajdują się na osobnych dyskach.


Polecenie ładowania:
        /sbin/modprobe raid0.o

        Brak parametrów ładowania.

4.4 Obsługa dysku RAM (rd.o).

Włączenie tej opcji pozwoli ci używać część pamięci RAM jako urządzenie blokowe, tak, abyś mógł założyć na nim systemy plików, dokonywać operacje zapisu i odczytu i robić wszystkie inne rzeczy, jakie są możliwe na zwykłych urządzeniach blokowych (jak np. dysk twardy). Zazwyczaj dysk RAM używany jest do załadowania z dyskietki i przechowania minimalnego bazowego systemu plików (root filesystem) w trakcie pierwszej instalacji Linuxa.


Polecenie ładowania:
        /sbin/modprobe rd.o

        Brak parametrów ładowania.
        Dostępne są parametry przy ładowaniu systemu, zobacz BootPrompt-HOWTO.

4.5 Obsługa dysków twardych XT (xd.o).

Bardzo stare 8-bitowe kontrolery twardych dysków używane w komputerach IBM XT. Obecność obsługi dysków twardych XT wcale nie oznacza, że możesz uruchomić Linuxa na IBM XT :).


Polecenie ładowania:
        /sbin/modprobe xd.o

        Brak parametrów ładowania.

5. Ogólne Opcje Sieciowe i TCP/IP.

5.1 Tunelowanie IP (ipip.o i new_tunnel.o).

Tunelowanie oznacza enkapsulację danych jednego protokołu w obrębie innego protokołu i przesyłanie danych w takiej postaci przez kanał, który rozumie protokół enkapsulacji. Potrzebne są dwa moduły, ipip.o, dekoder protokołu IP/IP, oraz sterownik new_tunnel.o (poprzednio nazywał się on tunnel.o i dokumentacja nadal odnosi się do tej starszej nazwy). Dokumentacja znajduje się w /usr/src/linux/drivers/net/README.tunnel.


Polecenie ładowania:
        /sbin/modprobe ipip.o
        /sbin/modprobe new_tunnel.o
        
        Brak parametrów ładowania.

5.2 Obsługa IP Aliasing (ip_alias.o).

Czasami wygodnie jest nadać jednemu interfejsowi sieciowemu (czyli portowi szeregowemu karty sieciowej) kilka adresów. Najczęściej jest tak w sytuacji, gdy chcesz podawać na zewnątrz różne dokumenty WWW w zależności od tego, której nazwy komputera użyto, aby się z tobą połączyć.


Polecenie ładowania:
        /sbin/modprobe ip_alias.o

        Brak parametrów ładowania.

5.3 Odwrotny ARP IP (rarp.o).


Polecenie ładowania:
        /sbin/modprobe rarp.o

        Brak parametrów ładowania.

5.4 Protokół IPX (ipx.o).

Jest to obsługa protokołu sieciowego Novella - IPX, powszechnie używanego w sieciach lokalnych łączących komputery pracujące pod systemami DOS i Windows.

Protokół IPX jest konieczny, gdy:

Stroną domową ncpfs jest ftp.gwdg.de/pub/linux/misc/ncpfs, ale można ją również znaleźć na sunsite i w wielu innych archiwach lustrzanych.

Strona domowa Linware to klokan.sh.cvut.cz/pub/linux/linware,

Pakiet nwserv - Mars_nwe znajdziesz natomiast tutaj: ftp.gwdg.de/pub/linux/misc/ncpfs.


Polecenie ładowania:
        /sbin/modprobe ipx.o

        Brak parametrów ładowania.

5.5 Appletalk DDP (appletalk.o).

Appletalk to sposób, w jaki komputery Apple rozmawiają ze sobą w sieci. EtherTalk to nazwa określająca appletalk w sieci ethernet, a Localtalk to appletalk w sieci opartej o łącza szeregowe Apple.


Polecenie ładowania:
        /sbin/modprobe appletalk.o

        Brak parametrów ładowania.

6. Obsługa SCSI.

Obsługa SCSI w jądrze Linuxa może przybierać postać modułów na szereg różnych sposobów, zależnie od potrzeb użytkownika. Aby zrozumieć poszczególne opcje, zdefiniujemy na wstępie kilka pojęć.

SCSI-core zawiera rdzeń obsługi SCSI. Bez niego nic nie zrobisz z którymkolwiek innym sterownikiem SCSI. Obsługa rdzenia SCSI może mieć postać modułu (scsi_mod.o), lub można ją wbudować w jądro. Jeśli rdzeń jest modułem, musi on być pierwszym z ładowanych modułów obsługi SCSI, a przy usuwaniu modułów z jądra, będzie musiał być usunięty w ostatniej kolejności.

Poszczególne sterowniki wyższego lub niższego poziomu można ładować w dowolnej kolejności, o ile rdzeń obsługi SCSI znajduje się już w jądrze (jest wkompilowany lub załadowany jako moduł). Sterownik dysków (sd_mod.o), napędów CD-ROM (sr_mod.o), napędów taśmowych (st.o) i ogólny sterownik SCSI (sg.o) to sterowniki wyższego poziomu, służące do obsługi rozmaitych typów urządzeń. Dla przykładu, możesz załadować sterownik napędu taśmowego aby skorzystać z taśmy, a następnie usunąć go, gdy już nie potrzebujesz sterownika (tym samym zwalniając przydzieloną mu pamięć).

Sterowniki niższego poziomu to te, które obsługują poszczególne karty kontrolerów SCSI, kompatybilne z używaną przez ciebie konfiguracją sprzętową. Przykładem jest moduł aha1542.o do obsługi kontrolerów Adaptec 1542.

6.1 Wymagana Obsługa Rdzenia SCSI.

Obsługa Rdzenia SCSI (scsi_mod.o).


Polecenie ładowania:
        /sbin/modprobe scsi_mod.o

        Brak parametrów ładowania.

6.2 Obsługa sterowników SCSI wysokiego poziomu.

Obsługa dysków SCSI (sd_mod.o).


Polecenie ładowania:
        /sbin/modprobe sd_mod.o

        Brak parametrów ładowania.

Obsługa napędów taśmowych SCSI (st.o).


Polecenie ładowania:
        /sbin/modprobe st.o

        Brak parametrów ładowania.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa napędów CD-ROM SCSI (sr_mod.o).


Polecenie ładowania:
        /sbin/modprobe sr_mod.o

        Brak parametrów ładowania.

Ogólna obsługa SCSI (sg.o).


Polecenie ładowania:
        /sbin/modprobe sg.o

        Brak parametrów ładowania.

6.3 Obsługa niskopoziomowego sterownika SCSI.

Większość sterowników kart SCSI nie przyjmuje parametrów modułów, ponieważ zazwyczaj dokonuje automatycznej detekcji ustawień karty. Koniecznie przeczytaj SCSI-HOWTO i pliki README w katalogu /usr/src/linux/drivers/scsi, aby dowiedzieć się więcej o swoich urządzeniach. Jeśli twoja karta ma jakiś niekonwencjonalny adres wejścia/wyjścia, musisz permanentnie włączyć sterownik w jądro i używać opcji przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Możesz również pomieszać w Kodzie Źródłowym i przekompilować.

Obsługa 7000FAST SCSI (wd7000.o),


Polecenie ładowania:
        /sbin/modprobe wd7000.o

        Brak parametrów ładowania.
        Autodetekcja karty, wymaga zainstalowanego BIOSu.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa Adaptec AHA152X/2825 (aha154x.o).


Polecenie ładowania:
        /sbin/modprobe aha154x.o

        Brak parametrów ładowania.
        Autodetekcja karty, wymaga zainstalowanego BIOSu.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa Adaptec AHA1542 (aha1542.o).


Polecenie ładowania:
        /sbin/modprobe aha1542.o

        Brak parametrów ładowania.
        Autodetekcja jedynie dla adresów 0x330 i 0x334.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Adaptec AHA1740 EISA support (aha1740.o).


Polecenie ładowania:
        /sbin/modprobe aha1740.o

        Brak parametrów ładowania.
        Autodetekcja.

Adaptec AHA274X/284X/294X support (aic7xxx.o).


Polecenie ładowania:
        /sbin/modprobe aic7xxx.o

        Brak parametrów ładowania.
        Autodetekcja, BIOS musi być włączony.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa AdvanSys SCSI (advansys.o).


Polecenie ładowania:
        /sbin/modprobe advansys.o [parameters]

        asc_iopflag=1                   włącz=1, wyłącz=0 przeszukiwanie portów
        asc_ioport=0x110,0x330          porty do przeszukania
        asc_dbglvl=1                    poziom śledzenia przebiegu programu
                                           0: Wyłącznie błędy
                                           1: Śledzenie wysokopoziomowe
                                           2-N: Śledzenie opisowe

        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa Always IN2000 SCSI (in2000.o).


Polecenie ładowania:
        /sbin/modprobe in2000.o

        Brak parametrów ładowania.
        Autodetekcja, BIOS nie jest wymagany.

Obsługa BusLogic SCSI (BusLogic.o).

Lista obsługiwanych kart BusLogic jest długa. Aby w całości zapoznać się ze sprawą, przeczytaj usr/src/linux/drivers/scsi/README.BusLogic.


Polecenie ładowania:
        /sbin/modprobe BusLogic.o

        Brak parametrów ładowania.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa DTC3180/3280 SCSI (dtc.o).


Polecenie ładowania:
        /sbin/modprobe dtc.o

        Brak parametrów ładowania.
        Autodetekcja.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa EATA ISA/EISA (DPT PM2011/021/012/022/122/322) (eata.o).


Polecenie ładowania:
        /sbin/modprobe eata.o

        Brak parametrów ładowania.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa EATA-DMA (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) (eata_dma.o).

Obejmuje DPT Smartcache, Smartcache III oraz SmartRAID.


Polecenie ładowania:
        /sbin/modprobe eata_dma.o

        Brak parametrów ładowania.
        Autodetekcja działa niezależnie od ustawień.

Obsługa EATA-PIO (stare DPT PM2001, PM2012A) (eata_pio.o).


Polecenie ładowania:
        /sbin/modprobe eata_pio.o

        Brak parametrów ładowania.

Obsługa Future Domain 16xx SCSI (fdomain.o).


Polecenie ładowania:
        /sbin/modprobe fdomain.o

        Brak parametrów ładowania.
        Autodetekcja, wymaga zainstalowanego BIOSu.

Obsługa ogólna NCR5380/53c400 SCSI (NCR5380.o).


Polecenie ładowania:
        /sbin/modprobe NCR5380.o

                ncr_irq=xx      przerwanie 
                ncr_addr=xx     port lub adres bazowy (dla portu
                                lub mapowania pamięci)
                ncr_dma=xx      DMA
                ncr_5380=1      aby ustawić kartę NCR5380
                ncr_53c400=1    aby ustawić kartę NCR53C400

        modprobe g_NCR5380 ncr_irq=5 ncr_addr=0x350 ncr_5380=1
         - dla karty NCR5380 mapowanej na port lub

        modprobe g_NCR5380 ncr_irq=255 ncr_addr=0xc8000 ncr_53c400=1
         - dla karty NCR53C400 mapowanej w pamięci, wyłączone przerwania

        (Należy wpisać 255 przy braku przerwań lub przerwaniu DMA, 254 aby
        automatycznie testować numer IRQ, jeśli wystąpiło nadpisanie w linii
        polecenia.)

        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa NCR53c406a SCSI (NCR53c406a.o).


Polecenie ładowania:
        /sbin/modprobe NCR53c406a.o

        Brak parametrów ładowania.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa NCR53c7,8xx SCSI (53c7,8xx.o).


Polecenie ładowania:
        /sbin/modprobe 53c7,8xx.o

        Brak parametrów ładowania.
        Autodetekcja, wymaga zainstalowanego BIOSu.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa rodziny PCI-SCSI NCR538xx (ncr53c8xx.o).


Polecenie ładowania:
        /sbin/modprobe ncr53c8xx.o

        Brak parametrów ładowania.

Obsługa dysku IOMEGA ZIP na porcie równoległym (ppa.o).

Dokładniejsze informacje znajdziesz w pliku /usr/src/linux/drivers/scsi/README.ppa.


Polecenie ładowania:
        /sbin/modprobe ppa.o ppa_base=0x378 ppa_nybble=1

        Oto parametry i ich funkcje:

        Zmienna         Domyślnie  Opis

        ppa_base        0x378   Adres bazowy portu równoległego PPA.
        ppa_speed_high  1       Opóźnienie we/wy w mikrosekundach, używane przy
                                transferach danych
        ppa_speed_low   6       Opóźnienie we/wy w mikrosekundach, używane przy
                                innych operacjach
        ppa_nybble      0       1 aby zmusić sterownik do pracy w trybie 4-bitowym.

Obsługa PAS16 SCSI (pas16.o).


Polecenie ładowania:
        /sbin/modprobe pas16.o

        Brak parametrów ładowania.
        Autodetekcja, nie wymaga BIOSu.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa Qlogic FAST SCSI (qlogicfas.o).


Polecenie ładowania:
        /sbin/modprobe qlogicfas.o

        Brak parametrów ładowania.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa Qlogic ISP SCSI (qlogicisp.o).

Wymaga oprogramowania firmowego.


Polecenie ładowania:
        /sbin/modprobe qlogicisp.o

        Brak parametrów ładowania.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa Seagate ST-02 i Future Domain TMC-8xx SCSI(seagate.o).


Polecenie ładowania:
        /sbin/modprobe seagate.o

        Brak parametrów ładowania.
        Autodetekcja jedynie adresów, IRQ na stałe = 5.
        Wymaga zainstalowanego BIOSu.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa Trantor T128/T128F/T228 SCSI (t128.o).


Polecenie ładowania:
        /sbin/modprobe t128.o

        Brak parametrów ładowania.
        Autodetekcja, wymaga zainstalowanego BIOSu.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa UltraStor 14F/34F (u14-34f.o).


Polecenie ładowania:
        /sbin/modprobe u14-34f.o

        Brak parametrów ładowania.
        Autodetekcja karty, a NIE portu 0x310, BIOS nie jest wymagany.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

Obsługa UltraStor SCSI (ultrastor.o).


Polecenie ładowania:
        /sbin/modprobe ultrastor.o

        Brak parametrów ładowania.
        Dostępne są parametry przy ładowaniu systemu, patrz BootPrompt-HOWTO.

7. Obsługa urządzeń sieciowych

7.1 Wymagane i/lub opcjonalne moduły niskopoziomowe

Opcjonalny kompresor BSD do PPP (bsd_comp.o).


Polecenie ładowania:
        /sbin/modprobe bsd_comp.o

        Brak parametrów ładowania.

        Wymaga ppp.o

Kompresor SLHC dla PPP (slhc.o).

Procedury kompresji i dekompresji pakietów tcp (do celów transmisji po wolnych liniach szeregowych)

Wymagany przez protokoły SLIP i PPP (również ISDN-PPP).


Polecenie ładowania:
        /sbin/modprobe slhc.o

        Brak parametrów ładowania.

Ogólny rdzeń sterownika ethernet NS8390 (8390.o).

Jest to kod dostosowany do kości, dla wielu kart ethernet opartych o układ 8390. Nie jest to kompletny sterownik, musi być połączony z kodem dostosowanym do konkretnej karty, np. ne.o, wd.o, 3c503.o, itd.


Polecenie ładowania:
        /sbin/modprobe 8390.o

        Brak parametrów ładowania.

7.2 Obsługa sterownika sieciowego dummy (dummy.o).

Ogólnie rzecz biorąc jest to urządzenie typu worek bez dna (tzn. wszystko, co wysłane jest do tego urządzenia, obracane jest w nicość), z konfigurowalnym adresem IP. Najczęściej jest używane po to, aby udawać przed lokalnymi programami, że w danej chwili nieaktywny adres SLIP naprawdę istnieje.


Polecenie ładowania:
        /sbin/modprobe dummy.o

        Brak parametrów ładowania.

7.3 Obsługa EQL (wyważanie obciążenia linii szeregowej) (eql.o).

Jeśli twój komputer ma dwa łącza szeregowe z innymi komputerami (zazwyczaj wymaga to dwóch modemów i linii telefonicznych), oraz używasz na tych łączach protokołu SLIP (protokołu do obsługi ruchu internetowego przez linie telefoniczne) lub PPP (lepszy SLIP), przy użyciu tego sterownika możesz spowodować, że będą się one zachowywać jak jedno łącze podwójnej prędkości.


Polecenie ładowania:
        /sbin/modprobe eql.o

        Brak parametrów ładowania.

7.4 Obsługa Frame relay DLCI (dlci.o).

Jest to obsługa protokołu frame relay; frame relay to szybka i tania metoda zdalnego podłączania się do dostawcy usług internetu, lub tworzenia prywatnej sieci WAN. Na jednej fizycznej linii pomiędzy twoim komputerem a lokalnym "przełącznikiem" (tzn. punktem wejściowym do sieci frame relay) można relizować kilka logicznych połączeń punkt-punkt z innymi komputerami podłączonymi do sieci frame relay. Ogólne objaśnienie protokołu znajdziesz w WWW, pod adresem http://frame-relay.indiana.edu/4000/4000index.html. Aby używać frame relay, potrzebujesz urządzeń obsługi (FRAD) oraz pewnych programów z pakietu narzędzi sieciowych, tak jak objaśniono to w pliku Documentation/networking/framerelay.txt.


Polecenie ładowania:
        /sbin/modprobe dlci.o

        Brak parametrów ładowania.

7.5 Obsługa FRAD Sangoma S502A (sdla.o).

Jest to sterownik dla Urządzeń Dostępu do Frame Relay (FRAD) Sangoma S502A, S502E oraz S508. Są to karty wieloprotokołowe, ale obecnie sterownik obsługuje jedynie frame relay. Przeczytaj proszę Documentation/networking/framerelay.txt.


Polecenie ładowania:
        /sbin/modprobe sdla.o

        Brak parametrów ładowania.

        Wymaga dlci.o

7.6 Obsługa PLIP (port równoległy) (plip.o).

PLIP (Parallel Line Internet Protocol - Internetowy Protokół Linii Równoległych) używany jest do tworzenia miniaturowych sieci, składających się z dwóch (lub rzadko z większej ilości) lokalnych komputerów. Porty równoległe (złacza komputerowe z 25 otworami) łączone są kablami "null printer" lub "Turbo Laplink", króre mogą przesyłać 4 bity naraz, lub przy użyciu specjalnych kabli PLIP (tylko w przypadku, gdy porty równoległe są dwukierunkowe), po których przesłać naraz można 8 bitów (opis konstrukcji tych kabli znajdziesz w pliku drivers/net/README?.plip). Kable te mogą mieć długość do 15m. Działa to również wtedy, gdy jeden z komputerów pracuje w systemie DOS/Windows i ma zainstalowane jakieś oprogramowanie PLIP, np. sterownik pakietów PLIP Crynwr http://sunsite.cnam.fr/packages/Telnet/PC/msdos/misc/pktdrvr.txt oraz oprogramowanie winsock lub telnet NCSA.


Polecenie ładowania:
        /sbin/modprobe plip.o io=0x378 irq=7

        io = 0
        irq = 0         (domyślnie, używa IRQ 5 dla portu 0x3bc,
                                          IRQ 7 dla portu 0x378,
                                     oraz IRQ 2 dla portu 0x278)
        (Detekcja na portach: 0x278, 0x378, 0x3bc)

7.7 Obsługa protokołu PPP (point-to-point) (ppp.o).

Aby używać PPP, potrzebujesz dodatkowy program, zwany pppd, zgodnie z opisem w Documentation/networking/ppp.txt oraz PPP-HOWTO, dostępnego pod adresem sunsite.unc.edu:/pub/Linux/docs/HOWTO.


Polecenie ładowania:
        /sbin/modprobe ppp.o

        Brak parametrów ładowania.

        Wymaga slhc.o 
        Wymaga również serial.o, który nie jest to automatycznie
        wykrywany, więc serial.o należy załadować ręcznie.

7.8 Obsługa protokołu SLIP (linia szeregowa) (slip.o).

SLIP (Serial Line Internet Protocol - Internetowy Protokół Linii Szeregowych) jest protokołem używanym do przesyłania ruchu internetowego po liniach telefonicznych lub kablach szeregowych (znanych również pod nazwą 'nullmodem').


Polecenie ładowania:
        /sbin/modprobe slip.o

        slip_maxdev = 256 (domyślna wartość SL_NRUNIT z pliku slip.h)

        Wymaga slhc.o
        Wymaga również serial.o, który nie jest to automatycznie
        wykrywany, więc serial.o należy załadować ręcznie.

7.9 Interfejsy sieciowe Radia Amatorskiego i komunikacji bezprzewodowej

Sterownik emulacji BAYCOM ser12 i par96 do AX.25 (baycom.o).

Jest to sterownik do prostych radiomodemów typu Baycom, które podłącza się do złącz szeregowych lub równoległych. Sterownik obsługuje modele ser12 i par96. Aby skonfigurować sterownik, należy użyć programu narzędziowego setbaycom dostępnego pod adresem http://www.ife.ee.ethz.ch/~sailer/ham/ham.html#lnxbay. Informacje o modemach znajdziesz pod adresem http://www.baycom.de, oraz w pliku drivers/char/README.baycom.


Polecenie ładowania:
        /sbin/modprobe baycom.o modem=1 iobase=0x3f8 irq=4 options=1
  
        major   liczba główna, którą powinien użyć sterownik; domyślnie 60
        modem   typ modemu pierwszego kanału (liczba poboczna 0); 1=ser12,
                2=par96/par97, jakakolwiej inna wartość jest niepoprawna

        iobase  adres bazowy portu; typowe wartości to 0x3f8,0x2f8, 0x3e8, 0x2e8
                dla ser12, oraz 0x378, 0x278, 0x3bc dla par96/par97

        irq     numer przerwania portu; typowe wartości to 3,4 dla ser12 oraz 7 dla
                par96/par97 options 0=use hardware DCD, 1=use software DCD

STRIP (Metricom starmode radio IP) strip.o).

STRIP jest protokołem radiowym rozwijanym w związku z projektem MosquitoNet (http://mosquitonet.stanford.edu/) do celów przesyłania ruchu internetowego przy użyciu radia Metricom. Radia Metricom są to małe, zasilane bateryjnie, radiowe przekaźniki pakietowe pracujące z prędkością 100kbit/sekundę. Mają rozmiar zbliżony do telefonu komórkowego. (Mogłeś również słyszeć o nich pod nazwą "modemy Metricom", ale staramy się unikać tutaj określenia "modem", ponieważ wprowadza ono wiele osób w błąd, przez co myślą, że można podłączyć modem Metricom do linii telefonicznej i używać go jak zwykły modem). STRIP możesz używać na każdym komputerze z Linuxem i portem szeregowym, choć oczwiście najbardziej może się on przydać posiadaczom komputerów przenośnych.


Polecenie ładowania:
        /sbin/modprobe strip.o

        Brak parametrów ładowania.

Obsługa WaveLAN (wavelan.o).

Są to karty do bezprzewodowej komunikacji zbliżonej do ethernet. Obsługiwane są karty AT&T GIS i NCR WaveLAN.


Polecenie ładowania:
        /sbin/modprobe wavelan.o

        io = 0x390      (Można ustawić, ale zmienianie nie jest zalecane)
        irq = 0         (Jeśli zmienione, nie brane pod uwagę)

Most IP WIC Radio (wic.o).

Obsługa mostu radiowego WIC pracującego na porcie równoległym.


Polecenie ładowania:
        /sbin/modprobe wic.o

        Wydaje się, że urządzenia 'wic0', 'wic1' and 'wic2' mają bezpośredni
        związek z odpowiadającymi im portami 'lpx'.

Sterownik emulacji Z8530 SCC do AX.25 (scc.o).

Te karty są używane do podłączania komputera z Linuxem do amatorskiego radio w celu łączenia się z innymi komputerami. Jeśli chciałbyś ich używać, przeczytaj Documentation/networking/z8530drv.txt oraz HAM-HOWTO.


Polecenie ładowania:
        /sbin/modprobe scc.o

        Brak parametrów modułu.

7.10 Karty ethernet 3COM.

Obsługa 3c501 (3c501.o).


Polecenie ładowania:
        /sbin/modprobe 3c501.o

        io  = 0x280     bazowy adres IO
        irq = 5         IRQ
        (Probes ports:  0x280, 0x300)

Obsługa 3c503 (3c503.o).


Polecenie ładowania:
        /sbin/modprobe 3c503.o

        io = 0          (Będzie narzekać, jeśli nie podasz "io=0xNNN")
        irq = 0         (IRQ ustawiane programowo przez sterownik, przy użyciu
                         autoIRQ)
        xcvr = 0        (Użyj xcvr=1 aby wybrać zewnętrzny transceiver)
        (Detekcja na portach: 0x300, 0x310, 0x330, 0x350, 0x250, 0x280, 0x2A0,0x2E0)

        Wymaga 8390.o

Obsługa 3c505 (3c505.o).


Polecenie ładowania:
        /sbin/modprobe 3c505.o

        io = 0x300
        irq = 0
        (Detekcja na portach: 0x300, 0x280, 0x310)

Obsługa 3c507 (3c507.o).


Polecenie ładowania:
        /sbin/modprobe 3c507.o

        io = 0x300
        irq = 0
        (Detekcja na portach: 0x300, 0x320, 0x340, 0x280)

Obsługa 3c509/3c579 (3c509.o).


Polecenie ładowania:
        /sbin/modprobe 3c509.o

        io = 0
        irq = 0
        ( Autodetekcja przez moduł w trakcie ładowania działa dobrze jedynie na
          EISA, AUTODETEKCJA ID NA ISA NIE DZIAŁA POPRAWNIE! Jeśli chesz, aby
          sterownik dokonywał poprawnej detekcji na szynie ISA, wkompiluj go
          statycznie w jądro ).

Obsługa serii 3c590 "Vortex" (3c59x.o).

Zapewnia obsługę następujących kart:


Polecenie ładowania:
        /sbin/modprobe 3c59x.o debug=1 options=0,,12

        Ustawia ono poziom komunikatów śledzenia aby wyświetlana była
        minimalna ilość komunikatów, ustawia pierwszą kartę na trancseiver
        10baseT, drugą na transceiver EEPROM, a trzecią aby pracowała w pełnym
        trybie duplex, przy użyciu transceivera 100baseTx.
        (Uwaga: kolejność kart ustawiana jest przez PCI BIOS).

        Możliwe ustawienia typów nośnika
                0       10baseT
                1       10Mbs AUI
                2       nie zdefiniowane
                3       10base2 (BNC)
                4       100base-TX
                5       100base-FX
                6       MII (jeszcze niedostępny)
                7       <Użyj ustawienie domyślne>

                8       Bit pełnego trybu duplex
                8       10baseT pełny duplex
                12      100baseTx pełny duplex
                16      Bit włączający Bus-master (jedynie zastosowania eksperymentalne!)

        Szczegóły na temat implementacji sterownika znajdziesz na początku pliku
        źródłowego.

7.11 Karty ethernet Western Digital/SMC.

Obsługa WD80*3 (wd.o).


Polecenie ładowania:
        /sbin/modprobe wd.o

        io = 0          (Będzie narzekać, jeśli nie podasz "io=0xNNN")
        irq = 0         (Wartość IRQ czytana z EEPROM, starodawne karty użwyają autoIRQ)
        mem = 0         (Wymuszenie pamięci dzielonej na adresie 0xC8000, lub innym...)
        mem_end = 0     (Wymuszenie niestandardowego rozmiaru pamięci przez
                         podanie wartości mem_end)
                        (np. dla 32k WD8003EBT, użyj mem=0xd0000 mem_end=0xd8000
        (Detekcja na portach:  0x300, 0x280, 0x380, 0x240)

        Wymaga 8390.o

Obsługa SMC Ultra/EtherEZ (smc-ultra.o).


Polecenie ładowania:
        /sbin/modprobe smc-ultra.o

        io = 0          (Będzie narzekać, jeśli nie podasz "io=0xNNN")
        irq = 0         (Wartość IRQ czytana z EEPROM)
        (Detekcja na portach:  0x200, 0x220, 0x240, 0x280, 0x300, 0x340, 0x380)

        Wymaga 8390.o

Obsługa SMC 9194 (smc9194.o).

Jest to sterownik do kart ethernet SMC serii 9000.


Polecenie ładowania:
        /sbin/modprobe smc9194.o

        io = 0          dla adres bazowego
        irq = 0         dla IRQ
        ifport = 0      dla autodetekcji, 1 dla TP, 2 dla AUI ( lub 10base2 )

        Detekcja na portach:    0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0,
                        0x300, 0x320, 0x340, 0x360, 0x380, 0x3A0, 0x3C0, 0x3E0

        Poziom śledzenia można ustawić w kodzie źródłowym smc9194.c.

7.12 Inne karty Ethernet.

Obsługa AT1700 (at1700.o).


Polecenie ładowania:
        /sbin/modprobe at1700.o

        io = 0x260
        irq = 0

        (Detekcja na portach: 0x260, 0x280, 0x2A0, 0x240, 0x340, 0x320, 0x380, 0x300)

Obsługa Cabletron E21xx (e2100.o).


Polecenie ładowania:
        /sbin/modprobe e2100.o

        io = 0          (Będzie narzekać, jeśli nie podasz "io=0xNNN")
        irq = 0         (IRQ ustawiane programowo przez sterownik)
        mem = 0         (Nadpisanie domyślnego początku bloku pamięci dzielonej 0xd0000)
        xcvr = 0        (Użyj xcvr=1 aby wybrać zewnętrzny transceiver.)
        (Detekcja na portach: 0x300, 0x280, 0x380, 0x220)

        Wymaga 8390.o

Obsługa DEPCA, DE10x, DE200, DE201, DE202, DE422 (depca.o).


Polecenie ładowania:
        /sbin/modprobe depca.o

        io = 0x200
        irq = 7
        (Detekcja na portach:  ISA:  0x300, 0x200;
                        EISA: 0x0c00            )

Obsługa EtherWORKS 3 (DE203, DE204, DE205) (ewrk3.o).


Polecenie ładowania:
        /sbin/modprobe ewrk3.o

        io = 0x300
        irq = 5
        (Przy module brak autodetekcji!
         Na szynach EISA dokonywana jest detekcja EISA.
         Statycznie dołączony kod do jądra testuje porty na szynie ISA:
                0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0,
                0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0,
                0x300,        0x340, 0x360, 0x380, 0x3A0, 0x3C0)

Obsługa EtherExpress 16 (eexpress.o).


Polecenie ładowania:
        /sbin/modprobe eexpress.o

        io = 0x300
        irq = 0         (Wartość IRQ czytana z EEPROM)
        (Detekcja na portach: 0x300, 0x270, 0x320, 0x340)

Obsługa EtherExpressPro (eepro.o).


Polecenie ładowania:
        /sbin/modprobe eepro.o

        io = 0x200
        irq = 0
        (Detekcja na portach: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340, 0x360)

Obsługa Fujitsu FMV-181/182/183/184 (fmv18x.o).


Polecenie ładowania:
        /sbin/modprobe fmv18x.o

        io = 0x220      adres bazowy
        irq = 0         IRQ

        Detekcja na portach: 0x220, 0x240, 0x260, 0x280, 0x2a0, 0x2c0, 0x300, 0x340

Obsługa HP PCLAN+ (27247B i 27252A) (hp-plus.o).


Polecenie ładowania:
        /sbin/modprobe hp-plus.o

        io = 0          (Będzie narzekać, jeśli nie podasz "io=0xNNN")
        irq = 0         (IRQ czytane z rejestru konfiguracji)
        (Detekcja na portach: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340)

        Wymaga 8390.o

Obsługa HP PCLAN (27245 i inne serii 27xxx) (hp.o).


Polecenie ładowania:
        /sbin/modprobe hp.o

        io = 0          (Będzie narzekać, jeśli nie podasz "io=0xNNN")
        irq = 0         (IRQ ustawiane programowo przez sterownik przy użyciu autoIRQ)
        (Detekcja na portach: 0x300, 0x320, 0x340, 0x280, 0x2C0, 0x200, 0x240)

        Wymaga 8390.o

Obsługa HP 10/100VG PCLAN (ISA, EISA, PCI) (hp100.o).


Polecenie ładowania:
        /sbin/modprobe hp100.o
 
        hp100_port = 0 (bazowy adres IO)

        (Dokonuje detekcję EISA, jeśli jest w złączu EISA;
         Na szynie ISA dokonuje detekcji na wszystkich portach od 0x100 do 0x3E0
         krokiem 0x020)

Obsługa ICL EtherTeam 16i/32 (eth16i.o).


Polecenie ładowania:
        /sbin/modprobe eth16i.o

        io = 0x2a0      (Będzie narzekać, jeśli nie podasz "io=0xNNN")
        irq = 0         (IRQ ustawiane programowo przez sterownik przy użyciu autoIRQ)

        Testowane porty przy karcie eth16i :
        0x260, 0x280, 0x2A0, 0x240, 0x340, 0x320, 0x380, 0x300

        Testowane porty przy karcie eth32i :
        0x1000, 0x2000, 0x3000, 0x4000, 0x5000, 0x6000, 0x7000, 0x8000,
        0x9000, 0xA000, 0xB000, 0xC000, 0xD000, 0xE000, 0xF000

Obsługa NE2000/NE1000 (ne.o).


Polecenie ładowania:
        /sbin/modprobe ne.o

        io = 0          (Jawnie wymaga wartości "io=0xNNN")
        irq = 0         (Próbuje określić ustawione IRQ przez autoIRQ)
        (Detekcja na portach: 0x300, 0x280, 0x320, 0x340, 0x360)

        Wymaga 8390.o

Obsługa NI5210 (ni52.o).


Polecenie ładowania:
        /sbin/modprobe ni52.o
 
        io=0x360
        irq=9
        memstart=0xd0000
        memend=0xd4000

        Nie używaj autodetekcji, io=0

7.13 Kontrolery EISA, VLB, PCI i zintegrowane z płytą główną

Obsługa Ansel Communications EISA 3200 (ac3200.o).


Polecenie ładowania:
        /sbin/modprobe ac3200.o

        Ponieważ jest to karta EISA, autodetekcja powinna działać.

        Wymaga 8390.o

Karta ethernet Apricot Xen-II na płycie głównej (apricot.o).


Polecenie ładowania:
        /sbin/modprobe apricot.o

        io = 0x300  (Nie można zmienić!)
        irq = 10

Obsługa DE425, DE434, DE435, DE450, DE500 (de4x5.o).


Polecenie ładowania:
        /sbin/modprobe de4x5.o

        io = 0x000b
        irq = 10
        is_not_dec = 0
        Przy kartach innych producentów niż DEC, ale używających kość DEC
        21040/21041/21140, ustaw ten parametr na 1
        (Detekcja EISA i PCI)

Obsługa DECchip Tulip (dc21x4x) PCI (tulip.o).


Polecenie ładowania:
        /sbin/modprobe tulip.o

        Przeczytaj Documentation/networking/tulip.txt

Obsługa Digi Intl. RightSwitch SE-X (dgrs.o).

Jest to sterownik linuxowy do kart Digi International RightSwitch SE-X EISA i PCI. Są to cztero- (EISA) lub sześcioportowe (PCI) przełączniki ethernet zintegrowane na jednej płycie z NIC.

Istnieje program narzędziowy do ustawiania filtrów pakietów wejściowych i wyjściowych na każdym porcie, zwany "dgrsfilt".

Ten program obsługi pozwala śledzić pracę graficznie, jak również ustawiać adresy IP i IPX agenta SNMP, parametry IEEE Spanning Tree i czas ekspiracji. Można je również ustawić z linii polecenia po załadowaniu sterownika.

Jest również towarzyszący program obsługi, zwany "xrightswitch".


Polecenie ładowania:
        /sbin/modprobe dgrs.o

        debug=NNN               Poziom komunikatów śledzenia
        dma=0/1                 Wyłącz/Włącz DMA na karcie PCI
        spantree=0/1            Wyłącz/Włącz IEEE spanning tree
        hashexpire=NNN          Zmień czas ekspiracji adresu (domyślnie 300 sekund)
        ipaddr=A,B,C,D          Ustaw adres IP agenta SNMP, np. 199,86,8,221
        ipxnet=NNN              Ustaw adres IPX agenta SNMP

7.14 Obsługa kart PCMCIA i przenośnych

Obsługa karty D-Link DE600 (de600.o).


Polecenie ładowania:
        /sbin/modprobe de600.o
 
        de600_debug = 0
        (Na porcie 0x378, irq 7 -- lpt1; możliwe do ustawienia przy kompilacji)

Obsługa karty D-Link DE620 (de620.o).


Polecenie ładowania:
        /sbin/modprobe de620.o

        bnc = 0, utp = 0        <-- Wymuszenie nośnika przez ustawienie jednej z opcji
        io = 0x378              (również możliwe do ustawienia przy kompilacji)
        irq = 7

7.15 Obsługa Token Ring

Obsługa kart opartych na układzie Tropic (ibmtr.o).


Polecenie ładowania:
        /sbin/modprobe ibmtr.o io=0xa20 irq=0

        io = 0xa20      Nie powinieneś używać autodetekcji przy insmod.
        irq = 0

7.16 Obsługa ARCnet (arcnet.o).

Przeczytaj dobrą dokumentację pod adresem /usr/src/linux/Documentation/networking/arcnet.txt. W tym samym miejscu znajduje się również informacja na temat sprzętu ARCnet - arcnet-hardware.txt.


Polecenie ładowania:
        /sbin/modprobe arcnet.o io=0x300 irq=2 shmem=0xd0000

        Jeśli chcesz, możesz nazwać urządzenie używając konwencji "device=arc1"
        (dla drugiej karty) lub "device=eth0" (z dziwnych powodów).

        (Podczas detekcji, sprawdza następujące możliwe adresy:
         Zalecane:
                0x300, 0x2E0, 0x2F0, 0x2D0
         Inne:
                0x200, 0x210, 0x220, 0x230, 0x240, 0x250, 0x260, 0x270,
                0x280, 0x290, 0x2A0, 0x2B0, 0x2C0,
                       0x310, 0x320, 0x330, 0x340, 0x350, 0x360, 0x370,
                0x380, 0x390, 0x3A0,                      0x3E0, 0x3F0  )

8. Podsystem ISDN

Konfiguracja i włączenie sieci ISDN jest zadaniem złożonym. Przeczytaj dokumentacje znajdującą się w katalogu /usr/src/linux/Documentation/isdn.

8.1 Obsługa ISDN (isdn.o).


Polecenie ładowania:
        /sbin/modprobe isdn.o

        Brak parametrów modułu.

        Wymaga slhc.o

8.2 Obsługa ICN 2B and 4B (icn.o).


Polecenie ładowania:
        /sbin/modprobe icn.o [parameters]

        portbase=p membase=m icn_id=identyfikator [icn_id2=identyfikator2]

        p = port bazowy         (default: 0x320)
        m = pamięć dzielona     (default: 0xd0000)

        Jeśli używasz podwójną kartę ICN, MUSISZ zdefiniować DWA identyfikatory
        identyfikator musi zaczynać się od litery.

        Wymaga isdn.o

8.3 Obsługa PCBIT-D (pcbit.o).


Polecenie ładowania:
        /sbin/modprobe pcbit.o

        mem = 0         domyślnie = 0xd0000
        irq = 0         domyślnie = 5

        Wymaga isdn.o

8.4 Obsługa Teles/NICCY1016PC/Creatix (teles.o).


Polecenie ładowania:
        /sbin/modprobe teles.o io=.....

        io=m0,i0,p0,d0[,m1,i1,p1,d1 ... ,mn,in,pn,dn] teles_id=identyfikator

        m0 = pamięć dzielona pierwszej karty    (domyślnie: 0xd0000
        i0 = IRQ pierwszej karty                (domyślnie: 15)
        p0 = port bazowy pierwszej karty        (domyślnie: 0xd80)
        d0 = protokół D-kanału pierwszej karty  1=1TR6, 2=EDSS1 (domyślnie: 2)

        p1,i1,m1,d1 = Parametry drugiej karty (ustawienia domyślne: brak)
        pn,in,mn,d1 = Parametry n-tej karty (obsługiwane jest do 16 kart)

        identyfikator = Identyfikator sterownika używany przy dostępie przez
                        programy narzędziowe i do celów identyfikacyjnych jeśli
                        używany jest program monitorujący linię. (brak ustawień
                        domyślnych). identyfikator musi zaczynać się od litery!

        Typ karty jest określany w oparciu o numer portu, przerwania i pamięć
        dzieloną:

        port == 0, pamięć dzielona != 0 -> Teles S0-8
        port != 0, pamięć dzielona != 0 -> Teles S0-16.0
        port != 0, pamięć dzielona == 0 -> Teles S0-16.3

        Wymaga isdn.o

9. Sterowniki CD-ROM (nie dotyczy napędów SCSI i IDE/ATAPI)

9.1 Obsługa Aztech/Orchid/Okano/Wearnes/TXC/CyDROM (aztcd.o).


Polecenie ładowania:
        /sbin/modprobe aztcd.o aztcd=[adresbazowy]

        Pełne informacje znajdziesz w /Documentation/cdrom/aztcd/

9.2 Obsługa CD-ROM Goldstar R420 (gscd.o).

Wszystkie rodzaje informacji o napędzie CD-ROM GoldStar R420 oraz o linuxowym sterowniku do niego znaleźć można na stronie: http://linux.rz.fh-hannover.de/~raupach.


Polecenie ładowania:
        /sbin/modprobe gscd.o gscd=[address]

        Domyślny adres bazowy to 0x340.
        Będzie to działać z większością programów.
        Wyboru adresów dokonuje się poprzez jumpery od PN801-1 do PN801-4
        na karcie interfejsu GoldStar.
        Stosowne ustawienia to: 0x300, 0x310, 0x320, 0x330, 0x340, 0x350,
        0x360, 0x370, 0x380, 0x390, 0x3A0, 0x3B0, 0x3C0, 0x3D0, 0x3E0, 0x3F0

9.3 Obsługa Matsushita/Panasonic/Creative, Longshine, TEAC (sbpcd.o).


Polecenie ładowania:
        /sbin/modprobe sbpcd.o sbpcd=[adres], x

        adres   = adres IO
        x       = ustawienie SBPRO, przeczytaj Documentation/cdrom/sbpcd

9.6 Obsługa CD-ROM Optics Storage DOLPHIN 8000AT (optcd.o).

Jest ro sterownik do tak zwanego napędu 'DOLPHIN', z 34-ro pinowym złączem kompatybilnym ze złączem Sony. Dla napędu IDE Optics Storage 8001, przyda ci się sterownik CD-ROM ATAPI. Ten sterownik wydaje się również działać z Lasermate CR328A.


Polecenie ładowania:
        /sbin/modprobe optcd.o optcd=0x340

        Parametrem jest adres bazowy karty.

9.7 Obsługa CD-ROM Philips/LMS CM206 (cm206.o).

Jest to sterownik napędu CD-ROM Philips/LMS cm260 w połączeniu z kartą adaptera cm260.


Polecenie ładowania:
        /sbin/modprobe cm206.o cm206=0x300,11

        Parametry to port bazowy i IRQ twojej karty.
        Kolejność parametrów portu i IRQ nie ma znaczenia.
        Możesz podać tylko jeden z nich, pozostały uzyska wkompilowaną wartość
        domyślną.

9.8 Obsługa CD-ROM Sanyo CDR-H94A (sjcd.o).


Polecenie ładowania:
        /sbin/modprobe sjcd.o sjcd_base=0x340

        Parametr jest portem bazowym twojej karty.
        Adres domyślny = 0x340, bez IRQ,  bez DMA.

9.9 Obsługa programowo konfigurowalnego interfejsu ISP16/MAD16/Mozart (isp16.o).


Polecenie ładowania:
        /sbin/modprobe isp16.o [parameters]

        isp16_cdrom_base=<port>
        isp16_cdrom_irq=<irq>
        isp16_cdrom_dma=<dma>
        isp16_cdrom_type=<typ_napędu>

        Prawidłowe wartości to:
          port=0x340,0x320,0x330,0x360
          irq=0,3,5,7,9,10,11
          dma=0,3,5,6,7
          typ_napędu=noisp16,Sanyo,Panasonic,Sony,Mitsumi.

          Pamiętaj, że powyższe parametry są wrażliwe na wielkość liter.

9.10 Obsługa CD-ROM Sony CDU31A/CDU33A (cdu31a.o).


Polecenie ładowania:
        /sbin/modprobe cdu31a.o [parametry]

        cdu31a_port=<adres I/O> - ustawia bazowy adres I/O.
        Musi to być określone.

        cdu31a_irq=<interrupt> - Ustawia numer przerwania.
        Nie podanie tego parametru spowoduje wyłączenie przerwań.

9.11 Obsługa CD-ROM Sony CDU535 (sonycd535.o).


Polecenie ładowania:
        /sbin/modprobe sonycd535.o sonycd535=[adres]

        Parametr to adres bazowy twojej karty.

10. Systemy plików

10.1 Obsługa systemu plików Minix (minix.o).


Polecenie ładowania:
        /sbin/modprobe minix.o

        Brak parametrów ładowania.

10.2 Obsługa systemu plików Extended (ext.o).


Polecenie ładowania:
        /sbin/modprobe ext.o

        Brak parametrów ładowania.

10.3 Obsługa systemu plików Second extended (ext2.o).


Polecenie ładowania:
        /sbin/modprobe ext2.o

        Brak parametrów ładowania.

10.4 Obsługa systemu plików xiafs (xiafs.o).


Polecenie ładowania:
        /sbin/modprobe xiafs.o

        Brak parametrów ładowania.

10.5 Obsługa systemu plików DOS FAT (fat.o).


Polecenie ładowania:
        /sbin/modprobe fat.o

        Brak parametrów ładowania.

10.6 Obsługa systemu plików MSDOS (msdos.o).


Polecenie ładowania:
        /sbin/modprobe msdos.o

        Brak parametrów ładowania.
        Wymaga fat.o.

10.7 Obsługa systemu plików VFAT (Windows-95) (vfat.o).


Polecenie ładowania:
        /sbin/modprobe vfat.o

        Brak parametrów ładowania.
        Wymaga fat.o.

10.8 UMSDOS: System plików typu unix nałożony na std. system plików MSDOS FAT(umsdos.o).


 Polecenie ładowania: /sbin/modprobe vfat.o

        Brak parametrów ładowania.
        Wymaga fat.o i msdos.o.

10.9 Obsługa systemu plików NFS (nfs.o).


Polecenie ładowania:
        /sbin/modprobe nfs.o

        Brak parametrów ładowania.

10.10 Obsługa systemu plików SMB (używanie wolumenów WfW, itd...) (smbfs.o).

smbfs jest systemem plików, pracującym w oparciu o protokół SMB. Jest to protokół używany przez systemy Windows for Workgroups, Windows NT i Lan Manager do wzajemnego komunikowania się ze sobą. smbfs zrodził się dzięki programowi samba, napisanemu przez Andrew Tridgella. Program ten zmienia jakikolwiek komputer pracujący w systemie Unix w serwer plików dla stacji DOS lub Windows. Więcej na temat tego interesującego pakietu programów, a także informacje o używaniu SMB i NetBIOS za pośrednictwem TCP/IP przeczytać możesz tutaj: ftp://nimbus.anu.edu.au/pub/tridge/samba/. Znajdziesz tam również wyjaśnienie pojęć takich jak nazwa lub wolumen netbios.

Aby używać smbfs, potrzebujesz specjalny program montujący, który znajduje się w pakiecie ksmbfs, umieszczonym pod adresem sunsite.unc.edu:/pub/Linux/system/Filesystems/smbfs.


Polecenie ładowania:
        /sbin/modprobe smbfs.o

        Brak parametrów ładowania.

10.11 Obsługa systemu plików NCP (podłączanie wolumenów NetWare) (ncpfs.o).

ncpfsjest systemem plików, pracującym w oparciu o protokół NCP, zaprojektowany przez Novell Corporation dla produktu NetWare(tm). NCP jest funckjonalnie zbliżony do NFS, wykorzystywanego w społeczności TCP/IP. Aby zamontować system plików Netware, potrzebny jest specjalny program montujący, który znajduje się w pakiecie ncpfs. Stroną domową ncpfs jest ftp.gwdg.de/pub/linux/misc/ncpfs, ale na sunsite i w innych archiwach lustrzanych również można go znaleźć.

Pokrewne pakiety to linware i mars_nwe, które uzupełniają Linuxa o część funkcjonalności serwerw NetWare.

Strona domowa Linware to: klokan.sh.cvut.cz/pub/linux/linware,

Mars_nwe można znaleźć tu: ftp.gwdg.de/pub/linux/misc/ncpfs.


Polecenie ładowania:
        /sbin/modprobe ncpfs.o

        Brak parametrów ładowania.

        Wymaga ipx.o

10.12 Obsługa systemu plików CD-ROM ISO9660 (isofs.o).


Polecenie ładowania:
        /sbin/modprobe isofs.o

        Brak parametrów ładowania.

10.13 Obsługa systemu plików OS/2 HPFS (tylko do odczytu) (hpfs.o)


Polecenie ładowania:
        /sbin/modprobe hpfs.o

        Brak parametrów ładowania.

10.14 Obsługa systemu plików Systemu V/Coherent (sysv.o).

Jest to linuxowa implementacja systemu plików Systemu V/Coherent.

Obsługuje wszsystkie z poniższych systemów plików:


Polecenie ładowania:
        /sbin/modprobe sysv.o

        Brak parametrów ładowania.

10.15 Obsługa systemu plików Amiga FFS (affs.o).


Polecenie ładowania:
        /sbin/modprobe affs.o

        Brak parametrów ładowania.

10.16 Obsługa systemu plików UFS (tylko do odczytu) (ufs.o).

Ewidentnie do montowania dysków z partycjami FreeBSD i/lub Sun. Nie licząc Kodu Źródłowego, nie istnieje żadna dokumentacja.


Polecenie ładowania:
        /sbin/modprobe ufs.o

        Brak parametrów ładowania.

11. Urządzenia znakowe

11.1 Obsługa modułów sterowników użytkownika (misc.o).

Moduł ten jest używany przez moduły atixlmouse, busmouse, msbusmouse, psaux, wdt i softdog i jest generowany automatycznie w razie potrzeby.


Polecenie ładowania:
        /sbin/modprobe misc.o

        Brak parametrów ładowania.

11.2 Standardowa/ogólna obsługa urządzeń szeregowych (serial.o).

UWAGA: serial.o jest wymagany przez inne moduły, jak ppp.o i slip.o. Również wymagany jest przez mysz szeregową i, co za tym idzie, przez gpm. Jednakże ta zależność nie jest wykrywana przez obecnie dostępne programy narzędziowe i moduł serial.o musi być ładowany ręcznie.


Polecenie ładowania:
        /sbin/modprobe serial.o

        Brak parametrów ładowania.

11.3 Obsługa Cyclades async mux (cyclades.o)


Polecenie ładowania:
        /sbin/modprobe cyclades.o

        Brak parametrów ładowania.

11.4 Obsługa Stallion multiport serial

Te inteligentne karty również wymagają załadowania do nich "firmowego" kodu. Robi się to z poziomu użytkownika poprzez program "stlload" dołączony do pakietu sterowników. Skompiluj ten program wpisując "make" tam, gdzie umieściłeś pliki z pakietu. W najprostszym przypadku możesz wówczas w tym katalogu wydać polecenie:

./stlload -i cdk.sys

Załaduje ono kartę 0 (zakładając, że karta 0 jest kartą EasyConnection 8/64). Aby załadować do karty ONboard, Brumby lub Stallion, wpisz:

./stlload -i 2681.sys

Przeczytaj plik /usr/src/linux/drivers/char/README.stallion.

Obsługa Stallion EasyIO lub EC8/32 (stallion.o).


Polecenie ładowania:
        /sbin/modprobe stallion.o

        Brak parametrów ładowania.

Obsługa Stallion EC8/64, ONboard, Brumby (istallion.o).


Polecenie ładowania:
        /sbin/modprobe istallion.o

        Brak parametrów ładowania.

11.5 Obsługa karty SDL RISCom/8 (riscom8.o).


Polecenie ładowania:
        /sbin/modprobe riscom8.o [options]

        Ten sterownik może obsłużyć do 4 kart naraz.
        Opcje : iobase=0xXXX iobase1=0xXXX iobase2=...
 

11.6 Obsługa drukarki na porcie równoległym (lp.o).


Polecenie ładowania:
        /sbin/modprobe lp.o io=0x378 irq=0

        io = 0
        irq = 0         przy irq=0 będzie działać w trybie zapytywania

        (Detekcja na portach: 0x278, 0x378, 0x3bc)
        Note: załadowanie lp.o bez żadnych parametrów spowoduje inicjalizacje
        wszystkich portów równoległych.

11.7 Obsługa myszy

Obsługa myszy ATIXL (atixlmouse.o).


Polecenie ładowania:
        /sbin/modprobe atixlmouse.o

        Brak parametrów ładowania.
        Wymaga misc.o

Obsługa myszy Logitech (busmouse.o).


Polecenie ładowania:
        /sbin/modprobe busmouse.o

        Brak parametrów ładowania.
        Wymaga misc.o

Obsługa myszy Microsoft (msbusmouse.o).


Polecenie ładowania:
        /sbin/modprobe msbusmouse.o

        Brak parametrów ładowania.
        Wymaga misc.o

Obsługa myszy PS/2 (tzw. "urządzenie dodatkowe") (psaux.o).


Polecenie ładowania:
        /sbin/modprobe psaux.o

        Brak parametrów ładowania.
        Wymaga misc.o

11.8 Obsługa napędów taśmowych

Informację na temat napędów taśmowych SCSI znajdziesz w rozdziale Obsługa SCSI. Obsługa napędów taśmowych QIC-02 nie ma postaci modułu.

Obsługa Ftape (QIC-80/Travan) (ftape.o).


Polecenie ładowania:
        /sbin/modprobe ftape.o tracing=3

        Parametr 'tracing' może przyjmować następujące wartości

        ustaw:          aby otrzymać:
          0             dziury w programie
          1             + błędy
          2             + ostrzeżenia
          3             + informacje            ** Domyślnie **
          4             + więcej informacji
          5             + przebieg programu
          6             + informacje o fdc/dma
          7             + przepływ danych
          8             + wszystko inne

11.9 Obsługa Watchdog Timer

WDT Watchdog timer (wdt.o).


Polecenie ładowania:
        /sbin/modprobe wdt.o

        Brak parametrów ładowania.
        Domyślnie io=0x240 irq=14,
        wszelkie pożądane zmiany dokonaj bezpośrednio w pliku wdt.c.
        Wymaga misc.o

Programowy Watchdog (softdog.o).


Polecenie ładowania:
        /sbin/modprobe softdog.o

        Brak parametrów ładowania.
        Wymaga misc.o

Berkshire Products PC Watchdog (pcwd.o).


Polecenie ładowania:
        /sbin/modprobe pcwd.o

        Brak parametrów ładowania.
        Wymaga misc.o

12. Obsługa dźwięku (sound.o).

Konfigurowanie dźwięku to złożone zadanie, na ten temat napisano kilka plików Readme - w katalogu /usr/src/linux/drivers/sound, po prostu je przeczytaj.


Polecenie ładowania:
        /sbin/modprobe sound.o [option]

        Opcja: dma_buffsize=32768 

13. Zakończenie

W sprawie przedawnionych informacji oraz ewentualnych błędów merytorycznych należy zgłaszać się do autora.

Dzięki,

Lauri Tischler, ltischler@efore.fi

13.1 Od tłumacza

Prawa autorskie wersji polskiej tego dokumentu (c) 1997 są własnością Pawła Olszewskiego (alder@amg.net.pl). Dystrybucja wersji polskiej objęta jest klauzulą analogiczną do zawartej w oryginale.

Jeśli znalazłeś w niniejszym dokumencie jakieś paskudne literówki, błędy ortograficzne, lub inne tego typu numery, ślij informację w pierwszej kolejności do tłumacza, w tej sytuacji autor oryginału jest najprawdopodobniej niewinny.

W kwestii merytorycznej, dokument ten nie różni się specjalnie od oryginału (nie dokonałem żadnych zmian ani poprawek).

Najnowsza wersja tego dokumentu znajduje się wraz z innymi przetłumaczonymi na polski dokumentami serii Linux-HOWTO w archiwum JTZ (Jak To Zrobić): http://www.jtz.org.pl/Html/Module-HOWTO.pl.html. Najświeższa wersja angielska znajduje się tutaj: http://sunsite.unc.edu/mdw/HOWTO/Module-HOWTO.html.

Dzięki,

Pawko Olszewski, alder@amg.net.pl

doc-linux-pl-2002.06.14.orig/html/NET-3-HOWTO.pl.html0100644000175000017500000056762507406502160020344 0ustar covencoven Linux NET-3-HOWTO, Linux w sieci

Linux NET-3-HOWTO, Linux w sieci

Terry Dawson, VK2KTJ, terry@perf.no.itg.telstra.com.au v1.0, 22 luty 1997 wersja polska piotr.pogorzelski@ippt.gov.pl w1.0, kwiecień 1997 wersja polska - korekta Basia Głowacka jastra@gdansk.sprint.pl w1.1, grudzień 2001


Obsługa sieci w jądrze systemu Linux została napisana niemal od zera. Osiągi sieci tcp/ip w najnowszych wersjach jądra sprawiają, że Linux staje się godną uwagi alternatywą dla innych, dominujących w tej dziedzinie systemów. Naszym celem jest opisanie w jaki sposób zainstalować i skonfigurować oprogramowanie sieciowe, oraz różne inne narzędzia pomagające w obsłudze sieci.

1. Zmiany w stosunku do poprzedniej wersji

Dodatki:
        mnóstwo.
Poprawki/uaktualnienia:
        wszystko.

2. Wprowadzenie.

Oryginalny dokument NET-FAQ, napisy przez Matta Welsha w celu zebrania odpowiedzi na najczęściej zadawane pytania na temat pracy Linuksa w sieci, powstał zanim ktokolwiek myślał o Projekcie Dokumentacji Linuksa (LDP). Dokument dotyczył bardzo wczesnych wersji rozwojowych modułów sieciowych jądra. Został zastąpiony przez NET-2-HOWTO, jeden z oryginalnych doumentów projektu LDP. Opisywał oprogramowanie sieciowe znane pod nazwą "wersja 2." i "wersja 3.". W tym dokumencie opisujemy jedynie moduły sieciowe jądra w "wersji 3".

Poprzednie wersje tego dokumentu osiągnęły ogromne rozmiary, ze względu na wielką ilosć materiału, którego dotyczyły. Była to jedna z przyczyn powstania kilku innych dokumentów HOWTO opisujących specyficzne problemy związane z siecią. Wszędzie gdzie będzie to możliwe, będziemy odwoływać się do tych dokumentów i opisywać problemy, które jeszcze nie posiadają własnych dokumentów.

2.1 Uwagi na temat tego dokumentu

Zawsze doceniam wszelkie uwagi, szczególnie wartościowe wnioski. Proszę kierujcie je bezpośrednio do mnie email.

3. Jak korzystać z tego dokumentu (NET-3-HOWTO-HOWTO ?).

Format tego dokumentu różni się od poprzednich wersji. Przegrupowałem podrozdziały, tak aby materiał opisowy zgromadzony na początku dokumentu mogł zostać przez czytalnika pominięty. Po nim występuje ogólny opis zagadnień sieciowych, informacje, które trzeba zrozumieć zanim przejdzie się do ostatniej części dokumentu - technicznej dokuemntacji stosowanej technologii.

Przeczytaj rozdziały ogólne

Informacje tutaj podane odnoszą nię niemal do wszystkich poźniejszych części dokumentu i są niezbędne do ich zrozumienia.

Zastanów się nad swoją siecią

Powinieneś wiedzieć jak jest (lub będzie) zbudowana twoja sieć, dokładnie jaki sprzęt i technologie są (będą) wykorzystywane.

Przeczytaj rodziały opisujące wykorzystywane przez ciebie technologie

Gdy już wiesz co cię konkretnie interesuje, zapoznaj się z wybranymi rozdziałami. Znajdziesz tam szczegóły dotyczące opisywanej technologii.

Wykonaj konfiguracje sieci

Powinieneś spróbować skonfigurować sieć uważnie notując wszystkie napotkane problemy.

Jeśli potrzebujesz poszukaj dalszej pomocy

Jeśli napotkasz problemy, w rozwiązaniu których niniejszy dokument nie będzie pomocny, wtedy zapoznaj się z rozdziałem poświęconym znajdowaniu dalszej pomocy i zgłaszaniu znalezionych błędów.

Baw się dobrze!

Sieć to dobra zabawa, ciesz się nią.

4. Informacje ogólne na temat pracy Linuksa w sieci.

4.1 Krótka historia rozwoju modułów sieciowych jądra Linuksa.

Opracowanie zupełnie nowej implementacji protokołu tcp/ip, pracująego równie dobrze jak inne istniejące implementacje nie było łatwym zadaniem. Decyzja aby napisać wszystko od zera została podjęta w czasie gdy istniała niepewność, że istniejące implementacje mogą zostać zaprzepaszczone przez restrykcyjne licencje, z powodu toczącej się sprawy sądowej rozpoczętej przez U.S.L. i w momencie gdy sieć była przepełniona świeżym entuzjazmem aby zrobić to inaczej, a być może nawet lepiej niż zostało do tej pory zrobione.

Pierwszym ochotnikiem przewodzenia w pracach nad rozwojem modułów jądra do obsługi sieci był Ross Biro <biro@yggdrasil.com>. Wykonał prostą i niepełną, lecz w większości przypadków działającą implementacje podstawowych procedur, uzupełnionych przez procedury sterownika karty sieciowej ethernet WD-8003. To wystarczyło, aby przyciągnąć rzeszę ludzi, umożliwić im testowanie i eksperymentowanie. Niektórm udało się nawet doprowadzić do włączenia swoich komputerów do Internetu.

Nacisk społeczności Linuksowej na rozwój obsługi sieci przez jądro wciąż wzrastał. Gdy korzyści i stysfakcja z wykonywanej pracy przestały rekompensować w wystarczającym stopni poświecenia i odpieranie rosnących nacisków, Ross zrezygnował z roli prowadzącego budowę oprogramowania sieciowego. Jego wysiłki poświęcone na stworzenie w tak burzliwych czasach czegoś użytecznego stały się katalizatorem przyszłych prac i należy je zaliczyć do najważniejszych czynników, które przyczyniły się do osiągnięcia sukcesu.

Orest Zborowski <obz@Kodak.COM> dołączył do jądra oryginalny interfejs programistyczny gniazd BSD. Był to ogromny krok naprzód, ponieważ umożliwiał proste przenoszenie na Linuksa wielu istniejących programów sieciowych, bez konieczności ich nadmiernej modyfikacji.

Mniej więcej w tym samym czasie Laurence Culhane <loz@holmes.demon.co.uk> opracował pierwszy sterownik protokołu SLIP. Wiele osób, które nie posiadały dostępu do sieci Ethernetowych otrzymało możliwość eksperymentowania z nowym oprogramowaniem sieciowym. Ponownie część osób wykorzystała te oprogramowanie do przyłączania się do Internetu. W ten sposób uzmysłowili reszcie jakie możliwości otworzyłyby się przed Linuksem, gdyby tylko posiadał pełną obsługę sieci. Zwiększyło również liczbę osób aktywnie wykorzystujących i eksperymentujących z istnejącym oprogramowaniem.

Jednym z ludzi, który równie aktywnie pracował nad zbudowaniem modułów obsługi sieci w jądrze Linuksa był Fred van Kempen <waltje@uwalt.nl.mugnet.org>. Po krótkim okresie niepewności wywołanym rezygnacją Rossa Biro z prowadzenia projektu, Fred zaoferował swój czas i umiejętności, i przyjął tę rolę w zasadzie bez żadnych sprzeciwów. Fred miał ambitne plany na temat kierunków rozwoju oprogramowania obsługi sieci w jądrze Linuksa i aktywnie je realizował. Stworzył oprogramowanie znane pod nazwą NET-2 (oprogramowanie Rossa nosiło nazwę NET), z którego wielu ludzi korzystało przez długi czas. Fred wprowadził wiele inowacji do programu rozwoju oprogramowania, dynamiczny interfejs urządzeń, obsługę protokołu AX.25 (Amateur Radio) i bardziej modułowe implementacje obsługi funkcji sieciowych. Oprogramowanie NET-2 było wykorzystywane przez stale rosnącą grupę ludzi, w miarę jak świat dowiadywał się, że coś takiego istnieje. Oprogramowanie sieciowe nadal było rozpowszechniane w postaci łatek do standardowej dystrybucji jądra i przez długi czas nie było rozpowszechniane razem z jądrem Linuksa. NET-FAQ i późniejszy NET-2-HOWTO opisywały całkiem skomplikowana procedurę uruchomienia sieci pod Linuksem. Fred skoncentrował się na wprowadzaniu nowości do standardowej implementacji sieci, a to zabierało czas. Społeczność użytkowników zaczynała się niecierpliwić oczekując na coś co działałoby bezbłędnie i zadawalałoby 80% z nich. I podobnie jak w przypadku Rossa, naciski na Freda, jako koordynatora projektu cały czas wzrastały.

Alan Cox <iialan@www.linux.uk.org> zaproponował rozwiązanie zaistniałej sytuacji. Zaproponował, że weźmie kod napisany przez Freda i przetestuje go. W ten sposób zapewni jego stabilność satysfakcjonując grono niecerpliwych użytkowników, uwalniając tym samym Freda od licznych nacisków i umożliwiając mu dalszą pracę nad rozwojem oprogramowania. Tak też zrobił, co zakończyło się pełnym sukcesem. Pierwsza wersja oprogramowania stworzona przez Alana nosiła nazwę NET-2D (Debugged - odpluskwiony). Oprogramowanie pracowało stabilnie w większości standardowych konfiguracji i większość użytkowników była wreszcie szczęśliwa. Alan bez wątpienia posiadał umiejętności i pomysły, które chciał zrealizować ku pożytkowi całej społeczności Linuksa. Następstwem było wiele dyskusji na temat kierunków rozwoju oprogramowania sieciowego NET-2 Linuksa. Rozwinęły się dwie różne szkoły, jedna, której ideą było "wpierw niech to działa, później niech będzie to lepsze" i druga z ideą "niech wpierw to będzie lepsze". Ostatecznie wmieszał się w to Linus, oferując swoje wsparcie Alanowi w jego wysiłkach włączając jego kod do standardowej dystrybucji jadra Linuksa. To postawiło Freda w bardzo trudnej pozycji. Został pozbawiony ogromnej rzeszy użytkowników aktywnie testujących i eksperymentujących z jego oprogramowaniem sieciowym, co oznaczało, że jego dalszy rozwój byłby trudny i powolny. Fred kontynuował przez krótki czas swoje prace, ostatecznie rezygnując i pozstawiając Alana jako nowego lidera w wysiłkach nad udoskonaleniem oprogramowania sieciowego Linuksa.

Wktrótce swoje talenty w tematyce ujawnił Donald Becker <becker@cesdis.gsfc.nasa.gov> i stworzył ogroną liczbę sterowików kart sieciowych ethernet, niemal wszystkich dostępnych w obecnych wersjach jądra. Byli również inni, których wkład w tej dziedzinie był znaczący, lecz praca Donalda była tak płodna, że wymaga osobnej uwagi.

Alan kontynuował pracę nad szlifowaniem oprogramowania NET-2-D, równocześnie starając się zająć problemami określonymi jako 'do zrobienia' (TODO). Gdy jądro Linuksa rozwinęło się na tyle by osiągnąć wersję 1.3.*, jego część dotycząca obsługi sieci składała się niemal z wersji NET-3, na której bazyją aktualne wersje. Alan pracował nad wieloma aspektami i funkcjami sieciowymi otrzymując wsparcie od wielu utalentowanych ludzi należących do internetowej społeczności Linuksa. Dzięki temu oprogramowanie rozrastało się jednocześnie w wielu kierunkach. Alan opracował dynamiczne sterowniki urządzeń i pierwsze implementacje standardów AX.25 i IPX. Kontynuował pracę, powoli restrukturyzując i wprowadzając ulepszenia, aż uzyskał obecną postać.

Obsługa PPP została zaimplementowana przez Michaela Callahana <callahan@maths.ox.ac.uk> i Ala Longyeara <longyear@netcom.com>. Miało to ogromne znaczenie i ogromnie zwiększyło libczę osób aktywnie wykorzystujących Linuksa w zastosowaniach sieciowych.

Jonathon Naylor <jsn@cs.nott.ac.uk> znacznie usprawnił początkowy kod Alana obsługi protokołu AX.25. Wprowdził obsługę protokołu NetRom. Obsługa AX.25/NetRom jest ogromnie ważna, ponieważ żaden inny system operacyjny nie posiada w standardowej dystrybucji obsługi tych protokołów.

Były również ogromne rzesze innych ludzi, którzy w zanaczący sposób przyczynili się do rozwoju oprogramowania sieciowego Linuksa. Wiele z tych nazwisk znajdziesz później w częściach omawiających poszczególne technologie. Inni przyczynili się do rozwoju bądź opracowując różne moduły oprogramowania, bądź przysyłająć poprawki usuwające różne błędy, bądź oferując sugestie, raporty z testów lub choćby wsparcie moralne dla aktywnych twórców. Każdy z nich może twierdzić, że brał w tym udział i oferował tyle ile mógł. Kod jądra Linuksa przeznaczony do obsługi sieci jest świetnym przykładem rezultatów jakie można osiągnąć pracując w tak anarchiczny sposób, jaki to miało miejsce w tym przypadku. Jeśli się to jeszcze nie zadziwiło, to pamiętaj o jednym: prace rozwojowe nadal trwają.

4.2 Skąd zdobyć inne informacje na temat zastosowańsieciowych Linuksa.

Istnieje kilka miejsc, gdzie można znaleźć dobre informacje na temat sieciowych zastosowań Linuksa.

Alan Cox, aktualny opiekun i lider oprogramowania sieciowego Linuksa, prowadzi stronę internetową zawierającą najciekawsze i najważniejsze informacje na temat aktualnego rozwoju sieci w Linuksie: www.uk.linux.org.

Innym znakomitym miejscem jest książka napisana przez Olafa Kircha pod tytułem Poradnik dla administratorów sieci. Powstała w ramach Projektu dokumentacji Linuksa i jest dostępna tutaj: Poradnik dla administratorów sieci - wersja HTML lub w innych formatach tutaj archiwum ftp sunsite.unc.edu LDP. Książka Olafa jest całkiem wyczerpująca i dostarcza dobrego, stojącego na wysokim poziomie przeglądowego spojrzenia na konfigurację sieci pod Linuksem.

Istnieje specjalna grupa dyskusyjna (angielskojęzyczna), poświęcona sieci i podobnym problemom: comp.os.linux.networking

Istnieje angielskojęzyczna lista dyskusyjna, na którą możesz się zapisać i gdzie możesz zadawać pytania odnoszące się do funkcji sieciowych Linuksa. Aby się zapisać musisz wysłać następujący list:

To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:

subscribe linux-net

W większości serwerów IRC istnieją zwykle kanały #linux, na których obecni tam ludzie będą potrafili odpowiedzieć na pytania dotyczące sieci pod Linuksem.

Pamiętaj, że zgłaszając jakikolwiek problem należy podawać jak najwięcej dotyczących go szczegółów. Koniecznie należy podać wersje używanego oprogramowania, sczególnie wersję jądra (uname -a), wersję takich narzędzi jak pppd lub dip i dokładną naturę problemu na który napotkałeś. To znaczy dokładnie zanotowane komunikaty systemowe jakie otrzymałeś i dokładny opis składni wydawanych poleceń.

4.3 Skąd zdobyć inne, nie związane z Linuksem informacje natemat technik sieciowych.

Jeśli szukasz podstawowych informacji o tcp/ip, polecam zapoznanie się z następującymi dokumentami:

wprowadzenie do tcp/ip

dostępne w wersji tekstowej i postscriptowej.

tcp/zarządzanie protokołem ip

dostępne w wersji tekstowej i postscriptowej.

Jeśli poszukujesz dokładniejszych informacji na temat sieci tcp/ip mocno polecam:

"Internetworking with TCP/IP"
by Douglas E. Comer

ISBN 0-13-474321-0
Prentice Hall publications.

Jeśli chcesz się nauczyć w jaki sposób budować programy sieciowe w środowiskach zgodnych z systemem UNIX, mocno polecam:

"Unix Network Programming"
by W. Richard Stevens

ISBN 0-13-949876-1
Prentice Hall publications.

Możesz również skorzystać z grupy dyskusyjnej comp.protocols.tcp-ip.

Istotnym źródłem konkretnych informacji technicznych związanych z Internetem i protokołem tcp/ip są dokumenty RFC. RFC to skrót od "Request For Comments", jest to standardowy sposób ogłaszania i dokumentowania obowiązujących standardów internetowych. Istnieje wiele miejsc skąd można poprać dokumenty RFC. Większość z nich to archiwa ftp, część udostępnia dokumenty RFC również przez interfejs WWW dostarczając jednocześnie możliwość przeszukiwania wszystkich dokumentów w poszukiwaniu słów kluczowych.

Jednym z archimum dokumntów RFC jest: baza danych Nexor RFC.

5. Podstawowe informacje na temat konfigurowania sieci.

Aby poprawnie skonfigurować sieć, musisz zapoznać się i zrozumieć informacje prezentowane w kolejnych podrozdziałach. Są to podstawowe zasady funkcjonowania sieci, niezależnie od jej wewnętrznej natury.

5.1 Czego potrzebuję aby rozpocząć?

Zanim zaczniesz budować lub konfigurować swoją sieć będziesz potrzebował kilku rzeczy. Najważniejsze z nich to:

Aktualne źródła jądra.

Ponieważ jądro którego używasz może nie posiadać obsługi sieci, lub kart sieciowych, które posiadasz, będziesz prawdopodobnie potrzebował źródła jądra, abyś mogł skompilować nowe jądro z odpowiednimi opcjami.

Najnowszą wersją jądra mozna uzyskać z: ftp.funet.fi.

Zwykle pliki źródłowe powinny być rozpakowane do katalogu /usr/src/linux. Jeśli potrzebujesz informacji jak dodać do jądra dodatkowe łaty lub jak skompilować jądro powinieneś przeczytać Kernel-HOWTO.

Jeśli wyraźnie nie zostało to zaznaczone, zalecam pozostanie przy standardowych wersjach jądra (te z parzystymi numerami wersji po pierwszej kropce). Wersje testowo-rozwojowe (z nieparzystą drugą liczbą) mogą mieć zmienioną strukturę wewnętrzną lub wprowadzone inne zmiany uniemożliwiające poprawną współpracę z innym oprogramowaniem zainstalowanym na twoim systemie. Jeśli nie jesteś pewien, że poradzisz sobie z tego rodzaju problemami, w połączeniu z możliwosćią wystąpienia błędu w innym oprogramowaniu, nie używaj wersji rozwojowych.

Aktualne narzędzia sieciowe.

Narzędzia sieciowe to programy służące do konfigurowania urządzeń sieciowych Linuksa. Np. pozwalają na przydzielenie urządzeniu numeru adresu IP lub na skonfigurowanie routingu (marszruty).

Nowe dystrybucje Linuksa zawierają wszelkie niezbędne narzędzia sieciowe. Jeśli ich jescze nie zainstalowałeś, powinieneś to teraz zrobić.

Jeśli nie instalowałeś Linuksa z dystrybucji, będziesz musiał pobrać źródła i skompilować narzędzia samodzielnie. To nie jest trudne.

Narzędziami sieciowymi opiekuje się Bernd Eckenfels i są dostępne pod adresem: ftp.inka.de lub kopia ftp.linux.uk.org.

Pamiętaj aby wybrac wersję najbardziej odpowiednią dla wersji jądra, które posiadasz, postępuj zgodnie z uwagami zawartymi w instalowanym pakiecie.

Aby skonfigurować wersję aktualną w momencie pisania tego dokumentu musisz wykonać następujące polecenia:

#
# cd /usr/src
# tar xvfz net-tools-1.32-alpha.tar.gz
# cd net-tools-1.32-alpha
# make config
# make
# make install
#

Dodatkowo jeśli zamierzasz skonfigurować firewall lub korzystać z funkcji IP Masquerade, potrzebujesz programu ipfwadm. Najnowszą wersję można zdobyć tutaj: ftp.xos.nl. Pamiętaj, że dostępnych jest kilka wersji. Musisz wybrać tę, która najlepiej współpracuje z jądrem, które posiadasz.

Aby skonfigurować wersję aktualną w momencie pisania tego dokumentu musisz wykonać następujące polecenia:

#
# cd /usr/src
# tar xvfz ipfwadm-2.3.0.tar.gz
# cd ipfwadm-2.3.0
# make
# make install
#

Programy-aplikacje sieciowe.

Sieciowe programy użytkowe (aplikacje sieciowe) to takie, jak np. telnet,ftp i ich odpowiedniki po stronie serwera. Dystrybucją większości z nich zajmuje się David Holland <dholland@hcs.harvard.edu> . Można je zdobyć z ftp.uk.linux.org.

Aby skonfigurować wersję aktualną w momencie pisania tego dokumentu musisz wykonać następujące polecenia:

#
# cd /usr/src
# tar xvfz /pub/net/NetKit-B-0.08.tar.gz
# cd NetKit-B-0.08
# more README
# vi MCONFIG
# make
# make install
#

Adresy.

Adresy protokołu IP (Internet Protocol) składają się z czterech bajtów. Zwykle zapisuje się w notacji zwanej 'dziesiętną z kropkami' (decimal dotted notation). Każdy bajt jest zamieniany na liczbę dziesiętną (0-255), opuszczając wszelkie zera na początku (chyba, że liczba jest równa zero) i zapisywany kolejno, rozdzielony jeden od drugiego kropką `.'. Konwencja wymaga, aby każdy interfejs sieciowy komputer czy routera posiadał własny numer IP. Można ten sam numer przydzielać do różnych urządzeń sieciowych jednego komputera, lecz zwykle każdy interfejs posiada własny numer IP.

Numery IP sieci to nieprzerwane sekwencje adresów IP. Wszystkie adresy należące do jednej sieci mają wspólną liczbę cyfr w pełnym adresie IP. Część adresu wspólna dla wszystkich adresów IP należących do sieci nazywa się numerem sieci (adresu IP).Pozostałe cyfry określają adres komputera . Liczba bitów które są wszpólne dla wszystkich adresów w ramach jednej sieci nazywamy maską sieci (netmaską). Rolą netmaski jest określenie które adresy przynależą do sieci, której ona dotyczy, a które nie. Rozważmy następujący przykład:

-----------------  ---------------
Host Address       192.168.110.23
Adres komputera
Network Mask       255.255.255.0
Netmaska
Network Portion    192.168.110.
Cześć sieciowa adresu
Host portion                  .23
Cześć komputerowa adresu
-----------------  ---------------
Network Address    192.168.110.0
Adres sieci
Broadcast Address  192.168.110.255
Adres ogłoszeniowy (informacja wysłana pod ten adres dotrze do
wszystkich komputerów danej sieci)
-----------------  ---------------

Jeśli dowolny adres IP poddamy operacji bitowej koniunkcji z jego netmaską, otrzymamy w ten sposób adres sieci, do której on należy. Adres sieci jest zatem najmniejszym adresem w puli adresów danej sieci z zawsze wypełnioną zerami częscią komputerową adresu.

Adres ogłoszeniowy (broadcast) to specjalny adres IP. Wszystkie komputery w danej sieci prócz nasłuchiwania pakietów adresowanych pod ich numer IP, nasłuchują również pakietów kierowanych na ten adres. Jeśli chemy wysłać pakiet, który ma dotrzeć do wszystkich komputerów w danej sieci, korzystamy właśnie z adresu ogłoszeniowego. Różnego rodzaje informacje dotyczące np. trasowania (routingu) lub zawierające różne ostrzerzenia nadawane są właśnie na ten adres, tak aby wszystkie komputery otrzymały go jednocześnie. Istnieją dwa standardy jak powinien wyglądać adres ogłoszeniowy. W powyższym przykładzie był to 192.168.110.255. Z nieznanych przyczyn w niektórych miejscach jako adresu ogłoszeniowego używa się adresu sieci. W praktyce zasadniczo nie ma znaczenia, której konwencji uzywamy, pod warunkiem, że wszystkie komputery mają skonfigurowany adres ogłoszeniowy w ten sam sposób.

Z przyczyn administracyjnych w początkowym okresie rozwoju protokołu IP, pewne grupy adresów IP zostału połączone w sieci, które z kolei zostały połączone w klasy. Te klasy dostarczają określoną liczbę różnej wielkości sieci, które mogą być przydzielane użytkownikom. Wygląda to mniej więcej tak:

----------------------------------------------------------
| Klasa   | Netmaska      | Adresy sieciowe              |
| sieci   |               |                              |
----------------------------------------------------------
|    A    | 255.0.0.0     | 0.0.0.0    - 127.255.255.255 |
|    B    | 255.255.0.0   | 128.0.0.0  - 191.255.255.255 |
|    C    | 255.255.255.0 | 192.0.0.0  - 223.255.255.255 |
|Multicast| 240.0.0.0     | 224.0.0.0  - 239.255.255.255 |
----------------------------------------------------------

Z których adresów powinieneś korzystać zależy bezpośrednio od tego co robisz. Aby uzyskać wszystkie adresy których potrzebujesz możesz być zmuszony do wykonania kombinacji następujących działań:

Instalacja Linuksa w istniejącej sieci IP

Jeśli chesz zainstalować Linuksa w istniejącej sieci IP powinieneś skontaktować się z administratorem sieci i poprosić go o następujące informacje:

Następnie powinieneś skonfigurować urządzenie sieciowe podając uzyskane informacje. Nie możesz wziąć ich z powietrza i oczekiwać, że wszystko będzie działać poprawnie.

Budowanie nowej sieci, która nigdy nie będzie podłączona do internetu

Jeśli budujesz prywatną sieć i nie masz zamiaru podłączać ją do Internetu to możesz wybrać zupełnie dowolne numery IP. Jednak dla bezpieczeństwa i porządku powinieneś skorzystać z grupy adresów IP pozostawionych dokładnie w tym celu. Są one określone w dokumencie RFC1597:

-----------------------------------------------------------
|         Zarezerwowane prywatne adresy IP                |
-----------------------------------------------------------
| Klasa   | Netmaska      | Adres komputera               |
| sieci   |               |                               |
-----------------------------------------------------------
|    A    | 255.0.0.0     | 10.0.0.0    - 10.255.255.255  |
|    B    | 255.255.0.0   | 172.16.0.0  - 172.31.255.255  |
|    C    | 255.255.255.0 | 192.168.0.0 - 192.168.255.255 |
-----------------------------------------------------------

Powinieneś się wpierw zdecydować jak wielka będzie twoja sieć, a następnie wybrać tyle adresów IP ile potrzebujesz.

5.2 Gdzie umieścić polecenia konfiguracyjne ?

Istnieje kilka sposobów realizacji procedury uruchamiania systemu Linux. Po załadowaniu jądra uruchamiany jest program o nazwie `init'. Program init odczytuje swój plik konfiguracyjny /etc/inittab i kontynuuje proces uruchamiania systemu. Istnieje kilka odmian programu init i to jest właśnie przyczyna różnic w konfiguracji między różnymi dystrybucjami czy komputerami.

Zwykle plik /etc/inittab zawiera pozycję wyglądającą mniej więcej tak:

si::sysinit:/etc/init.d/boot

Ten wiersz określa nazwę skryptu który ostatecznie jest odpowiedzialny za procedurę startową. Jest to mniej więcej odpowiednik pliku AUTOEXEC.BAT w DOSie.

Skrypt startowy uruchamia zwykle różne inne skrypty i sieć jest konfigurowana zwykle jednym z takich skryptów.

Poniższa tabela może posłużyć jako przewodnik po twoim systemie:

-------------------------------------------------------------------------------
Dystryb. |Konfiguracja interfeju(karty)/routingu      | Inicjalizacja
-------------------------------------------------------------------------------
Debian   |/etc/init.d/network                         |/etc/init.d/netbase     
         |                                            |/etc/init.d/netstd_init
         |                                            |/etc/init.d/netstd_nfs
         |                                            |/etc/init.d/netstd_misc
-------------------------------------------------------------------------------
Slackware|/etc/rc.d/rc.inet1                          |/etc/rc.d/rc.inet2 
-------------------------------------------------------------------------------
RedHat   |/etc/sysconfig/network-scripts/ifup-<ifname>|/etc/rc.d/init.d/network
-------------------------------------------------------------------------------

Większość nowocześnych dystrybucji zawiera program, który umożliwi konfigurację wielu podstawowych interfejsów sieciowych. Jeśli masz taki program powinieneś sprawdzić czy jest on dla ciebie wystarczający, zanim zdecydujesz się na ręczną modyfikacje.

-----------------------------------------
Dystryb.  | Program konfiguracji sieci   
-----------------------------------------
RedHat    | /sbin/netcfg
Slackware | /sbin/netconfig
-----------------------------------------

5.3 Tworzenie interfejsów sieciowych.

W większości systemów Unix urządzenia sieciowe znajdują się w katalogu dev. W Linuksie tak nie jest. Linux tworzy urządzenia sieciowe dynamicznie, dlatego nie wymaga istnienia plików urządzeń sieciowych.

W większości przypadków urządzenia sieciowe są tworzone automatycznie przez sterowniki tych urządzeń w czasie ich inicjacji i rozpoznawania sprzętu. Na przykład sterowniki sieciowych kart ethernetowych tworzą interfejsy o nazwach eth[0..] sekwencyjnie w miarę rozpoznawania kolejnych urządzeń. Pierwsz znaleziona karta ethernetowa staje się urządzeniem eth0, druga eth1 itd.

Jednak w niektórych przypadkach, zwykle kiedy korzystamy z protokołów SLIP lub PPP, urządzenia sieciowe są tworzone na żądanie programów wykonywanych przez użytkownika. Odbywa się podobny sekwencyjny przydział nazw urządzeń, lecz nie dzieje się to w sposób automatyczny w czasie ładowania systemu. Dzieje się tak dlatego, że w przeciwieństwie do kart ethetnetowych liczba aktywnych interfejsów slip lub ppp w całym okresie pracy komputera może się zmieniać. Powiemy o tym dokładniej w dalszej części.

5.4 Konfiguracja interfejsu sieciowego.

Jeśli posiadasz już wszelkie niezbędne oprogramowanie i informacje o potrzebnych adresach sieciowych możesz rozpocząć konfigurację interfejsu. Kiedy mówimy o konfiguracji interfejsu sieciowego mamy na myśli proces przydzielenia mu odpowiedniego adreu IP i nadania odpowiednich wartości innym jego parametrom. W tym celu najczęściej posługujemy się programem ifconfig (interface configure).

Zwykle używa się go sposób podobny do podanego poniżej:

# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up

W tym przypadku konfiguruję kartę ethernetową `eth0' nadając jej adres IP `192.168.0.1' i netmaskę `255.255.255.0'. Parametr `up' na końcu wiersza oznacza, że intefejs powinien zostać aktywowany (rozpocząć pracę).

Jądro konfigurując interfejsy sieciowe przyjmuje pewne domyślne wartośći parametrów. Na przykład mógłbyś podać adres IP i adres ogłoszeniowy (broadcast) danego interfejsu, lecz jeśli tego nie zrobisz jądro znajdzie sensowne wartości dla tych parametrów na podstawie klasy konfigurowanego adresu IP. W moim przykładzie jądro przyjmie, że jest interfejs jest konfigurowany w sieci klasy C i nada adresowi sieci wartość `192.168.0.0', a adresowi ogłoszeniowemu `192.168.0.255'.

Polecenie ifconfig posiada znacznie więcej opcji. Najważniejsze z nich to:

up

włącznie interfejsu.

down

wyłączenie interfejsu.

[-]arp

włączenie lub wyłączenie korzystania z protokołu ARP na tym interfejsie

[-]allmulti

włączenie lub wyłączenie korzystania z trybu 'promoscious'. Jest to tryb pracy, w którym urządzennie może być zmuszone do odbierania wszelkich pakietów, a nie tylko tych adresowanych bezpośrednio do niego. Jest bardzo ważna dla programów tcpdump i innych podglądaczy pakietów.

mtu N

ustawienie wielkości parametru MTU danego urządzenia.

netmask addr

adres sieci, do której należy (jest podłączony) interfejs.

irq addr

ten parametr ma zastosowanie tylko dla niektórych modułów sprzętowych. Pozwala na ustawienie wartości przerwania IRQ z którego powinno korzystać dane urządzenie.

[-]broadcast [addr]

pozwala na włączenie odbierania pakietów skierowanych na podany adres ogłoszeniowy, lub na zablokowanie odbierania tych pakietów.

[-]pointopoint [addr]

pozwala na podanie adresu komputera na drugim końsu połączenia point-to-point obsługiwanego przez ten interfejs. Ma to miejsce w przypadku takich protokołów jak slip czy ppp.

hw <type> <addr>

pozwala na określenie adresu sprzętowego urządzenia lecz tylko dla ograniczonego rodzaju urządzeń. Nie jest często używany w sieciach Ethernet, za to często wykorzystuje się go w sieciach AX.25.

Polecenie ifconfig można stosować dla każdego interfejsu sieciowego. Niektóre programy użytkownika, jak pppd czy dip korzystają z niego w celu skonfigurowania interfejsu sieciowego, tuż po jego utworzeniu. W takim przypadku nie jest potrzebna ręczna konfiguracja tych urządzeń.

5.5 Konfiguracja resolvera nazw.

`Resolver nazw ' jest częscią standardowej biblioteki Linuksa. Jego podstawową funkcją jest zamiana wygodnych dla człowieka nazw komputerów, jak `ftp.funet.fi' na ich adres 128.214.248.6, którym posługują się komputery.

Co to jest nazwa?

Prawdopodobnie spotkałeś się z nazwami komputerów, lecz być może nie wiesz w jaki sposób są konstruowane lub rozkładane. Nazwy domen internetowych są w swojej naturze hierachiczne, to znaczy posiadają strukturę drzewiastą. domena jest rodziną, grupą nazw. Domena może być podzielona na poddomeny (subdomain). Domena najwyższego poziomu (top level domain) jest domeną, która jednocześnie nie jest poddomeną. Domeny najwyższego poziomu są określone w dokumencie RFC-920. Poniżej kilka przykładów domen najwyższego poziomu.

COM

organizacje komercyjne

EDU

organizacje edukacyjne

GOV

organizacje rządzowe

MIL

organizacje wojskowe

ORG

inne organizacje

oznaczenie kraju

dwuliterowe kody państw, reprezentujące konkretne państwo.

Każda z domen najwyższego poziomu posiada poddomeny. Domey najwyższego poziomu o nazwach odpowiadających kodom państw, są zwykle podobnie podzielone, jak domeny najwyższego poziomu tzn. można tzm znaleźć poddomeny com, edu, gov, mil i org. Na koniec otrzymujemy com.au i gov.au dla organizacji komercyjnych i rządowych w Australii. Z przyczyn historycznych większość domen należących do domen najwyższego poziomu dotyczy organizacji amerykańskich, choć Stany Zjednoczone mają również własną domenę `.us'.

Następny poziom podziału odzwierciedla zwykle nazwę instytucji/organizacji. Dalsze poddomeny różnią się w swojej naturze, często ten poziom domen jest zależny od wewnętrznej struktury instytucji, lecz może być zależny od dowolnego, rozsądnego kryterium przyjętego przez osoby zarządzające siecią w danej instytucji.

Ostatni w strukturze człon domeny, lecz pierwszy z lewej w jej nazwie oznacza nazwę komputera (hostname) i musi być jednoznaczny w danej poddomenie. Pozostała część jezt nazywana domeną danego komputera (domainname), a całość jest nazywana `Fully Qualified Domain Name FQDM' - Pełna nazwa domenowa.

Biorąc za przykład mój komputer pocztowy, jego FQDN to `perf.no.itg.telstra.com.au'. To znaczy, że komputer nazywa się `perf', a domena `no.itg.telstra.com.au'. Nazwa mojej domeny rozpoczyna się od członu oznaczającego kraj, Australię. Ponieważ jesteśmy organizacją komercyjną kolejnym poziomem jest `com'. `telstra' oznacza nazwę firmy (starą), a dalsze człony są pochodną wewnętrznej struktury naszej firmy. Moj komputer należy do Information Technolog Group w sekcji Network Operations.

Jakie informacje będą niezbędne.

Musisz wiedzieć do jakiej domeny należy twój komputer. Oprogramowanie resolwera nazw wykonuje swoją pracę odwołując się do serwera DNS (Domain Name Server), będziesz potrzebował adres IP najbliższego serwera DNS.

Musisz poprawić trzy pliki. Omówię każdy z nich.

/etc/resolv.conf

/etc/resolv.conf jest głównym plikiem konfiguracyjnym resolwera nazw. Posiada bardzo prosty format. Jest to plik tekstowy zawierający jedno polecenie na wiersz. Najczęscieściej stosuje się trzy słowa kluczowe:

domain

określa nazwę domeny, do której należy dany komputer

search

określa listę domen, które mają być przeszukiwane w poszukiwaniu podanej nazwy komputera (w przypadku gdy nazwa komputera nie została podana w postaci FQDN)

nameserver

może być powtórzone wielokrotnie, określa adres serwera DNS

przykładowy plik /etc/resolv.conf mógłby wyglądać nastepująco:

domain maths.wu.edu.au
search maths.wu.edu.au wu.edu.au
nameserver 192.168.10.1
nameserver 192.168.12.1

W przykładzie podaliśmy, że podstawową domeną, do której należy komputer i która będzie dodawana do nazwy komputera, jeśli nie została podana w formacie FQDN jest maths.wu.edu.au. Jeśli komputer nie zostanie znaleziony w tej domenie resolwer przeszuka jeszcze domenę wu.edu.au. Podano również adresy IP dwóch serwerów DNS.

/etc/host.conf

Plik /etc/host.conf to plik, które określa niektóre zachowania resolvera. Jego format jest dokładnie opisany na stronie podręcznika (man resolv+). W większości przypadków wystarczy taki plik:

                          
order hosts,bind                                          
multi on  

Ta konfiguracja informuje resolver, że poszukując nazwy komputera należy wpierw sprawdzać zawartość pliku /etc/hosts, zanim zacznie się zadawać pytania serwerowi DNS. Oznacza również, że należy przekazywać wszystkie znalezione w tym pliku adresy IP odpowiadające nazwie poszukiwanego komputera, a nie tylko pierwszy z nich.

/etc/hosts

Plik /etc/hosts jest to miejsce, gdzie umieszcza się nazwy i adresy lokalnych komputerów. Jeśli umieścisz w tym pliku nazwę i adres komputera, nie musisz pytać się o jego adres serwera DNS. Wadą tego rozwiązania jest to, że musisz pamiętać aby informacje zawarte w tym pliku były aktualne. W dobrze zarządzanym sytemie w niniejszym pliku można zwykle znaleźć nazwę interfejsu pętli zwrotnej i nazwy lokalnych komputerów.

# /etc/hosts
127.0.0.1      localhost loopback
192.168.0.1    nazwa.tego.komputera

Możesz podać więcej niż jedną nazwę odpowiadającą danemu numerowi IP, jak to zrobiliśmy w powyższym przykładzie w przypadku lokalnej pętli zwrotnej.

5.6 Konfiguracja interfejsu pętli zwrotnej

Interfejs pętli zwrotnej (`loopback' interface) jest interfejsem specjalnego rodzaju, umożliwiającym nawiązywanie połączeń z samym sobą. Istnieje wiele przyczyn, dla których mogłbyś chcieć to robić. Na przykład w celu przetestowania oprogramowania sieciowego, bez konieczności zawracania głowy komukolwiek innemu. Adres `127.0.0.1' został przypisany specjalnie dla tego interfejsu. Dlatego niezależnie na którym komputerze bedziesz pracował, jeśli połączysz się z komputerem o adresie 127.0.0.1 zawsze to będzie ten komputer, z którego próbujesz nawiązać połączenie.

Skonfigurowanie interfejsu pętli zwrotnej jest proste, musisz się upewnić, że przy starcie sytemu wykonuje się następujące polecenie:

# ifconfig lo 127.0.0.1
# route add -host 127.0.0.1 lo

Więcej na temat polecenia route powiemy w następnym rozdziale.

5.7 Trasowanie (routing).

Trasowanie ruchu (routing) to ogromny temat. Można na ten temat napisać bardzo dużo. Większość z was spotka się z całkiem prostymi konfiguracjami trasowania, a część nie. Opowiem o podstawowych prawach trasowania ruchu. Jeśli potrzebujesz bardziej szczegółowych informacji radzę zapoznać się z dokumentami wspomnianymi na początku.

Rozpocznijmy od definicji. Co to jest trasowanie pakietów IP. Oto jedna z definicji, którą ja używam:

Trasowanie pakietów IP to proces, w którym komputer z przyłączeniami do wielu sieci decyduje, gdzie wysłać otrzymane pakiety.

Zilustrujmy to przykładem. Wyobraźmy sobie typowy biurowy router. Mógłby mieć połączenie PPP z internetem, kilka segmentów ethernetowych obsługujących stacje robocze i jeszcze jedno połączenie PPP do innego biura. Kiedy router otrzymuje datagram z jednego ze swoich przyłączeń sieciowych, trasowanie jest mechanizmem stosowanym przez niego do wyboru portu przyłączeniowego, do którego trzeba przesłać ten datagram. Zwykłe komputery też muszą wykonywać trasowanie, wszystkie komputery w Internecie posiadają dwa urządzenia sieciowe, jedno z nich to urządzenie pętli zwrotnej (loopback interface) opisane powyżej, a drugie to te, którego używa do porozumiewania się z resztą sieci. Może to być karta ethernetowa lub port PPP, czy SLIP.

OK, w jaki sposób działa trasowanie? Każdy z komputerów przechowuje listę zasad trasowania, zwaną tabelą trasowania (routing table). Każdy wiersz tej tabeli zawiera co najmniej trzy pola, pierwsze oznaczające adres docelowy, drugie zawiera nazwę interfejsu przez który należy wysłać datagram, a trzecie, opcjonalne, to adres IP innego komputera (tzw. gateway), który przeniesie datagram dalej w jego drodze przez sieć. Pod Linuksem tabelę trasowania można zobaczyć wydając polecenie:

# cat /proc/net/route

Proces trasowania jest całkiem prosty: otrzymujemy przychodzący datagram, adres docelowy (do kogo jest adresowany ten datagram) zostaje porównany z pozycjami tabeli routingu. Wybiera się pozycje, kóra najbardziej pasuje do tego adresu i datagram zostaje przesłany przez określony w tej pozycji interfejs. Jeśli pole gatewaya nie jest puste, wtedy datagram zostaje przesłany do tego komputera przez określony w tej pozycji interfejs seciowy, w przeciwnym wyopadku zakłada się, że adres docelowy leży na sieci obsługiwanej przez podany interfejs.

Do manipulacji pozycjami tabeli trasowania służy specjalne polecenie. Wymaga podania w wierszu poleceń dodatkowych parametrów i zamienia je na wywołania funkcji systemowych, które proszą jądro o dodanie, zmodyfikowanie lub usunięcie pozycji w tabeli trasowania (która znajduje się w gestii jądra Linuksa). Polecenie to nazywa się `route'.

Prosty przykład. Wyobraźmy sobie, że mamy sieć ehernetową. Powiedziano nam, że jest to sieć klasy C o adresie 192.168.1.0. Nasz komputer otrzymał adres 192.168.1.10 i powiedziano nam, że router przyłączony do internetu ma adres 192.168.1.1.

Pierwszym krokiem jest poprawne skonfigurowanie interfejsu, w sposób opisany wcześniej:

# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up

Teraz musimy dodać pozycję do tabeli trasowania, aby powiedzieć jądru, że datagramy do komputerów, których adresy pasujądo wzorca 192.168.1.* powinny być wysyłane przez interfejs ethernetowy. Stosuje się w tym celu polecenie zbliżone do tego:

# route add -net 192.168.0.0 netmask 255.255.255.0 eth0

Zwróć uwagę na argument `-net', który mówi programowi route, że ta pozycja oznacza trasę do całej podsieci (network route). Inną możliwością jest pozycja określająca trasę do konkretnego adresu IP tzw. 'host route'.

Powyższa pozycja tabeli trasowania umożliwi nam komunikację ze wszystkimi komputerami znajdującymi się w naszym segmencie ethernetowym. A co z wszystkimi innymi adresami IP spoza naszego segmentu?

Dodanie trasy do każdej sieci.komputera z którym chcielibyśmy się kiedykolwiek komunikować byłoby ogromnym zadaniem. Dlatego wprowadzono tzw trasę domyślną (default route). Trasa domyślna pasuje do każdego adresu docelowego, lecz najgorzej jak tylko jest to możliwe. Dlatego, jeśli istnieje inna pozycja pasująca do tego adresu, to ona zostanie wykorzystana zamiast pozycji domyślnej. Ideą trasy domyślnej jest umożliwienie zrealizowania polecenia 'wszystko inne wysłać tędy'. W naszym przykładzie oznacza to następujące polecenie:

# route add default gw 192.168.1.1 eth0

Argument `gw' informuje program route, że następny argument oznacza adres IP. lub nazwę gatewaya lub routera, do którego należy przesyłać wszystkie datagramy pasującego do tej pozycji. Dalszym przesłaniem tych datagramów zajmie się właśnie ten komputer.

Tak więc nasza pełna konfiguracja wyglądała by następująco:

# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
# route add default gw 192.168.1.1 eth0

Jeśli dobrze się przyjrzysz plikom `rc' zajmującymi się siecią, zobaczysz, że przynajmniej jeden z nich wygląda bardzo podobnie. Jest to bardzo populana konfiguracja.

Zajmijmy się troszkę bardziej skomplikowanym przypadkiem. Załóżmy, że zajmujemy się konfiguracją routera o którym mówiliśmy wcześniej, tym który posiada połączenie PPP z Internetem, kilka segmentów sieci lokalnej. Niech konkretnie będą to trzy segmenty eternetowe i jedno łącze PPP. Konfiguracja trasowania w tym przypadku wyglądała by następująco:

# route add 192.168.1.0 netmask 255.255.255.0 eth0
# route add 192.168.2.0 netmask 255.255.255.0 eth1
# route add 192.168.3.0 netmask 255.255.255.0 eth2
# route add default ppp0

Każda ze stacji roboczych używałaby prostszej formy prezentowanej wcześniej. Tylko router musi określić oddzielnie trasę do każdej z sieci, ponieważ w przypadku stacji roboczej pozycja domyślna obsłuży wszystkie połączenia pozostawiając routerowi zmartwienie odpowiedniego podziału ruchu. Możesz się zastanawiać, dlaczego trasa domyślna na routerze nie posiada argumentu gw. Przyczyna jest prosta. Protokoły urządzeń szeregowych, takich jak PPP czy SLIP, zawsze mają w swojej sieci tylko dwa komputery, po jednym na każdym końcu. Wskazywanie komputera po drugiej stronie połączenia jako gatewaya jest niepotrzebne i nadmiarowe, ponieważ nie ma innej możliwości niż przesłać pakiety na drugi koniec połączenia PPP. Dlatego nie jest potrzebne okreśanie w tego rodzaju połączeniach gatewaya. Podania gatewaya wyagają w takiej sytuacji inne rodzaje sieci, np. ethernet, arcnet, token ring, które obsługują wiele komputerów na jednym segmencie.

Do czego służy program routed ?

Konfiguracja trasowania opisana powyżej nadaje się dla prostych konfiguracji sieci, gdzie zawsze istnieje tylko jedna droga do celu. W przypadku bardziej skomplikowanych konfiguracji sieci, sprawy nieco się komplikują. Na szczęście większości was to nie dotyczy.

Najwieksze kłopoty jakie sprawia 'trasowanie ręczne' lub inaczej mówiąc 'statyczne', polegają na tym, że w przypadku przerwania łącza do komputera docelowego, jedyną metodą nawiązania komunikacji inną drogą (jeśli taka istnieje) jest ręczna interwencja w tabelę trasowania (ręczne uruchomienie odpowiednich poleceń). Naturalnie jest to bardzo powolne, niepraktyczne i ryzykowne. Zostały rozwinięte techniki w celu automatycznej modyfikacji tabeli trasowania w przypadku awarii połączeń w celu przełączenia ruchu na drogi obejściowe, wszystkie te metody nazywane są ogólnie 'trasowaniem dynamicznym'.

Być może słyszałeś o najbardziej popularnych protokołach dynamicznego trasowania. Najczęsciej występującym jes RIP (Routing Information Protocol) i OSPF (Open Shortest Path First Protocol). RIP jest bardzo populany w małych sieciach takich jak małego rozmiaru sieci korporacyjne lub sieci między budynkami. OSPF jest nowocześniejszym i bardziej sprawnym protokołem, lepiej nadającym się do obsługi dużych konfigracji sieci i lepiej nadaje się do zastosowania w środowiskach, gdzie istnieje duża liczba możliwych tras przesyłania pakietu. Powszechnymi implementacjami tych protokołów są programy routed -RIP i gated -RIP,OSPF i inne. routed jest zwykle w każdej dystrybucji Linuksa, lub można go znaleźć w pakiecie `NetKit' opisanym wcześniej.

Przykład, który mogłby wymagać zastosowania dynamicznego trasowania mógłby wyglądać następująco:

    192.168.1.0 /                         192.168.2.0 /
       255.255.255.0                         255.255.255.0
     -                                     -
     |                                     |
     |   /-----\                 /-----\   |
     |   |     |ppp0   //    ppp0|     |   |
eth0 |---|  A  |------//---------|  B  |---| eth0
     |   |     |     //          |     |   |
     |   \-----/                 \-----/   |
     |      \ ppp1             ppp1 /      |
     -       \                     /       -
              \                   /
               \                 /
                \               /
                 \             /
                  \           /
                   \         /
                    \       /
                     \     /
                  ppp0\   /ppp1
                     /-----\
                     |     |
                     |  C  |
                     |     |
                     \-----/
                        |eth0
                        |
                   |---------|
                   192.168.3.0 /
                      255.255.255.0

Mamy tutaj trzy routery A,B i C. Każdy obsługuje segment sieci klasy C (netmaska 255.255.255.0). Każdy router posiada również łącze PPP do każdego z pozostałych routerów. Sieć tworzy trójkąt.

Powinno być już oczywiste, że tabela trasowania na routerza A wygląda następująco:

# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# route add -net 192.168.2.0 netmask 255.255.255.0 ppp0
# route add -net 192.168.3.0 netmask 255.255.255.0 ppp1

Taka konfiguracja będzie działała poprawnie, dopóki połączenie pomiędzy routerami A i B będzie pracować poprawnie. Jeśli nastąpi awaria tego połączenia komputery na segmencie A nie będą w stanie osiągnąć komputerów segmentu B i na odwrót ponieważ ich datagramy będą kierowane do interfejsu ppp0 routera A, który uległ właśnie awarii. Jednak komputery z segmentu B będą mogły nadal komunikować się z segmentem D i na odwrót ponieważ połączenie PPP pomiędzy komputerami pozostało nietknięte.

Zaczekaj! Skoro A może komunikować się z C i C może komunikować się z B dlaczego nie przesyłać datagramów adresowanych do B przez C zrzucając na niego dostarczenie ich do B? To jest właśnie rodzaj problemu, do rozwiązania którego powstały protokoły trasowania dynamicznego, jak np. RIP. Gdyby na każdym z routerów był uruchominy program routed wtedy tablice trasowania zostałyby automatycznie poprawione, tak aby odzwierciedlały nowy stan sieci w przypadku awarii któregokolwiek połączenia. Utworzenie takiej konfiuracji jest proste. Na każdym z routerów należy zrobić dwie rzeczy. W przypadku routera A:

# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# /usr/sbin/routed

Demon `routed' tuż po uruchomieniu automatycznie znajdzie aktywne porty przyłączeń sieciowych, następnie będzie do nich rozsyłał i nasłuchiwał przychodzących z nich komunikatów pozwalając w ten sposób określenie poprawnej tabeli trasowania.

To był bardzo krótki opis trasowania dynamicznego i jego zastosowań. Jeśli potrzebujesz więcej informacji powinieneś zapoznać się dokumentami, do których referencje znajdziesz na początku tego dokumentu.

Istotne sprawy dotyczące dynamicznego trasowania:

  1. Potrzeba uruchomienia demona protokołu dynamicznego trasowania zachodzi jedynie wtedy, gdy twój Linux ma możliwość wyboru trasy do komputera docelowego.
  2. Demon trasowania dynamicznego będzie automatycznie modyfikował tabelę trasowania dopasowując ją do zmian w strukturze sieci.
  3. RIP nadaje się do sieci małych i średnich.

5.8 Konfiguracja serwerów i usług sieciowych.

Serwery i usługi sieciowe są to te programy, które pozwalają zdalnemu użytkownikowi stać się użytkownikiem twojego komputera. Zdalny użytkownik ustanawia połączenie sieciowe z twoim komputerem i programem oferującym usługę, lub demonem sieciowym, nasłuchującym na danym porcie, akceptuje połączenie i wykonuje program. Istnieją dwa tryby pracy demonów sieciowych. Oba są równie często stosowane. Oto one:

niezależny

program-demon sieciowy nasłuchuje na określonych portach sieciowych i w momencie zestawienia przychodzącego połączenia, sam zarządza tym połączeniem w celu udostępnienia danej usługi.

podporządkowany serwerowi inetd

serwer inetd jest specjalnym programem-demonem sieciowym specjalizującym się w obsłudze zestawiania połączeń sieciowych. Posiada własny plik konfiguracyjny, który mówi mu, który program obsługi usługi powinien zostać uruchomiony dla zaistniałej kombinacji typu połączenia (tcp lub udp) i numeru portu. Porty są opisane w innym pliku, o którym opowiemy już niedługo.

Istnieją dwa ważne pliki konfiguracyjne. Są to /etc/services: plik, który kojarzy nazwy z numerami portów i /etc/inetd.conf: plik konfiguracyjny demona inetd.

/etc/services

Plik /etc/services jest prostą bazą, która kojarzy łatwe dla człowieka nazwy portów z wykorzystywanymi przez komputery numerami. Posiada bardzo prosty format. Jest to plik tekstowy, którego każdy wiersz jest jednym rekordem informacji. Każdy rekord składa się z trzech pól, rozdzielonych dowolną ilością białych znaków (tabulator lub odstęp):

nazwa      port/protokół        aliasy     # komentarz

nazwa

jedno słowo reprezentujące opisywaną usługę.

port/protokół

to pole jest podzielone na dwie części

port

numer określający numer portu pod którym będzie dostępna dana usługa. Wiekszość popularnych usług ma już przydzielone numery portów. Są opisane w RFC-1340.

protokół

może to być albo tcp albo udp.

Należy zapamiętać, że pozycja 18/tcp jest zupełnie inna niż pozycja 18/udp i nie ma żadnych technicznych uwarunkowań, dlaczego dana usługa miałaby istnieć w obu przypadkach. Należy zachować zdrowy rozsądek. Jeśli któraś z usług jest rzeczywiście dostępna zarówno przez tcp, jak i przez udp, wtedy rzeczywiście w /etc/services znajdą się obie te pozycje.

aliasy

inne nazwy, pod którymi będzie znana ta usługa.

Dowolny tekst w wierszu po znaku `#' jest traktowany jako komentarz i ignorowany.

Przykład pliku /etc/services.

Wszystkie nowe dystrybucje Linuksa dostarczają dobry plik /etc/services. Na wszelki wypadek, gdybyś chciał zbudować swój komputer od zera oto kopia pliku /etc/services jaki jest dostarczany razem z dystrybucją Debian.

# /etc/services:
# $Id: NET-3-HOWTO.pl.sgml,v 1.4 2001/12/15 09:56:17 bart Exp $
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1340, ``Assigned Numbers'' (July 1992).  Not all ports
# are included, only the more common ones.

tcpmux          1/tcp                           # TCP port service multiplexer
echo            7/tcp
echo            7/udp
discard         9/tcp           sink null
discard         9/udp           sink null
systat          11/tcp          users
daytime         13/tcp
daytime         13/udp
netstat         15/tcp
qotd            17/tcp          quote
msp             18/tcp                          # message send protocol
msp             18/udp                          # message send protocol
chargen         19/tcp          ttytst source
chargen         19/udp          ttytst source
ftp-data        20/tcp
ftp             21/tcp
ssh             22/tcp                          # SSH Remote Login Protocol
ssh             22/udp                          # SSH Remote Login Protocol
telnet          23/tcp
# 24 - private
smtp            25/tcp          mail
# 26 - unassigned
time            37/tcp          timserver
time            37/udp          timserver
rlp             39/udp          resource        # resource location
nameserver      42/tcp          name            # IEN 116
whois           43/tcp          nicname
re-mail-ck      50/tcp                          # Remote Mail Checking Protocol
re-mail-ck      50/udp                          # Remote Mail Checking Protocol
domain          53/tcp          nameserver      # name-domain server
domain          53/udp          nameserver
mtp             57/tcp                          # deprecated
bootps          67/tcp                          # BOOTP server
bootps          67/udp
bootpc          68/tcp                          # BOOTP client
bootpc          68/udp
tftp            69/udp
gopher          70/tcp                          # Internet Gopher
gopher          70/udp
rje             77/tcp          netrjs
finger          79/tcp
www             80/tcp          http            # WorldWideWeb HTTP
www             80/udp                          # HyperText Transfer Protocol
link            87/tcp          ttylink
kerberos        88/tcp          kerberos5 krb5  # Kerberos v5
kerberos        88/udp          kerberos5 krb5  # Kerberos v5
supdup          95/tcp
# 100 - reserved
hostnames       101/tcp         hostname        # usually from sri-nic
iso-tsap        102/tcp         tsap            # part of ISODE.
csnet-ns        105/tcp         cso-ns          # also used by CSO name server
csnet-ns        105/udp         cso-ns
rtelnet         107/tcp                         # Remote Telnet
rtelnet         107/udp
pop-2           109/tcp         postoffice      # POP version 2
pop-2           109/udp
pop-3           110/tcp                         # POP version 3
pop-3           110/udp
sunrpc          111/tcp         portmapper      # RPC 4.0 portmapper TCP
sunrpc          111/udp         portmapper      # RPC 4.0 portmapper UDP
auth            113/tcp         authentication tap ident
sftp            115/tcp
uucp-path       117/tcp
nntp            119/tcp         readnews untp   # USENET News Transfer Protocol
ntp             123/tcp
ntp             123/udp                         # Network Time Protocol
netbios-ns      137/tcp                         # NETBIOS Name Service
netbios-ns      137/udp
netbios-dgm     138/tcp                         # NETBIOS Datagram Service
netbios-dgm     138/udp
netbios-ssn     139/tcp                         # NETBIOS session service
netbios-ssn     139/udp
imap2           143/tcp                         # Interim Mail Access Proto v2
imap2           143/udp
snmp            161/udp                         # Simple Net Mgmt Proto
snmp-trap       162/udp         snmptrap        # Traps for SNMP
cmip-man        163/tcp                         # ISO mgmt over IP (CMOT)
cmip-man        163/udp
cmip-agent      164/tcp
cmip-agent      164/udp
xdmcp           177/tcp                         # X Display Mgr. Control Proto
xdmcp           177/udp
nextstep        178/tcp         NeXTStep NextStep       # NeXTStep window
nextstep        178/udp         NeXTStep NextStep       # server
bgp             179/tcp                         # Border Gateway Proto.
bgp             179/udp
prospero        191/tcp                         # Cliff Neuman's Prospero
prospero        191/udp
irc             194/tcp                         # Internet Relay Chat
irc             194/udp
smux            199/tcp                         # SNMP Unix Multiplexer
smux            199/udp
at-rtmp         201/tcp                         # AppleTalk routing
at-rtmp         201/udp
at-nbp          202/tcp                         # AppleTalk name binding
at-nbp          202/udp
at-echo         204/tcp                         # AppleTalk echo
at-echo         204/udp
at-zis          206/tcp                         # AppleTalk zone information
at-zis          206/udp
z3950           210/tcp         wais            # NISO Z39.50 database
z3950           210/udp         wais
ipx             213/tcp                         # IPX
ipx             213/udp
imap3           220/tcp                         # Interactive Mail Access
imap3           220/udp                         # Protocol v3
ulistserv       372/tcp                         # UNIX Listserv
ulistserv       372/udp
#
# UNIX specific services
#
exec            512/tcp
biff            512/udp         comsat
login           513/tcp
who             513/udp         whod
shell           514/tcp         cmd             # no passwords used
syslog          514/udp
printer         515/tcp         spooler         # line printer spooler
talk            517/udp
ntalk           518/udp
route           520/udp         router routed   # RIP
timed           525/udp         timeserver
tempo           526/tcp         newdate
courier         530/tcp         rpc
conference      531/tcp         chat
netnews         532/tcp         readnews
netwall         533/udp                         # -for emergency broadcasts
uucp            540/tcp         uucpd           # uucp daemon
remotefs        556/tcp         rfs_server rfs  # Brunhoff remote filesystem
klogin          543/tcp                         # Kerberized `rlogin' (v5)
kshell          544/tcp         krcmd           # Kerberized `rsh' (v5)
kerberos-adm    749/tcp                         # Kerberos `kadmin' (v5)
#
webster         765/tcp                         # Network dictionary
webster         765/udp
#
# From ``Assigned Numbers'':
#
#> The Registered Ports are not controlled by the IANA and on most systems
#> can be used by ordinary user processes or programs executed by ordinary
#> users.
#
#> Ports are used in the TCP [45,106] to name the ends of logical
#> connections which carry long term conversations.  For the purpose of
#> providing services to unknown callers, a service contact port is
#> defined.  This list specifies the port used by the server process as its
#> contact port.  While the IANA can not control uses of these ports it
#> does register or list uses of these ports as a convienence to the
#> community.
#
ingreslock      1524/tcp
ingreslock      1524/udp
prospero-np     1525/tcp                # Prospero non-privileged
prospero-np     1525/udp
rfe             5002/tcp                # Radio Free Ethernet
rfe             5002/udp                # Actually uses UDP only
bbs             7000/tcp                # BBS service
#
#
# Kerberos (Project Athena/MIT) services
# Note that these are for Kerberos v4, and are unofficial.  Sites running
# v4 should uncomment these and comment out the v5 entries above.
#
kerberos4       750/udp         kdc     # Kerberos (server) udp
kerberos4       750/tcp         kdc     # Kerberos (server) tcp
kerberos_master 751/udp                 # Kerberos authentication
kerberos_master 751/tcp                 # Kerberos authentication
passwd_server   752/udp                 # Kerberos passwd server
krb_prop        754/tcp                 # Kerberos slave propagation
krbupdate       760/tcp         kreg    # Kerberos registration
kpasswd         761/tcp         kpwd    # Kerberos "passwd"
kpop            1109/tcp                # Pop with Kerberos
knetd           2053/tcp                # Kerberos de-multiplexor
zephyr-srv      2102/udp                # Zephyr server
zephyr-clt      2103/udp                # Zephyr serv-hm connection
zephyr-hm       2104/udp                # Zephyr hostmanager
eklogin         2105/tcp                # Kerberos encrypted rlogin
#
# Unofficial but necessary (for NetBSD) services
#
supfilesrv      871/tcp                 # SUP server
supfiledbg      1127/tcp                # SUP debugging
#
# Datagram Delivery Protocol services
#
rtmp            1/ddp                   # Routing Table Maintenance Protocol
nbp             2/ddp                   # Name Binding Protocol
echo            4/ddp                   # AppleTalk Echo Protocol
zip             6/ddp                   # Zone Information Protocol
#
# Debian GNU/Linux services
rmtcfg          1236/tcp                # Gracilis Packeten remote config server
xtel            1313/tcp                # french minitel
cfinger         2003/tcp                # GNU Finger
postgres        4321/tcp                # POSTGRES
mandelspawn     9359/udp        mandelbrot      # network mandelbrot

# Local services

/etc/inetd.conf

Plik /etc/inetd.conf jest plikiem konfiguracyjnym programu inetd. Jego rolą jest poinformowanie inetd co powinien zrobić w momencie otrzymania połączenia z konkretną usługą. Musisz powiedzieć programowi inetd, który program obsługi uruchomić i jak to zrobić. Musisz to zrobić dla każdej usługi, której połączenia mają być obsługiwane przez program inetd.

Format tego pliku jest całkiem prosty. Jest to plik tekstowy, którego kązy wiersz jest niezależny rekordem danych opisujących jedną z usług jaką chcesz obsługiwać. Dowolny tekst w wierszu po znaku `#' jest traktowany jako komentarz i pomijany. Każdy wiersz składa się z siedmiu pól rodzielonych białymi znakami (tabulator lub odstęp) w formacie:

service  socket_type    proto    flags user       server_path     server_args
usługa   rodzaj_gniazda protokół flagi użytkownik ścieżka_dostępu arguemnty

usługa

nazwa usługi pobrana przez inetd z /etc/services

rodzaj gniazda

to pole określa rodzaj gniazda jakie zostanie utworzone, dozwolone wartości to : stream, dgram, raw, rdm, or seqpacket. Dokładny opis jest dość skomplikowany ale jako pierwsze przybliżenie można potraktować zasadę, że niemal wszystkie usługi korzystające z tcp używają stream i niemal wszystkie usługi korzystające z udp używają dgram. Inne kombinacje parametrów występują w bardzo rzadkich przypadkach specjalizowanych serwerów usług.

protokól

nazwa protokołu danej pozycji. Powinien pasować do odpowiedniej pozycji pliku /etc/serwer i zwykle jest to tcp lub udp. Usługi oparte na Sun RPC (Remote Procedure Call) będą korzystały z rpc/tcp lub rpc/udp.

flagi

istnieją tylko dwie wartości jakie może przyjmować to pole. Informują one program inetd czy uruchomiony program obsługi zwalnia gniazdo co pozwala na uruchomienie kolejnego przy następnym połączeniu do tej usługi, czy inetd powinien zaczekać na zakończenie działania programu obsługi, który sam będzie obsługiwał żądania zestawienia połączenia. Ponownie dokładny opis jest dosyć skomplikowany, lecz w przybliżeniu mozna powiedzieć, że wszystkie usługi typu tcp powinny w tym polu mieć wartość nowait i większość usług typu udp powinny przyjmować wartość wait. Pamiętaj, że istnieją znaczące wyjątki od tej reguły.

użytkownik

określa, który użytkownik zdefiniowany w pliku /etc/passwd statnie się właścicielem uruchomionego demona sieciowego. Jest to pożyteczne, gdy chcesz zwiększyć bezpieczeństwo swojego systemu. Możesz temu polu nadać wartość nobidy aby w przypadku złamania zabezpieczeń programów obsługi wyrządzone straty były jak najmniejsze. Zwykle to pole przyjmuje wartość root, ponieważ większość programów obsługi do wykonania poprawnie swych zadań wymaga uprawnień administatora.

ścieżka_dostępu

to pole oznacza pełną scieżkę dostępu do programu obsługi, który należy uruchomić.

argumenty

zawiera pozostałą część wiersza poleceń uruchamianego programu obsługi. Jest to parametr opcjonalny. To właśnie tutaj możesz umieścić dowolne parametry, które zostaną przekazane programowi obsługi w momencie jego uruchomienia przez program inetd.

Przykład pliku /etc/inetd.conf

Podobnie jak w przypadku pliku /etc/services wszystkie nowoczesne dystrybucje zawierają poprawny plik /etc/inetd.conf. Na wszelki wypadek poniżej można znaleźć plik /etc/inetd.conf dostarczany z dystrybucją Debian .

# /etc/inetd.conf:  see inetd(8) for further informations.
#
# Internet server configuration database
#
#
# Modified for Debian by Peter Tobias <tobias@et-inf.fho-emden.de>
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
# Internal services
#
#echo           stream  tcp     nowait  root    internal
#echo           dgram   udp     wait    root    internal
discard         stream  tcp     nowait  root    internal
discard         dgram   udp     wait    root    internal
daytime         stream  tcp     nowait  root    internal
daytime         dgram   udp     wait    root    internal
#chargen        stream  tcp     nowait  root    internal
#chargen        dgram   udp     wait    root    internal
time            stream  tcp     nowait  root    internal
time            dgram   udp     wait    root    internal
#
# These are standard services.
#
telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.telnetd
ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.ftpd
#fsp    dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.fspd
#
# Shell, login, exec and talk are BSD protocols.
#
shell   stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rshd
login   stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rlogind
#exec   stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rexecd
talk    dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.talkd
ntalk   dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.ntalkd
#
# Mail, news and uucp services.
#
smtp    stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.smtpd  
#nntp   stream  tcp     nowait  news    /usr/sbin/tcpd  /usr/sbin/in.nntpd
#uucp   stream  tcp     nowait  uucp    /usr/sbin/tcpd  /usr/lib/uucp/uucico
#comsat dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.comsat
#
# Pop et al
#
#pop-2  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.pop2d
#pop-3  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.pop3d
#
# `cfinger' is for the GNU finger server available for Debian.  (NOTE: The
# current implementation of the `finger' daemon allows it to be run as `root'.)
#
#cfinger stream tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.cfingerd
#finger stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.fingerd
#netstat        stream  tcp     nowait  nobody  /usr/sbin/tcpd  /bin/netstat
#systat stream  tcp     nowait  nobody  /usr/sbin/tcpd  /bin/ps -auwwx
#
# Tftp service is provided primarily for booting.  Most sites
# run this only on machines acting as "boot servers."
#
#tftp   dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd
#tftp   dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /boot
#bootps dgram   udp     wait    root    /usr/sbin/bootpd        bootpd -i -t 120
#
# Kerberos authenticated services (these probably need to be corrected)
#
#klogin         stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rlogind -k
#eklogin        stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rlogind -k -x
#kshell         stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rshd -k
#
# Services run ONLY on the Kerberos server (these probably need to be corrected)
#
#krbupdate      stream tcp      nowait  root    /usr/sbin/tcpd  /usr/sbin/registerd
#kpasswd        stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/kpasswdd
#
# RPC based services
#
#mountd/1       dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.mountd
#rstatd/1-3     dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.rstatd
#rusersd/2-3    dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.rusersd
#walld/1        dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.rwalld
#
# End of inetd.conf.
ident           stream  tcp     nowait  nobody  /usr/sbin/identd        identd -i

5.9 Inne pliki konfiguracyjne związane z siecią.

Linux posiada jeszcze kilka plików konfiguracyjnych, które mają wpływ na pracę sieci, z którymi powinno się zapoznać. Być może nigdy nie wystąpi potrzeba ich modyfikacji, lecz warto wiedzieć jakie informacje zawierają i czego dotyczą.

/etc/protocols

Plik /etc/protocols zawiera informacje przyporządkowujące nazwom protokołów odpowiednie numery. Jest wykorzystywany przez różne programy pozwalając na podawanie nazw protokołów zamiast numerów oraz inne programy, jak np tcpdump, które mogą wyświetlać nazwy protokołów zamiast ich liczbowej reprezentacji. Składnia pliku jest następująca:

protocolname     number  aliases
nazwa_protokołu  numer   aliasy

Plik /etc/protocols dostarczany w dystrybucji Debian wygląda następująco:

# /etc/protocols:
# $Id: NET-3-HOWTO.pl.sgml,v 1.4 2001/12/15 09:56:17 bart Exp $
#
# Internet (IP) protocols
#
#       from: @(#)protocols     5.1 (Berkeley) 4/17/89
#
# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).

ip      0       IP              # internet protocol, pseudo protocol number
icmp    1       ICMP            # internet control message protocol
igmp    2       IGMP            # Internet Group Management
ggp     3       GGP             # gateway-gateway protocol
ipencap 4       IP-ENCAP        # IP encapsulated in IP (officially ``IP'')
st      5       ST              # ST datagram mode
tcp     6       TCP             # transmission control protocol
egp     8       EGP             # exterior gateway protocol
pup     12      PUP             # PARC universal packet protocol
udp     17      UDP             # user datagram protocol
hmp     20      HMP             # host monitoring protocol
xns-idp 22      XNS-IDP         # Xerox NS IDP
rdp     27      RDP             # "reliable datagram" protocol
iso-tp4 29      ISO-TP4         # ISO Transport Protocol class 4
xtp     36      XTP             # Xpress Tranfer Protocol
ddp     37      DDP             # Datagram Delivery Protocol
idpr-cmtp       39      IDPR-CMTP       # IDPR Control Message Transport
rspf    73      RSPF            # Radio Shortest Path First.
vmtp    81      VMTP            # Versatile Message Transport
ospf    89      OSPFIGP         # Open Shortest Path First IGP
ipip    94      IPIP            # Yet Another IP encapsulation
encap   98      ENCAP           # Yet Another IP encapsulation

/etc/networks

Plik /etc/networks ma funkcję zbliżoną do funkcji pliku /etc/hosts. Jest prostą bazą danych nazw i adresów sieci. Jego format różni się tylko tym, że może zawierać jedynie dwa pola w wierszu w następujacym formacie:

# networkname networkaddress
# nazwa_sieci adres_sieci

Przykładowy plik mógłby wyglądać tak:

loopnet    127.0.0.0
localnet   192.168.0.0
amprnet    44.0.0.0

W przypadku używania programu route jeśli punkt docelowy jest siecią, a sieć ta znajduje się w pliku /etc/networks, wtedy polecenie route zamiast adresu IP sieci wyświetli jej nazwę.

5.10 Bezpieczeństwo sieciowe i sterowanie dostępem.

Pozwól, że rozpocznę ten rozdział stwierdzeniem, że zabezbieczanie komputera i sieci przed złośliwymi atakami jest trudną i skomplikowaną sztuką. Nie uważam się za aksperta w tej dziedzinie i choć opisywane przeze mnie mechanizmy pomogą być bardziej bezpiecznym to jeśli bardzo ci zależy na bezpieczeństwie twojego systemu radziłbym ci rozejrzeć się dokładniej w tym temacie. W internecie można znaleźć wiele dobrych referencji na ten temat.

Podstawowa zasada brzmi: `Nie uruchamiaj serwerów (programów obsługi), których nie zamierzasz używać.'. Wiele dystrybucji posiada mnóstwo różnego rodzaju oprogramowania, automatycznie konfigurowanego i uruchamianego. Aby zapewnić sobie minimalny poziom bezpieczeństwa powinno się przyjrzeć się plikowi /etc/inetd.conf i skomentować te usługi, których nie zamierzasz używać. Dobrymi kandydatami są: shell, login, exec, uucp, ftp i serwisy informacyjne, jak: finger, netstat i systat.

Istnieje wiele mechanizmów sterowania dostępem do oferowanych usług sieciowych, wymienię podstawowe.

/etc/ftpusers

Plik /etc/ftpusers jest prostym mechanizmem pozwalającym na zabronienie wejścia do systemu przez usługę ftp niektórym użytkownikom twojego komputera. /etc/ftpusers jest odczytywany przez program obsługujący usługę ftp (ftpd) w momencie nawiązania przychodzącego połączenia. Plik zawiera listę tych użytkowników, którzy nie mają pozwolenia wchodzenie do systemu przez usługę ftp. Mógłby wygladać mniej więcej tak:

# /etc/ftpusers - użytkownicy, którzy nie mogą dostac się do systemu 
#                 przez ftp
root
uucp
bin
mail

/etc/securetty

Pli /etc/securetty pozwala na określenie listy urządzeń tty, przez które może logować się administrator. Plik /etc/securetty jest wczytywany przez program weryfikujący użytkownika (zwykle /bin/login). Jest to lista nazw urządzeń, które mogą być wykorzystywane przez administratora na wejście do systemu. Wejście do systemu przez administratora przez inne urządzenia jest niemożliwe.

# /etc/securetty - terminale tty przez które administrator może
#                  zalogować się do systemu
tty1
tty2
tty3
tty4

Mechanizm sterowania dostępem pakietu tcpd.

Program tcpd jaki prawdopodobnie widziałeś w pliku /etc/inetd.conf dostarcza mechanizmów rejestracji i sterowania dostępem do usług, do ochrony których został skonfigurowany.

W momencie uruchamiania przez program inetd odczytuje swoje dwa pliki konfiguracyjne, zawierające zasady dostępu i albo zezwala, albo odmawia dostępu do usługi, którą ochrania.

Przeszukuje zasady znajdujące się plikach konfiguracyjnych, aż do napotkania pierwszej, która pasuje do zaistniałej sytuacji. Jeśli takiej nie znalazł zakłada, że należy pozwolić na dostęp. Pliki które przeszukuje to w kolejności: /etc/hosts.allow i /etc/hosts.deny. Pokrótce opiszę zawartość każdego z nich. Pełny opis możliwości programu tcpd znajdziesz na stronach podręcznika (man hosts_allow).

/etc/hosts.allow

Plik /etc/hosts.allow jest plikiem konfiguracyjnym programu /usr/sbin/tcpd. Plik hosts.allow zawiera informacje określające, które komputery mogą uzyskać dostęp do chronionej usługi w twoim systemie.

Format pliku jest bardzo prosty:

# /etc/hosts.allow
#
# <lista usług>: <lista komputerów> [: polecenie]

lista usług

jest odzielona przecinkami listą nazw programów obsługi chronionej usługi do której ma zastosowanie dana reguła. Na przykład: ftpd, telnetd i fingerd.

lista komputerów

jest rozdzieloną przecinkami listą nazw komputerów lub adresów IP. Można również określać wzroce adresów lub naz komputerów stsując znaki specjalne, umożliwiajć tworzenie wzorców reprezentujacych grupy komputerów. Np. gw.v2ktj.ampr.org oznacz konkretny komputer, .uts.edu.au oznacza dowolny komputer, którego pełna nazwa kończy się podanym ciągiem znaków, 44. oznacza dowolny adres IP zawierający te cyfry. W celu uproszczenia konfiguracji wprowadzono kilka specjalnych oznaczeń: ALL określające wszystkie komputery, LOCAL reprezentujący wszystkei komputery, których nazwa nie zawiera znaku `.' tzn. należą do tej samej domeny co twój komputer, PARANOID oznaczający wszystkie komputery, których nazwa nie odpowiada ich adresowi (name spoofing). I ostatni element bardzo użyteczny, to EXCEPT pozwalający na podanie listy z wyjątkami. Omówimy to dokładnie później na przykładzie.

polecenie

jest opcjonalnym parametrem. Jest to pełna ścieżka dostępu do polecenia (programu), który należy uruchomić za każdym razem, kiedy dana reguła zostanie dopasowana. Może to być polecenie, które będzie próbowało zidentyfikować, kto znajduje się w tej chwili na komputerze próbującym nawiązać połączenia, lub wyśle wiadomość lub inny komunikat adresowany do administratora systemu informując o próbie połączenia. Isnieje kilka wzorców, które zostaną podmienione, najczęściej wykorzystywane to: %h jest zamieniane na nazwę komputera nawiązującego połączenie lub jego adres jeśli nie posiada nazwy, %d na nazwę programu obsługi, który został wywołany.

Przykład:

# /etc/hosts.allow
#
# dostęp do poczty dla wszystkich
in.smtpd: ALL
# połączenie telnet i ftp tylko z komputerów z lokalnej domeny i
# mojego komputera domowego
telnetd, ftpd: LOCAL, myhost.athome.org.au
# Pozwól na finger z dowolnego komputera, lecz rejestruj kto się z
# nami łączył
fingerd: ALL: (finger @%h | mail -s "finger from %h" root)

/etc/hosts.deny

Plik /etc/hosts.deny jest plikiem konfiguracyjnym programu /usr/sbin/tcpd. hosts.deny zawiera listę komputerów, które nie mogą uzyskać dostępu do chronionej usługi w twoim systemie.

Prosty przyklad wyglądał by mniej więcej tak:

# /etc/hosts.deny
#
# Zabroń dostępu wszystkim komputerom o podejrzanych nazwach
ALL: PARANOID
#
# Zabroń dostępu wszystkim do wszystkiego
ALL: ALL

PARANOID jest w tym przypadku niepotrzebne, ponieważ następna pozycja przechwytuje wszystkie przypadki. Jedna z tych pozycji jest dobrym punktem wyjściowym do budowy pliku konfiguracyjnego, zależnym od twoich oczekiwań i wymagań.

Posiadanie opcji ALL: ALL w /etc/hosts.deny i zezwalanie na dostęp do konkretnych usług konkretnym komputerom (grupom komputerów) w pliku /etc/hosts.allow jest najbezpieczniejszym podejściem.

/etc/hosts.equiv

Plik hosts.equiv jest wykorzystywany nadawania innym komputerom i zdalnym użytkownikom niektórych uprawnień dostępu do naszych zasobów, bez konieczności podawania przez nich hasła. Jest to użyteczne w bezpiecznym środowisku sieciowym, gdzie posiadamy kontrolę nad wszystkimi komputerami lecz w innym przypadku jest to bardzo ryzykowne ze względu na bezpieczeństwo naszego komputera. W takim przypadku twój komputer jest tak bezpieczny, jak najmniej bezpieczny z zaufanych komputerów. Aby zwiększyć bezpieczeństwo swojego systemu nie używaj tego mechanizmu i zachęcaj swoich użytkowników do nie korzystania z pliku .rhosta.

Prawidłowa konfiguracja demona ftp.

Wiele miejsc będzie zainteresowynych działającym serwerem anonimowego ftp, aby umożliwić innym pobieranie i wstawianie plików, bez konieczności podawania konkretnego identyfikatora użytkownika. Jeśli zdecydujesz się udostępnić tę usługę, pamiętaj aby prawidlowo skonfigurować demon ftpd. Wiekszość stron podręcznika dotyczących ftpd(8) opisuje jak to powino być zrobione. Powinieneś się upewnić, że zawsze stosujesz się do tych instrukcji. Bardzo ważne jest, abyś nie używał w tym celu kopii swego pliku /etc/passwd w katalogu etc serwera ftpd. Musisz pamiętać aby usunąć wszelkie niepotrzebne informacje dotyczące kont, za wyjątkiem tych niezbędnych, w przeciwnym wypadku będziesz narażony na ataki wynikłe ze złamania haseł prezentowanych w pliku passwd.

Firewalle.

Bardzo dobrym środkiem na zapewnienie bezpieczeństwa swojemu systemowi jest zabronienie dostępu do twojego komputera wszystkim niepożądanym pakietom. Jest to dokladnie opisane w Firewall-HOWTO.

Inne sugestie.

Oto inne, potencjalnie religijne sugestie, które powinieneś rozważyć.

sendmail

niezależnie od swojej popularności demon z przerażającą regularnością pojawiają się ostrzeżenia o błędach w programie sendmail. Wszystko zależy od ciebie, lecz ja bym go nie uruchamiał.

NFS i inne usługi Sun RPC

powinieneś się ich bać. Istnieje wiele sposobów wykorzystania błędów w tych usługach. Bardzo trudno jest zastąpić NFS czymś innym, dokładnie upewnij się komu pozwalasz na montowanie swoich dysków.

6. Informacje specyficzne technologii sieciowej

Kolejne podrozdziały są specyficzne dla konkretnych technologi sieciowych. Informacje tam zawarte nie muszą mieć zastosowania do innego rodzaju technologii sieciowych.

6.1 ARCNet

Urządzenia ARCNET posiadają nazwy `arc0s', `arc1e', `arc2e' itd. Pierwsza karta wykryta przez jądro otrzymuje nazwę `eth0', a dalsze otrzymują nazwy z kolejnymi numerami. Litera na końcu nazwy oznacza że wybrałeś 'ethernet encapsulation' lub standard pakietu zgodny z RFC1051.

Opcje konfiguracji jądra:

Network device support  --->
    [*] Network device support
    <*> ARCnet support
    [ ]   Enable arc0e (ARCnet "Ether-Encap" packet format)
    [ ]   Enable arc0s (ARCnet RFC1051 packet format)

Jeśli posiadasz już prawidłowo skompilowane jądro potrafiące obsługiwać kartę, jej konfiguracja jest bardzo prosta.

Zwykle będziesz musiał wydać następujące polecenia:

# ifconfig arc0e 192.168.0.1 netmask 255.255.255.0 up
# route add 192.168.0.0 netmask 255.255.255.0 arc0e

Proszę zapoznaj się z zawartością pliku /usr/src/linux/Documentation/networking/arcnet-hardware.txt.

Obsługa sieci ARCNet została wykonana przez Averyego Pennaruna, apenwarr@foxnet.net.

6.2 Appletalk (AF_APPLETALK)

Obsługa sieci Appletalk nie wprowadza żądnych dodatkowych nazw urządzeń sieciowych.

Opcje konfiguracji jądra:

Networking options  --->
    <*> Appletalk DDP

Obsługa Appletalk pozwala twojemu Linuksowi komunikować się z sieciami Apple. Bardzo ważnym wykorzystywaniem tej możliwości jest współdzielenie między twoim Linuksem i komputerami Apple zasobów takich jak drukarki, czy dyski. Wymagane jest do tego dodatkowe oprogramowanie o nazwie netatalk. Pakiet netatalk udostępniający oprogramowanie implementujące protokół Appletalk oraz kilka pożytecznych programów narzędziowych stworzył wraz z grupą `Research Systems UnixGroup' na uniwersytecie Michigan reprezentujący ten zespół Wesley Craig netatalk@umich.edu . Pakiet netatalk powinieneś otrzymać w swojej dystrybucji Linuksa, lub możesz go pobrać przez ftp ze źródła : University of Michigan

Aby zbudować i zainstalować pakiet, musisz wydać następujące polecenia:

# cd /usr/src
# tar xvfz .../netatalk-1.4b2.tar.Z
- W tym momencie możesz zmienić plik `Makefile', np. w celu zmiany
  katalogu docelowego DESTDIR. Domyślnie zostanie zainstalowany w 
  /usr/local/atalk co jest dosyć bezpiecznym wyborem.
# make
- jako administrator:
# make install

Konfiguracja oprogramowania Appletalk.

Pierwszą rzeczą jaką musisz zrobić aby zaczęło działać to dodanie nowych pozycji do pliku /etc/services. A mianowicie:

rtmp    1/ddp   # Routing Table Maintenance Protocol
nbp     2/ddp   # Name Binding Protocol
echo    4/ddp   # AppleTalk Echo Protocol
zip     6/ddp   # Zone Information Protocol

Kolejnym krokiem będzie utworzenie plików konfiguracyjnych pakietu w katalogu usr/local/atalk/etc (lub tam gdzie go zainstalowałeś).

Pierwszym plikiem, który należy utworzyć jest /usr/local/atalk/etc/atalkd.conf. Początkowo potrzebuje od jedynie dodania wiersza określającego nazwę urządzenia sieciowego, które obsługuje sieć, na której znajdują się komputery Apple.

eth0

Demon Appletalk po jego uruchomieniu dołoży kilka szczegółow.

Eksportowanie plików Linuksa przez Appletalk.

Możesz eksportować swoje pliki, tak aby inne komputery sieci Appletalk miały do nich dostęp.

W tym celu należy odpowiednio zmienić plik konfiguracyjny /usr/local/atalk/etc/AppleVolumes.system. Istnieje również inny plik konfiguracyjny o nazwie /usr/local/atalk/etc/AppleVolumes.default w takim samym formacie opisujący który system plików zostanie udostępniony podłączającym się do nas użytkownikom posiadającym przywileje gościa (guest).

Szczegółowe informacje na temat konfiguracji tych plików, oraz opis znaczenia wszystkich opcji można znaleźć na stronie podręcznika poświęconej afpd (man afpd).

Krótki plik przykładowy, mógłby wyglądać następująco:

/tmp Scratch
/home/ftp/pub "Obszar ogólnie dostępny"

W tym przykładzie eksportujemy katalog /tmp jako system plików AppleShare o nazwie `Scratch' oraz katalog anonimowego ftp jako AppleShare Volume o nazwie "Obszar ogólnie dostępny". Nazwy wolumenów nie są obowiązkowe, demon wybierzą jakąś za ciebie, lecz przecież nic cię nie kosztuje podanie nazwy.

Udostępnianie twojej drukarki pod Linuksem w sieci Appletalk.

Współdzielenie drukarki Linuksa z innymi komputerami sieci Appletalk jest całkiem proste. Musisz uruchomić program papd, Printer Access Protocol Daemon. Po uruchomieniu będzie akceptował żądania wydrukowania dokumentu, gromadził go a następnie drukował korzystajšc z programów obsługi drukarki pod Linuksem.

Konfiguracja tego programu polega na edycji pliku /usr/local/atalk/etc/papd.conf. Składnia jest taka sama, jak pliku /etc/printcap. Nazwa jaką nadasz drukarce zostanie zarejestrowana za pomocą NBP, protokołu nazw sieci Appletalk.

Prosta konfiguracja mogłaby wyglądać następująco:

TricWriter:\
   :pr=lp:op=cg:

Utworzona została drukarka o nazwie `TricWriter' udostępniona sieci Appletalk. Zadania wysłane na tę drukarkę, będą drukowane na drukarce `lp' (zdefiniowanej w pliku /etc/printcap) przy pomocy programu lpd. Pozycja `op=cg' mówi, że operatorem tej drukarki jest użytkownik Linuksa o nazwie `cg'.

Uruchamianie oprogramowania Appletalk.

Ok, w tej chwili powinieneś być już gotowy do sprawdzenia podstawowej konfiguracji. Pakiet netatalk dostarcza pliku rc.atalk, który powinień nadawać się dla ciebie. Powinieneś jedynie go uruchomić:

# /usr/local/atalk/etc/rc.atalk

Wszystko powinno się uruchomić i działać poprawnie. Nie powinieneś zobaczyć, żadnych komunikatów o błędach, lecz jedynie komunikaty wysłane na konsole informujące o zakończeniu kolejnych etapów uruchamiania oprogogramowania.

Test oprogramowania Appletalk.

Aby sprawdzić, czy oprogramowanie pracuje poprawnie, połącz sieć z jednym z twoich komputerów Apple, rozwiń menu główne, wybierz Chooser, kliknij na AppleShare i powinieneś zobaczyć tam swojego Linuksa.

Uwagi na temat korzystania z oprogramowania Appletalk.

Więcej informacji

Więcej szczegółowej informacji w jaki sposób skonfigurować Appletalk dla Linuksa znajdziesz w Linux Netatak-HOWTO : thehamptons.com.

6.3 ATM

Projekt obsługi Asynchronous Transfer Mode pod Linuksem jest prowadzony przez Wernera Almesbergera <werner.almesberger@lrc.di.epfl.ch>. Aktualne informacje na ten temat można znaleźć tutaj: lrcwww.epfl.ch.

6.4 AX25 (AF_AX25)

Urządzenia AX.25 w jądrze wersji 2.0.* to `sl0', `sl1', itd. w 2.1.* są to `ax0', `ax1', itd.

Opcje konfiguracji jądra:

Networking options  --->
    [*] Amateur Radio AX.25 Level 2

Protokoły AX25, Netrom i Rose są opisane w AX25-HOWTO. Stosowane są przez krótkofalowców w eksperymentach z przesyłaniem pakietów drogą radiową.

Większość pracy związanej z udostępnieniem tej funkcji pod Linuksem wykonał Jonathon Naylor, jsn@cs.not.ac.uk.

6.5 DECNet

W chwili obecnej prowadzone są prace nad obsługą sieci DECNet. Powinna się pojawić w późnych wersjach jądra serii 2.1.x.

6.6 EQL - multiple line traffic equaliser

Urządzenie EQL nosi nazwę `eql'. W standtardowej wersji jądra możesz mieć w komputerze tylko jedno urządzenie EQL. EQL umożliwia wykorzystanie kilku połączeń point-to-point (np. PPP, SLIP, plip) jako pojedynczego łącza logicznego przenoszącego ruch tcp/ip. Często taniej jest skorzystać z kilku linii o niższej prędkości niż z jednej linii o wysokiej prędkości.

Opcje konfiguracji jądra:

Network device support  --->
    [*] Network device support
    <*> EQL (serial line load balancing) support

Obsługa tego mechanizmu wymaga, aby drugi koniec połączenia również obsługiwał EQL. Linux, Livingstone Portmasters i nowsze serwery dostępowe udostępniają tę usługę.

Aby skonfigurować EQL będziesz potrzebować odpowiednich narzędzi, dostępnych z: sunsite.unc.edu.

Sama konfiguracja jest całkiem prosta. Rozpoczyna się od skonfigurowania interfejsu eql. Jest to taki samo urządzenie, jak każde inne urządzenie sieciowe. Konfiguracja adresu IP i wielkości mtu odbywa się tak samo za pomocą programu ifconfig:

ifconfig eql 192.168.10.1 mtu 1006
route add default eql

Następnie musisz ręcznie zainicjować każdą w linii, którą będziesz używał. Sposób inicjacji połączenia będzie zależał od rodzaju tej linii, więcej informacji na ten temat znajdziesz w odpowiednim podrozdziale.

Na koniec potrzebujesz skojarzyć połączenie przez port szeregowy z urządzenie EQL, nazywa się to `enslaving' i dokonuje się za pomocą polecenia eql_enslave:

eql_enslave eql sl0 28800
eql_enslave eql ppp0 14400

Parametr `szacowana prędkość' (estimated speed), który podajesz w poleceniu eql_slave nie ma bezpośredniego wpływu na działanie systemu. Jest wykorzystywany przez sterownik EQL do określenia stopnia podziału datagramów które powinny być otrzymywane przez urządzenie, możesz w ten sposób dokładnie dopasować równomierne obciążenie wszystlich linii.

W celu odłączenia linii od urządzenia EQL stosuje się polecnie eql_amancipate:

eql_emancipate eql sl0

Budowa tablicy trasowania odbywa się w taki sam sposób, jak w przypadku zwykłego połączenia point-to-point, za wyjątkiem tego, że wszystkie trasy zamiast do urządzeń ppp*, sl* powinny się odnosić do urządzenia eql. Zwykle polecenia wyglądają mniej więcej tak:

route add default eql0

Sterownik EQL został opracowany przez Simona Janesa, simon@ncm.com.

6.7 Ethernet

Urządzenia kart ethernetowych noszą nazwy `eth0', `eth1', `eth2' itd. Pierwsza karta wykryta przez jądro otrzymuje nazwę `eth0', a reszta kolejne nazwy w miarę rozpoznawania kart przez system.

Jeśli chcesz się nauczyć, jak pracują karty ethernetowe pod Linuksem, przeczytaj Ethernet-HOWTO.

Kiedy jądro poprawnie rozpoznaje posiadane przez ciebie karty ethernetowe, ich dalsza konfiguracja jest prosta.

Zwykle wystarczą takie polecenia:

# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
# route add 192.168.0.0 netmask 255.255.255.0 eth0

Większość sterowników kart ethernetowych została opracowana przez Donalda Beckera becker@CESDIS.gsfc.nasa.gov.

6.8 FDDI

Urządzenia standardu FDDI noszą nazwy `fddi0', `fddi1', `fddi2' itd. Pierwsze urządzenie rozpoznane przez jądro otrzymuje nazwę `fddi0', a pozostałe kolejne nazwy w miarę ich rozpoznawania przez system.

Sterownik kart Digital Equipment Corporation FDDI EISA o PCI został opracowany przez Lawrencea V. Stefaniego, stefani@lkg.dec.com.

Opcje konfiguracji jądra:

Network device support  --->
    [*] FDDI driver support
    [*] Digital DEFEA and DEFPA adapter support

Kiedy jądro poprawnie rozpoznaje posiadane przez ciebie karty, konfiguracja interfejsu FDDI jest niemal identyczna, jak inicjalizacja kart ethernetowych. Po prostu jako argument programów ifconfig i route podajesz jedynie nazwę odpowiedniego urządzenia FDDI.

6.9 Frame Relay

Istnieją dwa rodzaje urządzeń standardu Frame Relay w jądrze Linuksa, DLCI o nazwach `dlci00', `dlci01' itd. oraz FRAD o nazwach `sdla0', `sdla1' itd.

Frame Relay jest nową technologią sieciową, przeznaczoną przede wszystkim dla ruchu ruchu o nieciągłej, przerywanej naturze. Do sieci Frame Relay podłącza się za pomocą urządzenia Frame Relay Access Device (FRAD). Frame Realy pod Linuksem obsługuje przesyłanie pakietów IP zgodnie z opisem przedstawionym w RFC-1490.

Opcje konfiguracji jądra:

Network device support  --->
    <*> Frame relay DLCI support (EXPERIMENTAL)
    (24)   Max open DLCI
    (8)   Max DLCI per device
    <*>   SDLA (Sangoma S502/S508) support

Obsługa protokołu Frame Relay, oraz niezbędne do tego narzędzia zostały napisane przez Mikea McLagana, mike.mclagan@linux.org.

W chwili obecnej, jedynym obsługiwanym urządzeniem FRAD jest Sangoma Technologies S502A, S502E and S508.

Po prawidłowym skompilowaniu jądra, do skonfigurowania urządzeń FRAD i DLCI są niezbędne narzędzia konfiguracyjne: ftp.invlogic.com. Komplilacja i instalacja narzędzi jest prosta, niestety brak głównego pliku Makefile, powoduje, że trzeba to zrobić ręcznie.

# cd /usr/src
# tar xvfz .../frad-0.15.tgz
# cd frad-0.15
# for i in common dlci frad; do cd $i; make clean; make; cd ..; done
# mkdir /etc/frad
# install -m 644 -o root -g root bin/*.sfm /etc/frad
# install -m 700 -o root -g root frad/fradcfg /sbin
# install -m 700 -o root -g root dlci/dlcicfg /sbin

Po zainstalowaniu narzędzi, trzeba utworzyć plik /etc/frad/router.conf. Możesz skorzystać z poniższego wzoru, który jest zmodyfikowanym plikiem przykładowym:

# /etc/frad/router.conf
# Jest to wzorzec pliku konfiguracyjnego urządzeń Frame Relay
# Zawiera wszystkie możliwe opcje. Wartości domyślne są ustawione 
# na podstawie kodu sterowników karty Sangoma S502A dla MSDOSu.
#
# Znak '#' w dowolnym miejscu wiersza rozpoczyna komentarz
# Puste miejsca są ignorowane (możesz tabulatorem ładnie sformatować
# cały plik
# Nieznane pozycje [] i słowa kluczowe są ignorowane
#

[Devices]
Count=1                 # Liczba urządzeń do skonfigurowania
Dev_1=sdla0             # nazwa urządzenia
#Dev_2=sdla1            # nazwa urządzenia

# Podane tutaj parametry mają zastosowanie do wszystkich urządzeń,
# lecz dla każdego urządzenia indywidualnie może być podana inna wartość
#
Access=CPE
Clock=Internal
KBaud=64
Flags=TX
#
# MTU=1500              # Maksymalna długość ramki IFrame, domyślnie 4096
# T391=10               # T391 value    5 - 30, domyślnie 10
# T392=15               # T392 value    5 - 30, domyślnie  15
# N391=6                # N391 value    1 - 255, domyślnie 6
# N392=3                # N392 value    1 - 10, domyślnie  3
# N393=4                # N393 value    1 - 10, domyślnie  4

# Podane tutaj parametry mają zastosowanie do wszystkich urządzeń
# CIRfwd=16             # CIR forward   1 - 64
# Bc_fwd=16             # Bc forward    1 - 512 
# Be_fwd=0              # Be forward    0 - 511
# CIRbak=16             # CIR backward  1 - 64
# Bc_bak=16             # Bc backward   1 - 512
# Be_bak=0              # Be backward   0 - 511


#
#
# Konfiguracja poszczególnych urządzeń
#
#

#
# Pierwsze urządzenie - Sangoma S502E
#
[sdla0]
Type=Sangoma            # Rodzaj urządzenia do skonfigurowania,
                        # rozpoznawana jest tylko SANGOMA 

#
# Poniższe parametry są specyficzne dla typu Sangoma
#
# Rodzaj karty śangoma - S502A, S502E, S508
Board=S502E
#
# Nazwa firmowego oprogramowania testowego dla karty Sangoma
# Testware=/usr/src/frad-0.10/bin/sdla_tst.502
#
# Nazwa firmowego oprogramowania FR
# Firmware=/usr/src/frad-0.10/bin/frm_rel.502
#
Port=360                # Port uzywany przez tę kartę
Mem=C8                  # Adres okna pamięci, A0-EE, zależny od karty
IRQ=5                   # Numer przerwania IRQ , nie potrebny w przypadku S502A
DLCIs=1                 # Liczba urządzeń DLCI przyłączonych do tego urządzenia
DLCI_1=16               # numer pierwszego urządzenia DLCI, 16 - 991
# DLCI_2=17
# DLCI_3=18
# DLCI_4=19
# DLCI_5=20
#
# Podane poniżej opcje mają zastosowanie tylko do tego urządzenia
# i zastępują wartościdomyślne podane wcześniej
#
# Access=CPE            # CPE lub NODE, domyślnie CPE 
# Flags=TXIgnore,RXIgnore,BufferFrames,DropAborted,Stats,MCI,AutoDLCI
# Clock=Internal        # External lub Internal, domyślnie Internal
# Baud=128              # Określona prędkość (bodów) przyłączonych CSU/DSU
# MTU=2048              # Maksymalna długość ramki IFrame, domyślnie 4096
# T391=10               # T391 value    5 - 30, domyślnie 10
# T392=15               # T392 value    5 - 30, domyślnie 15
# N391=6                # N391 value    1 - 255, domyślnie 6
# N392=3                # N392 value    1 - 10, domyślnie 3
# N393=4                # N393 value    1 - 10, domyślnie 4

#
# Drugim urządzeniem jest zupełnie inna karta
#
# [sdla1]
# Type=ŚmiesznaKarta    # Rodzaj konfigurowanego urządzenia
# Board=                # Rodzaj karty Sangoma 
# Key=Value             # Parametry specyficzne dla tego urządzenia


#
# Domyślne parametry konfiguracyjne urządzeń DLCI 
# Mogą zostać zastępione w konkretnych sekcjach konfiguracyjnych DCI
#
CIRfwd=64               # CIR forward   1 - 64
# Bc_fwd=16             # Bc forward    1 - 512 
# Be_fwd=0              # Be forward    0 - 511
# CIRbak=16             # CIR backward  1 - 64
# Bc_bak=16             # Bc backward   1 - 512
# Be_bak=0              # Be backward   0 - 511

#
# Konfiguracja DLCI 
# Wszystkie parametry są opcjonalne. Nazewnictwo:
# [DLCI_D<devicenum>_<DLCI_Num>]
#

[DLCI_D1_16]
# IP=
# Net=
# Mask=
# Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
# DLCIFlags=TXIgnore,RXIgnore,BufferFrames
# CIRfwd=64
# Bc_fwd=512
# Be_fwd=0
# CIRbak=64
# Bc_bak=512
# Be_bak=0

[DLCI_D2_16]
# IP=
# Net=
# Mask=
# Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
# DLCIFlags=TXIgnore,RXIgnore,BufferFrames
# CIRfwd=16
# Bc_fwd=16
# Be_fwd=0
# CIRbak=16
# Bc_bak=16
# Be_bak=0

Po stworzeniu pliku /etc/frad/router.conf pozostało jedynie skonfigurować rzeczywiste urządzenia. Jest to tylko troszkę sprytniejsze niż konfigurowanie zwykłych urządzeń sieciowych. Musisz pamiętać aby przed uruchomieniem urządzeń DLCI uruchomić wpierw urządzenie FRAD.

# Konfiguracja karty FRAD i parametrów DLCI
/sbin/fradcfg /etc/frad/router.conf || exit 1
/sbin/dlcicfg file /etc/frad/router.conf
#
# Podnoszenie urządzenia FRAD
ifconfig sdla0 up
#
# Konfiguracja interfejsów DLCI i trasowania
ifconfig dlci00 192.168.10.1 pointopoint 192.168.10.2 up
route add 192.168.10.0 netmask 255.255.255.0 dlci00
#
ifconfig dlci01 192.168.11.1 pointopoint 192.168.11.2 up
route add 192.168.11.0 netmask 255.255.255.0 dlci00
#
route add default dev dlci00
#

6.10 Zliczanie ruchu (IP Accounting)

Cechy jądra Linuksa dotyczące zliczania ruchu umożliwiają gromadzenie i analizę informacji na temat wykorzystania sieci. Gromadzone dane zawierają liczbę pakietów, liczbę odpowiadających im bajtów przesłanych od ostatniego zerowania liczników. Możesz zliczać ruch na wiele różnych sposobów, odpowiednio grupując ruch tak aby gromadzone informacje zawierały odpowiednie, interesujące cię statystyki.

Opcje konfiguracji jądra:

Networking options  --->
    [*] IP: accounting

Po skompilowaniu i zainstalowaniu nowego jądra, musisz skorzystać z narzędzia o nazwie ipfwadm, służącego do wprowadzania i zmiany reguł zliczania ruchu. Istnieje wiele reguł zliczania ruchu, które mógłbyś zastosować. Wybrałem kilka prostych, które mogą być użyteczne, zapoznaj się ze stroną podręcznika dotyczącą programu ipfwadm.

Scenariusz: Posiadasz sieć ethernetową przyłączoną do Internetu za pomocą połączenia PPP. Na segmencie ethernetowym znajduje się komputer oferujący szereg usług. Jesteś zainteresowany jaki ruch jest generowany przez telnet, rlogin, ftp i www.

Możesz skorzystać z poniższego zestawu poleceń:

#
# Usuń istniejące reguły zliczania ruchu
ipfwadm -A -f
#
# dodaj reguły dotyczące lokalnego segmentu ethernetowego
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 20
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 20
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 23
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 23
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 80
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 80
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 513
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 513
ipfwadm -A in -a -P tcp -D 44.136.8.96/29
ipfwadm -A out -a -P tcp -D 44.136.8.96/29
ipfwadm -A in -a -P udp -D 44.136.8.96/29
ipfwadm -A out -a -P udp  -D 44.136.8.96/29
ipfwadm -A in -a -P icmp -D 44.136.8.96/29
ipfwadm -A out -a -P icmp -D 44.136.8.96/29
#
# Reguły domyślne
ipfwadm -A in -a -P tcp -D 0/0 20
ipfwadm -A out -a -P tcp -S 0/0 20
ipfwadm -A in -a -P tcp -D 0/0 23
ipfwadm -A out -a -P tcp -S 0/0 23
ipfwadm -A in -a -P tcp -D 0/0 80
ipfwadm -A out -a -P tcp -S 0/0 80
ipfwadm -A in -a -P tcp -D 0/0 513
ipfwadm -A out -a -P tcp -S 0/0 513
ipfwadm -A in -a -P tcp -D 0/0
ipfwadm -A out -a -P tcp -D 0/0
ipfwadm -A in -a -P udp -D 0/0
ipfwadm -A out -a -P udp  -D 0/0
ipfwadm -A in -a -P icmp -D 0/0
ipfwadm -A out -a -P icmp -D 0/0
#
# Wyświetl listę obowiązujących reguł
ipfwadm -A -l -n
#

Ostatnie polecenie wyświetla listę reguł zliczania ruchu wraz ze zgromadzonymi informacjami.

Analizując wielkość ruchu IP należy pamiętać, że będzie zwiększany licznik każdej reguły, która pasuje do analizowanego pakietu, aby uzyskać wyniki różnicowe, trzeba wykonać proste działania matematyczne. Gdybym chciał znać liczbę przesłanych bajtów poza usługami telnet, rlogin, ftp i www musiałbym od wielkości ruchu dla wszystkich portów odjąć zmierzone wielkości dla poszczególnych reguł.

# ipfwadm -A -l -n
IP accounting rules
 pkts bytes dir prot source               destination          ports
    0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 20
    0     0 out tcp  44.136.8.96/29       0.0.0.0/0            20 -> *
    0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 23
    0     0 out tcp  44.136.8.96/29       0.0.0.0/0            23 -> *
   10  1166 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 80
   10   572 out tcp  44.136.8.96/29       0.0.0.0/0            80 -> *
  242  9777 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 513
  220 18198 out tcp  44.136.8.96/29       0.0.0.0/0            513 -> *
  252 10943 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> *
  231 18831 out tcp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 in  udp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 out udp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 in  icmp 0.0.0.0/0            44.136.8.96/29       *
    0     0 out icmp 0.0.0.0/0            44.136.8.96/29       *
    0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 20
    0     0 out tcp  0.0.0.0/0            0.0.0.0/0            20 -> *
    0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 23
    0     0 out tcp  0.0.0.0/0            0.0.0.0/0            23 -> *
   10  1166 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 80
   10   572 out tcp  0.0.0.0/0            0.0.0.0/0            80 -> *
  243  9817 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 513
  221 18259 out tcp  0.0.0.0/0            0.0.0.0/0            513 -> *
  253 10983 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> *
  231 18831 out tcp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 in  udp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 out udp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 in  icmp 0.0.0.0/0            0.0.0.0/0            *
    0     0 out icmp 0.0.0.0/0            0.0.0.0/0            *
# 

6.11 IP Aliasing

Istnieją programy sieciowe, które wymagają aby jedno urządzenie sieciowe posiadało wiele numerów IP. Dostawcy internetu często korzystają z tej cechy do tworzenia wirtualnych serwerów WWW i ftp oferując klientowi utworzenie serwera o innym adresie niż ich własny.

Opcje konfiguracji jądra:

Networking options  --->
    ....
    [*] Network aliasing
    ....
    <*> IP: aliasing support

Po skompilowaniu i zainstalowaniu jądra z obsługą IP_Alias, konfiguracja jest bardzo prosta. Aliasy są dodawane do wirtualnych urządzeń sieciowych stowarzyszonych z istniejącymu urządzeniami sieciowymi. Stosuje się prostą konwencję nazywania tych urządzeń, a mianowicie <devname>:<numer urządzenia wirtualnego>, np. eth0:0, ppp0:10 etc.

Załóżmy, że posiadasz sieć ethernetową, która obsługuje jednocześnie dwie różne podsieci IP. Chciałbyś aby twój komputer miał bezpośredni dostęp do obu tych podsieci:

#
# ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 up
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0:0
#
# ifconfig eth0:1 192.168.10.1 netmask 255.255.255.0 up
# route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0
#

Aby usunąć alias należy do jego nazwy dołączyć znak `-' podczas następnego odwołania się do niego, np. tak:

# ifconfig eth0:0- 0

Wraz z usunięciem tego aliasu z tabeli trasowań zostaną usunięte wrzystkie trasy korzystające z tego aliasu.

6.12 Filtrownie pakietów (IP Firewalling)

Filtrowanie pakiet i zasady przy tym obowiązujące są dokładniej omówione w Firewall-HOWTO. IP Firewalling pozwala na zabezpieczenia twojego komputera przed nieuprawnionym dostępem przez sieć, wykorzystując w tym celu filtrowanie pakietów. Istnieją trzy różne klasy reguł: filtrowanie pakietów przychodzących, filtrowanie pakietów wychodzących i filtrowanie pakietów przekazywanych dalej (forwarding). Reguły filtrowania pakietów przychodzących dotyczą pakietów otrzymanych przez urządzenie sieciowe. Reguły filtrowania pakietów wychodzących, dotyczą pakietów tuż przed wysłaniem przez urządzenie sieciowe. Reguły fitrowania pakietów przesyłanych dotyczą pakietów, które zostały przez nasz komputer odebrane, lecz nie jest on ich ostatecznym adresatem, tzn. pakiety, które będą poddane trasowaniu.

Opcje konfiguracji jądra:

Networking options  --->
    [*] Network firewalls
    ....
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: firewalling
    [ ] IP: firewall packet logging

Wprowadzanie reguł filtrowania pakietów IP wykonuje się za pomocą programu ipfwadm. Jak wspominałem wcześniej nie jestem ekspertem od zabezpieczeń sieci komputerowych, więc choć prezentuję przykład, z którego możesz skorzystać, powinieneś samodzielnie zapoznać się z tym tematem i opracować własne reguły filtrowania pakietów, oczywiście tylko wtedy, gdy jest dla ciebie ważne bezpieczeństwo twojego systemu.

Prawdopodobnie najczęstszym wykorzystaniem filtrowania pakietów jest sytuacja, gdy twój Linux pracuje jako router i filtr pakietów chroniący lokalną sieć przed nieuprawnionym dostępem z sieci zewnętrznej.

Przedstawiona poniżej konfiguracja jest oparta na sugestiach przesłanych przez Arnta Gulbrandsena, <agulbra@troll.no>.

Przykład opisuje konfigurację reguł filtra pakietów praującego na Linuksie, wykorzystywanym w sposób przedstawiony na poniższym schemacie:

-                                   -
 \                                  | 172.16.37.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |  172.16.174.30 | Linux |      |
NET =================|  f/w  |------|    ..37.19
    |    PPP         | router|      |  --------
   /                 ---------      |--| Mail |
  /                                 |  | /DNS |
 /                                  |  --------
-                                   -

Poniższe polecenia zwykle są umieszczane w jednym z plików rc, aby były automatycznie wykonywane przy każdym uruchomieniu systemu. Aby maksymalnie zwiększyć bezpieczeństwo systemu, powinny być wykonywane tuż po skonfigurowaniu urządzeń sieciowych, lecz tuż przed ich włączeniem. W ten sposób niwelujemy chwilę słąbości związaną z restartem komputera.

#!/bin/sh

# Oczyść tabelę reguł przesyłania pakietów (forwarding)
# Zmień domyślną polityką na 'accept' (akceptuj):
#
/sbin/ipfwadm -F -f
/sbin/ipfwadm -F -p accept
#
# .. i dla ruchu przychodzącego (Incoming)
#
/sbin/ipfwadm -I -f
/sbin/ipfwadm -I -p accept

# Po pierwsze zabezpiecz interfejs PPP
# Chętnie zamiast '-a deny' wstawiłbym '-a reject -y', lecz wtedy nie
# byłoby możliwe rozpoczynanie połączeń wychodzących przez ten
# interfejs. Parametr -o pozwala rejestrować odrzucane datagramy.
# Kosztem przestrzeni dyskowej zajętej przez informacje sysloga
# uzyskujemy informacje na temat niechcianego ruchu IP.
#
/sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30

# Odrzuć pewnego rodzaju pakiety:
# Nic nie powinno przychodzić z adresów multicast/anycast/broadcast 
#
/sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
#
# nic nie powinno przychodzić z adresu pętli zwrotnej
#
/sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24

# Zezwól na połączenia SMTP i DNS, lecz jedynie do serwera Mail/DNS
#
/sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53
#
# DNS korzysta z UDP i TCP, musisz pozwolić na oba rodzaje połączeń
#
/sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53
#
# Nie pozwalamy na "odpowiedzi" przychodzące do tak niebezpiecznych
# portów jak NFS czy rozszerzenie NFSu Larryego McVoya. Jeśli
# korzystasz ze squida dopisz tutaj jego port
#
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \
        -D 172.16.37.0/24 2049 2050

# odpowiedzi do innych portów są OK
#
/sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \
        -D 172.16.37.0/24 53 1024:65535

# Odrzuć połączenia przychodzące do identd
# korzystamy tutaj z 'reject', aby łączący się komputer wiedział, że
# nie ma co próbować nawiązać połączenia. W przeciwnym wypadku narazimy
# się na opóźnienia wywołane działaniem programu ident po drugiej
# stronie nawiązywanego przez nas połączenia
#
/sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113

# Pozwól na popularne usługi pochodzące z sieci 192.168.64 i 192.168.65
#
/sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \
        -D 172.16.37.0/24 20:23

# akceptuj i przesyłaj wszystko co wzięło się z sieci lokalnej
#
/sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0

# zabroń większości innych połączeń TCP i rejestruj je
# (jeśli masz kłopot z działaniem ftp dodaj 1:1023)
#
/sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24

# ... for UDP too
#
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24

Dobra konfiguracja filtra jest niemal sztuką. Powyższy przykład powinien być rozsądnym punktem startowym. Strona podręcznika dotycząca ipfwadm oferuje dodatkowe informacje na ten temat. Jeśli planujesz założenie filtra upewnij się, że zebrałeś wokół maksymalnie wiele porad ze źródeł, którym możesz ufać i poproś kogoś aby sprawdził działanie twojego filtra z zewnątrz.

6.13 IPX (AF_IPX)

Protokół IPX jest powszechnie wykorzystywany w lokalnych sieciach Novell Netware(tm). Linux potrafi obsługiwać ten protokół i może zostać skonfigurowany do pracy jako końcówka sieci Novell Netware(tm) lub jako router pakietów IPX.

Opcje konfiguracji jądra:

Networking options  --->
    [*] The IPX protocol
    [ ] Full internal IPX network

Protokół IPX i standard NCPFS są dokładniej omówione w IPX-HOWTO.

6.14 IPv6

Właśnie gdy zaczęło ci się wydawać, że zaczynasz rozumieć sieci IP, zasady się zmieniły! IPv6 jest skrótem oznaczającym wersję 6 protokołu IP. IPv6 został opracowany w celu rozwiania obaw społeczności internetowej związanych z wyczerpywaniem się wolnych adresów IP. Adresy protokołu IPv6 są budowane na 32 bajtach (128 bitów), pozwoli to na lepsze zarządzanie sieciami, niż ma to obecnie.

Jądra Linuksa serii 2.1.* już posiadają działającą, choć niepełną implementacje protokołu IPv6.

Jeśli chcesz poeksperymentować z tą nową generacją technologii internetowych, lub jest ci to do czegoś potrzebne, powinieneś przeczytać IPv6-FAQ dostępny pod adresem: www.terra.net.

6.15 ISDN

Sieć cyfrowa zintegrowanych usług (Integrated Services Digital Network - ISDN) składa się z serii standardów definujących cyfrową sieć pakietową ogólnego przeznaczenia. ISND jest zwykle dostarczana łączami o wysokiej prędkości, podzielonymi na wiele kanałów. Istnieją dwa różne rodzaje kanałów, kanały typu 'B' rzeczywiście przenoszące dane użytkownika, oraz kanał typu 'D' wykorzystywany do przesyłania informacji sterującej do centrali ISDN w celu zestawiania połączeń i innych funkcji. Dla przykładu w Australii ISDN może być dostarczony łączem 2Mbps podzielonym na 30 kanałów B po 64kbps każdy i jeden kanał D. W tej samej chwili może być wykorzystywana dowolna liczba kabałów w dowolnej kombinacji. Jest możliwe np, zestawienie 30 różnych połączeń z 30toma różnymi punktami docelowymi, każde po 64kbps lub 15 połączeń z 15toma różnymi punktami docelowymi, każde po 128 kbps (jedno połączenie wykorzystuje dwa kanały), lub zestawienie małej liczby połączeń pozostawiając pozostałą część pasma niewykorzytaną. Pierwotną przyczyną powstania ISDN, było umożliwienie firmom telekomunikacyjnym udostępniania jednej usługi przesyłania danych, która mogłaby być wykorzystywana dla telefonii (wykorzystują cyfrowe przetworniki głosu) lub do przesyłania danych bez konieczności wykonywania przez klienta jakichkolwiek zmian.

Istnieje kilka różnych metod podłączenia komputera do sieci ISDN. Jedną z nich jest wykorzystanie urządzenia o nazwie `Terminal Adaptor', które włącza się do końcówki sieciowej (Network Terminating Unit), zainstalowanej przez twojego dostawcę usługi ISDN, udostępniającego z drugiej strony kilka portów szeregowych. Jeden z tych portów służy do wprowadzania poleceń w celu skonfigurowania i nawiązania połączeń, pozostałe są podłączone do urządzeń sieciowych, które będą bezpośrednio korzystały z zestawionych kanałów transmisji danych. W takiej konfiguracji Linux będzie pracował poprawnie bez konieczności wykonywania jakichkolwiek modyfikacji. Korzystamy z portu szeregowego urządzenia 'Terminal Adaptor' w taki sam sposób, jak ze zwykłego portu szeregowego. Innym sposobem przyłączenia Linuksa do sieci ISDN, w czym wspomagać nas będzie kod obsługi ISDN zawarty w jądrze Linuksa jest zainstalowanie karty ISDN bezpośrednio w Linuksie. Wtedy moduł obsługi ISDN w jądrze Linuksa jest odpowiedzialny za obsługę urządzenia, protokołów i zestawianie połączeń.

Opcje konfiguracji jądra:

ISDN subsystem  --->
        <*> ISDN support
        [ ] Support synchronous PPP
        [ ] Support audio via ISDN
        < > ICN 2B and 4B support
        < > PCBIT-D support
        < > Teles/NICCY1016PC/Creatix support

Implementacja ISDN w jądrze Linuksa rozpoznaje szereg różnych typów wewnętrznych kart ISDN. Ich lista jest przedstawiona podczas konfiguracji jądra:

Część z tych kart wymaga załadowania do ich wewnętrznej pamięci odpowiedniego oprogramowania. Służy do tego oddzielne narzędzie.

Szczegółowy opis jak skonfigurować obsługę ISDN pod Linuksem jest dostępny w katalogu /usr/src/linux/Documentation/isdn/. Istnieje również FAQ poświęcony tej tematyce: isdn4linux jest dostępny pod adresem www.lrz-muenchen.de. (po połączeniu, aby otrzymać wersję angielską, musisz kliknąć na angielskiej fladze)

Uwaga na temat PPP. Rodzina protokołów PPP pracuje na łączach szeregowych synchronicznych lub asynchronicznych. Rozpowszechniany powszechnie program `pppd' obsługuje jedynie tryb asynchroniczny. Jeśli zamierzasz uruchamiać połączenie PPP wykorzystująć jako nośnik usługę ISDN, potrzebujesz specjalną, zmodyfikowaną wersję tego programu. Wskazówki, gdzie ją można znaleźć znajdziesz w dokumentacji, o której wspomnieliśmy wcześniej.

6.16 IP Masquerade

Wielu ludzi do połączenia z Internetem ma zwykłe konto u dostawcy Internetu. Niemal każdy korzystający z takiej konfiguracji otrzymuje od swojego dostawcy Internetu jeden adres IP. Zwykle jest to wystarczające na podłączenie do Internetu tylko jednego komputera. Maskarada adresu IP jest sprytną sztuczką umożliwiającą jednoczesne korzystanie z tego jednego adresu IP przez wiele komputerów, sprawiając, że dla świata zewnętrzengo komputery te wyglądają tak, jak gdyby były komputerem obsługujący połączenie modemowe z Internetem. Istnieje mała niedogodność, a mianowicie w większości przypadków maskarada adresów IP działa tylko w jedną stronę, to znaczy komputery, które z niej korzystają mogą nawiązywać połączenia z komputerami w sieci Internet, lecz same nie mogą otrzymywać połączeń z zewnątrz. To oznacza, że niektóre usługi sieciowe np. talk nie działąją, a inne np. ftp muszą być skonfigurowane do pracy w trybie pasywnym (PASV). Na szczęscie większość usług internetowych takich, jak telnet, WWW i irc działa bardzo dobrze.

Opcje konfiguracji jądra:

Code maturity level options  --->
    [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
    [*] Network firewalls
    ....
    [*] TCP/IP networking
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: masquerading (EXPERIMENTAL)

Wpierw twój Linux musi obsługiwać połączenie z internetem (zwykle przez SLIP lub PPP) w taki sam sposób, jak gdyby byłjedynym komputerme, który będzie z tego połączenia korzystał. Następnie należy skonfigurować dodatkowe urządzenie sieciowe, zwykle kartę sieci ethernet, zwykle korzystając z puli numerów IP zarezerwowanych dla sieci prywatnych, których nie wykorzystuje się w sieci Internet. Komputery korzystające z maskarady adresów IP bedą właśnie na tej sieci. Każdy z nich otrzyma adres IP i zostanie skonfigurowany w ten sposób, że jego gatewayem (routerem) stanie się interfejs karty ethernetowej naszego Linuksa.

Typowa konfiguracja wygląda mnie więcej tak:

-                                   -
 \                                  | 192.168.1.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |                | Linux | .1.1 |
NET =================| masq  |------|
    |    PPP/slip    | router|      |  --------
   /                 ---------      |--| host |
  /                                 |  |      |
 /                                  |  --------
-                                   -

Najważniejsze polecenia konfiguracyjne dla tego przykładu:

# Trasa do sieci na segmencie ethernetowym
route add 192.168.1.0 netmask 255.255.255.0 eth0
#
# Domyślna trasa do Internetu
route add default ppp0
#
# Wszystkie komputery w sieci 192.168.1/24 korzystają z maskarady
# adresów IP
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 

Więcej informacji na temat maskarady adresów IP pod Linuksem znajdziesz tutaj: IP Masquerade Resource Page, lub w dokumencie IP-Masquerade-HOWTO.

6.17 IP Transparent Proxy

Przezroczyste proxy IP jest udogodnieniem, które umożliwia przekierowanie połączeń do usług lub serwerów na innym komputerze do usług lub serwerów znajdujących się na tym komputerze. Zwykle jest to użyteczne w sytuacji gdy twój Linux pracuje jako router i jednocześnie pracuje jako serwer proxy. W takim przypadku możesz przekierować do lokalnego serwera proxy wszystkie połączenia do serwerów proxy znajdujących się za routerem.

Opcje konfiguracji jądra:

Code maturity level options  --->
        [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
        [*] Network firewalls
        ....
        [*] TCP/IP networking
        ....
        [*] IP: firewalling
        ....
        [*] IP: transparent proxy support (EXPERIMENTAL)

Konfigurację przezroczystego proxy wykonuje się programem ipfwadm.

Prosty przykład, który może być użyteczny:

ipfwadm -I -a accept -D 0/0 80 -r 8080

W powyższym przykładzie przekierowujemy wszystkie połączenia skierowane na port 80 (www) dowolnego komputera, na połączenia do portu 8080 naszego Linuksa. Ten sposób mógłby być użyty (gdyby był poprawny - bo nie jest ...pp) do przekierowania całego ruchu www do lokalnego serwera proxy.

6.18 Mobile IP

Termin 'IP mobility' opisuje zdolność komputera do przemieszczania swojego punktu styku z internetem z jednej sieci do innej sieci bez konieczności zmiany własnego adresu IP i bez utraty nawiązanych połączeń. Zwykle gdy komputer zmienia swój punkt przyłączenia do sieci, musi również zmienić adres IP. Udogodnienie IP Mobility przezwycięża tę niedogodność przydzielając komputerowi jeden, ustalony adres IP i wykorzystuje tunelowanie (IP tunneling) i automatyczne trasowanie zapewniając, że datagramy skierowane do tego komputera są kierowane do adresu IP, z którego korzysta.

Istnieje projekt mający zapewnić powstanie kompletu narzędzi dla udogodnienia 'IP mobility' pd Linuksem. Aktualny stan prac można poznać zaglądając na stronę: Linux Mobile IP Home Page.

6.19 Multicast

IP Multicast pozwala na jednoczesne trasowanie datagramów do wielu różnych komputerów znajdujących się w zupełnie innych podsieciach. Korzysta się z tego mechanizmu rozpowszechniania w internecie audio i video lub innych nowoczesnych usług.

Opcje konfiguracji jądra:

Networking options  --->
        [*] TCP/IP networking
        ....
        [*] IP: multicasting

Wymagany jest minimalny zestaw narzędzi i mała rekonfiguracja sieci. Dobrym źródłem informacji na temat istalacji i konfiguracji tego udogodnienia pod Linuksem jest strona www.teksouth.com.

6.20 NetRom (AF_NETROM)

Urządzenia NetRom noszą nazwy `nr0', `nr1', itd.

Opcje konfiguracji jądra:

Networking options  --->
    [*] Amateur Radio AX.25 Level 2
    [*] Amateur Radio NET/ROM

Protokoły AX25, NetRom i Rose są opisane w AX25-HOWTO. Są wykorzystywane głównie przez krótkofalowców (packet radio).

Wiekszość pracy w implementacji tych protokołów pod Linuksem wykonał Jonathon Naylor, jsn@cs.not.ac.uk.

6.21 PLIP

Urządzenia PLIP noszą nazwy `plip0', `plip1, itd. Pierwsze konfigurowane urządzenie otrzymuje numer `0', a następne otrzymują kolejne numery.

Opcje konfiguracji jądra:

Networking options  --->
    <*> PLIP (parallel port) support

plip (Parallel Line IP), jest podobny do SLIP, to znaczy zapewnia połączenie punkt-do-punktu (point-to-point) między dwoma komputerami, lecz wykorzystuje w tym celu porty równoległe komputera (zamiast portów szeregowych, jak to ma miejsce w przypadku protokołu SLIP). Ponieważ port równoległy umożliwia w jednej chwili transmisję więcej niż jednego bitu, wykorzystując interfejs plip możemy osiągnąć znacznie większe prędkośći transmisji, niż ma to miejsce w przypadku portu szeregowego. Co więcej, do plip może być wykorzystany nawet najprostszy rodzaj portu szeregowego, port drukarkowy, gdy do pełnego wykorzystania portów szeregowych konieczne jest zakupienie dosyć drogich układów UART 15550AFN.

Należy zwrócić uwagę, że niektóre laptopy używają układów, które nie będą poprawnie współpracować z PLIP, ponieważ nie zezwalają na przesyłanie pewnego rodzaju sygnałów, na których polega PLIP, a z których nie korzystają drukarki.

Interfejs plip pod Linuksem jest zgodny z Crynwyr Packet Driver PLIP, a to oznacza, że możesz przyłączyć do swojego Linuksa, komputer pracujący pod MSDOS, na którym działa oprogramowanie TCP/IP korzystające ze standardu 'packet drivera', korzystająe z sterownika plip.

Podczas kompilacji jądra jedyny plik, któremu warto się bliżej przyjrzeć to /usr/src/linux/driver/net/CONFIG. Zawiera parametry czasowe sterownika plip podane w milisekundach. Wartości domyślne są prawdopodobnie poprawne w większości przypadków. Jeśli twój komputer jest wyjątkowo wolny, możesz się zastanowić nad zwiększeniem tych paramterów, ale na komputerze po drugiej stronie połączenia.

Sterownik przyjmuje następujące wartości domyślne parametrów:

urządzenie adres       IRQ
           we/wy
------     --------    -----
plip0      0x3BC        5
plip1      0x378        7
plip2      0x278        2 (9)

Jeśli parametry portów równoległych twojego komputera nie pasują do żadnej z przedstawionych powyżej kombinacji, jesteś w stanie zmienić przerwanie IRQ wykorzystywane przez port (za pomocą programu ifconfig). Pamiętaj aby włączyć w BIOSie korzystanie przez porty równoległe z przerwań IRQ, oczywiście o ile BIOS posiada taką opcję.

W celu skonfigurowania interfejsu plip musisz do plików rc konfigurujących sieć dodać następujące polecenia:

#
# Przyłącz interfejs  PLIP
#
#  skonfiguruj pierwszy port równoległy jako urządzenie plip
/sbin/ifconfig plip0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# End plip

Gdzie:

IPA.IPA.IPA.IPA

oznacza twój adres IP.

IPR.IPR.IPR.IPR

oznacza adres IP komputera zdalnego.

Parametr pointopoint ma tutaj takie samo znaczenie, co w przypadku protokołu SLIP, a mianowicie określa adres IP komputera po drugiej stronie połączenia.

Urządzenie plip niemal pod każdym względem możesz traktować tak samo jak urządenie slip, poza tym, że ani dip ani slattach nie muszą i nie mogą być wykorzystywane.

Schemat kabla do połączenia PLIP.

plip został opracowany w taki sposób, aby wykorzystywał kable o takim samym układzie, co kable, z których korzystają inne popularne programy do transferu danych przez port równoległy pracujące w środowisku MSDOS.

Schemat połączeń (wzięty z /usr/src/linux/drivers/net/plip.c) znajduje się poniżej:

Nazwa        Połączenie
---------   -----------------
GROUND      25 - 25
D0->ERROR   2 - 15
ERROR->D0   15 - 2
D1->SLCT    3 - 13
SLCT->D1    13 - 3
D2->PAPOUT  4 - 12
PAPOUT->D2  12 - 4
D3->ACK     5 - 10
ACK->D3     10 - 5
D4->BUSY    6 - 11
BUSY->D4    11 - 6
D5          7*
D6          8*
D7          9*
STROBE      1*
FEED        14*
INIT        16*
SLCTIN      17*

Uwagi: Nie należy łączyć końcówek oznaczonych `*'. Dodatkowe uziemienia to 18,19,20,21,22,23 i 24.

Jeśli kabel z którego korzystasz jest ekranowany, ekran powinien być podłączony do obudowy wtyczki DB-25 tylko na jednym końcu.

Ostrzeżenie: kabel ze źle wykonanymi połączeniami może fizycznie zniszczyć kartę kontrolora twojego komputera. Bądź bardzo ostrożny i dwukrotnie sprawdzaj każde połączenie, aby nie narazić się na niepotrzebny ból głowy lub atak serca.

Choć może się udać, że połączenie PLIP będzie pracować na duże odległości, należy jednak tego unikać. Specyfikacja kabla pozwala na wykonania kabla o długości ok 1m. Bądź ostrożny używając dłuższych kabli, ponieważ źródła silnych pół elekromagnetycznych (pioruny, linie wysokiego napięcia, nadajniki radiowe) mogą zakłócić pracę a czasami doprowadzić do uszkodzenia sterownika. Jeśli zależy ci na połączeniu dwóch komputerów na naprawdę dużą odległość, powinieneś zopatrzyć się w parę tanich kart ethernetowych pracujących na cienkim kablu koncentrycznym.

6.22 PPP

Urządzenia PPP noszą nazwy `ppp0', `ppp1, itd. Urządzenia otrzymują kolejne numery poczynając od `0'.

Opcje konfiguracji jądra:

Networking options  --->
    <*> PPP (point-to-point) support

Szczegółowy opis konfiguracji PPP można znaleźć w PPP-HOWTO.

Utrzymywanie za pomocą ppp stałego połączenia z Internetem.

Jeśli masz na tyle szczęścia, aby posiadać półstałe połączenie z siecią i chciałbyś, aby twój komputer automatycznie zestawiał połączenie PPP, gdy z jakiegoś powodu zostanie przerwane, pomoże ci w tym prosta sztuczka.

Skonfiguruj PPP w taki sposób, aby było uruchamiane przez administratora systemu za pomocą polecenia:

# pppd

Upewnij się, że w pliku /etc/ppp/options znajduje się opcja `-detach'. Następnie dodaj do pliku /etc/inittab, poniżej definicji getty następujący wiersz:

pd:23:respawn:/usr/sbin/pppd

W ten sposób program init będzie uruchamiał i monitorował program pppd i za każdym razem, gdy pppd skończy pracę, będzie uruchamiał go ponownie.

6.23 Rose protocol (AF_ROSE)

Urządzenia protokołu Rose noszą nazwy `rs0', `rs1', itd. Dostępne są w jądrach w wersji 2.1.*.

Opcje konfiguracji jądra:

Networking options  --->
    [*] Amateur Radio AX.25 Level 2
    <*> Amateur Radio X.25 PLP (Rose)

Protokoły AX25, NetRom i Rose są dokładnie omówione w AX25-HOWTO. Są wykorzystywane przez krótkofalowców (packet radio).

Większość pracy związanej z implementacją tych protokołów pod Linuksem wykonał Jonathon Naylor, jsn@cs.not.ac.uk.

6.24 SAMBA - `NetBEUI', `NetBios' support.

SAMBA jest implemnetacją protokołu SMB (Session Management Block). Pozwala na korzystanie z dysków i drukarek komputera pracującego pod Linuksem, komputerom pracującym pod systemami firmy Microsoft lub pod systemem OS2

SAMBA i jej konfigiracja jest szczegółowo omówiona w SMB-HOWTO.

6.25 Klient protokołu SLIP

Urządzenia protokołu SLIP są nazywane `sl0', `sl1' itd. Pierwsze skonfigurowane urządzenie otrzymuje numer `0', pozostałe otrzymują kolejne numery, w momencie ich konfiguracji.

Opcje konfiguracji jądra:

Network device support  --->
    [*] Network device support
    <*> SLIP (serial line) support
    [ ]  CSLIP compressed headers
    [ ]  Keepalive and linefill
    [ ]  Six bit SLIP encapsulation

Protokół SLIP (Serial Line Internet Protocol) pozwala na zestawienie połączenia TCP/IP przez linię szeregową, np. połączenie modemowe przez linię telefoniczną lub dzierżawioną. Oczywiście aby móc korzystać z protokołu SLIP należy mieć wpierw dostęp do serwera SLIP. Wiele uniwersytetów i firm komercyjnych udostępniają usługę SLIP.

SLIP wykorzystuje porty szeregowe komputera do przesyłania datagramów IP. W tym celu musi przejąć sterowanie portu szeregowego. Urządzenia SLIP noszą nazwy sl0, sl1 itd. Jak to się ma do urządzeń portów szeregowych? Oprogramowanie sieciowe korzysta z funkcji ioctl (i/o control) za pomocą których może zażądać zamiany urządzenia portu szeregowego w urządzenie SLIP. Dwa popularne programy potrafią to zrobić. Jeden z nich to dip, drugi slattach.

dip

dip (Dialup IP) to zmyślny program umożliwiający ustawienie prędkości portów szeregowych, sterowanie modemem w celu wybrania odpowiedniego numeru, zautomatyzowane wejście do zdalnego systemu, przesukiwanie i wybieranie informacji przesyłanych przez zdalny serwer (np. przydzielonego nam na czas sesji adresu IP), korzystanie z funkcji ioctl w celu przestawienia portu szeregowego w urządzenie SLIP. Program dip posiada rozbudowany język przeznaczony do pisania skryptów, dzięki czemu można bardzo łatwo zautomatyzować procedurę zestawiania połączenia SLIP.

Jest dostępny pod adresem: sunsite.unc.edu.

Aby go zainstalować spróbuj wydać następujące polecenia:

#
# cd /usr/src
# gzip -dc dip337o-uri.tgz | tar xvf -
# cd dip-3.3.7o

<jeśli to konieczne popraw plik Makefile>

# make install
#

Plik Makefile zakłada istnienie w twoim systemie grupy o nazwie uucp, lecz możesz to zmienić np na dip, lub slip zależnie od twojej konfiguracji.

slattach

slattach w przeciwieństwie do dip jest bardzo prostym programem, bardzo łatwym w użytkowaniu, nie posiadającym bogatych opcji programu dip. Nie posiada możliwości tworzenia skryptów, jedyne co robi to konfiguracja urządzenia portu szeregowego, jako urządzenia SLIP. Zakłada, że posiadasz wszystkie informacje niezbędne do zestawienia połączenia oraz, że połączenie fizyczne między portami jest już zestawione. slattch jest idealne do wykorzystania w stałych połączeniach z serwerem, np. przez kabel łączący bezpośrednio dwa porty szeregowe lub przez linie dzierżawioną.

Kiedy używać każdego z tych programów ?

Skorzystałbym z programu dip zawsze wtedy, gdy łączyłbyn komputer z serwerem SLIP przez modem i linię telefoniczną. Skorzystałbym z programu slattach wtedy, gdy zestawiałbym połączenie przez linię dzierżawioną lub kabel bezpośrednio między serwerem i moim komputerem i gdy nie muszę wykonywać żadnych czynności do fizycznego zestawienia połączenia między moim komputerem a serwerem. Patrz rozdział 'Stałe połączenie SLIP'.

Konfiguracja urządzenia SLIP jest zbliżona do konfiguracji urządzenia karty ethernetowej. (przeczytaj rozdział 'Konfiguracja karty ethernetowej). Jednakże istnieją dwie zasadnicze różnice:

Po pierwsze SLIP w przeciwieństwie do sieci ethernetowych łączy bezpośrednio ze sobą tylko dwa komputery, po jednym na każdym końcu połączenia. O ile podłączenie kabla sieci ethernet do komputera oznacza jej natychmiastową gotowość do pracy, o tyle w przypadku protokołu SLIP może być wymagana wcześniejsza inicjacja fizycznego połączenia między komputerami.

Jeśli korzystasz z programu dip, to zwykle inicjacja łącza odbywa się nie tuż po uruchomieniu systemu, lecz później, gdy jesteś gotowy do korzystania z połączenia. Można całą tę procedurę zautomatyzować. Jeśli korzystasz z programu slattch wtedy prawdopodobnie zechcesz zmodyfikować plik startowy rc.inet1. Jak to zrobić powiemy za chwilę.

Istnieją dwa podstawowe serwery udostępniające SLIP. Różnią się sposobem przydziału adresu IP, mogą to robić statycznie (za każdym razem otrzymujesz ten sam adres IP) i dynamicznie (po nawiązaniu połączenia serwer podaje, jakiego adresu powinieneś używać). Niemal każdy serwer SLIP bedzie wymagał przedstawienia się i podania hasła. dip potrafi zautomatyzować wszystkie te procedury.

Statyczny serwer SLIP z linią modemową i programem DIP.

Statyczny serwer SLIP to skrót oznaczający serwer SLIP przydzielający adresy IP w sposób statyczny. Otrzymany adres IP jest wyłącznie twój. Za każdym razem, gdy przyłączysz się do serwera będziesz konfigurował port SLIP swojego komputera tym samym adresem IP. Serwer odpowie na połączenie rozpoczęte przez twój modem, prawdopodobnie poprosi o podanie identyfikatora i hasła, a następnie po przejściu w tryb SLIP będzie przesyłał wszystkie datagramy adresowane na twój adres IP przez nazwiązane przez ciebie połączenie. Jeśli korzystasz ze statycznego serwera SLIP, możesz chcieć dodać do pliku /etc/hosts pozycję z nazwą i adresem IP twojego komputera. Powinieneś również skonfigurować kilka innych plików, między innymi rc.inet2, host.conf, resolv.conf, /etc/HOSTNAME i rc.local. Pamiętaj, że modyfikując rc.inet1 nie musisz podawać żadnych poleceń specyficznych dla połączenia SLIP, ponieważ to dopiero dip wykona całą ciężką robotę konfigurując interfejs SLIP, po tym jak nawiąże połączenie modemowe i zaloguje się na serwer.

Jeśli tak właśnie pracuje serwer SLIP z którego korzystasz możesz przejść do rozdziału 'Korzystanie z programu dip', tam dowiesz się jak poprawnie skonfigurować ten program.

Dynamiczny serwer SLIP z linią modemową i programem DIP.

Dynamiczny serwer SLIP to skrót oznaczający serwer SLIP, który z pewnej puli przydziela adresy IP w sposób dynamiczny (za każdym razem, gdy się z nim połączysz możesz otrzymać inny adres IP). To znaczy, że nie masz gwarancji, że łącząc się otrzymasz konkretny adres IP, może on być wykorzystywany przez kogoś innego, wtedy gdy nie korzystasz z połączenia. Administrator sieci, który skonfigurował serwer przydzielił mu pewną pulę adresów IP z której może korzystać. Obsługując kolejne przychodzące połączenie znajduje pierwszy niewykorzystany w danym momencie adres IP, przeprowadza użytkownika przez procedurę weryfikacyjną wyświetlając na koniec informacje zawierającą adres IP, który został przydzielony temu użytkownikowi na czas trwania nawiązanego właśnie połączenia.

Konfiguracja do korzystania z tego rodzaju serwera jest podobna do tej dla serwera statycznego. Trzeba jedynie dodać fragment pobrania adresu IP przydzielonego nam przez serwer na czas trwania połączenia, a następnie kontynuować konfigurowanie SLIPa z tym właśnie adresem.

Ponownie, dip wykonuje tę ciężką pracę, a jego nowsze wersje są na tyle sprytne, że potrafią nie tylko zalogować cię do systemu, ale również potrafią odczytać automatycznie adres IP wyświetlany przez serwer, zachowując go do późniejszego wykorzystania przy konfigurowaniu interfejsu SLIP.

Jeśli tak właśnie pracuje serwer SLIP z którego korzystasz możesz przejść do rozdziału 'Korzystanie z programu dip', tam dowiesz się jak poprawnie skonfigurować ten program.

Korzystanie z programu dip.

Jak wyjaśniliśmy wcześniej dip jest potężnym programem, który potrafi uprościć i zautomatyzować proces łączenia się z serwerem SLIP, logowania się na ten serwer, uruchamiania tam odpowiedniego oprogramowania i konfigurowania lokalnych urządzeń SLIP za pomocą odpowiednich poleceń korzystających z programów ifconfig i route.

Podstawowym sposobem korzystania z programu dip jest pisanie i uruchamianie specjalnych skryptów, składających się z listy poleceń rozumianych przez program dip. Przyjrzyj się plikowi sample.dip znajdującemu się w dystrybucji programu dip. Dip jest potężnym programem posiadającym wiele opcji, nie bedziemy ich tu wszystkich przedstawiać, jeśli cię to interesuje, przyjrzyj się stronom podręcznika poświęconym programowi dip, plikom README i innym plikom przykładowym znajdującym się w pakiecie dystrybucyjnym programu.

Prawdopodobnie zauważyłeś, że plik sample.dip zakłada, że korzystasz ze statycznego serwera SLIP, tzn. że wiesz jaki jest twój adres IP, zanim połączysz się z serwerem. W przypadku korzystania z dynamicznego serwera SLIP nowsze wersje programu dip zostały zaopatrzone w dodatkowe polecenie, które potrafi automatycznie odczytać i skonfigurowć lokalne urządzenie SLIP z adresem IP przydzielonym przez serwer. Poniższa próbka jest zmodyfikowanym plikiem sample.dip dostarczanym w pakiecie dip337j-uri.tgz i w twoim przypadku prawdopodobnie jest dobrym punktem startowym.

Możesz go zachować jako np. /etc/dipscript i dostosować go do swoich warunków.

#
# sample.dip    Dialup IP connection support program.
#
#               This file (should show) shows how to use the DIP
#       This file should work for Annex type dynamic servers, if you
#       use a static address server then use the sample.dip file that
#       comes as part of the dip337-uri.tgz package.
#
#
# Version:      @(#)sample.dip  1.40    07/20/93
#
# Author:       Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
#

main:
# Next, set up the other side's name and address.
# My dialin machine is called 'xs4all.hacktic.nl' (== 193.78.33.42)
get $remote xs4all.hacktic.nl
# Set netmask on sl0 to 255.255.255.0
netmask 255.255.255.0
# Set the desired serial port and speed.
port cua02
speed 38400

# Reset the modem and terminal line.
# This seems to cause trouble for some people!
reset

# Note! "Standard" pre-defined "errlevel" values:
#  0 - OK
#  1 - CONNECT
#  2 - ERROR
#
# You can change those grep'ping for "addchat()" in *.c...

# Prepare for dialing.
send ATQ0V1E1X4\r
wait OK 2
if $errlvl != 0 goto modem_trouble
dial 555-1234567
if $errlvl != 1 goto modem_trouble

# We are connected.  Login to the system.
login:
sleep 2
wait ogin: 20
if $errlvl != 0 goto login_trouble
send MYLOGIN\n
wait ord: 20
if $errlvl != 0 goto password_error
send MYPASSWD\n
loggedin:

# We are now logged in.
wait SOMEPROMPT 30
if $errlvl != 0 goto prompt_error

# Command the server into SLIP mode
send SLIP\n
wait SLIP 30
if $errlvl != 0 goto prompt_error

# Get and Set your IP address from the server.  
#   Here we assume that after commanding the SLIP server into SLIP
#   mode that it prints your IP address
get $locip remote 30
if $errlvl != 0 goto prompt_error

# Set up the SLIP operating parameters.
get $mtu 296
# Ensure "route add -net default xs4all.hacktic.nl" will be done
default

# Say hello and fire up!
done:
print CONNECTED $locip ---> $rmtip
mode CSLIP
goto exit

prompt_error:
print TIME-OUT waiting for sliplogin to fire up...
goto error

login_trouble:
print Trouble waiting for the Login: prompt...
goto error

password:error:
print Trouble waiting for the Password: prompt...
goto error

modem_trouble:
print Trouble occurred with the modem...
error:
print CONNECT FAILED to $remote
quit

exit:
exit

Powyższy przykład zakłada, że łączysz się z dynamicznym serwerem SLIP. Jeśli łączysz się z serwerem statycznym powinieneś skorzystać z pliku sample.dip dostarczanego razem z dip337j-uri.tgz.

Gdy dip otrzyma polecenie get $local przeszukuje tekst przesyłany przez serwer SLIP w poszukiwaniu ciągu znaków wyglądającego jako adres IP, tzn. ciągi cyfr rozdzielone kropką '.'. Została ona wprowadzone dla osób korzystających z dynamicznych serwerów SLIP, aby dip mógł sam, automatycznie odczytać adres IP przydzielony przez serwer.

W powyższym przykładzie po zestawieniu połączenia SLIP zostanie automatycznie dodana domyślna trasa skierowana właśnie przez to połączenie. Jeśli nie tego oczekujesz, możesz np. posiadać inne połączenie przez sieć ethernetową, przez które ma być skierowana domyślna trasa, usuń z powyższego pliku wiersz z poleceniem default. Jeśli po zakończeniu działania tego skryptu wydasz polecenie ifconfig zobaczysz, że pojawiło się nowe urządzenie sl0. To jest właśnie urządzenie SLIP. W miarę potrzeb możesz zmienić konfigurację sieci ręcznie, po zakończeniu działania programu dip, za pomocą pogramów ifconfig i route.

Należy pamietać, że dip pozwala na wybranie jednego z wielu różnych protokołów wykorzystywanych w poleceniu mode. Najczęściej jest to cSLIP oznaczający SLIP z kompresją nagłówków. Pamiętaj, że oba końce połączenia muszą pracować w identycznym trybie. Jeśli zmienisz jakieś ustawienia, musisz się upewnić, że serwer sobie z nimi poradzi.

Powyższy przykład jest uniwersalny i powinien poradzić sobie z większością błędów jakie mogą wystąpić. Więcej informacji znajdziesz na stronie podręcznika poświęconej programowi dip (man dip). Oczywiście możesz w taki sposób zmodyfikować ten skrypt, aby w przypadku wystapienia błędu próbował powtórnie nawiązać połączenie telefoniczne, lub próbował połączyć się z innymi serwerami, które udostępniają ci wejscie do Internetu.

Stałe połączenie SLIP przez linię dzierżawioną -slattach.

Jeśli jesteś posiadaczem kabla łączącego dwa komputery, lub szczęśliwcem posiadającym linie dzierżawioną lub inne stałe połączenie szeregowe dwóch komputerów, wtedy nie musisz się kłopotać zestawiając łącze szeregowe za pomocą programu dip. slattach jest bardzo łatwym w uzywaniu narzędziem umożliwiającym skonfigurować zestawiane połaczenie.

Ponieważ będzie to połączenie stałe, prawdopodobnie zechcesz dodać kilka poleceń do pliku rc.inet1. Podsumowując, wszystko co potrzebujesz w przypadku zestawiania połączenia przez linię stałą, jest poprawne ustawienie prędkości portów szeregowych i przełączenie ich w tryb SLIP. slattach pozwala wykonać to wszystko wydając jedno polecenie. Dodaj do pliku rc.inet1 następujące polecenie:

#
# Zestaw połączenie SLIP ze statycznym adresem IP
#
#  configure /dev/cua0 for 19.2kbps and cslip
/sbin/slattach -p cslip -s 19200 /dev/cua0 &
/sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# Koniec

Gdzie:

IPA.IPA.IPA.IPA

twój adres IP

IPR.IPR.IPR.IPR

adres IP po drugim końcu połączenia SLIP

slattach przyporządkowuje do urządzenia portu szeregowego pierwsze wolne urządzenie slip. Rozpoczyna od sl0. To znaczy pierwsze wywołanie polecenia slattach przyporządkowuje portowi szeregowemu urządzenie sl0, przy następnym wywołaniu będzie to sl1 itd.

slattach umożliwia skonfigurowanie wielu różnych protokołów (argument opcji -p). W twoim przypadku w zależności od tego czy będziesz chciał korzystać z kompresji nagłówków czy nie będziesz korzystał albo z protokołu cSLIP albo SLIP. Uwaga: oba końce połączenia muszą używać tego samego protokołu.

6.26 Serwer SLIP.

Jeśli posiadasz komputer, być może przyłączony do sieci, i chcesz, aby udostępniał innym przez modem serwisy internetowe, to musisz skonfigurować go jako serwer. Jeśli protokołem, który chcesz używać jest SLIP, to istnieją trzy możliwości konfiguracji twojego komputera jako serwer. Osobiście preferuję pierwszą z prezentowanych, sliplogin. Wydaje się być najprostszą i najłatwiejszą do skonfigurowania i zrozumienia. Przedstawię opis wszystkich trzech metod, abyś mógł samemu podjąć decyzję.

Serwer korzystający z programu sliplogin.

sliplogin to program zastępujący zwykłą powłokę (interpreter poleceń) użytkownika, dla tych, którzy chcą korzystać z linii szeregowej w trybie SLIP. Pozwala na skonfigurowanie twojego komputera zarówno jako statycznego serwera SLIP (użytkownicy za każdym razem otrzymują ten sam adres IP), lub dynamicznego serwera SLIP (adres IP jest przydzielony raczej do linii szeregowej, a nie użytkownika, więc użytkownik nie ma pewności, że za każdym razem otrzyma ten sam adres IP).

Użytkownik musi wpierw przejść przez standardową procedurę wchodzenia do systemu (logowanie się) podając swój identyfikator i hasło, lecz po wejściu do systemu, zmiast zwykłego interpretera poleceń uruchamiany jest program sliplogin, który przeszukuje swój plik konfiguracyjny (/etc/slip.hosts) w poszukiwaniu pozycji odpowiadającej identyfikatorowi użytkownika. Po jej znalezieniu, przestawia linię w tryb 8mio bitowy, a następnie korzystając z odpowiednich funkcji ioctl przełącza linię w tryb SLIP. Po zakończeniu tego etapu następuje ostatnia faza, sliplogin uruchamia skrypt, którego zadaniem jest skonfigurowanie interfejsu SLIP (ustawienie adresu IP, netmaski) dodanie odpowiedniej trasy do tabeli trasowania (routingu) jądra. Skrypt ten nosi zwykle nazwę /etc/slip.login lecz podobnie jak w przypadku getty, jeśli niektórzy użytkownicy wymagają specjalnego traktowania możesz utworzyć skrypt /etc/slip.login.identyfikator_uzytkownika, który w takim przypadku zostanie uruchomiony w miejsce standardowego skryptu.

Aby sliplogin działał poprawnie należy zmodyfikować trzy lub cztery pliki. Omówię szczegółowo skąd i jak zdobyć odpowiednie oprogramowanie i jak je poprawnie skonfigurować. Wspomniane pliki to:

Skąd wziąć sliplogin

Być może pakiet sliplogin jest już zainstalowany na twoim komputerze, jako część dystrybucji, jeśli nie, sliplogin jest dostępny pod adresem sunsite.unc.edu. Plik tar zawiera pliki źródłowe, skompilowane pliki binarne i dokumentację.

Aby zapewnić, że sliplogin może być uruchamiany przez upoważnionych do tego użytkowników, powinieneś do pliku /etc/group dodać pozycję podobną do poniższej:

 
 .. 
slip::13:radio,fred 
 .. 

Podczas instalacji pakietu sliplogin, Makefile zmieni grupę do której należy program sliplogin na slip. W ten sposób, prócz właściciela będą go mogli uruchamiać tylko użytkownicy należący do grupy SLIP. W powyższym przykładzie mogą to robić tylko użytkownicy radio i fred.

Aby zainstalować pliki binarne do katalogu /sbin/, a strony podręcznika do /man/ należy wykonoać następujące polecenia:

 
# cd /usr/src 
# gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf - 
# cd sliplogin-2.1.1 
# <..Jeśli nie korzystasz z shadow pasword popraw Makefile..> 
# make install 

Jeśli przed instalacją chcesz samemu skompilować pliki binarne przed make install wykonaj polecenie make clean. Jeśli chcesz zainstalować pliki binarne w innym miejscu, musisz wcześniej zmienić plik Makefile.

Więcej informacji znajdziesz w plikach README wewnątrz pakietu.

Konfiguracja pliku /etc/passwd.

Zwykle dla osób korzystających ze SLIPa tworzy się oddzielne konta. Powszechnie przyjęta konwencja mówi, że jako pseudonim użytkownika należy przyjąć nazwę łączącego się z nami komputera, poprzedzoną wielką literą 'S'. Jeśli łączący się z nami komputer nosi nazwę radio, mogłbyś utworzyć dla niego pozycję w pliku /etc/passwd wyglądajacą mniej więcej tak:

 
Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin 

Tak na prawdę nie ma znaczenia jaki jest identyfikator konta.

Uwaga: użytkownik SLIPa nie potrzebuje własnego katalogu macierzystego, ponieważ nie będzie korzystał z powłoki interpretera poleceń na naszym komputerze. Dlatego dobrym wyborem w takim przypadku jest katalog /tmp. Pamiętaj, że zamiast zwykłej powłoki uruchamiany jest program sliplogin.

Konfiguracja pliku /etc/slip.hosts

Plik /etc/slip.hosts jest przeszukiwany przez sliplogin w poszukiwaniu szczegółów konfiguracyjnych dla użytkownika, przez którego został uruchomiony. W tym właśnie pliku podaje się adres IP i netmaskę które będą przydzielone temu użytkownikowi i wykorzystywane do konfiguracji. Przykładowe dwie pozycje, jedną dla statycznej konfiguracji dla komputera radio i drugą, dynamiczna konfiguracja dla komputera albert mogły by wyglądać następująco:

 
# 
Sradio   44.136.8.99   44.136.8.100  255.255.255.0  normal      -1 
Salbert  44.136.8.99   DYNAMIC       255.255.255.0  compressed  60 
# 

Poszczególne pola w wierszu pliku /etc/slip.hosts oznaczają:

  1. identyfikator użytkownika;
  2. adres IP serwera, tzn adres IP tego komputera;
  3. adres IP przydzielony komputerowi po drugiej stronie połączenia. Jeśli w tym polu występuje słowo DYNAMIC wtedy adres IP, zostanie przydzielony na podstawie informacji zawartych w pliku /etc/slip.tty. Uwaga: to udogodnienie pojawiło się dopiero w wersji 1.3 programu sliplogin.
  4. netmaska przydzielona łączącemu się komputerowi, w notacji dziesiętnej z kropkami np. 255.255.255.0 netmaska klasy C;
  5. tryb pracy SLIP pozwalający na włączenie/wyłączenie kompresji lub innych udogodnień;
  6. parametr czasowy określajacy jak długo linia może pozostać w stanie oczekiwania na przesłanie informacji (brak otrzymanych datagramów), zanim nastąpi automatyczne rozłączenie. Wielkość ujemna wyłącza to udogodnienie.
  7. parametry opcjonalne.

Uwaga: W polach 2 i 3 można podawać zarówna nazwy komputerów, jak i adresy IP. Jeśli podasz nazwę komputera, sprawdź, czy system potrafi znaleźć jego adres IP, w przeciwnym razie wykonanie skryptu zakończy się niepowodzeniem. Możesz to sprawdzić próbując połączyć się z nim za pomocą programu telnet. Jeśli zobaczysz komunikat `Trying nnn.nnn.nnn...' to znaczy, że twój komputer potrafi znaleźć adres IP komputera o podanej przez ciebie nazwie. Jeśli zobaczysz komunikat Unknown host', to znaczy, że jednak nie potrafi. Jeśli nie potrafi musisz podawać adres IP tego komputera lub sprwadź konfigurację DNS swojego komputera.

Najczęściej wykorzysytwane tryby pracy SLIP to:

normal

zwykły, nieskompresowny SLIP.

compressed

kompresja nagłówków van Jacobsena (cSLIP)

Oczywiście są to dwie wzajemnie wykluczające się opcje. Więcej informacji na temat dostępnych opcji znajdziesz na stronie podręcznika poświęconej programowi sliplogin.

Konfiguracja pliku /etc/slip.login.

Po przeszukaniu przez sliplogin pliku /etc/slip.hosts i znalezieniu opowiednich pozycji, zostanie uruchomiony skrypt /etc/sli.login, który w rzeczywistości wykonuje cała pracę związaną z konfiguracja interfejsów sieciowych, korzystając z przekazanych mu informacji o adresie IP i netmasce sieci.

Przykładowy plik /etc/slip.login dostarczany w pakiecie sliplogin wygląda następująco:

 
#!/bin/sh - 
# 
#       @(#)slip.login  5.1 (Berkeley) 7/1/90 
# 
# generic login file for a SLIP line.  sliplogin invokes this with 
# the parameters: 
#     $1       $2       $3    $4, $5, $6 ... 
#   SLIPunit ttyspeed   pid   the arguments from the slip.host entry 
# 
/sbin/ifconfig $1 $5 pointopoint $6 mtu 1500 -trailers up 
/sbin/route add $6 
arp -s $6 <hw_addr> pub 
exit 0 
# 

Jak widać, powyższy skrypt po prostu korzysta z programu ifconfig i route. Konfiguruje urządzenie SLIP zgodnie z podanymi mu adresem IP i netmaską, następnie modyfikuje tabele trasowania w jądrze. Wykonuje te same polecenia, które należy wykonać ręcznie korzystając ze slattach.

Zwróć uwagę na użycie Proxy ARP w celu zapewnienia komunikacji między komputerami znajdującymi się na tym samym segmencie sieci co nasz serwer, a komputerem łączącym się przez linię szeregową. Pole <hw_addr> powinno zawierać adres sprzętowy karty ethernetowej serwera. Jeśli serwer nie jest przyłączony do sieci ethernetowej możesz pominąć ten wiersz całkowicie.

Konfiguracja pliku /etc/slip.logout.

Kiedy następuje przerwanie połączenie chcesz być pewny, że port szeregowy jest przywracany do swego normalnego stanu i jest gotowy do obsługi kolejnego połączenia. Do tego celu służy skrypt /etc/slip.logout. Jest bardzo prosty i jest wywoływany z tymi samymi argumentami co /etc/slip.login.

#!/bin/sh -
#
#               slip.logout
#
/sbin/ifconfig $1 down
arp -d $6
exit 0
#

Wykonywane przez niego czynności to: wyłączenie interfejsu slip, spowoduje automatyczne usunięcie z tabeli trasowania wprowadzonej tam podczas zestawiania połączenie pozycji; usunięcie z tabeli arp wprowadzonej tam ręcznie pozycji. Nie potrzebujesz tego polecenia, jeśli twój serwer nie jest przyłączony do sieci ethernetowej.

Konfiguracja pliku /etc/slip.tty.

Jeśli korzystasz z dynamicznego przydziału adresów IP (choć jeden komputer w pliku /etc/slip.hosts jest skonfigurowany z opcją DYNAMIC) to musisz również skonfigurować plik /etc/slip.tty informując system jakie adresy IP są przydzielone do każdego z wykorzystywanych portów szeregowych. Plik ten jest potrzebny tylko wtedy, gdy twój serwer będzie przydzielał adresy IP użytkownikom w sposób dynamiczny.

Plik zawiera tabelę, która każdemu wykorzystywanemu urządzeniu tty przyporządkowuje adres IP jaki ma zostać przydzielony komputerowi łączącemu się przez to urządzenie tty.

Format niniejszego pliku jest następujący:

# slip.tty    tty -> adres IP
# format: /dev/tty?? xxx.xxx.xxx.xxx
#
/dev/ttyS0      192.168.0.100
/dev/ttyS1      192.168.0.101
#

Pozycje w powyższym przykładzie oznaczają, że wszyscy, którzy połączą się przez port /dev/ttuS0 i jako swoj adres mają w pliku /etc/slip.hosts słowo DYNAMIC otrzymają adres 192.168.0.100.

W ten sposób potrzebujesz jedynie jednego adresu IP na każdy wykorzystywany port dla wszystkich użytkowników, którzy nie potrzebują dedykowanego, stałego adresu IP. Dzięki temu liczba adresów potrzebna do obsługi wielu użytkowników jest bardzo mała.

Serwer SLIP korzystający z programu dip.

Część z prezentowanej poniżej informacji pochodzi ze stron podręcznika dotyczących programu dip. Jest tam pokrótce opisane jak wykorzystać dip jako serwer SLIP. Proszę również zwrócić uwagę, że podane informacje dotyczą wersji dip337o-uri.tgz i prawdopodobnie nie mają zastosowania do innych wersji programu.

dip posiada tryb pracy, w którym automatycznie wyszukuje pozycję dotyczącą użytkownika, który go wywołał i konfiguruje linię szeregową jako połączenie SLIP według parametrów jakie znalazł w pliku /etc/diphosts. Ten tryb pracy jest włączany wtedy, gdy dip zostanie uruchominy jako program o nazwie diplogin. To jest właśnie sposób wykrzystania dipa do stworzenia serwera SLIP. Należy utworzyć specjalne konta, z programem diplogin jako powłoką użytkownika.

Pierwsze co musisz zrobić, to następujące dowiązanie symboliczne:

# ln -sf /usr/sbin/dip /usr/sbin/diplogin

Następnie należy dodać odpowiednie pozycje do pliku /etc/passwd i /etc/diphosts.

Aby skonfigurować Linuksa jako serwer SLIP wykorzystując do tego program dip wymaga utworzenia specjalnych kont do obsługi SLIPa z powłoką użytkownika w postaci programu dip jako diplogin. Sugerowana konwencja nadawania nazw tym kontom zaleca, aby pseudonim użytkownika rozpoczynał się wielką literą 'S', np. `Sfredm'.

Przykładowa pozycja pliku /etc/passwd konta SLIP może wyglądać następująco:

Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin
^^         ^^        ^^  ^^   ^^   ^^   ^^
|          |         |   |    |    |    \__ diplogin jako powłoka użytkownika
|          |         |   |    |    \_______ katalog domowy
|          |         |   |    \____________ pełna nazwa użytkownika
|          |         |   \_________________ numer grupy (GID)
|          |         \_____________________ numer użytkownika (UID)
|          \_______________________________ zakodowane haslo
\__________________________________________ pseudonim użytkownika

Po zalogowaniu się użytkownika (jeśli zostanie poprawnie zweryfikowany) program login uruchomi polecenie diplogin. dip wywołany jako diplogin zakłada, że został uruchomiony jako powłoka użytkownika. Piersze co robi, to korzysta z funkcji getuid() pobierając pseudonim wywołującego go użytkownika. Następnie przeszukuje /etc/diphosts w poszukiwaniu pierwszej pozycji, która pasuje do zdobytego identyfikatora lub wykorzystywanego urządzenia tty, a następnie odpowiednio się konfiguruje. Decydując czy użytkownik powinien mieć własną pozycję w pliku /etc/diphosts, czy powinien korzystać z konfiguracji domyślnej, możesz budować serwer, który korzysta zarówno z dynamicznego i statycznego przydziału adresów IP.

dip automatycznie doda pozycję Proxy-ARP jeśli zostanie wywołany jako diplogin. Nie musisz się martwić ręcznym dodawaniem tych pozycji.

Konfiguracja pliku /etc/diphosts

/etc/diphosts jest wykorzystywany przez dip do wyszukiwania konfiguracji dla łączących się komputerów. Mogą to być pozycje dotyczące zarówno komputerów łączących się z twoim Linuksem, lecz równie dobrze mogą to być pozycje dotyczące komputerów, z którymi łączy się twój Linux.

Ogólny format pliku /etc/diphosts wygląda następująco:

 ..
Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296
 ..

Poszczególne pola oznaczają:

  1. pseudonim użytkownika: identyfikator zwracany przez getpwuid(getuid()) lub nazwa terminala
  2. niewykorzystane: zgodność z formatem passwd
  3. adres zdalny: nazwa (adres IP) łaczącego się z nami komputera
  4. adres lokalny: nazwa (adres IP) naszego serwera
  5. netmaska: netmaska w notacji dziesiętnej
  6. komentarz: możesz tu wstawić co chcesz
  7. protokół: Slip, CSlip itp.
  8. MTU: liczba

Przykłady pozycji pliku /etc/net/diphosts dla komputerów łączących się z nami:

Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296

definującej połączenie SLIP między naszym serwerem, a komputerem, który otrzyma adres 145.71.34.1, parametr MTU połączenia będzie wynosił 296, lub

Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006

definiującej połączenie cSLIP z komputerem, który otrzyma adres 145.71.34.1. parametr MRU połączenia wynosił 1008.

Dlatego wszyscy użytkownicy którym zezwolisz na przydzielany statycznie adres IP powinni być wymienieni w pliku /etc/diphosts. Jeli chcesz aby uzytkownicy łączący się na pewien port mieli przydzielane numery w sposób dynamiczny musisz umieścić wpis dla wspomnianego portu i usunąć wszystkie wpisy indywidualnych użytkowników. Upewnij się aby skonfigurować co najmniej jeden wpis dla każdego z urządzeń tty wykorzystywanego przez twoich użytkowników w celu zapewnienia im poprawnej konfiguracji niezależnie od modemu z którym się połączą.

Kiedy użytkownik się loguje, widzi standardową zachętę do podania swojego identyfikatora SLIP i hasła. Jeli po wprowadzeniu żądanych informacji zostanie zweryfikowany poprawnie, nie zobaczy żadnych specjalnych komunikatów. Powinien wtedy przełączyć się po swojej stronie w tryb SLIP i mieć poprawne połączenie według konfiguracji zapisanej w pliku diphosts.

Serwer SLIP korzystający z pakietu dSLIP.

Matt Dillon <dillon@apollo.west.oic.com> stworzył pakiet, który służy nie tylko do inicjowania połączenia z serwerem, ale równie dobrze może obsługiwać połączenia przychodzące. Jest to kombinacja małych programów i skryptów zarządzających dla ciebie połączeniem. Musisz mieć zainstalowaną powłokę tcsh ponieważ przynajmniej jeden ze skryptów jej wymaga. Matt dostarcza binarną kopię programu expect, ponieważ wykorzystuje go inny ze skryptów. Prawdopodobnie zmuszenie pakietu do pracy będzie od ciebie wymagało trochę doświadczenia w obchodzeniu się z programem expect, lecz niech cię to nie odstręcza.

Matt napisał dobry zestaw instrukcji instalacyjnych zgromadzonych w pliku README. Nie będę ich tutaj powtarzał.

Pakiet dSLIP możesz pobrać bezpośrednio ze źródła: apollo.west.oic.com

/pub/linux/dillon_src/dSLIP203.tgz

lub z:

sunsite.unc.edu

/pub/Linux/system/Network/serial/dSLIP203.tgz

Przeczytaj plik README i dodaj odpowiednie pozycje do pliku /etc/passwd i /etc/group zanim wydasz polecenie make install.

6.27 Obsługa protokołu STRIP (Starmode Radio IP)

Urządzenia STRIP noszą nazwy `st0', `st1', itd.

Opcje konfiguracji jądra:

Network device support  --->
        [*] Network device support
        ....
        [*] Radio network interfaces
        < > STRIP (Metricom starmode radio IP)

STRIP to protokół zaprojektowany specjalnie dla radiowych modemów Metricom na uniwersystecie w Stanford w ramach projektu badawczego noszącego nazwę MosquitoNet Project. Zajdziesz tam mnóstwo ciekawych informacji, nawet jeśli nie jesteś bezpośrednio zainteresowany projektem.

Modemy Metricom przyłącza się przez port szeregowy komputera, posiadają szerokie spektrum technologiczne i są zdolne do pracy z prędkością zbliżoną do 100kbps. Informacje na temat samych modemów Metricom jest dostępna tutaj: Metricom Web Server.

W chwili obecnej standardowe narządzia sieciowe nie obsługują sterownika STRIP. Musisz zdobyć specjalistyczne narzędzia dostępne na serwerze www projektu MosquitoNet. Szczegóły na temat niezbędnego oprogramowania znajdziesz tutaj: MosquitoNet STRIP Page.

Konfiguracja sieci pracujących ze sterownikiem STRIP polega na wykorzystaniu zmodyfikowanego programu slattach, które ustawia tryb pracy linii szeregowej na STRIP, a następnie na konfiguracji powstałego urządzenia `st[0-9]' w taki sam sposób, jak gdyby była to zwykła karta ethernetowa. Z jednym wyjątkiem, z przyczyn technicznych STRIP nie obsługuje protokołu ARP, dlatego musisz ręcznie skonfigurować tabelę ARP dla wszystkich komputerów w twojej podsieci. Co nie powinno sprawić większego kłopotu.

6.28 Token Ring

Urządzenia Token Ring noszą nazwy `tr0', `tr1' itd. Token Ring jest standardem sieci LAN opracowanym przez IBM, który unika kolizji wprowadzając mechanizm pozwalający na transmisję danych w jednej chwili tylko jednej stacji przyłączonej do sieci. "Token" w danej chwili może należeć tylko do jednej stacji i to właśnie ta stacja, która go posiada jest uprawniona do nadawania informacji. Po zakończonej transmisji przekazuje "Token" następnej stacji. Przechodzi kolejno pomiędzy wszystkimi aktywnymi końcówkami sieci. Stąd nazwa "Token Ring".

Opcje konfiguracji jądra:

Network device support  --->
        [*] Network device support
        ....
        [*] Token Ring driver support
        < > IBM Tropic chipset based adaptor support

Konfiguracja urządzeń token ring jest identyczna, jak konfiguracja urządzeń ethernetowych, z dokładnością do nazwy urządzenia podlegającego konfiguracji.

6.29 X.25

X.25 to obwodowy protokół komutacji pakietów zdefiniwany w C.C.I.T.T. (organizacji standaryzacyjnej uznawanej przez firmy telekomunikacyjne większości krajów świata. Cały czas trwają pracę nad implementacją X25 u LAPB i najnowsze wersje jądra 2.1.* zawierają kod odzwierciedlający aktualny stan prac.

Jonathon Naylor jsn@cs.nott.ac.uk przewodzi grupie rozwijającej to oprogramowanie i opiekuje się listą utworzoną do dyskusji na tematy dotyczące X25 i Linuksa. Aby się na nią zapisać należy na adres majordomo@vger.rutgers.edu napisać list o treści "subscribe linux-x25".

Wczesne wersje narzędzi konfiguracyjnych można uzyskac z archiwum ftp ftp.cs.nott.ac.uk.

6.30 WaveLan Card

Urządzenia Wavelan noszą nazwy `eth0', `eth1', itd.

Opcje kompilacji jądra:

Network device support  --->
        [*] Network device support
        ....
        [*] Radio network interfaces
        ....
        <*> WaveLAN support

Karty WaveLan to szerokopasmowe sieciowe karty bezprzewodowe. Są bardzo podobne do kart ethernetowych i praktycznie w większości są konfigurowane w taki sam sposób.

Więcej informacji na temat kart WaveLan znajdziesz na stronie Wavelan.com.

7. Kable i okablowanie

Ci z was, którzy posiadają odpowiednie narzędzia mogą chcieć zrobić własne kable do połączenia ze sobą dwóch Linuxów. Poniższe schematy powinny wam w tym pomóc.

7.1 Szeregowy kabek bezmodemowy (Serial NULL Modem cable)

Nie wszystkie kable bezmodemowe są takie same. Dużo kabli bezmodemowych oszukuje twój komputer, tak aby myślał, że wszystkie potrzebne sygnały są obecne i zamienia ze sobą kanały nadawania i odbioru danych. Taki kabel będzie działał poprawnie, ale musisz stosować programowe sterowanie przepływem danych (XON/XOFF), które jest znacznie mniej wydajne od sterowania sprzętowego. Poniższy schemat przedstawia kabel umożliwiajacy transmisję ze sprzętowym sterowaniem przepływem danych (RTC/CTS).

Pin Name  Pin                               Pin
Tx Data    2  -----------------------------  3
Rx Data    3  -----------------------------  2
RTS        4  -----------------------------  5
CTS        5  -----------------------------  4
Ground     7  -----------------------------  7
DTR        20 -\---------------------------  8
DSR        6  -/
RLSD/DCD   8  ---------------------------/-  20
                                         \-  6

7.2 Kabel portu równoległego (kabel PLIP)

Jeśli zamierzasz korzystać z protokołu PLIP, to kabel wykonany wg. poniższego schematu będzie działał niezależnie od rodzaju posiadanego portu równoległego.

Pin Name    pin            pin
STROBE      1*
D0->ERROR   2  ----------- 15
D1->SLCT    3  ----------- 13
D2->PAPOUT  4  ----------- 12
D3->ACK     5  ----------- 10
D4->BUSY    6  ----------- 11
D5          7*
D6          8*
D7          9*
ACK->D3     10 ----------- 5
BUSY->D4    11 ----------- 6
PAPOUT->D2  12 ----------- 4
SLCT->D1    13 ----------- 3
FEED        14*
ERROR->D0   15 ----------- 2
INIT        16*
SLCTIN      17*
GROUND      25 ----------- 25

Uwagi:

Ostrzeżenie: kabel ze źle wykonanymi połączeniami może fizycznie zniszczyć kartę kontrolora twojego komputera.. Bądź bardzo ostrożny i dwukrotnie sprawdzaj każde połączenie, aby nie narazić się na niepotrzebny ból głowy lub atak serca.

7.3 Okablowanie ethernetowe 10base2 (cienki koncentryk)

10base2 jest standardem okablowania ethernetowego wykorzystującego 52omowy kabel koncentryczny o średnicy ok 5mm. Łącząc ze sobą komputery za pomocą okablowania 10base2 należy pamiętać o kilku zasadach. Po pierwsze musisz mieć terminatory na obu końcach kabla. Terminator to opornik o oporniści 52 omy, zapewniający absorbję sygnału i zapobiegający jego odbiciom w momencie osiągnięcia końca kabla. Bez założonych terminatorów, może się okazać, że sieć nie jest pewna lub w ogóle nie nadaje się do pracy. Zwykle poszczególne komputery podłącza się do kabla z pomocą 'trójników'. Dlatego tak zbudowana sieć wygląda mniej więcej tak:

 |==========T=============T=============T==========T==========|
            |             |             |          |
            |             |             |          |
          -----         -----         -----      -----
          |   |         |   |         |   |      |   |
          -----         -----         -----      -----

gdzie `|' oznacza terminator na każdym zakończeniu kabla, `======' oznacza kabel koncentryczny, a `T' oznaczają trójniki. Kabel łączący trójnik z komputerem powinien być jak najkrótszy, najlepiej, gdy trójnik jest wpięty bezpośrednio na kartę ethernetową komputera.

7.4 Skrętka (Twisted Pair Ethernet Cable)

Jeśli chcesz połączyć ze sobą tylko dwie karty ethernetowe przez skrętkę, to nie potrzebujesz żadnego koncentratora (hub'a). Schemat wykonania potrzebnego kabla znajdziesz w Ethernet-HOWTO

8. Spis stosowanych terminów

Poniższa lista zawiera najważniejsze z terminów wykorzystywanych w tym dokumencie.

ARP

Skrót pochodzący od nazwy Address Resolution Protocol, określa sposób przyporządkowywania adresów IP adresom sprzętowym kart ethernetowych.

ATM

Skrót pochodzący od nazwy Asynchronous Transfer Mode. Sieci ATM przesyłąją dane w pakietach o ustalonej długości. ATM jest technologią sieci pakietowych z komutacją kanałów.

klient

Jest to zwykle oprogramowanie znajdujące się po tej samej stronie połączenia co użytkownik. Są oczywiście wyjątki od tej reguły, np. w przypadku X11 to właśnie serwer jest po stronie użytkownika, a klient jest to aplikacja wykonująca się na zdalnej maszynie. Klient to oprogramowanie lub końcówka systemu korzystająca z usług oferowanych przez serwer. W przypadku połączeń peer to peer (każdy z każdym) jakimi są slip lub ppp, za klienta przyjmuje się ten koniec połączenia, który je zainicjował, a drugi koniec nosi nazwę serwera.

datagram

Datagram jest pakietem informacji, który prócz danych posiada również nagłówki zawierające adresy nadawcy i adresata. Jest podstawową jednostką przesyłania informacji w sieci IP. Często jest zastępowany słowem 'pakiet'.

DLCI

DLCI oznacza skrót Data Link Connection Identifier, jest stosowany do jednoznacznej identyfikacji wirtualnego połączenia punkt-punkt przez Frame Relay. DLCI są zwykle przydzielane przez dostawcę usługi Frame Relay.

Frame Relay

Frame Relay oznacza technologię sieciową przeznaczoną przede wszystkim do przenoszenia ruchu charaktyryzującego się nieregularnym natężeniem lub o sporadycznej charakterysyce. Koszty sieci są redukowane przez współdzielenie nośności sieci przez wielu użytkowników, przy założeniu, że każdy z nich generuje największy ruch o innej porze.

Adres sprzętowy

Numer który jednoznacznie identyfikuje komputer na poziomie wartstwy fizycznej sieci (na poziomie warstwy nośnika). Przykładem takich adresów jest adres karty ethernetowej lub adres AX.25.

ISDN

ISDN oznacza skrót Integrated Services Dedicated Network. ISDN umożliwia ujednolicony sposób dostarczania użytkownikom informacji głosowej lub cyfrowej. Technicznie ISDN jest siecią danych z komutacją kanałów.

ISP

Jest to skrót Internet Service Provider (dostawca internetu). Są to organizacje lub firmy, które umożliwiają ludziom dostęp do Internetu,

adres IP

Jest to numer jednoznacznie identyfikujący komputer w sieci TCP/IP. Adres składa się z 4rech bajtów i zwykle jest przedstawiany w tzw notacji dziesiętnej, czyli takiej, w której każdy bajt jest reprezentowany przez liczbę w systemie dziesiętnym, przy czym poszczególne bajty są rozdzielone znakiem '.'.

MSS

Maximum Segment Size (MSS) oznacza maksymalny rozmiar porcji danych, która może zostać przesłana za jednym razem. Aby zapobiec lokalnej fragmentacji pakietów MSS powinno się równać MTU-nagłówek IP. [od korektorki: oryginalny tekst jest skrótem myślowym: 'equal MTU - IP header' według mnie powinno być: 'powinno się równać różnicy: wielkość MTU-wielkość nagłówka IP' (nagłówek IP to zwykle 40 bajtów)].

MTU

Maximum Transmission Unit (MTU) to parametr, który określa maksymalny rozmiar datagramu, jaki może zostać przesłany przez interfejs, bez konieczności podziału go na mniejsze kawałki. MTU powinno być większe niż największy datagram jaki ma być przesyłany w jednym kawałku. Pamietaj, że ten parametr steruje jedynie lokalną fragmentacją pakietów. Może się zdarzyć, że któreś z połączeń leżących na trasie do celu będzie miało mniejsze MTU, a wtedy pakiet zostanie podzielony na kawałki w tym wąskim garde. Standartowymi wielkościami są 1500 dla kart ethernetowych, 576 dla interfejsu SLIP.

trasa

trasa osnacza ścieżkę jaką przebywają datagramy wędrując od nadawcy do odbiorcy.

serwer

Oprogramowanie lub system po przeciwnej stronie połączenia w stosunku do pozycji użytkownika. Serwer udostępnia pewne usługi jednemu lub więcej klientom. Mogą to być usługi typu ftp, nfs lub dns. W przypaku połączeń typu peer-to-peer (każdy z każdym) za serwer przyjmuje się ten koniec połączenia, który odpowiada na wezwanie, koniec rozpoczynający sesję nosi nazwę klienta.

window

Okienko to największa liczba bajtów jaką w danej chwili odbiorca jest w stanie przyjąc.

9. Linux u dostawców Internetu ?

Jeśli jesteś zainteresowany wykorzystaniem Linuksa jako dostawca Internetu polecam stronę Linux ISP homepage. Zawiera listę odnośników do informacji, które mogą cię zainteresować.

10. Podziękowania

Chciałbym podziekować następującym ludziom, za ich wkład w powstanie tego dokumentu (kolejność nie ma żadnego znaczenia): Axel Boldt, Arnt Gulbrandsen, Gary Allpike, Cees de Groot, Alan Cox, Jonathon Naylor.

11. Copyright.

NET-3-HOWTO, informacja na temat instalacji i konfiguracji oprogramowania sieciowego pod Linuksem. Copyright (c) 1997 Terry Dawson.

To jest darmowe oprogramowanie, możesz je rozpowszechniać i modyfikować na zasadach zgodnych z licencją GNU General Public License wydaną przez Freee Software Foundation w wersji 2 (lub jak wolisz) późniejszej.

Ten program jest rozpowszechniany w nadziei, że bedzie użyteczny, lecz BEZ ŻADNYCH GWARANCJI; nawet bez gwarancji zdatności HANDLOWEJ lub UŻYTECZNOŚCI W KONKRETNYM ZASTOSOWANIU. Wiecej szczegółów w tekście GNU General Public License.

Wraz z tym programem powinieneś otrzymać kopię Licencji GNU General Public License, jeśli nie napisz do:

Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

12. Od tłumacza

To tłumaczenie zawiera mnóstwo różnego rodzaju błędów. Postanowiłem je udostępnić w takim stanie, ponieważ nie mam czasu na dokładne sprawdzenie tego dokumentu (a jest tego trochę), a szkoda mi trzymać to na dysku, czekając na Wolną Chwile (TM), która być może nigdy nie nadejdzie. Dlatego bedę wdzięczny za każdą, nawet najdrobniejszą uwagę.

Najnowszą wersję tego tłumaczenia znajdziesz tutaj: http://www.ippt.gov.pl/pub/Linux/JTZ/html/NET-3-HOWTO.pl.html.

piotr.pogorzelski@ippt.gov.pl

13. Od korektorki

Korekta, to było wyłapanie części literówek i złośliwości klawiatury oraz kilku niedotłumaczonych linijek tekstu. Pewnie jest tego jeszcze trochę dla następnej siwiejącej blondynki, która poczuje chęć się douczyć ;-)

30.11.2001 Basia Głowacka jastra@gdansk.sprint.pl

doc-linux-pl-2002.06.14.orig/html/NIS-HOWTO.pl.html0100664000175000017500000014753306770264140020207 0ustar covencoven Opis systemów NIS(YP)/NYS/NIS+ na Linux-ie.

Opis systemów NIS(YP)/NYS/NIS+ na Linux-ie.

Autor:Thorsten Kukuk kukuk@suse.de
v1.0, 9 Marca 1999
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v3.0, 9 Sierpnia 1999


Dokument ten opisuje jak skonfigurować Linux-a, aby działał jako klient NIS(YP) czy NIS+ oraz jako serwer. Dokument ten został napisany w standardzie ISO-8859-2.

1. Wprowadzenie.

Coraz więcej komputerów z Linux-em instalowanych jest jako część sieci komputerowych. Aby uprościć administrację siecią większość sieci (głównie oparte na Sun-ach) posiada Network Information Service. Maszyny Linux-owe mogą w pełni korzystać z serwera NIS albo samemu dostarczać taką usługę. Linux może także działać jako pełny klient NIS+, obsługa tego jest jeszcze w fazie beta.

Dokument ten próbuje odpowiedzieć na pytania dotyczące ustawienia NIS(YP) i NIS+ na twoim komputerze. Nie zapomnij przeczytać sekcji na temat Portmapper-a RPC.

NIS-HOWTO zajmuje się

        Thorsten Kukuk, <tt/kukuk@vt.uni-paderborn.de/

Pierwotnym źródłem informacji dla pierwszej wersji NIS-HOWTO byli:

Andrea Dell'Amico       <adellam@ZIA.ms.it>
Mitchum DSouza          <Mitch.DSouza@NetComm.IE>
Erwin Embsen            <erwin@nioz.nl>
Peter Eriksson          <peter@ifm.liu.se>

którym powinniśmy podziękować za napisanie pierwszych wersji tego dokumentu.

1.1 Nowe wersje tego dokumentu.

Najnowszą wersję tego dokumentu możesz zawsze znaleźć pod adresem http://www.suse.de/~kukuk/linux/HOWTO/NIS-HOWTO.html.

Najnowsze wersje będą także umieszczane na różnych serwerach WWW i FTP związanych z Linux-em włącznie ze stroną LDP.

Odnośniki do tłumaczeń tego dokumentu można znaleźć pod adresem http:///www.suse.de/~kukuk/linux/nis-howto.html.

1.2 Zrzeczenie.

Pomimo, iż dokument ten powstał w jak najlepszej intencji może i pewnie zawiera błędy. Czytaj proszę wszystkie pliki README znajdujące się wraz z oprogramowaniem wymienianym tutaj w celu uzyskania jak najświeższych informacji. Będę sie starał aby było tu jak najmniej błędów.

1.3 Komentarze i poprawki.

Jeśli masz jakieś pytania czy poprawki dotyczące tego dokumentu, pisz śmiało do Thorstena Kukuk na adres kukuk@suse.de. Przyjmuję wszelkie sugestie czy krytykę. Jeśli znajdziesz jakiś błąd daj mi znać proszę, żebym mógł go poprawić w następnej wersji. Dzięki.

Proszę nie przysyłaj mi pytań na temat problemów dotyczących twojej dystrybucji Linux-a. Nie znam każdej dystrybucji. Ale będę się starał dodać każde rozwiązanie jaki mi przyślecie.

1.4 Podziękowania.

Chcielibyśmy podziękować wszystkim ludziom, którzy przyczynili się w jakiś sposób do powstania i rozwoju tego dokumentu. W porządku alfabetycznym:

Byron A Jeff            <byron@cc.gatech.edu>
Markus Rex              <msrex@suse.de>
Miquel van Smoorenburg  <miquels@cistron.nl>

Theo de Raadt jest odpowiedzialny za oryginalny kod yp-klienta. Swen Thuemmler przeniósł ten kod na Linux-a jak również procedury yp do biblioteki libc (znowu na podstawie pracy Theo). Thorsten Kukuk napisał od zera procedury NIS(YP) i NIS+ dla GNU libc 2.x.

1.5 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie. Zaznaczam, że nie jestem biegły w terminologii kryptografii więc wystepują tu pewnie jakieś dziwne wyrażenia, które powinienem zapisać inaczej. Jeśli wiesz jak to ma brzmieć, napisz;

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to odwołania do polskich serwerów ftp.

2. Słowniczek i informacje ogólne.

2.1 Słowniczek terminów.

W dokumencie tym występuje wiele akronimów. Oto te najważniejsze i krótkie wyjaśnienie:

DBM

DataBase Management - biblioteka funkcji, które obsługują pary z kluczem (-key-content) w bazie danych.

DLL

Dynamically Linked Library - biblioteka dołączana do wykonywalnego programu podczas jego działania.

domainname

"Nazwa-klucz", która jest używana przez klientów NIS, aby zlokalizować pasujący serwer NIS, który udostepnia klucz dla domeny (domainname key). Zauważ proszę, że to nie koniecznie ma coś wspólnego z domeną DNS-ową (nazwą maszyny).

FTP

File Transfer Protocol - protokół używany do przenoszenia plików pomiędzy komputerami.

libnsl

Name services library - biblioteka odwołań "name service" (getpwnam, getservbyname itp.) na unix-ach SVR4. GNU libc używa tego do funkcji NIS (YP) i NIS+.

libsocket

Socket services library - biblioteka odwołań obsługi gniazdek (socket, bind, listen itp.) na unix-ach SVR4.

NIS

Network Information Service - serwis który udostępnia informację, która musi być znana poprzez sieć dla wszystkich maszyn w sieci. W standardowej bibliotece Linux-a - libc - jest obsługa dla NIS, która dalej zwana jest "tradycyjnym NIS-em".

NIS+

Network Information Service (Plus :-) - właściwie to taki NIS na sterydach. NIS+ został zaprojektowany przez Sun Microsystems Inc. jako zastępca NIS-a z lepszym bezpieczeństwem i lepszą obsługą _wielkich_ instalacji.

NYS

Jest to nazwa projektu, który powstał z NIS+, YP i Switch i zarządzany jest przez Petera Erikssona <peter@ifm.liu.se>. Między innymi zawiera powtórną implementację kodu NIS-a (=YP), która używa funkcjonalności Name Service Switch biblioteki NYS.

NSS

Name Service Switch. Plik /etc/nsswitch.conf określa kolejność, w jakiej sprawdza się pewne żądane informacje.

RPC

Remote Procedure Call. Procedury RPC pozwalają programom w C odwoływać się do procedur na odległej maszynie poprzez sieć. Kiedy ludzie mówią o RPC to najczęściej mają na myśli wariant Sun-a RPC.

YP

Yellow Pages(TM) - zarejestrowany znak towarowy w UK firmy British Telecom plc.

TCP-IP

Transmission Control Protocol/Internet Protocol. To protokół komunikacji danych najczęściej używany na maszynach unix-owych.

2.2 Trochę ogólnych informacji.

Następujące 3 linijki to cytat z podręcznika Sun(TM) System & Network Administration Manual:

"NIS znany był wcześniej jako Sun Yellow Pages (YP), ale nazwa Yellow
Pages(TM) jest zarejestrowanym znakiem towarowym w Zjednoczonym
Królestwie firmy British Telecom plc i nie może być używana bez zgody."

NIS to skrót od Network Information Service. Celem jego jest dostarczanie informacji, która musi być znana na sieci dla wszystkich komputerów. Informacja, która najprawdopodobniej będzie dystrybuowana to:

Jeśli na przykład informacja o twoim haśle jest zapisana w bazie haseł NIS, będziesz mógł się zalogować na wszystkich maszynach na sieci, które mają uruchomionego klienta NIS.

Sun jest znakiem towarowym Sun Microsystems, Inc. licencjonowane dla SunSoft, Inc.

3. NIS , NYS czy NIS+ ?

3.1 libc 4/5 z tradycyjnym NIS czy NYS ?

Wybór pomiędzy "tradycyjnym NIS" czy kodem NIS w bibliotece NYS jest wyborem pomiędzy lenistwem i rozwojem a elastycznością i zamiłowaniem do przygody.

Kod "tradycjnego NIS" jest w standardowej bibliotece C i istnieje już długo i czasem cierpi z powodu swojego wieku i pewnej nieelastyczności.

Kod NIS w bibliotece NYS wymaga rekompilacji biblioteki libc, aby włączyć do niej kod NYS (albo możesz wziąć już skompilowaną wersję libc od kogoś kto już ją skompilował).

Inną różnicą jest to, że "tradycyjny NIS" ma pewną obsługę NIS Netgroups, której NYS nie ma. Z drugiej strony NYS pozwala obsługiwać Shadow Passwords w sposób przezroczysty. "Tradycyjny NIS" nie obsługuje Shadow passwords przez NIS.

Zapomnij o tym wszystkim jeśli używasz nowej biblioteki GNU C 2.x (aka libc6). Ma ona rzeczywistą obsługę NSS (Name Switch Service), co czyni ją bardzo elastyczną oraz zawiera obsługę następujących map NIS/NIS+: aliases, ethers, group, hosts, netgroups, networks, protocols, publickey, passwd, rpc, services i shadow. Biblioteka GNU C nie ma żadnych problemów z shadow password przez NIS.

3.2 NIS czy NIS+ ?

Wybór między NIS a NIS+ jest prosty - użyj NIS-a jeśli nie musisz używać NIS+ czy nie musisz stosować zaostrzonego bezpieczeństwa. Z NIS+ jest _o wiele_ więcej kłopotów jeśli chodzi o administrację (jest nim całkiem łatwo zarządzać od strony klienta, ale serwer to horror). Innym problemem jest fakt, że wsparcie dla NIS+ w Linux-ie jest ciągle w fazie rozwoju - potrzebujesz najnowszej biblioteki glibc, albo musisz poczekać na glibc 2.1. Istnieje wersja zastępcza glibc z obsługą NIS+ dla libc5.

4. Jak to działa.

4.1 Jak działa NIS.

W całej sieci musi być przynajmniej jedna maszyna działająca jako serwer NIS. Możesz zrobić więcej serwerów NIS, każdy dla innej "domeny" NIS - albo możesz mieć współpracujące serwery NIS, gdzie jeden ma być głównym serwerem NIS (master) a wszystkie inne są tak zwanymi slave NIS servers (to znaczy dla pewnej "domeny" NIS!) - albo możesz to pomieszać.

Serwery slave posiadają tylko kopię baz danych NIS i otrzymują te kopie od głównego serwera NIS kiedy tylko robione są jakieś zmiany w głównej bazie. W zależności od liczby komputerów w twojej sieci, możesz zdecydować się na instalację jednego lub większej ilości serwerów slave. Kiedy tylko serwer NIS jest unieruchamiany (goes down) albo jest zbyt wolny w odpowiedziach na żądania, klient NIS-a podłączony do tego serwera spróbuje znaleźć ten, który działa albo jest szybszy.

Bazy danych NIS są w tak zwanym formacie DBM, pochodzącym od baz danych ASCII. Na przykład, pliki /etc/passwd i /etc/group mogą być bezpośrednio zamienione na DBM przy pomocy oprogramowania translacyjnego ASCII-na-DBM ("makedbm" - dostarczanym wraz z serwerem). Główny serwer NIS powinien posiadać obie bazy - tak ASCII jak i DBM.

Serwery slave zostaną powiadomione o każdej zmianie w mapach NIS, (poprzez program "yppush") i automatycznie uaktualnią owe zmiany, aby zsynchronizować swoje bazy danych. Klienci NIS nie muszą tego robić ponieważ oni zawsze łączą się z serwerem NIS, aby odczytać informacje zapisane w bazach danych DBM.

Stare wersje ypbind wysyłają adres rozgłoszeniowy (broadcast), aby znaleźć działający serwer NIS. Jest to niebezpieczne ponieważ każdy może zainstalować serwer NIS i odpowiedzieć na takie zapytanie. Nowsze wersje ypbind (3.3 czy mt) pobierają adres serwera z pliku konfiguracyjnego - i nie ma potrzeby wysyłania adresu rozgłoszeniowego.

4.2 Jak działa NIS+.

NIS+ to nowa wersja "network information nameservice" z Sun-a. Największą różnicą pomiędzy NIS i NIS+ jest obsługa kodowania danych i autentykacja poprzez bezpieczne RPC w NIS+.

Model nazewnictwa w NIS+ jest zbudowany w postaci struktury drzewiastej. Każdy węzeł w drzewie odpowiada objektowi NIS+, których mamy sześć typów: katalog, pozycja (entry), grupa, dołączenie, tablica i prywatne.

Katalog NIS+, który tworzy podstawę przestrzeni nazw w NIS+ nazywa się katalogiem "root". Są dwa specjalne katalogi NIS+: org_dir i groups_dir. Katalog org_dir składa się z wszystkich tablic administracyjnych, takich jak passwd, hosts i mail_aliases. Katalog groups_dir składa się z grup objektów NIS+, które używane są do kontroli dostępu. Kolekcja org_dir, groups_dir i ich katalogów nadrzędnych to domena NIS+.

5. Portmapper RPC

Aby móc uruchomić jakikolwiek z wymienionych poniżej programów, będziesz musiał uruchomić program /usr/bin/portmap. Niektóre dystrybucje mają skrypt uruchamiający ten demon w plikach startowych /sbin/init.d/ czy /etc/rc.d/. Wszystko co musisz zrobić, to uaktywnić go i zrestartować komputer. Przeczytaj dokumenctaję dostarczoną wraz z dystrybucją, aby się dowiedzieć jak to zrobić.

Portmapper RPC (portmap(8)) jest serwerem, który zamienia numery programowe RPC na numery portów protokołu TCP/IP (albo UDP/IP). Musi być on uruchomiony, aby móc używać na tej maszynie odwołań RPC (co właśnie robi oprogramowanie klienta NIS/NIS+) do serwerów RPC (takich jak serwer NIS czy NIS+). Kiedy serwer RPC jest startowany, poinformuje on portmap-a na których portach nasłuchuje, i jakimi numerami programowymi RPC może służyć. Kiedy klient chce odwołać się przez RPC do danego numeru programowego, najpierw skontaktuje się z portmap-em na maszynie serwerowej, aby określić numer portu, do którego należy wysłać pakiety RPC.

Normalnie, standardowe serwery RPC są startowane przez inetd(8), więc portmap musi działać zanim wystartuje inetd.

Dla bezpieczeństwa portmapper potrzebuje serwisu czasu (Time Service). Upewnij się czy serwis ten jest włączony w /etc/inetd.conf na wszystkich hostach:

#
# Time service is used for clock syncronization.
#
time    stream  tcp     nowait  nobody  /usr/sbin/tcpd  in.timed
time    dgram   udp     wait    nobody  /usr/sbin/tcpd  in.timed

WAŻNE: Nie zapomnij zresetować (kill -HUP) inetd-a po dokonaniu zmian jego pliku konfiguracyjnym !

6. Czego potrzebujesz, aby ustawić NIS?

6.1 Sprawdź czy jesteś serwerem, serwerem slave czy klientem.

Aby odpowiedzieć na to pytanie musisz rozważyć dwa przypadki:

  1. Twoja maszyna będzie częścią sieci z istniejącymi serwerami NIS.
  2. Nie masz jeszcze żadnego serwera NIS w sieci.

W pierwszym przypadku potrzebujesz tylko programów klienta (ypbind, ypwhich, ypcat, yppoll, ypmatch). Najważniejszym programem jest ypbind. Program ten musi być uruchomiony przez cały czas, to znaczy powinien zawsze pojawiać się w liście procesów. Jest to proces-demon i musi być startowany z plików startowych systemu (np. /etc/init.d/nis, /sbin/init.d/ypclient, /etc/rc.local, /etc/rc.d/init.d/ypbind).
Jak tylko ypbind jest uruchomiony, twój komputer staje się klientem NIS.

W drugim przypadku, jeśli nie masz serwerów NIS, to będziesz także potrzebował programu serwera NIS (zwykle zwanego ypserv). Sekcja Konfiguracja serwera NIS opisuje jak ustawić serwer NIS na twojej maszynie Linux-owej przy pomocy implementacji "ypserv" Petera Erikssona i Thorstena Kukuka.
Zauważ, że od wersji 0.14 implementacja ta obsługuje koncept master-slave omówiony w sekcji 4.1.

Jest jeszcze jeden darmowy serwer NIS, zwany "yps", napisany przez Tobiasa Rebera w Niemczech, który obsługuje koncept master-slave, ale ma inne ograniczenia i nie jest wspierany od długiego czasu.

6.2 Oprogramowanie.

Biblioteka systemowa "/usr/lib/libc.a" (wersja 4.4.2 i nowsza) czy biblioteka dzielona "/lib/libc.so.x" zawierają wszystkie odwołania systemowe niezbędne do skompilowania oprogramowania klienta i serwera NIS. Do biblioteki glibc 2.x, potrzebujesz także biblioteki /lib/libnsl.so.1.

Niektórzy podawali, że NIS działa tylko z "/usr/lib/libc.a" w wersji 4.5.21 i nowszej, więc jeśli chcesz być zabezpieczony, to nie używaj starszych bibliotek. Oprogramowanie klienckie NIS można znaleźć w:

  Adres                 Katalog                          Nazwa Pliku


  ftp.kernel.org        /pub/linux/utils/net/NIS         yp-tools-2.2.tar.gz
  ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-mt-1.4.tar.gz
  ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-3.3.tar.gz
  ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-3.3-glibc5.diff.gz
  ftp.uni-paderborn.de  /linux/local/yp                  yp-clients-2.2.tar.gz 
  ftp.icm.edu.pl        /pub/Linux/sunsite/system/network/admin yp-clients-2.2.tar.gz

[Od tłumacza: Jeśli jesteś w Polsce, to użyj raczej tego ostatniego adresu.]

Jak już masz oprogramowanie, postępuj zgodnie z instrukcjami przychodzącymi wraz z nim. yp-clients 2.2 nadaje się do użytku z libc4 i libc5 aż do 5.4.20. libc 5.4.21 i glibc 2.x potrzebują yp-tools 1.4.1 lub nowsze. Nowe yp-tools 2.0 będą działąć z każdą biblioteką libc dla Linux-a. Ponieważ był pewien błąd w kodzie NIS-a nie powinieneś używać libc 5.4.21-35. W zamian użyj 5.4.36 lub nowszej, inaczej większość programów YP nie będzie działała. ypbind 3.3 będzie działać także ze wszystkimi bibliotekami. Jeśli używasz gcc 2.8.x lub nowszej wersji, egcs lub glibc 2.x, to powinieneś nałożyć łatę ypbind-3.3-glibc5.diff na ypbind 3.3. Nie powinieneś nigdy używać ypbind z yp-clients 2.2. ypbind-mt jest nowym, wielowątkowym demonem; do działania potrzebuje jądra w wersji 2.2 i glibc 2.1 lub nowszej.

6.3 Demon ypbind.

Zakładając, że udało ci się skompilować oprogramowanie jesteś gotowy do zainstalowania go. Odpowiednim miejscem dla demona ypbind będzie /usr/sbin. Niektórzy mogą ci mówić, że nie potrzebujesz ypbind w systemie z NYS. Jest to błędne, gdyż ypwhich i ypcat potrzebują go.

Będziesz to oczywiście musiał zrobić jako root. Inne programy (ypwhich, ypcat, yppoll, ypmatch) powinny znaleźć się w katalogu dostępnym dla wszystkich użytkowników, zwykle /usr/bin.

Nowsze wersje ypbind posiadają plik konfiguracyjny - /etc/yp.conf. Możesz tam na stałe wpisać serwer NIS - więcej informacji w podręczniku systemowym - man ypbind(8).
Potrzebujesz tego pliku także do NYS. Przykład:

  ypserver voyager
  ypserver defiant
  ypserver ds9

Jeśli system może rozwinąć nazwę bez NIS, to mógłbyś użyć tej nazwy. W przeciwnym wypadku musisz użyć adresu IP. W ypbind 3.3 jest błąd; tylko ostatni adres zostanie użyty (ds9 w tym przykładzie). Wszystkie pozostałe pozycje zostaną zignorowane. ypbind-mt obsłuży to poprawnie i użyje tego, który odpowiedział pierwszy.

Dobrym pomysłem będzie przetestowanie ypbind przed wprowadzeniem go do plików startowych. Aby to zrobić postępuj tak:

W tym momencie powinieneś móc używać programów klienckich NIS takich jak ypcat itp... Na przykład "ypcat passwd.byname" poda ci całą bazę danych NIS z hasłami.

WAŻNE: Jeśli pominąłeś test, to upewnij się, że ustawiłeś nazwę domeny i stworzyłeś katalog

    /var/yp

Ten katalog MUSI istnieć, aby ypbind poprawnie się uruchomił.

Aby sprawdzić czy nazwa domeny została ustawiona poprawnie użyj programu /bin/ypdomainname z pakietu yp-tools 2.2. Używa on funkcji yp_get_default_domain(), która jest bardziej restrykcyjna. na przykład nie pozwala na domenę "(none)", która jest domyślną w Linux-ie. i stwarza wiele kłopotów.

Jeśli test się powiódł możesz teraż zmodyfikować pliki w skryptach startowych twojego systemu, tak żeby ypbind startował podczas startu systemu. Upewnij się, że nazwa domeny zostanie ustawiona zanim wystartujesz ypbind.

Cóż, to wszystko. Zresetuj komputer i obserwuj komunikaty podczas startu, żeby zobaczyć czy ypbind właściwie wystartował.

6.4 Ustawianie kilenta NIS przy użyciu Tradycyjnego NIS-a.

Do sprawdzania nazw musisz ustawić (albo dodać) "nis", do linii kolejności sprawdzania w pliku /etc/host.conf. Przeczytaj stronę podręcznika systemowego "resolv+.8", aby dowiedzieć się więcej szczegółów.

Na maszynach klienckich dodaj następującą linię w /etc/passwd:

+::::::

Możesz także użyć znaczków +/-, aby włączyć/wyłączyć lub zmienić użytkowników. Jeśli chcesz wyłączyć użytkownika guest dodaj -guest do swojego pliku /etc/passwd. Chcesz użyć innej powłoki (np. ksh) dla użytkownika "linux"? Nie ma problemu, po prostu dodaj do swojego /etc/passwd "+linux::::::/bin/ksh" (bez cudzysłowiów). Pola, których nie chcesz zmieniać muszą pozostać puste. Mógłbyś także użyć Netgroups do kontroli użytkowników.

Na przykład, aby pozwolić tylko miquels, dth, ed i wszystkim członkom grupy sieciowej sysadmin na login, ale żeby dane o kontach wszystkich innych użytkowników były dostępne użyj:

      +miquels:::::::
      +ed:::::::
      +dth:::::::
      +@sysadmins:::::::
      -ftp
      +:*::::::/etc/NoShell

Zauważ, że na Linuksie możesz także zmienić pole z hasłem, jak to zrobiliśmy w tym przykładzie. Usunęliśmy także login "ftp", tak więc nie jest on już znany i anonimowe ftp nie będzie działać.

Netgroup wyglądałoby tak:

sysadmins (-,software,) (-,kukuk,)

WAŻNE: Cecha netgroup jest zaimplementowana począwszy od libc 4.5.26. Jeśli masz wersję biblioteki wcześniejszą niż 4.5.26, każdy użytkownik w bazie danych z hasłami ma dostęp do twojego Linux-a jeśli masz uruchomiony "ypbind".

6.5 Ustawianie klienta NIS używając NYS.

Wszystko co jest potrzebne, to to, żeby plik konfiguracyjny (/etc/yp.conf) wskazywał na poprawn-y/e serwer(y). Także plik konfiguracyjny Name Service Switch (/etc/nsswitch.conf) musi być poprawnie ustawiony.

Powinieneś zainstalować ypbind. Nie jest on potrzebny dla libc, ale narzędzia NIS(YP) go potrzebują.

Jeśli chcesz używać cechy włączania/wyłączania użytkownika (+/-guest/+@admins), musisz użyć "passwd: compat" i "group: compat" w pliku nsswitch.conf. W tym przypadku musisz użyć "shadow: files nis"

Źródła NYS są częścią źródeł libc 5. Kiedy uruchamiasz configure, za pierwszym razem odpowiedz "NO" na pytanie "Values correct", potem odpowiedz "YES", na "Build a NYS libc from nys".

6.6 Ustawianie klienta NIS używając glibc 2.x

Glibc używa "tradycyjnego NIS", tak więc musisz uruchomić ypbind. Plik konfiguracyjny Name Service Switch (/etc/nsswitch.conf) musi być poprawnie ustawiony. Jeśli używasz trybu kompatybilnego z passwd, shadow czy group, musisz dodać "+" na końcu tego pliku, i możesz używać cechy włączania/wyłączania użytkownika. Konfiguracja jest dokładnie taka sama jak pod Solaris-em 2.x.

6.7 Plik nsswitch.conf

Plik /etc/nsswitch.conf określa kolejność w jakiej odbywa się sprawdzanie kiedy pojawi się żądanie pewnej informacji, tak samo jak plik /etc/host.conf, który określa kolejność sprawdzania adresów hostów. Na przykład linia:

    hosts: files nis dns

określa, że funkcje sprawdzania adresów hostów powinny najpierw szukać w lokalnym pliku /etc/hosts, potem w bazie NIS i na końcu w DNS-ie (/etc/resolv.conf i named), gdzie jeśli nie znaleziono odpowiedzi pojawia się błąd. Ten plik musi być czytelny dla każdego użytkownika. Więcej informacji znajdziesz na stronie podręcznika systemowego nsswicth.5 lub nsswitch.conf.5.

Poprawny plik /etc/nsswitch.conf dla NIS:

#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# Pozycja '[NOTFOUND=return]' oznacza, że poszukiwania powinny
# zakończyć się, jeśli poszukiwania w poprzedniej pozycji nic nie
# dały. Zauważ, że jeśli poszukiwania nie powiodły się z
# jakichś innych powodów (jak nie odpowiadający serwer NIS), to
# poszukiwania są kontynuowane z następną pozycją.
#
# Poprawne pozycje to:
#
#       nisplus                 Use NIS+ (NIS version 3)
#       nis                     Use NIS (NIS version 2), also called YP
#       dns                     Use DNS (Domain Name Service)
#       files                   Use the local files
#       db                      Use the /var/db databases
#       [NOTFOUND=return]       Stop searching if not found so far
#

passwd:     compat
group:      compat
# Jeśli masz libc5 musisz użyć shadow: files nis
shadow:     compat

passwd_compat: nis
group_compat: nis
shadow_compat: nis

hosts:      nis files dns

services:   nis [NOTFOUND=return] files
networks:   nis [NOTFOUND=return] files
protocols:  nis [NOTFOUND=return] files
rpc:        nis [NOTFOUND=return] files
ethers:     nis [NOTFOUND=return] files
netmasks:   nis [NOTFOUND=return] files
netgroup:   nis
bootparams: nis [NOTFOUND=return] files
publickey:  nis [NOTFOUND=return] files
automount:  files
aliases:    nis [NOTFOUND=return] files

passwd_compat, group_compat i shadow_compat są obsługiwane tylko przez glibc 2.x. Jeśli nie ma zasad (rules) shadow w /etc/nsswitch.conf, glibc użyje zasady (rule) passwd do sprawdzenia. Jest więcej modułów szukania dla glibc jak hesoid. Więcej informacji znajdziesz w dokumentacji glibc.

6.8 Shadow Passwords z NIS i PAM.

Shadow passwords przez NIS to zawsze zły pomysł. Straciłeś ochronę, którą daje shadow passwords i tylko niewiele bibliotek C ma obsługę takiej kombinacji. Dobrym pomysłem na uniknięcie przesyłania shadow paswords przez NIS jest umieścić tylko użytkowników lokalnego systemu do pliku /etc/shadow. Usuń pozycje dotyczące użytkowników NIS z bazy shadow i umieść hasło spowrotem w passwd. Tak że możesz używać shadow dla logowania się jako root i normalnych haseł dla użytkowników NIS. Ma to tę zaletę, że będzie to działało z każdym klientem NIS.

Linux

Jedyną biblioteką jaka obsługuja kombinację Shadow passwords prze NIS jest libc 2.x. Libc5 nie potrafi tego obsłużyć. Libc5 skompilowana z obsługą NYS posiada trochę kodu na ten temat. Jednak kod ten jest miernej wartości i nie działa poprawnie z wszystkimi pozycjami shadow.

Solaris

Solaris nie obsługuje takiej kombinacji w ogóle.

PAM

PAM nie obsługuje Shadow Passwords przez NIS,a szczególnie pam_pwdb/libpwdb. Jest to poważny problem dla użytkowników RedHat 5.x. Jeśli masz glibc i PAM, to musisz zmienić pozycje w plikach /etc/pam.d/*. Zamień wszystkie zasady dotyczące pam_pwdb na moduły pam_unix_*. Z powodu błędu w module pam_unix_auth.so nie będzie on zawsze działał.

Przykładowy plik /etc/pam.d/login może wyglądać tak:

#%PAM-1.0
auth       required    /lib/security/pam_securetty.so
auth       required    /lib/security/pam_unix_auth.so
auth       required    /lib/security/pam_nologin.so
account    required    /lib/security/pam_unix_acct.so
password   required    /lib/security/pam_unix_passwd.so
session    required    /lib/security/pam_unix_session.so

Do autoryzacji potrzbujesz modułu pam_unix_auth.so, do kont pam_unix_acct.so, do haseł pam_unix_passwd.so a do sesji pam_unix_session.so.

7. Czego potrzebujesz do ustawienia NIS+?

7.1 Oprogramowanie.

Klient dla NIS+ na Linuxa został napisany dla biblioteki GNU C 2. Jest także wersja dla libc5, ponieważ większość komercyjnych aplikacji jest z nią skompilowane i nie można ich przekompilować z biblioteką glibc. Z biblioteką tą i NIS+ są problemy: Nie mógłbyś dołączyć statycznie tej biblioteki do programów i programy skompilowane z tą biblioteką nie będą działały z inną.

Musisz ściągnąć i skompilować najnowszą bibliotekę GNU C 2.1 dla platformy Intela albo biblioteki GNU C 2.1.1 dla platform 64-bitowych. Potrzebujesz także systemu opartego na glibc jak RedHat 5.x, Debian 2.x czy SuSE Linux 6.x.

W każdej dystrybucji musisz przekompilować kompilator gcc/g++, libstdc++ i ncurses. W RedHat musisz wiele zmienić w konfiguracji PAM. W SuSE 6.0 musisz przekompilować pakiet Shadow Passwords.

Oprogramowanie klienckie NIS+ można pobrać z:

  Adres                  Katalog                    Nazwa Pliku

  ftp.funet.fi     /pub/gnu/funet                libc-*, glibc-crypt-*,
                                                 glibc-linuxthreads-*
  ftp.kernel.org   /pub/linux/utils/net/NIS+     nis-utils-19990223.tar.gz
  ftp.kernel.org   /pub/linux/utils/net/NIS+     pam_keylogin-1.2.tar.gz

Dystrybucje oparte na glibc można ściągnąć z:

  Adres                  Katalog

  ftp.redhat.com         /pub/redaht/redhat-5.2
  ftp.debian.org         /pub/debian/dists/stable
  ftp.icm.edu.pl         /pub/Linux/redhat
  ftp.icm.edu.pl         /pub/Linux/debian

[Od tłumacza: Jeśli jesteś w Polsce, to użyj dwóch ostatnich adresów.]

Aby skompilować bibliotekę GNU C postępuj zgodnie z instrukcjami dołączonymi do niej. Tutaj możesz znaleźć załataną libc5, opartą o źródła NYS i glibc zamiast standardowej libc5:

  Adres                  Katalog                    Nazwa Pliku
  ftp.kernel.org     /pub/linux/utils/net/NIS+  libc-5.4.44-nsl-0.4.10.tar.gz

Powinieneś także zajrzeć do http://www.suse.de/~kukuk/linux/nisplus.html, aby zdobyć więcej informacji i najnowsze źródła.

7.2 Konfiguracja klienta NIS+.

WAŻNE: Aby ustawić klienta NIS+, przeczytaj dokumenctaję do NIS+ na Solaris-a, aby się dowiedzieć co zrobić po stronie serwera ! Dokument ten opisuje tylko co zrobić po stronie klienta !

Po zainstalowaniu nowej biblioteki libc i nis-tools stwórz listy uwierzytelniające dla nowego klienta na serwerze NIS+. Upewnij się, że działa portmap. Potem sprawdź czy na twoim Linux-ie jest ten sam czas co na serwerze. W bezpiecznym RPC masz tylko 3 minuty, w ciągu których listy uwierzytelniające są aktualne. Dobrym pomysłem jest uruchomienie na wszystkich hostach xntpd. Potem uruchom

domainname domena.nisplus
nisinit -c -H <serwer NIS+>

aby zainicjalizować zimny start file. Przeczytaj stronę podręcznika systemowego o nisinit i znajdź jego opcje. Upewnij się, że nazwa domeny będzie zawsze ustawiona po resecie. Jeśli nie wiesz jaka jest nazwa domeny w twojej sieci, zapytaj administratora.

Teraz powinieneś zmienić swój plik konfiguracyjny /etc/nsswitch.conf. Upewnij się, że jedynym serwisem po publickey jest nisplus ("publickey: nisplus") i nic więcej !

Potem uruchom keyserv i upewnij się, że zawsze będzie startowany jako następy demon po portmaperze podczas startu. Uruchom:

keylogin -r

aby zapisać tajny klucz (secretkey) root-a na twoim systemie. (Mam nadzieję, że dodałeś klucz publiczny dla nowego hosta na serwerze NIS+?).

"niscat passwd.org_dir" powinno pokazać ci teraz wszystkie pozycje w bazie danych z hasłami.

7.3 NIS+, keylogin, login i PAM.

Kiedy użytkownik się loguje musi ustawić swój tajny klucz dla keyserv-a. Robi się to przez wywołanie "keylogin". Login z pakietu shadow zrobi to za użytkownika jeśli został skompilowany z biblioteką glibc 2.1. W przypadku login-u PAM musisz zainstalować pam_keylogin-1.2.tar.gz i zmodyfikować plik /etc/pam.d/login, tak aby używał pam_unix_auth, a nie pwdb, które nie obsługuje NIS+. Na przykład:

#%PAM-1.0
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_keylogin.so
auth       required     /lib/security/pam_unix_auth.so
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_unix_acct.so
password   required     /lib/security/pam_unix_passwd.so
session    required     /lib/security/pam_unix_session.so

7.4 Plik nsswitch.conf.

Plik /etc/nsswitch.conf określa kolejność w jakiej odbywa się sprawdzanie kiedy pojawi się żądanie pewnej informacji, tak samo jak plik /etc/host.conf, który określa kolejność sprawdzania adresów hostów. Na przykład linia:

    hosts: files nis dns

określa, że funkcje sprawdzania adresów hostów powinny najpierw szukać w lokalnym pliku /etc/hosts, potem w bazie NIS i na końcu w DNS-ie (/etc/resolv.conf i named), gdzie jeśli nie znaleziono odpowiedzi, to zwracany jest błąd.

Poprawny plik /etc/nsswitch.conf dla NIS:

#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# Pozycja '[NOTFOUND=return]' oznacza, że poszukiwania powinny
# zakończyć się, jeśli poszukiwania w poprzedniej pozcyji nic nie
# dały. Zauważ, że jeśli poszukiwania nie powiodły się z
# jakichś innych powodów (jak nie odpowiadający serwer NIS), to
# poszukiwania są kontynuowane z następną pozycją.
#
# Poprawne pozycje to:
#
#       nisplus                 Use NIS+ (NIS version 3)
#       nis                     Use NIS (NIS version 2), also called YP
#       dns                     Use DNS (Domain Name Service)
#       files                   Use the local files
#       db                      Use the /var/db databases
#       [NOTFOUND=return]       Stop searching if not found so far
#

passwd:     compat
# dla libc5: passwd: files nisplus
group:      compat
# dla libc5: group: files nisplus
shadow:     compat
# dla libc5: shadow: files nisplus

passwd_compat: nisplus
group_compat: nisplus
shadow_compat: nisplus

hosts:      nisplus files dns

services:   nisplus [NOTFOUND=return] files
networks:   nisplus [NOTFOUND=return] files
protocols:  nisplus [NOTFOUND=return] files
rpc:        nisplus [NOTFOUND=return] files
ethers:     nisplus [NOTFOUND=return] files
netmasks:   nisplus [NOTFOUND=return] files
netgroup:   nisplus
bootparams: nisplus [NOTFOUND=return] files
publickey:  nisplus [NOTFOUND=return] files
automount:  files
aliases:    nisplus [NOTFOUND=return] files

8. Konfiguracja serwera NIS.

8.1 Program ypserv.

Dokument ten opisuje tylko jak skonfigurować serwer NIS oparty na "ypserv".

Oprogramowanie serwera NIS można znaleźć na:

  Adres                  Katatlog                      Nazwa pliku

  ftp.kernel.org     /pub/linux/utils/net/NIS     ypserv-1.3.6.tar.gz

Możesz także zajrzeć do http://www.suse.de/~kukuk/linux/nis.html po więcej informacji i najnowsze źródła.

Ustawianie serwera jest takie samo dla tradycyjnego NIS i NYS.

Skompiluj oprogramowanie, aby wygenerować programy "ypserv" i "makedbm". Możesz skonfigurować program ypserv, aby używał pliku securenets albo tcp_wrappers. Tcp_wrappers sa o wiele bardziej elastyczne, ale wielu ludzi ma z tym poważne kłopoty. A niektóre pliki konfiguracyjne mogą powodować przeciek w pamięci (?? memory leak: może autor miał na myśli brak pamięci ?? - lack of memory). Jeśli masz problemy z ypserv skompilowanym dla tcp_wrappers, to przekompiluj go do używania pliku securenets. ypserv --version, pokaże jaką masz wersję.

Jeśli uruchamiasz swój serwer jako główny, określ jakie pliki mają być dostępne przez NIS i wtedy dodaj lub usuń odpowiednie pozycje w /var/yp/Makefile. Zawsze powinieneś zaglądać do plików Makefile i zapoznać się z opcjami na początku pliku.

Pomiędzy ypserv 1.1 a 1.2 była jedna duża zmiana. Od wersji 1.2, ypserv "keszuje" uchwyty plików (file handles). Oznacza to, że zawsze kiedy stworzysz nową mapę musisz wywołać makedbm z opcją -c. Upewnij się, że używasz nowego /var/yp/Makefile z ypserv 1.2 lub nowszego, albo dodaj opcję -c do makedbm w pliku Makefile. Jeśli tego nie zrobisz, ypserv będzie wciąż używał starych map zamiast uaktualnionych.

Teraz zmodyfikuj /var/yp/securenets i /etc/ypserv.conf.
Więcej informacji na stronach podręcznika man o ypserv(8) i ypserv.conf(5).

Upewnij się czy portmapper (portmap(8)) jest uruchomiony i uruchom serwer ypserv. Polecenie:

    % rpcinfo -u localhost ypserv

powinno pokazać coś takiego:

    program 100004 version 1 ready and waiting
    program 100004 version 2 ready and waiting

Linii z "version 1" może nie być; zależnie od wersji ypserv i konfiguracji, której używasz. Tylko w klientach SunOS 4.x jest to wymagane.

Teraz wygeneruj bazę danych NIS (YP). Na serwerze głównym uruchom:

    % /usr/lib/yp/ypinit -m

na slave upewnij się, że działa ypwhich -m. Potem uruchom

    % /usr/lib/yp/ypinit -s masterhost

To wszystko, twój serwer już działa.

Jeśli masz większe problemy, możesz wystartować ypserv i ypbind i trybie śledzenia (debug) w innym oknie. Komunikaty pojawiające się w tym trybie powinny ci powiedzieć co jest nie tak.

Jeśli musisz uaktualnić mapę, to uruchom make w katalogu /var/yp na master serwerze NIS. Uaktualni to mapę jeśli plik źródłowy jest nowszy i prześle pliki do serwerów slave. Nie używaj ypinit do uaktualniania map.

Możesz zmodyfikować crontab root-a *na serwerze slave* i dodać poniższe linie:

      20 *    * * *    /usr/lib/yp/ypxfr_1perhour
      40 6    * * *    /usr/lib/yp/ypxfr_1perday
      55 6,18 * * *    /usr/lib/yp/ypxfr_2perday

To upewni nas, że mapy NIS są aktualne, nawet jeśli jakieś uaktualnienie zostało przeoczone z powodu np. wyłączenia serwera slave podczas modyfikowania bazy głównej.

Serwer slave możesz dodać kiedykolwiek później. Najpierw upewnij się, że nowy serwer slave ma pozwolenie na kontaktowanie się z masterem NIS. Potem uruchom

    % /usr/lib/yp/ypinit -s masterhost

na nowym slavie. Na serwerze master dodaj nazwę nowego serwera slave do pliku /var/yp/ypservers uruchom make w </var/yp, aby uaktualnić mapy.

Jeśli chcesz ograniczyć dostęp do twojego serwera NIS będziesz musiał ustawić serwer NIS także jako klienta przez uruchomienie ypbind i dodanie pozycji + do /etc/passwd _w połowie_ (halfway) pliku z hasłami. Funkcje biblioteczne zignorują wszystkie normalne pozycje po pierwszej pozycji NIS i i resztę informacji zdobędą przez NIS.W ten sposób obsługiwany jest dostęp NIS. Przykład:

     root:x:0:0:root:/root:/bin/bash
     daemon:*:1:1:daemon:/usr/sbin:
     bin:*:2:2:bin:/bin:
     sys:*:3:3:sys:/dev:
     sync:*:4:100:sync:/bin:/bin/sync
     games:*:5:100:games:/usr/games:
     man:*:6:100:man:/var/catman:
     lp:*:7:7:lp:/var/spool/lpd:
     mail:*:8:8:mail:/var/spool/mail:
     news:*:9:9:news:/var/spool/news:
     uucp:*:10:50:uucp:/var/spool/uucp:
     nobody:*:65534:65534:noone at all,,,,:/dev/null:
     +miquels::::::
     +:*:::::/etc/NoShell
[ PO tej linii normalni użytkownicy ! ]
     tester:*:299:10:Just a test account:/tmp:
     miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh

Użytkownik tester będzie istniał, ale będzie miał ustawioną powłokę na /etc/NoShell. miquels będzie miał normalny dostęp.

Alternatywnie mógłbyś zmodyfikować plik /var/yp/Makefile i ustawić NIS, tak żeby używał innego źródłowego pliku z hasłami. W dużych systemach NIS-owe pliki z hasłami i grupami znajdują się zwykle w /etc/yp/. Jeśli tak zrobisz, to zwykłe narzędzia jak passwd, chfn, adduser nie będą już działać i będziesz potrzebował specjalnych własnoręcznie zrobionych wersji.

Chociaż yppsswd, ypchsh i ypchfn będą oczywiście działać.

8.2 Program serwera yps.

Aby ustawić serwer NIS "yps" przeczytaj poprzedni paragraf. Ustawianie serwera "yps" jest podobne, _ale_ nie dokładnie takie samo, więc uważaj jak będziesz stosował instrukcje dla "ypserv-a" do "yps" ! "yps" nie jest wspierany przez żadnego autora i zawiera parę dziur w bezpieczeństwie. Na prawdę nie powinieneś go używać !

Oprogramowane do serwera NIS "yps" można znaleźć na:

  Adres               Katalog                           Nazwa pliku

  ftp.lysator.liu.se    /pub/NYS/servers            yps-0.21.tar.gz
  ftp.kernel.org        /pub/linux/utils/net/NIS    yps-0.21.tar.gz

8.3 Program rpc.ypxfrd

Program rpc.ypxfrd służy do przyspieszania przesyłu bardzo dużych map z serwera master na slave. Jeśli serwer NIS slave otrzyma informacje, że jest nowa mapa wystartuje program ypxfr, aby ją pobrać. ypxfr przeczyta zawartość mapy z serwera master przy pomocy funkcji yp_all(). Proces ten może zająć do kilku minut jeśli są bardzo duże mapy, które muszą być zapisane przez biblioteki bazy danych.

Program rpc.ypxfrd przyspiesza proces pobrania przez pozwolenie serwerowi slave na skopiowanie mapy serwera master zamiast tworzenia jej od nowa. rpc.ypxfrd używa protokołu do przesyłu plików na podstawie RPC, tak że nie ma potrzby na tworzenie nowej mapy.

rpc.ypxfrd może być uruchomiony przez inetd. Ale ponieważ startuje bardzo wolno, powinien byc startowany przez ypserv. Musisz wystartować rpc.ypxfrd tyko na serwerze NIS master.

8.4 Program rpc.yppasswdd

Kiedy użytkownicy zmieniają swoje hasła, baza danych NIS z hasłami i przypuszczalnie inne bazy danych NIS, które zależą od bazy danych z hasłami, powinny być uaktualnione. Program "rpc.yppasswdd" jest serwerem, który odpowiedzialny jest za zmiany haseł i uaktualnianie baz danych NIS. rpc.yppasswdd jest zintegrowany z ypserv. Nie potrzebujesz starszych oddzielnych yppasswd-0.9.tar.gz czy yppasswd-0.10.tar.gz i nie powinieneś ich już używać. rpc.yppasswdd z ypserv 1.3.2 ma pełną obsługę shadow. yppasswd jest teraz częścią yp-tool-.2.2.tar.gz.

Musisz uruchomić rpc.yppaswdd tylko na serwerze NIS master. Domyślnie użytkownicy nie mają prawa zmieniać swoich "pełnych nazw" czy powłoki. Możesz na to pozwolić opcją -e chfn czy -e chsh.

Jeśli twoje pliki passwd i shadow nie są umieszczone w innym katalogu niż /etc, musisz dodać opcję -D. Na przykład jeśli umieściłeś wszystkie pliki źródłowe w /etc/yp i chcesz udostępnić swoim użytkownikom możliwość zmiany powłoki, musisz uruchomić rpc.yppasswdd z następującymi parametrami:

   rpc.yppasswdd -D /etc/yp -e chsh

lub

   rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh

Nic więcej do zrobienia już nie zostało. Musisz się tylko upewnić, że rpc.yppasswdd używa tych samych plików co /var/yp/Makefile. Błędy będą logowane za pomocą syslog.

9. Weryfikacja instalacji NIS/NYS.

Jeśli wszystko jest w porządku (jak powinno być), powinieneś móc zwersyfikować instalację kilkoma prostymi poleceniami. Zakładając na przykład, że twój plik z hsłami jest dostarczany prze NIS, polecenie

    % ypcat passwd

powinno pokazać ci zawartość pliku z hasłami z NIS. Polecenie

    % ypmatch userid passwd

(gdzie userid jest login-em jakiegoś użytkownika) powinno pokazać ci pozycję w pliku z hasłami dotyczącą tego użytkownika. Programy "ypcat" i "ypmatch" powinny być zawarte w dystrybucji NIS lub NYS.

Jeśli użytkownik nie może sie zalogować, uruchom następujący program po stronie klienta:

#include <stdio.h>
#include <pwd.h>
#include <sys/types.h>

int
main(int argc, char *argv[])
{
  struct passwd *pwd;

  if(argc != 2)
    {
      fprintf(stderr,"Stosowanie: getwpnam nazwa-uzytkownika\n");
      exit(1);
    }

  pwd=getpwnam(argv[1]);

  if(pwd != NULL)
    {
      printf("name.....: [%s]\n",pwd->pw_name);
      printf("password.: [%s]\n",pwd->pw_passwd);
      printf("user id..: [%d]\n", pwd->pw_uid);
      printf("group id.: [%d]\n",pwd->pw_gid);
      printf("gecos....: [%s]\n",pwd->pw_gecos);
      printf("directory: [%s]\n",pwd->pw_dir);
      printf("shell....: [%s]\n",pwd->pw_shell);
    }
  else
    fprintf(stderr,"Nie znaleziono uzytkownika \"%s\"!\n",argv[1]);

  exit(0);
}

Uruchomienie tego programu z użytkownikiem jako parametr, spowoduje wyświetlenie wszystkich informacji jakie uzyska funkcja getpwnam dla tego użytkownika. Powinno ci to pokazać, która pozycja jest niepoprawna. Najpopularniejszym problemem jest zapisanie "*" w polu hasła.

Razem z biblioteką GNU C 2.1 (glibc 2.1) dostarczane jest narzędzie getent. Użyj tego programu zamiast powyższego na systemie z tą biblioteką. Możesz spróbować:

   getent passwd

lub

   getent passwd login

10. Popularne problemy i rozwiązywanie ich.

  1. Biblioteki do 4.5.19 są niepoprawne. NIS nie będzie z nimi współpracował.
  2. Jeśli uaktualnisz biblioteki z 4.5.19 na 4.5.24, to polecenie su nie działa. Potrzebujesz tego polecenia ze Slackware 1.2.0. Przypadkowo tam możesz znaleźć uaktulanione biblioteki.
  3. Kiedy serwer NIS się wyłączy i potem uruchomi ponownie ypbind zaczyna wypisywać coś takiego:
             yp_match: clnt_call:
                         RPC: Unable to receive; errno = Connection refused
    
    i użytkownicy zarejestrowani w bazie danych NIS nie mogą się zalogować. Spróbuj zalogować się jako root i zakończ ypbind i uruchom go ponownie. Uaktualnienie do ypbind 3.3 lub nowszego także powinno pomóc.
  4. Po uaktualnieniu libc do wersji nowszej niż 5.4.20, narzędzia YP nie będą działać. Potrzebujesz w takim przypadku yp-tools w wersji 1.2 lub nowszej dla libc >= 5.4.21 i glibc 2.x. Dla wcześniejszych wersji libc potrzbujesz yp-clients 2.2. yp-tools 2.x powinny działać ze wszystkimi bibliotekami.
  5. W libc 5.4.21-35 yp_maplist jest popsute, potrzbujesz 5.4.36 lub nowszej wersji, albo niektóre programy z YP jak np. ypwich będą przerywać działanie z błędem Segmentation fault.
  6. libc 5 z tradycyjnym NIS nie obsługuje shadow passwords przez NSI. Potrzebujesz libc5 + NYS lub glibc 2.x
  7. ypcat shadow nie pokazuje mapy shadow. Jest to poprawne - nazwa mapy shadow to shadow.byname a nie shadow.
  8. Solaris nie zawsze używa uprzywilejowanych portów. Więc staraj się nie robić nic z hasłami jeśli masz klienta na Solarisie.

11. Często zadawane pytania.

Na większość twoich pytań powinieneś już uzyskać odpowiedź. Jeśli wciąż masz jakieś pytania bez odpowiedzi to możesz wysłać list na grupę

    comp.os.linux.networking

albo na którąś z polskich grup

    pl.comp.security
    lub
    pl.comp.os.linux
    lub
    pl.comp.os.linux.siec(i)

Albo skontaktuj się z którymś z autorów tego HOWTO.

doc-linux-pl-2002.06.14.orig/html/PCMCIA-HOWTO.pl.html0100664000175000017500000030373606770264140020511 0ustar covencoven Opis sterowników do PCMCIA

Opis sterowników do PCMCIA

Autor: David Hinds, dhinds@hyper.stanford.edu
v1.105, 9 Września 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v2.0, 13 Grudnia 1997


Dokument ten opisuje jak zainstalować i używać Card Services PCMCIA w Linux-ie oraz odpowiada na niektóre często zadawane pytania. Najnowszą wersję oryginału tego dokumentu można zawsze znaleźć pod adresem hyper.stanford.edu. Wersja HTML znajduje się pod adresem hyper.stanford.edu/HyperNews/get/pcmcia/home.html Dokument ten został napisany w standardzie ISO-8859-2. Nowsza wersja zawiera uaktulanione wskazania na katalog zawierający jądro na ftp.icm.edu.pl. Kolejna wersja jest uaktualnieniem do obecnej wersji oryginału.

1. Informacje ogólne i wymagania sprzętowe.

1.1 Wprowadzenie.

Card Services dla Linux-a to kompletny pakiet obsługujący PCMCIA. Zawiera on zestaw ładowalnych modułów jądra, które tworzą wersję aplikacji interfejsowych dla PCMCIA Card Services, zestaw sterowników klientów dla specyficznych kart, oraz demona-menedżera do kart, który może reagować na wkładanie kart i ich wyjmowanie poprzez ładowanie i usuwanie odpowiednich modułów. Obsługuje on także tzw. "gorące wymiany" kart PCMCIA, tak że karty mogą być wkładane i wyjmowane w każdej chwili.

Oprogramowanie to jest w ciągłym rozwoju. Zawiera przypuszczalnie błędy i należy go używać ostrożnie. Zrobię co w mojej mocy, żeby poprawić błędy zgłaszane do mnie, ale jeśli nie powiesz mi o takim, to mogę się o nim nigdy nie dowiedzieć. Jeśli już użyjesz tego oprogramowania, mam nadzieję, że wyślesz mi swoje doświadczenia, złe czy dobre !

Jeśli masz jakieś sugestie na temat polepszenia tego dokumentu, daj mi znać dhinds@hyper.stanford.edu.

1.2 Prawa autorskie i Disclaimer.

Copyright (c) 1996, 1997 David A. Hinds

Dokument tez może być reprodukowany lub dystrybuowany bez mojej wyraźnej zgody. Wersje zmodyfikowane, włączając tłumaczenia na inne języki, mogą być wolno dystrybuowane, zakładając, że są jasno identyfikowane jako takie, i ta uwaga o prawach autorskich jest w nich zawarta.

Dokument ten może być zawarty w dystrybucjach komercyjnych bez mojej wyraźnej zgody. Ponieważ nie jest to wymagane chciałbym być powiadomiony o takowych działaniach. Jeśli zamierzasz rozprowadzać ten dokument jako pracę wydawaną, skontaktuj się ze mną, aby upewnić się, że masz najnowszą wersję.

Dokument ten jest rozprowadzany "takim jakim jest", bez wyraźnych czy wynikających gwarancji. Używaj informacji zawartych tutaj na swoje własne ryzyko.

1.3 Jaka jest najnowsza wersja i skąd mogę ją wziąć ?

Bieżącą główną wersją Card Services jest wersja 2.9, a pomniejsze uaktualnienia czy poprawki błędów są numerowane jako 2.9.1, 2.9.2 itd.

Kod źródłowy najnowszej wersji jest dostępny pod adresem hyper.stanford.edu. Nazywa się pcmcia-cs-2.9.?.tar.gz. Będzie tam przeważnie kilka wersji. Z reguły trzymam najnowszą podwersję wersji głównej. Nowe wersje główne mogą zawierać względnie nieprzetestowany kod, tak więc trzymam także najnowszą wersję poprzedniej wersji głównej jako względną stabilną wersję, do której można się cofnąć; bieżącą taką wersją jest 2.8.23. To już zależy od ciebie czy zdecydujesz się na wersję najnowszą z 2.9.x czy na 2.8.23; w pliku CHANGES znajdują się najważniejsze różnice.

Adres hyper.stanford.edu jest mirrorowany pod adresem sunsite.unc.edu w katalogu /pub/Linux/kernel/pcmcia. [Od tłumacza.]Serwer ten z kolei jest mirrorowany w Polsce pod adresem ftp.icm.edu.pl.
Postaram się też umieszczać główne wersje na tsx-11.mit.edu w katalogu /pub/linux/packages/laptops/pcmcia teraz i później.

Jeśli nie czujesz się na siłach, żeby skompilować sterowniki do PCMCIA, w wersji bieżącej są zawarte pre-kompilowane sterowniki w najpopularniejszych dystrybucjach: Slackware, Red Hat, Caldera i Yggdrasil, między innymi.

1.4 Jakie systemy są obsługiwane ?

Kod ten powinien działać na prawie wszystkich laptopach nadających się do Linux-a. Obsługiwane są wszystkie popularne kontrolery PCMCIA włączając w to Intel, Cirrus, Vadem, VLSI, Ricoh i Databook. Kontrolery ustawiane używane w IBM i Toshiba-ch także są obsługiwane. Doki (docks) kart PCMCIA dla systemów typu desktop także powinny działać tak długo, dopóki są tego typu, że wkłada się je bezpośrednio do szyny ISA, niż poprzez kontrolery SCSI-PCMCIA czy IDE-PCMCIA.

Kontroler Motorola 6AHC05GA używany w niektórych laptopach Hyundaia nie jest obsługiwany. Kontrolery ustawiane w HP Omnibook 600 nie są obsługiwane. Kontroler mostka PCI-CardBus (od SMC, Ricoh-a, Cirrus-a i TI) jest obecnie obsługiwany tylko w przypadku trybu 16-bitowego, a i tak obsługa ta jest ciągle trochę eksperymentalna.

1.5 Jakie karty PCMCIA są obsługiwane?

Wersja obecna zawiera sterowniki dla różnych kart ethernetowych, sterownik do modemu, kart portów szeregowych, niektórych kontrolerów SCSI, sterownik do kart ATA/IDE oraz sterowniki do kart pamięci które powinny obsługiwać większość kart SRAM i niektóre karty flash. Plik SUPPORTED.CARDS zawarty w każdej wersji Card Services zawiera wszystkie karty jakie działają w przynajmniej jednym właściwym systemie.

Prawdopodobieństwo tego, że karta nie wymieniona w tym pliku będzie działać zależy od typu tej karty. Zasadniczo wszystkie modemy powinny działać z zawartym sterownikiem. Niektóre karty sieciowe mogą działać jeśli są wersjami OEM karty obsługiwanej. Inne typy kart IO (bufory ramkowe, karty dźwiękowe itd.) nie będą działać dopóki ktoś nie napisze odpowiednich sterowników.

1.6 Kiedy moja nowa karta będzie obsługiwana ?

Niestety, nikt mi z reguły nie płaci za pisanie sterowników, tak więc jeśli chcesz mieć sterownik do swojej ulubionej karty, będziesz przypuszczalnie musiał zrobić część roboty na własną rekę. W wersji idelanej, chciałbym się kierować w stronę modelu zbliżonego do jądra Linux-a, gdzie będę głównie odpowiedzialny za "rdzeń" kodu do PCMCIA a inni autorzy pisaliby sterowniki do konkretnych urządzeń. W pliku SUPPORTED.CARDS wspomniane są niektóre karty, dla których sterownik jest w trakcie pisania. Będę się starał pomóc gdzie tylko mogę ale miej na uwadze, że śledzenie (debugging) sterowników do urządzeń w jądrze poprzez e-mail nie jest zbytnio efektywne.

Producenci zainteresowani pomocą w tworzeniu obsługi ich urządzeń mogą się ze mną skontaktować w sprawie konkretów.

1.7 Listy dyskusyjne.

Kiedyś zajmowałem się bazą danych i listą dyskusyjną na temat użytkowników Linux-a na PCMCIA. Ostatnio zmieniłem swoją stronę WWW z informacjami na temat PCMCIA w stronę "HyperNews", ze zbiorem wiadomości na temat PCMCIA w Linux-ie. Są listy na temat instalacji i konfiguracji, na temat różnych typów kart oraz na temat programowania i śledzenia (debug) pod PCMCIA. Strona z informacjami na temat PCMCIA jest pod adresem http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html. Użytkownicy mogą ustawić sobie opcję informowania poprzez email o nowych odpowiedziach na konkretne pytania, albo o wszystkich nowych wiadomościach w danej kategorii. Mam nadzieję, że stanie się to użytecznym archwium informacji dla pytań, które wychodzą poza treść tego HOWTO.

Jest lista dyskusyjna, której tematem jest Linux na laptopie - lista "linux-laptop". Aby uzyskać więcej informacji, wyślij list zawierający słowo "help" na adres majordomo@vger.rutgers.edu. Aby zapisać się na tę listę, wyślij list zawierający łańcuch "subscribe linux-laptop" na ten sam adres. Lista ta może być dobrym forum dyskusyjnym na temat Linux-a na PCMCIA.

Na Stronie Domowej Linux-a na Laptopy http://www.cs.utexas.edu/users/kharker/linux-laptop znajduje się wiele odwołań do adresów, na których są informacje na temat konfigurowania Linux-a na konkretnych typach laptopów. Jest także przeszukiwalna baza danych na temat konfiguracji systemu.

2. Kompilacja, instalacja i konfiguracja.

2.1 Wymagania i ustawienia jądra.

Zanim zaczniesz, powinieneś pomyśleć czy rzeczywiście musisz samemu skompilować pakiet PCMCIA. Wszyskie popularne dystrybucje Linux-a są dostarczane wraz z pakietami zawierającymi skompilowane sterowniki dla PCMCIA. Ogólnie musisz tylko zainstalować od nowa sterowniki jeśli potrzebujesz jakiejś nowej cechy obecnych sterowników albo jeśli zaktualizowałeś czy przekonfigurowałeś jądro tak, że przestało być kompatybilne ze sterownikami przychodzącymi z dystrybucją. Chociaż kompilacja pakietu PCMCIA nie jest trudna technicznie, to wymaga jednak pewnego obycia z Linux-em.

Następujące elementy powinny być zainstalowane w twoim systemie zanim zaczniesz instalować PCMCIA:

Wersja najnowsza wymaga jądra w wersji 1.2.8 lub wyższej, albo jądra z serii testowych 1.3.30 lub wyższe, 1.3.38 jest definitywnie popsute, a 1.3.31 do 1.3.36 nie są przetestowane. Wymaga także względnie świeżej wersji narzędzi do modułów. Nie ma łat na jądro specyficznych dla PCMCIA.

Musiz mieć pełne drzewo źródeł jądra, nie tylko aktualny obraz jądra, aby skompilować pakiet PCMCIA. Moduły PCMCIA zawierają niektóre odwołania do plików ze źródeł jądra. O ile ty możesz chcieć skompilować nowe jądro, żeby usunąć niepotrzebne sterowniki, instalacja PCMCIA nie wymaga tego.

Bieżące stabilne wersje źródeł jądra oraz łaty do niego są dostępne pod adresem ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.0. Bieżąca wersja narzędzi jest pod tym samym adresem w pliku modules-2.0.0.tgz. Jądra w wersji rozwojowej znajdują się pod adresem ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.1.

W pliku Documentation/Changes znajdują się opisy wersji wszystkich rodzajów innych składników systemu, które są wymagane dla tej wersji jądra. Możesz sprawdzić tę listę i upewnić się czy twój system jest aktualny, szczególnie jeśli ostatnio uaktualniałeś jądro. Jeśli używasz jądra 2.1, upewnij się, że używasz poprawnej kombinacji bibliotek dzielonych i narzędzi do modułów. Najnowsze wersje narzędzi do modułów, tak samo jak wersje dla starszych jąder można znaleźć pod adresem http://www.pi.se/blox/modules.

Jeśli planujesz używanie karty ethernetowej PCMCIA podczas konfigurowania twojego jądra powinieneś włączyć obsługę sieci, ale wyłącz obsługę zwykłych kart sieciowych, włączając w to "pocket and portable adapters". Sterowniki do kart sieciowych PCMCIA są zaimplementowane jako ładowalne moduły. Jakiekolwiek sterowniki wkompilowane w twoje jądro będą tylko zabierać miejsce.

Jeśli chcesz używać SLIP-a, PPP czy PLIP-a musisz albo skonfigurować twoje jądro z włączonymi tymi opcjami, albo użyć modułów ładowalnych tych sterowników. Niestety w jądrze w wersji 1.2.X nie można skompilować pewnych opcji jako moduły ładowalne (jak np. kompresja SLIP-a) więc najlepiej będzie jeśli wkompilujesz ten sterownik do jądra jeśli go potrzebujesz.

Jeśli chcesz używać kontrolera Token Ring do PCMCIA, musisz wkompilować obsługę Token Ring do swojego jądra - "Token Ring driver support", ale powinieneś wyłączyć CONFIG_IBMTR.

Jeśli chcesz używać kontrolera IDE PCMCIA, musisz włączyć opcję CONFIG_BLK_DEV_IDE_PCMCIA, w jądrach w wersji 1.3.72 do 2.1.7. Starsze jądra nie obsługują urządzeń IDE. nowsze jądra nie wymagają specjalnych ustawień.

Jeśli będziesz używał kontrolera SCSI PCMCIA, powinieneś włączyć opcję CONFIG_SCSI podczas konfiguracji jądra. Włącz także wszelkie sterowniki "top level" (dyski SCSI, taśmy, CD-ROM-y, generic), których spodziewasz się używać. Wszystkie sterowniki "low level" dla konkretnych kontrolerów powinny być wyłączone, ponieważ będą tylko zajmować miejsce.

Jeśli chcesz zmodularyzować sterownik, który jest potrzebny do urządzenia PCMCIA, musisz zmodyfikować plik /etc/pcmcia/config, aby podać, które moduły mają być załadowane dla których typów kart. Na przykład, jeśli sterownik szeregowy jest zmodularyzowany, wtedy mógłbyś zmienić definicję urządzenia szeregowego na:

   device "serial_cs"
   class "serial" module "misc/serial", "serial_cs"

Pakiet ten zawiera narzędzie do podawania statusu karty oparte na X11 - cardinfo. Narzędzie to jest oparte na wolno dystrybuowanym interfejsie zwanym "Forms Library", które będziesz musiał zainstalować przed stworzeniem cardinfo. Dystrybucja binarna jest na hyper.stanford.edu. Są tam wersje a.out oraz ELF. Będziesz także musiał mieć wszystkie normalne pliki nagłówkowe pod X i biblioteki.

2.2 Instalacja.

Oto streszczenie procesu instalacji:

Jeśli planujesz zainstalować jakieś dodatkowe sterowniki klienta nie zawarte w dystrybucji PCMCIA, rozpakuj każdy z nich w głównym katalogu źródeł PCMCIA. Potem postępuj zgodnie z normalnymi instrukcjami kompilacji. Dodatkowe sterowniki zostaną skompilowane i zainstalowane automatycznie.

Uruchomienie make config zapyta o kilka opcji konfiguracyjnych i sprawdzi twój system, aby zweryfikować czy spełnia on wszystkie wymagania instalacji obsługi PCMCIA. W większości przypadków, będziesz po prostu akceptował wszystkie domyślne opcje. Upewnij się, że dokładnie sprawdziłeś komunikaty wyjściowe w razie błędów.

Jeśli kompilujesz zestaw PCMCIA do instalacji na inną maszynę, podaj alternatywny katalog docelowy kiedy zostaniesz zapytany przez skrypt konfiguracyjny. Powinna to być ścieżka bezwzględna. Wszystkie narzędzia do PCMCIA zostaną zainstalowane względem tego katalogu. Będziesz mógł następnie "zarchiwizować" ten katalog poleceniem tar i skopiować go na maszynę docelową, a następnie rozpakować względem jej katalogo głównego, aby zainstalować wszystko we właściwym miejscu.

Jeśli "cross-kompilujesz" na innej maszynie, możesz podać alternatywne nazwy kompilatora i linkera. Może to być także pomocne na systemach z pomieszaną architekturą a.out i ELF. Skrypt zapyta także o dodatkowe opcje śledzenia dla kompilatora.

Niektóre z narzędzi wspierających (cardctl i cardinfo) mogą być skompilowane w formie "safe" (bezpiecznej) lub "trusting" (ufającej). Forma bezpieczna nie pozwala użytkownikom innym niż root na modyfikację konfiguracji karty. Forma ufająca pozwala zwykłemu użytkownikowi na zawieszenie, odwieszenie i reset karty oraz na zmianę bieżącej konfiguracji. Skrypt konfiguracyjny zapyta cię czy chcesz skompilować narzędzia jako "safe" czy "trusting"; wartością domyślną jest "safe".

Jest kilka opcji konfiguracji jądra które mają wpływa na narzędzia do PCMCIA. Skrypt konfiguracyjny może je wywnioskować z działającego jądra (najpopularniejszy przypadek). Alternatywnie, jeśli kompilujesz do instalacji na inną maszynę może przeczytać konfigurację z drzewa źródeł jądra, albo każda opcja może być podana interaktywnie.

Uruchomienie make all a potem make install stworzy i następnie zainstaluje moduły do jądra i programy narzędziowe. Moduły do jądra są instalowane w /lib/modules/<wersja>/pcmcia. Programy cardmgr i cardctl są instalowane w /sbin. Jeśli tworzony jest cardinfo, to instalowany jest on w /usr/bin/X11.

Pliki konfiguracyjne zostaną zainstalowane w /etc/pcmcia. Jeśli instalujesz na starej wersji, twoje stare pliki konfiguracyjne zostaną zarchiwizowane przed skasowaniem ich. Zachowanym skryptom zostaną nadane rozszerzenia w stylu *.~1~, *.~2~.

Jeśli nie wiesz jakiego typu jest twój kontroler, to możesz użyć narzędzia probe z podkatalogu cardmgr, aby go wykryć. Są dwa główne typy: Databook TCIC-2 i kompatybilne z Intel i82365SL.

Demon na poziomie użytkownika obsługuje włożenie i wyjęcie karty. Nazywa się on cardmgr. Jest podobny w funkcjonowaniu do wcześniejszej wersji pcmciad Barry'ego Jaspana. Cardmgr czyta plik konfiguracyjny opisujący znane karty PCMCIA z /etc/pcmcia/config. W pliku tym zawarte jest jakie zasoby mogą być zaalokowane dla użycia przez urządzenia PCMCIA, i mogą być zmodyfikowane dla twojego systemu. Zobacz stronę w podręczniku systemowym "man" na temat pcmcia, aby dowiedzieć się więcej na temat tego pliku.

2.3 Post-instalacja dla systemów używających skryptów inicjacyjnych a'la BSD.

Niektóre dystrybucje Linux-a, włączając Slackware, używają systemu skryptów a'la BSD. Jeśli istnieje plik /etc/rc.d/rc.M, to twój system zalicza się do tej grupy.
Skrypt rc.pcmcia, zainstalowany w /etc/rc.d kontroluje startowanie i wyłączanie systemu PCMCIA.
make install użyje polecenia probe, aby wykryć typ twojego kontrolera i odpowiednio zmodyfikować rc.pcmcia. Powinieneś dodać do skryptu startowego /etc/rc.d/rc.M linię, która wywołuje skrypt startowy PCMCIA, np. tak:

     /etc/rc.d/rc.pcmcia start

Właściwie nie ma znaczenia, gdzie umieścisz ten plik, tak długo jak sterowniki PCMCIA są startowane po syslogd.

2.4 Post-instalacja dla systemów używających skryptów inicjacyjnych a'la SYS V.

Red Hat, Caldera i Debian mają ten właśnie system. Jeśli masz katalog /etc/init.d albo /etc/rc.d/init.d, to twój system jest w tej grupie. Skrypt rc.pcmcia zostanie zainstalowany jako /etc/rc.d/init.d/pcmcia, lub /etc/init.d/pcmcia. Nie ma potrzeby edytowania żadnego skryptu startowego, aby włączyć PCMCIA: zostanie to zrobione automatycznie.

Jeśli istnieje katalog /etc/sysconfig, wtedy zostanie utworzony oddzielny plik konfiguracyjny /etc/sysconfig/pcmcia z opcjami startowymi. Jeśli musisz zmienić jakiekolwiek opcje modułów (jak PCIC= czy PCIC_OPTS=) modyfikuj raczej ten plik konfiguracyjny aniżeli właściwy skrypt startowy PCMCIA. Plik ten nie zostanie skasowny przez kolejne instalacje.

Niektóre wcześniejsze wersje używały katalogu /etc/sysconfig/pcmcia-scripts zamiast /etc/pcmcia na tych platformach. Wersja bieżąca natomiast używa /etc/pcmcia dla wszystkich systemów, a istniejący /etc/sysconfig/pcmcia-scripts przeniesie do /etc/pcmcia.

2.5 Opcje konfiguracji specyficzne dla danego systemu.

Pakiet Card Services powinien automatycznie zapobiegać alokacji portów IO i przerwań, które są już używane przez inne urządzenia. Spróbuje on także wykryć konflikty z nieznanymi urządzeniami, ale nie jest to w pełni godne zaufania. W niektórych przypadkach, muisz wyraźnie podać zasoby, które mają być niedostępne dla danego urządzenia w pliku /etc/pcmcia/config.opts.

Oto niektóre ustawienia zasobów dla specyficznych typów laptopów.

Niektóre kontrolery PCMCIA mają opcjonalne zalety, które mogą być zaimplementowane w danym systemie, ale nie muszą. Generalnie jest niemożliwe dla sterownika gniazdka (socket driver), aby wykryć czy te zalety są zaimplementowane. Sprawdź stronę w podręczniku systemowym na temat swojego sterownika, aby zobaczyć jakie opcjonalne zalety mogą być włączone.

W kilku przypadkach polecenie probe nie będzie w stanie wykryć automatycznie typu twojego kontrolera. Jeśli masz system Halikan NBD 486, to jego kontroler TCIC-2 znajduje się w niezwykłym miejscu: będziesz musiał zmodyfikować rc.pcmcia, aby załadować moduł tcic oraz ustawić PCIC_OPTS na tcic_base=0x2C0.

Sterowniki gniazda typu "low level" tcic i i82365 mają liczne parametry do timing-ów szyny, które może będzie trzeba ustawić dla systemów ze szczególnie szybkimi procesorami. Symptomy problemów z timing-ami zawierają problemy z wykryciem karty, zawiśnięcia przy dużym załadowaniu systemu, duże średnie błędów, albo zła wydajność urządzeń. Sprawdź odpowiednie strony w podręczniku systemowym, aby dowiedzieć się więcej szczegółów. A tu jest krótkie podsumowanie:

Wszystkie te opcje powinny być skonfigurowane przez modyfikowanie początku pliku /etc/rc.d/rc.pcmcia. Na przykład:

   # Albo i82365 albo tic
   PCIC=i82365
   # Wstaw tu parametry timing-ów dla sterownika gniazd
   PCIC_OPTS="cmd_time=12"
   # Wstaw tu opcje pcmcia_core
   CORE_OPTS="cis_speed=500"

Oto niektóre ustawienia timing-ów dla specyficznych sytemów:

W niektórych systemach używających kontrolera Cirrusa, włączając NEC Versa M, BIOS ustawia kontroler w specyficzny stan zawieszenia podczas startu systemu. W tych systemach, polecenie probe nie powiedzie się. Jeśli tak się zdarzy, zmodyfikuj plik /etc/rc.d/rc.pcmcia ręcznie tak:

   # Wstaw tu parametry timing-ów dla sterownika gniazd
   PCIC=i82365
   # Wstaw tu opcje pcmcia_core
   PCIC_OPTS="wakeup=1"

2.6 Problemy podczas ładowania modułów jądra.

Skrypt konfiguracyjny normalnie upewni się czy moduły PCMCIA są kompatybilne z twoim jądrem. Tak więc, problemy podczas ładownia modułów wskazuje z reguły na to, że użytkownik ingerował w jakiś sposób w normalny proces instalacji. Niektóre z tych problemów są wysyłane bezpośrednio na konsolę Linux-a. Inne błędy są zapisywane w pliku "log-file", zwykle jest to /usr/adm/messages albo /var/log/messages. W zależności od konfiguracji twojego syslogd, niektóre komunikaty mogą być zapisane do innych plików, które zwykle znajdują się także w /usr/adm czy var/log. Aby wyśledzić problem, upewnij się, że sprawdziłeś obie lokalizacje.

Niektóre moduły PCMCIA wymagają serwisów jądra, które mogą, ale nie muszą być obecne, zależnie od konfiguracji jądra. Na przykład, sterowniki kart SCSI wymagają skonfigurowanej obsługi SCSI w jądrze, a sterowniki sieci wymagają skonfigurowania sieci w jądrze. Jeśli w jądrze brakuje potrzebnego serwisu insmod może twierdzić, że są niezdefiniowane symbole i nie załadować modułu.

Jeśli insmod zwraca błąd "wrong version", oznacza to, że moduł był skompilowany dla innej wersji jądra niż to, które akurat działa. Może to się pojawić jeśli moduły skompilowane na jednej maszynie są kopiowane na drugą z inną konfiguracją, albo jeśli jądro jest rekonfigurowane po tym, jak pakiet PCMCIA został zainstalowany.

Innym źródłem błędów podczas ładowana modułów może być to, że moduły i jądra były skompilowane z różnymi ustawieniami CONFIG_MODVERSIONS. Jeśli moduł z wkompilowanym sprawdzaniem wersji jest ładowany do jądra bez sprawdzania wersji, insmod zwróci błąd "undefined symbols".

Ostatecznie, względnie nowe wersje binutils są niekompatybilne ze starszymi wersjami narzędzi do modułów, i mogą powodować, że są zwracane takie właśnie błędy. Najczęstszym symptomem jest błąd o niezdefiniowaniu gcc_compiled. Jeśli masz takie błędy, odśwież narzędzia do modułów do najnowszej wersji, dostępnych z ftp.icm.edu.pl.

2.7 Problemy z przerwaniem zmiany statusu karty.

W większośći wypadków sterownik do gniazd (i82365 albo tcic) automatycznie wykryje i wybierze odpowiednie przerwanie, aby sygnalizować zmiany statusu karty. Automatyczne wyszukiwanie przerwania nie działa na niektórych kontrolerach kompatybilnych z Intel-em, włączając Cirrus-a i niektóre IBM ThinkPad. Jeśli urządzenie nie jest aktywne w czasie sprawdzania, jego przerwanie może także pojawić się jako niedostępne. W takich przypadkach sterownik gniazd może wybrać przerwanie które jest używane przez inne urządzenie.

W sterownikach i82365 i tcic można używać opcji irq_list aby ograniczyć ilość wyszukiwanych przerwań. Lista ta ogranicza zbiór przerwań, które mogą być użyte przez karty PCMCIA oraz do monitorowania zmian statusu karty. Opcja cs_irq może być użyta, aby wyraźnie określić przerwanie, którego należy użyć do monitorowania zmian statusu karty.

Jeśli nie możesz znaleźć numeru przerwania, które działa, jest jeszcze tryb statusu "polled": oba - i82365 i tcic zaakceptują opcję poll_interval=100, aby sprawdzać zmiany statusu karty raz na sekundę. Opcja ta powinna być także używana jeśli w twoim systemie brakuje dostępnych przerwań dla kart PCMCIA. Szczególnie w systemach z więcej niż jednym kontrolerem PCMCIA, nie ma zbytnio sensu w przeznaczaniu przerwań na monitorowanie zmian statusu kart.

Wszystkie te opcje powinny być ustawiane w linii PCIC_OPTS= w pliku /etc/rc.d/rc.pcmcia albo /etc/sysconfig/pcmcia zależnie od twojego systemu.

2.8 Problemy z identyfikacją karty.

Domyślnie, sterowniki PCMCIA alokują okna pamięci w przestrzeni 0xC0000-0xFFFFF, po sprawdzeniu czy nie ma w niej jakichś konfliktów z ROM-em czy innymi urządzeniami. To okno pamięci jest podane w pliku /etc/pcmcia/config.opts. Sprawdzanie ma miejsce przy pierwszej próbie skonfigurowania nowej karty. Procedura sprawdzania nie jest idioto-odporna, więc możliwe jest niezidentyfikowanie konfliktu. Jeśli obszar ten jest używany przez inne urządzenia w twoim systemie, karty mogą nie zostać zidentyfikowane poprawnie. Przy układach które to obsługują, konflikt może też powstawać przy przesłanianiu tego obszaru pamięci.

Klasycznym symptomem problemu z konfiguracją okna pamięci jest zidentyfikowanie wszystkich kart jako karty pamięci. W nadzwyczajnych przypadkach konflikt taki może powstać z jakimś krytycznym serwisem systemowym, co może powodować zawieszenia czy restarty. Jeśli podejrzewasz taki konflikt, sprawdź najpierw czy wyłączone jest przesłanianie ROM-u w ustawieniach twojego sprzętu. Znalezienie dobrego okna może wymagać trochę eksperymentów. Kilka alternatywnych okien to: 0xD0000-0xDFFFF, 0xC9000-0xCFFFF i 0xD8000-0xDFFFF.

Jeśli masz sterowniki DOS-owe do PCMCIA, możesz zobaczyć jakich obszarów pamięci one używają. Zauważ, że adresy pamięci w DOS-ie są często podawane w formie segmentów, która to obcina ostatnią cyfrę szesnastkową (tak, że adres bezwzględny 0xD0000 byłby podany jako 0xD000. Upewnij się, że dodałeś tę jedną cyfrę kiedy wpisywałeś wartość do pliku /etc/pcmcia/config.opts.

Jeśli problem z identyfikacją karty nie został rozwiązany dopasowywaniem okien pamięci, to prawdopodobnie jest to problem z "timing-ami"

2.9 Dlaczego nie dystrybujesz binariów do PCMCIA ?

Dla mnie, dystrybucja binariów jest bardzo niewygodna. Jest to sprawa skomplikowana ponieważ niektóre zalety mogą być podane dopiero w czasie kompilacji, oraz dlatego, że moduły PCMCIA są zależne od "poprawnej" konfiguracji jądra. Więc musiałbym przypuszczalnie dystrybułować prekompilowane moduły wraz z odpowiednimi wersjami jąder. Idąc dalej, prekompilowane moduły są najbardziej potrzebne kiedy instalujemy Linux-a od początku. To z reguły wymaga ustawienia PCMCIA tak, żeby można jej było użyć w procesie instalacji dla konkretnej dystrybucji Linux-a. Każda dystrybucja Linux-a ma własną procedurę, i nie jest dla mnie wykonalnym udostępniać dyskietki "boot" i "root" chcociażby tylko dla tych najbardziej popularnych kombinacji sterowników i dystrybucji.

PCMCIA jest teraz częścią większości ważniejszych dystrybucji, włączając Red Hat, Caldera, Slackware, Yggdrasil, Craftworks oraz Nascent Technology.

2.10 Dlaczego ten pakiet jest taki wielki ?

No cóż, po pierwsze, to on wcale nie jest taki wielki. Wszystkie moduły sterowników razem wzięte zajmują jakieś 200k. Programy narzędziowe dodają jeszcze jakieś 70k, a rzeczy w /etc/pcmcia zajmują jakieś 30k. Podczas działania, rdzeń modułów PCMCIA zabiera około 48k pamięci systemowej. Demon cardmgr z reguły jest wyswapowywany oprócz momentów kiedy karty są wsadzane lub wyjmowane. Całkowita objętość pakietu nie wiele różni się od implementacji Card Services pod DOS-a.

W porównaniu z DOS-owymi "włącznikami", może się to wydawać trochę przesadzone, szczególnie dla ludzi, którzy nie planują używać tych wszystkich zalet jakie posiada PCMCIA, jak np. zarządzanie zasilaniem czy "gorące wymiany". "Włączniki" mogą być malutkie ponieważ generalnie obsługują one ograniczoną ilość kontrolerów PCMCIA. Jeśli ktoś miałby napisać autentycznie "ogólny" "włącznik" do modemu, skońyczłoby się na tym, że pojawiłaby się tam większość funkcji z Card Services, aby obsłużyć karty od różnych sprzedawców oraz pełny zakres różnych wariantów kontrolerów PCMCIA.

3. Stosowanie i zalety.

3.1 Narzędzia do monitorowania urządzeń PCMCIA.

Demon cardmgr normalnie wydaje sygnał dźwiękowy (beep) kiedy karta jest wsadzana, a ton tego dźwięku informuje nas o statusie nowo włożonej karty. Dźwięk wysoki a po nim niski informuje, że karta została zidentyfikowana, ale z jakiegoś powodu nie mogła zostać skonfigurowana. Jeden dźwięk niski informuje, że karta nie mogła zostać zidentyfikowana.

Jeśli wszystkie moduły są poprawnie załadowane, polecenie lsmod daje mniej więcej taki wynik (bez włożonych kart):

   Module:        #pages:  Used by:
   ds                 2
   i82365             3
   pcmcia_core        7    [ds i82365]

Wszystkie moduły PCMCIA oraz demon cardmgr wysyłają komunikaty o statusie do systemowego programu logującego. Będzie to z reguły /var/log/messages albo /usr/adm/messages. Powinno to być pierwsze miejsce, do którego należy zajrzeć kiedy coś nie działa. Kiedy wysyłasz mi wiadomość o jakimś błędzie, zawsze dołącz zawartość tego pliku. Jeśli nie możesz znaleźć komunikatów z twojego systemu, to sprawdź konfigurację w pliku /etc/syslogd.conf, aby zobaczyć do jakich plików są one zapisywane. Cardmgr także zapisuje niektóre bieżące informacje o urządzeniach dla każdego gniazda w pliku /var/run/stab. Oto przykładowa zawartość tego pliku:

   Socket 0: Adaptec APA-1460 SlimSCSI
   0       scsi    aha152x_cs      0       sda     8       0
   0       scsi    aha152x_cs      1       scd0    11      0
   Socket 1: Serial or Modem Card
   1       serial  serial_cs       0       ttyS1    5       65

W liniach opisujących urządzenia, pierwsze pole jest gniazdem, drugie - klasą urządzenia, trzecie - nazwą sterownika, czwarte jest używane, aby numerować urządzenia złożone (multiple devices) związane z tym samym sterownikiem, piąte - nazwą urządzenia, a ostatnie dwa pola są liczbą główną i poboczną dla danego urządzenia (jeśli jest dostępne).

Polecenie cardctl może służyć do sprawdzenia statusu gniazda, albo jego konfiguracji. Oto przykładowy rezultat polecenia "cardctl config":

Socket 0:
Socket 1:
  Vcc = 5.0, Vpp1 = 0.0, Vpp2 = 0.0
  Card type is memory and I/O
  IRQ 3 is dynamic shared, level mode, enabled
  Speaker output is enabled
  Function 0:
    Config register base = 0x0800
      Option = 0x63, status = 0x08
    I/O window 1: 0x0280 to 0x02bf, auto sized
    I/O window 2: 0x02f8 to 0x02ff, 8 bit

Jeśli masz uruchomione X-y, to narzędzie cardinfo wyświetla informacje o statusie wszystkich gniazd PCMCIA, podobną w zawartości do "cardctl config".

3.2 Przegląd skryptów konfiguracyjnych PCMCIA.

Każde urządzenie PCMCIA jest przyporządkowane jakiejś klasie, która opisuje jak powinno ono zostać skonfigurowane i jak nim zarządzać. Klasy są związane ze sterownikami urządzeń w /etc/pcmcia/config. Jest w tej chwili pięć klas urządzeń IO (sieć, SCSI, CD-ROM, dyski fixed i szeregowe) oraz dwie klasy urządzeń związanych z pamięcią (pamięć i FTL). Dla każdej klasy są dwa skrypty w /etc/pcmcia/config: główny skrypt konfiguracyjny (/etc/pcmcia/scsi dla urządzeń SCSI), i skrypt z opcjami (/etc/pcmcia/scsi.opts). Skrypt główny dla danego urządzenia zostanie wywołany, aby skonfigurować to urządzenie kiedy karta jest wkładana, i żeby wyłączyć dane urządzenie kiedy karta jest wyjmowana. Dla kart, z którymi jest związane kilka urządzeń, skrypt zostanie wywołany dla każdego urządzenia.

Skrypty konfiguracyjne zaczynają od wyciągnięcia pewnych informacji o danym urządzeniu z pliku /var/run/stab. Każdy skrypt konstruuje "adres urządzenia" w zmiennej ADDRESS, który jest unikatowy dla urządzenia, które ma być skonfigurowane. Jest to przekazywane do skryptu *.opts, który powinien zwrócić informację o tym, jak dane urządzenie z podanego adresu powinno zostać skonfigurowane. Dla niektórych urządzeń, adres ten jest po prostu numerem gniazda. Dla innych, zawiera on dodatkowe informacje, które mogą być przydatne do zadecydowania jak skonfigurować dane urządzenie. Na przykład, urządzenia sieciowe przekazują swój adres Ethernet-owy jako część swojego "adresu urządzenia", tak żeby skrypt network.opts mógł tego użyć, aby wybrać z kilku różnych konfiguracji.

Pierwszą częścią wszystkich adresów urządzeń jest bieżący schemat PCMCIA. Parametr ten jest używany do obsługi złożonych zbiorów konfiguracji urządzeń opartych na pojedynczej zewnętrznej zmiennej podanej przez użytkownika. Jeden ze sposobów użycia schematów to posiadanie schematu domowego, i schematu roboczego, który zawierałby różne zbiory parametrów konfiguracji sieci. Schemat bieżący jest wybierany przy pomocy polecenia cardctl. Domyślnym schematem, jeśli żaden nie jest podany, jest "default".

Jako zasada ogólna podczas konfiguracji Linux-a na laptopa, urządzenia PCMCIA powinny być konfigurowane tylko przy pomocy skryptów do urządzeń PCMCIA. Nie próbuj konfigurować urządzenia PCMCIA w ten sam sposób co urządzenie dołączone na stałe.

3.3 Adaptery sieciowe PCMCIA.

Normalnie interfejsy sieciowe typu Ethernet na Linux-ie mają nazwy eth0, eth1 itd. Kontrolery Token-Ring są obsługiwane podobnie, chociaż nazywane są tr0, tr1 itd. Polecenie ifconfig jest wywoływane, aby zobaczyć albo zmodyfikować stan urządzenia sieciowego. Własnością Linux-a jest to, że interfejsy sieciowe nie mają odpowiednich plików w katalogu /dev, więc nie bądź zaskoczony, że nie możesz ich znaleźć.

Kiedy zostanie wykryta karta Ethernet-owa PCMCIA, zostanie jej przydzielona pierwsza wolna nazwa interfejsu, którą będzie przypuszczalnie eth0. Cardmgr wykona skrypt /etc/pcmcia/network, aby skonfigurować ten interfejs.

Nie konfiguruj swojej karty Ethernet-owej w /etc/rc.d/rc.inet1 ponieważ karty może nie być kiedy skrypt ten jest wykonywany. Wstaw w komentarz wszystko, oprócz urządzenia "loopback" w rc.inet1.
Jeśli twój system ma automatyczną procedurę konfiguracji sieci powinieneś zwykle wskazać, że nie masz zainstalowanej karty sieciowej. W zamian, zmodyfikuj plik /etc/pcmcia/network.opts, tak aby odpowiadał twojej lokalnej konfiguracji sieci. Skrypty network i network.opts zostaną wykonane tylko jeśli twoja karta Ethernet-owa jest obecna.

Adres urządzenia przekazany do network.opts składa się, z czterech pól oddzielonych przecinkami: schematu, numeru gniazda, numeru urządzenia i sprzętowego adresu karty Ethernet. Numer urządzenia jest używany do numerowania urządzeń dla kart, które mają kilka interfejsów sieciowych, tak więc zwykle będzie to 0. Jeśli masz kilka kart sieciowych używanych do różnych celów, jedną z opcji byłoby skonfigurowanie kart oparte na numerze gniazda, jak tu:

   case "$ADDRESS" in
   *,0,*,*)
       # definicje dla karty sieciowej w gnieździe 0
       ;;
   *,1,*,*)
       # definicje dla karty sieciowej w gnieździe 1
       ;;
   esac

Alternatywnie mogłyby one być skonfigurowane używając ich adresów sprzętowych, jak tu:

   case "$ADDRESS" in
   *,*,*,00:80:C8:76:00:B1)
       # definicje dla karty D-Link
       ;;
   *,*,*,08:00:5A:44:80:01)
       # definicje dla karty IBM
   esac

Aby automatycznie zamontować i odmontować system plików NFS, najpierw dodaj te wszystkie systemy do /etc/fstab, ale w opcjach podaj noauto. W network.opts wpisz katalogi, w których mają być zamontowane systemy plików NFS w zmiennej MOUNTS. Jest tu szczególnie ważne, aby użyć albo cardctl albo cardinfo, aby wyłączyć kartę sieciową kiedy montowanie z NFS jest w ten sposób skonfigurowane. Nie jest możliwe czyste odmontowanie systemu plików NFS jeśli karta sieciowa jest po prostu wyrzucana bez ostrzeżenia.

Dodatkowo oprócz zwykłych parametrów konfiguracyjnych dla sieci, skrypt network.opts może podawać inne akcje, które mają mieć miejsce po tym jak interfejs został skonfigurowany, albo przed zamknięciem interfejsu. Jeśli w network.opts zdefiniowana jest funkcja start_fn, zostanie ona wywołana przez skrypt sieciowy po skonfigurowaniu interfejsu, a nazwa interfejsu zostanie przekazana do tej funkcji jako pierwszy i jedyny argument. Podobnie jeśli funkcja stop_fn jest zdefiniowana, to zostanie ona wywołana przed zamknięciem interfejsu.

Wybór transceiver-a.

Typ transceiver-a można wybrać w network.opts przy pomocy ustawienia IF_PORT. Może to być zarówno wartość numeryczna jak we wcześniejszych wydaniach PCMCIA, jak i słowo kluczowe identyfikujące typ transceiver-a. Wartościami domyślnymi we wszystkich sterownikach sieciowych są: wykrywanie automatyczne interfejsu jeśli jest to możliwe, a w przeciwnym razie - 10baseT. Przy pomocy polecenia ifport można sprawdzić lub ustawić bieżący typ transceiver-a. Np.:

# ifport eth0 10base2
# 
# ifport eth0
eth0    2 (10base2)

Obecne wersje sterownika 3c589 próbują automatycznie wykryć połączenie sieciowe, ale nie jest to jeszcze w pełni funkcjonalne. Aby automatyczne wykrywanie działało, kabel sieciowy powinien tkwić w karcie podczas jej konfiguracji. Alternatywnym rozwiązaniem jest zmuszenie sterownika do sprawdzenia połączenia przy pomocy polecenia:

ifconfig eth0 down up

Komentarze na temat konkretnych kart.

Diagnozowanie problemów z kartami sieciowymi.

3.4 Urządzenia szeregowe i modemy PCMCIA.

Linux-owe urządzenia szeregowe są dostępne poprzez specjalne pliki /dev/cua* i /dev/ttyS*. Urządzenia ttyS* są dla połączeń przychodzących, jak np. bezpośrednio podłączone terminale. Urządzenia cua* są dla połączeń wychodzących, jak np. modemy. Każdy fizyczny port szeregowy ma plik urządzenia ttyS i cua: to już zależy od ciebie jaki plik wykorzystasz w swojej aplikacji. Konfiguracja urządzenia szeregowego może być sprawdzana i modyfikowana poprzez polecenie setserial.

Kiedy zostanie wykryta karta szeregowa lub modemowa PCMCIA, zostanie jej przypisany pierwszy dostępny slot urządzenia szeregowego. Będzie to zwykle /dev/ttyS1 (cua1) albo /dev/ttyS2 (cua2) w zależności od ilości wbudowanych portów szeregowych. Urządzenie ttyS* jest raportowane w pliku /var/run/stab. Domyślny skrypt z opcjami dla urządzenia szeregowego /etc/pcmcia/serial.opts podłączy odpowiedni w ramach udogodnienia plik urządzenia cua* do /dev/modem.

Nie próbuj używać /etc/rc.d/rc.serial do konfiguracji modemu PCMCIA. Skrypt ten powinien być używany tylko do konfiguracji urządzeń zainstalowanych na stałe. Modyfikuj /etc/pcmcia/serial.opts jeśli chcesz jakichś specjalnych ustawień dla swojego modemu. Nie próbuj także zmieniać portu IO czy IRQ szeregowego urządzenia PCMCIA programem setserial. Poinformowałoby to sterownik szeregowy, że karta jest w innym miejscu, ale nie zmieniłoby ustawień sprzętowych karty. Skrypt konfiguracyjny pozwala na podanie innych opcji setserial jak rownież to czy linia dla tego portu powinna zostać dodana do /etc/inittab.

Adres urządzenia przekazywany do serial.opts ma trzy pola odzielone przecinkami: pierwsze jest schematem, drugie - numerem gniazda, trzecie - numerem urządzenia. Numer urządzenia może przyjmować kilka wartości dla kart, które obsługują wieloportowe karty szeregowe, ale dla kart jednoportowych będzie to zawsze 0. Jeśli zwykle używasz więcej niż jednego modemu PCMCIA, możesz podać różne ustawienia oparte na numerze gniazda, jak tu:

   case "$ADDRESS" in
   *,0,*)
       # Opcje dla modemu w gnieździe 0
       LINK=/dev/modem0
       ;;
   *,1,*)
       # Opcje dla modemu w gnieździe 1
       LINK=/dev/modem1
       ;;
   esac

Jeśli modem PCMCIA jest już skonfigurowany gdy Linux startuje, może zostać źle zidentyfikowany jako zwykły wbudowany port szeregowy. Jest to nieszkodliwe, chociaż, kiedy sterowniki PCMCIA przejmują kontrolę nad modemem, będzie mu nadany inny slot. Najlepiej albo zmodyfikować /var/run/stab albo użyć /dev/modem niż liczyć na to, że modem PCMCIA będzie zawsze miał przypisane to samo urządzenie.

Jeśli skonfigurujesz twoje jądro, aby ładowało podstawowy sterownik do portów szeregowych jako moduł, musisz zmodyfikować /etc/pcmcia/config, aby wskazać, że ten moduł ma być ładowany. Zmień pozycję urządzenia szeregowego tak:

   device "serial_cs"
     class "serial" module "char/serial", "serial_cs"

Diagnozowanie problemów z urządzeniami szeregowymi.

3.5 Adaptery PCMCIA SCSI.

Wszystkie obecnie obsługiwane karty PCMCIA SCSI są podobne w działaniu do jednej z następujących kart: Qlogic, Adaptec AHA-152X albo Future Domain TMC-16x0. Sterowniki PCMCIA są stworzone przez dołączanie części specyficznego dla PCMCIA kodu (w qlogic_cs.c, toaster_cs.c albo fdomain_cs.c) do normalnego sterownika SCSI dla Linux-a.

Kiedy wykryty zostanie nowy kontroler SCSI, sterowniki do SCSI będą szukać urządzeń. Sprawdź logi systemowe, aby upewnić się, że twoje urządzenia zostały wykryte poprawnie. Nowym urządzeniom SCSI zostanie przypisany pierwszy wolny plik urządzenia SCSI. Pierwszy dysk SCSI będzie /dev/sda, pierwsza taśma SCSI będzie /dev/st0, a pierwszy CD-ROM SCSI będzie /dev/scd0.

Rdzeniowe sterowniki PCMCIA są w stanie dowiedzieć się od jądra 1.3.X i późniejszego, które urządzenia SCSI są podłączone do karty. Będą one wymienione w /var/run/stab, a skrypt konfiguracyjny SCSI /etc/pcmcia/scsi będzie wywołany jeden raz dla każdego dołączonego urządzenia, aby je albo skonfigurować albo wyłączyć. Skrypt domyślny nie robi nic, aby skonfigurować urządzenia SCSI, ale poprawnie odmontuje systemy plików z urządzeń SCSI kiedy karta zostanie usunięta.

Sterowniki PCMCIA z jądrem w wersji 1.2.X nie potrafią automatycznie wykryć , które urządzenia są przypisane konkretnemu sterownikowi. W zamian za to, jeśli masz jedną normalną konfigurację urządzenia SCSI, możesz wymienić te urządzenia w /etc/pcmcia/scsi.opts. Na przykład: jeśli normalnie masz dysk i CD-ROM SCSI, użyłbyś:

   # Dla jądra 1.2: lista urządzeń dołączonych
   SCSI_DEVICES="sda scd0"

Adresy urządzeń przekazywane do scsi.opts są skomplikowane, z powodu dużej ilości urządzeń, które mogą być dołączone do kontrolera SCSI. Adresy składają się albo z sześciu albo z siedmiu pól oddzielonych przecinkami: bieżący schemat, typ urządzenia, numer gniazda, kanał SCSI, ID, numer logicznej jednostki i opcjonalnie numer partycji. Typ urządzenia będzie jednym z: "sd" dla dysków, "st" dla taśm, "sr" dla CD-ROM-ów i "sg" dla ogólnych urządzeń SCSI. W większości ustawień, kanał SCSI oraz numer logicznej jednostki będzie 0. Dla urządzeń dyskowych z kilkoma partycjami, scsi.opts zostanie najpierw wywołany dla całego urządzenia, z pięciopolowym adresem. Skrypt ten powinien ustawić w zmiennej PARTS listę partycji. Potem, scsi.opts zostanie wywołany dla każdej partycji, z dłuższymi - siedmiopolowymi adresami. Na przykład: oto skrypt do konfiguracji urządzenia dyskowego pod SCSI ID = 3 z dwiema partycjami oraz CD-ROM pod SCSI ID = 6:

case "$ADDRESS" in
*,sd,*,0,3,0)
    # To urządzenie ma dwie partycje...
    PARTS="1 2"
    ;;
*,sd,*,0,3,0,1)
    # Opcje dla partycji nr 1:
    # zaktualizuj /etc/fstab i zamontuj system plików ext2 na /usr1
    DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
    FSTYPE="ext2"
    OPTS=""
    MOUNTPT="/usr1"
    ;;
*,sd,*,0,3,0,2)
    # Opcje dla partycji nr 2:
    # zaktualizuj /etc/fstab i zamontuj system plików ext2 na /usr2 
    DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
    FSTYPE="msdos"
    OPTS=""
    MOUNTPT="/usr2"
    ;;
*,sr,*,0,6,0)
    # Opcje dla CD-ROM-u ID = 6
    PARTS=""
    DO_FSTAB="y" ; DO_FSCK="n" ; DO_MOUNT="y"
    FSTYPE="iso9660"
    OPTS="ro"
    MOUNTPT="/cdrom"
    ;;
esac

Jeśli twoje jądro nie posiada sterownika "top-level" (do dysku, taśmy itp.) dla konkretnego urządzenia SCSI, wtedy urządzenie to nie zostanie skonfigurowane przez sterownik PCMCIA. Jako efekt uboczny, nazwa urządzenia w /var/run/stab będzie wyglądać mniej więcej tak: "sd#nnnn", gdzie "nnnn" jest czterocyfrową liczbą szesnastkową. Zdarza się to, jeśli cardmgr nie jest w stanie przetłumaczyć ID urządzenia SCSI na odpowiadającą mu nazwę urządzenia Linux-owego.

Możliwe jest zmodularyzowanie sterowników "top-level" do SCSI, tak aby były ładowane tylko wtedy kiedy zostanie wykryty kontroler SCSI. Aby tak zrobić, musisz zmodyfikować /etc/pcmcia/config, aby poinformować cardmgr, które dodatkowe moduły muszą być załadowane kiedy dany kontroler jest konfigurowany.
Na przykład:

device "aha152x_cs"
  class "scsi" module "scsi/scsi_mod", "scsi/sd_mod", "aha152x_cs"

Taka zawartość pliku spowodowałaby załadowanie rdzennego modułu SCSI oraz modułu sterownika "top-level" do dysków przed ładowaniem normalnego modułu sterownika PCMCIA. Skrypt Configure nie wykryje automatycznie zmodularyzowanych sterowników SCSI, tak więc będziesz musiał włączyć obsługę SCSI ręcznie używając opcji konfiguracyjnych.

Zawsze włączaj swoje urządzenia przed włączeniem laptopa, albo przed włożeniem karty kontrolera, tak aby szyna SCSI została poprawnie zakończona podczas konfiguracji kontrolera. Bądź także bardzo ostrożny przy wyjmowaniu kontrolera SCSI. Przed wyjęciem karty upewnij się, że wszystkie urządzenia do niej przydzielone zostały odmontowane i wyłączone. Najlepiej przed wyjęciem karty skorzystać z programu cardctl albo cardinfo i zażądać usunięcia karty z systemu. W chwili obecnej wszystkie urządzenia SCSI powinny być włączane przed włożeniem karty sterownika SCSI i powinny pozostać podłączone do momentu wyjęcia karty sterownika lub wyłączenia laptopa.

Korzystanie z tych kart niesie za sobą potencjalne komplikacje nieznane w przypadku korzystania ze zwykłych sterowników ISA. Szyna SCSI przenosi sygnał "termination power" niezbędny do prawidłowego działania zwykłych pasywnych terminatorów SCSI. Sterowniki SCSI standardu PCMCIA nie dostarczają sygnału "power termination", jeśli jest on wymagany musi zostać dostarczony przez urządzenie zewnętrzne. Niektóre zewnętrzne urządzenia SCSI mogą zostać skonfigurowane w taki sposób, aby dostarczały wspomnianego sysgnału. Inne, jak np. Zip Drive czy Syquest EZ-Drive używają aktywnych terminatorów, przez co nie są zależne od sygnału podawanego na szynie SCSI. W niektórych przypadkach może okazać się konieczne skorzystanie ze specjalnego bloku terminatora, np. APS SCSI Sentry 2, który posiada niezależne, zewnętrzne źródło zasilania. Konfigurując łańcuch urządzeń SCSI musisz sobie zdawać sprawę, które z nich wymagają lub dostarczają sygnał "power termination".

Kontroler Adaptec APA-460 SlimSCSI nie jest obsługiwany. Kartę tę sprzedawano oryginalnie pod nazwą Trantor, a kiedy Adaptec połączył się z Trantor-em, kontynuowano sprzedaż Trantora z nazwą Adaptec. APA-460 nie jest kompatybilny z jakimkolwiek istniejącym sterownikiem Linux-owym. Nie jestem pewien jak trudno byłoby napisać sterownik; nie sądzę, żeby ktoś był w stanie wyciągnąć jakiekolwiek informacje od Adaptec-a.

(Nieobsługiwany) Trantor SlimSCSI może zostać zidentyfikowany następująco:

   Trantor / Adaptec APA-460 SlimSCSI
   FCC ID: IE8T460
   Shipped with SCSIworks! driver software

(Obsługiwany) Adaptec SlimSCSI może zostać zidentyfikowany następująco:

   Adaptec APA-1460 SlimSCSI
   FCC ID: FGT1460
   P/N: 900100
   Shipped with EZ-SCSI driver software

Diagnozowanie problemów z kartami SCSI.

3.6 Karty pamięci PCMCIA.

Sterownik memory_cs obsługuje wszystkie typy kart pamięci, jak również dostarcza bezpośredniego dostepu do obszaru adresowego pamięci PCMCIA dla kart, które mają inne funkcje. Po załadowaniu tworzy kombinację urządzeń znakowych i blokowych. Przeczytaj stronę podręcznika na temat modułów, aby dowiedzieć się więcej o schemacie nazewnictwa urządzeń. Urządzenia blokowe są używane do dostępu a'la dysk (tworzenie i montowanie systemów plików itp.) Urządzenia znakowe służą do bezpośredniego (raw) niebuforowanego czytania i pisania do jakiegoś miejsca.

Adres urządzenia przekazany do memory.opts składa się z dwóch pól: schematu i numeru gniazda. Opcje odnoszą się do pierwszej zwykłej partycji pamięci na odpowiedniej karcie pamięci. Oto przykład skryptu, który automatycznie montuje karty pamięci w zależności od złącza, w które zostaną karty włożone:

   case "$ADDRESS" in
   *,0,0)
       # Zamontuj systemy plików, ale nie uaktualniaj /etc/fstab
       DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y"
       FSTYPE="ext2" ; OPTS=""
       MOUNTPT="/mem0"
       ;;
   *,1,0)
       # Zamontuj systemy plików, ale nie uaktualniaj /etc/fstab
       DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y"
       FSTYPE="ext2" ; OPTS=""
       MOUNTPT="/mem0"
       ;;
   esac

Niektóre starsze karty pamięci i większość prostych statycznych kart RAM nie posiadają "Card Information Structure" (CIS), która jest schematem używanym przez karty PCMCIA do identyfikowania się. Normalnie cardmgr założy, że każda karta, w której brakuje owej struktury jest prostą kartą pamięci i załaduje sterownik memory_cs. I tak, częstym skutkiem ubocznym ogólnego identyfikowania kart jest identyfikacja innego typu kart jako karty pamięci.

Sterownik memory_cs używa heurystyki, aby zgadnąć pojemność tych kart. Heurystyka nie działa jednak dla kart zabezpieczonych przed zapisem i może czynić błędy także w innych przypadkach. Jeśli karta została źle zidentyfikowana, jej rozmiar powinien być wyraźnie podany podczas używania takich poleceń jak dd czy mkfs.

Używanie kart pamięci "flash".

Adres urządzenia przekazywany do ftl.opts składa się z trzech lub czterech pól: schematu, numeru gniazda, numeru regionu i opcjonalnie numeru partycji. Większość kart "flash" ma tylko jeden region pamięci "flash", więc numerem regionu zwykle będzie zero.

Aby użyć karty pamięci "flash" jako zwykłego urządzenia blokowego jak dysk, stwórz najpierw partycję "flash translation layer" na tym urządzeniu poleceniem ftl_format:

ftl_format -i /dev/mem0c0c

Zauważ, że polecenie to uzyskuje dostęp do karty przez bezpośredni interfejs pamięci karty. Raz sformatowana karta może być używana jako zwykłe urządzenie blokowe przy pomocy sterownika ftl_cs. Na przykład:

mke2fs /dev/ftl0c0
mount -t ext2 /dev/ftl0c0 /mnt

Nazewnictwo dla urządzeń FTL jest trochę pokręcone. Poboczne liczby urządzeń mają trzy części: numer karty, numer regionu na tej karcie i opcjonalnie partycję w tym regionie. Region może być traktowany jako pojedyncze urządzenie blokowe bez tablicy partycji (jak dyskietka) albo można go podzielić na partycje tak jak dysk twardy. Urządzenie "ftl0c0" jest kartą 0 o numerze regionu 0 i całym regionem. Urządzenia od "ftl0c0p1" do "ftl0c0p4" są głównymi partycjami 1 do 4 jeśli region został podzielony.

Są dwa główne formaty dla kart pamięci flash: styl "flash translation layer", i styl "Microsoft Flash File System". Format FTL jest ogólnie bardziej elastyczny ponieważ pozwala na użycie każdego zwykłego wysokopoziomowego systemu plików (ext2, ms-dos itp.) na kartach pamięci "flash" tak jakby były one na zwykłym urządzeniu dyskowym. FFS jest całkiem odmiennym systemem plików. Linux nie umie w tej chwili obługiwać kart sformatowanych w tym systemie.

3.7 Karty PCMCIA napędów ATA/IDE.

Obsługa napędów ATA/IDE wymaga jadra 1.3.72 lub nowszego. Specyficzna dla PCMCIA część sterownika to fixed_cs. Pamiętaj żeby używać cardctl albo cardinfo do wyłączania karty ATA/IDE przed wyjęciem jej, ponieważ sterownik nie jest odporny na "gorące zmiany".

Adresy urządzenia przekazywane do fixed.opts składają się z trzech albo czterech pól: bieżący schemat, numer gniazda, numer seryjny napędu i opcjonalny numer partycji. Tak samo jak w przypadku urządzeń SCSI, fixed.opts jest najpierw wywoływany dla całego urządzenia. Jeśli fixed.opts zwróci listę partycji w zmiennej PARTS, skrypt zostanie wtedy wywołany dla każdej partycji.

Oto przykład pliku fixed.opts, który montuje pierwszą partycję jakiejkolwiek karty ATA/IDE na /mnt.

   case "$ADDRESS" in
   *,*,*)
       PARTS="1"
       ;;
   *,*,*,1)
       DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
       FSTYPE="msdos"
       OPTS=""
       MOUNTPT="/mnt"
       ;;
   esac

Zauważ, że domyślny plik fixed.opts posiada te linie, ale są one w komentarzu. Jeśli chcesz, możesz mieć oddzielne konfiguracje dla konkretnych kart oparte na ich numerach seryjnych. Aby odszukać numer seryjny napędu, użyj narzędzia ide_info. Wtedy część fixed.opts może wyglądać tak:

   case "$ADDRESS" in
   *,*,Z4J60542)
       # To są moje rzeczy DOS-owe
       PARTS="1"
       ;;
   *,*,Z4J60542,1)
       DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
       FSTYPE="msdos"
       OPTS=""
       MOUNTPT="/mnt"
       ;;
   esac

Diagnozowanie problemów z adapterami ATA/IDE.

3.8 Karty wielofunkcyjne.

Od jądra w wersji 1.3.73 pojedyncze przerwanie może być dzielone między kilka sterowników jak sterownik szeregowy i ethernetu. Jeśli używasz wielofunkcyjnej karty z nowszym jądrem, to wszystkie funkcje tej karty są dostępne bez potrzeby przeładowywania sterowników.

Symultaniczne użycie dwóch funkcji karty wymaga trochę sprytu i różni sprzedawcy sprzętu zaimplementowali dzielenie przerwań na swój, niekompatybilny (i czasem nieudokumentowany) sposób. Sterowniki do niektórych kart (Ositech Jack of Diamonds, 3Com 3c562, Linksys) udostępniają poprawnie symultaniczność, ale inne (szczególnie Megahertz) - nie.

Wcześniejsze jądra nie obsługiwały dzielenia przerwań pomiędzy różne sterowniki urządzeń, więc jest niemożliwe skonfigurowanie kart modemu i ethernetu do działania symultanicznego. Sterowniki ethernetowy i modemowy są ładowane jednocześnie automatycznie. Chociaż sterownik ethernetowy przejmuje przerwanie domyślnie. Aby użyć modemu możesz usunąć sterownik ethernetowy z pamięci i zrekonfigurować port szeregowy czymś takim:

ifconfig eth0 down
rmmod 3c589_cs
setserial /dev/modem autoconfig auto_irq
setserial /dev/modem

Drugie polecenie setserial powinno zweryfikować czy port został skonfigurowany tak, aby użyć przerwania poprzednio używanego przez sterownik ethernetowy.

3.9 Kiedy można bezpiecznie włożyć albo wyjąć kartę PCMCIA ?

Teoretycznie możesz wkładać i wyjmować karty PCMCIA w każdym momencie. Chcociaż, generalnie dobrze jest nie wyjmować karty jeśli jest ona akurat używana przez jakąś aplikację. Jądra starsze niż 1.1.77 często zawieszałyby się podczas wyjmowania kart szeregowych lub modemowych, ale to powinno już być naprawione.

3.10 Card Services i Advanced Power Management.

Pakiet Card Services może zostać skompilowany z obsługą APM (Advanced Power Management) jeśli zainstalowałeś ten pakiet w swoim systemie. APM jest dołączony do jąder 1.3.46 i nowszych. Opiekunem tego pakietu jest obecnie Rick Faith (faith@cs.unc.edu), a narzędzia do APM można uzyskać z ftp.cs.unc.edu. Moduły PCMCIA zostaną skonfigurowane automatycznie pod względem APM jeśli na twoim systemie zostanie wykryta wersja kompatybilna.

Aby poprawnie zakończyć działanie i ponownie wystartować karty PCMCIA, możesz wykonać cardctl suspend przed zawieszeniem twojego laptopa i cardctl resume po przywróceniu go do pracy bez zmian w APM. Niezadziała to jednak z modemem PCMCIA, który jest właśnie używany, ponieważ sterownik szeregowy nie jest w stanie zachować i odtworzyć parametrów operacyjnych modemu.

APM wydaje się być niepewne na niektórych systemach. Jeśli masz problemy z APM i PCMCIA w twoim systemie, spróbuj zawęzić problem do jednego albo drugiego pakietu zanim wyślesz list z raportem o błędzie.

Niektóre sterowniki, szczególnie sterowniki PCMCIA SCSI, nie mogą się odtworzyć ze stanu zawieś/odtwórz. Kiedy używasz karty PCMCIA SCSI, użyj cardctl eject zanim zawiesisz system.

3.11 Jak mam wyłączyć kartę PCMCIA bez wyjmowania jej ?

Użyj polecenia cardctl albo cardinfo. Polecenie cardctl suspend # zawiesi jedno gniazdo, i wyłączy jego zasilanie. Odpowiednie polecnie resume obudzi kartę w stan poprzedni.

3.12 Jak usuwam sterowniki PCMCIA z pamięci ?

Aby usunąć cały pakiet PCMCIA, uruchomrc.pcmcia tak:

/etc/rc.d/rc.pcmcia stop

Uruchomienie tego skryptu zajmie kilka sekund, ponieważ daje on czas wszystkim sterownikom-klientom na poprawne zakończenie działania. Jeśli jakieś urządzenie PCMCIA jest akurat używane, zakończenie będzie niekompletne, i niektóre moduły jądra mogą nie zostać usunięte. Aby tego uniknąć użyj cardctl eject, aby zamknąć wszystkie gniazda przed uruchomieniem rc.pcmcia. Status wyjściowy polecenia cardctl określi czy jakieś gniazdo nie mogło być zamknięte.

4. Zaawansowane tematy.

4.1 Alokoacja zasobów dla urządzeń PCMCIA.

Teoretycznie nie powinno mieć znaczenia które przerwanie jest alokowane dla którego urządzenia tak długo jak dwa urządzenia nie są skonfigurowane, aby używać tego samego przerwania. W pliku /etc/pcmcia/config.opts znajdziesz miejsce na wyłączenie przerwań, które są używane przez inne urządzenia niż PCMCIA.

Podobnie, nie ma sposobu, aby bezpośrednio podać adresy IO, które mają byc używane przez karty PCMCIA. Plik /etc/pcmcia/config.opts pozwala na podanie obszaru portów dostępnego dla wszystkich sterowników PCMCIA, albo wyłączyć obszary, które powodują konflikty.

Po zmodyfikowaniu pliku /etc/pcmcia/config.opts możesz zrestartować cardmgr poleceniem "kill -HUP".

Przerwanie używane do monitorowania statusu zmian karty jest wybierane przez moduł sterownika niskiego poziomu (i82365 lub tcic) przed zinterpretowaniem pliku /etc/pcmcia/config przez cardmgr, więc plik ten nie ma wpływu na wybór tego właśnie przerwania. Aby ustawić to przerwanie użyj opcji cs_irq= podczas ładowania sterownika gniazd, przez ustawienie zmiennej PCIC_OPTS w pliku /etc/rc.d/rc.pcmcia.

Wszystkie sterowniki kart klientów mają parametr irq_list do podawania, które przerwania mogą próbować one zaalokować. Te opcje powinny być ustawione w pliku /etc/pcmcia/config. Np.:

device "serial_cs"
  module "serial_cs" opts "irq_list=8,12"
  ...

wymusiłoby użycie tylko przerwań IRQ 8 i 12. Nie zależnie od usatwień irq_list, Card Services nigdy nie zaalokuje przerwania, które jest już używane przez inne urządzenie albo przerwania, które jest wyłączone w pliku konfiguracyjnym.

4.2 Jak zrobić dwie różne konfiguracje urządzeń do domu i pracy ?

Jest to całkiem proste używając schematów PCMCIA.
Użyj dwóch schematów konfiguracyjnych o nazwie "dom" i "praca". Oto przykład skryptu network.opts z konkretnymi ustawieniami dla różnych schematów:

   case "$ADDRESS" in
   praca,*,*,*)
       # definicje dla kart sieciowych w pracy
       ...
       ;;
   dom,*,*,*|default,*,*,*)
       # definicje dla kart sieciowych w domu
       ...
       ;;
   esac

Pierwszą częścią adresu urządzenia PCMCIA jest zawsze schemat konfiguracyjny. W tym przykładzie, drugi przypadek w "case" wybierze oba schematy: domowy i domyślny. Więc jeśli schemat nie jest ustawiony, domyślnym będzie schemat domowy.

Teraz, aby wybrać pomiędzy tymi dwoma ustawieniami uruchom albo:

   cardctl scheme dom

albo

   cardctl scheme praca

Polecenie cardctl wyłącza wszystkie twoje karty i inicjuje je ponownie. Polecenie to może być bezpiecznie używane, nie zależnie od tego czy system PCMCIA jest załadowany czy nie, ale polecenie to może się nie powieść jeśli używasz innych urządzeń PCMCIA w tym samym czasie (nawet jeśli ich konfiguracje nie różnią się wyraźnie od ustawień schematów).

Aby zobaczyć bieżące ustawienia schematu PCMCIA uruchom:

   cardctl scheme

4.3 Startowanie z urządzenia PCMCIA.

Posiadanie głównego systemu plików na urządzeniu PCMCIA jest trochę kłopotliwe, bo system PCMCIA na Linux-a nie został przystosowany do włączenia do jądra. Główne składniki, ładowalne moduły i uruchamiany w trybie użytkownika demon cardmgr, zależą od już działającego systemu. Możliwość startu przy pomocy "initrd" pozwala obejść ten problem pozwalając Linux-owi wystartować używając tymczasowego ramdysku jako minimalnego obrazu katalogu głównego, załadować sterowniki i potem ponownie zamontować inny system plików jako katalog główny. Tymczasowy katalog główny może skonfigurować urządzenia PCMCIA i potem zamontować urządzenie PCMCIA jako katalog główny.

Niektóre dystrybucje Linux-a pozwalają na instalację na urządzeniu podłączonym do kontrolera SCSI PCMCIA, jako niezamierzony skutek uboczny możliwości instalacji z CD-ROM-ów podłączonych do SCSI PCMCIA. Aczkolwiej w tej chwili żadne narzędzie instalacyjne dla Linux-a nie pozwala na konfigurację odpowiedniego "initrd" do startu z głównym systemem plików na PCMCIA. Dlatego też konfiguracja takiego systemu wymaga użycia drugiego Linux-a, aby stworzyć obraz "initrd". Jeśli nie masz dostępu do drugiego Linux-a, to inną możliwością jest tymczasowe zainstalowanie minimalnego Linux-a na napędzie nie będącym urządzeniem PCMCIA, stworzenie obrazu initrd i zainstalowanie na PCMCIA.

W Bootdisk-HOWTO znajdują się ogólne informacje jak zrobić dyskietki startowe, ale nic konkretnego na temat initrd. Główny dokument opisujący initrd zawarty jest w ostatnich źródłach jądra Linux-a w katalogu linux/Documentation/initrd.txt. Zanim zaczniesz powinieneś to przeczytać. Pomocna jest też znajomość lilo. Użycie initrd wymaga także włączonych opcji CONFIG_BLK_DEV_RAM i CONFIG_BLK_DEV_INITRD w jądrze.

Skrypt-pomocnik pcinitrd.

Skrypt pcinitrd tworzy podstawowy obraz initrd do startowania z głównej partycji na PCMCIA. W obrazie tym zawarte są: minimalna struktura katalogów, potrzebne pliki urządzeń, kilka programów, biblioteki dzielone i zbiór sterowników-modułów PCMCIA. Podczas uruchamiania pcinitrd podajesz sterowniki-moduły, które mają być zawarte w obrazie. Główne składniki PCMCIA, pcmcia_core i ds są dołączane automatycznie.

Na przykład powiedzmy, że twój laptop używa kontrolera PCMCIA kompatybilnego z i82365 i chcesz startować Linux-a z głównym systemem plików na dysku twardym przyłączonym do kontrolera Adpatec SlimSCSI. Możesz stworzyć odpowiedni obraz przy pomocy;

pcinitrd -v initrd pcmcia/i82365.o pcmcia/aha152x_cs.o

Aby ustawić sobie start initrd wedle swojego uznania, możesz zamontować obraz używając urządzenia "loopback" poleceniem:

mount -o loop -t ext2 initrd /mnt

i potem zmodyfikuj skrypt linuxrc. Pliki konfiguracyjne PCMCIA zostaną zainstalowane w obrazie w katalogu /etc i także mogą być ustawione wedle własnego uznania. Więcej informacji znajdziesz w podręczniku 'man pcinitrd'.

Tworzenie dyskietki startowej z initrd.

Po stworzeniu obrazu skryptem pcinitrd, możesz stworzyć dyskietkę startową kopiując jądro, skompresowany obraz initrd i kilka pomocniczych programów dla lilo na czystą dyskietkę. W następującym przykładzie zakładamy, że główny system plików znajduje się na /dev/sda1:

mke2fs /dev/fd0
mount /dev/fd0 /mnt
mkdir /mnt/etc /mnt/boot /mnt/dev
cp -a /dev/fd0 /dev/sda1 /mnt/dev
cp [jądro] /mnt/vmlinuz
gzip < [obraz-initrd] > /mnt/initrd

Stwórz /mnt/etc/lilo.conf z taką zawartością:

boot=/dev/fd0
compact
image=/vmlinuz
    label=linux
   initrd=/initrd
    read-only
    root=/dev/sda1

Na końcu uruchom:

lilo -r /mnt

Jeśli lilo uruchomione jest z parametrem -r, wszystkie akcje wykonywane są z podanym katalogiem jako główny system plików. Powodem utworzenia plików urządzeń w /mnt/dev było to, że lilo nie będzie w stanie użyć plików w /dev kiedy będzie uruchomione z alternatywnym katalogiem głównym.

Instalacja obrazu initrd na napędach bez Linux-a.

Jednym z popularnych zastosowań initrd są systemy gdzie wewnętrzny dysk twardy jest dedykowany dla innego systemu operacyjnego. Jądro Linux-a i obraz initrd mogą zostać umieszczone na partycji bez Linux-a a lilo lub LOADLIN mogą zostać skonfigurowane, aby ładowały Linux-a z tych obrazów.

Zakłądając, że twoje jądro jest skonfigurowane na odpowiednie urządzenie z głównym systemem plików i masz stworzony obraz initrd na innym Linux-ie, najprostszym sposobem aby zacząć, to wystartowanie Linux-a używając LOADLIN-a w ten sposób:

LOADLIN <kernel> initrd=<initrd-image>

Jak już możesz wystartować Linux-a na swojej maszynie, możesz wtedy zainstalować lilo aby umożliwić startowanie Linux-a bezpośrednio.
Na przykład powiedzmy, że /dev/hda1 jest partycją bez Linux-a i /mnt można użyć jako katalog do montowania. najpierw utwórz podkatalog na partycji docelowej dla plików Linux-a:

mount /dev/hda1 /mnt
mkdir /mnt/linux
cp [obraz-jądra] /mnt/linux/vmlinuz
cp [obraz-initrd] /mnt/linux/initrd

W tym przykładzie, powiedzmy, że /dev/sda1 jest partycją na której ma się znaleźć główny system plików, dysk twardy SCSI zamontowany przez kontroler SCSI PCMCIA. Aby zainstalować lilo, stwórz plik lilo.conf z taką zawartością:

boot=/dev/hda
map=/mnt/linux/map
compact
image=/mnt/linux/vmlinuz
        label=linux
        root=/dev/sda1
        initrd=/mnt/linux/initrd
        read-only
other=/dev/hda1
        table=/dev/hda
        label=windows

Linia boot= informuje, żeby zainstalować program ładujący system do Master Boot Record podanego urządzenia. Linia root= identyfikuje konkretny główny system plików, który ma zostać użyty po załadowaniu obrazu initrd, parametr ten może być niepotrzebny jeśli jądro jest już skonfigurowane w ten sposób. Sekcja other= używana jest do opisania innego systemu operacyjnego zainstalowanego na /dev/hda1.

Aby zainstalować lilo w tym przypadku użyj:

lilo -C lilo.conf

Zauważ, że w tym przypadku plik lilo.conf używa scieżek absolutnych, które zawierają /mnt. Zrobiłem tak w przykładzie ponieważ docelowy system plików może nie umieć tworzyć urządzeń Linux-a dla parametrów boot= i root=.

5. Jak radzić sobie z nieobsługiwanymi kartami.

5.1 Konfiguracja nieobsługiwanych kart.

Zakładając, że twoja karta jest obsługiwana przez istniejący sterownik, wszystko co trzeba zrobić, to dodać pozycję do /etc/pcmcia/config, która poinformuje cardmgr jak zidentyfikować kartę i który(e) sterownik(i) dołączyć do tej karty. Więcej informacji na temat formatu pliku konfiguracyjnego na stronie podręcznika "man" na temat pcmcia. Jeśli włożysz nieznaną kartę, to cardmgr z reguły zapisze trochę informacji identyfikacyjnych w logu systemowym, który może zostać użyty do konfiguracji.

Oto przykład raportu cardmgr w /usr/adm/messages na temat nieznanej karty:

   cardmgr[460]: unsupported card in socket 1
   cardmgr[460]: version info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA
   MODEM"

Odpowiadająca pozycja konfiguracyjna w /etc/pcmcia/config wyglądałoby tak:

   card "Megahertz XJ2288 V.34 Fax Modem"
     version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
     bind "serial_cs"

Możesz użyć "*", aby oznaczyć łańcuchy, które nie muszą się dokładnie zgadzać, jak np. numery wersji. Kiedy robisz nową pozycję konfiguracyjną, zwróć uwagę na to, żeby dokładnie skopiować łańcuchy, zachowując wszelkie duże i małe litery oraz przerwy (spacje). Upewnij się także, że pozycja konfiguracyjna ma taką samą ilość łańcuchów jak to stwierdzono w logach.

Po tym jak zmodyfikujesz /etc/pcmcia/config, możesz poinformować cardmgr, aby przeładował plik konfiguracyjny:

   kill -HUP `cat /var/run/cardmgr.pid`

Jeśli uda ci się ustawić jakąś pozycję konfiguracyjną dla nowej karty, przyślij mi kopię proszę, tak żebym mógł ją dołączyć do standardowego pliku konfiguracyjnego.

5.2 Jak mam dodać obsługę dla karty kompatybilnej z NE2000 ?

Najpierw sprawdź, czy karta nie została już rozpoznana przez cardmgr. Niektóre karty nie wymienione w SUPPORTED.CARDS są wersjami OEM kart obsługiwanych. Jeśli znajdziesz taka kartę, daj mi znać, żebym mógł ją dodać do listy.

Jeśli twoja karta nie została rozpoznana, postępuj zgodnie z instrukcjami w sekcji 3.6, aby stworzyć pozycję konfiguracyjną dla twojej karty oraz powiąż swoją kartę ze sterownikiem pcnet_cs. Zrestartuj cardmgr, aby użyć nowego zaktualizowanego pliku konfiguracyjnego.

Jeśli sterownik pcnet_cs twierdzi, że nie może określić adresu sprzętowego twojej karty ethernet-owej, to zmodyfikuj nowy plik konfiguracyjny, aby powiązać kartę ze sterownikiem karty pamięci - memory_cs. Zrestartuj cardmgr, aby użyć nowego zaktualizowanego pliku konfiguracyjnego. Będziesz musiał znać adres sprzętowy swojej karty sieciowej. Adres ten jest serią dwucyfrowych szesnastkowych liczb, często wydrukowanych na karcie. Jeśli go tam nie ma, możesz użyć sterownika DOS-owego, aby go wyświetlić. W każdym razie, jak go już znasz to uruchom:

   dd if=/dev/mem0a count=20 | od -Ax -t x1

i poszukaj linijki z twoim adresem. Tylko parzyste bajty są zdefiniowane, wiec zignoruj bajty nieparzyste w wyniku. Zapisz szesnastkowy offset pierwszego bajtu adresu. Teraz wyedytuj modules/pcnet_cs.c i znajdź strukturę hw_info. Będziesz musiał utworzyć nową pozycję dla twojej karty. Pierwsze pole jest offsetem pamięci. Następne trzy pola to pierwsze trzy bajty adresu sprzętowego. Ostatnie pole zawiera flagi dla konkretnych cech karty; na początek spróbuj ustawić tu 0.

Po edycji pcnet_cs.c, skompiluj i zainstaluj nowy moduł. Zmodyfikuj jeszcze raz /etc/pcmcia/config i zmień powiązania karty z memory_cs na pcnet_cs. Postępuj zgodnie z instrukacjami dla przeładowywania pliku konfiguracyjnego i wszystko powinno być ustawione. Przyślij mi proszę kopie twoich nowych pozycji konfiguracyjnych i hw_info.

Jeśli nie możesz znaleźć adresu sprzętowego swojej karty w formie szesnastkowej, ostateczną metodą może okazać się jawne podanie adresu w czasie inicjacji modułu pcnet_cs. Popraw plik /etc/pcmcia/config dodając opcję hw_addr=:

   module "pcnet_cs" opts "hw_addr=0x00,0x80,0xc8,0x01,0x02,0x03"

Oczywiście zamiast podanego adresu podaj adres swojej karty w odpowiednim miejscu.

5.3 Interfejs PCMCIA do dyskietek.

Pakiet ten nie obsługuje jeszcze interfejsów używanych przez Compaq Aero i kilka innych laptop-ów. Kruczkiem w obsłudze dyskietek w Aero jest to, że Aero wydaje się używać ustawianego kontrolera PCMCIA, aby obsługiwać DMA dla dyskietek. Nie wiedząc jak to jest dokładnie robione, nie ma sposobu, aby zaimplementować to w Linux-ie.

Jeśli kontroler dyskietek jest obecny podczas startowania Aero, BIOS Aero skonfiguruje kartę i Linux zidentyfikuje ją jako normalną stację dyskietek. Kiedy załadowane są sterowniki Linux-owe PCMCIA, zauważą, że karta jest już skonfigurowana i skojarzona ze sterownikiem Linux-owym i zostawią to gniazdo w spokoju. Tak więc napęd może być używany jeśli jest obecny podczas startu, ale nie może być wymieniany podczas pracy (hot swapping).

5.4 Co jest z obsługą kart Xircom ?

Dzięki pracy Wernera Kocha w aktualnej wersji pakietu PCMCIA zawarty jest sterownik do kart ethernetowej i ethernet/modem firmy Xircom. Specjalnie dla dyskusji na temat rozwoju sterownika Xircom ustawiłem forum HyperNews pod adresem hyper.stanford.edu/HyperNews/get/pcmcia/xircom.html.

Przez długi czas karty Xircom nie były obsługiwane ponieważ Xircom miał taką zasadę, żeby nie ujawniać technicznych informacji o swoich kartach. Jednak trochę zmienili zasady i teraz rozprowadzają informacje o sterowniku.

6. Wskazówki do śledzenia (debugging) i informacje do programowania.

6.1 Jak mogę wysłać pomocny list o błędzie ?

Najlepszym sposobem na zgłaszanie błędów jest użycie listy komunikatowej na HyperNews-ach na stronie dotyczącej PCMCIA na Linux-ie. W ten sposób inni także mogą śledzić bieżące problemy (i poprawki czy obejścia jeśli są dostępne).

Oto rzeczy, które powinny być zawarte w każdym liście na temat błędu:

Przed wysłaniem listu o błędzie, upewnij się proszę, że używasz najnowszej wersji sterowników do PCMCIA. Szczerze powiem, że czytanie o czymś, co już naprawiłem nie jest najbardziej konstruktywnym sposobem na spędzanie czasu.

Jeśli twój problem związany jest także z nagłym przerwaniem działania jądra, podczas którego wyświetlane są zawartości rejestrów, to zawartość ta jest przydatna tylko wtedy jeśli możesz wskazać adres EIP. Jeśli jest on w głównym jądrze, sprawdź ten adres w System.map, aby zidentyfikować funkcję, która była w tym momencie wykonywana. Jeśli przerwa nastąpiła podczas działania jakiegoś modułu ładowalnego, jest to trochę trudniejsze do prześledzenia. W bieżącej wersji narzędzi do modułów program ksyms -m wyświetli adres podstawowy każdego modułu. Weź moduł, który zawiera podane EIP, i odejmij jego adres podstawowy od EIP, aby otrzymać w ten sposób offset w module. Uruchom wtedy gdb z tym modułem jako parametr i sprawdź otrzymany offset poleceniem list. Zadziała to tylko wtedy kiedy dany moduł był skompilowany z opcją -g, czyli z informacjami dla debugger-a.

Jeśli nie masz dostępu do WWW, informacje o błędach można wysyłać do mnie na adres dhinds@hyper.stanford.edu. Chociaż wolę, aby informacje takie były wysyłane na mojej stronie WWW, tak żeby inni także mogli je widzieć.

6.2 Informacje na temat niskopoziomowego śledzenia PCMCIA.

Moduły PCMCIA zawierają dużo warunkowo skompilowanego kodu śledzenia. Większość tego kodu jest pod kontrolą definicji preprocesora PCMCIA_DEBUG. Jeśli jest to niezdefiniowane, to kod do śledzenia nie zostanie wkompilowany. Jeśli jest utawione na 0, kod ten jest wkompilowany, ale nieaktywny. Im większe poziomy tym więcej informacji. Każdy moduł stworzony ze zdefiniowanym symbolem PCMCIA_DEBUG będzie miał parametr typu Integer, pc_debug, który kontroluje ilość pojawiających się informacji. Może to być ustawiane wtedy, kiedy moduł jest ładowany, tak więc wyjście może być kontrolowane, na zasadzie "dla każdego modułu" bez potrzeby przekompilowywania.

Jest kilka narzędzi do śledzenia w podkatalogu debug_tools/ w dystrybucji PCMCIA. Narzędzia dump_tcic i dump_i365 generują kompletny zrzut rejestrów kontrolera PCMCIA i dekodują dużo informacji z rejestrów. Są najbardziej pożyteczne wtedy, gdy masz dostęp do schematu danych konkretnego układu scalonego kontrolera. Narzędzie dump_tuples wyświetla CIS-y (Card Information Structure) danej karty i dekoduje niektóre z najważniejszych bitów. A narzędzie dump_cisreg wyświetla rejestry lokalnej konfiguracji karty.

Sterownik memory_cs do karty pamięci jest także czasami przydatny do śledzenia. Może on zostać powiązany z każdą kartą PCMCIA i nie wpływa to negatywnie na inne sterowniki. Może on zostać użyty do bezpośredniego dostępu do pamięci atrybutowej karty albo zwykłej pamięci.

6.3 Jak mam napisać sterownik Card Services dla nowej karty ?

Najlepszą dokumentacją dla interfejsu PCMCIA dla Linux-a jest "The Linux PCMCIA Programmer's Guide". Najnowsza wersja jest zawsze dostępna z hyper.stanford.edu albo na WWW - hyper.stanford.edu/HyperNews/get/pcmcia/home.html.

Dla urządzeń, które są względnie podobne do normalnych urządzeń kart ISA, będziesz mógł przypuszczalnie użyć fragmentów sterowników Linux-a, które już istnieją. W niektórych przypadkach, największym problem będzie takie przerobienie już istniejącego sterownika, aby mógł on sobie poradzić z wkładaniem i wyjmowaniem danej karty. W bieżącej wersji, sterownik do karty pamięci jest jedynym sterownikiem, który nie zależy od żadnej części innego sterownika, który wykonywałby za niego brudną robotę.

Napisałem szkielet sterownika z dużą ilością komentarzy, które wyjaśniają jak sterownik się komunikuje z Card Sevices; znajdziesz ten szkielet w dystrybucji źródłowej PCMCIA w podkatalogu modules/skeleton.c.

6.4 Wskazówki dla autorów sterowników klientów PCMCIA.

Zdecydowałem, że nie jest rozsądne dla mnie, abym rozprowadzał wszystkie sterowniki klientów PCMCIA jako część pakietu PCMCIA. Każdy nowy sterownik czyni główny pakiet trudniejszym do utrzymania i, co można było przewidzieć, dołączenie sterownika przenosi trochę pracy opiekuna z autora na mnie. W zamian za to, zdecyduję osobno dla każdego przypadku (case by case) czy włączyć czy nie sterowniki pisane przez osoby trzecie, w zależności od żądań użytkowników jak i możliwości utrzymywania. Sugeruję, żeby autorzy sterowników, które nie dostały się do głównego pakietu, zaadoptowali następujący schemat przy przygotowywaniu ich sterowników do dystrybucji.

Pliki sterownika powinny być ułożone w takiej samej strukturze katalogów jak w głównej dystrybucji, tak, żeby można było rozpakować sterownik ten w głównym katalogu źródeł głównej dystrybucji. Sterownik powinien posiadać pliki źródłowe (w ./modules/), stronę do podręcznika systemowego (w ./man/) i pliki konfiguracyjne (w ./etc/). Katalog główny powinien zawierać także plik README.

W katalogu głównym powinien się także znajdować makefile, ustawiony w taki sposób, że "make -f ... all" i "make -f ... install" skompiluje sterownik i zainstaluje wszystkie potrzebne pliki. Jeśli plik ten posiada rozszerzenie .mk, to zostanie on automatycznie wykonany przez główny pliku Makefile dla celów all i install.
Oto przykład jak taki plik mógłby być skonstruowany.

# Przykładowy Makefile dla sterowników pisanych przez osoby trzecie
FILES = sample_cs.mk README.sample_cs \
        modules/sample_cs.c modules/sample_cs.h \
        etc/sample etc/sample.opts man/sample_cs.4
all:
        $(MAKE) -C modules MODULES=sample_cs.o
install:
        $(MAKE) -C modules install-modules MODULES=sample_cs.o
        $(MAKE) -C etc install-clients CLIENTS=sample
        $(MAKE) -C man install-man4 MAN4=sample_cs.4
dist:
        tar czvf sample_cs.tar.gz $(FILES)

Plik ten używa celów install zdefiniowanych w pakiecie PCMCIA 2.9.10 i późniejszych. Zawiera on także cel "dist" dla wygody autora sterownika. Przypuszczalnie będziesz chciał dodać numer wersji do ostatecznego pakietu (np. sample_cs-1.5.tar.gz). Pełna dystrybucja mogłaby wyglądać tak:

sample_cs.mk
README.sample_cs
modules/sample_cs.c
modules/sample_cs.h
etc/sample
etc/sample.opts
man/sample_cs.4

Z takim układem katalogów, po rozpakowaniu sterownik staje się częścią głównej dystrybucji. Może korzystać z plików nagłówkowych PCMCIA, tak jak i z możliwości sprawdzania konfiguracji systemu użytkownika i automatycznego sprawdzania zależności tak samo jak "normalny" sterownik klienta.

Będę akceptował sterowniki przygotowane zgodnie z tą specyfikacją i umieszczał je w katalogu /pub/pcmcia/contrib na moim serwerze FTP - hyper.stanford.edu. Plik README w tym katalogu będzie opisywał jak rozpakować sterownik pisany przez trzecią osobę.

Interfejs sterownika PCMCIA nie zmienił się wiele przez ten czas i prawie zawsze zachowywał wsteczną kompatybilność. Sterownik klienta nie będzie musiał być aktualizowany dla pobocznych wersji w pakiecie głównym PCMCIA. Spróbuję powiadamiać autorów sterowników o zmianach, które wymagają uaktualnienia ich sterowników.

6.5 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl A możesz tu znaleźć dość dużo może nie błędów, ale konstrukcji, które nie są podobne do języka polskiego. Ale to wszystko dlatego, że jest trochę ciężko przetłumaczyć zdanko z angielskiego jeśli jest obok siebie 4 czy czasami nawet 6 rzeczowników ;) Jeśli zauważysz taki stwór i wpadniesz na lepsze określenie, napisz. Jeśli będzie to w miarę sensowne, to napewno tego nie zignoruję.

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to odwołania do polskich serwerów ftp. doc-linux-pl-2002.06.14.orig/html/PPP-HOWTO.pl.html0100664000175000017500000037232506770264140020214 0ustar covencoven Linux PPP HOWTO

Linux PPP HOWTO

Robert Hart, hartr@hedland.edu.au
v2.2, 25 sierpnia 1996
Wersja polska:Piotr Pogorzelski piotr.pogorzelski@ippt.gov.pl
w1.0, luty 1997


Prezentujemy w jaki sposób podłączyć komputer PC z Linuxem do serwera PPP, w jaki sposób za pomocą PPP połączyć ze sobą dwie sieci oraz jedną z metod sworzenia z twojego Linuxa serwera PPP.

Prawa autorskie

Prawa autorskie należą do autora dokumentu. Udziela się pozwolenia na dystrybycję tego dokumnetu w formie elektronicznej, na płytkach CD, pod warunkiem, że zostanie zachowana oryginalna forma dokumentu. Udziela się również pozwolenia na na wydrukowanie niniejszego dokumentu do użytku prywatnego.

Prawa autorskie do tłumaczenia (c)1997 piotr.pogorzelski@ippt.gov.pl.

Zabrania się publikowania fragmentów lub całości tego dokumnetu bez zgody autora, za wyjątkiem przypadków opisanych powyżej.

Dystrybucja

W miarę powstawania nowych wersji niniejszy dokument będzie wysyłany do pl.comp.os.linux.odpowiedzi. W postaci HTML można go zawsze zobaczyć pod adresem http://www.jtz.org.pl/Html/PPP-HOWTO.pl.html

W formie bardziej nadającej się do druku, można go znaleźć tutaj: ftp://www.jtz.org.pl/HOWTO/.

Najnowsza wersja tego dokumentu w wersji angielskiej dostępna jest pod adresem http://sunsite.unc.edu/pub/Linux/docs/HOWTO/PPP-HOWTO. Lub w róznych innych formatach (SGML, ASCII, postscript, DVI) ftp://sunsite.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/other-formats.

Podziękowania

W przygotowaniu tego dokumentu pomagało mi wiele osób. Specjalne podziękowania dla Ala Longyeara, za pomoc w zrozumieniu samego PPP (jeśli znajdziecie jakieś błędy, to są to moje błędy, nie jego), Gregowi Hankinsowi (opiekunowi Linux Howto) i Danielowi Berinsonowi za pomoc przy linuxdoc-sgml kiedy mialem z nim kłopoty(3dbu przed terminem publikacji), oraz Debi Trackett (MaximumAccess.com) za wiele pomocnych sugestii na temat stylu, zawartości, porządku i prostoty i jasności objaśnień.

I na koniec dziękuję wielu ludziom, którzy kontaktując się ze mną pocztą elektroniczną przesyłali swoje uwagi. Jak w przypadku wszystkich autorów, naszą jedyną wystarczającą zapłatą jest satysfakcja, że udało się nam pomóc wielu ludziom. Pisząc ten dokument spłacam część długu, jaki ja - iwszyscy użytkownicy Linuxa- zaciągnąłem wobec ludzi, którzy napisali i opiekują się systemem, który wybrałem.

1. Wprowadzenie

PPP (Point to Point Protocol) jest mechanizmem umożliwijącym tworzenie i utrzymowanie połączeń w standardzie IP (Internet Protocol) i innych przez linie szeregowe - bezpośrednio między komputerami za pomocą kabla bezmodemowego, zestawione polązcenie sesji telnet, połączenie między dwoma komputerami zestawione za pomocą modemów i linii telefonicznych. Za pomoca PPP możesz połączyć Linuxa z serwerem PPP i mieć dostęp d ozasobów sieci, do których ma dostęp sam serwer (no prawie wszystkich), tak jakby twój komputer był bezpośrednio przyłączony do sieci.

Możesz również ze swojego Linuxa zrobić serwer WWW, tak aby inni użytkownicy mogli dzwonić do twojego komputera i korzystać z zasobów twojego komputera i sieci do której jest przyłączony.

Ponieważ PPP jest protokołem typu każdy-z-każdym, dlatego możesz wykorzystać dwa komputery PC z Linuxem do połączenia ze sobą dwóch sieci (lun np. sieci lokalnej do internetu).

Jednż z zasadniczych różnic pomiędzy PPP i siecią Ethernet jest przepustowość. Standardowa sieć Ethernet pracuje z maksymalną teoretyczną przepustowością 10 Mbs (milionów bitów na sekunde), podczas gdy modemy pracują z prędkościami do 33.6 kbps (tsiecy bitów na sekunde). Również w zależności od rodzaju połączenia PPP mogą zaistnieć ograniczenia w wykorzystaniu pewnych usłuch lub programów użytkowych.

1.1 Klienci i serwery

PPP jest protokołem typu każdy-z-każdym; nie ma (technicznej) różnicy między komputerme który nawiązuje połączenie i komputerem które na nie odpowiada. Jednak wygodnie jest myśleć o tym jako o systemie klient i serwer.

Kiedy dzwonisz aby bawiazć połączenie jesteś klientem. Komputer z którym chcesz się połączyć jest serwerem.

Kiesdy konfigurujesz Linuxa, aby mogł odpowiadać na przychodzace połązcenia, wtedy konfigurujesz serwer.

Każdy kompuer PC z Linuxem, może być zarówno klientem i serwerem - nawet równocześnie, jeśli masz tylko więcej niż jeden port szeregowy (i modem, jesli to jest konieczne). Tak jak stwierdziliśmy wcześniej, tak naprawdę nie ma różnicy pomiędzy klientem i serwerem, przynajmniej tak długo, jak dotyczy to samego PPP od momentu zestawienia połączenia.

W tym dokumencie komputery które inicjują połączenie ("dzwonią do") nazwyamy KLIENTAMI. Komputery, ktróre odbierają połączenie, sprawdzają toższamość dzwoniącego (za pomoca haseł lub innych mechanizmów) nazwyamy SERWERAMI.

Ludzi najbardziej interesuje korzystanie z PPP jako klient w celu nawiazaniu połączenia z serwerem i połączeniu ich komputera lub całej sieci lokalnej z Internetem.

Procedura opisana w tym dokumencie pozwoli ci na zestawienie połązcenia z Inernetem a nawet zautomatyzowanie całej tej procedyry.

Pdamy również kilka wskazówek w jaki sposób skonfigurować Linuxa jako serwer PPP i jak połączyć ze sobą dwie sieci (z pełnym routingiem) , co jest często nazywane zestawianiem połączenia sieci WAN - Wide Area Network.

1.2 Różnice pomiędzy dydtrybucjami Linuxa

Istnieje wiele różnych dystrybucji Linuxa, i każda posiada własne sposoby na wykonywanie pewnych standardowych zadań.

W szczególności istnieją dwa różne sposoby jakich używa Linux (i Unix) do uruchomienia systemu, sonfigurowania interfejsów itp.

Mówimy o stylu stylu BSD inicjowania systemu i stylu systemu V. Możesz często spotkać zażarte dyskusja nad wyższoscią jednego systemu nad drugim. Jeśli cię to bawi możesz się przyłączyć.

Prawdopodobnie najbardziej rozpowszechnionymi dystrybucjami są:

Styl BSD polega na przetrzymywaniu plików inicjalizujących system w katlogu /etc/..., a mianowicie:


        /etc/rc
        /etc/rc.local
        /etc/rc.serial

Pliki inicjalizacjne w wersji Systemu V są przecowywane w licznych podkatalogach katalogu /etc/rc.d/... :


drwxr-xr-x   2 root     root         1024 Jul  6 15:12 init.d
-rwxr-xr-x   1 root     root         1776 Feb  9 05:01 rc
-rwxr-xr-x   1 root     root          820 Jan  2  1996 rc.local
-rwxr-xr-x   1 root     root         2567 Jul  5 20:30 rc.sysinit
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc0.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc1.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc2.d
drwxr-xr-x   2 root     root         1024 Jul 18 18:07 rc3.d
drwxr-xr-x   2 root     root         1024 May 27  1995 rc4.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc5.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc6.d

Jeśli chcesz wiedzieć, w którym z tych plików jest inicjowana twoja karta sieciowa i tablice routingu, musisz poszukać w tych plikach odpowiednichj poleceń, które to wykonują.

Niektóre dystrybucje (RedHat i Caldera) posiadają progeam pod X służący do konfiguracji systemu PPP. W tym dokumencie nie opisujemy tych specyficznych narzędzi. Jeśli masz z nimi kłopot skontaktuja się bezpośrednio z dystrybutorami.

2. Numery IP

Każde urządzenie przyłączające komputer do Internetu musi posiadać własny, niepowtarzalny numer IP. Jest on przydzielany w każdym kraju centralnie przez odpowiednie instytucje.

Jeśli przyłączasz do Internetu sieć lokalną (LAN) musisz korzystać z numerów IP z własnej puli adresów IP (dla każdego komputera, urządzenia w sieci lokalnej). Nie możesz brać adresów z powietrza i korzystać z nich d ołączeia się z inną siecia, gdyż w najlepszym wypadku to nie bedzie działać, a w najgorszym moze zkłócić pracę innych systemów, których numery pokrywają się z wybranymi przez ciebie.

Pamiętajm że numery IP podawane w tym dokumencie (poza kilkoma wyjątkami) należą do puli numerów dla sieni nie przyłączonych do internetu, zarezerwowane dla sieci, które nigdy nie bedą do niego przyłączone.

Klasy numrów IP, zarezerwowwane dla sieci, które nigdy nie będą przyłaczone fo Interntu wyglądają następująco:

Jeśli posiadasz siec, krora nie otrzymała adresów od instytucji do tego celu przeznaczonej, powinieneś używac numerów z jendej z przedstawionej pozyżej grup.

Te numery nigdy nie powinny być używane w internecie. Mogą być z powodzeniem używane w lokalnych sieciach Ethernet na komputerach, które są przyłaczone do internetu. JEst to możliwe ponieważ numery IP są przydzielane urządzeniom a nie komputerom. Tak więc podczas gdy karta sieciowa twojego komputera moze być skonfigurawana do uzywania numeru 10.0.0.1, możesz być jednocześnie przyłączony do internetu za pomocą protokołu PPP i interfejs PPP na twoim komputerze otrzyma zupelnie inny (zarejestrowany do użycia w Internecie) numer IP. Twoj serwer będzie posiadał połączenie z internetem, lecz inne twoje komputery w sieci lokalnej nie będą.

Jednak wykorzaystując możliwości linuxa o nazwie masqueradeing i narzędzie ipfwadm, możesz dostępnić pozostałym komputerom dostęp do internetu (z pewnymi ograniczeniami).

Wiecej inforamcji na ten temat można znaleźć w dokumencie IP Masquerade mini HOWTO pod adresem Linux IP Masquerade mini HOWTO

Wiekszośc użytkwoników, która jest zinteresowana podłączeniem przez PPP swojego komputera do internetu przy wykorzystaniu w tym celu serwera dostarczanego przez swojego dostawcę Internetu nie musi starać sieo przydział własnego numeru IP.

Jeśli pragniesz przyłączyć do internetu małą podsieć, dostawcy Internetu (ISP) mogą zapewnić dedykowaną podsieć kilku numerów z puli własnych numerów IP.

W przypadku większości użytkowników przyłączających za pomocą PPP własny komputer do Internetu, większość dostawców stosuje dynamicznie przydzielany numer IP. To znaczy, zę w fazie połączenia, serwer PPP przekaże twojemu komputerowi, który numer IP masz przydzielony na czas zestawionego połączenia.

W przypadku dynamicznego rpzydzielania adresów IP, za każdym razem kiedy się łączysz możem otrzymać inny numer IP. MA t oznaczenie dla programów pracujących na twoim komputerze w trybie serwera, np. sendmail , ftpd, httpd i inne. Ogranizcenia wynikłe z dysnamicznego przydziału adresów (i spsoby ich obejściatam gdzie jest to możliwe) są omówione dalej.

3. Cel tego dokumentu

3.1 Konfiguracja klienta PPP

Krok po kroku opisujemy w jaki sposób nawiązać połączenie między modemami i zestawić połączenie IP za pomocaprotokołu PPP. Zakładamy, że jądro ma wkompilowaną obsługę PPP (lub jest skompilowany odpowiedni moduł) oraz został zainstalwoane niezbędne oprogramowanie. (Nie podajemy w jaki sposób skonfigurować/skompilować jądro, dowiesz się na ten temat z innych dokumentów).

Korzystanie z DIPa - NIE, korzystaj z CHATa

Choć DIP (standardowe narzędzei do zestawiania połączenia w trybie SLIP) może być również wykorzystane do zestawienia połączenia PPP, jednak skrypty dio tego wymagane są znacznie bardziej skomplikowane. Dlatego nie opisujemy jak korzystać z DIPa do tworzenia połaczenia PPP.

Zamiast tego opisujemy standardowe oprogramowanie wykorzystywane w tym celu, praę programów chat/pppd.

3.2 Konfiguracja serwera PPP

Pdajemy wskazówki w jaki sposób skonfigurować serwer PPP (pozwalający innym na nawiązywanie połaczeń modemowych i zestawianie połączeń PPP).

Pamiętaj, że zrobić z Linuxa serwer PPP można na mnóstwo sposobów. W tym dokumenci autor przedstawia w jaki sposób autor skonfigurował kilkanaście takich serwerów, każdy po 16 modemów.

Ta metoda została sprawdzona w działaniu. Jednak nie musi być najlepszą. Jeśli któs ma sprytniejszą,lepsza konfigurację swerwera PPP, nie wahajcie się napisać na ten temat do autora niniejszego dokumentu.

3.3 Połąćzenie dwóch sieci LAN, lub sieci LAN z Internetem

Przedstawiamy podstawowe informacje na temat łączenia dwóch sieci LAN, lub sieci LAN z Internetem przy wykorzystaniu oritikołu PPP.

3.4 W chwili obecnej ten dokument nie obejmuje...

4. Wersje opisywanych programów

Ten dokument zakłada, zę korzystasz zjadra Linuxa w wersji 1.2.x i PPP w wersji 2.1.2 lub jądra w wersji 1.3.x/2.0.x u PPP 2.2

Możliwe jest korzystanie PPP w wersji 2.2.0 z jądrem 1.2.13 lecz wymagane są odpwiednie łaty. Ten dokument NIE omawia tego przypadku.

Powinieneś również wiedizeć, że nie można używać PPP 2.1.2 z jądrem 2.0.X.

Pamiętajm ze ten dokument nie porusza problemów związanych z wykorzysatniem ładowalnych modułów jądra w wersji 2.0.x. Przeczytaj kerleld mini-HOWTO i dokumetacje kernel/module w dystrybucji jąder 2.0.x ( w katalogu /usr/src/linux/Documentation.

Ponieważ ten dokument jest rpzeznaczony dla początkujących użytkowników, mocno zalecamy korzystanie z wersji linuxa i towarzyszącego oprogramowania, których wspołraca jest uważana za stabilną.

5. Inne pożyteczne/ważne dokumenty

Radzimy zapoznać się z :-

Najlepszym punktem początkowym dokumentacji Linuxa po polsku jest Strona macierzysta polskich tłumaczeń dokumentacji Linuxa

Choć do zestawienia połączenia PPP wystarczą informacje zawarte w tym dokumencie bez konieczności czytania innych, lecz radzimy to zrobić , przez co uzyskasz lepsze zrozumienie całego zagadnienia. Bedziesz w stanie samemu wykrywać problemy (lub choćby zadawać mądrzejsze pytania na pl.comp.os.linux).

Wspomniane dokumenty (jak zresztą cała masa innych, włączając odpowiednie RFC) dostarczają dodatkowej, szczegółowej informacji od tej jaką można było przedstawić w niniejszym dokumencie.

Jeśli masz zamiar podłączyć do Internetu sieć lokalną LAN, powinieneś posiadać podstawowe informacje na temat sieci TCP/IP. Prócz wspomnianych wcześniej dokuentów na pewno bardzo wartościowymi będą dla ciebie pozycje wydawnictwa O'Reilly: "TCP/IP Network Administration" i "Building Internet Firewalls".

5.1 Pożyteczne Listy dyskusyjne na temat Linuxa

Istnieje wiele list dyskusjnych na temat Linuxa, jako forum wymiany informacji między użytkownikami o różnym poziomie znajomości tematu. Zachęcamy do korzystania z tych, które cię interesują i w miarę możliwości dostarczania tam własnego wkładu.

Część z list jest przeznaczowna dla bardzo zaawansowanych użytkowników lub specjalistów w danym temacie. Choć nikt nie będzie narzekał jeśli się na taką listę zapiszesz, lecz nie będziesz wysyłał żadnych pytań, lecz jeśli zadasz początkujące pytania na takich listach, możesz spodzieać się goroących odpowiedzi. Nie jest tak dlatego, ze guru nienawidzą początkujących, lecz dlatego, że przeznaczeniem tych list jest obsługa konkretnych problemów ma odpowiednio wysokim poziomie trudności.

Zachęcamy do dołączenia się do list, które nie mają szcególnyc hwywmagań c odo uczestników, lecz pamiętaj aby twoje wiadomości były ściśle związane z tematem listy.

Dobrym punktem startowym na temat list i grup dyskusyjnych o Linuxe jest strona Linux Mailing List Directory

6. Konfigurajca jądra

Abyś mogł korzystać z PPP jądro Linuxa musi być skompilowane w taki sposób aby wspomagać jego obsługę. Jeśli jeszcze nie posiadasz, zaopatrz się w kod źródłowy jądra - jeśli jest zainstalowany znajdziesz go w katalogu /usr/src/linux.

Sprawdź zawartość tego katalogu, wiele dystrybucji podczas instalacji wgrywają również pliki źródłowe jądra.

Źródła jądra możne również zfobyć przez Internet z sunsite.unc.edu lub jego licznych kopii.

6.1 Instalacja plików źródłowych jądra Linuxa

Krótka instrukcja jak zdobyć i zainstalować źródła jądra Linuxa. Pełną inforamcję na ten temat zawiera dokument Linux Kernel HOWTO.

Aby zainstalować i skompilować jądro Linuxa musisz być zalogowany jako administrator(root).

  1. zmień katalog roboczy na /usr/src
    cd /usr/src
  2. Sprawdź /usr/src/linux czy są jużtam zainstalowane pliki źródłowe jądra.
  3. Jeśli nie masz źródeł, pobierz je z ftp://sunsite.icm.edu.pl/pub/Linux/helsinki/v2.0
    Jeśli szukasz starszych wersji jądra np. 1.2.x zobacz ftp://sunsite.icm.edu.pl/pub/Linux/helsinki/v1.2
  4. Wybierz odpowiednią wersję - zwykle najnowszą. Pobierz ją i umieść w katalogu /usr/src.
    Uwaga: plik 'tar' jest plikiem-archiwum - zwykle skompresowanym, tak jak pliki archiwa zawierające źródła jądra Linuxa - zawierającym wiele innyc plików i katalogów. TO jest taki Linuxowy odpowiednik DOSowego archiwum zip.
  5. Jeśli masz już zainstalowane pliki źródłowe, lecz chcesz odświeżyć wersję jądra musisz usunąc stare pliki. Wydaj polecenie:
    rm -rf /usr/src/linux
  6. teraz rozkompresuj i zainstaluj źródłą wydając polecenie: tar xzf linux-2.0.29.tar.gz
  7. NAstępnie, cd /usr/src/linux , przezcytaj plik README. Zawiera doskonałe wyjaśnienie w jaki sposób skonfogurować i skompilować nowe jądro. Przeczytaj ten plik (mozesz go wyderukować, gdyż papierowa kopia może być przydatna podczas konfiguracji i kompilacji jądra).

6.2 Rozpoznanie sprzędtu

MUSISZ wiedzieć jakiego rodzaju karty posiadasz. W niektórych przypadkach (karty dźwiękowe) musisz również znać różne inne ustawienia (np przerwanie IRQ, adrew We/Wy i podobne).

6.3 Kompilacja jądra - Wersja 1.2.13

Aby rozpocząć proces konfiguracji, wykonaj polecenia opisane w pliku README. Rozpozcynasz proces konfiguracji jądra poleceniem

make config

Aby korzystać z PPP, musisz skonfigurować jądro tak, aby została dołączniea obsługa PPP w jądrze (PPP wymaga zarówno obsługi protokołu przez jądro, jak i samego programu pppd).


  PPP (point-to-point) support (CONFIG_PPP) [n] y

Odpowiedz na następne pyania zgodnie z posiadanycm sprzętem i pożądanyc hcech systemu. Następnie wykonaj kolejne polecenie przedstawione w pliku README.

Jadro 1.2.13 tworzy jedynie 4 urządzenia PPP. W przypadku korzystania z kart wieloportowych musisz poprawić pliki źródłowe jądra. (Zobacz README.linux, część dystrybucji palietu PPP-2.1.2.

Uwaga: dialog komfiguracyjny jądra w wersji 1.2.13 nie pozwala na cofanie się do pytań na które już zostałą podana odpowiedź. Więc jeśli pomylisz się musisz przerwać program (naciskając Ctrl-C i powtórzenie polecenia make config.

6.4 Kompilacja jądra - wersje 1.3.x i 2.0.x

W przypadku jądra 2.0.x możesz wykorzystać przedstawioną wcześńiej procedurę. W celu przwidłoweg ozinstalowania plików źródłowych wykonuj instrukcje z pliku README. Następnie rozpocznij konfigurację wydając polecenie:

make config

Możesz spróbować innego sposobu, a mianiwicie

make menuconfig

Ta metoda przywołuje program konfiguracyjny oparty o listę prostych w obsłudze menu, z osiągalną pomocą on-line.

Jesnieje również bardzo rekomentowana wersja pod X

make xconfig

Obsługa PPP może być wkompilowana bezpośrednio w jądro lub jako oddzielny moduł. Jeśli będziesz korzystął z PPP tylko od czasu do czasu, wtedy polecamy skompilowanie PPP jako oddzielnego modułu. Jeśli korzystasz zporgramu 'kerneld', modul PPP zostanie załadowany automatycznie w momencie gdy jądro zostanie poproszone o obsługę protokołu PPP. W ten sposób oszczedzasz cenna pamięc operacyjną w systuacji kiedy nie korzystasz z PPP, ponieważ kod jadra musis w całości znajdować sie w pamięci operacujnej komputera, lecz moduły łwadowane przez kerneld saautomatyczne usuwane z pamięci jęsli nikt z nich nie korzysta.

W tym celu musisz włączyć obsłygę ładowania modułow:


        Enable loadable module support (CONFIG_MODULES) [Y/n/?] y

Aby dodać obsługę PPP odpowiedz na następujące pytanie:


        PPP (point-to-point) support (CONFIG_PPP) [M/n/y/?]  

Jeśli chcesz aby to był ładowalny moduł odpowiedz M. Jeśli bma być wkompilowany bezpośrednio w jądro odpowiedz Y.

W przeciwieństwie do jądra w wersji 1.2.13 jądro 2.0.x tworzy urżadzenie PPP w locie wtedy, kiedy są potrzebne i nie trzeba zmieniać źródęł jądra aby dodać więcej niź 4 kanały PPP.

6.5 Uwaga na temat PPP-2.2 i /proc/net/dev

Jesli korzystasz z PPP-2.2 stwierdzisz, zę efektem ubocznym tworzenia kanałów PPP w locie jest fakt, że nie są one wykazywane w pliku /proc/net zanim nie zostanie utworzone przez uruchomiony program pppd.


[hartr@archenland hartr]$ cat /proc/net/dev
Inter-|   Receive                  |  Transmit
 face |packets errs drop fifo frame|packets errs drop fifo colls carrier
    lo:  92792    0    0    0    0    92792    0    0    0     0    0
  eth0: 621737   13   13    0   23   501621    0    0    0  1309    0

Jeśli już jakieś połączenia zostaną nawiązane, na serwerze PPP będziesz mógł obejżeć listę urządzeń podobną do tej poniżej:


[root@kepler contrib]# cat /proc/net/dev
Inter-|   Receive                  |  Transmit
 face |packets errs drop fifo frame|packets errs drop fifo colls carrier
    lo: 428021    0    0    0    0   428021    0    0    0     0    0
  eth0:4788257  648  648  319  650  1423836    0    0    0  4623    5
  ppp0:   2103    3    3    0    0     2017    0    0    0     0    0
  ppp1:  10008    0    0    0    0     8782    0    0    0     0    0
  ppp2:    305    0    0    0    0      297    0    0    0     0    0
  ppp3:   6720    7    7    0    0     7498    0    0    0     0    0
  ppp4: 118231  725  725    0    0   117791    0    0    0     0    0
  ppp5:  38915    5    5    0    0    28309    0    0    0     0    0

6.6 Ogólne ueagi na temat konfiguracji jądra

Jeśli konfigurujesz swojego Linuxa jako serwer PPP, musisz wkompilować w jądro obsługę forwardowania pakietów (IP forwarding). Jest to również konieczne, jeśli twoj Linux ma łączyć ze sobą dwie sieci LAN lub przyłączyć lokalną sieć LAN do Internetu.

Jeśli przyłączasz sieć LAN do Internetu (lub łączysz ze sobą dwie sieci LAN) powinieneś poświęcić dużo uwagi bezpieczeństwu. Dlatego obowiązkowe wydaje się w takim przypadku wkompilowanie obsługi firewalla (IP Firewalling).

Będziesz tego potrzebował również w przypadku, gdy chcesz skorzystać z IP masquerade w celu podłączenia do internetu sieci lokalnej pracującej na zastrzeżonych klasach numerów IP.

Jak już zainstalujesz nowe jądro i zrestartujesz komputer aby było aktywne, wtedy możesz rozpocząć konfigurowanie i testy połączenia PPP.

7. Zbieranie niezbędnych inforamcji na temat usługi PPP

Zanim będziesz w stanie ustanowić połączenie PPP z serwerem, musisz zdobyć następujące informacje (od administratora opiekującego sie serwerem):

Zapisz dokładnie wszystkie te informacje - będziesz z nich korzystać.

7.1 Testowanie modemu dla połączeń wychodzących

Powinieneś się upewnić że twój modem jest poprawnie podłączony i skonfigurowany, i wiesz do którego portu szeregowego jest podłączony.

Pamiętaj:-

Korzystając z programu komunikacyjnego (mp minicom), wybierz numer telefoniczny serwera PPP do którego chcesz się przyłączyć za pomocą PPP.

(Uwaga: W tym stadium nie staramy się nawiązać połączenia PPP - jednynie chcemy się upewnić, że posiadamy poprawny numer telefonu, chcemy sorawdzić, że nasz modem działa poprawnie i chcemy dowiedzieć się jakie dokladnie komunikaty wysyła w czasie logowania się serwer PPP).

Podzcas czałego tego procesu powinieneś prowadzić bardzo dokładne notatki wszelkich zachęt i komunikatów wysyłanych przez serwer lub najlepiej włączyć rejestrownianie wszystkiego do pliku (log file). Szczególnie nas interesuje cała procedura logowania się do systemu, w jaki sposób serwer zachęca cię do wprowadzenia identyfikatora, a potem hasła i jakie komunikaty wyświetla podczas uruchamiania PPP.

Warto zadzwonić co najmniej dwukrionie. Niektóre serwery zmieniają sposób zachęcania do wprowadzania informacji (np. z czasem). Dwie najważniejsze zachęty jakie potrzebujesz znać to:-

Jeśli w celu uruchomieania na serwerze PPP musisz wydać jakieś polecenie, musisz również zanotować jak wygląda zacheta serwera do wywdawani poleceń, po tym jak już się zalogujesz do serwera.

Jeśli serwer automatycznie uruchamia PPP zaraz po tym jak się zalogujesz, zobaczysz na ekranie serie smieci - to serwer PPP przesyła inforamcje niezbędne do konfiguracji i zestawienia połączenia PPP.

To powinno wyglądać mniej więcej tak:-

~y}#.!}!}!} }8}!}$}%U}"}&} } } } }%}& ...}'}"}(}"} .~~y}

(pojawia się raz za razem)

W tym momencie możesz przerwać połączenuie (zwykle wpisz szybko +++, a gdy twój modem odpowie OK wydaj polecenie ATHO).

W niektórych systemach PPP musi zostać uruchomione przez użytkownika. Zwykle jest tak dlatego, ze serwer został skonfigurowany w ten sposób aby umożliwić połączenia PPP i zwykłe sesje terminalowe przy wykorzystaniu tego samego konta. W takim przypadku, jak już sięzalogujesz na serwerze musisz wydać to polecenie. Ponownie zobaczysz smiecie pojawiające się na ekranie - to serwer PPP próbuje nawiązać połączenie z twoim komputerem. Możesz odłozyć słuwawkę.

Jeśli nie zobaczysz na ekranie wspomnianych wcześniej śmieci wszystko wskazuje (choć nie na pewno), że popełniłeś jakiś błąd.

Może się zdarzyć taki przypadek, ze trafiłeś na serwer pracujący w trybie pasywnym - to znaczy taki, który nie wysyła komunikatów zanim klient (twój komputer) nie rozpocznie zestawiania połączenia PPP.

Jednakże większość serwerów jest w tym wzgłędzie aktywna i powinieneś jednak zobaczyć te śmiecie.

Jeśli nie możesz uruchomićmodemu, przeczytaj dokumentację, która mu towarzyszy, strony podręcznika dotyczące oprogramowania komunikacyjnego z którego korzystasz (man minicom) i Serial-JTZ!. Kiedy się z tym uporasz powtórz całą procedurę.

8. Uwaga na temat portów szeregowych i ich przepustowwości

Jeśli korzystasz z szybkich (zewnętrznych) modemów (14400 Bodów i więcej) twój port szeregowy musi umożliwiać przesyłanie inforamcji z odpowiednią prędkością jaka może wygenerować modem, sczególnie gdy modem posiada kompresję sprzętową.

To wymaga korzystania z portów z nowoczesnymi ukłądami UART (Universal Asynchronous Receiver Transmitter) takimi jak 16550A. Jeśli korzystasz ze starego komputera (lub starą kartę portów szeregowych) całkiem możliwe, że korzystasz z układów UART 8250, które mogą powodować klopoty przy korzystaniu z modemów o dużej prędkości.

Linux potrafi powiedzieć jakiego rodzaju układu używasz. Skorzystaj z polecenia

setserial -a /dev/ttySx

Jeśli nie posiadasz układów 16550A, kup nową kartę portów szeregowych zawierającą te uklady (cena poniżęj $ 50).

Uwaga: pierwsze wersje układu 16550 miały bląd. Został on szybko rozpoznany i powstala nowa poprawiona wersja tego układu 16550A. Cześć błędnych układów dostała się jednak do obiegu. Prawdopodobieństwo, że natrafisz na takie układy jest niezwykle małe, lecz sprawdzając układy szukaj oznaczenia 16550A, sczególnie w starszych kartach.

9. Konfiguracja modemu

Muszi poprawnie skonfigurować modem, przeczytaj jego dokumentację. Większość modemów jes dotarczana z ustawieniami fabrycznymi, które włączają opcje wymagane dla PPP. Minimalna konfiguracja powinna określać:-

Inne ustawienia (standardowe polecenia modemów Hayes), którym powinieneś się przyjżeć to:

(ON - właczone; OFF - wyłączone)

Warto również się dowiedzieć w jaki sposób pracuje połączenie między modemem i twoim komputerem. Wiekszość nowoczesnych modemów pozwala na pracę z USTALONĄ predkością, pozwalając jednocześnie na zmianę prędkości połączenia przez linię telefoniczną na największą jaką potrafi przenieść sama linia i obsłużyć zdalny modem.

Jest to znany jako tryb pracy z dzieloną prędkościa. Jeśli twoj modem potrafi to obsłużyć, zblokuj interfejs szeregowy modemu na najwiekszą prędkość jaką porafi obsłużyć (zwykle 115200 bps lub 38400 bps dla modemów 14400 bodów).

Skorzystać z oprogramowania komunikacyjnego (np minicom) aby dowiedzieć się więcej na temat konfiguracji modemu i skonfiguruj go do pracy z PPP. Wiekszość modemów pokazuje aktualne ustawienia po wydaniu polecenia AT&V, lecz sprawdź to w dokumentacji modemu. Jeśli przypadkiem nabałaganisz w ustawieniach, możesz powrócić do ustawień fabrycznych wydając polecenie AT&F. W większości modemów jakie spotkałem ustawienia fabryczne były wystarczajace do poprawnej współpracy z PPP, lecz powinieneś to sprawdzić.

Zachować konfigurację modemu w pamięci modemu (zwukle poleceniem AT&W - sprawdz w dokuentacji).

Zachowanie prawidłowej konfiguracji w modemie, włączenie modemu, lub jego zerowanie ją uaktywnia. Dzięki temu w znaczny sposób uraszcza się skrypty niezbędne do zestawienia połączenia PPP.

9.1 Uwagi na temat sterowania przepływem danyc przez porty szeregowe

Kiedy informacje podróżują przez linie szeregowe, może się zdarzyć, że dane przybywają szybciej, niż komputer jest w stanie je obsłużyć (komputer może być zajęty czymś innym - pamiętaj Linux jest systemem wielozadaniowym i wieloużytkownikowym). Aby zapewnić, że informacja nie zostanie utracona konieczne jest odpowiednie sterowanie przepływem danych (dane nie miesczą się w buforze i są tracowne).

Istnieją dwie metody:-

Podczas, gdy ta ostatnia może być wystarczająca w przypadku termianli (danych tekstowych), połączenia PPP korzystają z wszystkich 8-miu bitów i moze się zdarzyć, że gdzieś w strumieniu danych znajdzie się znak odpowiadający sygnałowi Control Q lub Control S. Więc jeśli modem zostanie skonfigurowany do obsługi sysgnałów programowych, wszystko może gwałtownie przestać działać.

Dal PPP korzystającego z danych 8-mio bitowych sprzetowe sterowanie przepływaem danych jest absolutnie niezbędne.

10. Korzystanie z PPP, a uprawnienia administratora

Ponieważ PPP musi skonfigurować urządzenia sieciowe, zmodyfikować tabele routingu itp. musi wtedy posiadać uprawnienia administratora.

Jeśli połączenie PPP zestawia użytkownik inny niż root, wtedy program pppd musi mieć ustawiony bit setuid i należeć do aministratora (setuid root) :-

-r-sr-xr-x   1 root     root        95225 Jul 11 00:27 /usr/sbin/pppd

Jeśli /usr/sbin/pppd nie ma takich atrybutów, musisz jako administrator (root) wydać polecenie :-

chmod u+s /usr/sbin/pppd

Powuższe polecenie umozliwia uruchomienie programu pppd z uprawnieniami administratora nawet przez zwykłego użytkwonika. W ten sposób zwykły użytkownik może zainicjować połączenie PPP, a sam program będzie posiadał odpowiednie uprawnienia do skonfigurowania urządzeń sieciowych i modyfikacji tabeli routingu.

Programy z ustawionym bite, suid są potencjalnymi dziurami w systemie zabezpieczeń i powinieneś być niesłychanie ostrożny w ustawianiu biru suid dla programów, których właścicielem jest administrator (root). Cześć programów (włączając pppd) była napisana ze specjalnym uwzglednieniem minimalizowania niebezpieczeństwa wykoklego z wykonywania tego programu jako administrator, więc powinieneś tym razem czuć się bezoieczny (choć nie dajemy żadnych gwarancji).

W zależności od sposobu pracy twojego systemu - sczegołnie jeśli chesz umożliwić KAŻDEMU użytkownikowi twojego systemu inicjowanie połączeń PPP powinieneś zmienić atrybuty sktyptów do włączania/wyłączania PPP tak, aby te pliki mogły byc czytane i wykonywane przez wszystkich.

Jednakże jeśli NIE chcesz aby każdy mogł uruchomić PPP (np twoje dzieci posiadają konta na twoim komputerze i nie chesz aby podłaczały się do internetu bez twojego nadzoru) musisz utworzyć odzielna grupę PPP (zmień plik /etc/group) a następnie:-

Nawet jeśli tak postąpisz, zwykli użytkownicy NADAL nie będą w stanie zamknąć połączenia PPP!. Pamiętaj, że kązdy może wyłączyć modem.

Na moim domowym PC NIE ustawiam bitu suid dla pppd. Abyuruchomić połączenie muszę zalogować sie jako administrator - czyli znać hasło. W ten sposób kontroluję dostęp mojego syna do Internetu.

11. Ustawianie plików konfiguracyjnych PPP

Jeśli nawet chcesz aby PPP było dostępne dla wszystkich użytkowników, podczas wykonywania opisyuwanych poniżej modyfikacji plików i katalogów musisz pracować jako administrator.

PPP korzysta z kilku plików podczas zestawiania połączenia. Ich nazwy i położenie sąinne dla PPP w wersji 2.1.2 i 2.2.

W przypadku PPP 2.1.2 są to:-


/usr/sbin/pppd          # plik binarny
/usr/sbin/ppp-on        # skrypt do nawiązywania połaczenia
/usr/sbin/ppp-off       # skrypt kasujący połączenie
/etc/ppp/options        # plik z opcjami totyczacymi wszystkich połączeń
/etc/ppp/options.ttyXX  # opcje specyficzne dla połączeń przez ten port

For PPP 2.2 the files are:-


/usr/sbin/pppd                  # plik binarny
/etc/ppp/scripts/ppp-on         # skrypt do nawiązywania połaczenia
/etc/ppp/scripts/ppp-on-dialer  # skrypt do wybierania numeru serwera
/etc/ppp/scripts/ppp-off        # skrypt dla programu chat
/etc/ppp/options                # plik z opcjami totyczacymi wszystkich połączeń
/etc/ppp/options.ttyXX          # opcje specyficzne dla połączeń przez ten port

Jak widać w katalogu /etc powinieneś znaleźć podkatalog ppp:-

drwxrwxr-x   2 root     root         1024 Oct  9 11:01 ppp

Jeśli nie istnieje musisz go utworzyć.

Jeśli ten katalog już istnieje, powinien zawierać plik wzrocowy o nazwie options.tpl. Poniżej przedstawiamy zawartość tego pliku.

Powinieneś go wydrukować ponieważ zawiera wyjaśnienie wszystkich opcji PPP (dobrze się z nimi zapoznać w połączeniu ze stronami podręcznika dotyczącymi programu pppd (man pppd)). Choć mogłbyć użyć tego pliku jako podstawy d utworzenia pliku /etc/ppp/options, prawdopodobnie lepiej jest go utworzyć od początku, tak aby nie zawierał tych wszyskich komentarzy - będzie znacznie łatwiejszy w utrzymaniu.

Jeśli posiadasz wiele linii modemowych (przypadek serwera PPP), powinieneś utworzyć plik /etc/ppp/options z opcjami wspólnymi dla wszystkich portów i jeśli jest to konieczne utworzyc indywidualne pliki dla każdej linii oddzielnie, które będą zawierały indywidualne ustawienia wymagane dla konkretnego portu.

Są to pliki o nazwach options.ttyx1<, options.ttyx2 itd. (x X oznacza odpowiednią literę oznaczjąca port szeregowe twojego komputera).

Jednak w przypadku pojedynczego połączenia PPP całkowicie wystarczy jeden plil /etc/ppp/options. Ostatecznie mogłbyś podać wszystkie te parametry w wierszu poleceń programu pppd.

Łatwiej jest opiekować się konfiguracją, która korzysta z plików /etc/ppp/options.ttySx. Jeśli korzystasz z PPP aby łączyć się z różnymi serwerami, możesz utworzyć dla każdego serwera wlasny plik konfiguracyjny i przekazywać jego nazwę jako argument polecenia uruchamiającego połączenie PPP.

11.1 Plik options.tpl

Częsć dystrybucji PPP wydaje się być pozbawiona pliku options.tpl, dlatego tutaj podajemy jego pełną treść. Zamiast zmieniać ten plik, lepiej stworzyć /etc/ppp/options od nowa. Rownież nie wprowadzaj zmian bezpośrednio do tego pliku. Zrob wpierw jego kopię i ją modyfikuj. W razie klopotów możesz wtedy rozpocząć wszystko na nowo.


# /etc/ppp/options -*- sh -*- ogólne opcje pppd
# created 13-Jul-1995 jmk
# autodate: 01-Aug-1995
# autotime: 19:45

# Do sestawienia połączenia między modemami wykorzystaj program lub
# skrypt. Bedzie tozwyklę program "chat", który wybierze numer
# zaloguje się i uruchomi ppp po drugiej stronie
#connect "echo Musisz zainstalować program do nawiązania połączenia modemowego"

# Wykonaj ten program, lub skrypt po tym, Jak pppd zerwie połączenie.
# ten skrypt może w przypadku braku sprzętowego sterowania modemem
# wydać modemowi aby odłożył słuchawkę.
#disconnect "chat -- \d+++\d\c OK ath0 OK"

# async character map -- 32-bit hex; każdy bit oznacza znak, który
# musi być poprzedzony znakiem escape (escaped char), tak aby pppd mogł
# go odebrać. 00000001 oznacza '\x01', a 0x80000000 oznacza '\x1f'.
#asyncmap 0

# Wymaga potwierdzenia toższamoaći przed zezwoleniem na
# wysyłanie/odbiór pakietów sieciowych

#auth

# Do sterowania przepływem inforamcji przez port szeregowy skorzystaj
# ze sprzętowego sterowania modemem (tzn. RTS/CTS).
#crtscts

# Do sterowania przepływem inforamcji przez port szeregowy skorzystaj
# ze programowego sterowania modemem (tzn/ XON/XOFF).
#xonxoff

# Po zakończonych sukcesem negocjacjach IPCP dodaj to tabeli routingu
# domyślną trasę, używając jako bramę komputer po drugiej stronie
# połączenia ppp. Trasa ta jest usuwana z tabeli routingu w momencie
# zerwania połączenia PPP.
#defaultroute

# Określa, które znaki muszą być przesyłąne specjalnie (escaped) -
# niezależnie czy druga strona (za pomocą opcji asyncmap) zażądała aby
# były w taki sposób przesyłane, czy nie. Znaki są podane jako ciągi
# liczb w notacji szesnastkowej, rozdzielone przecinkami. Zauważ, że
# możesz tu  wpisać niemal każdy znak, w przeciwieństwie do parametru
# asyncmap, który jako swoje argumenty przyjmuje jedynie znaki sterujące
# (control characters). Znaki, które nie mogą być przesyłane w sposób
# specjalny to znaki, których kody zawierają się w przedziale 0x20-0x3f
# i znak 0x5e. 
#escape 11,13,ff

# Nie korzystaj z sygnałów strowania modememe
#local

# Określa, że pppd w celu zapewnienia wyłącznści w dostępie do portów
# szeregowych powinno korzystać z plików blokady w stylu UUCP.
#lock

# Krzystaj z sysgnałów sterownai modemem. Na Ultrixie, ta opcja
# oznacza spzętowe sterownie przepływem danych, tak jak to włącza opcja
# crtscts.
# (Ta pcja nie jest w pełni zaimplementowana)
#modem

# Nadaj zmienej MRU [Maximum Receive Unit - Największy blok
# otrzymywany] wartość <n>. Pppd poprosi drugą stronę o nie przysyłanie
# większych pakietów niż <n> bajtów. Minimalna wartość MRU wynosi
# 128. Wartością domyślną jest 1500. W przypadku wolnych łączy zaleca
# się wartosć 296 (40 bajtów na nagłówek TCP/IP i 256 bajtów danych)
#mru 542

# Ustawienie netmaski interfejsu sieciowego. 32-wu bitowa w notacji
# dajtowo-dziesiętnej (np. 255.255.255.0).
#netmask 255.255.255.0

# Wyłączenie opcji negocjowania adresu IP z serwerem. Jeśli ta opcja będzie
# włączona adres IP musi zostać podany jako parametr połączenia (w pliku 
# opcji lub w wierszu poleceń, lub przekazany przez serwer w czasie 
# negocjacji IPCP. 
#noipdefault

# Włącza pasywne zachowanie LCP. PPP spróbuje nawiązać połączenie,
# jeśli to się nie uda, zamiast zakończenia pracy (normalne zachowanie
# gdy ta opcja jest wyłączona) bedzie oczekiwał na poprawny pakiet LCP
# nadesłany przez drugi komputer.
#passive

# PPP nie będzie wysyłało żadnych pakietów LCP, w celu nawiązania
# połączenia. Będzie jedynie nasłuchiwało na nadejście takich pakietów
# z drugiej strony połączenia (zachowanie opcji "passive" w starszych
# wersjach pppd)
#silent

# Nie żądaj i nie pozawalaj na ustalenie jakichkolwiek opcji w czasie
# negocjacji LCP czy IPCP (wykorzystaj wartości domyślne).
#-all

# Wyłączenia kompresji negocjacji adresu/sterowania (wykorzystaj
# ustawienie domyślne, tzn pole adres/sterowanie wyłaczone).
#-ac

# Wyłącz negocjacje opcji asyncmap (skorzystaj z domyślnej wartości
# asyncmap, czyli przesyłaj w sposób specjalny jedynie znaki sterujące.
#-am

# Nie twórz procesu potomnego w tle ( w przeciwnym wypadku pppd
# zachowa się w ten sposób jesli podany port oznacza urządzenie szeregowe)
#-detach

# Wyłącz negocjację adresu IP (pppd musi otrzymac jako parametr adres
# IP komputera na drugim końcu połączenia - w wierszu poleceń lub
# pliku opcji)
#-ip

# Wyłącz negocjację numeru magicznego/specjalnego/charakterystycznego
# (magic number). W ten sposób pppd nie wykryje urządenia pętli zwrotnej.
#-mn

# Wyłącz negocjację parametru MRU [Maximal Receive unit]. Wykorzystaj
# wartośćdomyślną 1500.
#-mru

# Wyłącz negocjację pola protokołu (skorzystaj z opcji domyslnej:
# kompresja wyłączona).
#-pc

# Zażądaj aby druga strona przedstawiła się za pomocą protokołu PAP.
#+pap

# Nie zgadzaj się na przedstawianie się za pomocą PAP
#-pap

# Zażądaj aby druga strona przedstawiła się za pomocą protokłu CHAP
# [Cryptographic Handshake Authentication Protocol].
#+chap

# Nie zagadzaj się na przedstawienei się za pomocą CHAP.
#-chap

# Wyłącz negocjację kompresji nagłówków IP w styly Van
# Jacobsena. Skorzystaj z wartości domyślnej: brak kompresji.
#-vj

# Zwiększ posiom odpluskwiania (to camo co opcja -d). Pppd będzie
# rejestrowało zawartość wszystkich wysłanych i otrzymanych pakietów
# kontrolnych w formie nadającej się do interpretacji przez
# człowieka. Rejestrowanie dokonuje się za pomocą dzienników systemowych
# (syslog) na poziomie `debug' z wartościa `daemon'. Informacje te mogą
# być zapisywane w pliku. Przeczytaj o pliku konfiguracyjnym
# /etc/syslog.conf  (man syslog.conf). Jeśli pppd zostało skompilowane z
# włączeniem dodatkoweg oodpluskwiania, wiadomości będą rejestrowane z
# warością `local2' zamiast `daemon'.
#debug

# W celach przedstawiania się i weryfikacji tożsamości do nazwy
# komputera dodaj domenę <d>. Np. jeśli funkcja gethostbyname()
# przekazuje wartość `porshe', lecz pełna nazwa komputera jest
# `porsche.Quotron.COM' musisz skorzystać z tej opcji i podać domenę
# Quotron.COM. 
#domain <d>

# Włącz kod udpluskwiania na poziomie drajwera jądra. Argument n jest
# liczba składającą się z sumy poszczególnych elementów: 1 włączenie
# ogólnych komunikatów odpluskwiających, 2 - wyświetlanie zawartości
# przychodzących pakietów, 4 wyświetlanie zawartości pakietów wysyłanych.
#kdebug n

# Nadaj parametrowi MTU [Maximum Transmit Unit] warość<n>. Jeśli druga
# strona w czasie negocjacji nie zarząda mniejszej wartośćMTU, pppd
# poprosi aby kod jądra wywyłał przez interfejs ppp pakiety o wielkości
# nie przekraczającej n bajtów.  
#mtu <n>

# Do celów weryfikacji tożsamości przyjmij nazwę <n>.
#name <n>

# Do celów weryfikacji tożsamości w protokole PAP przyjmij nazwę
# uzytkownika równą <u>. 
#user <u>

# Wymuś wykorzystywanie do celów weryfikacji tożsamości przyjęcie
# nazwy komputera jako nazwy systemu próbującego nawiącać połączenie. 
#usehostname

# Do celów weryfikacji tożsamości przyjmij nazwę zdalnego systemu
# równą <n>.
#remotename <n>

# Dodaj pozycję do systemowej tabeli ARP [Address Resolution Protocol]
# z adresem IP systemu po drugiej stronie połączenia i twoim adresem
# Ethernetowym. 
#proxyarp

# Do celów weryfikacji tożsamości w protokole PAP skorzystaj z
# systemowej bazy haseł. 
#login

# Pppd będzie wysyłało do systemu po drugiej stronie ramki LCP
# echo-request (żądanie echa) co n sekund. Pod Linuxe, echo-request jest
# wysyłany wtedy, gdy z drugiej strony w ciągu ostanich n sekund nie
# nadszedł żaden pakiet. Zwykle druga sptrona powinna odpowiedzieć na
# echo-request wywłając echo-reply (odpowiedź na żądanie echa). Wraz z
# opcją lcp-echo-failure może być wykorzystana do wykrywania przerwania
# połączenia przez drugą stronę.
#lcp-echo-interval <n>

# Jeśli po n ramkach echo-request nie nadejdzie żadna rama echo-reply
# pppd potraktuje to jako zerwanie połączenia przez drugą stronę. Jeśli
# tak się stanie pppd przerwie połączenie. Korzystanie ztej opcji wymaga
# podania niezerowego parametru w opcji lcp-echo-interval. Zwykle
# korzysta się z tej opcji w celu wykrycia fizycznego przerwania
# połązenia (np odłożenie słuchawki przez modem) w systucajch, gdy nie
# stosuje się sprzętowych liniisterowania modemem.
#lcp-echo-failure <n>

# Przyjij przerwę między właczaniem negocjacji LCP równą <n> sekund
# (retransmission timeout). Domyślnie 3
#lcp-restart <n>

# Przyjmij maksymalną liczbę transmisjji polecenia przerwania żądania
# (terminate-request) w protokole LCP. Domyśłnie 3.
#lcp-max-terminate <n>

# Przyjmij maksymalną liczbę transmisjji polecenia konfiguracyjnego
# protokołu LCP równą <n>. Domyśłnie 10.
#lcp-max-configure <n>

# Ustaw maksymalną liczbę zwróconych w protokole LPC żądań
# configura-NAK, zanim rozpocznie się transmisja poleceń
# configure-Reject. Domyślnie 10.
#lcp-max-failure <n>

# Ustaw przerwę w protokole IPCP (retransmission timeout) równą <n>.
# Domyśłnie 3.
#ipcp-restart <n>

# Ustaw maksymalną liczbę transmisji polecenia terminate-request protokołu
# IPCP równą <n>. Domyślnie 3.
#ipcp-max-terminate <n>


# Ustaw maksymalną liczbę transmisji polecenia configure-request protokołu
# IPCP równą <n>. Domyślnie 10.
#ipcp-max-configure <n>

# Ustaw maksymalną lizcbę zwróconych  poleceń configure-NAK  protokołu
# IPCP zanim rozpocznie się wysyłanie poleceń configure-Reject równą
# <n>. Domyśłnie 10.
#ipcp-max-failure <n>

# Ustaw przerwę między uruchamianiem protokołu PAP (retransmission
# timeout) rowną <n> sekund. Domyśłnie 3.
#pap-restart <n>

# Ustaw maksymalną liczbę transmisji polecenia authenticate-request
# protokołu PAP równą <n>. Domyśłnie 10.

#pap-max-authreq <n>

# Ustaw przerwę między uruchamianiem protokołu CHAP (retransmission
# timeout) równą  <n> sekunt. Domyślnie 3.
#chap-restart <n>

# Ustaw liczbę wysłanych żądań rozpoczęcia protokołu CHAP równą <n>. 
# Domyśłnie 10.
#chap-max-challenge

# Pppd będzie próbowało nawiązać połączenie z drugą stroną co <n>
# sekund. 
#chap-interval <n>

# Pppd zakceptuje podany przez drugą stronę nasz lokalny adres IP,
# nawet jeśli został on podany również jako opcja dla programu pppd.
#ipcp-accept-local

# Pppd zakceptuje podany przez drugą stronę jej adres IP,
# nawet jeśli został on podany również jako opcja dla programu pppd.
#ipcp-accept-remote

11.2 Których opcji powinienem używać?

Jak zwykle: to zależy.

Przedstawiay dwie podstawowowe wersje pliku options, które dotyczą większości przypadków.

Jeśli nasza propozycja nie zadziała, PRZECZYTAJ PLIK WZORCOWY (/etc/ppp/options.tpl) i strony podręcznika programu pppd (man pppd) i porozmawiaj z administratorem/ludźmi zajmującymi się obsługą użytkowników serwera, z którym starasz się nawiązać połaczenie.

/etc/ppp/options (bez PAP/CHAP)

W przypadku połączeń, które nie wymagają weryfikacji PAP/CHAP powinien wystarczyć taki plik.


# /etc/ppp/options (bez PAP/CHAP)
#
# Zapobiegnij odłączaniu się od terminala przez program pppd.
-detach
# Jeśli korzystasz ze statycnych numerów IP, wpisz tutaj swój numer
0.0.0.0:
#
# Korzystaj z linii sterowania modemu
modem
# korzystaj z plików blokady w stylu uucp, zapewniając sobie wyłączny
# dostęp do urządzeń szeregowych
lock
# korzystaj ze sprzętorwego sterowana przepływem danych 
crtscts
# po nawiązaniu połaczenia dodaj do tabli routingu domyślną trasę dla
# biegnącą właśnie przez to połączenie
defaultroute
# Znaki specjalne mają być przesyłane normalnie
asyncmap 0
# maksymalny rozmiar pakietu wychodzącego 552 bajty
mtu 552
# maksymalny rozmiar pakietu przychodzącego 552 bajty
mru 552
#
#-------KONIEC /etc/ppp/options (bez PAP/CHAP)

/etc/ppp/options (korzystamy z PAP/CHAP)

Jeśli serwer wymaga jednak weryfikacji PAP lub CHAP powinieneś spróbować opcji pokazanyhc powyżej z dodatkowymi kilkoma wierszami jakie przedstawiamy poniżej


#
# zmus pppd do korzystania do przedstawiania się identyfikatorem
# użytkownika jakim posługujesz sie uswojego dostawcy
name <twój identyfikator u dostwcy>  # musisz zmieić ten wiersz
#
# Jeśli musisz korzystać z protokołów PAP lub CHAP, usuń znaki
# komentarza z kolejnych dwóch wierszy
#+chap
#+pap
#
# Jeśli korzystasz z ZAKODOWANYCH haseł w pliku /etc/ppp/pap-secrets
# to usuń znak komentarza z wiersza poniżej
#+papcrypt

12. Konfiguracja pliku /etc/resolv.conf

Podczas gdy my, Ludzie lubimy podawać adresu komputerów w postaci ich nazw, komputery korzystają z liczb. W sieci TCP/IP (czym jest Internet) nazwymay koputery ich nazwami, akażdy z komputerów żyje we własnej dquot;domeniedquot;. Np. moj komputer nazywa się archenland i należy do domeny hedland.edu.au. Czyli adres mojego komputera w postaci łatwej do posługiwania się przez człowieka jest archenland.hedland.edu.au. Inne komputery w Internecie rozpoznają go jednak przez przydzielony mu adres IP.

Tłumaczenie (resolving) nazwy komputera i domeny na numerki, które są niezbędne do nawiazania połączenia jest wykonywane przez komputery oferujące usługę o nazwie DNS (Domain Name Service).

Podczas zestawiania połączenia PPP musisz powiedzieć swojemu komputerowi skąd może pobierać informacje na temat numeru IP przydzielonego do nazwy komputera, tak abyś ty mógł używać nazw komputerów, lecz twój komputer był w stanie zamienić je na odpowiednie numery IP.

Jednym ze sposobów jest umieszcenie nazwy i numeru każdego komputra, którym będziesz sięchciał połączyć w pliku /etc/hosts ( w rzeczywistoście jest to niemożliwe przy połączeniach z Internetem), innym rozwiązaniem jest podawanie numerów komputerow zamiast ich nazw (możliwe jedynie w przypadku małych sieci)

Najlepiej w taki sposób skonfigurować Linuxa, aby sam wiedział skąd pobrać niezbędne informacje - automatycznie. Tej usługi dostarzca system DNS. Wszystkiego c opotrzebujesz jest umiesczenie w pliku /etc/resolv.conf numeru IP serera udostępniającego usługę DNS.

Ludzie opiekujacy się serwerem PPP powinni dostarczyć ci dwa numery IP serwerów DNS (tylko jeden jest niezbędny, lecz drugi jest przydatny w przypadku, gdy nastąpi awaria pierwszego)

Plik /etc/resolv.conf powinien wyglądać mniej wiećej tak:-


domain domena.twojego.dostawcy.internetu
nameserver 10.25.0.1
nameserver 10.25.1.2

Popraw ten plik (utwórz jeśli jest to konieczne) i wprowaź opdpowiednie inforamcje. Pownien mieć następujące atrybuty:-

-rw-r--r--   1 root     root           73 Feb 19 01:46 /etc/resolv.conf

Jeśli posiadasz już działający plik /etc/resolv.conf, ponieważ jesteś przyłączony do sieci LAN, po prostu dodaj numery IP serwera DNS.

13. Skekretny plik PAP/CHAP

Jeśli korzystasz z weryfikacja toższamośći pap lub chap, musisz również utworzyć odpowiedni plik sekretny:


/etc/ppp/pap-secrets
/etc/pp/chap-secrets

Podstawową cechą tych plików jest to, że mają uwiarygodniać toższamość komputera (systemu) a nie użytkownika.

"Tak? A jaka to róznica ?" słyszę jak zadajesz to pytanie.

Taka, że po zestawieniu połączenia PPP z serwerem KAŻDY użytkownik twojego komputera może korzystąc z tego połączenia - nie tylko ty. To właśnie dlatego możesz za pomocą PPP zestawić połączenie WAN łączące ze sobą dwie sieci LAN.

Twój dostawca poza podaniem ci identyfikatora użytkownika i hasła wymaganego do przyłązenia się do jego systemu prawdopodobnie nie będzie zainteresowany jakią nazwę nadałeś swojemu komputerowi, dlatego prawdopodobnie powienienś korzystać z identyfikatora użytkownika jaki masz u dostawcy jako nazwy swojego koputera [mówimy o PAP/CHAP].

Dokonuje sie tego za pomocą opcji name username programu pppd. Jeśli muszisz więc podawać swój identyfikator w systemie dostawcy dodaj do pliku /etc/ppp/options wiersz


name twoj_identyfikator_obowiązujący_u_dostawcy

Technicznie rzecz biorąc tak naprawdę powienieneś korzysztać z usertwoj_identyfikator_obowiązujący_u_dostawcy dla PAP, lecz pppd jest na tyle inteligentny aby zinterpretować name jako user jeśli tylko serwer zażąda użycia PAP. Zaletą korzystania z opcji name jest, to, że jest ona również poprawna dla CHAP.

Ponieważ PAP/CHAP służy so sprawdzania toższamości komputerów, potrzebujesz również podać nazwę zdalnego komputera. Ponieważ jednak większość korzysta tylkoz jednego dostawcy, może w pliku sekretnym w miejscu nazwy zdalnego komputera wstawić znak uniwersalny (*).

Wrto również pamiętać, że wielu dostawców korzysta z wielokrotnych farm modemowych podłączonych do różnych serwerów, dostępnych pod WSPÓLNYM numerem telefonicznym. Dlatego nie można być pewnym, do którego komputera zostaniemy przyłączeni.

13.1 Plik sekretny PAP

Plik /etc/ppp/pap-secrets wygląda mniej więcej tak


# Secrets for authentication using PAP
# client        server       secret     acceptable local IP addresses

ćżtery pola rodzielaone odstępami.

Pwiedzmy, że twój dostawca nadał ci nazwe fred i hasło flintstone. Wrtedy w pliku /etc/ppp/options.ttySx ustawił byś opcję name fred, a w pliku /etc/ppp/pap-secrets dopisał


# Hasła do weryfikacji tożsamości za pomocą protokołu PAP
# client        server  secret          dopuszczalny lokalny adres IP
fred            *       flintstone

To oznacza, że w przypadku połązcenia lokalnego komputera o nazwie frd (którą używa pppd choć to nie musis być prawdziwa nazwa tego komputera) z dowolnym serwerm PPP należy używać hasła flintstone.

Zauważ, że nie musimy podawać lokalnego adresu IP, cgyba że jesteśmy ZMUSZENI do korzystania zkonkretnego, STATYCZNEGO adresu IP.

Jeśli łączysz sie korzystając z PAP z kilkoma różnymi serwerami, powinieneś albo zaranżować to w taki spsób aby na każdym serwerze posiadać inny identyfikator username lub poznać nazwy zdalnych serwerów, z którymi się łączysz. W ten sposób będziesz mógł dodać do pliku pap-secrets kolejne wiersze definiujące hasło połączenia - pod warunkiem, że nadasz prawidłową wartość opci tt/name/ odpowiednią dla każdego serwera z którym nawiązujesz połączenie,

13.2 Sekretny plik CHAP

Aktualna wersja porgramu pppd wymaga korzystania z wzajemnych metod potwierdzania tożsamości - to znaczy musisz pozwolić aby twój komputer mogł zweryfikowac odległy serwer i aby odległy serwer mogł zweryfikować twój ompuer.

Jęsli twój komputer nazywa się fred a zdalny serwer nazywa się barney, to podpowiednie pliki /etc/ppp/options.ttySx na twoim komputerze powinny zawierać name fred remotename barney, a na zdalnym serwerze na odwrót name barney remote name fred.

Plik /etc/chap-secrets dla komputera fred wygląda tak


# Hasła do weryfiakcji tozsamości za pomocą protokołu CHAP
# client        server  secret            dopuszczalny lokalny adres IP
fred            barney  flintstone

a dla komputera barney, tak


# Hasła do weryfiakcji tozsamości za pomocą protokołu CHAP
# client        server  secret            dopuszczalny lokalny adres IP
barney          fred    flintstone

14. Reczne zestawianie połączeniea PPP

Teraz kiedy masz już utworzone pliki /etc/ppp/options i /etc/resolv.conf ( i jeśli jest to konieczne pliki /etc/ppp/pap|chap-secrets) możesz sprawdzić poprawność konfiguracji przez ręczne zestawienie połączenia PPP. (Kiedy będziemy potrafili zestawić połączenie PPP ręcznie, zautomatyzowanie całego procesu będzie bardzo proste).

W tym celu twój program komunikacyjny musi mieć możliwość zkończenia pracy BEZ zerowania modemu. Minicom to potrafi - ALT Q (lub w starszych wersjacj CTRL A Q).

Pamiętaj aby być zlogowanym jako root.

Uruchom program komuniikacyjny (np minicom), wybierz numer do serwera PPP i zaloguj się jak zwykle. Jeśli do uruchomienia PPP wymagane jest wydanie specjalnego polecenia zrób to. Zobaczysz teraz śmiecie o których pisaliśmy wcześniej.

Jeśli korzystasz z pap/chap, wtedy tuż po nawiązaniu połączenia ze zdalnym serwerem powinieneś od razy zobaczyć wspomniane śmiecie, bez potrzeby logowania się (choć w niektórych przypadkach może to być rozwiązane inaczej).

Teraz zakończ pracę programu komunikacyjnego, bez zerowania linii (przerywania połączenia modemowego) - jeśli używasz minicomu wciścnij ALT Q lub CTRL A Q. Nastepnie w wierszu zachęty (jako root) napisz

pppd -d -detach /dev/cuaX &

Opcja -d włącza odpluskwianie - rozpoczyna się rozmowa mająca na celu zestawienie połączenia PPP. Jest ona rejestrowana w dziennikach (log files) co jest przydatne w razie kłopotów.

Naturalnie powinieneś apisać cua0 lub cua1 itd. - prawdziwą nazwę portu do którego przyłaczony jest modem, nie cuaX!.

Diody twojego modemu powinny migotać podczas zestawiania połączenia PPP. Samo zestawienie połączenia trwa któtką chwilę.

W tym momencie możesz przyjżeć się interfejsowi ppp0 wydając polecenie

ifconfig

Poza inforamcjami o karcie Ethernetu (jelsi taką posiadasz) i urządzeniu o pętli zwrotnej powinieneś zobaczyć cos takiego :-


  ppp0     Link encap:Point-Point Protocol
           inet addr:10.144.153.104  P-t-P:10.144.153.51 Mask:255.255.255.0
           UP POINTOPOINT RUNNING  MTU:552  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0
           TX packets:0 errors:0 dropped:0 overruns:0

Gdzie

(naturalnie ifconfig nie przedstawi podanych przeze mnie numerów, lecz numery wykorzystywane przez serwer twojego dostawcy).

Uwaga: polecenie ifocnfig iformuje cię również o tym, że połączenie jest zestawione (UP) i dziala (RUNNING).

Jeśli otrzymasz taki komunikat


  ppp0     Link encap:Point-Point Protocol
           inet addr:0.0.0.0  P-t-P:0.0.0.0  Mask:0.0.0.0
           POINTOPOINT  MTU:1500  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0
           TX packets:0 errors:0 dropped:0 overruns:0

to znaczy, że połączenie PPP nie zostało poprawnie zestawione... przeczytaj rozdział o odpluskwianiu!

Pownieneś rownież móc zobaczyć tabelę routingu z wprowadzoną trasą do serwera PPP i dalej. W tym celu wydaj polecenie

route -n>

Powinieneś zobaczyć coś w tym stylu:-


Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
10.144.153.3    *               255.255.255.255 UH    1500   0        1 ppp0
127.0.0.0       *               255.0.0.0       U     3584   0       11 lo
10.0.0.0        *               255.0.0.0       U     1500   0       35 eth0
default         10.144.153.3    *               UG    1500   0        5 ppp0

Szczególnie ważne jest to, że do interfejsu ppp0 odnoszą się dwie różne pozycje.

Pierwsza oznacza trasę do KOMPUTERA (flaga H) i pozwala nam "widzieć" komputer, do którego się przyłączylśmy - lecz nie dalej.

Druga oznacza domyślną (default) trasę - to jest trasa jaką wędrują pakiety, które nie są przeznaczne dla naszej sieci lokalnej lub bezpośrednio dla samego serwera PPP. Serwer PPP jesr odpowiedzialny za przekazywanie naszych pakietów dalej do Internetu i przekazywanie nam pakietów przychodzących do nas z odległych adresów.

Jeśli twoja tabela routingu nie zawiera tych dwóch pozycji, to znaczy, że coś jest nie tak (patrz rozdział o odpluskwianiu).

Teraz przetestuj połączenie 'pingując' serwer (numer IP przekazany przez polecenie ifconfig) tzn.

ping 10.144.153.51

Pwienieneś otrzymać podobną odpowiedź.

PING 10.144.153.51 (10.144.153.51): 56 data bytes
64 bytes from 10.144.153.51: icmp_seq=0 ttl=255 time=328.3 ms
64 bytes from 10.144.153.51: icmp_seq=1 ttl=255 time=190.5 ms
64 bytes from 10.144.153.51: icmp_seq=2 ttl=255 time=187.5 ms
64 bytes from 10.144.153.51: icmp_seq=3 ttl=255 time=170.7 ms

Kolejne wiersze będą pojawiać się w nieskończoność, aż do momentu kiedy wciśniesz CTRL C, a wtedy otrzymasz dodatkowe informacje :-

--- 10.144.153.51 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 170.7/219.2/328.3 ms

Jak na razie wszystko w porządku.

Teraz spróbuj 'pingnąć' komputer podając jego nazwę (nie nazwę serwera PPP lecz zupelnie innego komputer, którego nazwę znasz i który jest w tej chwili włączony do interentu). Np.

ping sunsite.unc.edu

Tym razem najpier nastąpi krótka przerwa, kiedy Linux zamienia nazwę na odpowiadający jej numer korzystając z serwera DNS, którego numer wpisałeś do pliku /etc/resolv.conf - więc się nie martw (powinieneś wiedzieś migające świtełka swojego modemu). Krótko potem zobaczysz cos podobnego do

 PING sunsite.unc.edu (152.2.254.81): 56 data bytes
64 bytes from 152.2.254.81: icmp_seq=0 ttl=254 time=190.1 ms
64 bytes from 152.2.254.81: icmp_seq=1 ttl=254 time=180.6 ms
64 bytes from 152.2.254.81: icmp_seq=2 ttl=254 time=169.8 ms
64 bytes from 152.2.254.81: icmp_seq=3 ttl=254 time=170.6 ms
64 bytes from 152.2.254.81: icmp_seq=4 ttl=254 time=170.6 ms

Pwtórnie przerwij wciskając CTRL C, a zobaczysz statystyki

--- sunsite.unc.edu ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 169.8/176.3/190.1 ms

Jeśli nie otrzymałeś żadnej odpowiedzi, przeczytaj rozdział o odpluskwianiu.

Jeśli wszystko działało poprawnie, przerwij połączenie wydając polecenie

ppp-off

Po krtótkiej chwili modem powienien "odłożyć słuchawkę".

Jeśli to nie zadziała, albo wyłącz zasialanie modemu modem, lub uruchom swój program komunikacyjny i przerwij połączenie wciskając szybko +++, a gdy modem odpowie OK wydając polecenie ATH0.

Być może będziesz zmuszony usunąć również pliki blokady (lock files) utworzone przez program pppd


rm -f /var/lock/LCK..cua?

15. Zautomatyzowanie połączenia - tworzenie skryptów do nawiązywaniapołączenia

Skrypt o którym mowa automatyzuje procedurę logowania się i uruchamiania połączenia PPP, tak aby administrator lub członek grupy PPP do zestawienia połączenia musiał jedynie eydać polecenie ppp-on.

15.1 Skrypty w przypadku weryfikacji Identyfikatr//Hasło

Jeśli twój dostawca nie korzysta z PAP/CHAP, te skrypty są dla ciebie.

Jeśli pakiet PPP jest zainstalowany poprawnie powinieneś być w posiadaniu dwóch przykładowych plików. W przypadku PPP 2.1.2 będą to

/usr/sbin/ppp-on
/usr/sbin/ppp-off

a w przypadku PPP-2.2

/etc/ppp/scripts/ppp-off
/etc/ppp/scripts/ppp-on
/etc/ppp/scriptsppp-on-dialer

Jeśli korzystasz z PPP 2.1.2 mocno namawiam cię do usunięcia tych plików. Są źródłem potencjalnych klopotów - nie mów mi że działają poprwnie - korzystałem z nich przez długi czas i rekomendowałem w pierwszej wersji tego dokuemntu.

Dla użytkowników PPP 2.1.2 przedstawiam LEPSZE wersje wzorcowe tych plików, pobrane z dystrybucjie PPP 2.2. Sugeruję skopiowanie i korzystanie z tych skryptów zamiast startych skryptów z wersji 2.1.2.

15.2 ppp-on script

Pierwszy z PARY skryptów, uruchamiający połączenie.


#!/bin/sh
#
# Script to initiate a PPP connection. This is the first part of the
# pair of scripts. This is not a secure pair of scripts as the codes
# are visible with the 'ps' command.  However, it is simple.
#
# These are the parameters. Change as needed.
TELEPHONE=555-1212      # The telephone number for the connection
ACCOUNT=george          # The account name for logon (as in 'George Burns')
PASSWORD=gracie         # The password for this account (and 'Gracie Allen')
LOCAL_IP=0.0.0.0        # Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0       # Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0   # The proper netmask if needed
#
# Export them so that they will be available to 'ppp-on-dialer'
export TELEPHONE ACCOUNT PASSWORD
#
# This is the location of the script which dials the phone and logs
# in.  Please use the absolute file name as the $PATH variable is not
# used on the connect option.  (To do so on a 'root' account would be
# a security hole so don't ask.)
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
# Initiate the connection
#
#
exec /usr/sbin/pppd debug /dev/ttySx 38400 \
        $LOCAL_IP:$REMOTE_IP \
        connect $DIALER_SCRIPT

A oto skrypt ppp-on-dialer:-


#!/bin/sh
#
# This is part 2 of the ppp-on script. It will perform the connection
# protocol for the desired connection.
#
chat -v                                                 \
        TIMEOUT         3                               \
        ABORT           '\nBUSY\r'                      \
        ABORT           '\nNO ANSWER\r'                 \
        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
        ''              \rAT                            \
        'OK-+++\c-OK'   ATH0                            \
        TIMEOUT         30                              \
        OK              ATDT$TELEPHONE                  \
        CONNECT         ''                              \
        ogin:--ogin:    $ACCOUNT                        \
        assword:        $PASSWORD

15.3 Poprawianie dostarczonych skryptów startowych

Ponieważ nowe skrtypty są podzielone na dwie częście, bedziemy je zmieniać po kolei.

Skrypt ppp-on

Muszisz zmienić ten skrypt podając TWÓJ identyfikator u teojego prowajdera, TWOJE haslo dla tego konta i numer telefonu TWOJEGO prowajdera.

Każdy z wierszy postaci TELEPHONE= tworzy zmienne którcy warość to tekst występujący po prawej stronie znaku '='. (oczywiście poza wierszami komentarza). Popraw wszystkei te wiersze, aby zawierały poprawną inforamcje na temat twojego konta u dostawcy internetu.

Jeśli w pliku /etc/ppp/options podajesz numery IP (jeśli potrzebujesz to robić) to USUŃ ze skryptów odpowiednie wiersze zawierające


        $LOCAL_IP:$REMOTE_IP \

Upewnij się również, że zmienna DIALER_SCRIPT wskazuje na pełną ścieżkę dostępu do skryptu, którego chcesz ostatecznie używać. Więc jeśli przeniosłeś ten skrypt w inne miejsce, lub zmieniłeś jego nazwę pamiętaj o poprawieniu informacji w pliku ppp-on.

Jeśli skonfigurowałeś pp-on poprawnie i twój serwer PPP korzysta z weryfikacj toższamości za pomocą pary identyfikator/hasło, nie musisz już modyfikować skryptu ppp-on-dialer!!!

Pomimo, że port szeregowy może być konfigurowany w plikach startowych systemu (/etc/rc.serial), stwierdziłem, że dobrym pomysłem jest ponowne skonfigurowanie portu szeregowego w skrypcie ppp-on. W ten sposób moge wykorzystywać modem do innych celów, i nie muszę pamiętać o konieczności sprawdzania aktualnej konfiguracji portu szeregowego.

Tuż przed wierszem uruchamiającym pppd dodaj


/bin/setserial /dev/cuaX spd_vhi

W ten sposób port szeregowy jest ostatecznie ustawiany za prędskość 115200 bps, zamiast 38400. Jest to poprawna prędkość dla modemów 28.8k (i szybszych). Jednakże wiele modemów 14.4k nie potrafi skonfigurować swojego interfejsu modem-kompueter na taką prędkość.

Sprawdź w dokumentacji modemu, jeśli maksymalna prędkość modemu wynosi 38400, korzystaj z polecenia


/bin/setserial /dev/cuaX spd_normal

Uruchamianie PPP po stronie serwera

Podczas gdy skrypt ppp-on-dialer jest dobry dla serwera, który automatycznie uruchamia pppd jak tylko zalogujesz się na serwerze, niektóre systemy wymagają jawnego uruchomienia PPP.

Jeśli w celu uruchomienia PPP na serwerze musisz wydać określone polecenie, MUSISZ poprawić skrypt ppp-on-dialer.

Na KOŃCU skryptu (po wierszu z hasłem) dodaj wiersz zawierający parę expect send - taką , która będzie oczekiwała na zachętę (uwaga na znaki o specjalnym znaczeniu w powłoce Bournea - np $ , [ lub ] (otwierający i zamykający nawais kwadratowy).

Kiedy chat rozpozna zachęte powłoki, musi wydać polecenie, które uruchamia PPP na serwerze twojego dostawcy.

W moim przypadku serwer PPP korzysta ze standardowego wiersza zachety powłaoki Bash


[hartr@kepler hartr]$

i wymaga aby w celu uruchomienia PPP na serwerze wydał polecenie


ppp

Zawsze dobrze jest przewidzieć możliwości pewnych pomyłek. Dlatego w moim przypadku używam


        hartr--hartr    ppp

To znaczy - jeśli nie doczekamy się zachęty w określonym czasie wyślij znak enter i czekaj na zachęte raz jeszcze.

Kiedy jesteś pewien, ze otrzymałeś zachętę , wyślij ciag 'ppp'.

Uwaga: pamiętaj o doadniu znaku \ na końcu wiersza, tak aby chat nadal myślał, że cały skrypt znajduje się w jednym wierszu!

Niestety część serwerów generuje bardzo zmienne zachęty! Być może będzisz musiał zalogować się kilkakrotnie za pomocą programu komunikacyjnego, zanim dokladnie zrozumiesz jak to jest i co można przyjąć za zachętę do wydania polecenia.

Skrypt ppp-on-dialer

To jest drugi ze skryptów, który ostatecznie zestawia połączenie PPP.

Uwaga: skrypt chat zawiera się zwykle w jednym wierszu. Znaki '\' pozwalają na kontynuwanie jednego logicznego wiersza skryptu przez wiele fizycznych wierszy pliku (aby człowiek mogł się w tym lepiej połapać) i nie tworzą same z siebie części skryptu.

Dobrze jest się temu przypatrzeć z bliska, abyśmy dobrze rozumieli co tu się dzieje.

15.4 Co to jest skrypt chat ...

Skrypt chat to sekwencja par "oczekiwany ciąg znaków " "ciąg znaków do wysłania". W szczególności zanim cokolwiek wyślemy ZAWSZE czegoś oczekujemy.

Jeśli mamy coś wysłać, BEZ wstępnego oczekiwania na cokolwiek, musimy użyć putsego napisu oczekiwanego (oznaczanego w skryptach tak: "") i podobnie jeśli czekamy na cos, lecz nie mamy zamiaru w odpowiedzi niczego wysyłać! Również w przypadku, napis składa się z kilku słów (np. NO CARRIER), musimy otoczyć napis apostrofami tak aby char rozpoznał go jako pojedynczy element.

Wiersz chat w naszym wzorcu wygląda następująco:-

Pwyższy skrypt ma sensowne możliwości radzenia sobie z niekturymi sytuacjami wyjątkowymi. Sam program chat ma znacznie większe możliwości, zapoznaj się ze stroną podręcznika, która go dotyczy (man 8 chat).

15.5 Skrypt chat dla połączeń wymagających weryfiakcaji PAP/CHAP.

Jeśli twój dostawca korzysta z możliwości PAP/CHAP, wtedy twój skrypt jest znacznie prostszy. Wszystko co muszisz zrobić to wybrać numer, poczekać na połączenie i pozwolić pppd na wejście do systemu i zestawienie połączenia PPP.


#!/bin/sh
#
# This is part 2 of the ppp-on script. It will perform the connection
# protocol for the desired connection.
#
exec chat -v                                            \
        TIMEOUT         3                               \
        ABORT           '\nBUSY\r'                      \
        ABORT           '\nNO ANSWER\r'                 \
        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
        ''              \rAT                            \
        'OK-+++\c-OK'   ATH0                            \
        TIMEOUT         30                              \
        OK              ATDT$TELEPHONE                  \
        CONNECT         ''                              \

15.6 Opcja debug i -f option_file programu pppd

Jak już to pokazaliśmy, w programie pppd istnieje możliwość włączenia wyprowadzania i rejestracji komunikatów odpluskiwających. Służy do tego opcja -d lub debug.

Podczas uruchamiania nowego połączenia PPP pozostaw w skrupcie opcję -d. (Ostrzeżenie: jesli masz mało wolnej przestrzeni dyskowej włączenie rejestracji odpluskwiających pppd może bardzo szybko zapełnić wolne miejsce i możesz mieć z tego powodu kłopoty - wystarczy aby nie udało ci się połączyć, a będziesz próbował nawiązać połączenie jescze przez kila minut).

Kiedy będziesz pewien, że wszystko działa poprawnie, możesz ją wtedy usunąc.

Jeśli swoj plik z opcjami ppp nazwałeś incaczej niż /etc/ppp/options lub /etc/ppp/options.ttySx możesz go uaktywnić podając jego nazwę w wierszu poleceń jako wartość opcji -f programu pppd - np.


exec /usr/sbin/pppd debug -f options.myserver /dev/ttySx 38400 \

16. Testowanie skryptu nawiazującego połączenie

Otwórz nowy xterm (jesli pracujesz pod X) lub nową konsole tekstową i zaloguj się jako root.

W tej nowej sesji wydaj poleceni

tail -f /var/log/messages

(lub jaki tam jest twój plik zawierający komunikaty systemy)

W poprzednim oknie (konsoli wirtualne) wydaj polecenie

ppp-on &

(lub jak nazwałeś zmienioną wersję skryptu /usr/sbin/ppp-on). Jeśli nie uruchomiłeś skryptu w tle przez akończenie wiersza poleceń znakiem & nie odzyskasz wiersza zachety do momentu zamknięcia połączenia PPP.

Teraz przełącz się do konsolu, gdzie są wyświetlane komunikaty systemu.

Zobaczysz cos podobnego (pod warunkiem, że oprogram chat został uruchomiony z opcją -v, a pppd z -d) ... są to sekwencje rejestrowane przez program chat, po których następują komunikaty wysłane przez rozpoczynający połączenie PPP program pppd :-


Oct 21 16:09:58 hwin chat[19868]: abort on (NO CARRIER)
Oct 21 16:09:59 hwin chat[19868]: abort on (BUSY)
Oct 21 16:09:59 hwin chat[19868]: send (ATZ^M)
Oct 21 16:09:59 hwin chat[19868]: expect (OK)
Oct 21 16:10:00 hwin chat[19868]: ATZ^M^M
Oct 21 16:10:00 hwin chat[19868]: OK -- got it
Oct 21 16:10:00 hwin chat[19868]: send (ATDT722298^M)
Oct 21 16:10:00 hwin chat[19868]: expect (CONNECT)
Oct 21 16:10:00 hwin chat[19868]: ^M
Oct 21 16:10:22 hwin chat[19868]: ATDT722298^M^M
Oct 21 16:10:22 hwin chat[19868]: CONNECT -- got it
Oct 21 16:10:22 hwin chat[19868]: send (^M)
Oct 21 16:10:22 hwin chat[19868]: expect (ogin:)
Oct 21 16:10:22 hwin chat[19868]:  57600^M
Oct 21 16:10:23 hwin chat[19868]: ^[[;H^[[2J^M^M
Oct 21 16:10:23 hwin chat[19868]: ^M
Oct 21 16:10:23 hwin chat[19868]: ^M
Oct 21 16:10:23 hwin chat[19868]: ^I^I      This is node  kepler.hedland.edu.au^M
Oct 21 16:10:23 hwin chat[19868]: ^I^I^I      at Hedland Campus^M
Oct 21 16:10:23 hwin chat[19868]: ^I^I^I       Hedland College^M
Oct 21 16:10:23 hwin chat[19868]: ^M
Oct 21 16:10:23 hwin chat[19868]: ^I^I  Authorised user ONLY are to use this system^M
Oct 21 16:10:23 hwin chat[19868]: ^M
Oct 21 16:10:23 hwin chat[19868]: ^M
Oct 21 16:10:23 hwin chat[19868]: ^I^I For more information, contact ComputerSystems^M
Oct 21 16:10:23 hwin chat[19868]: ^I^I^I     on +61 (0)91 72 0400^M
Oct 21 16:10:23 hwin chat[19868]: ^I^I^I^I     or^M
Oct 21 16:10:23 hwin chat[19868]: ^I^I       email:  help@hedunx.hedland.edu.au^M
Oct 21 16:10:23 hwin chat[19868]: ^M
Oct 21 16:10:23 hwin last message repeated 3 times
Oct 21 16:10:23 hwin chat[19868]: kepler login: -- got it
Oct 21 16:10:23 hwin chat[19868]: send (hartr^M)
Oct 21 16:10:23 hwin chat[19868]: expect (ssword:)
Oct 21 16:10:23 hwin chat[19868]:  hartr^M
Oct 21 16:10:23 hwin chat[19868]: Password: -- got it
Oct 21 16:10:23 hwin chat[19868]: send (??????^M)
Oct 21 16:10:23 hwin chat[19868]: expect (hartr)
Oct 21 16:10:23 hwin chat[19868]:  ^M^M
Oct 21 16:10:24 hwin chat[19868]: Last login: Sat Oct 21 14:55:53 on  ttyC0^M
Oct 21 16:10:24 hwin chat[19868]: ^M
Oct 21 16:10:24 hwin last message repeated 9 times
Oct 21 16:10:24 hwin chat[19868]: ^I^IYou have logged into node  kepler.hedland.edu.au^M
Oct 21 16:10:24 hwin chat[19868]: ^M
Oct 21 16:10:24 hwin chat[19868]:            This is a Compaq Prolinea 486DX2/50 running Linux 1.1.54^M
Oct 21 16:10:24 hwin chat[19868]: ^M
Oct 21 16:10:24 hwin chat[19868]:        This computer operates as the main Hedland Campus communications^M
Oct 21 16:10:24 hwin chat[19868]: ^I       node, providing dial-in terminal and SLIP access,^M
Oct 21 16:10:24 hwin chat[19868]: ^I^I      Kepler also runs the Hedland end of^M
Oct 21 16:10:24 hwin chat[19868]: ^I^I    the Hedland/Newman inter-Campus WAN link^M
Oct 21 16:10:24 hwin chat[19868]: ^M
Oct 21 16:10:24 hwin chat[19868]: ^M
Oct 21 16:10:24 hwin chat[19868]: [hartr -- got it
Oct 21 16:10:24 hwin chat[19868]: send (ppp^M)
Oct 21 16:10:27 hwin pppd[19872]: pppd 2.1.2 started by root, uid 0
Oct 21 16:10:27 hwin pppd[19873]: Using interface ppp0
Oct 21 16:10:27 hwin pppd[19873]: Connect: ppp0 <--> /dev/cua1
Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(LCP): Sent code 1, id 1.
Oct 21 16:10:27 hwin pppd[19873]: LCP: sending Configure-Request, id 1
Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfreq(LCP): Rcvd id 1.
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd MRU
Oct 21 16:10:27 hwin pppd[19873]: (1500)
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd ASYNCMAP
Oct 21 16:10:27 hwin pppd[19873]: (0)
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd MAGICNUMBER
Oct 21 16:10:27 hwin pppd[19873]: (a098b898)
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd PCOMPRESSION
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd ACCOMPRESSION
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: returning CONFACK.
Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(LCP): Sent code 2, id 1.
Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfack(LCP): Rcvd id 1.
Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 1, id 1.
Oct 21 16:10:27 hwin pppd[19873]: IPCP: sending Configure-Request, id 1
Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfreq(IPCP): Rcvd id 1.
Oct 21 16:10:27 hwin pppd[19873]: ipcp: received ADDR
Oct 21 16:10:27 hwin pppd[19873]: (10.144.153.51)
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: ipcp: received COMPRESSTYPE
Oct 21 16:10:27 hwin pppd[19873]: (45)
Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
Oct 21 16:10:27 hwin pppd[19873]: ipcp: returning Configure-ACK
Oct 21 16:10:28 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 2, id 1.
Oct 21 16:10:30 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 1, id 1.
Oct 21 16:10:30 hwin pppd[19873]: IPCP: sending Configure-Request, id 1
Oct 21 16:10:30 hwin pppd[19873]: fsm_rconfreq(IPCP): Rcvd id 255.
Oct 21 16:10:31 hwin pppd[19873]: ipcp: received ADDR
Oct 21 16:10:31 hwin pppd[19873]: (10.144.153.51)
Oct 21 16:10:31 hwin pppd[19873]:  (ACK)
Oct 21 16:10:31 hwin pppd[19873]: ipcp: received COMPRESSTYPE
Oct 21 16:10:31 hwin pppd[19873]: (45)
Oct 21 16:10:31 hwin pppd[19873]:  (ACK)
Oct 21 16:10:31 hwin pppd[19873]: ipcp: returning Configure-ACK
Oct 21 16:10:31 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 2, id 255.
Oct 21 16:10:31 hwin pppd[19873]: fsm_rconfack(IPCP): Rcvd id 1.
Oct 21 16:10:31 hwin pppd[19873]: ipcp: up
Oct 21 16:10:31 hwin pppd[19873]: local  IP address 10.144.153.104
Oct 21 16:10:31 hwin pppd[19873]: remote IP address 10.144.153.51

(Zauważ, że ja korzystam ze STATYCZNYCH numerów IP - dlatego mój komputer wysłał je do serwera - nie zobaczysz tego, jeśli korzystasz z dynamicznych numerów IP.)

To wygląda na poprawne połaczenie, przyjżyj się temu dokładnie ,zanim zaczniesz testować połączenie przez 'pingowanie' numerów ip i komputerów.

Uruchom swoją przeglądarkę www lub cokolwiek - jesteś podłączony do Internetu!

17. Zamykanie połączenia PPP

Kiedy połączenie PPP nie jest już ci potrzebne, zamykasz je wydając ztandardowe polecenie ppp-off (pamiętaj musisz być administratorem lub należeć do grupy PPP).

W pliku dziennika powinno znaleźć się coś takiego:-


Oct 21 16:10:45 hwin pppd[19873]: Interrupt received: terminating link
Oct 21 16:10:45 hwin pppd[19873]: ipcp: down
Oct 21 16:10:45 hwin pppd[19873]: default route ioctl(SIOCDELRT): Bad address
Oct 21 16:10:45 hwin pppd[19873]: fsm_sdata(LCP): Sent code 5, id 2.
Oct 21 16:10:46 hwin pppd[19873]: fsm_rtermack(LCP).
Oct 21 16:10:46 hwin pppd[19873]: Connection terminated.
Oct 21 16:10:46 hwin pppd[19873]: Exit.

Nie mart się komunikatem SIOCDELRT - to tylko pppd informuje, że kończy pracę, nie ma się czym martwić.

18. Odpluskwianie

Istnieje wiele przyczyn, dlaczego twoje połączenie nie może zostać nawiązane - program chat nie potrafi poprawanie wejść do sysytemu, masz linię telefoniczną o bardzo złej jakości itp. Przeglądaj pliki dzienników, tam znajdziesz wskazówki.

BARDZO częstym błędem jest zwykła literówka w skryptach lub plikach konfiguracyjnych. Muszisz je sprawdzić bardzo dokładnie - pamiętaj, że ludzie mają tendencję do odczytywania tego, o czym MYŚLIMY, że jest napisane - a nie tego co w rzeczywistości się tam znajduje!

Może chcesz używać PPP 2.2 z jądrem 1.2.x lub PPP-2.1.2 z jądrem 1.3.X/2.0.X. - używaj odpowiedniej wersji PPP.

Przeczytaj PPP FAQ (dokument, który jest serią pytań i odpowiedzi). To jest bardzo obszerny dokumen i można tam znaleźć mnóstwo odpowiedzi. Z mojego (smutnego) doświadczenia wiem, że jeśli nie znajdę tam odpowiedzi na moj problem, to nie jest to problem związany z PPP. W moim przypadku było to korzystanie z jądra w wersji ELF lecz ze starymi wersjami modułow. Straciłem jedynie 2 dni (i większą część jednej nocy)

18.1 Skompilowałem PPP, lecz linux twierdzi że go nie ma!

Jeśli korzystasz z jądra 1.3.x/2.0.x to skompilowałeś wpierw obsługę modułów, potem moduł PPP i zainstalowałeś moduły - prawda ?

Jeśli nie korzystasz z programu kerneld do automatycznego ładowania modułow, wtedy zanim zaczniesz uruchamiać PPP musisz samemu załadować moduł jądra (i prawdopodobnie również moduł obsługi portów szeregowych).

Możesz t ozrobic ręcznie - jako root, napisz


        insmod ppp

Może się zdarzyć, że wpierw musisz załadować moduł obsługi portów szeregowych...


        insmod slhc

Najlepije jednak korzystać z automatycznego ładowania modułów, przeczytaj kerneld mini-howto!

Mogło się jescze tak zdarzyć, że korzystasz z ppp-2.1.2 z jądrem w wersji 2.0.x (lub uzywasz ppp-2.2 z jądrem 1.2.x bez nałożonych odpowienich łatek).

Sprawdź wersję jądra i PPP! Powtórzę raz jescze:-

Jądro Linuxa w wersji 2.0.x WYMAGA ppp-2.2.

Jądro Linuxa w wersji 1.2.x działa z ppp-2.1.2 lecz po nałożeniu odpowiednich łat może współpracowac również z ppp-2.2.

18.2 Nie mogę ustawić domyślnej trasy w tabeli trasowania (routingu).

Posiadasz sieć lokalną Ethernet (lub inną) z już wprowadzoną pozycją domyślnej trasy.

Rozdział na temat 'Łączenie dwóch sieci za pomoca PPP' omawia w skrócie poprawne rozwiązanie tego problemu.

Problem polega na tym, że nie możesz mieć wiecej niż jedną pozycję dotyczącą domyślnej trasy. Domyślna trasa oznacza trasę którą są wysyłane wszystkie pakiety, które nie zostały zakwalifikowane na konkretną trasę. Ogólnie rzecz biorąc domyślna trasa wskazuje na trasę prowadząca od twojego komputera do Internetu.

Niestety niektóre dystrybucje Linuxa ustawiają domyślną trasę w ten sposób, że wskazuję ona na lokalną sieć Ethernetu. W takim przypadku będziesz musiał zmienić sposób w jaki jest inicjowany system w części dotyczącej konfuguracji urządzeń sieciowych i definiowania tabelei routingu tak, aby były dodawane tylko specyficzne trasy do konkretnych komputerów lub podsieci.

Informacje na ten temat można znaleźć w dokumentach NET2-HPWTP, NET-3_HOWTO (po polsku) i Linux Network Administration Guide.

19. Łączenie dwóch sieci za pomocą PPP.

Zasadniczo nie ma żadnej różnicy pomiędzy łączeniem pojedynczego komputera PC z Linuxem z serwerem PPP, a łączeniem dwóch sieci LAN za pomocą PPP na dwóch komputerach należących do tych sieci. Pamiętaj, PPP to protokół każdy-z-każdym.

Jednakże ABSOLUTNIE musisz rozumieć w jaki sposób konfigurowane są tablice routingu. Przeczytaj NET2-HOWTO (NET-3-HOWTO) i Linux Netwoek Administrator Guide (NAG). Nieocenioną pomoc może również dostarczyć książka " TCP/IP Network Administration" (wydana przez O'Reilly and Assoc - ISBN 0-937175-82-X).

W celu połączenia dwóch sieci LAN musisz używać dwóch różnych adresów sieci IP (lub dwóch różnych podsieci tej samej sieci) oraz będziesz musiał używać statycznych numerów IP - lub korzystać z IP masquerade. Jeśli chcesz korzystać z IP masquerade instrukcje na temat korzystania z tej funkcji znajdziesz w IP masquerade howto.

19.1 Konfiguracja adresów IP

Musisz uzgodnić z administratorem drugiej sieci LAN, których adresów IP będziecie używać do zestawienia połączenia PPP. Jeśli korzystacie ze statycznych numerów IP, będziez prawdopodobnie zmuszony do dzwonienia pod określony numer.

Następnie popraw odpowiedni plik /etc/ppp/options[.ttyXX] - dobrym pomysłem jest posiadanie modemu i portu konkretnie dla tego połączenia. To może również wymagać poprawienia pliku /etc/ppp/options, a być może również utworzenia plików options.ttyXX dla innych połączeń PPP.

Zapisz w odpowiednim pliku opcji adres IP twojego końca połączenia, zgodnie z przedstawionym wcześniej przykładem zestawiania połączenia PPP ze statycznymi adresami IP.

19.2 Konfiguracja routingu

Muszisz sprawić aby pakiety z twojej lokalnej sieci były przesyłane przez zestawione połączenie PPP. Jest to proces dwuetapowy.

Na początku musisz trasę od komputera zestawiającego połączenie PPP do sieci znajdującej się na drugim końcy tegto połączenia. Jeśli jest to połączenie z internetem, może być obsłużone przez domyślną trasę wprowadzoną do tabeli routingu przez program pppd na twoim końcu połączenia jako realizacja opcji 'defaultroute'.

Jeśli ma to być jedynie połączenie dwóch sieci LAN, wtedy należy dla konkretnej sieci dodać pozycję w tabeli trasowania. Służy do tego polecenie 'route' umiesczone w skrypcie /etc/ppp/ip-up (patrz Po zestawieniu połączenia... , tam znajdziesz instrukcje, jak to zrobić).

Drugą rzeczą jaką musisz zrobić jest powiadomienie innych komputerów należących do twojej sieci lokalnej, że twój komputer stał się 'bramą' do odległej sieci leżącej po drugiej stronie połączenia PPP.

Oczywiście administrator sieci po drugiej stronie połączenia musis zrobić to samo. Ponieważ będzie on przesyłał pakiety do konkretnej sieci, wymagana będzie pozycja tabeli routingu do konkretnej sieci, a nie pozycja domuślnej trasy (chyba, że sieć podrugiej stronie połączenia łączy się z Internetem właśnie przez wasza sieć).

19.3 Bezpieczeństwo sieci

Jeśli łączysz się za pomocą PPP z Internetem, lub cjoścby z drugą siecią LAN, powinieneś pomyśłeć o bezpieczeństwie. Mocno zalecam włączenie firewalla.

20. Po zestawieniu połączenia...

Po zestawieniu połączenia program pppd szuka skryptu /etc/ppp/ip-up. Jeśli istneije i jest wykonywalny, to zostaje uruchomiony. W ten sposób możesz zautomatyzować wszelkie specjalne polecenia ustawiania tabeli routingu, które mogą być niezbędne oraz wszelki inne działania, które chcesz aby były wykonywane za każdym razem, gdy polączenie PPP

To jest po prostu skrypt i możesz w nim robić wszystko, co tylko skrypt poptrafi (tzn. mniej więcej wszystko).

Na przykład możesz zmusić sendmail do opróżnieia kolejki.

W podobny sposób możesz umieścić polecenia, które za pomocą protokołu POP poniorą twoją pocztę oczekującą na ciebie u dostawcy.

20.1 Specjalne pozycje tabeli routingu

Łączenie za pomocą PPP dwóch sieci LAN wymaga dodania do tbeli routingu pozycji dla konkretnej podsieci. Można to łatwo zrealizować w pliku /etc/ppp/ip-up. Trudność powstaje wtedy, gdy twój komputer obsługuje wiele połączeń PPP jednocześnie.

Dzieje się tak, dlatego, żę skrypt /etc/ppp/ip-up jest wykonywany dla każdego zestawionego połączenia ppp, datego musisz szczególnie ostrożnie uruchamiać polecenia modyfikujące tabele trasowania dla konkretnego połączenia ppp.

Można to łatwo wykonać korzystając z możliwości samej powłoki. Zwykle przez wykorzystanie polecenia 'case' na odpowiednim parametrze przekazanym do skryptu przez program pppd. Poniżesj skrypt /etc/ppp/ip-up/etc/ppp/ip-up, którego używam do obsługi połączeń WAN i połączenia z moją domową siecią Ethernet (obsługiwanego przez ten sam serwer).


#!/bin/bash
#
# Script which handles the routing issues as necessary for pppd
# Only the link to Newman requires this handling.
#
# When the ppp link comes up, this script is called with the following
# parameters
#       $1      the interface name used by pppd (e.g. ppp3)
#       $2      the tty device name
#       $3      the tty device speed
#       $4      the local IP address for the interface
#       $5      the remote IP address
#       $6      the parameter specified by the 'ipparam' option to pppd
#
case "$5" in
# Handle the routing to the Newman Campus server
        202.12.126.1)
                /sbin/route add -net 202.12.126.0 gw 202.12.126.1
# and flush the mail queue to get their email there asap!
                /usr/sbin/sendmail -q &
                ;;
        139.130.177.2)
# Our Internet link
# When the link comes up, start the time server and synchronise to the world
# provided it is not already running
                if [ ! -f /var/lock/subsys/xntpd ]; then
                        /etc/rc.d/init.d/xntpd.init start &
                fi
# Start the news server (if not already running)
                if [ ! -f /var/lock/subsys/news ]; then
                        /etc/rc.d/init.d/news start &
                fi
                ;;
        203.18.8.104)
# Get the email down to my home machine as soon as the link comes up
# No routing is required as my home Ethernet is handled by IP
# masquerade and proxyarp routing.
                /usr/sbin/sendmail -q &
                ;;
        *)
esac
exit 0

W rezultacie podniesienia połączenia PPP do naszego kampusu Newman i wykonania tego skryptu, otrzymujemy następującą tabelę trasowania (ten komputer jest również naszym serwerem dla przychodzących połaczeń modemowych oraz obsługuje nasze połączenie z Internetem). Wstawiłem komentarze pomiędzy wiersze wydruku aby można było łatwiej wyjaśnik każdą pozycję :-


[root@kepler /root]# route -n
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
# trasa do odległego komputera-bramy do iternetu
139.130.177.2   *               255.255.255.255 UH    1500   0      134 ppp4
# trasa do kampusowego komputer Newman
202.12.126.1    *               255.255.255.255 UH    1500   0       82 ppp5
# trasa do mojego domogego komputera-bramy
203.18.8.104    *               255.255.255.255 UH    1500   0       74 ppp3
# dwa  zwykle połączaenia PPP (ludzi , tórzy zadzwonili do serwera)
203.18.8.64     *               255.255.255.255 UH    552    0        0 ppp2
203.18.8.62     *               255.255.255.255 UH    552    0        1 ppp1
# trasa do sieci kampusowaej (za momputerem Newman)
202.12.126.0    202.12.126.1    255.255.255.0   UG    1500   0        0 ppp5
# trasa do naszej lokalne sieci Ethernet (obejmuje dwie kolejne klasy C)
203.18.8.0      *               255.255.254.0   U     1500   0     1683 eth0
# trasa do urządzenie pętli zwrotnej
127.0.0.0       *               255.0.0.0       U     3584   0      483 lo
# domyślna trasa do interentu
default         139.130.177.2   *               UG    1500   0     3633 ppp4

20.2 Obsługa poczty elektronicznej

W poprzedniej sesji powiedzieliśmy jak sobie radzić z pocztą wychodzącą - po prostu opróżniać kolejkę tuż po nawiązaniu połączenia.

Jeśli posiadasz połączenia WAN, możesz uzgodnić z administratorrem zdalnej sieci LAN, aby robił dokładnie to samo. Np. skrypt /etc/ppp/ip-up na komputerze Newman wygląda następująco:-


#!/bin/bash
#
# Script which handles the routing issues as necessary for pppd
# Only the link to Hedland requires this handling.
#
# When the ppp link comes up, this script is called with the following
# parameters
#       $1      the interface name used by pppd (e.g. ppp3)
#       $2      the tty device name
#       $3      the tty device speed
#       $4      the local IP address for the interface
#       $5      the remote IP address
#       $6      the parameter specified by the 'ipparam' option to pppd
#
case "$5" in
        203.18.8.4)
                /usr/sbin/sendmail -q
                ;;
        *)
esac
exit 0

Kiedy posiadasz jedynie łącze PPP z dynamicznym adresem IP, musisz wtedy pobierać pocztę ze swojego konta na komputerze distawcy ISP. Zwykle robi się to za pomocą protokołu POP (Post Office Protocol). Dostępny jset program o nazwie 'popclient', który potrafi zautomatyzować całą procedurę.

Po prostu zmodyfikuj odpowiednio skrypt /etc/ppp/ip-up, tak aby zawierał wywołanie programu popclient. Mój laptom, na któym działa RedHat Linux robi to tak:


popclient -3 -c -u hartr -p <password> kepler.hedland.edu.au |formail -s procmail

Do pobierania nowinek (newsów) możesz wykorzystać slurp. Pamietaj, że ip-up jest zwykłym skryptem powłoki Bournea i może być wykorzystany do KAŻDEGO zadania, które musi być wykonane za kązdym razem, gdy zestwimy połączenie PPP.

21. Zamykanie połączenia

Istniejący skrypt /usr/sbin/ppp-off powinien działać prawidłowo, kied jest używany przez administratora. Jednyną zmianę jaką możesz chcieć wprowadzić jest opróżnienie kolejki pocztowej, tuż przed zamknięceim łącza.

Pozostawiamy to jako ćwiczenie domowe!

Co więcej możesz stworzyć skrypt, który będzie uruchamianyza każdym razem, gdy zostanie zamknięte połączenie PPP. Należy go nazwav /etc/ppp/ip-down. Może być wykorzystany d oodwrócenia działań jakie wykonałes w skrypcie /etc/ppp/ip-up.

22. Uwagi na temat tabel trasowania sieci LAN

Jeśli masz połączenie z siecią LAN, lecz nadal chcesz korzystać na swio komputerze z PPP, musisz pamiętać aby prawidłowo ustawić tabele routingu, tak aby pakiety doceirały zarówno do komputera na drugim końcu połączenia PPP i dalej, ale również do komputerów w lokalnej sieci LAN.

NIE chcemy cię uczyć zasad trasowania - mówimy jedynie o prostym, specyficznym przypadku trasowania statycznego.

Jeśli NIE wiesz co to jest trasowanie mocno zlecam przeczytanie Linux Network Administrator Guide (NAG). W brdzo przystępny sposób porusza te problemy książka "TCP/IP Network Administration" wydawnictwa O'Reilly.

Podstawową zasadą trasowania statycznego jest to, aby trasa domyślna (default) prowadziła do NAJWIEKSZEJ liczby adresów komputerowych. W przpadku innych sieci należy dodawać do tabeli trasowania konkretne pozycje.

JEDYNYM przypadkiem, który chciałbym omówić jest sytuacja, gdy twój Linux jest przyłączony do sieci LAN, która nie jest przłączona do Internetu - a ty chcesz łączyć się ze swoim dostawcą Internetu będąc cały czas przyłączony do sieci LAN.

Po pierwsze upewnij się, że trasa do wojej sieci Ethernetowej jest trasą do konkretnej sieci, a nie trasą domyślną!.

Sprawdź to wydając polecenie route, powinieneś zobazcyć coś takiego:

[root@hwin /root]# route -n
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
loopback        *               255.255.255.0   U     1936   0       50 lo
10.0.0.0        *               255.255.255.0   U     1436   0      565 eth0

Jeśli twoja karta sieciowa (urządzenie eth0) jest wykorzystywane przez pozycję domyśłnej trasy (w pierwszej kolumnie będzie słowo "default", a w ostatniwej eth0) musisz zmodyfikować skrypty inicjujące twój system, w części która zajmuje się inicjowaniem kart sieciowych i ustawianiem tabeli trasowania, tak aby ustawiały trasę do konkretnej sieci, jaką jest rpzecież twoja sieć lokalna i nie wykorzystywały w tym celu trasy domyśłnej (zobacz NET2-HOWTO, NET-3-HOWTO i NAG).

Powyższe zmiany pozwolą programowi pppd na dodawania domyślnej trasy prowadzącej do twojego dostawcy Internetu i dalej:-

[root@hwin /root]# route -n
Kernel routing table

Destination     Gateway         Genmask         Flags MSS    Window Use Iface
10.144.153.51   *               255.255.255.255 UH    488    0        0 ppp0
127.0.0.0       *               255.255.255.0   U     1936   0       50 lo
10.1.0.0        *               255.255.255.0   U     1436   0      569 eth0
default         10.144.153.51   *               UG    488    0        3 ppp0

Zauważyłeś, że dodawane są dwie pozycje do tabeli, trasa bezpośrednio do samogo komputera ( 10.144.153.51), serwera PPP z którym się polączyłś i trasa domyśłna przez interfejs ppp0 i serwer PPP jako bramę do internetu.

Jeśli twoja konfiguracja jest bardziej złożona - zapoznaj się dokumentami, o których wcześniej wspominałem i skonsultuj się ze swoim lokalnym ekspertem w wych sprawach.

Jeśli w twojej sieci są już routery, masz już zapewne utworzone połączenia do większych sieci. Jednak NADAL powinieneś wykorzystywać trasę domyśłna do połączeń z internetem, a ewentualnie dodać nowe pozycje, dla tras do tych dalszych sieci, z któymi się łączysz przez swoją kartę sieciową.

22.1 Uwagi na temat bezpieczeństwa

Jeśli skonfigurujesz Linuxa włączonego do lokalnej sieci LAN jako komputer łączący sie ż Internetem , otwierasz w ten sposób całą swoją sieć lokalną na próby penetracji z internetu. Zanim to zrobisz zalecamy konsultacje ze swoim administratorem sieci i zapoznanie się z obowiązującą polityką bezpieczeństwa sieci. Jeśli twój komputer zostanie wykorzsytany do zaatakowania sieci lokalnej, może cię spotkac więcej niż złość kolegów czy administratorów sieci. Możesz popaść w naprawdę poważne kłopoty.

Zanim przyłączysz sieć LAN do Internetu, zastanów się czy nie wykorzystać pownej ochrony jaka dają połączenia z DYNAMICZNYM przydziałem numerów IP - może warto zapoznać się z książką "Building Internet Firewalls" wydawnictwa O'Reilly.

23. Gdzie znaleźć pomoć jeśli całkowicie ugrzęzłeś

Jeśli połączenie PPP nadal nie działa, przeczytaj ten dokument raz jeszcze, sprawdź wszystko dokłądnie, przyjżyj się komuniokatom w dziennikach generowanych przez program "chat -v" i "pppd -d".

Przeczytaj dokumentacje do PPP , FAQ na ten temat i inne dokumentu, o których wspominałem.

Jeśli nadal stoisz w miejscu, spróbuj zadać pytanie na pl.comp.os.linux.

W szczególności - NIE WYSYLAJ MNÓSTWA WYDRUKÓW ODPLUSKWIANIA DO GRUP NOWINKOWYCH, ANI POCZTA DO MNIE - to pierwsze zajmuje tylko łącza, a drugie zostanie od razu wrzucone do /dev/null (chyba, że specjalnie o to poprosze).

24. Zwykłe klopoty z działającym łączem

Wielu dostawców mogą wspomagać instalaję tylko tego oprogramowania, które dostarczają nowym użytkownikom. Sa to zwykle programy po MS Windows :-( - wiele osób zajmujących się pomaganiem nowym użytkownikom nic nie wie na temat Unixa (czy Linuxa). Muszisz być przygotowany, że w takij systuacji nie znajdziesz u nich pomocy.

Mogłbyś zrobić takiej osobie przysługę i wyjaśnić jej co nieco na ten temat (większość osób pracujących przy pomaganiu ludziom powinna być rozsądna).

24.1 Nie moge wyjść poza serwer PPP do którego jestem podłączony

OK, twoje połączenie PPP działa poprawnie i możesz 'pingnąc' serwer PPP podając jefo numer IP (drugi lub oznaczony jako "remote" numer IP wyświetlony przez polecnie ifconfig ppp0), lez nie możesz osiągnąć komputerów poza nim.

Po pierwsze spróbuj 'pingnąć' numery IP, jakie podałeś w pliku /etc/resolv.conf. Jeśli zadziała, to znaczy, że możesz wyjść poza serwer PPP (chyba, że w /etc/resolv.conf jest właśnie podany numer IP serwera PPP). Spróbuj teraz 'pingnąc' pełną nazwe twojego dostawcy - np.

ping komputer.mojego dostawcy.pl

Jeśli to nie zadziała, masz problem z rozwiązywaniem nazw. Może być spowodowany literówką w pliku /etc/reslov.conf. Sprawdź to dokladnie z informacjami jakie sobie zanotowałeś zanim zacząłeś onfigurować PPP. Jeśli wszystko się zgadza, zadzwoń do dostawcy i dowiedz się, czy poprawnie zapisałes ten numer.

Jeśli nadal nie działa (a twój dostawca potwierdził poprawność numeru serwera DNS i to, żę są sprawne), problem leży gdzieś indziej. Sugeruję sprawdzenie dokładnie twojej instalacji linuxa (zwracającsczególną uwagę na atrybuty plików).

Jeśli NADAL nie możesz 'pingnąć' komputera swojego dostawcy podając jego nazwe, nie numer to może on być wyłączony (zadzwoń i się dowiedz) albo twoj dostawca ma klopoty z trasowaniem (routingiem). Zadzwoń i sprawdź to.

Jedną z możłiwości jest sytuacja, kiedy zdalnym serwerem PPP jest linux, z wyłączoną w jądrze opcją przesyłania pakietów (IP forwarding).

Dobrym testem jest próba połączenie się za pomocą oprogramowania, które on dostarcza (zwykle dla MS Windows). Jeśli wszystwo działa poprawnie dla innego systemu operacyjnego i dokladnie tego samego konta u dostawcy, to znaczy, że problem leży po stronie twojego Linuxa, a NIE dostawcy.

24.2 Mogę wyłać poczte, lecz nie otrzymują żadnych listów

Jeśli korzystasz z polączenia z dyamicznym przydziałem numerów IP zobacz rozdiał "Konfiguraja usług" poniżej.

24.3 Dlaczego ludzie nie mogą krzystać z usług finger, WWW, gopher,talk mojego komputera

Ponownie, jeśli korzystasz z polączenia z dyamicznym przydziałem numerów IP zobacz rozdiał "Konfiguraja usług" poniżej.

25. Korzystanie z usług sieciowych w przypadku dynamicznyhc numerów IP

Jeśli korzystasz z dynamicznych numerów IP (wielu dostawców umożliwi ci korzystanie z PPP jedynie tylko w ten sposób, chyba, że zapłacisz odpowiedno dużą sumę pieniędzy) musisz sobie zdawać z ograniczęć jakie to ze sobą niesie.

Po pierwsze korzystanie z usług zewnętrznych działa poprawnie. To znaczy możesz wysłać poczte sendmailem, pobrać pliki przez ftp, korzystać z www,fingera itp.

W szczególności możesz odpowiadać na poczte, zostanie zmagazynowana podczas gdy nie było polączenia i zostanie wyłana tuż po jego nawiązaniu.

Pamiętaj, że twój komputer nie ejst podłączony do internetu przez 24 godziny, ani nie posiada przy każdym połączeniu tego samego numeru IP. Dlatego nie możesz otrzymywać poczty bezpośrednio na swój komputer i jest bardzo trudno umożliwić twoim kolegom przegładanie twojego serwera www czy ftp. Tak długo kiedy mówimy o Interneie, twój komputer nie istnieje jako pełnoprawny, unikalny, cały czas osiągalny komputer internetowy ponieważ nie posiada jednoznacznego, stałego numeru IP (pamietaj, że numer IP nie jest przydzielony do komputera tylko do linii telefonicznej, gdy nie jesteś połączony z "twojgo" numeru IP korzysta ktoś inny.

Jeśli uruchimisz serwer WWW (lub inna usługę), nikt o niej nie wie, CHYBA, że ktoś wie, że twój komputer jest w tej chwili podłączony do internetu i zna numer IP, którego w danej chwili używasz. Taką informację można zdobyć na wiele sposobów, możesz informować ludzi telefonicznie, listowanie, zostawić ospowiednie inforamcje w pliku  /.plan na komputerze dostawcy (pod warunkiem, że masz dostęp do interpertera).

Nie jest to problem większości użytkowników. Oni chcą jedynie wysyłać i otrzymywać pocztę (korzystając z konta u dostawcy) i korzystać z internetowych serwerów WWW i ftp. Jeśli koniecznie MUSISZ mieć możliwość udostępniania własnych usług, powinieneś otrzymać statyczny numer IP. Albo próbować się ratować metodami opisanymi powyżej...

25.1 Konfiguracja poczty elektronicznej

Nawet w przypadku korzystania z dynamicznych adresów IP, możesz tak skonfogurować sendmail, aby wysyłał listy napisane lokalnie na twoim komputerze. Konfiguracja sendmaila może być BARDZO trudna - nie mamy zamiaru uczyć cię, jak to się robi. Powienieneś skonfigurować sendmail podając jako "smart host" komputer pocztowy twojego dostawc (opcja DS w pliku /etc/sendmail.cf). Szczegółowe instrukcje na temat konfiguracji sendmaila znajdziesz w jego dokumantacji - przyjżyj się plikom m4, które wchodzą w sklad dystrybucji sendmaila. Na pewno znajdziesz tam jeden, który spełni twoje wymagania.

Dostępne są również wspaniałe książki na temat sendmaila, lecz zwykle nie nadają się dla początkujących użytkowników.

Jeśli już uda ci się skonfigurować sendmaila, bedziesz zapewne chciał tuz po nawiązaniu połązcenia PPP opóżniać kolejkę z listów czekającyh na wysłanie do adresatów gdzieś tam w internecie. W tym celu dodaj do pliku /etc/ppp/ip-up polecenie

sendmail -q &

Przychodząca poczta jest problemem dla osób korzystających z dynamicznych numerów IP. Rozwiązaniem jest :-

Możesz zautomatyzować cały ten proces umiesczając niezbędne polecenia w pliku /etc/ppp/ip-up (pisaliśmy o tym wczśniej).

25.2 Konfiguracja lokalnego serwera DNA

Choć możesz korzystać zserwera DNS, który zapewnia ci twój dostawca ISP, możesz również uruchomić lokalny serwer DNS (tylko buforujący) włączany przez sktypt ip-up. Zaletą tego rozwiązania jest osczędność czasu i łącza w przypadku częstego nawiązywania połączeń z tymi samymi komputerami.

Konfiguracja serwera DNS do pracy w trybie buforowania jest całkiem prosta (opcja forwarders w pliku /etc/named.boot wskazujaca serwer DNS twojego dostawcy). Książka wydawnictwa O'Reilly "DNS and Bind" odpowie na wszelkie twoje pytania.

Dostępny jest również dokument DNS-HOWTO.

Jeden z punktów Netykiety mówi: zanim zaczniesz używać drugorzędnego serwera DNS do buforowania, wewnątrz domey twojego dostawcy, spytaj go wpierw o pozwolenie. Poprawnie skonfigurowany serwer DNS nie jest problemem dla twego dostawcy, lecz jeśli popełnisz ajkiś błąd, może wtedy sprawiać kłopoty.

26. Konfiguracja serwera PPP

Jak już wspominałem istnieje wiele metod na wykonanie tego zadania. To co chcę zaprezentować to sposób, którego używam (korzystając z wieloportowej karty Cycades i kilku linii telefonicznych na wspolnym numerze).

Jeśli ci się nie spodoba, możesz to zrobić na swój sposób. Zawsze chętnie w kolejnych wersjach tego dokumentu umieszczę inne sprawdzone metody. Jeśli znasz taką przyślij mi jej opis wraz ze swoimi uwagami.

Pamiętaj, ze w tej części mówimy jedynie o konfiguracji Linuxa jako sewera PPP. Nie zamierzam kiedykolwiek umieszczać tutaj informacji o konfigurowaniu specjalnych terminali dostępowych i innych tego typu zabawek.

Czekają mnie jescze eksperymenty z shadow password. Aktualnie prezentowane informacje NIE zawierają żanych udogoniej jakie można uzyskać korzystając z shadow password.

26.1 Kompilacja jądra

Wszelki wcześniejsze uwagi na temat wersji jądra i pakietu PPP są nadal aktualne. Zkładam, że przeczytałeś poprzednie rozdziały.

MUSISZ włączyć w jąrdze orzesyłanie pakietów (IP forwarding). Może to być dobry moment do włączenia również takich udogodniej jak zliczanie pakietóe (accounting) i firewall.

Jeśli korzystasz z kart wieloportowych muszisz oczywiscie korzystać z ich drajwerów.(zobacz Serial-JTZ).

26.2 Zarys konfiguracji serwera

Oferujemy konta PPP (i SLIP) oraz konta zwykłe sprawdzając tożsamość za pomocą identyfikatora i hasła. Jest to dla nas ułatwieniem, ponieważ uzytkownik korzystając z jednego konta ma dostęp do wszystkich usług.

Ponieważ jestemy organizacją edukacyjną, nie pobieramy opłat za korzystanie z systemu i nie musimy się martwić o zliczanie ruchu i naliczanie opłat.

Firewall działający pomiędzy naszą siecią a internetem ogranicza dostęp naszysch użytkowników do wybranych usług internetowych, ponieważ łącząc się z naszym serwerem pracują wewnątrz naszej sieci, lecz nie będzeimy tutaj rozwijać tego tematu.

Proces uruchomie połączenia PPP przez uzytwkonika posiadającego onto na serwerze wygląda następujaco:-

Serwer korzysta z indywidualnych plików /etc/ppp/options.ttyXX każdego portu wejściowego, gdzie jest zapisany zdalny numer IP (dynamiczny przydział numerów IP). Do zapewnienia komunikacji z komputerami sieci lokalnej i koputerem po drygiej stronie połączenia PPP serwer korzysta z proxyarp (włączonej przez odpowiednią opcję pppd) unikając uruchomienia takich programów jak routed lub gated.

Kiedy użytkownik zamyka połączenie PPP, pppd na serwerze to wykrywa, poleca modemowi przerwać połączenie likwidując w tym samym czasie łącze PPP.

26.3 Przygotowanie niezbędnego oprogramowania

Potrzebne będą następujące programy:-

26.4 Konfiguracja zwykłego konta

Zanim skonfigurujesz swój komputer jako serwer PPP, musi on wpierw umożliwiać dostęp użytkownikom di uch kont.

Nie zamieszcamy w tym dokumencie informacji jak to zrobić. Przeczytaj dokumentację programu getty i Serial-JTZ.

26.5 Konfiguracja plików z opcjami programu pppd

Musisz stworzyć plik z opcjami dotyczacymi wszystkich połączeń /etc/ppp/options. My używamy takich opcji:


asyncmap 0
netmask 255.255.254.0
proxyarp
lock
crtscts
modem

Zauważ, że NIE korzystamy z trasowania - a w sczególności nie ma domyślnej trasy, ponieważ jako serwer PPP powinieneś jedynie zapewnić przesyłanie pakietów z komputer klienta do Internetu i twojej sieci lokalnej i z Internetu (sieci lokalnej) do komputera klienta.

Wszystko co jest wymagane do realizacji tego celu, to trasa do komputer klienta i użycie opcjie 'proxyarp' w programi pppd.

Opcja 'proxyarp' dodaje do tabeli apr serwera PPP ppozycją proxy arp (już wszystko jasne :), która powiadamia komputery sieci lokalnej, że wszystkie pa kiety przeznaczone dla klineta PPP należy przesyłać bezpośrednio do serwera - nie można jej niestety użyć przy routingu pakietów pomiędzy dwiema sieciami LAN - muszisz dodać do tabeli routingu odpowiednie trasy.

Prawdopodobnie chcesz aby użytkownicy twojego serwera PPP korzystali z dysnamicznego przydzielania adresów IP. Można to osiągnąć przypisując każdemu portowi szeregowemu inny adres IP. Zrobisz to umieszczając odpowiednią inforamacje w plikach /etc/ppp/options.ttyXX.

Po prostu umieść tam lokalny muer IP (serwera PPP) i numer IP, który ma być wykorzystywany przez ten port. Np.


kepler:slip01

W szczególności, zamiast numerów IP możesz podawać nazwy komputerów (ja sam pamiętem tylko numery najważniejszych komputerów i urządzeń, nazwy jest łatwiej zapamiętać).

26.6 KOnfiguracja pppd umożliwiająca zwkłym użytkownikomna uruchomienie połączenia

Ponieważ uruchomienie połązeniea PPP jest związane z konfiguracją urządzeń sieciowych i manipulowaniem tabelą routingu, dlatego wymagane są do tego specjalne uprawnienia - w rzeczywistości uprawnienia administratora.

Na szczęści pppd został zaprojektowany do takiego użycia i możemy włączyć bit suid root. Musisz po prostu wydać polecenie


chmod u+s /usr/sbin/pppd

Teraz atrybuty tego pliku powinny wygładać tak


-rwsr-xr-x   1 root     root        74224 Apr 28 07:17 /usr/sbin/pppd

Jeśli tego nie zrobisz, twoi użytkownicy nie będą mogli uruchomić połączenia PPP.

26.7 Ustanawianie ogólnego aliasu dla pppd

Aby uprościć użytkownikom pewne działania, w pliku /etc/bashrc tworzymy globalny alias, tak aby proste polecenie uruchamiało całą procedurę PPP po stronie serwera.

This looks like


alias ppp="exec /usr/sbin/pppd -detach"

Co to znaczy?

Użytkownicy, kótrzy logują się w ten sposób będą przedstawiani przez polecenie w mniej więcej tak
  6:24pm  up 3 days,  7:00,  4 users,  load average: 0.05, 0.03, 0.00
User     tty       login@  idle   JCPU   PCPU  what
hartr    ttyC0     3:05am  9:14                -

I to już wszystko... mówiłem, że zrobienie prostego serwera PPP jest banalne.

27. Korzystanie z PPP przy wykorzystaniu kabli bezmodemowych(bezpośrednie połązcenie portów szeregowych)

TO jest jeszcze prostsze - nie ma modemu to znaczy nie trzeba dzwonić.

Po pierwsze wybierz ,który kompter będzie pracował jako 'serwer'. Muszisz skonfigurować na porcie szeregowym getty, abyś mogł za pomocą minicomu przetestować połączenie z drugiego komputera.

Jeśli połączenie między portami działa poprawnie, możesz usunąć niepotrzebne getty, CHYB, że chcesz aby to połączenie bylo weryfikowane przez identyfikator i hasło. Ponieważ masz kontrolę nad oby komputerami podejżewam, że nie jest ci to potrzebne.

Teraz, na serwerze należy usunąć getty i upewnić się, że porty na obu komputerach są skonfigurowane tak samo.

Teraz musisz tylko ruchomićna obu systemach pppd. Zakładam, że po obu stronach będzie to port /dev/cua4. Na oby komputerach wydaj polecenie :-


pppd -detach crtscts lock <local IP>:<remote IP> /dev/cua4 38400 &

Spowoduje to zestawienie połączenia - lecz nie masz jescze poprawionych tabel routingu. Możesz przetestować połączenie 'pingując' komputery nawzajem, a następnie zamknąć połączeni zabijając jeden z procesów pppd.

Routing jaki jest potrzebny zależy od tego co tak naprawdę chcesz robić. Zwykle jeden z komputerów będzie przyłączony do Ethernetu, a przez to do Internetu, więc wymagany routing jest taki sam, jak w przypadku serwera i klienta PPP.

Na komputerze wyposarzonym w kartę Ethernetu należy wydać polecenie


pppd -detach crtscts lock proxyarp <local IP>:<remote IP> /dev/cua4 38400 &

a na tym drugim


pppd -detach crtscts lock defaultroute <local IP>:<remote IP> /dev/cua4 38400 &

Jeśli łączysz w ten sposób dwie sieci (przez łącze szeregowe!) lub masz bardziej skomplikowane wymagania dotyczące routingu, możesz skorzystać ze skryptów ppp-on i ppp-off w dokładnie taki sam sposób, jaki został opisany wcześniej.

Robert Hart
Port Hedland, Western Australia
August 1996

28. Od tłumacza

Zdaje sobie sprawę, że niniejsze tłumaczenie zawiera mnóstwo błędów. Niestety nie jestem w stanie dokładnie sprawdzić całęgo dokumentu i świadomie pozostawiam tę pracę czytelnikowi. Będę wdzięczny za wszelkie uwagi na temat tego dokumentu, wytykanie błędów, literówek, składni i wszelkie inne, które mogą przyczynić się do jego ulepszenia.

Wszelkie tego typu uwagi proszę przesyłać na adres piotr.pogorzelski@ippt.gov.pl

Inne przetłumaczone dokumenty można znaleźć na stronie http://www.jtz.org.pl/. Zapraszamy!.

piotr.pogorzelski@ippt.gov.pl. doc-linux-pl-2002.06.14.orig/html/Printing-HOWTO.pl.html0100664000175000017500000014744106770264140021346 0ustar covencoven Drukowanie w Linux-ie

Drukowanie w Linux-ie

Autor: Grant Taylor, gtaylor+pht@picante.com
v3.14, 23 Września 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.3, 12 Lutego 1998


Jest to dokument zawierający informacje na takie tematy jak: generowanie wydruku, podglądnięcie go przed drukowaniem, wydrukowanie go oraz przefaxowanie czegoś pod Linux-em (i innymi Unix-ami w ogólności). Dokument ten został napisany w standardzie ISO-8859-2. Oryginał można znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO.

1. Wprowadzenie.

Printing HOWTO powinno zawierać wszystko co powinieneś wiedzieć, aby ustawić drukarkę na swoim Linux-ie. Jest to trochę bardziej skomplikowane niż w świecie pokaż-i-kliknij Microsoft-u i Apple'a, ale za to bardziej elastyczne i z pewnością prostsze jeśli chodzi o administrowanie w dużych sieciach lokalnych.

Dokument ten jest tak ułożony, że większość będzie musiała przeczytać tylko pierwszą połowę czy coś koło tego. Większość nieciekawych informacji i takich, które są zależne od sytuacji znajduje się w drugiej połowie i łatwo je znaleźć w spisie treści, podczas gdy informacje zawarte w sekcjach 9 i 10 będą potrzebne większości.

Większość informacji z poprzedniej wersji zostało usuniętych, ponieważ zdecydowałem się na napisanie tego dokumentu całkowicie od nowa. Zrobiłem tak, bo poprzednie wersje były takie wielkie - około 60 stron A4, i narracja była do kitu. Jeśli nie znalazłeś tutaj odpowiedzi to powinieneś a) przeszukać poprzednią wersję na stronie domowej tego HOWTO, b) podrzucić mi informację co powinno tu być, a nie ma tego.

Strona domowa tego HOWTO jest dobrym miejscem na szukanie nowszych wersji tego dokumentu; jest ona oczywiście także dystrybuowana przez Projekt Dokumentacji Linux-a; archiwum zawierające dokumenty HOWTO możesz znaleźć w Polsce pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO.

1.1 Historia

To jest trzecia generacja, a szczerze mówiąc, to trzecia edycja zrobiona od nowa, dokumentu Printing-HOWTO. Historia PHT może w ujęciu chronologicznym wyglądać tak:

  1. Napisałem Printing-HOWTO w 1992 w odpowiedzi na wiele pytań pojawiających się na grupie comp.os.linux dotyczących drukowania napisałem PHT i wysłałem go tam. Dokument ten wyprzedził Projekt Dokumentacji Linux-a o kilka miesięcy i był pierwszym dokumentem a'la FAQ zwanym HOWTO. Edycja ta była w czystym ASCII.
  2. Po dołączeniu do PDL, PHT zostało wcielone do tegoż projektu przez Briana McCauley <B.A.McCauley@bham.ac.uk>; przez kolejne dwa lata współtworzyliśmy PHT. Po jakimś czasie dołączyliśmy pracę Karla Auera<Karl.Auer@anu.edu.au>. Ta generacja PHT była w TeXinfo oraz także w PS, HTML, ASCII i Info.
  3. Po tym jak pozwoliliśmy PHT żeby trochę "podgniło" przez rok i po nieskutecznych poszukiwaniach jakiejś osoby, która zajęłaby się PHT, miało miejsce powstanie tej wersji. Ta generacja PHT jest w Linuxdoc-SGML.

1.2 Prawa autorskie.

Prawa autorskie należą do Granta Taylora (c) 1997. Proszę kopiować i dystrybuować ten dokument do woli, ale nie modyfikoewać ani nie zapomnieć mojego nazwiska.

2. Jak drukować.

Jeśli masz już zainstalowany program lpd i jest on ustawiony dla twojej drukarki przez kogokolwiek, to wszystko czego potrzebujesz, to nauczyć się posługiwać poleceniem lpr. Dokument Printing-Usage-HOWTO zawiera opis tego polecenia i kilku innych używanych do manipulowania kolejką wydruku.

Jednak jeśli masz nowy system albo nową drukarkę, to będziesz musiał ustawić serwis drukowania w ten lub inny sposób zanim będziesz mógł drukować. Czytaj dalej!

3. Urządzenia dotyczące drukarki w jądrze.

3.1 Urządzenie lp.

Jądro Linux-a (<=2.1.32), zakładając, że wkompilowałeś lub załadowałeś urządzenie lp (polecenie cat /proc/devices powinno pokazać urządzenie lp), dostarcza jedno lub więcej urządzeń /dev/lp0, /dev/lp1 i /dev/lp2. Nie są one kojarzone dynamicznie, ale są one na stałe przypisane konkretnym adresom I/O. Oznacza to, że twoja pierwsza drukarka może być na lp0, albo lp1 w zależności od sprzętu. Spróbuj obu. ;)

Kilku użytkowników zgłosiło, że ich dwukierunkowe porty lp nie zostają wykryte jeśli używają starszego, jednokierunkowego kabla. Sprawdź czy masz przyzwoity kabel.

Na danym porcie nie można mieć na raz sterowników plip oraz lp. Ale można załadować jeden albo drugi sterownik w każdej chwili; ręcznie albo przez kerneld przy jądrze w wersji 2.x.x (lub późniejsze 1.3.x). Jeśli dokładnie ustawisz przerwania itp., to możesz przypuszczalnie mieć plip na jednym porcie, a lp na drugim. Jedna osoba zrobiła tak, przez edycję sterowników; z niecierpliwością oczekuję osoby, która zrobiłaby to tylko przy użyciu argumentów z linii poleceń.

Jest takie narzędzie zwane tunelp, przy pomocy którego "root" może ustawiać przerwania i inne opcje na urządzeniu lp.

Jeśli urządzenie lp jest wbudowane w jądro w wersji 1.3.x lub wyższej, to możesz przekazać parametr lp= do jądra, w którym możesz ustawić przerwanie, adres itp.

Jeśli sterownik lp jest wbudowany w jądro, to możesz użyć parametru
LILO/LOADLIN, aby ustawić adres portu i przerwanie, których sterownik
będzie używał.

Składnia:        lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]

Na przykład:     lp=0x378,0   lub   lp=0x278,5,0x378,7 **

Zauważ, że jeśli używasz tego parametru, to musisz podać *wszystkie*
porty, których będziesz używać - nie ma wartości domyślnych. Możesz
wyłączyć wbudowany sterownik parametrem lp=0.

Jeśli ładujesz sterownik drukarki jako moduł w wersji jądra 2.x.x lub późnej 1.3.x, to możesz podać przerwanie i port jako parametr w linii poleceń przy insmod (albo w pliku /etc/conf.modules, żeby działało także dla kerneld). Parametry to: io=port0,port1,port2 i irq=irq0,irq1,irq2. Więcej informacji znajdziesz w podręczniku systemowym man na stronie dotyczącej insmod.

**Dla tych, którzy (jak ja) nigdy nie mogą znaleźć standardowego portu kiedy go potrzeba, to są one takie jak w podanym wyżej drugim przykładzie. Drugi port (lp0) jest pod adresem 0x3bc. Nie mam pojęcia jakiego przerwania zwykle używa.

Kod źródłowy linux-owego sterownika portu równoległego jest w pliku /usr/src/linux/drivers/char/lp.c

3.2 Urządzenie parport (jądra >= 2.1.33)

Począwszy od jądra w wersji 2.1.33 (dostępne także jako łata dla jądra 2.0.30), urządzenie lp jest po prostu klientem nowego urządzenia parport. Dodanie urządzenia parport naprawia pewną ilość błędów, które dręczyły poprzedni sterownik urządzenia lp - może ono wpółdzielić port z innym urządzeniem, przypisuje dynamicznie dostępne porty równoległe numerom urządzeń zamiast wymuszać z góry narzuconą komunikację pomiędzy adresami I/O a numerami portów i tak dalej.

Więcej szczegółów na temat parport podam kiedy sam znajdę się w sytuacji kiedy będę tego używał. A w międzyczasie możesz przeczytać plik Documentation/parport.txt w drzewie ze źródłami jądra albo zajrzyj na stronę parport.

3.3 Urządzenia szeregowe.

Urządzenia szeregowe pod Linux-em zwykle nazywają się /dev/ttyS1 lub podobnie. Narzędzie stty pozwala na interaktywne przeglądanie lub określanie ustawień dla portu szeregowego; setserial pozwoli ci na kontrolowanie kilku rozszerzonych właściwości oraz na skonfigurowanie IRQ i adresów I/O dla niestandardowych portów. Więcej na temat portów szeregowych znajdziesz w Serial-HOWTO dostępnym także w języku polskim.

Jeśli używasz wolnej drukarki szeregowej z kontrolą przepływu (flow control), może się okazać, że niektóre z twoich wydruków są obcinane. Może być to spowodowane zachowaniem portu szeregowego, który wyrzuca wszystkie znaki ze swojego bufora po 30 sekundach od momentu zamknięcia portu. W buforze może się znajdować do 4096 znaków a jeśli twoja drukarka używa kontroli przepływu i jest wystarczająco wolna, tak że nie może przyjąć wszystkich 4096 znaków z portu w ciągu 30 sekund, po tym jak oprogramowanie drukujące zakmnęło port, to końcowa zawartość bufora zostanie utracona. Jeśli w wyniku polecenia cat plik > /dev/ttyS2 pojawia się cały wydruk dla krótkich plików, a dłuższe są obcinane, to to może być twój problem.

Okres 30 sekund może zostać zmieniony poprzez opcję "closing_wait" programu setserial (wersja 2.12 i późniejsze). Porty szeregowe maszyny są z reguły inicjowane poprzez odwołanie do setserial w pliku startowym rc.serial. Odwołanie do portu szeregowego drukarki może być zmodyfikowane, tak aby ustawić closing_wait w tym samym czasie kiedy ustawia inne parametry tego portu.

4. Obsługiwane drukarki.

Jądro Linux-a obsługuje raczej każdą drukarkę, którą możesz podłączyć do szeregowego albo równoległego portu, ale są rzeczy na które trzeba spojrzeć oraz drukarki których nie będziesz w stanie użyć nawet pomimo, że (elektrycznie mówiąc) mogą one komunikować się z Linux-em. W grupie tych niekompatybilnych drukarek przeważają te, które polegają na "Windows Printing System". (Często są one oznaczone "for Windows".) Te drukarki nie współpracują z Linux-em. Nie mają żadnych inteligentnych części i polegają na procesorze komputera, który musi zrobić większość tego co kiedyś robiły procesory w drukarce. Niestety te zadania mogą być wykonane tylko przez sterowniki dostarczone przez producenta, które działają tylko pod Windows. Więc nie kupuj takiej drukarki do Linux-a.

Jeśli chodzi o drukarki, które działają z Linux-em, to najlepszym wyborem jest kupienie drukarki z interpreterem PostScript-u. Prawie każde oprogramowanie pod Unix-a, które tworzy jakiś drukowalny wynik tworzy go w PostScripcie, więc oczywistym jest, że najlepiej kupić drukarkę obsługującą PostScript. Niestety, ale obsługa tego języka poza drukarkami laserowymi jest bardzo rzadko spotykana.

Jeśli nie uda ci się wydobyć (raczej większego) budżetu potrzebnego na kupno drukarki PostScript-owej, możesz użyć jakiejkolwiek drukarki obsługiwanej przez Ghostcript, darmowy interpreter PostScript-u używanego do druku PostScript-owego. Na domowej stronie Ghostscript-u znajdziesz obsługiwane drukarki i informacje na temat nowych i ekpserymentalnych sterowników. Pomóż proszę w ulepszaniu Ghostscript-u poprzez zgłaszanie sukcesów bądź porażek jak o to proszą.

5. Jakie oprogramowanie do kolejkowania ?

Do niedawna wybór dla użytkowników Linux-a był prosty - wszyscy używali tego samego, starego lpd wziętego bezpośrdnio z kodu Net-2 BSD. Nawet dzisiaj większość sprzedawców dostarcza ten właśnie program. Ale to się zaczyna zmieniać. Systemy SVR4 włączając w to Solaris Sun-a dostarczają całkiem inny pakiet do kolejkowania oparty na lpsched. Pojawiają się także oznaki, iż niektórzy sprzedawcy Linux-a przejdą na dostarczanie LPRng, o wiele mniej zabytkowej implementacji, która jest dostępna za darmo. LPRng jest o wiele prostszy w administrowaniu dla większych instalacji i ma o wiele przyjaźniejszą bazę danych aniżeli lpd.

Na dzień dzisiejszym nawet w świetle nowych opcji, lpd jest przypuszczalnie dobry dla większości użytkowników Linux-a. Raz ustawiony działa dobrze i jest łatwy w zrozumieniu oraz szeroko udokumentowany w książkach o Unix-ie.

Jeśli chcesz więcej informacji na temat LPRng to zobacz LPRng - An Enhanced Printer Spooler. Przyszłe wersje tego dokumentu będą zawierały informacje o zwykłym lpd oraz o LPRng.

6. Jak to działa - podstawy.

Żeby drukowanie działało, musisz zrozumieć jak działa system lpd.

LPD to skrót od Line Printer Daemon i odnosi się w różnych kontekstach do demona i do całej kolekcji programów, które drukują. Są to:

lpd

Demon kolejkowania. Jeden z nich jest uruchomiony, aby kontrolować wszystko na maszynie, I jeden jest uruchamiany dla drukarki podczas drukowania.

lpr

Polecenie dla użytkowników do kolejkowania wydruków. Lpr kontaktuje się z lpd i umieszcza nowe zadanie w katalogu kolejkowania.

lpq

Wyświetla wydruki umieszczone w kolejce.

lpc

Polecenie do kontrolowania systemu lpd. Poleceniem tym możesz wystartować, zatrzymać, zmienić porządek w kolejce drukowania.

lprm

Usuwa wydruk z kolejki.

To jak to wszystko działa ? No... kiedy system startuje, uruchamiany jest lpd. Czyta on plik /etc/printcap, aby się dowiedzieć dla jakich drukarek będzie obsługiwał kolejki. Za każdym razem kiedy ktoś uruchomi lpr, lpr kontaktuje się z lpd poprzez gniazdko /dev/printer i podaje mu wydruk oraz kilka informacji o tym kto drukuje i jak ma to być wydrukowane. Potem lpd drukuje otrzymany plik na odpowiedniej drukarce.

System lp powstał w czasach kiedy większość drukarek była drukarkami liniowymi - tzn. ludzie drukowali w większośći teksty w ASCII. Jak się okazało, nie trzeba dużo pracy, aby lpd działał dobrze dla dzisiejszych wydruków takich jak PostScript, czy text, czy dvi, czy ...

7. Jak poustawiać to wszystko - podstawy.

7.1 Tradycyjna konfiguracja lpd.

Minimalne ustawienia objawiają się tym, że system może kolejkować pliki i je drukować. Nie będzie zwracał uwagi na to, czy twoja drukarka je zrozumie czy nie i przypuszczalnie nie pozwoli ci na zrobienie atrakcyjnego wydruku. Jednak jest to pierwszy krok do zrozumienia, więc czytaj dalej !

Ogólnie mówiąc, żeby dodać kolejkę dla drukarki musisz dodać pozycję do /etc/printcap i utworzyć katalog do kolejkowania w /var/spool/lpd/.

Pojedyncza pozycja w /etc/printcap wygląda tak:

# LOCAL djet500
lp|dj|deskjet:\
        :sd=/var/spool/lpd/dj:\
        :mx#0:\
        :lp=/dev/lp0:\
        :sh:

Definiuje ona drukarkę o nazwach lp, dj i deskjet, z katalogiem kolejkowania /var/spool/lpd/dj/, bez limitu na każdy wydruk, która drukuje na urządzeniu /dev/lp0 i która nie ma strony tytułowej (z danymi o osobie, która drukowała itp.) na początku wydruku.

Teraz poczytaj stronę w podręczniku systemowym na temat printcap.

Powyższy przykład wygląda bardzo prosto, ale jest tam jeden kruczek - drukarka będzie tak długo dobrze drukowała, dopóki będę wysyłał pliki, które ona rozumie. Na przykład wysłanie na drukarkę zwykłego unix-owego pliku tekstowego spowoduje, że na papierze pojawi się coś takiego:

To jest pierwsza linia.
                       To jest druga linia.
                                           To jest trzecia linia.

Wysłanie na tę drukarkę pliku w PostScripcie spowodowałoby wydrukowanie pięknej listy poleceń PostScript z dodatkowym efektem schodków :) - beż żadnego pożytecznego efektu.

Wynika z tego jasno, że czegoś tu jeszcze brakuje - i to jest właśnie celem filtrowania. Ci, którzy czytali stronę podręcznika systemowego o pliku "printcap" mogli zuważyć atrybuty kolejki - if i of. if - czyli input filter - to właśnie to czego potrzebujemy.

Jeśli napiszemy krótki skrypt o nazwie "filter", który doda przed końcem linii znak CR (cariage return - powrót karetki), to efekt schodów może być wyeliminowany. Tak więc musimy dodać do naszej pozycji w /etc/printcap jeszcze jedną linię informującą o istniejącym filtrze:

lp|dj|deskjet:\
        :sd=/var/spool/lpd/dj:\
        :mx#0:\
        :lp=/dev/lp0:\
        :if=/var/spool/lpd/dj/filter:\
        :sh:

Przykładem prostego skryptu może być:

#!perl
# Powyższa linia tak na prawdę powinna zawierać pełną ścieżkę do perl-a
# Skrypt ten musi być wykonywalny: chmod 755 filter
while(<STDIN>){chop $_; print "$_\r\n";};
# Możesz też zakończyć znacznikiem "form feed": print "\f";

Jeśli zrobimy powyższe, to otrzymamy drukarkę, na którą będziemy mogli wysyłać pliki tekstowe z Unix-a i otrzymamy sensowny wydruk. (Tak, są 4 miliony lepszych sposobów na napisanie tego skryptu, ale tylko kilka jest tak bardzo ilustracyjnych. Ty masz to napisać bardziej wydajnie.)

Jedynym problemem jest to, że drukowanie plików tekstowych nie jest takie znowu fajne - byłoby o wiele lepiej, jeśli moglibysmy drukować pliki PostScriptowe czy graficzne. No... tak, byłoby i jest to łatwe do zrobienia. Metoda jest rozszerzeniem tego co zrobiliśmy, żeby się pozbyć schodków. Jeśli napiszesz program, który może przyjmować różne formaty i tłumaczyć je na język zrozumiały dla drukarki, to masz naprawdę dobry filtr.

Taki filtr nazywany jest filtrem magicznym. Nie męcz się nad pisaniem własnego - o ile nie drukujesz jakichs cudów - na sieci jest już pełno filtrów, które możesz śmiało używać.

7.2 Prawa dostępu do plików.

Ponieważ otrzymałem wiele próśb, załączam listę plików wraz z prawami dostępu jakie mają one w moim systemie. Jest wiele lepszych sposobów na zrobienie tego - idealnym sposobem jest używanie programów tylko z atrybutami SGID, a nie robienie wszystkiego SUID dla "root-a", ale mój system tak już miał i dla mnie to działa.

-r-sr-sr-x   1 root     lp    /usr/bin/lpr*
-r-sr-sr-x   1 root     lp    /usr/bin/lprm*
-rwxr--r--   1 root     root  /usr/sbin/lpd*
-r-xr-sr-x   1 root     lp    /usr/sbin/lpc*
drwxrwxr-x   4 root     lp    /var/spool/lpd/
drwxr-xr-x   2 root     lp    /var/spool/lpd/lp/

W chwili obecnej lpd musi być uruchamiany z prawami "root-a", ponieważ używa on numerów portów zastrzeżonych dla systemu (poniżej 1024). Po tym jak już się podczepi pod ten port powinien się zmienić na lp.lp, ale raczej tego nie robi...

8. Zdobywanie oprogramowania do drukowania.

Wiele napisanych pakietów filtrujących (i innych programów związanych z drukowaniem) dostępnych jest na SunSite Polska. Można tam znaleźć takie programy jak: psutils, a2ps, mpage, dvitodvi, flpr.

8.1 Magicfilter.

"Magic filter" jest jednym z najlepszych pakietów filtrujących; zaprojektowany jest do instalacji w 10 minut. Powiedziano mi też, że zawiera specjalną obsługę LPRng.

Title:          magicfilter
Version:        1.1b
Entered-date:   04APR95
Description:    A customizable, extensible automatic printer filter.
                Lets you automatically detect and print just about any
                data type you can find a conversion utility for.  This
                filter is written in C and is controlled completely
                from an external printer configuration file.
                This version adds automagic creation of configuration
                files based on the installed software on your system,
                courtesy of GNU Autoconf.
                This version is a bug fix from 1.1/1.1a; filters for
                non-ASCII capable PostScript printers have been added.
Author:         H. Peter Anvin <hpa@zytor.com>
Primary-site:   sunsite.unc.edu
                53000 /pub/Linux/system/printing/magicfilter-1.1b.tar.gz
Copying-policy: GPL

8.2 Filtr APS.

Innym z wielu magicznych filtrów jest APS zrobiony przez Andreasa Klemma. Linux Software Map wygląda tak:

Begin3
Title:          apsfilter
Version:        4.9.1
Entered-date:   Montag, 10. Juli 1995, 21:22:35 Uhr MET DST
Description:    magicfilter for lpd with auto filetype detection
Keywords:       lpd magicfilter aps apsfilter
Original-site:  ftp-i2.informatik.rwth-aachen.de
                /pub/Linux/pak/APSfilter/aps-491.tgz
                211KB aps-491.tgz
Platforms:      C-Compiler, gs Postscript emulator, pbmutils
Copying-policy: GPL
End

Filtr APS instaluje się jako filtr if dla kolejki drukowania, i tłumaczy z wielu popularnych typów plików na polecenia twojej drukarki.. Rozumie np. tekst, PostScript, dvi, gif i inne.

8.3 EZ-Magic.

EZ-Magic to kolejny pakiet filtrujący, napisany w bash-u, dostepny na sunsite.

Title:          ez-magic printer filter
Version:        1.0.5
Entered-date:   January 26, 1997
Description:    ez-magic is a printer filter that supports 8 common file
                formats (txt,ps,gif,bmp,pcx,png,jpg,tif) for printing.
                It can print over a network (SMB), or to a local printer.
                Reads from a file, STDIN, or lpd. Simple to use and
                configure. Just one script file, no huge manuals and
                multibillion drivers. The only catch is that you need a
                few common helper programs like netpbm and ghostscript.
                Written in bash. Easy to add formats and code. Still more
                bugs than I have appendages, but less than the number of
                grams of fat in a hot dog. Pre-configured for HP DeskJet
                870Cse over network. Comparable to apsfilter and others.
Keywords:       magic filter, print, graphics, samba, network, smb,
                ghostscript, postscript, gif, jpg, simple
Author:         toby@eskimo.com (Toby Reed)
Maintained-by:  toby@eskimo.com (Toby Reed)
Primary-site:   http://www.eskimo.com/~toby/ez-magic-1.0.5.tar.gz
                         38 kb ez-magic-1.0.5.tar.gz
Alternate-site: sunsite.unc.edu /pub/Linux/system/printing
                         38 kb ez-magic-1.0.5.tar.gz
Copying-policy: Copyrighted, full manipulation rights, with one or two
                restrictions.

9. Rozwiązania sprzedawców.

[ Sekcja ta, jest z definicji niekompletna. Przysyłaj szczegóły twojej ulubionej dystrybucji. ]

9.1 RedHat.

W RedHacie znajduje się graficzne narzędzie do admiistracji, przy pomocy którego można dodawać drukarki odległe oraz lokalne. Pozwala ono na wybór drukarki z obsługą "ghostscript" oraz pliku urządzenia, do którego kierowany jest wydruk; potem dana drukarka instalowana jest w /etc/printcap. Następnie tworzony jest krótki filtr magiczny PostScript-ASCII na podstawie gs i nenscript. Rozwiązanie to działa całkiem dobrze i jest łatwe do ustawienia dla popularnych przypadków.

9.2 Inne dystrybucje.

Proszę o informacje jakie są rozwiązania w innych dystrybucjach.

10. Ghostscript.

Ghostscript jest najbardziej znaczącym programem do drukowania dla Linux-a. Większość oprogramowania do drukowania pod Unix-a generuje PostScript, który jest opcją dla drukarki wartą ok. $100. Jednak ghostscript jest za darmo i wygeneruje język dla twojej drukarki z PostScriptu. Jeśli jest on podczepiony pod filtr wejściowy dla lpd, to daje wirtualną drukarkę PostScriptową i bardzo ułatwia życie.

Ghostscript jest dostępny w dwóch postaciach. Komercyjna wersja Ghostscript-u pod nazwą Alladin Ghostscript może być używana dla celów osobistych, ale nie może być rozprowadzana w komercyjnych dystrybucjach Linux-a. Jest on z reguły o jakiś rok do przodu względem darmowej wersji; w tym momencie na przykład, obsługuje on Adobe Acrobat's Portable Document Format, podczas gdy starsze wersje tego nie mają.

Wersja darmowa to GNU Ghostscript i jest starszą wersją Aladdina uprzejmie użyczoną dla GNU. (Cześć i chwała dla Aladdina za to; więcej sprzedawców oprogramowania powinna wspomagać darmowe oprogramowanie w ten sposób)

Cokolwiek robisz w gs, upewnij się, że uruchomiłeś go z opcją wyłączającą dostęp do plików (-dSAFER). PostScript jest językiem w pełni funkcjonalnym i zły program w PostScripcie mógłby cię przyprawić o ból głowy.

Mówiąc o PDF-ie (Adobe's Portable Document Format), właściwie jest to trochę bardziej zorganizowany PostScript w skompresowanym pliku. Ghostscript umie obsłużyć PDF tak samo jak PostScript, więc możesz być pierwszym w swoim otoczeniu z drukarką umiejącą wydrukować PDF.

10.1 Wywoływanie Ghosscript-u.

Zwykle ghostscript jest uruchamiany przez filtr, który założyłeś, ale w celach śledzenia błędó÷ dobrze jest go uruchamiać ręcznie.

gs -help pokaże krótką listę opcji i dotępnych sterowników (lista ta pokazuje tylko sterowniki wkompilowane, a nie wszystkie dostępne sterowniki).

Możesz uruchomić gs w celach testowych np. tak:

   
gs <opcje> -q -dSAFER -sOutputFile=/dev/lp1 test.ps

10.2 Dostrajanie wyników w Ghostscripcie.

Jest wiele rzeczy, które można zrobić jeśli wynik powstały przy opracowywaniu tekstu nie jest zadowalający (właściwie, to możesz zrobić co ci się tylko zamarzy, jeśli masz źródła).

Umiejscowienie i rozmiar wyniku.

Umiejscowienie, rozmiar i wspolczynik ksztaltu obrazu na stronie jest kontrolowane przez specyficzny dla danej drukarki sterownik w ghostscripcie. Jeśli na przykład zauważysz, że strony wychodzą za krótkie, albo za długie, albo za duże o dwa razy, możesz zajrzeć do źródeł twojego sterownika i dopasować jakiekolwiek parametry, które ci nie pasują. Niestety, każdy sterownik jest inny, tak więc nie mogę ci powiedzieć co tak na prawdę trzeba zmienić, ale większość z nich jest dobrze skomentowana.

Gamma, rozmiar pikseli itp.

Większość nielaserowych drukarek ma tę wadę, że rozmiar ich punktu jest raczej duży. Rezultatem tego są zbyt ciemne obrazy. Jeśli masz ten problem, to powinieneś użyć swojej własnej funkcji do transferu. Po prostu stwórz następujący plik w katalogu bibliotecznym ghostscripta i dodaj jego nazwę do wywołania gs zaraz przed właściwym plikiem. Może będziesz musiał zmienić wartości, żeby pasowały do twojej drukarki. Mniejsze wartości dają jaśniejszy obraz. Mniejsze wartości (0.2 - 0.15) są dobrym pomysłem, szczególnie jeśli twój sterownik używa algorytmu Floyda-Steinberga do rasteryzacji kolorów.

---8<---- gamma.ps ----8<---
%!
%transfer functions for cyan magenta yellow black
{0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer
---8<------------------8<---

Przez dopasowanie tych wartości możliwe jest też naprawienie drukarki, która ma jakąś wadę związaną z kolorami. Jeśli będziesz robił coś takiego, to radzę użyć pliku colorcir.ps, który dostarczany jest wraz z ghostscriptem (w podkatalogu examples) jako przykładowa strona.

11. Jak drukować poprzez sieć.

Jedną z zalet lpd jest to, że można przy jego pomocy drukować na drukarkach przyłączonych fizycznie do innych komputerów. Jeśli dobrze dobierzesz kombinację skryptów i narzędzi, to możesz drukować przy pomocy lpr na wszelkiego rodzaju sieciach.

11.1 Na hoście unix/lpd.

Aby pozwolić odległym maszynom drukować na twojej drukarce, musisz je umieścić w /etc/hosts.equiv lub /etc/hosts.lpd. (Zauważ, że hosts.equiv ma kilka innych efektów; upewnij się, że wiesz co robisz jeśli umieszczasz tam jakąś maszynę). Używając opcji rs możesz pozwolić tylko wybranym użytkownikom na drukowanie; informacje na ten temat znajdziesz na stronie podręcznika systemowego na temat lpd.

Przy pomocy lpd.

Aby wydrukować coś na innej maszynie, musisz zrobić pozycję w /etc/printcap podobną do tej:

# REMOTE djet500
lp|dj|deskjet:\
        :sd=/var/spool/lpd/dj:\
        :rm=jakaś.odległa.maszyna.pl:\
        :rp=nazwa_drukarki:\
        :lp=/dev/null:\
        :sh:

Zauważ, że lokalnie nadal znajduje się katalog zadań obsługiwany przez lpd. Jeśli odległa maszyna jest zajętą albo wyłączona, to zadania do drukowania czekają lokalnie aż będą mogły zostać wysłane.

Przy pomocy rlpr.

Żeby ominąć konfigurowanie lokalnego lpd, możesz użyć rlpr, aby wysłać coś bezpośrednio do kolejki na odległej maszynie. Jest to bardzo użyteczne jeśli drukujesz na różnych drukarkach tylko okazyjnie. Z ogłoszenia o rlpr:

Rlpr używa protokołu TCP/IP, aby wysłać zadania do drukowania do serwera lpd gdziekolwiek w sieci.

W przeciwieństwie do lpr, ten *nie* wymaga, żeby drukarki, na których chcesz drukować były znane dla lokalnej maszyny (np. w /etc/printcap) i przez to jest bardziej elastyczny i wymaga mniejszego nakładu pracy administratora.

rlpr może zostać użyty gdziekolwiek, gdzie mógłby zostać użyty zwykły lpr, i jest kompatybilny w dół z tradycyjnym lpr z BSD.

Najważniejszą zaletą rlpr jest, to że można drukować *skądkolwiek dokądkolwiek*, niezależnie od tego jak jest skonfigurowany system, z którego chcesz drukować. Może też być użyty jako serwer, tak że klienci uruchomieni na innych maszynach jak np.: netscape, xemacs, itp. mogą drukować na twojej drukarce małym nakładem wysiłku.

Rlpr dostępny jest na SUNSite Polska.

11.2 Na Win95, WinNT, LanManager lub Sambie.

Jest dostępne mini-HOWTO "Printing to Windows", które zawiera więcej inormacji niż ta sekcja.

Możliwe jest przekierowanie kolejki lpd poprzez program smbclient (część pakietu Samba) do serwisu drukowania Samby opartego na TCP/IP. Samba zawiera odpowiedni skrypt pod nazwą smbprint. Krótko mówiąc umieszczasz plik konfiguracyjny dla konkretnej drukarki w katalogu zadań i instalujesz skrypt smbprint jako if.

Odpowiednia pozycja w /etc/printcap powinna wyglądać tak:

lp|remote-smbprinter:\
    :lp=/dev/null:sh:\
    :sd=/var/spool/lpd/lp:\
    :if=/usr/local/sbin/smbprint:

Aby uzyskać więcej informacji na temat konfigurowania takich przypadków przeczytaj dokumentację zawartą w skrypcie smbprint.

Możesz także użyć smbclient, aby wysłać zadanie drukowania bezpośrednio do serwisu drukowania SMB bez włączania w to lpd. Zobacz informacje w podręczniku systemowym.

11.3 Na drukarce NetWare.

Pakiet ncpfs zawiera narzędzie zwane nprint, które udostępnia te same funkcje co smbprint, ale dla NetWare. Pakiet ten można zdobyć z SunSITE Polska. Z informacji LSM dla wersji 0.16:

Przy pomocy pakietu ncpfs możesz montować wolumeny z serwera netware pod Linux-em. Możesz także drukować na drukarkach podłączonych pod netware oraz kolejkować zadania z netware dla drukarek podłączonych do Linux-a. Potrzebujesz jądra w wersji 1.2.x lub 1.3.54 i nowsze. ncpfs nie będzie działał z jądrem w wersji 1.3 poniżej 1.3.54.

Aby nprint działał poprzez lpd, musisz napisać mały skrypt, aby drukować "stdin" na drukarkach NetWare i zainstalować go jako if dla kolejki lpd. Otrzymasz coś takiego:

sub2|remote-NWprinter:\
        :lp=/dev/null:sh:\
        :sd=/var/spool/lpd/sub2:\
        :if=/var/spool/lpd/nprint-script:

Skrypt "nprint-script" może wyglądać tak:

#! /bin/sh
# Powinieneś najpierw sprawdzić konto guest bez hasła!
/usr/local/bin/nprint -S sieć -U nazwa -P hasło -q nazwa-kolejki -

11.4 Na drukarce EtherTalk (Apple).

Pakiet netatalk zawiera coś podobnego do nprint i smbclient. Werner Eugster udokumentował procedurę dla drukowania do i z sieci Apple o wiele lepiej niż ja kiedykolwiek; zobacz to w Netatalk-HOWTO.

Netatalk nie działa z kartą SMC Etherpower PCI z chip-em DEC tulip.

11.5 Na drukarce HP i innych ethernetowych drukarkach.

Drukarki HP i niektóre inne mają ethernetowy interfejs, do którego możesz drukować bezpośrednio używając lpd. Powinieneś postępować zgodnie z instrukcją, którą dostałeś do drukarki albo jej sterownika, ale ogólnie takie drukarki "mają uruchomionego" lpd i dostarczają jedną lub więcej kolejek, do których możesz drukować. HP może pracować np. z takim /etc/printcap:

lj-5|remote-hplj:\
        :lp=/dev/null:sh:\
        :sd=/var/spool/lpd/lj-5:\
        :rm=nazwa.drukarki.pl:rp=raw:

Drukarki HP LaserJet z interfejsami Jet Direct obsługują generalnie dwie wbudowane kolejki - "surową" (raw), która akceptuje PCL (i możliwe, że PostScript) oraz "tekstową", która akceptuje zwykłe ASCII i radzi sobie od razu z "efektem schodków".

W środowisku wielkoskalowym, szczególnie w dużych środowiskach, gdzie niektóre drukarki nie obsługują PostScript-u, może być pożyteczne ustawienie specjalnego serwera drukowania, do którego drukują wszystkie maszyny i na którym uruchamiane są wszystkie zadania ghostscript-a.

Pozwala to twojemu Linux-owi działać jako serwer wydruków dla drukarki, i użtykownicy mogą robić swoje wydruki szybko i zajmować się swoimi rzeczami zamiast czekać aż drukarka skończy drukować pracę kogoś innego.

Aby to zrobić, ustaw na swoim Linux-ie kolejkę, która wskazuje na HP LJ wyposażoną w ethernet. Teraz ustaw kolejkę u wszystkich swoich klientów na tego Linux-a.

Niektóre drukarki sieciowe HP wyraźnie nie akceptują ustawień strony tytułowej (banner page) wysłanej przez klienta; można wyłączyć ich wewnętrznie generowaną taką stronę przez połączenie się z drukarką telnet-em, wciśnięcie dwa razy <<ENTER>>, wpisanie "banner: 0" i następnie "quit". Są inne ustawienia, które możesz także w taki sposób zmienić - wpisz "?", żeby wyświetlić ich listę.

Na starszych drukarkach HP.

Niektóre drukarki (oraz "czarne pudełka" z sieciowym drukowaniem) obsługują tylko prościutkie nie-protokołowane czyste połączenia TCP. Zauważalne w tej kategorii są wczesne modele kart JetDirect (właczając niektóre JetDirectEx). Ogólnie, aby drukować na takiej drukarce, musisz otworzyć połączenie TCP na danym porcie (z reguły 9100) i umieścić tam swoje zadanie do wydrukowania. Można to zaimplementować m.in. w Perl-u:

#!/usr/bin/perl
# Thanks to Dan McLaughlin for writing the original version of this
# script (And to Jim W. Jones for sitting next to Dan when writing me
# for help ;)

$fileName = @ARGV[0];

open(IN,"$fileName") || die "Can't open file $fileName";

$dpi300     = "\x1B*t300R";
$dosCr      = "\x1B&k3G";
$ends = "\x0A";

$port =  9100 unless $port;
$them = "bach.sr.hp.com" unless $them;

$AF_INET = 2;
$SOCK_STREAM = 1;
$SIG{'INT'} = 'dokill';
$sockaddr = 'S n a4 x8';

chop($hostname = `hostname`);
($name,$aliases,$proto) = getprotobyname('tcp');
($name,$aliases,$port) = getservbyname($port,'tcp')
    unless $port =~ /^\d+$/;;
($name,$aliases,$type,$len,$thisaddr) =
        gethostbyname($hostname);
($name,$aliases,$type,$len,$thataddr) = gethostbyname($them);
$this = pack($sockaddr, $AF_INET, 0, $thisaddr);
$that = pack($sockaddr, $AF_INET, $port, $thataddr);

if (socket(S, $AF_INET, $SOCK_STREAM, $proto)) {
#    print "socket ok\n";
}
else {
    die $!;
}
# Give the socket an address.
if (bind(S, $this)) {
#    print "bind ok\n";
}
else {
    die $!;
}

# Call up the server.

if (connect(S,$that)) {
#    print "connect ok\n";
}
else {
    die $!;
}

# Set socket to be command buffered.

select(S); $| = 1; select(STDOUT);

#    print S "@PJL ECHO Hi $hostname! $ends";
#    print S "@PJL OPMSG DISPLAY=\"Job $whoami\" $ends";
#    print S $dpi300;

# Avoid deadlock by forking.

if($child = fork) {
    print S $dosCr;
    print S $TimesNewR;

    while (<IN>) {
        print S;
    }
    sleep 3;
    do dokill();
} else {
    while(<S>) {
        print;
    }
}

sub dokill {
    kill 9,$child if $child;
}

11.6 Uruchamianie if dla odległych drukarek.

Jedną wadą lpd jest to, że if nie są uruchamiane dla drukarek odległych. Jeśli okaże się, że potrzebujesz if, możesz ustawić podwójną kolejkę i ponownie zkolejkować dany wydruk. Weź ten printcap jako przykład:

lj-5:remote-hplj:\
        :lp=/dev/null:sh:\
        :sd=/var/spool/lpd/lj-5:\
        :if=/usr/lib/lpd/filter-lj-5:
lj-5-remote:lp=/dev/null:sh:rm=nazwa.drukarki.pl:\
        :rp=raw:sd=/var/spool/lpd/lj-5-raw:

w świetle tego, skrypt filter-lj-5 to:

#!/bin/sh
gs <opcje> -q -dSAFER -sOutputFile=- - | \
        lpr -Plj-5-remote -U$5

Opcja -U dla lpr działa tylko wtedy jeśli lpr jest uruchomiony jako demon i ustawia ona poprawnie zleceniodawcę kolejki w ponownie zainicjowanej kolejce. Powinieneś raczej użyć bardziej pewnej metody na zdobycie identyfikatora użytkownika, ponieważ niezawsze jest to argument 5. Zobacz w podręcznik systemowym na temat printcap.

11.7 Z Windows.

Drukowanie z Windows (czy OS/2) na Linux-ie jest obsługiwane poprzez SMB w pakiecie SAMBA, który także umożliwia współdzielenie plików dla Windows.

Samba zawiera całkiem pokaźną dokumentację. Możesz albo skonfigurować magic-filter na Linux-ie i drukować tam PostScript, albo zainstalować sterowniki dla konkretnej drukarki na wszystkich komputerach z Winndows i mieć kolejkę dla nich bez żadnych filtrów. Poleganie na tych sterownikach może czasami dawać lepsze efekty, ale jest to uciążliwe ze strony administratora jeśli jest dużo komputerów z Windows. Więc spróbuj najpierw PostScript-u.

11.8 Z Apple.

Netatalk obsługuje drukowanie z Apple poprzez EtherTalk. Na stronie Netatalk HOWTO znajdziesz więcej informacji.

11.9 Z Netware.

Jest jakaś obsługa drukowania z Netware przez Linux-a oferowana przez czy z powodu Calder-y, ale nie mam pojęcia czy Linux może oferować drukarki dla klientów Netware.

12. Jak drukować na fax-ie.

12.1 Używanie faxmodemu.

Jest wiele programów, które pozwolą ci na odbieranie i wysyłanie faxów. Jednym z bardziej złożonych jest program Sama Lefflera pod nazwą HylaFax. Jest on dostępny na ftp.sgi.com. Obsługuje on wiele rzeczy od większej ilości modemów do rozgłaszania (broadcasting).

Dostępny jest także efax, prosty program wysyłający fax-y - jest on lepszym wyborem dla Linux-owców. Program mgetty może odbierać faxy (a nawet wysyłać pocztę głosową na niektórych modemach!).

12.2 Używanie Zdalnego Serwisu Drukowania.

Dostępny jest eksperymentalny serwis, który pozwala ci na wysłanie poczty elektronicznej z dołączonym fragmentem, który ma być wydrukowany na faxie gdzieś indziej. Obsługiwane są takie formaty jak PostScript, tak więc pomimo, iż nie obejmuje swym zasięgiem wszystkiego, może być on bardzo przydatnym serwisem. Więcej informacji na temat drukowania poprzez Zdalny Serwis Drukowania znajdziesz na stronie o zdalnym drukowaniu.

13. Jak wygenerować coś wartego drukowania.

Tutaj wchodzimy w prawdziwą sieć oprogramowania. Ogólnie, Linux może uruchamiać cztery typy binariów z różnym sukcesem: Linux, iBCS, Win16/Win32s (za pomocą dosemu i kiedyś Wine) oraz Mac/68k (przy pomocy Executora). Ja omówię tylko czysto-Linux-owe i popularne Unix-owe oprogramowanie, poza tym WordPerfect dla SCO i przypuszczalnie inne komercyjne procesory tekstu także dobrze działają na Linux-owej emulacji iBCS.

Dla Linux-a wybór jest przeważnie ograniczony do oprogramowania dostępnego ogólnie dla Unix-a.

13.1 Języki "Markup".

Większość języków "markup" jest bardziej elastyczna dla większych albo powtarzalnych projektów, gdzie chcesz, aby komputer kontrolował wygląd rezultatu/wydruku, aby utworzyć ogólny wzór. Próba zrobienia jakiegoś ładnego znaczka w języku "markup" przypuszczalnie by "bolała"...

nroff

To był jeden z pierwszych języków "markup" dla Unix-a. Strony z podręcznika systemowego są najpopularniejszym przykładem tekstów sformatowanych przy pomocy makr *roff-a. Wiele ludzi przeklina ten język, ale nroff ma, przynajmniej dla mnie, bardziej złożoną składnię niż to jest konieczne i przypuszczalnie jest złym wyborem dla nowych prac. Jednak warto jest wiedzieć, że możesz zamienić napisaną w groff-ie stronę bezpośrednio na PostScript. Większość poleceń "man" zrobi to za ciebie np. man -t coś| lpr.

TeX

oraz język makr - LaTeX, są jednym z najczęściej używanych języków "markup" na Unix-ie. Techniczne prace są często napisane w LaTeX-u ponieważ bardzo upraszcza określenie wyglądu tekstu i jest wciąż jednym z niewielu systemów obróbki tekstu, który obsługuje zapisy matematyczne dokładnie i dobrze na raz. Formatem wyjściowym TeX-a jest dvi (DeVice Independent - czyli niezależny od urządzenia [przyp. tłum.]) i można go zamienić na PostScript lub Hewlett Packard PCL przy pomocy dvips lub dvilj. [TeX czyta się "tech" - przyp. tłum.].

SGML

Dostępny jest przynajmniej jeden program do obróbki tego języka na Unix-a; formuuje on podstawy systemu dokumentów Linuxdoc-SGML. Może on także obsługiwać inne DTD.

HTML

Ktoś zasugerował, że dla prostych projektów, wystarczy napisanie w HTML-u i drukować przy pomocy Netscape-a. Ja się z tym jednak nie zgadzam.

13.2 WYSIWYG.

[ Jest to skrót od What You See Is What You Get - czyli to co widzisz to dostaniesz, a oznacza, iż wydrukowane zostanie DOKŁADNIE to co jest widoczne na ekranie i DOKŁADNIE w taki sam sposób - przyp. tłum.]

W tej chwili jest niedobór oprogramownia do obróbki tekstu WYSIWYG. Nie bój się napisać jakiegoś i daj mi znać jeśli ominąłem coś tutaj.

LyX

Jest to zakończenie dla LaTeX-a, które wygląda bardzo obiecująco. Odwiedź stronę domową LyX-a jeśli chcesz więcej informacji.

Andrew User Interface System

AUIS zawiera ez - edytor w stylu WYSIWYG z większością cech podstawowego procesora tekstu, możliwościami HTML oraz pełną obsługą poczty elektronicznej MIME i grup dyskusyjnych (news-ow).

Oferty komercyjne

Przynajmniej Caldera i Red Hat dostarczają pakiety zawierające zwykłe aplikacje biurowe jak edytor w stylu WYSIWYG i arkusz kalkulacyjny. Powiedziałbym, że robią dobrą robotę, ale nigdy nie używałem takich pakietów. Sądze, że Caldera dostarcza także WABI firmy Sun, tak więc mógłbyś przypuszczalnie uruchomić jakiś MS Office pod tym jeśli musiałbyś zintegrować się z plikami innych.

Jeff Phillips <jeff@I_RATUS.org> używa WordPerfect-a dla Linux-a z Caldery (w Slackware różnego rodzaju) i twierdzi, że działa mu to dobrze. Wygląda na to, że zawiera on wbudowaną obsługę drukarek, jak to można by się spodziewać. Caldera powinna mieć jakieś informacje na swojej stronie WWW.

RedHat dostarcza pakiet o nazwie Applixware; Ich stronę można znaleźć pod adresem www.redhat.com.

Inni sprzedawcy niech mi dadzą znać jakie mają oferty.

14. Podgląd przed wydrukiem.

Prawie wszystko co możesz wydrukować, możesz też zobaczyć na ekranie.

14.1 PostScript.

Ghostscript posiada sterownik do X11; najlepiej jeśli jest on użyty pod kontrolą podglądarki PostScript o nazwie Ghostview. Najnowsza wersja tego programu powinna być także w stanie wyświetlić pliki PDF.

14.2 TeX dvi.

Niezależne od urządzenia (DeVice Independant) pliki TeX-a mogą być wyświetlane w X11 używając xdvi. Nowsze wersje xdvi wywołują ghostscript, aby wykonać polecenia typowo PostScriptowe.

Jest także sterownik na VT100. Nazywa się dgvt. Tmview działa z Linux-em i svgalib jeśli to wszystko na co cię stać.

15. Drukarki szeregowe pod lpd.

15.1 Ustawianie w printcap-ie.

Lpd udostepnia pięć atrybutów, które możesz ustawić w pliku /etc/printcap, aby kontrolować wszystkie ustawienia portu szeregowego, do którego dołączona jest drukarka. Przeczytaj stronę podręcznika systemowego na temat printcap i zapamiętaj znaczenia: br#, fc#, xc#, fs# i xs#. Ostatnie cztery z tych atrybutów to mapy bitowe oznaczające ustawienia portu. Atrybut br# jest prędkością: np. br#9600.

Tłumaczenie z postaci stty na printcap jest bardzo proste. Jeśli musisz, to zobacz stronę podręcznika systemowego na temat stty.

Użyj stty, aby ustawić port drukarki, tak żebyś mógł wysłać plik do tego portu (poleceniem cat) i otrzymał poprawny wydruk. Oto co wyświetla polecenie stty -a dla mojego portu drukarki:

dina:/usr/users/andy/work/lpd/lpd# stty -a < /dev/ttyS2
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr 
-igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 
bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase
-tostop -echoprt -echoctl -echoke

Jedynymi zmianami między tym, i stanem w jakim port jest inicjowany podczas startu są -clocal, -crtscts i ixon. Twój port może mieć inne ustawienia w zaleźności od tego jak twoja drukarka kontroluje przepływ (flow control).

stty używa się właściwie w dziwny sposób. Ponieważ polecenie stty operuje na terminalu podłączonym do jego standardowego wejścia, ty używasz je, aby manipulować danym portem szeregowym przez użycie znaku < jak powyżej.

Jak już masz dobre ustawienia, tak że cat plik > /dev/ttyS2 (w moim przypadku) działa, zajrzyj do pliku /usr/src/linux/include/linux/termios.h. Zawiera on wiele #define (definicji) i kilka struktur - możesz go sobie wydrukować (przecież drukarka działa, nie ?) i używać jako pomocy. Idź do sekcji, która zaczyna się tak:

/* c_cflag bit meaning */
#define CBAUD   0000017

Sekcja ta zawiera znaczenia bitów fc# i fs#. Zauważysz, że nazwy (po ilości bodów) są identyczne z tymi z polecenie stty. A nie mówiłem, że to będzie proste ?

Zobacz, które z tych ustawień mają znak "-" na początku przy poleceniu stty. Zsumuj te wszystkie liczby (są one zapisane w systemie ósemkowym). To będą te bity, które będziesz chciał wyzerować, tak więc wynik jest tym, co masz wpisać do fc#. Pamiętaj oczywiście, że będziesz ustawiał bity zaraz po tym jak je wyzerujesz, tak więc możesz użyć "fc#0177777" (ja tak robię).

Teraz zrób to samo dla tych ustawień, które nie mają znaku "-" na początku w poleceniu stty. W moim przykładzie ważne są CS8 (0000060), HUPCL (0002000) i CREAD (0000200). Zapamiętaj też ustawienie dla swojej prędkości (u mnie jest to 0000015). Zsumuj to wszystko - w moim przykładzie będzie to 0002275. To będzie to, co masz wpisać do fs#. ("fs#02275 działa u mnie.)

Zrób to samo z ustawieniem i zerowaniem dla następnej sekcji pliku nagłówkowego. "c_lflag bits". W moim przypadku nie musiałem niczego ustawiać, tak więc użyłem tylko "xc#0157777" i "xs#0".

15.2 Starsze drukarki szeregowe, które gubią znaki.

Jon Luckey pisze, że u niektórych starszych szeregowych drukarek z interfejsem za 10 centów i małym buforem, stop w kontroli przepływu oznacza rzeczywiste stop dla drukowania. Potem odkrył, że żeby naprawić tę niedogodność wystarczy wyłączyć FIFO w układzie 16550 poleceniem setserial (żeby to zrobić po prostu podajesz typ ukladu uart jako 8250).

16. Wyrazy uznania.

Informacje na temat smbprint zostały zaczerpnięte z artykułu Marcela Roelofsa <marcel@paragon.nl>.

Informacje na temat nprint i używania drukarek NetWare zostały dostarczone przez Michaela Smitha <mikes@bioch.ox.ac.uk>.

Sekcja na temat drukarek szeregowych pod lpd została napisana przez Andrew Teffta <teffta@engr.dnet.ge.com>.

Te wszystkie gammy i inne takie dla "gs" zostały dostarczone przez Andreasa <quasi@hub-fue.franken.de>.

Dwa paragrafy na temat 30 sekundowego "closing_wait" przy sterownikach szeregowych zostały dostarczone przez Chrisa Johnsona <cdj@netcom.com>.

Robert Hart przysłał kilka doskonałych paragrafów na temat ustawiania serwera drukarek dla połączonych HP, któych ja używam w niezmienionej wersji.

I specjalne podziękowania dla tuzinów nad tuzinami tych, którzy wskazywali literówki, złe adresy i błędy w tym dokumencie przez lata.

16.1 Od tłumacza.

Wersja ta jest wersją ostateczną. Dodany został odnośnik do właśnie powstałego tłumaczenia dokumentu Printing-Usage-HOWTO.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne (a może ich tu trochę być, bo nie znam się tak bardzo na poligrafii) to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@jtz.org.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/html/Printing-Usage-HOWTO.pl.html0100664000175000017500000006033506770264140022404 0ustar covencoven Drukowanie na Linux-ie w użyciu.

Drukowanie na Linux-ie w użyciu.

Autor: Mark Komarinski , markk@auratek.com
v1.2.1, 24 Marca 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.02, 26 Lipca 1997

1. Wprowadzenie.

Dokument ten opisuje jak używać systemu kolejkowania do drukarek liniowych dostarczanego wraz z systemem operacyjnym Linux. Dokument ten jest dodatkiem do dokumentu Drukowanie w Linux-ie, który omawia instalację i ustawienie systemu drukowania. Materiał zaprezentowany z tym HOWTO powinien być tak samo ważny dla wszystkich systemów operacyjnych typu BSD w tym także dla Linux-a.
Dokument ten został napisany w standardzie ISO-8859-2.
Oryginał można znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO.

1.1 Historia tego dokumentu.

Uwaga od Marka Komarinskiego <markk@auratek.com>:

Chciałbym podziękować Mattowi Fosterowi za duży wkład pracy przy ponownym pisaniu tego HOWTO. Utrzymuję jego styl i dodaję nowości tak żeby wszystko było w miarę świeże.

Uwaga od Matta Fostera <mwf@engr.uark.edu>:

Wersja bieżąca tego HOWTO jest napisanym od nowa dokumentem, którego oryginał napisali Grant Taylor <grant@god.tufts.edu> i Brian McCauley <B.A.McCauley@bham.ac.uk>. Starałem się zachować mniej więcej to samo co oni napisali, ale zupełnie zmieniłem wygląd i styl tego dokumentu oraz zasięg materiału zawartego tutaj. Czuję, że to uczyni dokument ten bardziej kompletnym i łatwiejszym do przeczytania. Mogę tylko mieć nadzieję, że się zgadzasz.

1.2 Historia Wersji.

v1.2.1

v1.2 v1.11

v1.1

v1.0

1.3 Prawa autorskie i znaki handlowe.

Niektóre nazwy/nazwiska wymienione w tym HOWTO są prawami autorskimi lub znakami handlowymi pewnych firm/osób. Występują one w wersji pełnej lub skróconej.

(c) 1995 Matt Foster (mwf@engr.uark.edu)
(c) 1996-1997 Mark F. Komarinski (markk@auratek.com)

Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem.

Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO.

Jeśli masz pytania skontaktuj się z Gregiem Hankisem, koordynatorem programu Linux HOWTO po adresem gregh@sunsite.unc.edu.

1.4 Ściąganie dokumentów HOWTO dotyczących drukowania.

Jeśli chcesz sobie wydrukować to HOWTO, to polecam wersję PostScriptową. Jest ona sformatowana w taki sposób, że jest łatwiejsza do czytania i ładniejsza. Wersję angielską w PostScripcie możesz pobrać z SUNSite Polska.
Niestety nie dostarczamy jeszcze wersji polskiej w PostScripcie - szukamy kogoś, kto by nam pomógł rozwiązać problem polskich liter ;) albo na nowszą wersję narzędzi SGML, któraby obsługiwała ISO-8859-2.

1.5 Komentarze.

Pytania, komentarze czy poprawki dotyczące tego dokumentu mogą być kierowane do < markk@auratek.com>.

1.6 Podziękowania.

Kieruje je do wszystkich, którzy poświęcili czas na czytanie wersji alfa i odpowiedzieli wieloma pożytecznymi uwagami i sugestiami - niektórzy z was mogą zobaczyć odzwierciedlenie swoich komentarzy w tej wersji dokumentu.

Chciałbym także podziękować Mattowi Fosterowi, który napisał to HOWTO od nowa.

1.7 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

2. Drukowanie pod Linux-em.

Sekcja ta omawia jak drukować pliki, sprawdzać kolejkę wydruków, usuwać zadania z kolejki wydruków, formatować pliki przed ich wydrukowaniem i jak skonfigurować środowisko do drukowania.

2.1 Historia drukowania na Linux-ie.

System drukowania na Linux-ie - system lp - jest przeniesionym źródłem kodu napisanego przez regentów Uniwersytetu Californii dla wersji UNIX-a "Berkeley Software Distribution".

2.2 Drukowanie pliku przy użyciu lpr.

Najbardziej prostą metodą na drukowanie w Linux-ie jest wysłanie pliku do wydrukowania do urządzenia drukarki. Jednym ze sposobów na zrobienie tego jest użycie polecenia cat. Jako "root" możesz zrobić coś takiego:

# cat thesis.txt > /dev/lp

W tym wypadku, /dev/lp jest symbolicznym dołączeniem do rzeczywistego urządzenia drukarki - niech to będzie igłówka, laserówka, "typesetter" czy ploter. (Więcej informacji na temat dołączeń symbolicznych znajdziesz na stronie podręcznika systemowego ln(1)).

Z przyczyn bezpieczeństwa, tylko "root" i użytkownicy należący do tej samej grupy co demon drukowania mogą pisać bezpośrednio na drukarkę. Oto dlaczego polecenia takie jak: lpr, lprm, czy lpq muszą być używane, żeby mieć dostęp do drukarki.

Z tego powodu użytkownicy muszą używać lpr, aby wydrukować jakiś plik. Polecenie to troszczy się o wszystko co jest potrzebne do wydrukowania danego pliku, a potem przekazuje kontrolę do innego programu - lpd czyli "line printer daemon". Demon ten informuje drukarkę jak ma wydrukować dany plik.

Kiedy wykonywany jest lpr, najpierw kopiuje on podany plik do konkretnego katalogu (katalogu zadań), gdzie plik ten pozostaje dopóki lpd go nie wydrukuje. Jak lpd się dowie, że jest jakiś plik do wydrukowania, to utworzy kopię siebie (co my programiści nazywamy rozmnożeniem/klonowaniem). Kopia ta wydrukuje nasz plik, podczas gdy oryginał będzie czekał na dalsze zadania. Pozwala to na obsługiwanie wielu zadań na raz.

Składnia polecenia lpr jest bardzo znana:

$ lpr [ opcje ] [ nazwa_pliku ... ]

Jeśli nazwa_pliku nie jest podana, lpr spodziewa się danych ze standardowego wejścia (zwykle klawiatury lub wyjścia innego programu). To pozwala użytkownikowi na przekierowanie wyjścia poleceń do kolejki drukowania. Np:

$ cat thesis.txt | lpr

lub

$ pr -l60 thesis.txt | lpr

Polecenie lpr przyjmuje kilka argumentów z linii poleceń, które pozwalają użytkownikowi kontrolować jego działanie. Niektóre z bardziej popularnych argumentów to: -Pdrukarka określa drukarkę, na której ma być dane zadanie wydrukowane, -h nie pozwala wydrukować strony tytułowej (z identyfikatorem itp.), -s tworzy symboliczne dołączenie zamiast kopiować plik do katalogu zadań (przydatne do dużych plików) i -#il określa ilość kopii do wydrukowania. Przykład może wyglądać tak:

$ lpr -#2 -sP dj thesis.txt

Polecenie to stworzy symboliczne dołączenie do pliku thesis.txt w katalogu zadań dla drukarki o nazwie dj, a następnie przekaże zadanie do lpd. Następnie wydrukuje drugą kopię tego pliku.

Wszystkie dostępne opcje znajdziesz w podręczniku systemowym lpr(1).

2.3 Przeglądanie kolejki zadań przy pomocy lpq.

Aby zobaczyć zawartość kolejki do drukowania użyj polecenia lpq. Wydane bez argumentów, zwraca zawartość kolejki dla domyślnej drukarki.

Rezultat polecenia lpq może być przydatny do różnych celów.

$ lpq
lp is ready and printing
Rank   Owner      Job  Files                            Total Size
active mwf        31   thesis.txt                       682048 bytes

2.4 Anulowanie zadania przy pomocy lprm.

Inną przydatną cechą każdego systemu drukowania jest możliwość anulowania zadania, które zostało umieszczone w kolejce. Aby to zrobić użyj lprm.

$ lprm -

Powyższe polecenie anuluje wszystkie zadania, które są własnością użytkownika wydającego to polecenie. Pojedyncze zadanie może być anulowane przez zdobycie numeru tego zadania (z polecenia lpq) i podanie go do lprm:

$ lprm 31

Spowodowałoby skasowanie zadania nr 31 - thesis.txt na drukarce domyślnej.

2.5 Kontrolowanie programu lpd przy pomocy lpc.

Program lpc(8) używany jest do kontrolowania drukarek, które obsługuje lpd. Możesz włączyć lub wyłączyć drukarkę albo jej kolejkę, zmienić kolejność w kolejce zadań oraz otrzymać raport na temat drukarek i ich kolejek. Lpc jest używany głównie w sytuacjach kiedy do komputera podłączonych jest kilka drukarek.

$ lpc

Powyższe polecenie wystartuje program lpc. Domyślnie, uruchamia się interaktywny tryb i możesz zacząć wydawać polecenia. Inną opcją jest wprowadzenie polecenia lpc z linii argumentów.

$ lpc status all

Lista dostępnych poleceń jest w podręczniku systemowym lpd, a tutaj podaję kilka najważniejszych, których będziesz najczęściej używał. Polecenie oznaczone opcją może być albo nazwą drukarki (lp, print, itp.) albo słowem "all", co oznacza wszystkie drukarki.

2.6 "Printtool" z RedHat-a.

Tylko krótka notatka na temat zadziwiającego programu printtool z dystrybucji RedHat. Wygląda na to, że robi on wszystko to co robiłby filtr magiczny. RedHat instaluje od razu wiele programów filtrujących. Oto jak ustawiłem swoją drukarkę HP LJ 4L podłączoną do portu równoległego na RH 4.0.

Na jedno zawołanie możesz mieć definicje dla różnych drukarek w /etc/printcap. Dla różnych rozmiarów papieru, rozdzielczości, itd.

3. Drukowanie plików.

Ta sekcja omawia drukowanie plików z jakimi się spotkasz na Linux-ie.

3.1 Drukowanie plików graficznych.

Drukowanie takich plików na drukarce zwykle zależy od rodzaju grafiki i drukarki. Igłówki z reguły nie wchodzą w grę z powodu różnic w sposobach obsługi plików graficznych. Najlepszym wyborem byłoby tu sprawdzenie czy twoja drukarka jest kompatybilna z Epson-em albo IBM ProPrinter, a następnie konwersja do PostScriptu i użycie ghostscriptu do wydrukowania (zobacz następną sekcję).

Jeśli masz drukarkę laserową, to sytuacja jest trochę łatwiejsza ponieważ większość jest kompatybilna z PCL. To daje ci kilka opcji do wyboru. Niektóre programy umieją wysyłać bezpośrednio w PCL. Jeśli nie, to programy takie jak NetPBM potrafią konwertować na PCL. Ostatnią opcją jest użycie ghostscriptu (zobacz następcją sekcję).

Najepszą opcją do wyboru jest instalacja pakietów takich jak NetPBM i ghostscriptu, a potem instalacja magicznego filtra do automagicznej obróbki grafiki.

3.2 Drukowanie plików PostScriptowych.

Drukowanie takich plików na drukarce, która potrafi interpretować ten język jest proste; po prostu użyj lpr a drukarka zajmię się resztą. Dla tych z nas, którzy nie mają takich drukarek pozostają inne środki. Na szczęście są dostępne programy, które potafią robić użytek z PostScriptu i tłumaczyć go na język zrozumiały dla większości drukarek. Najbardziej znanym programem z tego rodzaju jest GhostScript.

Jest on odpowiedzialny za konwersję wszystkich opisów w PostScripcie na język zrozumiały dla danej druarki. Aby wydrukować plik w PostScripcie za pomocą ghostscriptu możesz zrobić coś takiego:

$ gs -dSAFER -dNOPAUSE -sDEVICE=deskjet -sOutputFile=\|lpr thesis.ps

Zauważ w powyższym przykładzie, że właściwie przesyłamy wynik z programu ghostscript do lpr używając opcji -sOutputFile.

Ghostview jest interfejsem graficznym pod XWindows dla ghostscriptu. Pozwala on na podgląd pliku w PostScripcie przed wydrukowaniem. Ghostview i ghostscript - oba można otrzymać z ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/apps/graphics/viewers/X.

3.3 Drukowanie plików PDF.

Adobe wypuścił czytarkę Acrobat dla Linux-a i jest ona dostępna na stronie domowej WWW tej firmy. Poprzednia wersja - xpdf - jest także dostępna.

3.4 Drukowanie plików w TeX-u.

Jednym z najprostszych sposobów na drukowanie takich plików jest konwersja ich na PostScript i drukowanie za pomocą ghostscriptu. Aby to zrobić musisz najpierw przkonwertować je z TeX-a na format znany jako DVI (co jest skrótem od DeVice Independent - czyli niezależne od urządzenia). Można to zrobić polecenem tex(1). potem musisz zmienić plik DVI na PostScript przy pomocy dvips. Wszystko wygląda mniej więcej tak:

$ tex thesis.tex
$ dvips thesis.dvi

Teraz możesz wynikowy plik w PostScripcie wydrukować w sposób podany wyżej,

3.5 Drukowanie plków sformatowanych troff-em.

$ groff -Tascii thesis.tr | lpr

albo jeśli wolisz

$ groff thesis.tr > thesis.ps

a potem wydrukuj plik w PostScripcie jak wyżej.

3.6 Drukowanie stron podręcznika systemowego man.

$ man man | col -b | lpr

Strony te zawierają preformatowane dane troff-a tak więc musimy wyrzucić wszelkie podświetlenia, podkreślenia itp. Program col robi to całkiem miło, a ponieważ używamy strumieni program man nie użyje polecenia more.

4. Różności.

W sekcji tej znajdują się tematy, których nie można zaliczyć do wcześniejszych.

4.1 Formatowanie przed drukowaniem.

Ponieważ większość plików ASCII nie jest sformatowana do drukowania użyteczne jest sformatowanie ich w jakiś sposób przed wydrukowaniem. Może zawierać to umieszczenie tytułu i numeru na każdej stronie, ustawienie marginesu, podwójne przerwy między wyrazami, wcięcia albo drukowanie pliku w większej ilości kolumn. Popularnym sposobem na osiągnięcie tego jest użycie np. programu pr.

$ pr +4 -d -h"Ph.D. Thesis, 2nd Draft" -l60 thesis.txt | lpr

W powyższym przykładzie, pr przeskoczyłby pierwsze 3 strony (+4), ustawił długość strony na 60 lini (-l60), podwoił spacje (-d) i dodał napis "Ph.D. Thesis, 2nd Draft" na początku każdej strony (-h). Lpr umieściłby rezultat tego polecenia w kolejce. Zajrzyj do podręcznika systemowego pr(1) jeśli chcesz znać więcej informacji.

4.2 Zmienne Środowiskowe PRINTER.

Wszystkie polecenia w systemie drukowania Linux-a akceptują opcję -P. Opcja ta pozwala użytkownikowi na podanie, która drukarka ma być użyta. Jeśli użytkownik tego nie poda, to wybrana zostanie drukarka domyślna.

Zamiast każdorazowego podawania nazwy drukarki, możesz podać ją w zmiennej środowiskowej "PRINTER". W zależności od twojej powłoki, może to być zrobione w różny sposób. Dla bash-a będzie to:

$ PRINTER="nazwa_drukarki"; export PRINTER

Dla csh będzie to:

% setenv PRINTER "nazwa_drukarki"

Polecenia te mogą być umieszczone w skryptach startowych (.profile dla bash-a i .cshrc dla csh) albo wydane z linii poleceń. Więcej na temat zmiennych środowiskowych znajdziesz na stronach podręcznika systemowego bash(1) i csh(1).
UWAGA - Ostrzegam żebyś przypadkowo z tego podniecenia nie zaczął drukować tych stron :)) - mają one odpowiednio 4.000 i 5.500 linii.

5. Odpowiedzi na często zadawane pytania.

P1. Jak mam zapobiec efektowi schodków ?

O1. Efekt ten jest powodem tego, że niektóre drukarki spodziewają się znaków CR/LF na końcu linii, a w Unix-ach koniec linii to tylko LF (czyli przejście do nstępnej linii bez powrotu do jej początku). Najprostszym sposobem na poprawienie tego jest sprawdzenie czy twoją drukarkę można jakoś przełączyć na druki sposób - albo przy pomocy przełącznika albo wysyłając sekwencję znaków na początku każdego wydruku. Do drugiego rozwiązania potrzebujesz filtra. (Zobacz pytanie 2.)

Szybkim sposobem jest użycie filtru z wiersza poleceń. Przykładem może być:

$ cat thesis.txt | todos | lpr

P2. Co to jest filtr.

A2. Jest to program, który czyta ze standardowego wejścia (stdin), robi coś z wczytanymi danymi i zapisuje je do standardowego wyjścia (stdout). Filtry są używane do wielu rzeczy, włączając w to przeróbkę tekstu.

P3. Co to jest filtr magiczny ?

A3. Jest to filtr, który robi coś w zależności od typu pliku wejściowego. Np. jeśli plik jest czystym plikiem tekstowym, to po prostu wydrukowałby go używając standardowej metody. Jeśli plik jest w PostScripcie czy innym formacie, to wydrukowałby go używając innej metody (np. ghostscriptu). Dwoma przykładami tego są "magicfilter" i "APSfilter". Jedyną wadą tych filtrów jest to, że odpowiednie programy muszą być zainstalowane przed instalacją filtra.

Powodem tego jest to, że jeśli "magicfilter" zostaje zainstalowany, to pyta on twój system o konkretne programy (takie jak ghostscript - jeśli go znajdzie, to wie, że może obsługiwać dane typu PostScript), potem tworzy siebie na podstawie tego co znalazł. Aby obsługiwać wszystkie pliki do drukowania, musisz mieć zainstalowane przynajmniej takie programy:

P4. Co z Systemem Drukowania z Windows ? Czy Linux będzie z tym działał ?

O4. Może. Drukarki, które akceptują tylko polecenia WPS (Windows Printing System) nie będą działać z Linux-em. Natomiast te, które akceptują polecenia WPS i inne (jak np. Canon BJC 610) będą działać dopóki są ustawione na coś innego niż WPS. Inne drukarki takie jak HP DeskJet 820Cxi/Cse nie będą działać z Linux-em. Właściwie Linux może służyć jako serwer wydruków dla Win95 ponieważ Win95 ma sterowniki do tych drukarek.

P5. Co to za system ? Nie mogę wydrukować więcej niż 6 stron bo dostaję "file too large".

O5. Jedna z opcji w /etc/printcap dotyczy maksymalnego rozmiaru wydruku. Domyślną wartością jest 1000 bloków dysku (ok. 500KB). Dla PostScript-u itp. da ci to około 6-8 stron z grafiką i to koniec. Upewnij się, że dodałeś następującą linię do pozycji danej drukarki w /etc/printcap:

mx=0

Podstawowym powodem tego limitu jest dotrzymanie warunku, żeby nie zapełnić partycji na wydruki. Jest inny spośob na zrobienie tego; można kazać lpr utworzyć dołączenie symboliczne do pliku do wydrukowania. Musisz wtedy pamiętać, żeby dodać opcję -s do każdego wywołania programu lpr.

6. Rozwiązywanie problemów.

W sekcji tej znajdują się częste problemy z jakimi się możesz spotkać przy drukowaniu.

Jeśli twoja drukarka nie działa:

Odpowiedź na te pytania pomoże znaleźć rozwiązanie.

Inne sugestie do tej sekcji wysyłaj na adres < markk@auratek.com>.

7. Odwołania.

Sekcja ta zawiera odnośniki dla systemu drukowania na Linux-ie. Próbowałem utrzymać tę sekcję jak najbardziej zwięzłą. Jeśli czujesz, że zapomniałem czegoś, to nie wahaj się pisać do mnie.

Zanim wyślesz pytanie na grupę dyskusyjną, zastanów się:

Jeśli któreś z powyższych jest prawdą, to pomyśl dwa razy zanim wyślesz pytanie. A jeśli już się zdecydujesz wysłać, to postaraj się zawrzeć jak najdokładniejsze informacje. Spróbuj napisać coś więcej niż "Mam problemy z lpr. Pomóżcie !" Tego typu listy zostaną przez większość zignorowane. Podaj także wersję jądra jaką używasz, jak/kiedy pojawił się błąd i ewentualnie komunikaty jakie się pojawiły.

Strony podręcznika systemowego:

Grupy dyskusyjne (USENET; NEWS)

doc-linux-pl-2002.06.14.orig/html/RPM-HOWTO.pl.html0100664000175000017500000012155406770264140020207 0ustar covencoven Menadżer Pakietów RedHat-a (RPM) - Jak To Zrobić

Menadżer Pakietów RedHat-a (RPM) - Jak To Zrobić

Autor: Donnie Barnes
djb@redhat.com
V2.0, 8 Kwietnia 1997
Wersja polska: Jacek Pliszka pliszka@fuw.edu.pl


Niniejszy dokument jest tłumaczeniem RPM-HOWTO i w skrócie opisuje jak coś zrobić używając rpm-a czyli Menadżera Pakietów RedHat-a (RedHat Package Manager). Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tłumaczenia tego dokumentu znajduje się pod adresem http://www.jtz.org.pl. http://www.jtz.org.pl a także na ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/.

1. Wprowadzenie

Skrót RPM pochodzi od ang. Red Hat Package Manager co oznacza w wolnym tłumaczeniu menadżer pakietów RedHat-a. Jednak pomimo tego, że w nazwie znajduje się Red Hat, to w zamierzeniu jest on systemem otwartym, dostępnym dla każdego. Umożliwia on spakowanie zarówno kodu źródłowego jak i programów binarnych do zwartej postaci zawierającej dodatkowo informacje istotne przy zarządzaniu oprogramowaniem. Umożliwia to łatwą instalację, odświeżanie oraz usuwanie oprogramowania. Informacja o zainstalowanym oprogramowaniu jest łatwo dostępna jako że RPM tworzy bazę danych o wszystkich pakietach zainstalowanych w naszym systemie. Pozwala to na szybkie sprawdzenie czy dany pakiet jest zainstalowany, a jeśli tak to co zawiera, jaka jest jego wersja, jakie pliki zostały przez niego w systemie zainstalowane oraz jakich innych pakietów wymaga. Pozwala też sprawdzić do jakiego pakietu należy dany plik.

Przyp. tłum. rpm jest obecnie używany zarówno do plików w postaci źródłowej jak i binarnej. W oryginale autor odwołuję się głównie do tej pierwszej. Jednak ponieważ obecnie częściej używa się pakietów w postaci binarnej to pliki z których powstał rpm a które mają być zainstalowane również będę nazywał plikami źródłowymi zaś proces instalacji bądź kompilacji - instalacją.

Firma Red Hat Software zachęca inne firmy i grupy tworzące oprogramowanie do bliższego zapoznania się z RPM i wykorzystania go przy tworzeniu własnych pakietów. Będąc dość elastycznym i łatwym w użyciu, RPM pozwala budować nawet bardzo obszerne zbiory pakietów. Pomimo tego, że jest to system całkowicie otwarty i dostępny, jego autorzy chętnie wysłuchają informacji o błędach i ewentualnych poprawkach. (Jednak przed zgłoszeniem ``błędu'' należy, tak jak zawsze, najpierw sprawdzić czy ma się najnowszą stabilną wersję, przejrzeć dokumentację oraz przeszukać archiwa USENET i jeśli i tam nie będzie odpowiedzi - spytać na odpowiedniej grupie dyskusyjnej np. pl.comp.os.linux -przyp. tłum.) Używanie i rozpowszechnianie RPM jest wolne od opłat i regulowane Publiczną Licencją GNU - GPL (ang. GNU Public Licence).

Bardziej szczegółowa dokumentacja dotycząca RPM jest zawarta w książce Eda Bailey'a, Maximum RPM, która można ściągnąć bądź zakupić w www.redhat.com.

2. Do czego służy RPM?

Na początku warto powiedzieć co nieco o ``filozofii'' RPM. Celem jego projektantów było umożliwienie użycia pierwotnych kodów źródłowych. Zanim powstał RPM, jego autorzy używali RPP (przy czym podkreślają, że RPM nie nie jest na nim oparty ), w którym udostępniano poprawione kody źródłowe, konkretnie te, które były używane do instalacji. Teoretycznie mogłoby to wystarczyć, bo można było zainstalować pakiet źródłowy RPP i skompilować go (poleceniem make) bez większych problemów. Jednakże nie były to oryginalne źródła i trudno było na pierwszy rzut oka powiedzieć co w nich zostało zmienione. Niezbędnym było ściągnięcie również oryginalnych źródeł. RPM zaś zawiera oryginalne źródła wraz z poprawkami których dokonano. W opinii autorów rozwiązanie to jest znacznie lepsze. Dlaczego?

Z paru powodów. Po pierwsze, jeśli pojawi się nowa wersja programu to nie zaczynamy od zera. Niektóre poprawki, które były dobre dla poprzedniej wersji, mogą być właściwe, najwyżej po minimalnych zmianach i dla obecnej. By się o tym przekonać, wystarczy do nich zajrzeć. Poza tym wszystkie domyślne opcje potrzebne do instalacji są w ten sposób łatwo dostępne.

Poza tym RPM zaprojektowano tak, aby umożliwić sprawdzanie wielu istotnych informacji dotyczących zarówno pojedyńczego, konkretnego pakietu jak i ich zestawu bądź też wszystkich pakietów zainstalowanych w danym systemie. Przykładem takiej informacji jest lista pakietów, których dany pakiet wymaga wraz z numerami wersji. Możliwe jest również sprawdzenie z jakiego pakietu pochodzi konkretny plik oraz gdzie można znaleźć jego wersję źródłową. Pliki RPM są już wewnętrznie spakowane, ale sprawdzanie informacji dotyczących konkretnego pakietu jest proste i szybkie dzięki specjalnemu binarnemu nagłówkowi który zawiera praktycznie wszystkie niezbędne informacje o pakiecie.

Innym atutem RPM jest umiejętność weryfikacji pakietów. Jeśli boisz się, że skasowałeś jakiś ważny plik, to możesz to po prostu sprawdzić. RPM poinformuje Cię o wykrytych nieprawidłowościach. Jeśli zajdzie potrzeba, to możesz łatwo odnowić zainstalowany pakiet przy czym Twoje pliki konfiguracyjne zostaną zachowane. Oczywiście możesz też zainstalować je od nowa.

Autorzy chcą podziękować grupie ludzi od dystrybucji BOGUS za wiele ich idei i pomysłów które wykorzystano w RPM. Gdyż o ile RPM został napisany w całości przez Red Hat Software, to zasady jego działania są oparte na kodzie stworzonym przez BOGUS (PM oraz PMS).

3. Informacje ogólne

3.1 Skąd wziąć RPM?

Najprostszym sposobem jest instalacja Linux-a Red Hat. Jeśli ktoś nie chce tego robić to może używać RPM bez tego. W Polsce RPM jest dostępny np. pod adresem: ftp.icm.edu.pl - polskim mirrorze ftp.redhat.com.

3.2 Wymagania RPM

Podstawowym wymaganiem RPM-a jest cpio o numerze wersji 2.4.2 lub wyższym. Mimo że RPM jest pomyślany do pracy pod Linux-em to równie może być przeniesiony na inne systemy Unix. W rzeczywistości udało się go już uruchomić pod SunOS, Solaris, AIX, Irix, AmigaOS i wieloma innymi systemami. Jednak należy pamiętać, że pakiety binarne stworzone na różnych Unix-ach mogą nie być ze sobą zgodne.

Są to minimalne wymagania by zainstalować RPM-y. By tworzyć RPM-y z kodu źródłowego potrzebne jest również wszystko to co normalnie jest wymagane przy tworzeniu pakietu np. gcc, make, itd.

4. Używanie RPM

Najprostszym wykorzystaniem RPM jest instalacja nowego pakietu:

        rpm -i foobar-1.0-1.i386.rpm
Równie proste jest jego odinstalowanie:
        rpm -e foobar

Przykładem bardziej złożonego, ale bardzo użytecznego polecenia jest instalacja pakietów poprzez FTP. Jeśli jesteś podłączony do sieci i chcesz zainstalować nowy pakiet, to wszystko co musisz zrobić to podać nazwę pliku jako poprawny URL, np.:

        rpm -i ftp://ftp.pht.com/pub/linux/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm

Chciałbym podkreślić, że w tym przypadku RPM sprawdzi bądź zainstaluje pakiet poprzez FTP.

Były to w miarę proste polecenia, lecz rpm może być użyty na wiele więcej sposobów jak można się łatwo przekonać pisząc w linii komend

        rpm
i naciskając Enter:
RPM version 2.3.9
Copyright (C) 1997 - Red Hat Software
This may be freely redistributed under na warunkach
 of the 
GNU Public License

usage: rpm {--help}
       rpm {--version}
       rpm {--initdb}   [--dbpath <dir>]
       rpm {--install -i} [-v] [--hash -h] [--percent] [--force] [--test]
                        [--replacepkgs] [--replacefiles] [--root <dir>]
                        [--excludedocs] [--includedocs] [--noscripts]
                        [--rcfile <file>] [--ignorearch] [--dbpath <dir>]
                        [--prefix <dir>] [--ignoreos] [--nodeps]
                        [--ftpproxy <host>] [--ftpport <port>]
                        file1.rpm ... fileN.rpm
       rpm {--upgrade -U} [-v] [--hash -h] [--percent] [--force] [--test]
                        [--oldpackage] [--root <dir>] [--noscripts]
                        [--excludedocs] [--includedocs] [--rcfile <file>]
                        [--ignorearch]  [--dbpath <dir>] [--prefix <dir>] 
                        [--ftpproxy <host>] [--ftpport <port>]
                        [--ignoreos] [--nodeps] file1.rpm ... fileN.rpm
       rpm {--query -q} [-afpg] [-i] [-l] [-s] [-d] [-c] [-v] [-R]
                        [--scripts] [--root <dir>] [--rcfile <file>]
                        [--whatprovides] [--whatrequires] [--requires]
                        [--ftpuseport] [--ftpproxy <host>] [--ftpport <port>]
                        [--provides] [--dump] [--dbpath <dir>] [targets]
       rpm {--verify -V -y} [-afpg] [--root <dir>] [--rcfile <file>]
                        [--dbpath <dir>] [--nodeps] [--nofiles] [--noscripts]
                        [--nomd5] [targets]
       rpm {--setperms} [-afpg] [target]
       rpm {--setugids} [-afpg] [target]
       rpm {--erase -e} [--root <dir>] [--noscripts] [--rcfile <file>]
                        [--dbpath <dir>] [--nodeps] [--allmatches]
                        package1 ... packageN
       rpm {-b|t}[plciba] [-v] [--short-circuit] [--clean] [--rcfile  <file>]
                        [--sign] [--test] [--timecheck <s>] specfile
       rpm {--rebuild} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm
       rpm {--recompile} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm
       rpm {--resign} [--rcfile <file>] package1 package2 ... packageN
       rpm {--addsign} [--rcfile <file>] package1 package2 ... packageN
       rpm {--checksig -K} [--nopgp] [--nomd5] [--rcfile <file>]
                           package1 ... packageN
       rpm {--rebuilddb} [--rcfile <file>] [--dbpath <dir>]
       rpm {--querytags}

Wszystkie te opcje są opisane w podręczniku systemowym "man" dotyczącym RPM.

5. A co tak naprawdę można zrobić z RPM?

RPM jest bardzo wygodnym narzędziem i jak można było się przekonać, ma sporo opcji. Najlepszą metodą zapoznania się z nimi są przykłady.

Pokazałem już najprostszą instalację i usuwanie pakietów, czas na trochę ciekawsze przykłady:

To było tylko parę przykładów, więcej znajdziesz np. w man-ie. Na pewno wpadniesz na ciekawsze w miarę jak będziesz lepiej poznawał RPM.

6. Tworzenie rpm-ów.

Tworzenie rpm-ów jest dość proste, szczególnie jeśli oprogramowanie które chcesz w nie włożyć poprawnie się instaluje.

Procedura tworzenia RPM-ów wygląda tak:

Zazwyczaj RPM tworzy zarówno pakiety binarne jak i źródłowe.

6.1 Plik rpmrc

W chwili obecnej, jedyny sposób konfiguracji RPM-a jest dostępny poprzez plik /etc/rpmrc. Przykładowy plik wygląda tak:

require_vendor: 1
distribution: Moja własna dystrybucja!
require_distribution: 1
topdir: /usr/src/me
vendor: Kubuśsoft
packager: Pakujący RPM w Kubuśsoft <pakiety@kubuśsoft.com.pl>

optflags: i386 -O2 -m486 -fno-strength-reduce
optflags: alpha -O2
optflags: sparc -O2

signature: pgp
pgp_name: Pakujący RPM w Kubuśsoft
pgp_path: /home/pakiety/.pgp

tmppath: /usr/tmp

Wiersz require_vendor zmusza RPM-a do szukania wiersza z nazwą producenta pakietów (vendor). Ta może pochodzić z pliku /etc/rpmrc lub z nagłówka pliku .spec. By wyłączyć tę opcję, zmień liczbę na 0. Analogicznie jest w przypadku wierszy require_distribution oraz require_group.

Następnym wiersz zawiera distribution i określa nazwę dystrybucji. Możesz ją zdefiniować tutaj, bądź później, w nagłówku pliku specyfikującego. Tworząc pakiet dla konkretnej dystrybucji warto zadbać by wiersz ten zawierał poprawną informację, nawet pomimo tego, że nie jest wymagany. Tyczy się to również wiersza vendor (producent), choć nazwa może być zupełnie dowolna (np. Joe's Software, Rock Music Emporium).

RPM pozwala również tworzyć pakiety dla różnych platform sprzętowych. Plik rpmrc może zawierać zmienną ``optflags'' wykorzystywaną przy building budowaniu tych elementów pakietu, które wymagają opcji zależnych od platformy. Dokładniejszy opis tej zmiennej pojawi się w jednym z następnych rodziałów.

Nie są to oczywiście wszystkie etykiety/makra. Jest ich więcej. By się im przyjrzeć spróbuj komendy:

rpm --showrc
która powinna wypisać wszystkie możliwe etykiety wraz z ich wartościami (o ile są ustawione).

6.2 Plik specyfikujący .spec

Niniejszy rozdział zawiera opis pliku specyfikującego dla pakietu. Plik taki są niezbędne by stworzyć pakiet. Zawiera on opis oprogramowania wraz z instrukcjami instalacyjnymi oraz listę wszystkich plików binarnych przez niego instalowanych.

Plik specyfikujący warto jest nazwać zgodnie z konwencją. Powinno to wyglądać mniej więcej tak: nazwa pakietu-kreska-numer wersji-kreska-numer modyfikacji-kropka-spec.

A tak wygląda przykładowy plik specyfikujący (eject-3.0-1.spec):

Summary: ejects ejectable media and controls auto ejection
Name: eject
Version: 1.4
Release: 3
Copyright: GPL
Group: Utilities/System
Source: sunsite.unc.edu:/pub/Linux/utils/disk-management/eject-1.4.tar.gz
Patch: eject-1.4-make.patch
Patch1: eject-1.4-jaz.patch
%description
This program allows the user to eject media that is autoejecting like
CD-ROMs, Jaz and Zip drives, and floppy drives on SPARC machines.

%prep
%setup
%patch -p1
%patch1 -p1

%build
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"

%install
install -s -m 755 -o 0 -g 0 eject /usr/bin/eject
install -m 644 -o 0 -g 0 eject.1 /usr/man/man1

%files
%doc README COPYING ChangeLog

/usr/bin/eject
/usr/man/man1/eject.1

6.3 Nagłówek

Nagłówek pliku .spec zawiera kilka standardowych pól które powinny być wypełnione. Oto znaczenie poszczególnych pól:

6.4 Sekcja Prep

Jest to druga część pliku specyfikującego. Używa się jej do przygotowania źródeł do kompilacji/instalacji. W niej powinny znajdować się wszystkie czynności niezbędne by nanieść poprawki do źródeł i doprowadzić je do stanu w którym będzie można wydać komendę make.

Jedną rzecz należy podkreślić: Każda z tych części jest tak naprawdę tylko miejscem do umieszczenia odpowiednich skryptów. Możesz po prostu napisać skrypt w sh a następnie umieścić go po znaczniku %prep by rozpakować i wprowadzić poprawki do swoich programów. By to ułatwić powstały specjalne makra.

Pierwszym z nich jest makro %setup. W swojej najprostszej formie (bez dodatkowych opcji w linii poleceń), rozpakowywuje ona źródła i zmienia bieżący katalog na katalog zawierający źródła. Poza tym ma jednak dodatkowe opcje:

Następne dostępne makra znajdują się w makrze %patch. Makro te pomaga zautomatyzować proces nanoszenie poprawek do źródeł. Możliwe są liczne opcje opisane poniżej:

To są wszystkie makra jakich potrzebujesz. Po ich poprawnym napisaniu można wykonać dowolne inne komendy konfiguracyjne poprzez stworzenie odpowiednich fragmentów skryptów w sh. Wszystko co zostanie umieszczone aż do makra %build (omawianego w następnym rozdziale) będzie wykonane przez sh. Przykłady powyżej mogą sugerować rzeczy jakie chciałbyś tam umieścić.

6.5 Sekcja Build

Dla tej sekcji nie ma jakichś specjalnych makr. Powinno się w niej umieszczać dowolne polecenia potrzebne do stworzenia pakietu po rozpakowaniu źródeł, naniesieniu poprawek i przejściu do katalogu roboczego. Jest to po prostu następny zbiór poleceń przekazany do sh, więc można tu używać dowolnych poprawnych poleceń sh (włącznie z komentarzami). Katalog roboczy na początku każdej z sekcji jest ustawiany na katalog główny z plikami źródłowymi, o czym trzeba pamiętać i w razie potrzeby przechodzić do odpowiednich podkatalogów.

6.6 Sekcja Install

Tu również nie ma jakichś specjalnych makr. Sekcja ta powinna zawierać listę poleceń potrzebnych do instalacji pakietu. Jeśli wykonujesz make install by zainstalować pakiet, umieść to tu. Możesz również nanieść poprawki do makefile'a zanim wykonasz make install. Jeśli nie to umieść tu sekwencję poleceń sh jakich potrzebujesz. Katalog roboczy, identycznie jak w poprzednim przypadku, jest ustawiany przed wykonaniem tych poleceń na główny katalog z plikami źródłowymi.

6.7 Opcjonalne sekcje pre i post dla sekcji Install/Uninstall

Możesz tu umieścić skrypty do wykonania przed i po instalacji/deinstalacji (tzn. sekcjami Install/Uninstall). Główny powód to np. potrzeba wykonania komendy ldconfig po instalacji bądź usuwaniu pakietów zawierających biblioteki dzielone. Makra są zdefiniowane jak poniżej:

Sekcje te mogą zawierać dowolne poprawne polecenia sh ( nie potrzebujesz wstawiać #!/bin/sh na początku).

6.8 Sekcja Files

W sekcji tej musisz wypisać pliki jakie wchodzą w skład pakietu. RPM nie potrafi określić jakie pliki zostają zainstalowan na skutek np. make install. Tego się po prostu NIE DA rozsądnie zrobić. Owszem, była propozycja wykonywania polecenia find przed i po instalacji pakietu. Jednak w systemach wieloużytkownikowych nie jest to zbyt sensowne gdyż w tym samym czasie mogło powstać wiele innych plików nie mających najmniejszego związku z instalowanym pakietem.

W tej sekcji dostępne jest pare specjalnych makr. Są one opisane poniżej:

Największą trudnością w liście plików jest podawanie katalagów. Jeśli np. podasz przez pomyłkę /usr/bin, to Twój pakiet rpm będzie zawierał wszystkie pliki w katalogu /usr/bin w Twoim komputerze.

6.9 Tworzenie pakietu

Katalogi z plikami źródłowymi

Jedną z podstawowych rzeczy jest poprawnie skonfigurowane katalogów w których RPM będzie budował pakiet. Robi się to poprzez plik /etc/rpmrc. Większość osób używa po prostu /usr/src.

Możliwe, że będziesz potrzebował utworzyć poniższe katalogi:

Próbne tworzenie pakietu

Pierwszą rzeczą do zroienia jest doprowadzenie plików źródłowych do takiego stanu by kompilowały i/lub instalowały się bez pomocy RPM-a. By to osiągnąć, rozpakuj źródła i zmień nazwę katalogu na $NAZWA.orig. Następnie ponownie rozpakuj źródła i pracuj na nich. Wejdź do ich katalogu i postępuj zgodnie z instrukcjia ich instalacji/kompilacji. Jeśli będzie konieczna edycja jakichś plików to konieczne będzie wygenerowanie pliku z poprawkami (patch). Jeśli doprowadzisz źródła do stanu w którym będą się poprawnie instalować/kompilować - wyczyść katalog źródłowy. Upewnij się, że wszystkie pliki stworzone w skrypcie konfiguracyjnym (configure) zostały usunięte. Następnie wyjdź z katalogu źródłowego i wykonaj coś takiego:

        diff -uNr dirname.orig dirname > ../SOURCES/dirname-linux.patch
(dirname w tym przykładzie to to samo co $NAZWA parę linii powyżej). Polecenie to stworzy plik z poprawkami jaki będzie mógł być wykorzystany w pliku specyfikujący. Zauważ, że ``linux'' w nazwie pliku z poprawkami jest jakimś wybranym identyfikatorem. Zamiast tego można użyć czegoś bardziej precyzyjnego jak np. ``config'' lub ``bugs'' (błędy) by opisać dlaczego poprawki były potrzebne. Przed użyciem pliku z poprawkami warto do niego zajrzeć by się upewnić, że przypadkiem nie znalazło się w nim coś niewłaściwego jak np. pliki binarne.

Tworzenie listy plików

Teraz, gdy źródła się kompilują i instalują i wiadomo jak to robić to zrób to, skompiluj i zainstaluj. Przyjrzyj się wynikowi instalacji i stwórz w ten sposób listę plików do użycia w pliku specyfikującym. Zazwyczaj plik specyfikujący powstaje równocześnie z opisywanymi tu krokami. Po prostu tworzy się go na początku wstawiając to co jest znane i potem w miarę postępu prac uzypełnia się go o brakujące kawałki.

Tworzenie pakietu RPM

Gdy plik specyfikujący jest gotowy, można już próbować tworzyć nowy pakiet. Najwygodniej jest to zrobić poniższym poleceniem:

        rpm -ba foobar-1.0.spec

Opcja -b ma parę interesującyh podopcji:

Jest też parę dodatkowych podopcji do opcji -b:

6.10 Testowanie pakietu

Po stworzeniu pakietu rpm źródłowego i binarnego należy je przetestować. Najprościej i najlepiej jest wykorzystać do tego zupełnie inny komputer niż ten na którym pakiet był tworzony. W końcu przy tworzeniu pakietu był on dość często instalowany i na komputerze na którym powstawał powinno być to zrobione dość dobrze.

Można też próbować rpm -u nazwapakietu.rpm na testowanym pakiecie ale może być to zdradliwe w sytuacji w której jakieś pliki zostały pominięte w liście plików i nie zostaną wtedy usunięte. Wtedy zainstalowany program będzie kompletny mimo tego, że rpm będzie błędny. Pamiętaj, że ponieważ Ty już zrobiłeś rpm -ba package, to zdecydowana większość osób instalujących Twój pakiet wykona jedynie rpm -i package. Upewnij się, że nie wykonujesz w sekcjach build lub install czegoś co powinno być zrobione gdy instalowany jest wyłącznie pakiet binarny.

6.11 Co robić z Twoimi nowymi RPM-ami ?

Gdy już stworzyłeś swój własny pakiet RPM (zakładając, że nie ma już takiego pakietu dostępnego pod postacią RPM) możesz udostępnić wynik swojej pracy innym (zakładając że to czego pakiet stworzyłeś może być tak udostępniane). By udostępnić, umieść to na ftp.redhat.com.

6.12 Co teraz?

Prosimy sprawdzić się, że nic nie zostało pominięte jeszcze raz czytając rozdziały o "Testowaniu" i "Co robić z nowymi RPM-ami". Chcemy mieć jako RPM wszystko co się da ale chcemy, żeby były to dobre RPM-y. Prosimy więc poświęcić trochę czasu na ich dokładne przetestowanie i prosimy też o umieszczenie ich w archiwum ftp tak, by każdy mógł z nich skorzystać. A także, prosimy upewnić się, że umieszczasz jedynie bezpłatne oprogramowanie. Oprogramowanie komercyjne i shareware nie powinno być umieszczane w archiwum o ile nie zawierają klauzuli w ich prawach autorskich to dopuszczającej. Dotyczy to np. Netscape, ssh, pgp, etc.

7. Tworzenie RPM-ów na wiele platform.

RPM może być wykorzystywany do tworzenia pakietów dla Intel i386, Digital Alpha pracujących pod Linux, oraz Sparc. Są też doniesienia o jego wykorzystaniu na platformach SGI i HP. RPM ma parę cech które czynią tworzenie pakietów na wiele platform prostszymi. Pierwszą z nich jest dyrektywa ``optflags'' w pliku /etc/rpmrc. Może ona być wykorzystana do ustawienia odpowiednich opcji i flag, specyficznych dla architektury, potrzebnych do kompilacji bądź instalacji. Następną cechą ułatwiającą tworzenie pakietów na wiele platform są makra ``arch'' w pliku specyfikującym. Mogą one być wykorzystane do wykonania różnych rzeczy zależnych od architektury na której pakiet jest instalowany. Następną taką cechą jest dyrektywa ``Exclude'' w nagłówku.

7.1 Przykładowy plik specyfikujący .spec

Poniżej zamieszczona jest część pliku specyfikującego dla pakietu ``fileutils''. Jest on przygotowany do instalacji na dwóch platformach: Alfach i Intelu.

Summary: GNU File Utilities
Name: fileutils
Version: 3.16
Release: 1
Copyright: GPL
Group: Utilities/File
Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz
Source1: DIR_COLORS
Patch: fileutils-3.16-mktime.patch

%description
These are the GNU file management utilities.  It includes 
programs
to copy, move, list, etc, files.

The ls program in this package now incorporates color ls!

%prep
%setup

%ifarch alpha
%patch -p1
autoconf
%endif
%build
configure --prefix=/usr --exec-prefix=/
make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s

%install
rm -f /usr/info/fileutils*
make install
gzip -9nf /usr/info/fileutils*

.
.
.

7.2 Dyrektywa optflags

W powyższym przykładzie przedstawione zostało użycie dyrektywy ``optflags'' z /etc/rpmrc. RPM_OPT_FLAGS przyjmują odpowiednią wartość w zależności od tego na jakiej platformie instalowany jest pakiet. Do pliku Makefile użytego w pakiecie należy nanieść poprawki by korzystał z tej zmiennej zamiast standardowych opcji (np. -m486 lub -O2). Możesz się zorientować co powinno być zrobione poprzez zainstalowanie pakietu źródłowego, jego rozpakowanie i przyjrzenie się plikowi Makefile. Następnie należy zajrzeć do plików z poprawkami dla pliku Makefile i sprawdzić jakie zmiany powinny być wprowadzone.

7.3 Makra

Makro %ifarch jest bardzo istotne dla tworzenia pakietów na wiele architektur. W większości przypadków potrzebujesz nanieść jedną lub dwie poprawki specyficzne tylko dla jednej, konkretnej architektury. W takiej sytacji RPM pozwala na naniesienie poprawki wyłącznie dla niej.

W powyższym przypadku, pakiet fileutils ma poprawkę dla maszyn 64-bitowych. To naturalnie w chwili obecnej stosuje się tylko do Alf. Tak więc dodajemy makro %ifarch nanoszące odpowiednią poprawkę:

%ifarch axp
%patch1 -p1
%endif
To zapewni, że poprawka nie będzie naniesiona na żadnej innej architekturze a wyłącznie na alfach.

7.4 Wyłączanie pewnych platform w pakietach

Można opiekować się źródłowymi RPM-ami w jednym katalogu dla wszystkich platform. Uzyskuje się to poprzez ``wyłączenie'' (ang. exclude) pewnych pakietów z tworzenia ich dla pewnych architektur, tak, że ciągle możliwym jest:

rpm --rebuild /usr/src/SRPMS/*.rpm
dające w wyniku poprawne pakiety. Jeśli aplikacja nie została jeszcze do tej pory przeniesiona na daną platformę to wystarczy dodać wiersz wygladający mniej więcej tak:
ExcludeArch: axp
do nagłówka pliku specyfikującego pakiet źródłowy. Następnie przebuduj pakiet na platformę na której już pracuje. W ten sposób uzyskuje się pakiet, który kompiluje się/tworzy się np. na Intel-u podczas gdy może być łatwo opuszczony na Alfie.

7.5 Ostatnie poprawki

Wykorzystanie RPM to tworzenia pakietów przeznaczonych na wiele platform jest zazwyczaj prostsze niż doprowadzenie pakietu do stanu w którym daję się on na nich zainstalować. Jednakże w miarę jak powstaje więcej i więcej pakietów w postaci binarnej staje się to coraz prostsze. Jeśli przy tworzeniu pakietu zabrniesz w ślepą uliczkę to jak zwykle, rozwiązaniem może być zajrzenie do kodu źródłowego podobnego pakietu.

8. Uwaga o prawach autorskich

Poniższy dokument i jego zawartość są chronione prawem autorskim. Rozpowszechnianie go i jego zawartości jest dozwolone tak długo jak długo jego pozostają one nie zmienione. Innymi słowy można go wyłącznie przeformatowywać, drukować i rozpowszechniać.

doc-linux-pl-2002.06.14.orig/html/SMB-HOWTO.pl.html0100664000175000017500000014667306770264140020203 0ustar covencoven SMB-Howto

SMB-Howto

Autor:David Wood, dwood@plugged.net.au v1.1, 25 Marca 1999
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.2, 18 Sierpnia 1999


Jest to dokument z serii HOWTO (Jak To Zrobić). Opisuje on jak używać Server Message Protocol (SMB), zwanego też Session Message Block, NetBIOS lub LanManager w Linuksie. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał można znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO.

1. Wprowadzenie.

Jest to dokument z serii HOWTO (Jak To Zrobić). Opisuje on jak używać w Linuksie Server Message Protocol, zwanego też Session Message Block, NetBIOS lub LanManager. Dokument ten skupia się na Linuksie, jednak Samba działa na większości systemów uniksowych.

Dokument ten jest prowadzony przez Davida Wooda dwood@plugged.net.au. Wszelkie dodatki, modyfikacje lub poprawki mogą być przesłane do mnie, aby je później umieścić w następnej wersji.

O wiele więcej dokumentacji znajduje się na stronie WWW Samby pod adresem www.samba.org. Możesz także korzystać z grupy dyskusyjnej comp.protocols.smb lub polskojęzycznej pl.comp.os.linux.sieci.

Protokół SMB używany jest przez Microsoft Windows 3.11, NT i 95/98 aby współdzielić zasoby dyskowe i drukarki. Maszyny Unix-owe (w tym także Linux) mogą korzystać z tych zasobów używając narzędzi stworzonych przez Andrew Tridgella. Przy pomocy narzędzi smbfs autorstwa Paal-Kr. Engstad (pke@engstad.ingok.hitos.no), Volker Lendecke (lendecke@namu01.gwdg.de) maszyny uniksowe mogą montować zasoby udostępniane z Windows.

Są cztery rzeczy, które można zrobić Sambą:

  1. Udostępniać dysk Linux-owy dla komputerów z Windows.
  2. Udostępniać dysk Windows-owy dla komputerów z Linux-em.
  3. Udostępniać drukarkę pod Linux-em dla Windows.
  4. Udostępniać drukarkę pod Windows dla Linux-a.

Wszystko to zostało opisane w tym dokumencie.

Zrzeczenie. Procedury i skrypty albo działały u autora, albo zostały opisane jako działające przez tych, którzy je napisali. Różne konfiguracje mogą nie działać z podanymi tutaj informacjami. Jeśli odkryjesz taką sytuację możesz napisać do autora list z sugestią na ulepszenie tego dokumentu, ale autor nic nie gwarantuje. A czego się spodziewałeś ? W końcu autor jest tyklo konsultantem.

Aby maszyny z systemami Windows 3.x mogły korzystać z SMB muszą mieć zainstalowany stos TCP/IP i DLL Win32. Oba te pakiety są dostępne na stronie WWW Microsoftu ( www.microsoft.com).

2. Dalsze informacje.

Dokument ten jest próbą opisania jak skonfigurować na Linux-ie podstawowe serwisy SMB związane z plikami i drukarkami. Samba jest bardzo złożonym i kompletnym pakietem. Nie ma sensu, żeby kopiować tutaj wszystko to co jest zawarte w dokumentacji dla tego pakietu.

Dalszych informacji możesz szukać w:

3. Instalacja.

Po pierwsz, aby używać Samby wszystkie twoje maszyny muszą byc w jednym segmencie sieci lokalnej i korzystać z protokołu TCP/IP. Samba nie będzie działać na innych protokołach. Jest to łatwe do osiągnięcia ponieważ Linux i Windows 95/98/NT są dostarczane z tym protokołem. Jednak jeśli używasz Windows 3.x, to będziesz musiał dodać obsługę tego protokołu.

Z usług SMB nie można korzystać poprzez routery. Jeśli chcesz takie coś zrobić, to musisz ustawić tunel IP, co jest poza tematyką tego HOWTO.

Najświeższe źródła Samby dostępne są pod adresem ftp.icm.edu.pl w katalogu /pub/samba. Oryginalny adres to ftp.samba.org.

Jeśli instalowałeś dystrybucję Red Hat mogłeś wybrać instalację Samby jako jedną z opcji. Niektóre inne dystrybycje też oferują binaria Samby.

Następujące demony są wymagane do pracy z Sambą. Zwykle znajdują się one w katalogu /usr/sbin i są uruchamiane w momencie startu systemu albo przez demon inetd. Przykładowe skrypt znajdują się w sekcji Uruchamianie demonów.


      smbd (Demon SMB) i nmbd (Świadczy usługi nameservera NetBIOS-u)

Zauważ, że serwis nazw oferowany przez demona nmbd różni się od tego oferowanego przez DNS (serwis nazw domen). Serwis nazw NetBIOS, to serwis nazw w stylu Windows używany do SMB. Innymi słowy, to że masz DNS nie oznacza, że Samba będzie umiała odczytywać nazwy komputerów.

Zwykle w systemie instalowane są następujące binaraia w katalogu /usr/bin:


   smbclient (Klient dla maszyn Unix-owych), smbprint (skrypt do
   drukowania na drukarce przyłączonej do hosta SMB), smbprint.sysv
   (To samo co wcześniej, ale dla systemu UNIX SVR4), smbstatus
   (Wyświetla bieżące połączenia SMB na lokalnym hoście), smbrun
   (Główny skrypt do uruchamiania aplikacji na hoście SMB)

Binaria do obsługi systemu plików (smbfs) omówione są w dalszej części dokumentu.

Dodatkowo zawarty jest w tym dokumencie skrypt o nazwie "print", który jest pożytecznym dokończeniem skryptu smbprint.

Pakiet Samba jest prosty w instalacji. Ściągnij go z podanego wcześniej miejsca i przeczytaj plik README znajdujący się w dystrybucji. Jest jeszcze plik docs/INSTALL.txt, który podaje krok po kroku co należy zrobić, aby zainstalować Sambę.

Postępując wraz z instalacją, umieść demony w /usr/sbin i binaria w /usr/bin. Zainstaluj strony do podręcznika systemowego "man" w /usr/local/man.

Kiedy będziesz instalował pakiet Samba, będziesz musiał podać miejsce, gdzie ma się znajdować plik konfiguracyjny smb.conf. Z reguły jest to katalog /etc, ale możesz go umieścić, gdzie ci się podoba. Dla dalszych instrukcji założymy, że plik konfiguracyjny umieściłeś w /etc, plik logujący to /var/log/samba-log.%m i katalog blokujący to /var/lock/samba.

Zainstaluj plik konfiguracyjny smb.conf. Przejdź do katalogu, gdzie została skompilowana Samba. Zajrzyj do katalogu examples/simple i przeczytaj plik README. Skopiuj znaleziony tam plik smb.conf do /etc. OSTROŻNIE !!! Jeśli masz dystrybucję Linux-a, która miała Sambę i zainstalowałeś ją to pewnie masz już plik smb.conf w katalogu /etc i lepiej zacznij od tego pliku. Jeśli nie chcesz umieszczać pliku konfiguracyjnego w /etc, to umieść go tam, gdzie chcesz i zrób symboliczne dołączenie:


     ln -s /gdzie/jest/smb.conf /etc/smb.conf

4. Uruchamianie demonów.

Dwoma demonami SMB są: /usr/sbin/smbd i /usr/sbin/nmbd.

Możesz je uruchomić przez demona inetd lub jako osobne procesy. Samba będzie odpowiadać trochę szybciej jeśli jest uruchomiona jako osobny demon niż z inetd.

W obu przypadkach powinieneś sprawdzić czy w pliku /etc/services znajdują się takie linie:


       netbios-ns      137/tcp         nbns
       netbios-ns      137/udp         nbns
       netbios-dgm     138/tcp         nbdgm
       netbios-dgm     138/udp         nbdgm
       netbios-ssn     139/tcp         nbssn

Upewnij się, że wszystkie są odkomentowane. W zależności od dystrybucji, możliwe, że będziesz musiał je dodać. Samba nie będzie w stanie dowiązać się do odpowiednich portów jeśli w tym pliku nie znajdą się powyższe linie.

Aby uruchomić demony przez inetd umieść następujące linie w pliku /etc/inetd.conf:


 Serwis NetBIOS dla Samby
      # netbios-ssn
      stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait
      root /usr/sbin/nmbd nmbd

Następnie wyślij sygnał HUP do procesu nr 1:


     kill -HUP 1 `cat /var/run/inetd.pid`

Dla użytkowników dystrybucji Red Hat. Aby uruchomić te demony ze skryptów startowych, umieść następujący skrypt w katalogu /etc/rc.d/init.d/smb i dołącz je symbolicznie do plików podanych w komentarzu:


     #!bin/sh

     #
     # /etc/rc.d/init.d/smb - startuje i zatrzymuje serwis SMB
     #
     # Następujące pliki powinny być symbolicznymi dołączeniami do
     # tego pliku:
     # /etc/rc.d/rc1.d/K35smb (Zatrzymuje serwis SMB podczas
     # zamknięcia systemu.
     # /etc/rc.d/rc3.d/S91smb (Startuje serwis SMB w trybie
     # wieloużytkownikowym
     # /etc/rc.d/rc6.d/K35smb (zatrzymuje serwis SMB podczas resetu)
     #
     
     # Biblioteka funkcji
     etc/rc.d/init.d/functions
           
     # Konfiguracja sieci
     etc/sysconfig/network
   
     # Sprawdź czy jesteśmy w sieci
     [ ${NETWORKING} = "no" ] && exit 0
       
     # Zobacz jak zostaliśmy wywołani
     case "$1" in
        start) echo -n "Starting SMB services: " 
                daemon smbd -D
                daemon nmbd -D
                echo touch /var/lock/subsys/smb
        ;;
        stop) echo -n "Shutting down SMB services: "
                killproc smbd
                killproc nmbd
                rm -f /var/lock/subsys/smb echo ""
        ;;
        *) echo "Usage: smb {start|stop}" exit 1
     esac

Od tłumacza: Jeśli używasz dystrybucji Slackware. Umieść poniższy fragment w skrypcie startowym /etc/rc.d/rc.local:


   
   # czy jesteśmy w sieci
   [ ${NETWORKING} = "no" ] && exit 0
   
   # Uruchmon demony Samby
   /usr/sbin/smbd -D
   /usr/sbin/nmbd -D

Jeśli podczas startu Samby pojawi się błąd mówiący coś o niemożności dowiązania się do portu 139, to prawdpodobnie jest inny proces Samby jeszcz działąjący. Sprawdź listę procesów (poleceniem 'ps auxww | grep mbd'), żeby zobaczyć czy to prawda.

5. Ogólna konfiguracja. (/etc/smb.conf)

Konfiguracja Samby na Uniksie jest kontrolowana jednym plikiem: /etc/smb.conf. W pliku tym umieszczasz zasoby jakie chcesz udostępnić dla świata i jakie restrykcje chcesz wprowadzić.

Ponieważ ta sekcja opisuje udostępnianie dysków i drukarek Linux-owych Windowsom, plik smb.conf będzie najprostszym z możliwych.

Nie martw się o szczegóły. Późniejsze sekcje wprowadzą ogólny koncept.

Każda sekcja pliku zaczyna się od nazwy jak np.: [global], [homes], [printers] itp.

Sekcja [global] definiuje kilka ogólnych zmiennych, które będą się odnosić do wszystkich udostępnianych zasobów.

Sekcja [homes] pozwala użytkownikom na dostęp do ich (i tyklo ich) katalogów domowych na lokalnej maszynie Linux-owej. Jeśli jakiś użytkownik Windows będzie chciał skorzystać z udostępnianych zasobów, to zostanie podłączony do swojego katalogu domowego. Zauważ, że aby to zrobić użytkownik musi mieć swoje konto na maszynie Linux-owej.

Poniższy przykładowy plik smb.conf pozwala użytkownikom na dostęp do swoich katalogów domowych i na zapis do katalogu tymczasowego. Aby użytkownik Windows zobaczył udostępniane zasoby, Linux musi być w tej samej sieci lokalnej. Użytkownik Windows po prostu dołącza dysk sieciowy z Menedżera Plików lub Eksploratora Windows.

W następnych sekcjach będą dodawane kolejne linie do tego pliku, aby umożliwić dostęp do większej ilości zasobów.


 etc/smb.conf
   ; 
   ; Po wprowadzeniu zmian do tego pliku zrestartuj demony Samby
   ; kill -9 `pidof smbd`; kill -9 `pidof nmbd`
   ; /usr/sbin/smbd; /usr/sbin/nmbd
   [global] Umieść to w pliku jeśli chcesz konto anonimowe guest account = nobody
      log file = /var/log/samba-log.%m lock directory = /var/lock/samba share
      modes = yes

   [homes] comment = Katalogi Domowe browseable = no read only = no create
      mode = 0750

   [tmp] comment = Miejsce na pliki tymczasowe path = /tmp read only = no
      public = yes

Po stworzeniu nowego pliku smb.conf dobrze jest zweryfikować czy jest poprawny. Można to zrobić przy pomocy programu testparm (informacje o nim znajdziesz na stronie podręcznika systemowego). Jeśli program ten nie zgłosi żadnych błędów, to smbd poprawnie załaduje ten plik.

Oto pewien trick: Jeśli twój serwer Samba ma więcej niż jeden interfejs ethernetowy, smbd może dołączyć się do złego. Jeśli tak się stanie, to możesz zmusić smbd do dowiązania się do dobrego przez dodanie do sekcji [global] poniższej linii:


interfaces = 192.168.1.1/24

Uwaga: Liczba po znaku '/' odnosi się do maski podsieci. "24" to wartość jaką należy użyć dla niepodzielonej klasy C. Więcej informacji okalkulacjach dotyczących podsieci znajdziesz pod adresem www.ziplink.net/~ralphb/IPSubnet/index.html.

Dostępne jest graficzne narzędzie konfiguracyjne do Samby: GtkSamba. Zerknij pod adres www.open-systems.com/gtksamba.html.

6. Udostępnianie dysku Linuksowego komputerom z Windows.

Jak widać na powyższym przykładzie udostępnianie dysków Linux-owych użytkownikom Windows jest proste. Dostęp do zasobów udostępnianych poprzez Sambę można w bardzo dużym stopniu kontrolować.

Aby udostępnić wszystkim jakieś zasoby, dodaj poniższe linie do smb.conf:


   [public]     
   comment = Public Stuff path = /home/public public = yes writable = yes
      printable = no

Aby umożliwić zapis do tego katalogu tylko dla członków grupy staff, zmodyfikuj te linie w następujący sposób:


   [public]
   comment = Public Stuff path = /home/public public = yes writable = yes
      printable = no write list = @staff

Kiedyś było to bardzo proste: po prostu startowałeś Sambę i zasoby można było przeglądać z Windows na PC. Jednak Microsoft ostatnio trochę utrudnił życie korzystającym z Samby. Systemy Windows 98, Windows NT (z service pack 3 i nowszym) i ostatnie Windows 95 używają teraz standardowo kodowanych haseł. Samba natomiast korzysta domyślnie z niekodowanych haseł. Nie można przeglądać zasobów jeśli albo klient albo serwer używa kodowanych haseł ponieważ nie można połączyć się anonimowo.

Jeśli taki właśnie konflikt występuje u ciebie, to podczas próby połączenia się z zasobem powinieneś zobaczyć okienko z komunikatem: "You are not authorized to access that account from this machine".

Możesz skonfigurować albo Sambę do używania zakodowanych haseł, albo Windows do używani niekodowanych haseł.

Konfigurowanie Windows do używania kodowanych haseł Samby:

Windows 95/98

Używając edytora rejestrów (regedit) stwórz takie ustawienie: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP dodaj nową wartość DWORD: Value name: EnablePlainTextPassword Data: 0x01.

Windows NT

Używając edytora rejestrów (regedit) stwórz takie ustawienie: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters, dodaj nową wartość DWORD: Value Name: EnablePlainTextPassword Data: 0x01.

Kiedy te zmiany zostaną zrobione, zresetuj komputer z Windows i spróbuj podłączyć się do jakiegoś zasobu z Samby. Powinno to działać o ile serwere Samby używa niekodowanych haseł

Konfigurowanie Samby do używania haseł kodowanych:

W sekcji [global] w pliku /etc/smb.conf dodaj następujące linie:


       encrypt passwords = yes
       smb passwd file = /etc/smbpasswd

Zanim to zrobisz zachęcam mocno do przeczytania plików ENCRYPTION.txt, Win95.txt i WinNT.txt w dokumentacji do Samby.

Jeśli twoi klienci i serwer używają kodowanych haseł nie będziesz mógł przeglądać zasobów serwera zanim nie zostanie zainicjowane pierwsze połączenie z poprawną autentykacją. Aby to uczynić wpisz ręcznie nazwę zasobu w Menedżerze Plików lub Eksplorerze w postaci \\<nazwa serwera>\<nazwa zasobu>. Zaloguj się z poprawnym loginem i hasłem na tym serwerze.

Jeśli podejrzewasz, że serwis nazwa NetBIOS jest źle skonfigurowany (może dlatego, że pojawiają się błędy "host not found" podczas połączenia), to spróbuj użyć tylko adresu IP serwera \\<IP serwera>\<nazwa zasobu>.

Żeby nazwy plików pojawiały się poprawnie możliwe, że musisz dodać kilka ustawień do odpowiedniej sekcji zasobu. Poniższe działa poprawnie dla Windows 95/98/NT, ale możliwe, że trzeba te ustawienia zmodyfikować w przypadku Windows 3.x:


      ; Mangle case = yes zdaje się podawać poprawne nazwy
      ; dla Win 95/98
      mangle case = yes

      ; Czy rozróżniać duże i małe litery
      case sensitive = no

      ; Domyślna wielkość liter przy tworzeniu plików
      default case = lower

      ; Zachowaj ustawienia dot. liter dla wszystkich plików
      preserve case = yes

      ; Zachowaj ustawienia dor. liter dla nazwa dos-owych (8.3)
      short preserve case = no

Więcej informacji na temat różnych sposobów udostępniania zasobów znajdziesz w dokumentacji do Samby. Możliwości konfiguracji Samby są o wiele większe niż pokazane tutaj. Na początek jednak wystarczy. Jeśli chcesz zrobić coś bardziej zaawansowanego, to zajrzyj na wspomnianą wcześniej stronę WWW Samby.

7. Udostępnianie dysku spod Windows maszynom z Linux-em.

Wraz z dystrybucją Samby otrzymujemy klienta dla Unix-ów. Jego interfejs poleceń jest podobny do ftp. Możesz go używać, aby przenosić pliki między Windowsowym "serwerem" a klientem Linux-owym.

Aby zobaczyć jakie zasoby sa udostępnione na danym hoście napisz:


     /usr/sbin/smbclient -L host

gdzie host jest nazwą maszyny, której zasoby chcesz zobaczyć. Polecenie to zwróci listę nazw serwisów - to znaczy nazw dysków lub drukarek, które może udostępnić. Serwer Samby będzie cię pytał o hasło, o ile nie ma skonfigurowanego bezpiecznego dostępu.

Np.


     smbclient -L zimmermann

Polecenie to powinno wyświetlić coś na kształt:


 Server time is Sat Aug 10 15:58:27 1996 Timezone is UTC+10.0
Password: Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]

   Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[]

           Sharename      Type      Comment
           ---------      ----      -------
           ADMIN$         Disk      Remote Admin public Disk Public C$ Disk
           Default share IPC$ IPC Remote IPC OReilly Printer OReilly print$
           Disk Printer Drivers


   This machine has a browse list:

           Server               Comment
           ---------            -------
           HOPPER               Samba 1.9.15p8 KERNIGAN Samba 1.9.15p8 LOVELACE
           Samba 1.9.15p8 RITCHIE Samba 1.9.15p8 ZIMMERMAN

Browse list pokazuje inne serwery SMB udostępniające zasoby w sieci.

Aby użyć klienta napisz:


     /usr/sbin/smbclient serwis <hasło>

gdzie serwis jest nazwą maszyny i zasobu. Na przykład jeśli próbujesz dostać się do katalogu, który jest udostępniany jako public na maszynie o nazwie zimmermann, serwisem byłoby: \\zimmerman\public. Chociaż z powodu powłoki w Linux-ie będziesz musiał oznaczyć znaki \ specjalnie i polecenie ostatecznie wygląda tak:


     usr/sbin/smbclient \\\\zimmerman\\public hasło

gdzie hasło jest łańcuchem znaków będącym twoim hasłem.

Pojawi się wtedy znak zachęty klienta Samby:


    Server time is Sat Aug 10 15:58:44 1996 Timezone is UTC+10.0
    Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager
    3.51] smb: \>

Napisz 'h', aby uzyskać pomoc:


     smb: \> h ls dir lcd cd pwd get mget put mput rename more mask del rm
     mkdir md rmdir rd prompt recurse translate lowercase print printmode
     queue cancel stat quit q exit newer archive tar blocksize tarmode
     setmode help ?  !  smb: \>

Jeśli umiesz używać ftp, to nie powinieneś potrzebować czytać podręcznika systemowego na temat smbclient.

smbclient może być dobry do testowania jednak szybko może się znudzić w codziennej pracy. Będziesz pewnie chciał używać pakietu smbfs. Zawarte są tam dwa proste narzędzia: smbmount i smbumount. Działają dokładnie tak samo jak linuksowe polecenia mount i umount z tym, że operują na zasobach SMB.

Pakiet smbfs jest zawarty w większości dystrybucji Linuksa. Jedna ważna uwaga: Musisz mieć wkompilowaną w jądro obsługę systemu plików SMB (smbfs), aby móc używać tych narzędzi!

8. Udostępnianie drukarki Linux-owej komputerom z Windows.

Aby udostepnić drukarkę Linux-ową Windowsom musisz się upewnić, że drukarka działa dobrze pod Linux-em. Jeśli możesz drukować spod Linux-a to ustawienie serwera SMB dla drukarki jest bardzo proste.

Przeczytaj Priniting-HOWTO na temat ustawienia drukarki pod Linux-em.

Ponieważ autor używa drukarki połączonej z Windows NT (bardzo dawno temu - zanim nasza sieć została całkiem przeniesiona na Linuksa), sekcja ta nie powinna być brana za definicję, ale bardziej jako sugestia. Jeśli ktokolwiek ma ochotę się podzielić szczegółami na temat innych konfiguracji proszę o kontakt, aby ta sekcja mogła zostać skończona: dwood@plugged.net.au.

Dodaj konfigurację na temat drukowania do smb.conf:


     [global]
     printing = bsd printcap name = /etc/printcap load printers = yes
     log file = /var/log/samba-log.%m lock directory = /var/lock/samba

     [printers] comment = Wszystkie drukarki security = server path = /var/spool/lpd/lp
     browseable = no printable = yes public = yes writable = no
     create mode = 0700

     [ljet] security = server path = /var/spool/lpd/lp printer name = lp
     writable = yes public = yes printable = yes
     print command = lpr -r -h -P %p %s

Upewnij się, że ścieżka do drukarki (w tym wypadku w sekcji ]ljet[) jest taka sama jak katalog zadań w etc/printcap.

Linie:


     printcap name = /etc/printcap
     load printers = yes

decydują czy wszystkie drukarki zdefiniowane w /etc/printcap powinny być załadowane. Jeśli to zrobisz, to nie ma sensu konfigurować drukarek indywidualnie. Sekcja [printers] określa ustawienia dla drukarek, które chcesz wyraźnie zdefiniować. Jeśli twój system drukowania nie działa w ten sposób (BSD), to musisz skonfigurować fałszywy plik konfiguracyjny dla drukarek (albo użyć techniki z poleceniem 'print'; zobacz dalej). Więcej informacji na temat drukowania znajdziesz w Printing-HOWTO.

Pożyteczną techniką testowania połączenia sieciowego jest zmiana polecenia print na:


     print command = cp %S /tmp/print.%P.%S

Można potem przeanalizować plik wynikowy.

UWAGA: Są pewne problemy przy udostępnianiu drukarki Unixowej przez Sambę komputerom z Windows NT. Jeden problem to taki, żeby NT widziało poprawnie drukarkę. Aby go zlikwidować przeczytaj plik docs/WinNT.txt, który jest dostarczany wraz z dystrybucją. Drugi problem to hasła. Przeczytaj ten sam plik, aby rozwiązać ten problem.

Oleg L. Machulskiy (machulsk@shade.msu.ru) proponuje, że lepszym poleceniem byłoby:


       print command = smb2ps %s | lpr -r -h -P %p

gdzie smb2ps to skrypt zamieniający plik otrzymany z Windows na bardziej użyteczny PostScript. Musi on odciąć pierwsze 3 linie i ostatnie dwie ponieważ te linie zawierają pewne kody PJL lub PCL.

Takie podejście jest potrzbne tylko wtedy jeśli Windows u ciebie drukuje PCL a nie prawdziwy PostScript. Dowiedziałem się, że Windows 95/98/NT nie posiadają same z siebie sterownika do PostScriptu, ale sterownik "Digital turbo Printserver 20" jest dobrym zamiennikiem takiego w większości przypadków. Słyszałem także, że sterownik "Apple LaserWriter II NTX" działa dobrze.

Jeff Stern (jstern@eclectic.ss.uci.edu) zgłosił coś takiego, co może niektórym z was pomóc:

--------------------------%<----------------------------------

Mój problem polegał na tym, że mogłem drukować na drukarce z samego Linuksa, ale nie mogłem drukować na niej z Windows 95. Kiedy próbowałem polecenia smbclient \\eclectic\belen -P i potem próbowałem wydrukować plik pojawiały się komunikaty o braku dostępu (access denied). Tak więc ustawiłem dla katalogu /var/spool/lpd/lp1 atrybuty 777. Przykro mi, ale musiałem to zrobić. Mogłem też wszystkich użytkowików zapisać do grupy 'lp' i ustawić takie prawa dla tej grupy, albo zmienić właściciela grupowego katalogu na 'users' ... . Ale jak na razie to działa z prawami root:lp 777.

Inną rzeczą jaką administratorzy muszą wiedzieć, to fakt, że nazwa konta,z którego użytkownik próbuje drukować z Windows, musi istnieć także na Linuksie. I tak: jeśli na Windows jest użytkownik 'joe', ti na Linuksie musi być też użytkownik 'joe'. Hasło logowania użytkownika 'joe' będzie hasłem dostępu do drukarki na Linuksie. Użytkownik będzie zapytano o to hasło podczas dodawania drukarki sieciowej do swojego komputera.

Myślałem, że to nie będzie problemem u mnie, bo ustawiłem swoją drukarkę jako 'public' (ogólnie dostępną) w /etc/smb.conf. Ale jednak wciąż jest pytanie o hasło. Windows nie daje niestety możliwości podania innego loginu dla drukarki zdalnej. Używa po prostu tego, którym zalogowałeś się do Windows.

--------------------------%<----------------------------------

Dr. Michael Langner (langner@fiz-chemie.de) wskazuje, że problemu z prawami dostępu dla katalogu /var/spool/lpd/ można uniknąć przez użycie takich ustawień:


path = /tmp
print command = lpr -r -P%p %s

Czasami pojawi się błąd podczas przetwarzania PostScriptu z Windows, który powoduje wydrukowanie dodatkowej strony na końcu każdego zadania. Na początku każdej takiej strony znajduje się ''"%%[ Lastpage ]%%". Zdarza się to tylko w Windows 95/98 i spowodowane jest błędami w PostScripcie.

Jednym ze sposobów, aby sobie z tym poradzić jest użycie skryptu usuwającego ten kawałek złego PostScriptu z zadania wydruku. Innym sposobem jest znalezienie lepszego sterownika do PostScriptu do Windows. Najlepszym sposobem jest prawdopodobnie użycie LPRng zamiast PostScriptu do drukowania na serwerze Samby.

Erik Ratcliffe (erik@caldera.com) z Caldery powiedział mi, że używanie LPRng oznacza, że na maszynach z Windows może byc użyty każdy sterownik. Na serwerze Samby, używali oni takiego pliku /etc/printcap:


       raw:\
               :rw:sh:
               :lp=/dev/lp1
               :sd=/var/spool/lpd/raw
               :fx=flp

LPRng nie wyamaga znaków ':\' na końcu każdej linii. Wciąż potrzebna jest pozycja dotycząca drukarek w pliku /etc/smb.conf. Polecenie 'print' musi używać drukarki zdefiniowanej jako "raw" w /etc/printcap i dane muszą być wysyłane do tej drukarki binarnie. Spróbuj użyc poniższej linii:


       print command = lpr -b -Praw %s

Możliwe też, że będziesz musiał skonfigurować kolejkowanie na Windows 95, tak żeby wysyłać wydruki bezpośrednio do drukarki zamiast je kolejkować.

9. Udostępnianie drukarki spod Windows komputerom z Linux-em.

Aby udostępnić drukarkę spod Windows-ów musisz zrobić następujące rzeczy:

  1. Musisz mieć poprawne pola w /etc/printcap i muszą one odpowiadać lokalnej strukturze katalogów (katalog dla drukarki itp.)
  2. Musisz mieć skrypt /usr/bin/smbprint. Skrypt ten znajduje się w źródłach Samby, ale nie w każdym pakiecie binarnym. Poniżej znajduje się trochę zmodyfikowana wersja tego skryptu.
  3. Jeśli chcesz zamieniać pliki ASCII na PostScript, musisz mieć nenscript albo jego ekwiwalent. nenscript jest konwerterem PostScript-owym i jest z reguły instalowany w /usr/bin.
  4. Możesz ułatwić drukowanie poprzez Sambę pisząc skrypt. Poniżej podany jest prosty skrypt w Perl-u obsługujący pliki ASCII, PostScript i stworzony PostScript.
  5. Mógłbys też użyć MagicFilter do powyższych zadań. Szczegóły na temat konfiguracji tego filtru są podane za skryptem w perlu. Zaletą tego filtru jest znajomość wielu formatów plików i umiejętność ich konwersji.

Poniższe pola w /etc/printcap są dla drukarki HP 5MP dołączonej do komputera z Windows NT.


     cm - komentarz; lp - urządzenie, na które ma być wysłany wydruk;
     sd - katalog zadań dla drukarki (na lokalnym komputerze); af -
   katalog accounting; mx - maksymalny rozmiar pliku (0 - bez
   ograniczenia); if - nazwa filtru wejściowego (skryptu).

Więcej informacji znajdziesz w Printing-HOWTO lub w podręczniku systemowym dla "printcap".


 etc/printcap
   #
   # //zimmerman/oreilly przez smbprint
   #
   lp:\ cm=HP 5MP Postscript OReilly na zimmerman:\ lp=/dev/lp1:\
           :sd=/var/spool/lpd/lp:\ af=/var/spool/lpd/lp/acct:\ mx#0:\
           :if=/usr/bin/smbprint:

Upewnij się, że katalogi zadań i zliczania (accounting) istnieją i są zapisywalne oraz że if ma poprawną ścieżkę do scryptu smbprint (patrz poniżej) i że lp wskazuje poprawne urządzenie (plik specjalny w katalogu /dev)

Następnym krokiem jest skrypt smbprint. Zwykle znajduje się on w /usr/bin i jest przypisywany Andrew Tridgellowi - osobie, która stworzyła Sambę o ile wiem. Przychodzi on wraz z dystrybucją źródeł Samby, ale nie ma go w dystrybucji binariów, więc go tutaj stworzyłem.

Możesz przejrzeć go dokładniej. Przerobiłem go trochę, ponieważ przeróbki wydawały mi się użyteczne.


   #!/bin/sh
   # Skrypt ten jest filtrem wejściowym do drukowania na drukarce
   # dołączonej do Unix-a. Używa programu smbclient do drukowania
   # pliku. Na przykład twój printcap mógłby wyglądać nastepująco:
   #
   #
   # smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
   #
   #
   # Stworzyłby on drukarkę o nazwie smb, która drukowałaby poprzez
   # ten skrypt. Musiałbyś stworzyć katalog zadań /usr/spool/smb z
   # odpowiednimi dla twojego systemu prawami dostępu i właścicielem.
   # 
   # Ustaw następujące rzeczy na serwer i serwis przez, który chcesz
   # drukować. W tym przykładzie mam PC-ta z WfWg o nazwie "lapland",
   # który ma drukarkę o nazwie printer bez hasła.
   #
   #
   # W dalszej części skrypt został przerobiony przez hamilton@ecnz.co.nz
   # (Michael Hamilton, tak aby serwer, serwis i hasło mogły być
   # przeczytane z pliku /usr/var/spool/lpd/PRINTNAME/.config
   #
   # Aby to działało /etc/printcap musi mieć pole af:
   #
   #   cdcolour:\ cm=CD IBM Colorjet on 6th:\ sd=/var/spool/lpd/cdcolour:\
   #       :af=/var/spool/lpd/cdcolour/acct:\ if=/usr/local/etc/smbprint:\
   #       :mx=0:\ lp=/dev/null:
   #
   # Plik /usr/var/spool/lpd/PRINTNAME/.config powinien zawierać:
   #   server=PC_SERVER service=PR_SHARENAME password="password"
   #
   # Np. server=PAULS_PC service=CJET_371 password=""

   #
   # Plik, do którego mają byc zapisywane wiadomości ze śledzenia;
   # możesz zmienić na /dev/null jeśli chcesz:
   #
   logfile=/tmp/smb-print.log logfile=/dev/null


   #
   # Ostatnim parametrem do filtra jest nazwa pliku accounting.
   #
   spool_dir=/var/spool/lpd/lp config_file=$spool_dir/.config

   # Powinien czytać te zmienne z pliku konfiguracyjnego: serwer
   # serwis hasło użytkownik
   eval `cat $config_file`

   # Trcohę pomocy, zmień >> na > jeśli chcesz zachować trochę
   # miejsca na dysku.
   #
   echo "server $server, service $service" >> $logfile

   (UWAGA Możesz dodać linię `echo translate' jesli chcesz
   # automatycznego tłumaczenia CR/LF podczas drukowania.   
        echo translate echo "print -" cat
   ) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user
   -N -P >>
   $logfile

Większość dystrybucji Linux-owych posiada nenscript do zamiany dokumentów ASCII na PostScript. Następujący skrypt w Perl-u ułatwia życie stwarzając prosty interfejs dla drukowania w Linux-ie przez smbprint.


     Stosowanie: print [-a|c|p] <nazwa_pliku>
     -a drukuje <nazwa_pliku> jako ASCII; c drukuje <nazwa_pliku>
     sformatowane jako źródło; -code p drukuje <nazwa_pliku> jako
     PostScript.
     Jeśli nie ma żadnej opcji, print próbuje odgadnąć typ pliku i
    odpowiednio go wydrukować.

Użycie smbprint do drukowania plików ASCII powoduje obcinanie długich linii. Ten skrypt dzieli długie linie w miejscu spacji (zamiast w środku słowa) jeśli jest to możliwe.

Formatowanie źródła odbywa sie przy pomocy programu nenscript. Bierze on plik ASCII i formatuje go w dwie kolumny z dodatkowym nagłówkiem (data, nazwa pliku, itp.) Zlicza także ilość linii. Wzorując się na tym przykładzie możesz zrobić inne typy formatowania.

Dokumenty PostScript-owe są już sformatowane więc przechodzą bezpośrednio do drukarki.


 usr/bin/perl

# Skrypt:   print Autorzy: Brad Marshall, David Wood
#           Plugged In Communications Date: 960808
#
# Skrypt do drukowania na drukarce oreilly, która jest dołączona do
# komputera zimmerman. Opis działania: Jako argumenty przyjmuje pliki
# różnych typów i wysyła je odpowiednio do skryptu drukujacego Samby
#
# Obecnie obsługiwane typy plików:
#
# ASCII         - Upewnij się, że linie dłuższe niż $line_length zostały
#               podzielone w miejscu spacji.
# PostScript    - Nie robi nic.
# Code          - Formatuje na PostScript używając "nenscript", aby wszystko
#               było odpowiednio wyświetlone (ułożenie, czcionki, itd.)
#
#
# Ustaw maksymalną ilość znaków w linii dla plików ASCII. line_length
$= 76;

# Ustaw ścieżkę i nazwę skryptu drukującego Samby print_prog = 
$"/usr/bin/smbprint";

# Ustaw ścieżkę i nazwę "nenscript-u" (zamiana ASCII-->PostScript)
$nenscript = "/usr/bin/nenscript";

unless ( -f $print_prog ) { die "Can't find $print_prog!";
}
unless ( -f $nenscript ) { die "Can't find $nenscript!";
}

&ParseCmdLine(@ARGV);

# DBG print "filetype is $filetype\n";

if ($filetype eq "ASCII") { ero;wrap($line_length); elsif ($filetype eq
        &"code") {
} ero;codeformat; elsif ($filetype eq "ps") {
        &createarray; else {
} print "Sorry..no known
        &file type.\n"; exit
} 0;
}
# Wyślij tablcę do smbprint open(PRINTER, "|$print_prog") || die "Can't
open $print_prog: $!\n"; foreach
$line (@newlines) {
        print PRINTER $line;
}
# Wyślij dodatkowy znak LF jeśli plik ma niekompletną ostatnią linię. print
PRINTER "\n"; close(PRINTER); print "Completed\n"; exit 0;

# --------------------------------------------------- #
#        Wszystko poniżej jest procedurą              #
# --------------------------------------------------- #

sub ParseCmdLine { Interpretuje wiersz poleceń, szukając jakiego typu jest
        # plik

        # Gets $arg and $file to be the arguments (if they exists) and the
        # filename
        if ($#_ < 0) { ero;usage;
        }
        # DBG foreach $element (@_) { print "*$element* \n";
#       }

        $arg = shift(@_); if ($arg =~ /\-./) { cmd = $arg; DBG print "\$cmd
        found.\n";

                $file = shift(@_); else { file = $arg;
        }
        
        # Definiowanie typu pliku dopóki ($cmd) { Nie mamy argumentów

                if ($file =~ /\.ps$/) { filetype = "ps"; elsif ($file =~
                        $/\.java$|\.c$|\.h$|\.pl$|\.sh$|\.csh$|\.m4$|\.inc$|\.html$|\.htm$/)
                        ${ filetype = "code"; else { filetype = "ASCII";
                }

                # Przerób $file odpowiednio do jego typu i zwróć $filetype
        } else { Mamy typ pliku w $arg if ($cmd =~ /^-p$/) {
                filetype = "ps"; elsif ($cmd =~
                        $/^-c$/) { filetype
                } = "code"; elsif ($cmd =~
                        $/^-a$/) {
                } filetype = "ASCII"
                }
        }
}

sub usage { print " Stosowanie: print [-a|c|p] <plik>
       -a drukuje <plik> jako ASCII c drukuje <plik> sformatowany jako
         źródło
       -code p drukuje <plik> jako PostScript
        Jeśli nie ma żadnej opcji, print próbuje odgadnąć typ pliku i
        odpowiednio go wydrukować.\n
";
        exit(0);
}

sub wrap { Stwórz tablicę linii w pliku, gdzie każda linia jest krótsza od
        # podanej ilości znaków i jest podzielona tylko w miejscach spacji

        # Pobierz ilość znaków jaka może być w linii.  limit =
        $pop(@_);

        # DBG print "Entering subroutine wrap\n"; print "The line length
        #limit is $limit\n";

        # Wczytaj plik, sformatuj i umieść w tablicy.  open(FILE,
        "<$file") || die "Can't open $file: $!\n"; while(<FILE>) {
                $line = $_;
                
                # DBG print "The line is:\n$line\n";

                # Podziel linię jeśli jest dłuższa niż podana ilość znaków.  while (
                length($line) > $limit ) {
                        
                        # DBG print "Wrapping...";

                        # Pobierz pierwsze $limit+1 znaków.  part =
                        $substr($line,0,$limit +1);

                        # DBG print "The partial line is:\n$part\n";

                        # Sprawdź czy ostatni znak jest spacją. 
                        $last_char = substr($part,-1, 1);
                        if ( " " eq $last_char ) { Jeśli tak, wydrukuj resztę.

                            # DBG print "The last character was a space\n";

                            substr($line,0,$limit + 1) = "";
                            substr($part,-1,1) = "";
                            push(@newlines,"$part\n");
                        } else { Jeśli nie, znajdź ostatnią spację w
                                # pod-linii i drukuj do niej

                            # DBG print "The last character was not a
                            #space\n";

                             # Usuń znaki dalsze niż $limit
                             substr($part,-1,1) = ""; Odwróć linię
                             # aby ułatwić odnajdywanie ostatniej spacji
                             $revpart = reverse($part);
                             $index = index($revpart," ");
                             if ( $index > 0 ) {
                               substr($line,0,$limit-$index) = "";
                               push(@newlines,substr($part,0,$limit-$index)
                                   . "\n"); else { Nie było spacji w linii
                             } więc
                               # wydrukuj do $limit.
                               substr($line,0,$limit) = "";
                               push(@newlines,substr($part,0,$limit)
                                   . "\n");
                             }
                        }
                }
                push(@newlines,$line);
        }
        close(FILE);
}

sub codeformat { Wywołaj procedurę wrap i przefiltruj przez nenscript
        &wrap($line_length);
        
        # Przepuść wynik przez nenscript, aby utworzyć plik PostScript,
        # który pasuje do jakiegoś przyzwoitego formatu źródeł do drukowania
        # (ułożenie, czcionki Courier, ilość linii). Najpierw wydrukuj to do
        # pliku tymczasowego.
        $tmpfile = "/tmp/nenscript$$";
        open(FILE, "|$nenscript -2G -i$file -N -p$tmpfile -r") || die "Can't
                open nenscript: $!\n"; foreach $line (@newlines)
        {
                print FILE $line;
        }
        close(FILE);
        
        # Wczytaj plik tymczasowy spowrotem do tablicy, tak aby mógł być
        # wysłany do skryptu print Samby.
        @newlines = ("");
        open(FILE, "<$tmpfile") || die "Can't open $file: $!\n";
        while(<FILE>) {
                push(@newlines,$_);
        }
        close(FILE); system("rm $tmpfile");
}

sub createarray { Stwórz tablicę dla PostScript-u open(FILE, "<$file") ||
        # die "Can't
        open $file: $!\n"; while(<FILE>) {
                push(@newlines,$_);
        }
        close(FILE);
}

Teraz sposób z MagicFilter. Dziękuję za tę informację Alberto Menegazzi ( flash.egon@iol.it).

Alberto pisze:

--------------------------%<----------------------------------

1) Zainstaluj MagicFilter dla odpowiednich drukarek w /usr/bin/local/, ale nie umieszczaj w /etc/printcap tego co sugeruje dokumentacja do tego filtru.

2) Utwórz plik /etc/printcap na podobieństwo tego poniżej (to jest konfiguracja dla mojej drukarki LaserJet 4L):


lp|ljet4l:\
        :cm=HP LaserJet 4L:\
        :lp=/dev/null:\                         # or /dev/lp1
        :sd=/var/spool/lpd/ljet4l:\
        :af=/var/spool/lpd/ljet4l/acct:\
        :sh:mx#0:\
        :if=/usr/local/bin/main-filter:

Powinieneś wiedzieć, że lp=/dev/... otwierane jest z lokowaniem, tak więc powinny być używane virtualne urządzenia; jedno dla każdej odległej drukarki.

Np. stworzone przez 'touch /dev/ljet4l'.

3) Stwórz filtr /usr/local/bin/main-filter jak poniżej:


#! /bin/sh
logfile=/var/log/smb-print.log
spool_dir=/var/spool/lpd/ljet4l
(
  echo "print -"
    /usr/local/bin/ljet4l-filter
) | /usr/bin/smbclient "\\\\SHIR\\HPLJ4" -N -P >> $logfile

P.S. Oto cytat z mini-HOWTO Print2Win na temat lokowania i po co tworzyć wirtaulne drukarki.

---Początek cytatu

Wskazówka od Ricka Bresslera:

Dobra rada. Ja używam czegoś bardzo podobnego. Jedna pomocna wskazówka, to poniżej nie jest dobrym pomysłem:


        :lp=/dev/null:\

lpr otwiera plik podany w ustawieniu lp= na wyłączność. Robi tak, żeby zapobiec zapisywaniu przez wiele procesów do tej samej drukarki w tym samym czasie.

Ubocznym efektem tego jest, że w twoim przypadku 'eng' i 'colour' nie mogą drukować w tym samym czasie (zwykle mniej lub bardziej przezroczyste, ponieważ będą raczej drukowały szybko no i jest też kolejka. Tak że nie powinieneś niczego zauważyć). Ale każdy inny proces, który spróbuje zapisać do /dev/null przerwie działanie.

W systemie jednoużytkownikowym nie jest to problem. Ja mam system z 50. drukarkami - i tam byłby to problem.

Rozwiązaniem jest stworzenie fałszywej drukarki dla każdej. Np. 'touch /dev/eng'.

Zmodyfikowałem pola w pliku /etc/printcap powyżej i wziąłem pod uwagę sugestie Ricka. Wykonałem te dwa polecenia:


#touch /dev/eng
#touch /dev/colour

---Koniec cytatu

--------------------------%<----------------------------------

10. Tworzenie kopii zapasowej komputerów z Windows na Linuksie.

Adam Neat ( adamneat@ipax.com.au) uprzejmie podał następujący skrypt, służący do robienia kopii zapasowych Windowsów na Linuksie przy pomocy narzędzia smbclient. Adam twierdzi, że używa go do robienia kopii zapasowych Windows 3.x i NT na Linuksie na napędzie DAT SCSI.

Adam nie jest dumny ze stylu kodowania, ale to działa. Jak ja to lubię mówić: "Jeśli działa i jest głupie, to nie jest głupie".

W skrypcie tym agnea1 jest nazwą użytkownika na Linuksie, który robi kopie.


#!/bin/bash

clear
echo Initialising ...
checkdate=`date | awk '{print $1}'`

if [ -f "~agnea1/backup-dir/backup-data" ]; then

        echo "ERROR: No config file for today!"
        echo "FATAL!"
        exit 1
fi

if [ -d "~agnea1/backup-dir/temp" ]; then

        echo "ERROR: No tempoary directory found!"
        echo
        echo "Attempting to create"
        cd ~agnea1
        cd backup-dir
        mkdir temp
        echo "Directory Made - temp"
fi

if [ "$1" = "" ]; then

        echo "ERROR: enter in a machine name (ie: cdwriter)"
        exit 1
fi

if [ "$2" = "" ]; then

        echo "ERROR: enter in a SMB (Lan Manager) Resource (ie: work)"
        exit 1
fi

if [ "$3" = "" ]; then

        echo "ERROR: enter in an IP address for $1 (ie:
        130.xxx.xxx.52)" exit 1
fi

#############################################################################
# Main Section
#
#############################################################################

cd ~agnea1/backup-dir/temp
rm -r ~agnea1/backup-dir/temp/*
cd ~agnea1/backup-dir/

case "$checkdate"
in
        Mon)
                echo "Backuping for Monday"
                cat backup-data | /usr/local/samba/bin/smbclient
                \\\\$1\\$2 -I$3 -N echo "Complete"

                        if [ -d "~agnea1/backup-dir/Monday" ]; then
                                echo "Directory Monday Not found ...
                                making" mkdir
                                ~agnea1/backup-dir/Monday
                        fi

                echo "Archiving ..."
                cd ~agnea1/backup-dir/temp
                tar -cf monday.tar *                echo "done ..."
                rm ~agnea1/backup-dir/Monday/monday.tar
                mv monday.tar ~agnea1/backup-dir/Monday
                ;;


        Tue)
                echo "Backuping for Tuesday"
                cat backup-data | /usr/local/samba/bin/smbclient
                \\\\$1\\$2 -I$3 -N echo "Complete"

                        if [ -d "~agnea1/backup-dir/Tuesday" ]; then
                                echo "Directory Tuesday Not found ...
                                making" mkdir
                                ~agnea1/backup-dir/Tuesday
                        fi
                echo "Archiving ..."
                cd ~agnea1/backup-dir/temp
                tar -cf tuesday.tar *
                echo "done ..."
                rm ~agnea1/backup-dir/Tuesday/tuesday.tar
                mv tuesday.tar ~agnea1/backup-dir/Tuesday
                ;;

        Wed)
                echo "Backuping for Wednesday"
                cat backup-data | /usr/local/samba/bin/smbclient
                \\\\$1\\$2 -I$3 -N echo "Complete"

                        if [ -d "~agnea1/backup-dir/Wednesday" ]; then
                                echo "Directory Wednesday Not found
                                ... making" mkdir
                                ~agnea1/backup-dir/Wednesday
                        fi
                echo "Archiving ..."
                cd ~agnea1/backup-dir/temp
                tar -cf wednesday.tar *
                echo "done ..."
             rm ~agnea1/backup-dir/Wednesday/wednesday.tar
                mv wednesday.tar ~agnea1/backup-dir/Wednesday
                ;;

        Thu)
                echo "Backuping for Thrusday"
                cat backup-data | /usr/local/samba/bin/smbclient
                \\\\$1\\$2 -I$3 -N echo "Complete"

                        if [ -d "~agnea1/backup-dir/Thursday" ]; then
                                echo "Directory Thrusday Not found ...
                                making" mkdir
                                ~agnea1/backup-dir/Thursday
                        fi
                echo "Archiving ..."
                cd ~agnea1/backup-dir/temp
                tar -cf thursday.tar *
                echo "done ..."
                rm ~agnea1/backup-dir/Thursday/thursday.tar
                mv thursday.tar ~agnea1/backup-dir/Thursday
                ;;


        Fri)
                echo "Backuping for Friday"
                cat backup-data | /usr/local/samba/bin/smbclient
                \\\\$1\\$2 -I$3 -N echo "Complete"

                        if [ -d "~agnea1/backup-dir/Friday" ]; then
                                echo "Directory Friday Not found ...
                                making" mkdir
                                ~agnea1/backup-dir/Friday
                        fi
                echo "Archiving ..."
                cd ~agnea1/backup-dir/temp
                tar -cf friday.tar *
                echo "done ..."
                rm ~agnea1/backup-dir/Friday/friday.tar
                mv friday.tar ~agnea1/backup-dir/Friday
                ;;

        *)
                echo "FATAL ERROR: Unknown variable passed for day"
                exit 1;;

esac
###########

11. Prawa autorskie.

Prawa autorskie tego HOWTO należą do Davida Wooda © 1996-1999, Można je reprodukować w każdej postaci oraz dystrybuować bez ograniczeń tak długo jak długo nie będzie zmieniana jego zawartość włącznie z tym stwierdzeniem.

12. Podziękowania.

Brad Marshall ( bmarshall@plugged.net.au) and Jason Parker ( jparker@plugged.net.au) dostarczyli czasu, cierpliwości, trochę skryptów i badań.

Adam Neat ( adamneat@ipax.com.au) dostarczył skrypt w bashu do robienia kopii zapasowych Windows na Linuksie.

Matthew Flint ( matthew@philtrum.demon.co.uk) powiedział mi o ustawienia interfaces w smb.conf.

Oleg L. Machulskiy ( machulsk@shade.msu.ru), Jeff Stern ( jstern@eclectic.ss.uci.edu), Dr. Michael Langner ( langner@fiz-chemie.de i Erik Ratcliffe ( erik@caldera.com) zasugerowali modyfikacje w rozdziale na temat udostępniania drukarki na Linuksie maszynom z Windows.

Alberto Menegazzi ( flash.egon@iol.it) dostarczył konfigurację MagicFilter.

Andrea Girotto ( icarus@inca.dei.unipd.it) dostarczył wielu wartościowych sugestii na temat całego dokumentu.

Dzięki także wszystki międzynarodowym tłumaczom, którzy umożliwili czytanie tego HOWTO ludziom nie znającym angielskiego: Takeo Nakano ( nakano@apm.seikei.ac.jp), Klaus-Dieter Schumacher ( Klaus-Dieter.Schumacher@fernuni-hagen.de), Andrea Girotto ( icarus@inca.dei.unipd.it) i wielu innym, z którymi nie mam kontaktu.

12.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/html/SWAP-partition.pl.html0100664000175000017500000004402406770264140021430 0ustar covencoven SWAP dla Linuxa i w95 mini-HOWTO

SWAP dla Linuxa i w95 mini-HOWTO

Seweryn Sobieszek sniff@alpha.net.pl
v1.2, 20 sierpnia 1999


Jak zrobić swap dla windowsa i Linuxa na jednej partycji? Opis znajdziesz tutaj. Opisywany dalej sposób jest mojego autorstwa. Możliwe, że ktoś już wcześniej wpadł na ten pomysł, ale ja wymyśliłem go sam. Zaznaczam, że nie przeczytałem tego w żadnym FAQ. Brak takowego dokumentu jest główną przyczyną powstania tego pliku. Chcę pomóc wszystkim, który mają podobny problem do mojego tzn. zbyt mały twardy dysk, by sobie pozwolić na luksus dwóch oddzielnych swapów. Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się na serwerze JTZ: http://www.jtz.org.pl.

1. Wstęp

1.1 Krótki opis metody

Mój sposób na wspólnego swapa Linuxa i w95 jest dość prosty. Zmuszamy wina do korzystania ze stałego swapa na naszej partycji wymiany, a potem w Linuksie korzystamy z tej samej partycji co windows. Tylko, że potem ta partycja już nie może być odczytana przez windowsa - ma inny filesystem i nie ma windowsowego swapa (plik win386.swp). Musimy więc przywrócić na niej flesystem dosowy i odtworzyć brakujący plik. Potem znów pracujemy w Linuksie, on sobie swapuje na nasza partycję, przy kończeniu pracy znów zamienia partycję na format dosowy. Proste prawda? Ale jakie skuteczne. Jest to najszybsza metoda, ze wszystkich jakie do tej pory testowałem. Zresztą co będę gadał - sami przeczytajcie i sprawdźcie.

1.2 Historia dokumentu

Dotychczas zostały upublicznione następujące wersje tego dokumentu:

Zmiany w wersji 1.1

Dokument został ogólnie przebudowany, oprócz opisu dla dystrybucji Redhat został dodany opis postępowania z dystrybucją Slackware.

Poprawiłem literówki (mam nadzieję) oraz uprościłem trochę zagmatwany opis.

Zmiany w wersji 1.2

Dodany opis postępowania z dystrybucją Debian (teraz są aż trzy! :) (Debian, RedHat, Slackware)).

Wreszcie powstała wersja SGML tego dokumentu, bo dotychczas (aż wstyd się przyznać :( ) pisałem to w HTML-u, ale tak, żeby wyglądało, że było konwertowane z SGML...

2. Przygotowanie dysku i softu

2.1 Podział dysku na partycje

Musisz mieć co najmniej trzy partycje. Jedną z Linuxem, drugą z w95 i jeszcze trzecia na plik wymiany. Istnieje niepisana zasada, że swap powinien być dwa razy większy od ilości RAM-u w Twoim komputerze. U mnie, przy 540 MB (proszę bez śmiechów ;) ) dysku wygląda to tak:

/dev/hda1 #partycja z w95 (256 MB)
/dev/hda2 #partycja z Linuxem (227 MB)
/dev/hda3 #partycja wymiany (32 MB)

Do podziału na partycje użyj najlepiej linuxowego programu fdisk, nie jest może najwygodniejszy w użyciu, ale za to najlepszy. Partycji do swapu nadaj identyfikator odpowidający typowi FAT16 (id 4 lub 6 w zależności od wielkości), a nie Linux Swap (id 82). Identyfikator partycji ustawia opcja t menu fdisk-a.

2.2 Przygotowanie Windows95

Tu nie będziesz się musiał dużo natrudzić, zresztą pod Linuxem też nie. W Panelu Sterowania ustaw jako plik wymiany plik o wielkości minimalnej 0 i maksymalnej równej wielkości partycji przeznaczonej na swapa. Zamknij windowsy i odpal Linuxa.

2.3 Przygotowanie Linuxa

Tak, to nie żart. Linuxa też musisz przygotować. Jak bym tego nie opisał to Microsoft wytoczyłby mi sprawę w sądzie. ;) No to zaczynajmy.
Oczywiście musisz mieć zainstalowanego Linuxa. Zbytnich wymagań co do jądra i wersji chyba nie ma, bo wydaje mi się, że ten sposób będzie działał na każdym Linuksie. Osobiście testowałem to na Debianie, Redhacie, Slacku i jądrach od 2.0.35 do 2.2.9 (różne kombinacje, ale jądra 2.2.x już tylko na Debianie).

Z narzędzi potrzebne będą nam:

Wszystkie te programy (oprócz mkdosfs) to standard i powinny znajdować się w każdej, nawet najbardziej okrojonej, instalacji. mkdosfs można skompilować mając źródła, lub (co jest znacznie wygodniejsze) zainstalować z pakietu, zwłaszcza, że chyba każda dystrybucja posiada pakiet zawierający mkdosfs.

Debian

W Debianie mkdosfs znajduje się w pakiecie: dosfstools. Oprócz mkdosfs w pakiecie tym znajduje się jeszcze narzędzie do sprawdzania i naprawiania dosowego filesystemu - dosfsck. Pakiet możesz zainstalować np. tak:

dpkg -i dosfstools_wersja.deb
Jeśli nie masz instalki Debiana to pakiet możesz ściągnąć z tego adresu.
No i voila!

RedHat

Dokładna nazwa pakietu zawierającego mkdosfs brzmi np: mkdosfs-ygg-0.3b-5.i386.rpm. Znajdź go na na płytce instalacyjnej RedHata, katalogu z instalką lub na jakimś serwerze FTP, np. tutaj. Zainstaluj ten pakiet, np. w ten sposób:

rpm --install mkdosfs-ygg-0.3b-8.i386.rpm
Po tej operacji możesz już przystąpić do sedna sprawy. :)

Slackware

W Slackware standardowo jest zainstalowany mkdosfs. A gdyby nie było /sbin/mkdosfs, to znajduje się on w pakiecie bin.tgz w podkatalogu a3 dystrybucji. Zainstaluj ten pakiet, wraz z nim otrzymasz jeszcze masę pożytecznych narzędzi. Możesz użyć pkgtool lub installpkg. Pierwszy poprowadzi Cię za rękę, a drugi wystarczy wywołać w ten sposób:

installpkg bin.tgz
i pakiet jest już zainstalowany. Teraz możesz przejść do następnej części.

3. Sedno sprawy

Wszystkie opisane poniżej zmiany w plikach konfiguracyjnych dotyczą dystrybucji, które są tu wymienione: Debian, RedHat, Slackware. Jeśli posiadasz inną dystrybucję, poszukaj w plikach startowych podobnych komend i popróbuj. Pamiętaj jednak, że możesz zrobić sobie, a właściwie partycjom krzywdę, więc jeśli nie do końca wiesz co robisz nie rób tego. Skorzystaj z pomocy bardziej doświadczonego kolegi, lub napisz do mnie - wspólnie na pewno coś poradzimy.

Acha, jeszcze jedna sprawa. Opisy zamieszczone tutaj dotyczą:

Prawdopodobnie w innych wersjach tych dystrybucji pliki konfiguracyjne wyglądają tak samo, a co najmniej podobnie, więc nie powinno być problemów.

Notka: Czytając dalej zapewne zauważysz, że przy wywołaniach swapon i swapoff polecam zamienić parametr -a na nazwę konkretnej partycji. Jest to właściwie niepotrzebne, ale piszę tak by było dokładnie wiadomo, o którą partycję chodzi (u mnie /dev/hda3). Czytając man swapon zobaczysz, że opcja -a pozwala na małą automatyzację w zarządzaniu partycjami wymiany. Jeśli chcesz z niej korzystać nic nie stoi temu na przeszkodzie. Po prostu nie zmieniaj tego parametru. Weź tylko pod uwagę, że komenda mkswap nie posiada takiej opcji i tu będziesz musiał wpisać dokładne nazwy partycji, bo mkswap nie przeczyta sobie ich z /etc/fstab. Zamiast "brakującej" opcji możesz uzyć petli shell'a, ale to już temat na inną bajkę. Jeśli Cię to interesuje - mail me.

Powodzenia...

3.1 Debian

Zajmiemy się tylko dwoma skryptami startowymi: checkroot.sh i umountfs. W pierwszym z tych plików SWAP jest włączany podczas startu Linuxa, a w drugim wyłączany przed zamknięciem systemu.

Plik /etc/init.d/checkroot.sh

Na samym początku tego pliku znajdziesz coś takiego:

if [ -x /sbin/swapon ]
then
  [ "$VERBOSE" != no ] && echo "Activating swap..."
  swapon -a
fi
Jak się pewnie domyślasz sekwencja ta powoduje włączenie wszystkich swapów zdefiniowanych w /etc/fstab. No i dobrze, bo my chcemy włączyć te swapy. Tylko, że jak na razie nasza partycja wcale nie ma formatu Linux Swap (id 82) tylko DOS16. I co z tym fantem zrobić? Potraktować mkswapem. Zobacz efekt moich zmian:
if [ -x /sbin/swapon ]
then
  [ "$VERBOSE" != no ] && echo "Activating swap..."
  mkswap /dev/hda3
  swapon /dev/hda3
fi

Plik /etc/init.d/umountfs

Plik ten jest wykonywany podczas zamykania systemu, wyłącza partycje wymiany, odmontowuje partycje inne niż root i przemontowuje partycję root jako read-only. W pliku tym jest coś takiego:

echo -n "Deactivating swap... "
swapoff -a
echo "done."
Ciąg tych poleceń wyłącza pliki wymiany i wyświetla na konsoli info. Zmienimy tylko parametr -a polecenia swapoff na /dev/hda3 lub jaki tam macie, przeformatowujemy partycję na DOS16 i koniec.

A jednak nie.

Dlaczego to jeszcze nie koniec?

Nie koniec, bo nie ma pliku win386.swp na naszej świeżo sformatowanej partycji. Windows (ale chyba tylko 95) sam powinien sobie utworzyć brakujący plik, ale nie zawsze się tak dzieje. Więc może mu pomożemy. Sami utworzymy brakujący plik. Potrzebny do tego będzie katalog do podmontowania świeżo uwtorzonej partycji dosowej (najlpepiej pusty, ale niekoniecznie, bo z moich doświadczeń wynika, że można podmontować filesystem także w niepustym katalogu). Fragment tego pliku po wszelkich przeróbkach powinien wyglądać mniej więcej tak:

echo -n "Deactivating swap... "
swapoff /dev/hda3
mkdosfs -n SWAP_SPACE /dev/hda3
mount -t msdos -o rw /dev/hda3 /katalog/w/ktorym/montujemy
dd if=/dev/zero of=/katalog/w/ktorym/montujemy/win386.swp bs=1k count=0
umount /dev/hda3
echo "done."

Przetestuj to jeszcze i ciesz się! :)))

3.2 RedHat

Zmiany w pliku /etc/rc.d/rc.sysinit

Poszukaj w pliku /etc/rc.d/rc.sysinit (gdzieś na początku) linii wygladającej mniej więcej tak:

# Start up swapping.
echo "Activating swap partitions"
swapon -a

Aktywuje ona partycje wymiany na wszystkich partycjach oznaczonych w pliku /etc/fstab jako swap. My potrzebujemy uaktywnić tylko jedną partycję, możemy zmienić parametr -a na konkretną wartość u mnie to /dev/hda3). Ponadto musimy jeszcze wczesniej z naszej partycji wymiany windowsa zrobic swapa linuxowego. Służy do tego polecenie mkswap. Po modyfikacji ta część pliku powinna wyglądać mniej więcej tak:

# Start up swapping.
echo "Activating swap partitions"
mkswap /dev/hda3
swapon /dev/hda3

W tej części pliku już koniec ze zmianami, teraz przenosimy się bliżej końca /etc/rc.d/rc.sysinit. Tam szukamy czegoś podobnego do:

# Right, now turn on swap in case we swap to files.
echo "Enabling swap space."
swapon -a 2>&1 | grep -v "busy"

Tutaj też parametr -a zmień na oznaczenie swojej partycji wymiany (np. /dev/hda3).
I to już wszystkie zmiany w tym pliku, przejdźmy do następnego.

Zmiany w pliku /etc/rc.d/init.d/halt

Ten plik jest wykonywany w czasie zatrzymania lub restartu systemu, czyli po wydaniu polecenia shutdown z odpowiednimi parametrami lub po naciśnięciu trzech 'magicznych' klawiszy (tzn. Ctrl+Alt+Del). Zanim zaczniesz cokolwiek zmieniać, chcąc uniknąć błędów musisz najpierw mieć zainstalowany pakiet mkdosfs. Pisałem wcześniej jak to zrobić.

No to zaczynamy. W tym pliku (tzn. /etc/rc.d/init.d/halt) nie będziesz musiał dużo zmieniać. Znajdź coś podobnego do tego:

# Turn off swap, then unmount file systems.
echo "Turning off swap"
swapoff -a

Tutaj jak wszędzie zmieniamy parametr -a na konkretne oznaczenie partycji wymiany i wywołanie polecenia ma postać, np. swapoff /dev/hda3.
Teraz musimy jeszcze nadać partycji wymiany format dosowy, po to, aby windows mógł z niej skorzystać. Robimy to poleceniem mkdosfs. Ta część pliku już po wszelkich zmianach wygląda u mnie następująco:

# Turn off swap, then unmount file systems.
echo "Turning off swap"
swapoff /dev/hda3
mkdosfs -n SWAP_SPACE /dev/hda3

Parametr -n z wartością SWAP_SPACE nadaje tworzonej partycji dosowej etykietę SWAP_SPACE. I to byłoby już prawie wszystko, pozostało tylko odtworzyć brakujący plik wymiany windowsa win386.swp (tu możesz zobaczyć dlaczego).

A teraz pokażę jak. Po komendzie mkdosfs dopisz jeszcze to:

mount -t msdos -o rw /dev/hda3 /katalog/w/ktorym/montujemy
dd if=/dev/zero of=/katalog/w/ktorym/montujemy/win386.swp bs=1k count=0
umount /dev/hda3
Już możesz rozkoszować się swoim dziełem... :)))

3.3 Slackware

W Slacku też musisz poprawić tylko dwa pliki, w zasadzie zrobić to samo co z RedHatem i Debianem, tylko że w innych plikach... Opisywany tu przykład pochodzi ze Slackware 3.6, ale z pewnością w innych wersjach jest tak samo.

Zmiany w pliku /etc/rc.d/rc.S

Plik /etc/rc.d/rc.S jest wykonywany podczas inicjalizacji systemu. Za każdym razem, gdy system wstaje, plik ten jest analizowany i wykonywane są zawarte w nim polecenia. Nam chodzi o to, żeby nasza partycja (/dev/hda3) została "przerobiona" na swapa dla Linuxa. Na samym początku pliku znajdziecie coś takiego:

# enable swapping
/sbin/mkswap -a
/sbin/swapon -a

Polecenia te uruchamiają jako swap wszystkie partycje, które są oznaczone w pliku /etc/fstab jako przeznaczone do swapowania. Zamień parametr -a na konkretną partycję (żeby używać tej jednej), albo we wspomnianym pliku opisz ją jako miejsce na swap. Po operacji plik /etc/rc.d/rc.6 powinien wyglądać np. tak:

# enable swapping
/sbin/mkswap /dev/hda3
/sbin/swapon /dev/hda3
albo niech pozostanie w oryginalnej postaci, a w /etc/fstab powinno pojawić się coś takiego:
/dev/hda3 swap swap defaults 0 0

Zmiany w pliku /etc/rc.d/rc.6

Ten pliczek jest z kolei wykonywany przy zamykaniu systemu. To tutaj musimy zawrzeć linijki odpowiadające za przywrócenie windzie straconego swapa. Poszukaj czegoś takiego:

# Turn off swap, then unmount local file systems.
echo "Turning off swap."
swapoff -a
Tutaj zmiany nie będą polegały już tylko na prostej kosmetyce. Opcję -a tradycyjnie przemianowujemy na oznaczenie partycji wymiany oraz musimy zrobić coś jeszcze. Mianowicie utowrzyć na tejże partycji filesystem dosowy i odtworzyć swapa pani windzie. Pierwsze załatwiamy używając narzędzia mkdosfs, a konkretniej:
mkdosfs -n SWAP_SPACE /dev/hda3
Teraz wystarczy już tylko odtworzyć plik win386.swp na nowiutkim filesystemie. (Chcesz wiedzieć po co? - kliknij tutaj!) Aby tego dokonać musisz dysponować katalogiem do podmontowania filesystemu przed chwilą utworzonego (no, oczywiście możesz zapisywać bezpośrednio na partycję, ale nie polecam :))). Najprościej chyba tak:
mount -t msdos -o rw /dev/hda3 /katalog/w/ktorym/montujemy
dd if=/dev/zero of=/katalog/w/ktorym/montujemy/win386.swp bs=1k count=0
umount /dev/hda3
To utworzy brakujący plik i już po kłopocie. Będzie to plik pusty o rozmiarze 0, ale taki właśnie powinien być.

Sprawdź co zdziałałeś/aś i odpocznij trochę :)))

4. Od autora

Mam nadzieję, że choć trochę pomogłem paru osobom. Wszelkie pytania dotyczące tego dokumentu proszę kierować na adres: sniff@alpha.net.pl. Krytyka wszelkiego rodzaju mile widziana. Prosiłbym o kontakt użytkowników dystrybucji innych niż trzy opisane, aby w przyszłości rozbudować ten dokument.

Może znajdzie się osoba, która próbowała przenieść to mini-JTZ w realia win98. Proszę niech opisze wrażenia i prześle mi, bo moja edukacje w świecie windowsów skończyła sie na 95 i to nie OSR2.

Dziękuję za uwagę.

doc-linux-pl-2002.06.14.orig/html/Serial-HOWTO.pl.html0100664000175000017500000025011006770264140020757 0ustar covencoven Linux, a porty szeregowe.

Linux, a porty szeregowe.

by Greg Hankins, greg.hankins@cc.gatech.edu
v1.10, 31 March 1997
Wersja polska: Piotr Pogorzelski piotr.pogorzelski@ippt.gov.p
w1.0; Listopad 1997


Niniejszy dokument opisuje zagadnienia związane z konfiguracją i obsługą portów szeregowych i programów komunikacyjnych.

1. Wprowadzenie.

Przed Tobą Linux Serial-HOWTO. Wszystko na temat konfiguracji modemów i terminali pod Linux-em. Trochę sztuczek na temat portów szeregowych i porad na temat najczęstszych kłopotów. Niniejszy dokument koncentruje się na sytemech pracujących na komputerach klasy x86, choć zawarte w nim informacje mogą być prawdziwe również dla innych architektur sprzętowych.

1.1 Prawa autorskie.

Prawa autorskie Linux Serial HOWTO należą do Grega Hankinsa. Dokumenty HOWTO mogą być powielane i redystybuowane w całości lub w części, na dowolnym nośniku fizycznym lub elektronicznym, tak długo, jak niniejsza notka o prawach autorskich jest umieszczana na wszystkich kopiach. Dystrybucja komercyjna jest dozwolona, a wręcz do niej zachęcamy. Autor chciałby być poinfirmowany o takim fakcie.

Wszelkie tłumaczenia, prace powstałe na bazie tego dokumentu lub prace zawierające fragmenty tego dokumentu muszą być objęte tymi samymi warunkami, co oryginał. To znaczy, że nie możesz na dokumenty powstałe z HOWTO nakładać dodatkowych ograniczeń na ich rozpowszechnianie. W pewnych warunkach możemy odstąpić od tej reguły; prosze skontaktować się w tym celu z koordynatorem HOWTO - adres można znaleźć dalej w dokumencie.

Chcemy aby ten dokument był rozpowszechniany na wszelkie możliwe sposoby, chcemy również zachować prawa autorskie do tego dokumentu i chcielibyśmy być informowani o wszelskich nowych planach redystrybucji dokumentów HOWTO.

Jeśli masz jakieś pytania, skontaktuj się z Gregiem Hankinsem, koordynatorem projektu Linux HOWTO -
gregh@sunsite.unc.edu tel. +1 404 853 9989.

1.2 Nowe wersje tego dokumentu.

Nowe wersje Serial HOWTO będą dostępne pod adresem ftp://sunsite.unc.edu:/pub/Linux/docs/HOWTO/Serial-HOWTO i na wszystich kopiach (mirrorach). Dokument jest dostępny również w innych formatach, mozna je znaleźć w katalogu other-formats. Serial-HOWTO jest dostęne również pod adresem http://sunsite.unc.edu/LDP/HOWTO/Serial-HOWTO.html i co miesiąc będzie wysyłane na comp.os.linux.answers.

Najnowsze wersje tłumaczenia można jak zwykle znaleźć na stroanch http://www.jtz.org.pl/.

1.3 Uwagi i komentarze.

Prosze, przysyłajcie wszelkie uwagi, komentarze oraz dodatkowe materiały. Zawsze jestem chętny usłyszeć co myślicie o HOWTO. Zawsze staram się wprowadzać ulepszenia. Powiedzcie mi dokładnie czego znie zrozumieliście, lub co mogłoby być napisane jaśniej. Możecie się ze mną skontakować pisząc na adres greg.hankins@cc.gatech.edu. Na każdy list odpiszę, choć może mi to zając tydzień albo więcej, w zależności jak jestem aktualnie zajęty. Otrzymuje mnóstwo listów od root-a i ze źle skonfigurowanych komputerów. Wysyłajcie do mnie listy, ze sprawdzonych kont pocztowych. Jeśli nie odpowiem w ciągu dwóch tygodni, napiszcie do mnie raz jeszcze.

Można mnie złapać pod adresem:
Greg Hankins
College of Computing
801 Atlantic Drive
Atlanta, GA 30332-0280
to pocztą slimaczą, lub http://www.cc.gatech.edu/staff/h/Greg.Hankins/.

Proszę, podawajcie wersje dokumentu, ten dokument nosi numer 1.10.

1.4 Zrzeczenie się odpowiedzialności.

Podane tutaj przykłady lub odpowiedzi nie muszą być odpowiednie dla wszystkich komputerów.

2. Obsługiwany sprzęt.

Linux potrafi współpracować z następującymi urządzeniami szeregowymi.

2.1 Standardowe karty portów szeregowych komputerów PC.

Uwaga: ze względu na konflikt adresów nie możesz używać jednocześnie portu COM4 i karty video IBM8514.

2.2 Modemy Plug And Play (PnP).

Modemy PnP będą pracowały pod Linux-em. Jednakże odradzam ich użytkowanie, ponieważ są trudne we współżyciu. Jest kilka rzeczy, których możesz spróbować:

2.3 Karty wieloportowe (z układem 16450/16550A).

Zasadniczo Linux obsługuje dowolną kartę portów szeregowych, która wykorzystuje układy UART 8250, 16450, 16550, 16550A (lub zgodne) lub modemy wewnętrzne emulujące jeden z tych układów.

Specjalna uwaga na temat BB-1004 i BB-1008. Obie nie obsługują linii DCD i RI, i dlatego nie nadają się do obsługi modemów wejściowych. Zastosowane do innych celów będą się sprawować poprawnie.

2.4 Inteligentne karty wieloportowe.

Przegląd urządzeń Comtrol, Cyclades, Digi i Stallion można znaleźć w numerze Czerwiec 1995 Linux Journal. Artykuł jest dostępny pod adresem http://www.ssc.com/lj/issue14.

2.5 Nieobsługiwane urządzenia szeregowe.

Modemy, które nazywają siebie ``Winmodems'', np. USR Sportster Winmodem i IBM Aptiva MVAVE, nie są obsługiwane przez Linux-a. Te modemy korzystają z prywatnych, niedostępnych rozwiązań technicznych i wymagają specjalnych sterowników. Unikaj modemów tego typu. Co więcej, z tych samych powodów, trzymaj się z daleka od modemów wymagajacych sterowników RPI Rockwella.

3. Jak nazywają sie porty szeregowe?

Każdy port I/O umożliwia wymianę danych pomiędzy komputerem i otoczeniem. Istnieje wiele rodzajów portów I/O, porty szeregowe, równoległe, sterowniki dysków, karty ethernetowe itp. My będziemy omawiać porty szeregowe, ponieważ modemy i terminale są urządzeniami korzystającymi z portów szeregowych. Każdy port szeregowy musi posiadać adres I/O i przerwanie (IRQ). Istnieją 4 porty szeregowe odpowiadające odpowiednio COM1-COM4:

        ttyS0 (COM1) adres 0x3f8 IRQ 4
        ttyS1 (COM2) adres 0x2f8 IRQ 3
        ttyS2 (COM3) adres 0x3e8 IRQ 4
        ttyS3 (COM4) adres 0x2e8 IRQ 3
        

Jeśli podczas startu Linux nie rozpozna żadnego portu szeregowego upewnij się, że obsługa portów szeregowych jest wkompilowana w jądro. W tym dokumencie przyjeliśmy, że ttyS0 odnosi się do portu COM1, ttyS1 do COM2, ttyS2 do COM3 i ttyS3 do COM4. Zauważ, że domyślnie porty współdzielą przerwania IRQ. Jednakże nie można korzystać ze wszystkich portów w konfiguracji domyślnej, trzeba na nowo przydzielić przerwania. Informacje na temat ustawiania IRQ znajdziesz w rozdziale Czy mogę używać więcej niż dwóch urządzeń portów szeregowych?

W niektórych systemach tworzone są dodatkowe dwa pliki urządzeń, /dev/modem dla modemu i /dev/mouse dla myszy. Oba są dowiązaniami symbolicznymi do właściwych urządzeń w katalogu dev, które podałeś podczas Instalacji systemu (chyba, że posiadasz mysz sbus, wtedy /dev/mouse będzie wskazywać na urządzenie bus mouse).

Wiele dyskutowano na temat użyteczności /dev/mouse i /dev/modem. Ja mocno odradzam korzystania z tych dowiązań. W szczególności, jeśli planujesz korzystać ze swojego modemu do dzwonienia do twojego komputera (dialin), a będziesz korzystał z /dev/modem, to możesz napotkać na problemy związane z plikami blokad (lock files). Jeśli ten pomysł podoba Ci się, korzystaj z niego, lecz upewnij się, że wspomniane dowiązania wskazują na właściwe urządzenia. Jednakże jeśli usuniesz te dowiązania, wtedy niektóre aplikacje będą wymagać zmianiy konfiguracji (np. minicom).

3.1 Urządzenia portów szeregowych i numery w dev.

        /dev/ttyS0 major 4, minor 64    /dev/cua0 major 5, minor 64
        /dev/ttyS1 major 4, minor 65    /dev/cua1 major 5, minor 65
        /dev/ttyS2 major 4, minor 66    /dev/cua2 major 5, minor 66
        /dev/ttyS3 major 4, minor 67    /dev/cua3 major 5, minor 67
        
Proszę zwróć uwagę, że wszystkie dystrybucje powinny same utworzyć pokazane powyżej pliki urządzeń. Czy tak się stało możesz to sprawdzić wydając polecenie:
linux% ls -l /dev/cua*
linux% ls -l /dev/ttyS*

Tworzenie plików urządzeń w katalogu /dev.

Jeśli nie znalazłeś pliku urządzenia, musisz go utworzyć za pomocą polecenia mknod.

Przykład: załóżmy, że potrzebujesz utworzyć urządzenie ttyS0:

        linux# mknod -m 666 /dev/cua0 c 5 64
        linux# mknod -m 666 /dev/ttyS0 c 4 64
        

Możesz w tym celu wykorzystać skrypt MAKEDEV, dostępny w katalogu /dev lub archiwach ftp. Znacznie upraszcza tworzenie plików urządzeń. Na przykład jeśli chesz utworzyć urządzenie ttyS0 wystarczy napisać:

        linux# cd /dev
        linux# ./MAKEDEV ttyS0
        

Skrypt zajmie się utowrzeniem urządzeń wyjściowych (cua) i wejściowych (ttyS).

3.2 Uwagi na temat kart wieloportowych.

Pliki urządzeń wykorzystywane przez karty wieloportowe zależą od rodzaju karty. Szczegóły można znaleźć w rc.serial, który znajduje się w dystrybucji programu setserial. Jeśli starasz się uruchomić kartę wieloportową bardzo polecam zaopatrzyć się w najnowszą wersję programu setserial. Prawdopododobnie będziesz musiał własnoręcznie utworzyć pliki specjalne urządzeń. Skorzystaj albo z programu mknod albo skryptu MAKEDEV. Pliki urządzeń kart wieloportowych charakteryzują się tym, że numer główny (major number) jest równy 64 + numer portu karty. Jeśli chiałbyś utworzyć plik urządzenia dla portu ttyS17 muszisz wydać polecenie:

        linux# mknod -m 666 /dev/cua17 c 5 81
        linux# mknod -m 666 /dev/ttyS17 c 4 81
        

Zauważ, że ``64 + 17 = 81''. Korzystając ze skryptu MAKEDEV trzeba napisać:

        linux# cd /dev
        linux# MAKEDEV ttyS17
        

Uwaga: dokumentacja SIIG dla IO1812 dotycząca portów COM5-COM8 zawiera błąd. Powinno być COM5=0x250, COM6=0x258, COM7=0x260 i COM8=0x268.

Uwaga: Rejestr stanu (status register) karty DIGI PC/8 znajduje się pod adresem 0x140.

Uwaga: Korzystając z karty AST Fourport może być potrzebne umiesczenie w skrypcie rc.serial parametru skip_test.

3.3 Uwagi na temat inteligentnych kart wieloportowych.

Przeczytaj dokumentacje dostarczaną ze sterownikiem. Te karty korzystają ze specjalnych urządzeń, nie ze standardowych. Informacje ich dotyczące różnią się w zależności od posiadanego sprzętu.

4. Interesujące oprogramowania, o którym powinieneś wiedzieć.

4.1 Co to takiego getty?

getty to program, który obsługuje proces wejścia do systemu Unix. Będziesz musiał używać getty jeśli chcesz dzwonić do swojego Linux-a. Nie potrzebujesz getty jeśli zamierzasz jedynie dzwonić ze swojego Linux-a w świat. W świecie Linux-a rozpowszechnione są trzy wersje tego programu: getty_ps, mgetty i agetty. Każdy z nich posiada własną składnie i pramatery wywołania, upewnij się, że korzystach z poprawnych dla wersji getty, której używasz.

Trochę o getty_ps.

Większość dystrybucji instaluje pakiet getty_ps. Zawiera on dwa programy getty. getty stosowany do konsoli wirtualnych i terminali, oraz uugetty wykorzystywany do modemów. Skoncentruję się na getty_ps, ponieważ korzystam z tej właśnie wersji getty.

Kilka słów na temat mgetty.

mgetty jest wersja getty przeznaczoną do modemów. Pozwala na logowanie się przez modem, dostarcza obsługę FAXu i rozpoznaje połączenia PPP. Dokumentacja mgetty jest bardzo dobra i nie potrzebuje uzupełnień. Znajdziesz w niej informacje na temat instalacji i konfiguracji programu. Najnowsze informacje o pakiecie możesz znaleźćpod adresem http://www.leo.org/~doering/mgetty/.

I na koniec agetty.

agetty to trzeci wariant getty. Jest to prosta, w pełni funkcjonalna implementacja getty bardzo dobrze nadająca się do obsługi wirtualnych konsol i teminali.

4.2 Co to takiego setserial?

setserial to program, który pozwala na sprawdzanie i zmianę różnego rodzaju atrybutów portów szeregowych, adresów, przerwań i innych parametrów. Aby dowiedzieć się, która wersja jest zainstalowana na twoim komputerze należy uruchomić program bez żadnych argumentów.

Kiedy twój Linux startuje, konfigurowane są tylko porty ttyS{0-3}, wykorzystane są standardowe ustawienia IRQ równe 3 i 4. Dlatego jeśli posiadasz inne karty portów szeregowych lub porty ttyS{0-3} nie mają standardowych ustawień przerwań IRQ, to aby zostały prawidłowo sonfigurowane musisz skorzystać z programu setserial. Pełny spis dostępnych opcji znajduje się na stronach podręcznika (man setserial).

5. Jak mogę zadzwonić z mojego modemu?

5.1 Wymagania sprzętowe.

Po pierwsze upewnij się czy masz dobry kabel. Modem wymaga kabla prostego, bez żadnych krzyżowań przewodów. Każdy sklep komputerowy posiada w swej ofercie taki kabel. Pamiętaj aby miał odpowiednie wtyczki. Jeśli używasz gniazda DB25, to zawsze bedzie to męskie DB25. Nie pomyl go z gniazdem portu równoległego, którego gniazdo to damskie DB25. Podłącz modem do jednego z portów szeregowych. Jeśli potrzebujesz pomocy skorzystaj z dokumentacji modemu.

Uwagi na temat modemów wewnętrznych.

Do podłączenia modemu wewnętrznego nie potrzebujesz kabla modemowego. Modem wewnętrzny nie potrzebuje również portu szeregowego, posiada własny. Muszisz jedynie poprawnie skonfigurować przerwanie, oraz adresy portów We/Wy, tak aby nie było wykorzystywane przez inne urządzenia. Jeśli utknąłeś skorzystaj z dokumentacji modemu. Jeśli potrzebujesz rady na temat wyboru przerwania IRQ zobacz Czy mogę używać więcej niż 2 porty szeregowe?.

Na niektórych płytach głównych musisz wyłączyć port szeregowy, który ma zostać zastąpiony przez modem. Robi się to przełączając odpowiednnie zworki lub zmieniając ustawienia w BIOSie. Przeczytaj instrukcje do płyty głównej.

Z powodu błędu w karcie graficznej IBM8514, możesz napotkać na kłopoty konfigurując twój modem wewnętrzny na porcie ttyS3. Jeśli linux nie znajdzie modemu na porcie ttyS3 możesz wykorzystać setserial, wtedy modem będzie pracował prawidłowo. Modemy wewnętrzne skonfigurowane na portach ttyS{0-2} nie powinny mieć klopotów z wykrycem ich przez system.

5.2 Rozmowy z twoim modemem.

Zanim zaczniesz korzystać z bardziej skomplikowanych programów komunikacyjnych, do testów skorzystaj z kermit-a lub innego prostego programu (minicom?). Ostanią wersję kermita można zawsze znaleźć pod adresem ftp://sunsite.unc.edu:/pub/Linux/apps/comm i na jego kopiach. Powiedzmy, że twój modem jest przyłączony do portu ttyS3 i potrafi obsłużyć prędkość 115200 bps. Powinieneś wtedy napisać:

linux# kermit
C-Kermit 6.0.192, 6 Sep 96, for Linux
 Copyright (C) 1985, 1996,
  Trustees of Columbia University in the City of New York.
Default file-transfer mode is BINARY
Type ? or HELP for help.
C-Kermit>set line /dev/ttyS3
C-Kermit>set carrier-watch off
C-Kermit>set speed 115200
/dev/ttyS3, 115200 bps
C-Kermit>c
Connecting to /dev/ttyS3, speed 115200.
The escape character is Ctrl-\ (ASCII 28, FS)
Type the escape character followed by C to get back,
or followed by ? to see other options.
ATE1Q0V1                           ; wpisz to i naciśnij Enter
OK                                 ; modem powinien odpowiedzieć w ten
                                   ; sposób 

Jeśli modem odpowie na polecenie AT możesz założyć, że twój modem po stronie Linux-a działa poprawnie. Spróbuj połączyć się z innym modemem (np. numer 0202122 - nasza kochana TPSA - przyp. tłumacza). Napisz

        ATDT0202122,, 

Jeśli twoja linia nie obsługuje wybierania tonowego zamiast ATDT napisz ATDP. Jeśli nawiązałeś połączenie, to znaczy, że twój modem działa.

Aby wróćic na konsole Kermita trzymajac wciśniety Ctrl wciśnij backslasz '\', zwolnij Ctrl i wciśnij C.

 Ctrl-\-C (Back at linux) C-Kermit>quit linux#

To był prosty test przy wykorzystaniu prymitywnych, ręcznych metod wybierania numeru. Normalnie należy pozwolić Kermitowi na automatyczne wybranie numeru, korzystając z jego bazy numerów i zaawansowanych metod nawiązywania połaczeń. Np. korzystając z modemu USR Robotics należy zrobić tak:

linux# kermit
C-Kermit 6.0.192, 6 Sep 1997, for Linux
 Copyright (C) 1985, 1996,
  Trustees of Columbia University in the City of New York.
Default file-transfer mode is BINARY
Type ? or HELP for help
C-Kermit>set modem type usr        ; wybuerz rodzaj modemu
C-Kermit>set line /dev/ttyS3       ; wybierz urządzenie
C-Kermit>set speed 115200          ; ustaw domyślną prędkość
C-Kermit>dial 7654321              ; wybierz numer
 Number: 7654321
 Device=/dev/ttyS3, modem=usr, speed=115200
 Call completed.<BEEP>
Connecting to /dev/ttyS3, speed 115200
The escape character is Ctrl-\ (ASCII 28, FS).
Type the escape character followed by C to get back,
or followed by ? to see other options.

Welcome to ...

login:

Jeśli potrzebujesz wskazówek zobacz rozdział Programy komunikacyjne.

Kiedy dzwonisz wykorzystując swój modem, ustaw prędkość portu szeregowego na największą jaka jest obsługiwana przez twój komputer. Instalacje Linux-a z biblioteką libc w wersji 5.x lub nowszej obsługują prdkości do 115200bps. libc znajduje się zwykle w katalogu /lib, zobacz jaką wersję posiadasz. Jeśli twój Linux nie rozpoznaje prędkości 57600 lub 115200bps, musisz skorzystać z programu setserial aby ustawić port na większą prędkość. Jak to zrobić jest opisane w rozdziale Jak ustawić port szeregowy na większe predkości?. Następnie w programi komunikacyjnym ustaw prędkość portu na 38400.

5.3 Konfiguracja modemów wyjściowych.

Jeśli będziesz korzystał z modemu tylko do dzwonienia, możesz go skonigurować w niemal dowolny sposów. Jeśli jednak chcesz go wykorzystywać jako modem wejściowy, musisz skonfigurowac modem w taki sposób, aby wykorzystywał tę samą prędkość z jaką zamierzasz uruchomić program getty. Więc jeśli zamierzasz uruchomić getty z prędkościa 38400 bps. podczas konfigiracji modemu ustaw prędkość na 38400. Ma to na celu zpobiec nieporzumienim wynikłym ze złego dopasowania prędkości między portem szeregowym, a modemem. Zasadniczo, ustawienia fabryczne włączające korekcję błędów i sprzętowe sterowanie przepływem danych są najlepszymi ustawieniami modemów wyjściowch. Dokładne informacje o tych ustawieniach znajdziesz w dokumentacji modemu.

5.4 Sprzetowe sterowanie przepływem danych.

Jeśli twój modem obsługuje sprzętowe sterowanie przepływem danych (RTS/CTS), stnowczo polecam wykorzystanie tego. Jest to szczególnie ważne w przypadku modemów posiadającą kompresję. Wpierw musisz włączyć RTS/CTS na samym porcie szeregowym. Najlepiej jest to zrobić w skryptach startowych /etc/rc.d/rc.local lub /etc/rc.d/rc.serial. Upewnij się ze te pliki są uruchamiane z głównego skryptu rc.sysinit. Dla każdego portu, dla którego chcesz uruchomic CTR/CTS należy wykonać polecenie:

        stty crtscts < /dev/ttyS3
        

Musisz również włączyć RTS/CTS w modemie. Jak to zrobić znajdzesz w dokumentacji modemu, ponieważ różni się to między modelami. Pamiętaj o zapamiętaniu konfiguracji modemu (w jego pamięci stałej), oczywiście jeśli twoj modem to potrafi.

6. Jak dzwonić na zewnątrz i do mojego komputera, wykorzystując jednocześnie getty_ps?

Skonfiguruj modem w taki sposób, aby prawidłowo wybierał numery. Jeśli nie czytałeś rozdziału Jak mogę zadzwonić z mojego modemu? zrób to teraz! Podałem tam bardzo ważne informacje. Nie musisz czytać tego rozdziału, jeśli zamiesza jedynie dzwonic ze swojego modemu.

6.1 Konfiguracja modemu do dzwonienia na zewnątrz i przyjmowania połączeń.

Aby mieć wyjście przez modem i jednocześnie obsługiwać przychodzące połączenia, musisz skonfigurować modem w specjalny sposób (znów za pomocą poleceń AT.):

E1       wyświetlane wprowadzanych poleceń
Q0       wyświetlanie kodów rezultatów
V1       bądź bardziej rozgadany, podawaj więcej informacji
S0=0     nigdy nie odpowiadaj na połączenie (uugetty obsługuje
przychodzące połączenia, za pomocą opcji waitfor).

Jeśli nie ustawisz tych opcji, ciąg znaków inicjujący modem, może nie wykonać poprawnie swej pracy, niwecząc całą procedurę. Lecz o plikach konfiguracyjnych później.

&C1 DCD włączone tylko po nawiązaniu połączenia
&S0 DSR zawsze włączone
        Przełączenie DTR resetuje modem (w zależności od producenta - RTFM).

Powyższe ustawienia mają wpływ na zachowanie modemu podczas nawiązywania i zakańczania połączenia.

Jeśli twój modem nie potrafi zapamiętać konfiguracji, możesz wcześniej opisane ustawienia zapamiętać w tzw. "INIT string". Zaraz o tym napiszemy. Niektóre modemy posiadają mikroprzełączniki służące do zmiany konfiguracji modemu (zmiany wartości rejestrów). Upewnij się że są poprawnie ustawione.

Zacząłem zbierać listę sprawdzonych konfiguracji, dla różnych typów modemów. Jeśli masz ochotę przysłać mi swoją, proszę bardzo. Jeśli chciałbyś otrzymać jedną z konfiguracji, po prostu przyslij list. Posiadane przez mnie informacje są dostępne pod adresem ftp://ftp.cc.gatech.edu/pub/people/gregh/modem-configs.

Uwaga: aby zmusić mój Courier V.34 do poprawnego zerowania po spadku DTR musiałem ustawić &D2 i S13=1 (ustawienie bitu 0 rejestra S13). Otrzymałem potwierdzenia, że ten sposób działa również w przypadku USR Sportster V.34.

Uwaga: Niektóre modele Supra traktują DCD inaczej niż inne modemy. Jeśli używasz Supry spróbuj ustawić &C0, a nie &C1. Aby poprawnie obsługiwać DTR trzeba również ustawić &D2.

6.2 Instalacja getty_ps.

Pobież najnowszą wersję z sunsite.unc.edu:/pub/Linux/system/serial. Jeśli planujesz korzystać z wysokich prędkości (57600 i 115200bps), musisz zdobyć wersję 2.0.7j lub nowszą. Muszisz mieć również libc 5.x lub nowszą.

getty_ps jest domyślnie skonfigurowane zgodnie ze standardem FSSTND (FileSystem STaNDard). To znaczy, że programy binarne będą w katalogu /sbin, a pliki konfiguracyjne będą się nazywały /etc/conf.{uu}getty.ttySN. Pliki blokady (lock files) będą umieszczane w katalogu /var/lock. Upewnij się, że katalog /var/lock istnieje.

Jeśli nie chesz zgodności z FSSTND, programy binarne zostaną umieszczone w /etc, pliki konfiguracyjne zostaną nazwane /etc/default/{uu}getty.ttySN, a pliki blokady będą umieszczane w katalogu /usr/spool/uucp. Jeśli korzystasz z UUCP, zaleceamy ten drugi sposób, ponieważ Taylor UUCP napotka na problemy, jeśli przeniesiesz pliki blokady w miejsce, które nie bedzie sprawdzane (przez uucp w poszukawaniu plików blokady).

W celu rejestracji komunikatów getty_ps korzysta z syslogd. Jeśli chesz skonfigurować syslogd przeczytaj strony podręcznika dla syslogd(1) i syslog.conf(5). Komunikaty są rejestrowane z priorytetem LOG_AUTH, błędy wykorzystują LOG_ERR, a informacje odpluskwiające LOG_DEBUG. Jeśli nie chcesz korzystać z syslogd tylko chesz aby komunikaty były zapisywane do pliku (domyślnie będzie to /var/adm/getty.log) , to musisz zmodyfikować plik tune.h w zrodłach getty_ps.

Zastanów się i zdecyduj się czy chcesz zachować zgodność ze standardem FSSTND i czy chesz korzystać z syslogd, zmodyfikuj odpowiednio pliki Makefile, config.h i tune.h znajdujące się w katalogu źródłowym pakietu getty_ps. Następnie zainstaluj programy zgodnie z instrukcjami.

Od tej chwili, wszystkie odwolania do getty należy traktować jako odwołania do getty_ps. Natomiast uugetty będzie odnosiło się do uugetty pochodzącego z pakietu getty_ps.

6.3 Konfiguracja uugetty.

Dla przychodzących i wychodzących połączeń modemowych, chcemy zastosować uugetty. uugetty sprawdza czy odpowiednie pliki nie są zablokowane. Trzeba poprawić plik /etc/gettydefs, aby zawierał pozycje dotyczące modemu (pamiętaj, że te pozycje wzajemnie na siebie wskazują (są od siebie zależne), jednak nie mają zastosowania do połączeń z ustaloną prędkością - między każdą pozycją konieczny jest pusty wiersz):

 
# Modem entries 
115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #57600

57600# B57600 CS8 # B57600 SANE -ISTRIP HUPCL #@S @L @B login: #38400

38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: #19200

19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: #9600

9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: #2400

2400# B2400 CS8 # B2400 SANE -ISTRIP HUPCL #@S @L @B login: #115200

Jeśli posiadasz modem 9600 bps lub szybszy, z kompresją danych, wtedy możesz zablokować prędkość portu szeregowego i pozwolić aby modem sam wykonywał przejścia na inne prędkości bps. W takim przypadku zamiast wypróbowywania poszczególnych pozycji pliku /etc/gettydefs, wystarczy aby była tylko jedna pozycja opisujaca ustawienia modemu:

# 115200 fixed speed
F115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #F115200

Jeśli tój modem obsługuje sprzętowe sterowanie RTC/CTS, możesz do pliku /etc/gettydefs dodac opcję CRTSCTS:

# 115200 fixed speed with hardware flow control
F115200# B115200 CS8 CRTSCTS # B115200 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F115200

Jeśli chcesz możesz zmusic uugetty do wyświetlania ciekawych informacji w nagłówku (login banner). W dalszych przykładach pokazuję jak wyświetlić nazwę systemu (komputera), numer portu, prędkość bps. Możesz dodać własne informacje:

               @B    Aktualna (sprawdzona w momencie napotkania @B ) prędkość bps.
               @D    Aktualna data w formacie MM/DD/YY.
               @L    Linia szeregowa do któej przyłączone jest getty.
               @S    Nazwa systemu (komputera).
               @T    Aktualny czas, w formacie HH:MM:SS (24-godziny).
               @U    Liczba aktualnie przcujących użytkowników. Jest to liczba
                           pozycji w pliku /etc/utmp o niezerowym polu ut_name.
               @V    Warość stałej VERSION, zdefiniowanej w plkiku ustawień
                           standardowych.
               Aby wyświetlić pojedynczy znak @ musisz napisac '\@\ lub '@@'.
        

Następnie upewnij się, że istnieją odpowiednie pliki urządzeń wejściowych i wyjściowych, i że modem jest włączony. Jeśli twoj modem jest podłączony do portu ttyS3 muszą istnieć pliki /dev/cua3 i /dev/ttyS3. Jeśli odpowiendnie pliki urządzeń nie istnieją wróć do rozdziału Tworzenie plików urządzeń w katalogu <tt>/dev</tt> i utwórz niezbędne pliki urządzeń. Jeśli chcesz mieć możliwość dzwonienia, podczas gdy uugetty czeka na nadejscie połączeń z zewnątrz, skorzystaj z urządzeń /dev/cua zamiast /dev/ttyS.

Po zakończeniu edycji /etc/gettydefs możesz sprawdzić, czy składnia pliku jest poprawna wydając polecenie:

        linux# getty -c /etc/gettydefs
        

6.4 Przystosowywanie uugetty.

Istniej mnóstwo parametrów, które możesz modyfikować oddzielnie dla każdego posiadanego portu. Przechowywane są w odzielnych plikach, każdy port może miećswój plik. Program uugetty zawsze wpierw sprawdza zawartość pliku /etc/conf.uugetty zawierajacego wspólne parametry dla wszystkich portów, a dopiero później wczytuje z /etc/conf.uugetty.ttySN konfiguracje konkretnego portu. Przykładowe pliki konfiguracyjne można znaleźć w zródłach pakietu. Zwykle są w każdej dystrybucji Linux-a. Nie przedstawiamy ich tutaj ze wzgledu na ich objętość. Jeśli używasz starszych wersji getty_ps (tzn. wcześniejszych od 2.0.7e) lub nie korzystasz ze schematu FSSTND, domyślnym plikiem konfiguracyjnym będzie /etc/default/uugetty.ttySN. Mój plik /etc/conf.uugetty.ttyS3 wygląda tak:

# przykładowy plik konfiguracyjny modemu standardu Hayes 
# umożliwiający przyjmowanie połączeń z zewnątrz 
# 
# alternatywny plik blokaty, który należy sprawdzać. Jeśli istnieje, 
# wtedy uugetty jest uruchamiane ponownie, a więc modem jest 
# równiez powtórnie inicjowany

ALTLOCK=cua3
ALTLINE=cua3
# uzywana linia 
INITLINE=cua3
# czas po jakim przerywamy, jeśli brak reakcji użytkownika
TIMEOUT=60
# Ciag znaków zaierające polecenia inicjujące modem
# format: (oczekiwane) (wysyłane) ... (sekwencja)
INIT="" AT\r OK\r\n
WAITFOR=RING
CONNECT="" ATA\r CONNECT\s\A
#  istawiamy opóżnienie przez pokazaniem nagłówka Loginu.
DELAY=1
#DEBUG=010

Aby uugettty było uruchomione i nasłuchiwało na porcie, musisz do pliku /etc/initab dopisać wiersz (wstawiając odpowiednie informacje typu port,prędkość,typ terminala):

S3:456:respawn:/sbin/uugetty ttyS3 F38400 vt100

Zrestartuj proces init:

linux# init q 

Parametr podany w pliku /etc/inittab określający predksość w bps powinien wskazywać możliwie jak największą prędkość.

Teraz Linux będzie oczekiwał na połączenia przychodzące przez port szeregowy. Zadzwoń z innego komputera i wejdź do swojego systemu.

uugetty posiada mnóstwo opcji. Zobacz stronę podręcznika dla getty(1m). Prócz innych ciekawych cech dostępne są funkcje ringback i udostępnianie modemu w zależnośći od pory dnia/nocy. RTFM :-).

7. Jak skonfigurować terminal przyłączony do mojego komputera PC?

Instrukcje zawarte w tym rozdziale przedstawiają w jaki sposób przyłączyc do portu szeregoweg onaszego Linux-a terminal lub inny komputer.

7.1 Wymagania sprzętowe.

Upewnij się, że posiadasz dobry kabel. Kabel bezmodemowy (null modem cable) kupiony w sklepie komputerowym będzie dobry. Tylko to musi być kabel bezmodemowy!. Wiele sklepów nazywa ten kabel kablem do drukarki szeregowej. Pamiętaj aby podłączyć modem do portu szeregowego (męski DB25 lub DB9), a nie równoległego.

Gniazdo DB25 potrzebuje co najmniej kabla o takich połączeniach:

 
        PC male DB25                            Terminal DB25
        TxD   Transmit Data         2 --> 3     RxD   Receive Data
        RxD   Receive Data          3 <-- 2  TxD   Transmit Data
        SG    Signal Ground         7 --- 7     SG    Signal Ground

Jeśli chesz korzystać ze sprzętowego uzgadniania prędkości, musisz mieć pełny kabel bezmodemowy:

        PC male DB25                            Terminal DB25
        TxD   Transmit Data         2 --> 3     RxD   Receive Data
        RxD   Receive Data          3 <-- 2     TxD   Transmit Data
        RTS   Request To Send       4 --> 5     CTS   Clear To Send
        CTS   Clear To Send         5 <-- 4     RTS   Request To Send
        DSR   Data Set Ready        6
                                    |
        DCD   Carrier Detect        8 <-- 20    DTR   Data Terminal Ready
        SG    Signal Ground         7 --- 7     SG    Signal Ground
                                          6     DSR   Data Set Ready
                                          |
        DTR   Data Terminal Ready  20 --> 8     DCD   Carrier Detect

Jeśli masz gniazdo DB9 spróbuj takich połączeń:

        PC DB9                                  Terminal DB25 
        RxD   Receive Data          2 <-- 2  TxD   Transmit Data
        TxD   Transmit Data         3 --> 3     RxD   Receive Data
        SG    Signal Ground         5 --- 7     SG    Signal Ground

I na koniec pełny kabel DB9-DB25 wygląda tak:

        PC DB9                                  Terminal DB25
        RxD   Receive Data          2 <-- 2     TxD   Transmit Data
        TxD   Transmit Data         3 --> 3     RxD   Receive Data
                                          6     DSR   Data Set Ready
                                          |
        DTR   Data Terminal Ready   4 --> 8     DCD   Carrier Detect
        GND   Signal Ground         5 --- 7     GND   Signal Ground
        DCD   Carrier Detect        1
                                    |
        DSR   Data Set Ready        6 <-- 20    DTR   Data Terminal Ready
        RTS   Request To Send       7 --> 5     CTS   Clear To Send
        CTS   Clear To Send         8 <-- 4     RTS   Request To Send
        (RI   Ring Indicator        9 not needed)
(Tak, piny 2 i 3 w złączkach DB9 i DB25naprawdę mają przeciwne znaczenie).

Jeśli nie używasz pełnego kabla bezmodemowego, możesz być zmuszony do zrobienia następującej sztuczki: po stronie komputera połącz ze sobą RTS i CTS, oraz DSR,DCD i DTR. W ten sposób jeśli komputer zażyczy sobie sygnału uzgadniania, otrzyma go, od samego siebie.

Teraz, kiedu masz już dobry kabel podłącz terminal do komputera. Jeśli możesz powiedz terminalowi aby ignorował sygnały sterujące modeme. Spróbuj ustawić następujące parametry terminala: prędkosć 9600 bps, 8bitów danych, 1 bit stopu, brak bitu parzystości.

7.2 Konfigurowanie getty.

Zainstaluj getty_ps zgodnie z instrukcjami zawartymi w rozdzaiale 7.2. Dodaj do pliku /etc/gettydefs pozycję opisującą twój terminal:

# 38400 bps Dumb Terminal entry
DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400

# 19200 bps Dumb Terminal entry
DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200

# 9600 bps Dumb Terminal entry
DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600

Jeśli chesz możesz w zachęcie do sysytemu wyświetlać różne interesujące informacje. W moich przykładach wyświetlana jest nazwa systemu i nazwa linii. Możesz dodać inne rzeczy:

       @B    Aktualna (sprawdzona w momencie napotkania @B ) prędkość bps.
       @D    Aktualna data w formacie MM/DD/YY.
       @L    Linia szeregowa do któej przyłączone jest getty.
       @S    Nazwa systemu (komputera).
       @T    Aktualny czas, w formacie HH:MM:SS (24-godziny).
       @U    Liczba aktualnie przcujących użytkowników. Jest to liczba
             pozycji w pliku /etc/utmp o niezerowym polu ut_name.
       @V    Warość stałej VERSION, zdefiniowanej w plkiku ustawień
             standardowych.
       Aby wyświetlić pojedynczy znak @ musisz napisac '\@\ lub '@@'.

Po zmodyfikowaniu /etc/gettydef możesz się upewnić, że składnia pliku jest poprawna wydając polecenieL

linux# getty -c /etc/gettydefs

Każdemu z istniejących portów szeregowych można przydzielić mnóstwo parametrów. Umieszcza się je w odzielnych plikach, po jednym dla każdego z portów. Każdy proces uugetty będzie korzystał z parametrów zawartych w pliku /etc/conf/uugetty, a z /etc/conf.uugetty.ttySN będzie korzystał jedynie proces obsługujący port ttySN. Przykładowe pliki z opcjami można znaleźć w źródłach pakietu getty_ps, który jest dostarczany niemal z każdą dystrybucją. Aby aoszczędzić miejsca nie prezentujemy ich tutaj. Pmiętaj, że jeśli korzystasz z getty w wersji starszej niż 2.0.7e, lub nie stosujesz się do zasad FSSTND, to domyślny plik konfiguracyjny będzie nosił nazwę /etc/default/conf.uugetty. Mój plik /etc/conf.uugetty.ttyS3 wygląda następująco:

        # sample uugetty configuration file for a Hayes compatible modem to allow
        # incoming modem connections
        #
        # alternate lock file to check... if this lock file exists, then uugetty is
        # restarted so that the modem is re-initialized
        ALTLOCK=cua3
        ALTLINE=cua3
        # linia, którą należy zainicjować
        INITLINE=cua3
        # timeout po jakim nalezy się rozłaczyć jeśli nie ma ruchu
        TIMEOUT=60
        # ciąg znaków konfigurujący modem 
        # format: <oczewiname> <dowyslania> ... (sekwencja pogawedki)
        INIT="" AT\r OK\r\n
        WAITFOR=RING
        CONNECT="" ATA\r CONNECT\s\A
        #niniejszy wiersz wprowadza opóźnienie przed wysłaniem 
        #informacji (login banner)
        DELAY=1
        #DEBUG=010
        

Aby uruchomić getty na porcie szeregowym wprowadż odpowiednie zmiany do pliku /etc/inittab (podmieniając odpowiednio informacje, tak aby pasowały do twojego systemu):

        S1:456:respawn:/sbin/uugetty -d /etc/default/uugetty.ttyS3 ttyS3 F115200 vt100
        

Zrestartuj init:

        linux# init q 
        

W tym momencie powinieneś zobaczyć zachętę wejścia do systemu. Być może musisz wcisnąć wpierw kilkakrotnie <return>, aby zwrócić na siebie uwagę terminala.

7.3 Uwagi o konfiguracji komputera PC jako terminala

Wielu ludzi konfiguruje swoje komputery PC do pracy jako terminal przyłączony do serwera z Linux-em. Stare komputery 8088 lub 286 są do tego celu doskonałe. Wszystko co potrzebujesz to dyskietka startowa z DOSem i program komunikacyjny emulujący terminal. Do tego celu bardzo dobrze nadaje się kermit. Skompilowane wersje kermita niemal dla każdego systemu operacyjnego można znaleźć pod adresem http://www.columbia.edu:/kermit. Do tego celu nadają się również takie dosowe programy jak telix czy procomm. Pamiętaj aby prawidłowo skonfigurować program komunikacyjny, wprowadź poprawny numer portu.

8. Czy mogę używać więcej niż 2 porty szeregowe?

Nie musisz czytać tego rozdziału jeśli nie chcesz używać więcej niż 2. portów szeregowych (pod warunkiem, że nie masz karty wieloportowej).

Jeśli masz jeszcze jakiś wolny port szeregowy, to odpowiedź brzmi: tak, możesz go wykorzystać.

Liczba wykorzystanych portów szeregowych jest ograniczona liczbą dostępnych przerwań IRQ i adresów portów We/Wy.Jest o ograniczenie szyny komputera PC, nie Linux-a. Każde urządzenie szeregowe musi mieć przydzielone własne przerwanie IRQ i adres portu. Urządzeniem szeregowym może być port szeregowy, wewnętrzny modem lub karta wieloportowa.

Wieloportowe karty portów szeregowych są projektowane w specjalny sposób, który umożliwia posiadanie wielu portów szeregowych, które współdzielą jedno przerwanie IRQ. Linux pobiera z nich dane wykorzystując do tego rózne adresy dla każdego z portów na karcie.

8.1 Wybór przerwań dla urządzeń szeregowych.

Twój komputer standardowo ma przerwanie IRQ=4 przydzielone portom ttyS0, ttyS2 i IRQ=3 do portów ttyS1, ttyS3. Aby skorzystać z więcej niż jednego urządzenia szeregowego będziesz musiał dla niego przeznaczyć oddzielne przerwanie IRQ. Dobrym pomysłem jest przydzielenie przerwania wykorzystywanego przez port równoległy. Twój PC jest zwykle konfigurowany w ten sposób, że portom równoległym przydzielane są przerwania 5 i 7. Bardzo rzadko używa się dwóch portów równoległych. Co więcej możesz przydzielić przerwanie poru rónoległedo do portu szeregowego i nadal korzystać z portu równoległego. Zmiany przerwań IRQ i innych parametrów można wykonać za pomocą programu setserial. Czasami możesz być zmuszony do zmiany ustawień mikroprzęłączników, zobacz w dokumentacji karty.

Będziesz musiał tak to wszystko skonfigurować, aby każde z urządzeń szeregowych miało jedno i tylko jedno przerwanie. Poniżej moja konfiguracja - umieszczona w pliku /etc/rc.d/rc.local :

                /etc/setserial /dev/cua0 irq 3          # myszka
                /etc/setserial /dev/cua1 irq 4          # terminal Wyse 
                /etc/setserial /dev/cua2 irq 5          # Zoom modem 
                /etc/setserial /dev/cua3 irq 9          # USR modem
        

Standardowe przydziały IRQ:

              IRQ  0    Timer channel 0
              IRQ  1    Keyboard
              IRQ  2    Cascade for controller 2
              IRQ  3    Serial port 2
              IRQ  4    Serial port 1
              IRQ  5    Parallel port 2
              IRQ  6    Floppy diskette
              IRQ  7    Parallel port 1
              IRQ  8    Real-time clock
              IRQ  9    Redirected to IRQ2
              IRQ 10    not assigned 
              IRQ 11    not assigned
              IRQ 12    not assigned
              IRQ 13    Math coprocessor
              IRQ 14    Hard disk controller 1
              IRQ 15    Hard disk controller 2
        

Nie ma Najlepszego wyboru przerwań IRQ. Po prostu upewnij się, że nie jest wykorzystywane przez kilka urządzeń jednocześnie. Dobrym wyborem jest jedno z 2, 3, 4, 5 i 7. ``not assigned'' (nie przydzielone) oznacza, że aktualnie żadne urządzenie go nie używa. Pamiętaj, że IRQ 2 to to samo co IRQ 9. Możesz je nazwyac jak chcesz, sterownik portów szeregowych jest bardzo wyrozumiały. Jeśli posiadasz kartę z 16-to bitową szyną, możesz wtedy dodatkowo korzystać z przerwań 10,11,12 i 15.

Upewnij się, że nie korzystasz z przerwańIRQ 0, 1, 6, 8, 13 lub 14. Są wykorzystywane przez płytę główną. Bedzie bardzo nieszczęśliwa jeśli będziesz próbował zabrać jej przerwanie. Jak już wszystko zrobisz, sprawdź ponownie, zobacz /proc/interrupts i upewnij się, że nie ma konfliktów.

8.2 Ustawianie adresów urządzeń szeregowych.

Następnie musisz ustawić adres portu. Sprawdź podręcznik do karty, gdzie są opisane ustawienia mikroprzełączników. Podobnie, jak w przypadku przerwań, jeden adres może być wykorzystywany tylko przez jedno urządzenie. Porty szeregowe są zwykle skonfigurowane dla następujących adresów:

        ttyS0 address 0x3f8
        ttyS1 address 0x2f8
        ttyS2 address 0x3e8
        ttyS3 address 0x2e8

Wybierz adresy dla każdegu urządzenia szeregowego, następnie odpowiednio ustaw mikroprzełączniki. Ja mam swój modem na porcie ttyS3, mysz na ttyS0 i terminal na ttyS2.

Kiedy zrestartujesz system, Linux powinien zobaczyć porty szeregowe pod adresami, które ustawiłeś. IRQ raportowane podczas startu mogą nie odpowiadać tym ustawionym przez mikroprzełączniki na karcie. Nie martw się tym. Linux podczas startu nie wykonuje rozpoznania przerwań IRQ, ponieważ jest to trudne i może być mylne. Aby powiedzić Linux-owi, które przerwanie jest używane przez dany port trzeba skorzystać z programu setserial.

9. Jak ustawić port szeregowy na większe prędkości? Jaką prędkość powinienem stosować do mojego modemu?

Ta część powinna pomóc w doborze prędkości z jaką modem komunikuje się z programem lub getty.

Przetestuj swoje ustawienia uruchamiając setserial z wiersza komend i jeśli wszystko pracuje poprawnie umieść odpowiednie polecenia w pliku /etc/rc.d/rc.serial lub w /etc/rc.d/rc.local, wtedy będą wykonywane przy starcie systemu. Ja ustawiam prędkość 115200 portu ttyS3 poleceniem:

        /sbin/setserial /dev/cua3 spd_vhi
        

Upewnij się, że korzystasz z odpowiedniej ścieżki dostępu do programu setserial i poprawnych nazw urządzeń. Możesz sprawdzić aktualne ustawienia portu szeregowego wydając polecenie

        setserial -a /dev/ttyS3
        

10. Narzędzia i programy komunikacyjne.

Jak już wszystko zacznie działać, możesz przyjżeć się tym bardziej zaawansowanym programom. Jeśli nie ma ich w twojej dystrybucji, wszystkie są dostępne w standardowych archiwach FTP.

11. Sztuczki i chwyty.

Kilka sztuczek, które mogą Ci się przydać ...

11.1 Kermit i zmodem.

Abu korzystać z protokołu zmodem w programie kermit, dodaj do pliku .kermrc następujace dane:

        define rz !rz < /dev/cua3 > /dev/cua3
        define sz !sz \%0 > /dev/cua3 < /dev/cua3
        
Pamiętaj o podaniu prawidłowego portu, tego, do którego przyłączone jest modem. Nastepnie w wierszu zachęty programu kermit po prostu napisz rz lub sz <filename>.

11.2 Automatyczne ustawinie rodzaju terminala.

Aby automatycznie ustawiac typ terminala dla wszystkich sesji prowadzonych przez daną linie, dodaj do pliku /etc/inittab odpowiednią informację. Gdybym miał terminala vt100 przyłączony do portu ttyS1 dodałbym opcję wt100 do wiersza opisującego tę linię:

        S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100
        

Możesz również korzystać z programu tset, który potrafi określić rodzaj terminala i nie jest zależny od żadnych ustawień domyślnych.

11.3 Kolorowe ls przy połączeniach przez porty szeregowe.

Jeśli użycie kolorów ls bruździ w ustawieniach terminala trzeba to wyłączyć. ls --color i ls --colour wykorzystuje kolory. Niektóre dystrybucje korzystają domyślnie z "kolorowego" ls. Sprawdz /etc/profile i /etc/csh.cshrc czy nie znajdziesz tam aliasów dla ls. Możesz również sam zrobić alias ls na ls --no-color, jeśli nie chcesz zmieniać domyślnej konfiguracji systemu.

11.4 Drukowanie na drukarce przyłączonej do terminala.

Istnieje program o nazwie vtprint, który potrafi to zrobić. ftp://ftp.sdsu.edu/pub/vtprint lub http://www.sdsu.edu/~garrett.

Inny program, który to umożliwia nosi nazwę xprt. ftp://sunsite.unc.edu/pub/Linux/system/printing.

11.5 Czy Linux potrafi automagicznie skonfigurować urządzenia szeregowe?

Tak. Aby Linux mógł rozpoznać i skonfigurować urządzenie szeregowe dodaj do pliku startowego (/etc/rc.d/rc.local lub /etc/rc.d/rc.serial) następujące polecenie:

        /sbin/setserial /dev/cuaN auto_irq skip_test autoconfig
        
Zrób to dla każdego portu, który chcesz skonfigurować. Pamiętaj aby podać nazwę pliku urządzenia, które rzeczywiście istnieje w twoim komputerze.

Uwagi na temat kart wieloportowych.

Informacje o adesach portów i przerwaniach dla kart wieloportowych znajdziesz w pliku rc.serial w pakiecie setserial. Zawiera mnóstwo szczegółów na temat kart wieloportowych, włączając adresy portów i nazwy urządzeń.

11.6 Korzystanie z konsoli przez port szeregowy.

W numerze 36 znajdzesz artykuł Linux Journal, http://www.ssc.com/lj/issue36/index.html wyjaśniający w jaki sposób korzystać z konsoli przez port szeregowy. Niestety listy wysyłane do autora powracają. Mam nadzieje, że wkrótce artykuł pojawi się w serwisie Linux Journal pod podanym wcześniej adresem.

11.7 Wyższe prędkości transmisji.

Jeśli w systemach z dyskami (E)IDE zauwazysz niskią szybkość transmisji przez porty szeregowe i bledy (overruns) portu szeregowego skorzystaj z programu hdparm. Jest to narzędzie, które umożliwia modyfikacje parametrów urządzeń (E)IDE, włączając odblokowywanie innych przerwań w czasie trwania przerwani IRQ dysku. Zwiększy to czułość systemu i ułatwi mu szybszą reakcję na wydarzenia eliminując błędy występujące na porcie szeregowym (overruns). Pamiętaj aby bardzo dokładnie przeczytać dokumentacje programu ponieważ niektóre sterowniki/dyski nie lubią takich ustawień i mogą zniszczyć system plików znajdujący sie na dysku.

Zwróć również uwagę na narzędzie o nazwie irqtune umożliwiające zmianę prirytetów przerwań IRQ poszczególnych urządzeń, na przykład portu szeregowego, na którym pracuje Twój modem. Może to z zwiększyć szybkość przesyłania informacji przez port szeregowy twojego komputera. Dokumnet FAQ dotyczący irqtune jest dostępny pod adresem http://www.best.com/~cae/irqtune.

12. Krok dalej.

Nie musisz czytać tego rozdziału, jego celem jest wprowadzenie czytelnika w świat telekomunikacji i wnętrze UNIXa.

12.1 Co to są pliki blokady (lockfiles)?

Plik blokady to zwykły plik, którego istnienie po prostu oznacza, że dane urządzenie jest w użyciu. Przechowywane są w katalogu /usr/spool/uucp lub /var/lock. Pliki blokady pod Linux-em noszą nazwę LCK..name. name oznacza nazwę urządzenia lub nazwą komputera w formie UUCP. Pewne procesy tworzą pliki blokady aby mieć wyłączny dostęp do urządzeń. Np. jeśli będziesz dwonił swoim modemem pojawi się plik blokady mówiący innym procesom, że ktoś już używa tego urządzenia. Pliki blokady zwierają zwykle PID procesu zajmującego zasób. Większość programów odczytuje pliki blokady i sprawdza czy proces o podanym w tym pliku identyfikatorze PID nadal istnieje. Jeśli sprawdzenie wykaże, że taki proces istnieje, czyli plik blokady jest ważny, to proces który sprawdzał plik blokady powinien zakończyć działanie. Jeśli taki proces już nie istnieje, niektóre programy usuwają przeterminowany plik blokady i korzystają z urządzenia zakładając nowy własny plik blokady. Inne programy po prostu kończą działanie informując Cię, że urządzenie jest w użyciu.

12.2 ``baud'' vs. ``bps''.

``baud'' i ``bps'' są prawdopodobnie najczęściej niepoprawnie używanymi terminami w branży komputerowo/telekomunikacyjnej. Wiele osób używa tych terminów zamiennie, podczas gdy każdy z nich oznacza coś innego!

baud

Prędkość modulacji (baud rate) jest miarą ile razy na sekundę zmienia się sygnał wysyłany przez modem (modulator-demodulator). Spotykane zwykle prędkości wynoszą 50, 75, 110, 300, 600, 1200 i 2400. Większość szybkich modemów działa z prędkością 2400. Ze względu na ograniczenia linii telefonicznych ciężko jest uzyskać prędkości większe niż 2400 i działają tylko w specyfcznych warunkach. Nazwa ``baud'' pochodzi od nazwiska Emila Baudot, wynalazcy asynchronicznego telegrafu.

bps

Prędkość bps jest miarą przesyłane jinformacji w jednostce czasu (bity na sekunde). Standardowe prędkości bps wynoszą 50, 75, 110, 300, 1200, 2400, 9600, ... 115200. Modemy z kompresją V42bis (kompresja 4:1) posiadają teoretyczną prędkość do 115200 bps. O tym zwykle myslą ludzie, kiedy używają mylnie pojęcia ``baud''.

Skoro szybkie modemy dzialają z prędkościs 2400 bodów, w jaki sposów przesyłają informacje z prędkościa 14400 bps? Modemy uzyskują zależność bps > bod-y dzięki kodowaniu w jednym bodzie kilku bitów. Jeśli 2 lub więcej bitów jest zakodowanych w jednym bodzie, prędkość bps przekracza liczbę bodów na sekunde. Jeśli twój modem łączy się z prędkością 14400 to znaczy, że przesyła 6 bitów w jednym bodzie.

Jak powstało całe to zamieszanie? Dawniej, kiedy dzisiejsze przestarzałe modemy były jednymi z najszybszych, prędkośc bps była zwykle równa ilości bodów na sekunde. Jeden bod zawieral jeden bit. Ludzie używali tych nazw wymiennie, oba pojęcia miały te ame wartości. Np. modem o prędkości 300 bps wysyłał 300 bodów na sekunde. Wszystko się zmieniło, kiedy pokazały się szybsze modemy i prędkość przesyłanych bitów przekroczyła prędkość wysylanych bodów.

12.3 Co to jest UART? Jaki ma wpływ na osiągi portu szeregowego?

UART ((Universal Asyncronous Receiver Transmitter) są układami znajdującymi się na karcie portów szeregowych. Ich zadaniem jest zamiana danych na bity, przesyłanie bitów przez linię szeregową i odbudowa danych na podstawie otrzymanych bitów. Układy UART operują na informacji podzielonej na bajty, który może być również reprezentacją znaku ASCII.

Powiedzmy, ze posiadasz terminal przyłączony do twojego PC. Kiedy wprowadzasz znak, terminal przekazuje go do nadajnika (również pewnego rodzaju układu UART). Nadajnik przesyła ten bajt przez linię szeregową, bit po bicie z określoną prędkościa. Po stronie PC, odbierający układ UART pobiera kolejne bity i buduje z nich bajty, które wstawia kolejno do bufora.

Istnieją dwa różne rodzaje układów UART. Powszechnie znane głupe 8250 i 16450, oraz zawierające kolejkę FIFO, sprytniejsze 16550A. Aby zrozumieć róznicę przestudiujmy co się dzieje, kiedy układ UART wysyła lyb otrzymuje bajt informacji.

Układ UART sam z siebie nie potrafi nic zrobić. Tylko wysyła i odbiera bity. Za akżdym razem, kiedy jeden bajt został wysłany lub odebrany CPU otrzymuje sygnał przerwania od urządzenia szeregowego. Wtedy procesor przenosi otrzymany bajt z bufora układu UART gdzieś do pamięci, lub przekazuje układowi UART do wysłania kolejny bajt. Układy 8250 i 16450 posiadają bufor o rozmiarze jednego bajtu. To oznacza, że za każdym razem, kiedy jeden bajt jest wysłany lub odebrany procesor otrzymuje sysgnał przerwania. Przy małych prędkościach wszystko jest w porządku. Lecz przy wyższych prędkościach, procesor jest tak zajęty obsługą układu UART, że nie ma czasu na inne zadania. W niektórych przypadkach procesor nie nadąża z samą obsługą układu UART i bajt zawarty w buforze ukladu UART jest nadpisywany (niszczony) ponieważ został tam umieszczony następny bajt, zanim poprzedni został przeniesiony w bezpieczne miejsce.

To jest sytuacja, w której przydaje się układ 16550A. Ten układ posiada bufor FIFO o rozmiarze 16 bajtów. To znaczy, że może wysłać lub odebrać 16 bajtów, zanim jest zmuszony wysłać do procesora sygnał przerwania. Poza tym prócz tego ,ze sam układ może poczekać, to jeszcze procesor może przenieść za jednym razem wszystkie 16 bajtów. Choć poziom generowania przerwań rzadko jest równy 16, jest to nadal ogromna przewaga nad innymi układami UART, posiadajacymi 1-no bajtowy bufor. Procesor otrzymuje mnej przerwań i ma czas na obsługę innych zadań. Dane nie są gubione i wszyscy są szczęśliwi. (Istnieją jeszcze układy 16550, lecz są traktowane tak, jak 16450 ze względu na blędy jakie zawierają).

Zasadniczo układy 8250 i 16450 powinny się sprawować poprawnie do prędkości 38400 bps. Przy wyższych prędkościach możesz mieć okazję zobserwować utratę danych i zmiejszenie czasu odpowiedzi przy pracy zdalnej. Inne systemy operacyjne (nie sprzeczajmy się co to jest sytem operacyjny), jak DOS nie są wielozadaniowe więc mogą sobie lepiej radzić z układami 8250 lub 16450. Dlatego niektórzy nie widzą utraty danych, zanim nie przesiądą się na Linux-a.

Inteligentne karty wieloportowe nie posiadają układów UART, lecz układy DSP, które wykonują dodatkowe buforowanie i sterowanie jescze bardziej odciążając procesor. Np Cyclades Cyclom i Stallion EasyIO korzystają z układu Cirrus Logic CD-1400 RISC.

Pamiętaj, że głupie układy UART nie są złe. Nie są wystarczająco dobre do dużych prędkości. Nie powinieneś mieć żadnych kłopotów podłączająć mysz lub terminal do portu pracującego na takim układzie. Lecz w przypadku modemów o wysokiej prędkości 16550A jest koniecznością.

Karty z układami 16550 możesz kupić niewiele drożej, zapytaj się swego sprzedawcy jakiego rodzaju układy znajdują się na karcie. Lub jeśli chcesz unowocześnić swoją kartę wystarczy nabyć układy 16550A i włożyć w miejsce starych 16450. Mają zgodny rozkład nóżek. Część kart ma montowane układy 16450 na specjalnych podstawkach, jeśli nie możesz sprzedać starą kartę i kupić nową. Prawdopodobnie zaoszczędzisz sobie w ten sposów bielu kłopotów. Ich cena nie powinna przekroczyć US$ 50.

12.4 Jaka jest naprawdę różnica między urządzeniami /dev/cuaN itt>/dev/ttySN devices?

Różnica polega na sposobie otwierania tych urządzeń. Urządzenia wejściowe /dev/ttySN są otwierane w trybie blokowania aż do sygnału CD (ktoś się właśnie połączył). Więc jeśli ktoś chce korzystać z urządzenia /dev/cuaN nie ma konfliktu z programem nasłuchującym urządzenie /dev/ttySN.

To rozróżnienie jest potrzebne aby umożliwić przez ten sam modem połączenia przychodzace (ttySN) i wychodzące (cuaN).

13. Radzenie sobie z kłopotami.

13.1 Cały czas pojawia się komunikat ``line NNN of inittab invalid''.

Upewnij się, że stosujesz odpowiednia składnie w pliku /etc/inittab zgodną z twoją wersja programu init. Różne wersje tego programu obecne w świecie Linux-a mają różną składnię. Również upewnij się, że używasz poprawnej składni dla twojej wersji getty.

13.2 Kiedy próbuję zadzwonić dostaję komunikat ``/dev/cuaN: Device or resource busy''.

Ten problem może się pojawiać, gdy DCD i DTR nie są ustawione poprawnie. DCD powinno być włączone tylko wtedy, gdy jest rzeczywiste połączenie (gdy ktoś do ciebie zadzwonił i w danej chwili wykorzystuje modem i port szeregowy), a nie kiedy getty nasłuchuje na porcie. Sprawdź czy twój modem jest skonfigurowany, aby włączać DCD tylko podczas trwania połączenia. DTR powinno być włączone zawsze, gdy coś sprawdza lub nasłuchuję linię, jak getty, kermit lub inny program komunikacyjny.

Inną powszechną przyczyną omunikatu ``device busy'' (urządenie zajęte) jest skonfigurownie portu szeregowego w taki sposob, że używa przerwania IRQ przydzielonego do innego urządzenia. Podczas inicjowania portu sterownik, pyta się Linux-a o pozwolenie na wykorzystanie przerwania sprzętowego. Linux pamięta, które przerwanie zostało mu przydzielone i jeśli twoje przerwanie zostało już przydzielone, urządzenie (np. port szeregowy) nie bedzie mogło zostać prawidłowo zainicjowane. Urządzenie nie ma za bardzo jak powiedzieć Ci o tym, poza przypadkiem kiedy próbujesz go użyc. Przekazuje wtedy błąd ``device busy''. Sprawdź przerwania wszystkich swoich kart (szeregowych, sieciowych, SCSI, itd.). Szukaj konfliktów przerwań IRQ.

13.3 Cały czas otrzymuję ``Id SN respawning too fast: disabled for 5 minutes''.

Upewnij się, że Twój modem jest skonfigurowany poprawnie. Przyjżyj się rejestrom E i Q. Przyczyną może być pogawędka modemu z programem getty.

Upenij się ,że poprawnie wywołujesz getty w pliku /etc/inittab/. Używanie błędnej składni lub nieporawnych nazw urządzeń jest przyczyną licznych kłopotów.

Upewnij się, że /etc/gettydefs ma poprawną składnie. W tym celu wydaj polecenie:

        linux# getty -c /etc/gettydefs
        

Przyczyna może leżeć w niepoprawnej inicjalizacji programu uugetty. Patrz pytanie ``getty lub uugetty nadal nie pracuje poprawnie''.

13.4 Porty szeregowe są powolne, lub mogą przesyłać informacje tylko w jedną strone.

Prawdopodobnie konflikt IRQ. Upewnij się, żę IRQ nie są wspólne. Sprawdź wszystkie karty (szeregowe, sieciowe, SCSI, itd.). Upewnij się, że ustawienia mikroprzełączników i parametry ustawiane przez setserial są poprawne dla wszystkich urządzeń szeregowych. Sprawdź /proc/interrupts i /proc/ioports w poszukiwaniu konfliktów.

13.5 Moj modem blokuje się po tym, jak ktoś się rozączy, lub uugetty nie uruchimi się ponownie.

Przyczyna może leżeć w tym, że kiedy spada sygnał DTR twój modem się nie zeruje. Widziałem jak diody RD i SD na moim modemie szalały, kiedy cos takiego mi się zdarzyło. Twój modem musi się zerować. Wiekszość modemów zgodnych z Hayes wymaga ustawienia &D3, lecz w moim USR Courier musiałem ustawić &D2 i S13=1. Sprawdź w dokumnetacji modemu.

13.6 Mam terminal podłączony do mojego PC, lecz po wpisaniu identyfikatora blokuje się.

Prawdopodobnie pozycja dotycząca tego terminala w pliku /etc/gettydefs nie zawiera opcji CLOCAL. I prawdopodobnie nie używasz pełnego kabla bezmodemowego (full null modem cable). Musisz ustawić opcję CLOCAL, dzieki której Linux ignoruje sygnały strujące modemem. To powinno wyglądać mniej więcej tak:

# 38400 bps Dumb Terminal entry
DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400

# 19200 bps Dumb Terminal entry
DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200

# 9600 bps Dumb Terminal entry
DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600

13.7 Moj modem traci dane przy większych prędkościach.

Jeśli próbujesz uruchomić swój modem z prędkością co najmniej 19200 bps i nie posiadasz układów UART 16550A, powinieneś je wymienić. Patrz rozdział Co to jest UART.

13.8 Podczas startu Linux nie raportuje portów szeregowych w sposób jaki je ustawiłem.

To prawda. Linux nie wykonuje podczas startu rozpoznania IRQ, jedynie strawdza istnienie urządzeń szeregowych. Dlatego nie przejmuj się tym co wypisuje podczas startu na temat IRQ, ponieważ po prostu zakłada standardową konfiguracje. Dzieje się tak ponieważ wykrywanie przerwań IRQ nie jest pewne i mogą być odczytane niepoprawnie.

Dlatego pomimo, że moj ttyS2 jest skonfigurowany na IRQ 5 nadal widzę:

        Jan 23 22:25:28 misfits vmunix: tty02 at 0x03e8 (irq = 4) is a 16550A
        

Musisz powiedzieć Linux-owi o przerwaniach IRQ, korzystając z programu setserial. Po uruchomieniu systemu możesz zajżeć do pliku /proc/interrupts i zobaczyć, jak zostały przydzielone.

13.9 rz i/lub sz nie działają kiedy pracuje na moim Linux-ie przez modem.

Jeśli przy próbie transferu plików Linux szuka urządzenia /dev/modem sprawdź zawartość plików /etc/profile i /etc/csh.cshrc. W niektórych dystrybucjach (szczególnie w Slackware) może tam być zdefiniowana garść aliasów, które wywołują całe zamieszanie. Poraw je lub po prostu usuń.

13.10 Widzę na ekranie śmiesznie wyglądające znaczki.

Tak się dzieje, gdy wyślesz na konsolę wirtualną dane binarne, lub czasami przy połączeniach przez porty szeregowe. Jednym ze sposobów na przywrócenie normalengo wyglądu ekranu jest napisanie echo ^v^[c lub:

 linux% echo
        <ctrl>v<esc>c 

13.11 getty lub uugetty nadal nie dziala.

getty_ps posiada opcję DEBUG. Zmień plik konfiguracyjny /etc/conf.{uu}getty.ttySN i dodaj opcję DEBUG=NNN. NNN może przyjmować kombinacje podanych poniżej wartości ( w zależności o tego jakie informacje chcesz otrzymywać):

        D_OPT   001            ustawianie opcji
        D_DEF   002            przetwarzanie domyśłnych plików konfiguracyjnych
        D_UTMP  004            obsługa utmp/wtmp
        D_INIT  010            inicjowanie liniii (INIT)
        D_GTAB  020            przetwarzanie pliku gettytab
        D_RUN   040            inna diagnostyka czasu wykonania
        D_RB    100            odpluskwianie obcji ringback
        D_LOCK  200            obsługa pliku blokady
        D_SCH   400            obsługa zaplanowanych zdarzeń
        D_ALL   777            wszystko
        

Na początek mozna ustawić DEBUG=010.

Jeśli korzystasz z syslogd, informacje odpluskwiające będą pojawiać się w plikach dzienników. Jeśli syslogd nie jest uruchomiony komunikaty dotyczące odpluskwiania getty będa zachowywane w /tmp/getty:ttySN, a dotyczące uugetty w pliku /tmp/uugetty:ttySN oraz w pliku /var/adm/getty.log. Przypatrz się tej informacji i postaraj się zrozumieć co się dzieje. Prawdobodobnie będziesz musiał dostroić kilka parametrów w plikach konfiguracyjnych i ponwnie skonfigurwać modem.

Możesz spróbować mgetty. Część ludzi miała z nim więcej szczęścia.

14. Inne źródła informacji.

15. Współpraca przy tworzeniu tego dokumentu.

Nie było możliwe napisania tego dokumentu samemeu. Jego większa część została napisana przeze mnie, przepisałem również wiele cudzych poprawek aby zachować ciągłość schematu i stylu. Dziękuje wszystkim, którzy mi pomogli lub skomentowali ten dokument. Pełna lista adresów byłaby abyt długa (ponad 50 adresów). Sczególne podziękowania należą sie Tedowi T'so, który cierpliwie odpowiadał na pytania dotyczące urządzeń szeregowych, Krisowi Glesonowi, który opiekuje się pakietem getty_ps i Gertowi Doeringowi, opiekunowi mgetty.

16. Od tłumacza

Zdaje sobie sprawę, że niniejsze tłumaczenie zawiera mnóstwo błędów. Niestety nie jestem w stanie dokładnie sprawdzić całego dokumentu i świadomie pozostawiam tę pracę czytelnikowi. Będę wdzięczny za wszelkie uwagi na temat tego dokumentu, wytykanie błędów, literówek, składni i wszelkie inne, które mogą przyczynić się do jego ulepszenia.

Wszelkie tego typu uwagi proszę przesyłać na adres piotr.pogorzelski@ippt.gov.pl

Inne przetłumaczone dokumenty można znaleźć na stronie http://www.jtz.org.pl/. Zapraszamy!.

piotr.pogorzelski@ippt.gov.pl.

Koniec Serial-JTZ, polskiego tłumaczenia Serial-HOWTO czy jak to się zwie. doc-linux-pl-2002.06.14.orig/html/Shadow-Password-HOWTO.pl.html0100664000175000017500000022330106770264140022567 0ustar covencoven Przesłanianie haseł (Shadow Password)

Przesłanianie haseł (Shadow Password)

Autor: Michael H. Jackson, mhjack@tscnet.com
v1.3, 3 Kwietnia 1996
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.02, 26 Lipca 1997


Dokument ten opisuje jak zdobyć, zainstalować i skonfigurować pakiet Shadow Password dla Linux-a. Omówione zostało tutaj także zdobywanie i (ponowna) instalacja oprogramowania oraz demonów sieciowych, które potrzebują dostępu do haseł użytkownika. Oprogramowanie to nie jest właściwą częścią pakietu Shadow Suite, ale będą one musiały zostać przekompilowane, aby móc korzystać z haseł. Jest tutaj także zawarty przykład dla programistów, jak dodawać obsługę przesłanianych haseł w swoich programach. Pod koniec dokumentu zawarte zostały odpowiedzi na często zadawane pytania. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał można znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO.

1. Wprowadzenie.

Jest to dokument z serii HOWTO (czyli Jak To Zrobić). Opisuje on jak i dlaczego instalować obsługę "shadow password" na swoim Linux-ie. Zawarte jest także kilka przykładów na używanie pewnych właściwości pakietu Shadow Suite.

Podczas instalacji pakietu oraz używania jego narzędzi musisz być zalogowany jako "root". Podczas instalacji będziesz dokonywał pewnych zmian do oprogramowania systemowego i zalecane jest, abyś zrobił kopię tego oprogramowania. Zalecam też, abyś przeczytał i zrozumiał wszystkie instrukcje zawarte tutaj zanim zaczniesz.

1.1 Zmiany w stosunku do poprzedniej wersji.

Dodane sekcje:
   Dodałem sekcję na temat dlaczego mógłbyś niechcieć instalować
   pakietu Shadow Suite.
   Dodałem sekcję jak uaktualnić xdm-a.
   Dodałem sekcję jak zmusić do działania specjalne właściwości pakietu
   Shadow Suite.
   Dodałem sekcję zawierającą często zadawane pytania.

Poprawki/Uaktualnienia:   
   Poprawiłem odwołania html do sunsite-a.
   Poprawiłem sekcję na temat wu-ftpd, aby odzwierciedlała dodawanie
   -lshadow do pliku Makefile.
   Poprawiłem kilka literówek.
   Zmieniłem sekcję na temat wu-ftpd, aby obsługiwał ELF.
   Uaktualniłem cały dokument, aby odzwierciedlał problemy bezpieczeństwa
   w różnych programach.
   Dodałem rekomendację pakietu Linux Shadow Suite napisanego
   przez Marka Michałkiewicza

1.2 Nowe wersje tego dokumentu.

Najnowszą wersję oryginału tego dokumentu można ściągnąć z ftp.icm.edu.pl z katalogu /pub/Linux/sunsite/docs/HOWTO. Inne formaty znajdują się w katalogu other-formats. Albo poprzez sieć WWW z sunsite.icm.edu.pl. Można też bezpośrednio od autora. Autor będzie też wysyłał nowe wersje na grupę dyskusyjną comp.os.linux.answers

Dokument ten jest także rozprowadzany wraz z dystrybucją pakietu Shadow-YYDDMM.

Na temat nowych wersji tłumaczenia zobacz sekcję Od tłumacza.

1.3 Komentarze.

Proszę wszelkie komentarze, uaktualnienia czy sugestie wysyłać do mnie. Im szybciej otrzymam pocztę tym szybciej mogę poprawić ten dokument. Jeśli masz jakieś uwagi na jego temat, to wyślij je bezpośrednio do mnie, ponieważ bardzo rzadko odwiedzam grupy dyskusyjne.

2. Po co przesłaniać plik passwd ?

W chwili obecnej większość dystrybucji Linux-a nie instaluje domyślnie pakietu Shadow Suite. Dotyczy to Slackware 2.3, Slackware 3.0 i innych popularnych dystrybucji. Jednym z powodów tego jest to, że jeśli zapłacono jakąś kwotę za Shadow Suite to prawa co do redystrybucji nie były do końca jasne. Linux używa licencji GNU, która pozwala na umieszczanie go w dowolnych pakietach (jak np. dystrybucje CD-ROM) i pobieranie za nie opłaty.

Obecny opiekun pakietu Shadow Suite, Marek Michałkiewicz otrzymał źródła oryginału na licencji w stylu BSD, która pozwala na dystrybucję. Teraz, kiedy już sprawy praw kopiowania są rozwiązane, spodziewane jest, że przyszłe dystrybucje będą zawierać domyślnie przesłanianie haseł. Jednak do tego czasu, będziesz musiał je samemu instalować.

Jeśli instalowałeś swoją dystrybucję z CD-ROM-u, to pomimo, że dystrybucja nie zainstalowała Shadow Suite niektóre pliki, których potrzebujesz mogą się znajdować na CD-ROM-ie.

Wersje pakietu 3.3.1, 3.3.1-2 i shadow-mk mają problemy dotyczące bezpieczeństwa ze swoim programem login i kilkoma innymi programami typu suid root i nie powinny być już używane.

Wszystkie potrzebne pliki są dostępne poprzez anonimowane ftp oraz WWW.

W Linux-ie bez zainstalowanego pakietu Shadow Suite informacje o użytkowniku wraz z hasłem trzymane są w pliku /etc/passwd. Hasło znajduje się tam w formie zakodowanej (encrypted). Jednak jeśli spytasz jakiegoś eksperta od kryptografii, to powie ci on/ona, że hasło jest w postaci "encoded", a nie "encrypted" ponieważ używając funkcji crypt(3), tekstowi jest przypisywany łańcuch pusty a hasło jest kluczem. Dlatego, od tego momentu będę używał określenia "encoded".

Algorytm używany do kodowania hasła jest technicznie określany jako algorytm działający w jedną stronę. Jest to algorytm, który jest łatwy do zastosowania w jedną stronę, ale bardzo trudny do złamania. Więcej na ten temat znajdziesz w sekcji 2.4 albo na stronie podręcznika systemowego dotyczącej funkcji crypt(3).

Kiedy użytkownik wybiera hasło, albo jest mu ono przydzielone, jest ono kodowane losowo generowaną wartością zwaną salt (sól). Oznacza to, że każde hasło może zostać zakodowane na 4096 sposobów. Wartość salt jest potem zapisywana razem z zakodowanym hasłem.

Kiedy użytkownik się wlogowuje i podaje hasło, najpierw pobierana jest wartość salt z zakodowanego hasła. Następnie pobrane hasło zostaje zakodowane pobraną wartością, i porównane z zapisanym zakodowanym hasłem. Jeśli łańcuchy te są identyczne, to użytkownik zostaje "wpuszczony" do systemu. Jest bardzo trudno (ale nie jest to niemożliwe) wziąć losowo zakodowane hasło i otrzymać hasło rozkodowane. Chociaż, w każdym systemie z większą liczbą użytkowników, przynajmniej kilka haseł będzie zwykłymi słowami albo jakąś wariacją zwykłych słów.

Włamywacze więdzą o tym wszystkim i po prostu kodują słownik ze słowami i popularnymi hasłami wszytkimi możliwymi wartościami salt. Potem porównają wyniki z zawartością twojego pliku /etc/passwd. Jak znajdą jakiś identyczny łańcuch, to mają hasło na następne konto. Nazywane jest to atakiem słownikowym i jest to jeden z najpopularniejszych sposobów na pozyskiwanie dostępu do systemu przez osoby nieuprawnione.

Jeśli się nad tym zastanowisz, to zobaczysz, że 8-znakowe hasło może zostać zakodowane na 4096 * 13 sposobów. Tak więc słownik składający się powiedzmy z 400.000 popularnych słów, nazw, imion, haseł i ich prostych wariacji zmieściłby się z łatwością na dysku o pojemności 4GB. Włamywacz musi go tylko posortować i sprawdzić czy któryś z łańcuchów nie jest hasłem. Dysk o pojemności 4GB można kupić za ok. 1000 dolarów, tak więc mieści się to w możliwościach większości włamywaczy systemowych.

Jeśli włamywacz zdobędzie twój plik /etc/passwd, to musi on zakodować swój słownik kluczem, który znajduje się w tym pliku. Metoda ta może być wykorzystana przez przeciętnego nastolatka z kilkoma megabajtami na dysku i komputerem klasy 486.

Nawet bez dużej ilości wolnego miejsca na dysku, narzędzia takie jak crack(1) mogą zwykle złamać przynajmniej kilka haseł z systemu z dostatecznie dużą ilością użytkowników (zakładając, że użytkownicy mają możliwość samemu wybierać sobie hasła).

Plik /etc/passwd zawiera także takie informacje jak ID użytkownika i ID grupy, które są używane przez większość programów. Dlatego plik /etc/passwd musi pozostać odczytywalny dla każdego. Jeśli chciałeś właśnie zmienić prawa dostępu do pliku /etc/passwd tak, żeby nikt nie mógł go czytać (oprócz "root-a"), to pierwszym symptomem jaki byś zauważył, to to, że przy wydaniu polecenia ls -l pojawiłyby się numery zamiast nazw użytkowników.

Pakiet Shadow Suite rozwiązuje ten problem poprzez umieszczenie haseł w innym pliku (z reguły jest to /etc/shadow). Plik /etc/shadow ma tak ustawione prawa dostępu, że nie może go czytać nikt, oprócz "root-a". Niektóre programy jak np. xlock, nie muszą mieć możliwości zmiany haseł, ale tylko ich odczytu. Programy te mogą albo być uruchamiane z prawem "suid root", albo możesz dodać grupę shadow, która miałaby tylko prawo odczytu pliku /etc/shadow. Program ten może wtedy należeć do grupy "shadow" i być uruchamiany z prawem "sgid".

Przenosząc zakodowane hasła do innego pliku, efektywnie zabraniamy włamywaczom dostępu do nich, co uniemożliwia ataki słownikowe.

Dodatkowo pakiet Shadow Suite posiada wiele innych zalet:

Instalacja pakietu Shadow Suite przyczynia się do zwiększenia bezpieczeństwa sieci opartej na Linux-ie, ale pozostaje jeszcze wiele innych rzeczy do zrobienia, aby zwiększyć bezpieczeństwo takiej sieci. Z czasem pojawi się seria HOWTO poświęcona bezpieczeństwu.

Na stronie poświęconej bezpieczeństwu w Linux-ie zawarte są różne informacje na ten temat jak również ostrzeżenia o znanych dziurach w systemie.

2.1 Czemu możesz nie chcieć przesłaniać swojego pliku z hasłami ?

Jest kilka okoliczności i konfiguracji, w których instalacja pakietu Shadow Suite nie byłaby dobrym pomysłem:

2.2 Format pliku /etc/passwd.

Nieprzesłonięty plik /etc/passwd ma następujący format:

identyfikator:hasło:UID:GID:imie_nazw:katalog:powłoka

Gdzie:

identyfikator

Nazwa (login) użytkownika

hasło

Zakodowane hasło

UID

Numer użytkownika

GID

Numer domyślnej grupy dla użytkownika

imie_nazw

Imię i nazwisko użytkownika - Właściwie pole to nazywa się GECOS (General Electric Comprehensive Operating System) i mogą tam być zapisane inne dane niż tylko imię i nazwisko Polecenia Shadow i strony podręcznika systemowego nazywają to pole polem komentarza.

katalog

Katalog domowy użytkownika (pełna ścieżka)

powłoka

Powłoka dla danego użytkownika (pełna ścieżka)

Na przykład:

login:Nkjg97jh7yff8:503:100:Imię Nazwisko:/home/login:/bin/bash

Gdzie Nk jest wartocią salt a jg97jh7yff8 jest zakodowanym hasłem. Zakodowane hasło z kluczem mogłoby równie dobrze wyglądać tak: ghHFgj75fR8iP a te dwa łańcuchy to dokłanie te same hasła. Jest 4096 możliwości zakodowania pojedynczego hasła. {Przykładowym hasłem jest tutaj 'hasło' naprawdę zły przykład hasła.}

Jak już pakiet Shadow Suite jest zainstalowany, to plik /etc/passwd zawiera:

login:x:503:100:Imię Nazwisko:/home/login:/bin/bash

Znaczek "x" w tym przypadku jest po prostu czymś co wypełnia miejsce hasła. Format pliku /etc/passwd się nie zmienił, zmieniło się tylko miejsce przechowywania zakodowanego hasła. Oznacza to, że każdy program, który tylko czyta plik /etc/passwd,a nie zapisuje w nim hasła, będzie nadal działał poprawnie.

Hasła znajdują się obecnie w pliku /etc/shadow. (jest to domyślna nazwa)

2.3 Format pliku przesłaniającego.

Plik /etc/shadow zawiera następujące informacje:

login:hasło:ostatnio_1970:może:musi:ostrz:dni:dni_1970:zarez

Gdzie:

login

patrz /etc/passwd

hasło

Zakodowane hasło

ostatnio_1970

Ilość dni od 1 Stycznia 1970, kiedy hasło było ostatnio modyfikowane

może

Ilość dni w przeciągu, których hasło może być zmienione

musi

Ilość dni, po której hasło musi zostać zmienione

ostrz

Ilość dni przed wygaśnięciem hasła od jakiej należy zacząć informować użytkownika o wygaśnięciu hasła.

dni

Ilość dni, po której hasło wygasa i konto jest blokowane

dni_1970

Ilość dni od 1 Stycznia 1970, po której konto jest blokowane

zarez

Pole zarezerwowane

Poprzedni przykład mógł więc wyglądać tak:

login:Nkjg97jh7yff8:9479:0:10000::::

2.4 Przegląd funkcji crypt(3).

Ze strony podręcznika systemowego "man":

"crypt jest funkcją kodującą hasło. Oparta jest na algorytmie DES (Data Encryption Standard) z dozwolonymi wariacjami (między innymi), aby zniechęcić do sprzętowych rozwiązań poszukiwania klucza.

Kluczem jest podane przez użytkownika hasło. [Zakodowany łańcuch jest wartościami NULL]

Salt jest łańcuchem 2-znakowym wybranym ze zbioru [a-zA-Z0-9]. Łańuch ten jest użyty po to, aby zaburzyć algorytm w jeden z 4096 sposobów.

Biorąc 7 najmniej znaczących bitów każdego znaku z klucza otrzymujemy 56-bitowy klucz. Ten 56-bitowy klucz jest używany, do powtórnego kodowania stałego łańcucha (zwykle są to znaki NULL). Zwrócona wartość wskazuje na zakodowane hasło - serię 13 drukowalnych znaków ASCII (dwa pierwsze znaki reprezentują wartość salt). Wartość zwracana wskazuje na stałe dane, których zawartość jest zmieniana przy każdym wywołaniu.

Uwaga: Liczba możliwych wartości klucza to 2^56 = 7,2E16 (około 72 biliardów). Wyczerpujące poszukiwania tego klucza są możliwe przy wykorzystaniu wielu równolegle współpracujących komputerów. Oprogramowanie, takie jak crack(1), jest dostępne i szuka ono takich kluczy, które z reguły używane są przez ludzi. Dlatego właśnie przy wybieraniu hasła powinno się unikać przynajmniej zwykłych słów. Zaleca się, używanie programu passwd(1), które podczas zmiany hasła sprawdza czy nowe hasło nie jest przesadnie proste.

Algorytm DES ma w sobie pewne kruczki, które czynią użycie interfejsu crypt(3) bezużytecznym w przypadku innym niż autentykacja haseł. Jeśli masz zamiar używać interfejsu crypt(3) do kryptografii nie rób tego: zdobądź dobrą książkę na temat kodowania (encryption) i jedną z szeroko dostępnych bibliotek DES."

Większość pakietów Shadow Suite zawiera kod zwiększający ilość znaków w haśle do 16. Eksperci od DES-a są temu przeciwni, ponieważ w takim przypadku kodowanie najpierw odbywa się dla lewej strony dłuższego hasła, a potem dla prawej strony. Z powodu tego jak działa crypt, może to stworzyć mniej bezpiecznie zakodowane hasło niż wtedy, gdy użyte zostałoby hasło krótsze. Dodatkowo, jest mało prawdopodobne, żeby użytkownik był w stanie zapamiętać hasło 16-znakowe.

Trwają w tej chwili prace, które mają na celu zastąpienie dotychczasowego algorytmu autentykacji czymś bardziej bezpiecznym oraz z obsługą dłuższych haseł (szczególnie algorytmem MD5) oraz pozostawienie kompatybilności z metodą wykorzystującą crypt.

Jeśli szukasz dobrej książki na temat kodowania polecam:

        "Applied Cryptography: Protocols, Algorithms, and Source Code in C"
        by Bruce Schneier <schneier@chinet.com>
        ISBN: 0-471-59756-2

3. Zdobywanie pakietu Shadow Suite.

3.1 Historia pakietu Shadow Suite dla Linux-a.

NIE UŻYWAJ PAKIETÓW WYMIENIONYCH W TEJ SEKCJI, SĄ W NICH PROBLEMY Z BEZPIECZEŃSTWEM.

Oryginał pakietu Shadow Suite został napisany przez John F. Haugh II.

Jest kilka wersji, które były używane na Linux-ie:

Pakiet shadow-mk zawiera pakiet shadow-3.3.1 dystrybuowany przez John F. Haugh II wraz z łatą shadow-3.3.1-2 patch, kilka poprawek zrobionych przez Mohan Kokal <magnus@texas.net>, które uczyniły instalację o wiele łatwiejszą, łatę zrobioną przez Joseph R.M. Zbiciak, która eliminuje dziury w programie /bin/login związane z opcjami -f, -h oraz kilka innych łat.

Pakiet shadow-mk był pakietem poprzednio rekomendowanym, ale powinien zostać zamieniony z powodu problemów z bezpieczeństwem związanych z programem login.

W pakietach 3.3.1, 3.3.1-2 oraz shadow-mk są problemy związane z programem login. Błąd ten to niesprawdzanie długości podawanego identyfikatora. Powoduje to przepełnienie bufora, co z kolei powoduje załamania (crashes) programu albo gorzej. Podobno to przepełnienie bufora może być wykorzystane przez kogoś, kto posiada konto w systemie w połączeniu z bibliotekami dzielonymi, aby uzyskać przywileje root-a. Nie będę opisywał jak dokładnie działa ten błąd ponieważ jest dużo systemów Linux-owych, które są zarażone, ale systemy z zainstalowanymi tymi pakietami Shadow Suite oraz większość systemów w wersji przed-ELF bez pakietu Shadow Suite są podatne na atak!

Więcej informacji na ten temat znajdziesz na stronie poświęconej bezpieczeństwu w Linux-ie. (Shared Libraries and login Program Vulnerability)

3.2 Gdzie znaleźć pakiet Shadow Suite.

Jedyny polecany pakiet Shadow Suite jest wciąż w wersji BETA, chociaż najnowsze wersje są bezpieczne w środowisku produkcji i nie zawierają podatnego na ataki programu login.

W pakiecie używane jest następujące nazewnictwo:

shadow-RRMMDD.tar.gz

gdzie RRMMDD oznacza datę wprowadzenia pakietu w obieg.

Wersja ta ostatecznie będzie wersją 3.3.3, kiedy zakończone zostaną testy w wersji BETA, a obsługiwana jest przez Marka Michałkiewicza <marekm@i17linuxb.ists.pwr.wroc.pl>.

Dostępna jest jako shadow-current.tar.gz.

Dostępna jest także pod adresem ftp.icm.edu.pl.

Powinieneś użyć najnowszej dostępnej wersji.

NIE powinieneś używać wersji starszej niż shadow-960129 ponieważ występuje tam opisany powyżej problem z programem login.

Jeśli piszę o pakiecie Shadow Suite, to mam na myśli ten właśnie plik. Zakłada się też, że tej właśnie wersji używasz.

Aby napisać ten dokument użyłem tej właśnie wersji pakietu.

Jeśli wcześniej używałeś pakietu shadow-mk, powinieneś zaktualizować go do tej wersji i ponownie skompilować wszystko to, co pierwotnie przekompilowałeś,

3.3 Co jest zawarte w pakiecie Shadow Suite.

Pakiet ten zawiera zastępcze wersje dla programów:
su, login, passwd, newgrp, chfn, chsh, id

Pakiet ten zawiera także nowe programy: chage, newusers, dpasswd, gpasswd, useradd, userdel, usermod, groupadd, groupdel, groupmod, groups, pwck, grpck, lastlog, pwconv, pwunconv.

Dodatkowo znajduje się tam także biblioteka libshadow.a przeznaczona do pisania i kompilowania programów, które potrzebują dostępu do haseł użytkowników.

Zawarte są także strony podręcznika systemowego do wszystkich programów.

Znajduje się tam także plik konfiguracyjny dla programu login, który zostanie zainstalowany jako /etc/login.defs.

4. Kompilacja programów.

4.1 Rozpakowywanie archiwów.

Pierwszym krokiem po ściągnięciu programu jest rozpakowanie go. Pakiet jest w formie starowanej i skompresowany programem gzip, tak więc najpierw przenieś go do /usr/src, a potem napisz:

tar -xzvf shadow-current.tar.gz

Powstanie katalog /usr/src/shadow-RRMMDD, w którym znajdą się źródła pakietu.

4.2 Konfiguracja w pliku config.h

Pierwszą rzeczą jaką musisz zrobić, to skopiować odpowiednie pliki Makefile i config.h:

cd /usr/src/shadow-RRMMDD
cp Makefile.linux Makefile
cp config.h.linux config.h

Potem powinieneś przejrzeć plik config.h. Zawiera on definicje dla niektórych opcji konfiguracyjnych. Jeśli używasz zalecanego pakietu, to polecam wyłączenie na początek przesłanianie haseł grup.

Domyślnie opcja ta jest włączona. Aby to wyłączyć, wyedytuj plik config.h i zmień #define SHADOWGRP na #undef SHADOWGRP. Na początek proponuje to wyłaczyć, a później jak będziesz chciał haseł dla grup i administratorów grup, to możesz przekompilować pakiet. Jeśli zostawisz tę opcję włączoną musisz stworzyć plik /etc/gshadow.

Włączanie opcji pozwalającej na dłuższe hasła nie jest zalecane - patrz wyżej.

Opcja AUTOSHADOW została zaprojektowana, aby umożliwić działanie programom, które ignorują przesłanianie haseł. Teoretycznie brzmi to dobrze, ale niestety nie działa poprawnie. Jeśli właczysz tę opcję i program zostanie uruchomiony z przywilejami "root-a", może on wywołać funkcję getpwnam() jako "root", a później zapisać zmienioną pozycję spowrotem do pliku /etc/passwd (i hasło nie jest już przesłonięte).

Do takich programów zaliczają się chfn i chsh. (Nie możesz obejść tego przez zamianę rzeczywistego uid z efektywnym uid przed wywołaniem funkcji getpwnam() ponieważ root także może używać chfn i chsh.)

To samo ostrzeżenie jest słuszne jeśli kompilujesz bibliotekę libc, która posiada opcję SHADOW_COMPAT, która robi to samo. Nie powinna ona być używana! Jeśli zakodowane hasła zaczną się pojawiać spowrotem w pliku /etc/passwd, to to właśnie jest przyczyną.

Jeśli używasz wcześniejszej wersji biblioteki niż 4.6.27, będziesz musiał zrobić trochę więcej zmian w pliku config.h i Makefile.

W pliku config.h zmień:

#define HAVE_BASENAME

na:

#undef HAVE_BASENAME

A następnie w pliku Makefile zmień:

SOBJS = smain.o env.o entry.o susetup.o shell.o \
        sub.o mail.o motd.o sulog.o age.o tz.o hushed.o

SSRCS = smain.c env.c entry.c setup.c shell.c \
        pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
        tz.c hushed.c

na:

SOBJS = smain.o env.o entry.o susetup.o shell.o \
        sub.o mail.o motd.o sulog.o age.o tz.o hushed.o basename.o

SSRCS = smain.c env.c entry.c setup.c shell.c \
        pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
        tz.c hushed.c basename.c

Zmiany te powodują zawarcie kodu z basename.c, który zawiera się w libc 4.6.27 i późniejszych.

4.3 Kopie zapasowe twoich oryginalnych programów.

Dobrym pomysłem będzie zrobienie kopii zapasowych programów, które zostaną zamienione przez Shadow Suite. W dystrybucji Slackware 3.0 są to:

Pakiet w wersji BETA ma możliwość wykonania tego poprzez program make, ale jest to w komentarzu w pliku Makefile, ponieważ różne dystrybucje umieszczają te programy w różnych miejscach. Można to zrobić pisząc: make save, ale najpierw trzeba skasować znaki # z pliku Makefile od linii: save:

Powinieneś także zrobić kopię zapasową pliku /etc/passwd, ale bądź ostrożny, żebyś nie zmazał programu passwd w katalogu /etc.

4.4 Polecenie make

Aby zainstalować pakiet musisz być zalogowany jako "root".

Uruchom make, aby skompilować programy wykonywalne:

make all

Możesz zobaczyć ostrzeżenie: rcsid defined but not used. Wszystko jest w porządku, ponieważ autor używa wersji kontrolnej pakietu.

5. Instalacja

5.1 Zaopatrz się w dyskietkę startową w razie gdybyś coś popsuł.

Jeśli coś poważnie pójdzie nie tak, byłoby dobrze, gdybyś miał dyskietkę startową. Jeśli masz dyskietki boot/root z czasów instalacji, to w porządku, w innym przypadku przeczytaj Bootdisk-HOWTO, które opisuje jak zrobić dyskietkę startową.

5.2 Usuwanie zduplikowanych stron podręcznika systemowego.

Powinieneś także przenieść strony podręcznika systemowego, które zostaną zastąpione. Nawet jeśli jesteś na tyle odważny, że instalujesz Shadow Suite bez kopii zapasowej, to i tak będziesz chciał przenieść stare strony podręcznika systemowego. Nowe strony normalnie nie usunęłyby starych, ponieważ te drugie są przypuszczalnie skompresowane.

Możesz użyć takiej kombinacji poleceń: man -aW polecenie i locate polecenie, aby zlokalizować strony, które mają być usunięte czy przeniesione. Raczej łatwiej zrobić to przed poleceniem make install.

Jeśli używasz dystrybucji Slackware 3.0, to oto strony, które powinieneś usunąć/przesunąć:

W katalogu /var/man/cat[1-9] mogą znajdować się strony o tych samych nazwach, które także powinny zostać usunięte/przeniesione.

5.3 Polecenie make install

Jesteś gotów, aby napisać (zrób to jako "root"):

make install

Zainstaluje to nowe programy i programy zastępcze oraz ustawi odpowiednie prawa dostępu do plików. Zostaną także zainstalowane strony podręcznika systemowego.

Są tu także instalowane pliki nagłówkowe w odpowiednich miejscach w /usr/include/shadow.

Jeśli używasz wersji BETA tego pakietu, to musisz ręcznie skopiować plik login.defs do katalogu /etc i upewnić się, że tylko "root" może go modyfikować.

cp login.defs /etc
chmod 600 /etc/login.defs

Plik ten jest plikiem konfiguracyjnym dla programu login. Powinieneś go przejrzeć i odpowiednio zmodyfikować jego zawartość zgodnie z twoimi wymaganiami. To tutaj decydujesz, z których terminalli (tty) może zalogować się "root" oraz ustawiasz inne opcje bezpieczeństwa (np. domyślne wygasanie haseł).

5.4 Polecenie pwconv

Następnym krokiem jest polecenie pwconv. Musi ono także być wykonane jako "root" i najlepiej w katalogu /etc:

cd /etc
/usr/sbin/pwconv

Program pwconv tworzy z pliku /etc/passwd dwa pliki: /etc/npasswd i /etc/nshadow.

Dostępny jest także program pwunconv jeśli musisz zrobić normalny plik /etc/passwd z plików /etc/passwd i /etc/shadow.

5.5 Zmiany nazw plików npasswd i nshadow

Teraz, kiedy już wykonałeś polecenie pwconv, stworzyłeś dwa pliki - /etc/npasswd i /etc/nshadow. Ich nazwy muszą zostać zmienione odpowiednio na /etc/passwd i /etc/shadow. Chcemy także zrobić kopię oryginalnego pliku /etc/passwd i upewnić się, że tylko "root" może go czytać. Kopię zapasową umieścimy w katalogu domowym "root-a":

cd /etc
cp passwd ~/passwd
chmod 600 ~/passwd
mv npasswd passwd
mv nshadow shadow

Powinieneś się także upewnić, czy właściciel plików i prawa dostępu są poprawne. Jeśli masz zamiar używać XWindows, to programy xlock i xdm muszą mieć możliwość odczytu pliku shadow, ale nie zapisu.

Są dwa sposoby na zrobienie tego. Możesz ustawić bit "SUID" dla programu xlock (chmod u+s xlock); xdm ma z reguły ten bit ustawiony. Albo możesz przydzielić plik /etc/shadow do grupy shadow, ale zanim to zrobisz, sprawdź czy masz grupę shadow w pliku /etc/group. Właściwie żaden z użytkowników systemu nie powinien być w tej grupie.

cd /etc
chown root.root passwd
chown root.shadow shadow
chmod 0644 passwd
chmod 0640 shadow

Twój system ma teraz przesłonięte hasła. Powinieneś teraz przejść na inny wirtualny terminal i sprawdzić czy możesz się zalogować

Zrób to teraz - naprawdę !

Jeśli nie możesz, to coś jest nie tak ! Aby powrócić do stanu sprzed instalacji Shadow Suite zrób to:

cd /etc
cp ~/passwd passwd
chmod 644 passwd

Przywracasz w ten sposób stare pliki, które wcześniej zachowałeś, na ich właściwe miejsce.

6. Inne programy, które może musisz uaktualnić albo "załatać".

Pomimo, iż pakiet Shadow Suite posiada zastępcze programy dla większości programów, które potrzebują dostepu do haseł, to prawie w każdym systemie są jeszcze dodatkowe programy, które potrzebują dostępu do haseł.

Jeśli masz dystrybucję Debian (a nawet jeśli nie masz), możesz znaleźć źródła programów, które muszą być przerobione pod tym adresem.

Reszta tej sekcji opisuje jak uaktualnić programy: adduser, wu_ftpd, ftpd, pop3d, xlock, xdm i sudo tak, aby obsługiwały przesłonięte hasła.

Aby dowiedzieć się jak zrobić obsługę przesłoniętych haseł w jakimkolwiek innym programie zobacz sekcję Obsługa przesłanianych haseł w programach w C. (Programy te i tak muszą być uruchomione z bitem "SUID" dla "root-a" albo grupy shadow, aby rzeczywiście mieć dostęp do haseł.)

6.1 Program adduser z dystrybucji Slackware.

Dystrybucja Slackware (i pewnie inne) zawiera interaktywny program służący do dodawania nowych użytkowników - /sbin/adduser. Wersję tego programu obsługującą przesłonięte hasła można pobrać np. z ftp.icm.edu.pl z katalogu /pub/Linux/sunsite/system/admin/accounts/.

Ja zalecam używanie programów, które są dostarczane wraz z pakietem Shadow Suite (useradd, usermod, i userdel) zamiast adduser z dystrybucji Slackware. Co prawda nauczenie się jak się nimi posługiwać zabiera trochę czasu, ale opłaca się to ponieważ masz o wiele większą kontrolę i mają one poprawne blokowanie plików (file locking) /etc/passwd i /etc/shadow - adduser tego nie robi.

Więcej informacji w następnej sekcji - Wprowadzanie pakietu Shadow Suite do użycia..

Ale jeśli już musisz go mieć, oto co musisz zrobić:

tar -xzvf adduser.shadow-1.4.tar.gz
cd adduser
make clean
make adduser
chmod 700 adduser
cp adduser /sbin

6.2 Serwer wu_ftpd.

Wraz z większością dystrybucji Linux-a przychodzi serwer wu_ftpd. Jeśli twoja dystrybucja nie instaluje domyślnie pakietu Shadow Suite, to twój serwer wu_ftpd nie będzie skompilowany z obsługą przesłoniętych haseł. wu_ftpd jest odpalany z inetd/tcpd jako proces "root-a". Jeśli twój demon wu_ftpd jest starą wersją, to będziesz chciał ją uaktualnić tak czy inaczej ponieważ stare wersje mają pewien błąd, który kompromituje konto "root". (Więcej informacji znajdziesz na Stronie Domowej Bezpieczeństwa na Linuxie).

Na szczęście musisz tylko zdobyć żródła tego programu i skompilować go z włączoną obsługą "Shadow password".

Jeśli nie masz systemu ELF, to serwer wu_ftpd możesz znaleźć na SUNSite Polska - nazywa się wu_ftpd-2.4-fixed.tar.gz

Jak już ściągniesz te źródła, to wtedy napisz:

cd /usr/src
tar -xzvf wu-ftpd-2.4-fixed.tar.gz
cd wu-ftpd-2.4-fixed
cp ./src/config/config.lnx.shadow ./src/config/config.lnx

Potem zmień w pliku ./src/makefiles/Makefile.lnx linię:

LIBES = -lbsd -support

na:

LIBES = -lbsd -support -lshadow

Teraz możesz uruchomić skrypt kompilujący i zainstalować pakiet:

cd /usr/src/wu-ftpd-2.4-fixed
/usr/src/wu-ftp-2.4.fixed/build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd

Polecenia te powodują użycie pliku konfiguracyjnego z obsługą haseł przesłanianych dla Linux-a, skompilowanie i instalację serwera.

U siebie na Slackware 2.3 musiałem dodatkowo przed kompilacją zrobić coś takiego:

cd /usr/include/netinet
ln -s in_systm.h in_system.h
cd -

Zgłaszane były problemy z kompilacją na systemie binarnym ELF, ale wersja BETA następnej wersji działa dobrze. Można ją znaleźć pod adresem ftp.icm.edu.pl pod nazwą wu-ftp-2.4.2-beta-10.tar.gz.

Jak już ściągniesz serwer umieść go w /usr/src i napisz:

cd /usr/src
tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz
cd wu-ftpd-beta-9
cd ./src/config

Potem zmień w pliku config.lnx:

#undef SHADOW.PASSWORD

na:

#define SHADOW.PASSWORD

Potem:

cd ../Makefiles

i zmień w pliku Makefile.lnx

LIBES = -lsupport -lbsd # -lshadow

na:

LIBES = -lsupport -lbsd  -lshadow

Następnie skompiluj i zainstaluj:

cd ..
build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd

Zauważ, że powinieneś sprawdzić w /etc/inetd.conf katalog, w którym twój serwer rzeczywiście się znajduje. Powiadomiono mnie, że niektóre dystrybucje umieszczają demony serwerów w innych miejscach, a wtedy wu_ftpd może się znajdować gdzie indziej.

6.3 Standardowy ftpd.

Jeśli masz u siebie standardowy serwer ftpd, zalecałbym zmianę na wu_ftpd. Poza znaną dziurą omówioną wcześniej, wu_ftpd jest uznany za bardziej bezpieczny.

Jeśli nalegasz na standardowy, albo potrzebujesz obsługi NIS, to na SUNSite Polska znajdziesz ftpd-shadow-nis.tgz.

6.4 pop3d (Post Office Protocol 3)

Jeśli potrzebujesz obsługi Post Office Protocol 3, będziesz musiał skompilować ponownie program pop3d. Normalnie jest on uruchamiany przez inetd/tcpd jako "root".

Na SUNSite Polska dostępne są dwie wersje:

Obie są raczej proste do zainstalowania.

6.5 xlock

Jeśli zainstalujesz pakiet Shadow Suite i uruchomisz XWindows, a następnie zablokujesz (lock) ekran nie uaktualniając programu xlock, będziesz musiał użyć CTRL+ALT+Fx, aby przełączyć się na wirtualną konsolę tekstową (jeśli masz jakąś), zalogować się i zlikwidować proces xlock (albo użyć CTRL+ALT+BACKSPACE żeby zamknąć XWindows). Na szczęście uaktualnienie programu xlock jest dość proste.

Jeśli masz XFree86 wersja 3.x.x, przypuszczalnie używasz xlockmore (który jest wspaniałym "screensaver-em" w połaczeniu z "lock"). Następujący pakiet obsługuje przesłonięte hasła - xlockmore-3.5.tgz a dostępny jest z SUNSite Polska. Jeśli masz starszą wersję zalecam uaktualnienie do tej.

Oto "z grubsza" to, co musisz zrobić:

Twój xlock będzie teraz działał poprawnie.

6.6 xdm

xdm jest programem, który prezentuje ekran "logujący" dla XWindows. Niektóre systemy startują ten program kiedy system ma się uruchomić w odpowiednim "runlevel-u" (zobacz /etc/inittab).

Jeśli zainstalowałeś przesłaniane hasła, musisz uaktulanić ten program. Na szczęście jest to dość proste:

xdm.tar.gz można ściągnąć z SUNSite Polska.

Ściągnij ten plik i umieść go w /usr/src, potem go rozpakuj: tar -xzvf xdm.tar.gz.

Zmień w pliku /usr/X11R6/lib/X11/config/linux.cf linię

#define HasShadowPasswd NO

na:

#define HasShadowPasswd YES

Skompiluj pliki wykonywalne:

cd /usr/src/xdm
xmkmf
make depend
make

Potem umieść wszystko na swoim miejscu cp xdm /usr/X11R6/bin/.

xdm jest uruchamiany jako "root" tak więc nie musisz zmieniać jego praw dostępu.

6.7 sudo

Program sudo pozwala administratorowi na udostępnianie zwykłym użytkownikom programów, które wymagają uprawnień "root-a". Jest to pożyteczne ponieważ można ograniczać dostęp do konta "root" i jednocześnie pozwalać użytkownikom np. montować urządzenia.

sudo musi przeczytać hasło ponieważ weryfikuje użytkownika kiedy jest uruchamiane. sudo jest uruchamiane z bitem SUID "root" tak więc nie ma problemu z dostępem do pliku /etc/shadow.

Program ten z obsługą haseł przesłanianych dostępny jest na SUNSite Polska pod nazwą sudo-1.2-shadow.tgz.

Uwaga: Podczas instalacji tego programu usunięty zostanie plik /etc/sudoerrs i zastąpiony domyślnym przychodzącym razem z pakietem. Tak więc zrób sobie kopię zapasową jeśli robiłeś tam jakieś zmiany. Albo możesz usunąć linijkę kasującą ten plik z pliku Makefile.

Obsługa przesłanianych haseł jest już ustawiona w pakiecie, tak więc wszystko co trzeba zrobić, to przekompilować go. Po umieszczeniu go w /usr/src napisz:

cd /usr/src
tar -xzvf sudo-1.2-shadow.tgz
cd sudo-1.2-shadow
make all
make install

6.9 pppd (Serwer Protokołu Point-to-Point)

Serwer pppd może zostać tak ustawiony, aby używał różnych typów autentykacji:
Password Authentication Protocol (PAP) i Cryptographic Handshake Authentication Protocol (CHAP). Serwer pppd zwykle czyta łańuchy haseł z /etc/ppp/chap-secrets i/albo z /etc/ppp/pap-secrets. Jeśli używasz tego domyślnego zachowania serwera pppd, to przeinstalowywanie go nie jest konieczne.

pppd pozwala także na użycie parametrów login-u (albo z wiersza poleceń, albo z pliku konfiguracyjnego, albo z pliku z opcjami). Jeśli jest podana jakaś opcja login-u, to pppd użyje pliku /etc/passwd, żeby zweryfikować identyfikator i hasło dla PAP. To oczywiście nie zadziała odkąd nasz plik z hasłami jest przesłaniany. Jeśli używasz pppd-1.2.1d, to będziesz musiał dodać kod do obsługi haseł przesłanianych.

Podany w dalszej części przykład dodaje obsługę dla tej właśnie wersji.

Wersja pppd-2.2.0 ma już w sobie obsługę przesłanianych haseł.

7. Wprowadzanie pakietu Shadow Suite do użycia.

Sekcja ta opisuje kilka rzeczy które będziesz chciał wiedzieć jak już zainstalowałeś pakiet Shadow Suite. Dalsze informacje zawarte są na stronach podręcznika systemowego na temat każdego polecenia.

7.1 Dodawanie, Modyfikacja i usuwanie użytkowników.

Pakiet Shadow Suite dodał następujące polecenia do dodawania, modyfikacji i usuwania użytkowników. Są one obsługiwane z wiersza poleceń przez parametry (mogłeś także zainstalować program adduser).

useradd.

Polecenie useradd może zostać użyte, aby dodać użytkownika do systemu. Wykonujesz je także, żeby zmienić domyślne ustawienia.

Pierwszą rzeczą jaką powinieneś zrobić, to sprawdzić ustawienia domyślne na twoim systemie i odpowiednio je zmienić:

useradd -D


GROUP=1
HOME=/home
INACTIVE=0
EXPIRE=0
SHELL=
SKEL=/etc/skel

Wartości domyślne to pewnie nie są te, które chcesz używać, tak więc jeśli zacząłbyś dodawać użytkowników teraz, to musiałbyś podawać informacje dla każdego użytkownika. Jednak możemy i powinniśmy zmienić wartości domyślne:

Aby zrobić takie zmiany napisałbym:

useradd -D -g100 -e60 -f0 -s/bin/bash

Teraz uruchomienie useradd -D pokaże:


GROUP=100
HOME=/home
INACTIVE=0
EXPIRE=60
SHELL=/bin/bash
SKEL=/etc/skel

W razie gdybyś chciał wiedzieć, to wartości te są zapisywane w /etc/default/useradd.

Teraz możesz użyć polecenia useradd, aby dodać użytkowników do systemu. Na przykład, aby dodać użytkownika fred używając wartości domyślnych napisałbyś:

useradd -m -c "Fred Flintstone" fred

Stworzy to następującą pozycję w /etc/passwd:

fred:*:505:100:Fred Flinstone:/home/fred:/bin/bash

oraz następującą pozycję w /etc/shadow:

fred:!:0:0:60:0:0:0:0

Utworzony zostanie katalog domowy freda oraz skopiowana zostanie tam zawartość katalogu /etc/skel z powodu opcji -m.

Ponieważ nie podaliśmy UID-u użyty zostanie następny wolny.

Konto freda będzie utworzone, ale nie będzie on się mógł zalogować dopóki go nie odblokujemy. Zrobimy to przez zmianę hasła:

passwd fred


Changing password for fred
Enter the new password (minimum of 5 characters)
Please use a combination of upper and lower case letters and numbers.
New Password: *******
Re-enter new password: *******

Teraz w /etc/shadow będzie:

fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0

A fred będzie mógł się teraz zalogować i korzystać z systemu. Najlepsze w użyciu programów, które przychodzą razem z pakietem Shadow Suite jest to, że wszelkie zmiany plików /etc/passwd i /etc/shadow są wykonywane z tzw. blokowaniem. Ta więc jeśli dodajesz użytkownika do systemu a inny użytkownik właśnie sobie zmienia hasło, to obie operacje zostaną wykonane poprawnie.

Powinieneś używać raczej dostarczonych programów niż edytować ręcznie pliki /etc/passwd i /etc/shadow. Jeśli edytowałeś plik /etc/shadow i jakiś użytkownik zmieniał sobie w tym samym czasie hasło, to po zapisaniu zmian dokonanych przez ciebie nowe hasło użytkownika zginie.

Oto mały interaktywny skrypt, który dodaje nowego użytkownika używając useradd i passwd:


#!/bin/bash
#
# /sbin/newuser - Skrypt dodający użytkowników do systemu używającego
#                 programów useradd z pakietu Shadow Suite i passwd.
#
# Napisany przez Mike'a Jacksona <mhjack@tscnet.com> jako przykład do 
# Shadow-Password-HOWTO. Pozwolenie na używanie i modyfikacje wyraźnie dane.
#
# Możnaby ten skrypt zmodyfikować tak, żeby pokazywał wartości domyślne
# oraz pozwalał na modyfikację podobnie jak program adduser ze Slackware.
# Możnaby też sprawdzać błędy, czy głupie wartości.
# 
#
##
# Wartości domyślne dla polecenia useradd
##
GROUP=100        # Domyślna grupa
HOME=/home       # Katalog domowy (/home/identyfikator)
SKEL=/etc/skel   # Katalog szkieletowy
INACTIVE=0       # Ilość dni, po których wygasa hasło.
EXPIRE=60        # Ilość dni, przez którą ma istnieć hasło
SHELL=/bin/bash  # Domyślna powłoka (pełna ścieżka)
##
# Wartości domyślne dla polecenia passwd
##
PASSMIN=0        # Ilość dni między którą zmienia się hasło
PASSWARN=14      # Ilość dni przed wygaśnięciem hasła kiedy jest
#                  wysyłana wiadomość ostrzegająca.
##
#            Upewnij się, że "root" uruchomił ten skrypt
##
WHOAMI=`/usr/bin/whoami`
if [ $WHOAMI != "root" ]; then
        echo "You must be root to add news users!"
        exit 1
fi
##
#   Zapytaj o identyfikator i imię i nazwisko
##
echo ""
echo -n "Username: "
read USERNAME
echo -n "Full name: "
read FULLNAME
#
echo "Adding user: $USERNAME."
#
# Zauważ, że wymagane są "" przy $FULLNAME ponieważ pole to będzie
# prawie zawsze zawierało przynajmniej jedną spację, a bez " polecenie
# useradd "pomyślałoby", że jest to następny parametr kiedy doszłoby
# do spacji.
#
/usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \
        -f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME
##
# Ustaw domyślne wartości dla hasła
##
/bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1
##
# Niech polecenie passwd zapyta poprawnie (dwa razy) o hasło
##
/bin/passwd $USERNAME
##
# Pokaż, co zostało zrobione
##
echo ""
echo "Entry from /etc/passwd:"
echo -n "   "
grep "$USERNAME:" /etc/passwd
echo "Entry from /etc/shadow:"
echo -n "   "
grep "$USERNAME:" /etc/shadow
echo "Summary output of the passwd command:"
echo -n "   "
passwd -S $USERNAME
echo ""

Użycie skryptu do dodawania użytkowników do systemu jest na prawdę bardziej preferowane niż ręczna edycja plików /etc/passwd czy /etc/shadow czy też używanie programu adduser ze Slackware. Możesz śmiało modyfikować ten skrypt dla swoich potrzeb.

Więcej informacji na temat useradd znajdziesz w podręczniku systemowym.

usermod.

Program usermod używany jest do modyfikowania informacji na temat danego użytkownika. Opcje tego programu są podobne do opcji programu useradd.

Powiedzmy, że chcesz zmienić powłokę dla freda; zrobiłbyś to tak:

usermod -s /bin/tcsh fred

Teraz pozycja dotycząca freda w /etc/passwd zmieniłaby się na:

fred:*:505:100:Fred Flinstone:/home/fred:/bin/tcsh

Załóżmy, że chcemy, żeby konto freda wygasło 15.09.1997:

usermod -e 09/15/97 fred <-- data w stylu angielskim-amerykańskim (mmddrr)

Teraz pozycja dotycząca freda w /etc/shadow zmieniłaby się na:

fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0

Więcej informacji na temat usermod znajdziesz w podręczniku systemowym.

userdel.

userdel robi dokładnie to czego się spodziewałeś - kasuje konto podanego użytkownika. Użycie jest proste:

userdel -r <identyfikator>

Opcja -r powoduje skasowanie wszystkich plików z katalogu domowego użytkownika. Plików zlokalizowanych w innym systemie plików trzeba poszukać i skasować je ręcznie.

Jeśli chcesz tylko zablokować dane konto, a nie skasować to użyj polecenia passwd.

7.2 Polecenie passwd i "termin ważności" hasła.

Polecenie passwd używane jest do zmiany hasła. Oprócz tego używane jest przez "root-a" do:

Na przykład, spójrzmy jeszcze raz na freda:

passwd -S fred
fred P 03/04/96 0 60 0 0

Oznacza to, że hasło freda jest ważne, ostatnio było zmieniane 04.03.1996, może być zmienione w każdej chwili, wygasa po 60 dniach, fred nie zostanie ostrzeżony oraz konto nie zostanie zablokowane po wygaśnięciu hasła.

Oznacza to po prostu tyle, że kiedy fred zaloguje się po wygaśnięciu hasła zostanie zaraz na początku poproszony o podanie nowego hasła.

Jeśli zdecydujemy się, że chcemy ostrzec freda na 14 dni przed wygaśnięciem jego hasła i zablokować jego konto 14 dni po wygaśnięciu hasła trzebaby napisać tak:

passwd -w14 -i14 fred

Teraz dane o fredzie zmianiły się na:

fred P 03/04/96 0 60 14 14

Więcej informacji na temat passwd znajdziesz w podręczniku systemowym.

7.3 Plik login.defs

Plik /etc/login jest plikiem konfiguracyjnym dla programu login oraz dla całego pakietu Shadow Suite.

/etc/login zawiera ustawienia od tego jak będą wyglądać znaki zachęty do tego jakie domyślne wartości będą dla wygasania hasła kiedy użytkownik je sobie zmieni.

Plik /etc/login.defs jest dość dobrze udokumentowany już przez same komentarze w nim zawarte. Chociaż jest kilka rzeczy do odnotowania:

Z powyższej listy wynika, że jest to raczej ważny plik i powinieneś się upewnić, że istnieje i że ustawienia są takie jak chciałeś.

7.4 Hasła dla grup.

Plik /etc/groups może zawierać hasła, które pozwalają użytkownikom dołączyć się do jakiejś grupy. Funkcja ta jest włączona jeśli zdefiniujesz stałą SHADOWGRP w pliku /usr/src/shadow-YYMMDD/config.h .

Jeśli ją zdefiniujesz i skompilujesz pakiet, musisz utworzyć plik /etc/gshadow, żeby trzymać tam hasła grup i informacje administracyjne.

Do utworzenia pliku /etc/shadow użyłeś programu pwconv; nie ma odpowiednika do utworzenia pliku /etc/gshadow, ale to nie ma znaczenia bo plik ten sam się sobą zajmuje.

Aby stworzyć początkowy plik /etc/gshadow zrób tak:

touch /etc/gshadow
chown root.root /etc/gshadow
chmod 700 /etc/gshadow

Jak będziesz tworzył nowe grupy, zostaną one dodane do /etc/group i /etc/gshadow.

Do modyfikacji grup służą programy dostarczane wraz z pakietem Shadow Suite: groups, groupadd, groupmod i groupdel.

Format pliku /etc/group jest taki:

nazwa_grupy:!:GID:członek,członek,...

Gdzie:

nazwa_grupy

- chyba nie wymaga wyjaśniania :)

!

- w tym miejscu normalnie byłoby hasło, ale teraz jest ono w gshadow

GID

- numer grupy

członek

- lista członków grupy.

Format pliku /etc/gshadow jest taki:

nazwa_grupy:hasło:admin,admin,...:członek,członek,...

Gdzie:

nazwa_grupy

- chyba nie wymaga wyjaśniania :)

hasło

- zakodowane hasło grupy

admin

- lista administratorów grupy

członek

- lista członków grupy

Polecenie gpasswd jest używane tylko do dodawania i usuwania członków do/z grupy. "root" i każdy z administratorów grupy może usuwać i dodawać członków.

Hasło dla grupy może być zmienione za pomocą polecenia passwd przez "root-a" i każdego z administratorów grupy.

Chociaż nie ma strony do podręcznika systemowego dla gpasswd, to zrozumienie opcji tego polecenia nie jest takie trudne jak już rozumiesz jego format i koncept. gpasswd bez żadnych parametrów poda opcje jakie przyjmuje.

7.5 Programy do sprawdzania poprawności.

pwck

Program pwck sprawdza poprawność plików /etc/passwd i /etc/shadow. Sprawdzi każdego użytkownika czy ma:

Ostrzeże nas także jeśli znajdzie konta bez haseł.

Uruchomienie tego programu po zainstalowaniu pakietu Shadow Suite jest dobrym pomysłem. Powinno sie go także uruchamiać okresowo - co tydzień, co miesiąc. Jeśli użyjesz opcji -r, to możesz użyć programu cron, aby uruchamiać pwck okresowo i dostawać raport pocztą.

grpck

Program ten sprawdza poprawność plików /etc/group i /etc/gshadow. Sprawdza:

Ma także opcję -r do automatycznych raportów.

7.6 Hasła przez telefon. (Dial-up)

Hasła przez telefon są inną opcjonalną linią obrony dla systemów, które umożliwiają dostęp przez telefon. Jeśli masz system z dużą ilośćią użytkowników łączących się lokalnie albo poprzez sieć, ale chcesz ograniczyć kto może sie połączyć, to "hasła przez telefon" są dla ciebie. Aby właczyć "hasła przez telefon" musisz wyedytować plik /etc/login.defs i upewnić się, że DIALUPS_CHECK_ENAB jest ustawione na yes.

Są dwa pliki, które zawierają informacje o połączeniach przez telefon: /etc/dialups, który zawiera "tty" (jeden na linię bez "/dev/"). Jeśli dany tty jest tam zawarty to połączenie jest sprawdzane; oraz /etc/d_passwd z pełną ścieżką dostępu do powłoki oraz opcjonalnym hasłem.

Jeśli użytkownik zaloguje się na linię, która jest podana w /etc/diulups i jego powłoka jest podana w /etc/d_passwd, to będzie mógł się zalogować tylko po podaniu poprawnego hasła.

Innym użytecznym celem "haseł przez telefon" może być ustawienie linii, która pozwala tylko na połączenia konkretnego rodzaju (np. PPP lub/i UUCP). Jeśli użytkownik próbuje się połączyć inaczej (np. listą powłok), to musi znać hasło na tę linię.

Zanim będziesz mógł używać tych właściwości musisz stworzyć te pliki.

Polecenie dpasswd przypisuje hasła do konkretnych powłok zawartych w pliku /etc/d_passwd. Więcej informacji znajdziesz na stronie podręcznika systemowego.

8. Obsługa przesłanianych haseł w programach w C.

Dodawanie obsługi haseł przesłanianych do programów jest całkiem proste. Jedynym problemem jest to, że program musi zostać uruchomiony z prawami "root-a", aby mieć dostęp do pliku /etc/shadow.

Tutaj pojawia się jeden wielki problem: podczas pisania takich programów należy się trzymać jak najściślej zasad bezpieczeństwa. Na przykład jeśli program posiada wyjście do powłoki, to nie może się to zdarzyć na prawach "root-a".

Jeśli program musi mieć dostęp do /etc/shadow i nie potrzebuje więcej praw "root-a", to lepiej uruchomić go z prawami grupy "shadow". Program xlock jest przykładem takiego programu.

W przykładzie podanym niżej, pppd-1.2.1d jest już uruchomiony z prawami "root-a", tak więc dodanie obsługi haseł przesłanianych nie powinno zagrozić bezpieczeństwu.

8.1 Pliki nagłówkowe.

Pliki te powinny znajdować się w /usr/include/shadow. Powinien tam być także plik /usr/include/shadow.h, ale będzie to symboliczne dołaczenie do /usr/include/shadow/shadow.h.

Aby dodać obsługę haseł przesłanianych do programu, musisz dołączyć pliki nagłówkowe:

#include <shadow/shadow.h>
#include <shadow/pwauth.h>

Dobrym pomysłem byłoby użycie dyrektyw kompilatora, aby skompilować warunkowo kod z obsługą haseł przesłanianych. (tak jak w przykładzie poniżej.)

8.2 Biblioteka libshadow.a

Biblioteka ta została zainstalowana w /usr/lib jak instalowałeś pakiet Shadow Suite.

Kiedy kompilujesz obsługę przesłaniancyh haseł w programie trzeba poinformować "linker-a", aby dołączył bibliotekę libshadow.a.

Robi się to tak:

gcc program.c -o program -lshadow

Chociaż jak zobaczymy w poniższym przykładzie, większość dużych programów używa plików Makefile i ma zwykle zmienną LIBS=..., którą się modyfikuje.

8.3 Struktura Shadow.

Biblioteka libshadow.a używa struktury spwd dla informacji, które otrzyma z pliku /etc/shadow. Oto definicja tej struktury wzięta z /usr/include/shadow/shadow.h:


struct spwd
{
  char *sp_namp;                /* identyfikator */
  char *sp_pwdp;                /* zakodowane hasło */
  sptime sp_lstchg;             /* data ostatniej zmiany */
  sptime sp_min;                /* minimalna ilość dni między zmianami */
  sptime sp_max;                /* maksymalna ilość dni między zmianami */
  sptime sp_warn;               /* ilość dni przed wygaśnięciem hasła
                                   kiedy będzie wysyłane ostrzeżenie */
  sptime sp_inact;              /* ilość dni, po jakiej wygasa hasło
                                   dopóki konto nie będzie zablokowane */
  sptime sp_expire;             /* ilość dni od 01.01.1970 dopóki
                                   konto nie wygaśnie */
  unsigned long sp_flag;        /* zarezerwowane na przyszłość */
};

Do pola sp_pwdp można dodatkowo wstawić nawzę programu:

identyfikator:Npge08pfz4wuk;@/sbin/extra:9479:0:10000::::

Oznacza to, że oprócz podania hasła będzie wykonany program /sbin/extra, który wykona dalszą autentykację. Wywołany program otrzyma identyfikator i przełącznik, który określi dlaczego został wywołany. Więcej informacji znajdziesz w /usr/include/shadow/pwauth.h i pwauth.c.

Oznacza to, że powinniśmy użyć funkcji pwauth do przeprowadzenia poprawnej autentykacji, ponieważ zajmie się ona także drugą autentykacją. Jest to użyte w przykładzie poniżej.

Autor pakietu Shadow Suite twierdzi, że odkąd większość programów tego nie stosuje, może to zostać usunięte lub zmienione w przyszłych wersjach pakietu.

8.4 Funkcje pakietu Shadow Suite.

Plik shadow.h zawiera deklaracje funkcji zawartych w bibliotece libshadow.a:


extern void setspent __P ((void));
extern void endspent __P ((void));
extern struct spwd *sgetspent __P ((__const char *__string));
extern struct spwd *fgetspent __P ((FILE *__fp));
extern struct spwd *getspent __P ((void));
extern struct spwd *getspnam __P ((__const char *__name));
extern int putspent __P ((__const struct spwd *__sp, FILE *__fp));

Funkcja, którą użyjemy w przykładzie to getspnam, która odczyta strukturę spwd dla podanego identyfikatora.

8.5 Przykład.

Jest to przykład na dodanie obsługi haseł przesłanianych do programu, który tego potrzebuje, ale nie ma domyślnie włączonego.

Przykład ten używa serwera Point-to-Point Protocol (pppd-1.2.1d), który ma tryb do autentykacji PAP używając identyfikatora i hasła z pliku /etc/passwd zamiast z plików PAP czy CHAP. Nie musisz dodawać tego kodu do pppd-2.2.0, ponieważ on już tam jest.

Ta właściwość pppd przypuszczalnie nie jest często używana, ale jeśli zainstalowałeś Shadow Suite, to serwer ten nie będzie działał ponieważ hasła nie są już zapisywane w /etc/passwd.

Kod do autentykacji użytkowników przez pppd-1.2.1d umieszczony jest w pliku /usr/src/pppd-1.2.1d/pppd/auth.c.

Poniższy kod musi zostać dodany na początku pliku gdzie znajdują się wszystkie inne dyrektywy #include. Otoczyliśmy je dyrektywami warunkowymi (czyli skompilują się tylko jeśli kompilujemy z właczoną obsługą haseł przesłanianych).


#ifdef HAS_SHADOW
#include <shadow.h>
#include <shadow/pwauth.h>
#endif

Następnym krokiem jest modyfikacja właściwiego kodu. Ciągle modyfikujemy plik auth.c.

Funkcja auth.c przed modyfikacją:


/*
 * login - Check the user name and password against the system
 * password database, and login the user if OK.
 *
 * returns:
 *      UPAP_AUTHNAK: Login failed.
 *      UPAP_AUTHACK: Login succeeded.
 * In either case, msg points to an appropriate message.
 */
static int
login(user, passwd, msg, msglen)
    char *user;
    char *passwd;
    char **msg;
    int *msglen;
{
    struct passwd *pw;
    char *epasswd;
    char *tty;

    if ((pw = getpwnam(user)) == NULL) {
        return (UPAP_AUTHNAK);
    }
     /*
     * XXX If no passwd, let them login without one.
     */
    if (pw->pw_passwd == '\0') {
        return (UPAP_AUTHACK);
    }

    epasswd = crypt(passwd, pw->pw_passwd);
    if (strcmp(epasswd, pw->pw_passwd)) {
        return (UPAP_AUTHNAK);
    }

    syslog(LOG_INFO, "user %s logged in", user);

    /*
     * Write a wtmp entry for this user.
     */
    tty = strrchr(devname, '/');
    if (tty == NULL)
        tty = devname;
    else
        tty++;
    logwtmp(tty, user, "");             /* Add wtmp login entry */
    logged_in = TRUE;

    return (UPAP_AUTHACK);
}

Hasło użytkownika jest umieszczane w pw->pw_passwd, tak że wszystko co musimy zrobić, to dodać funkcję getspnam. Umieści to hasło w spwd->sp_pwdp.

Dodamy funkcję pwauth, aby przeprowadzić właściwą autentykację. Przeprowadzi to także drugą autentykację jeśli plik shadow jest odpowiednio ustawiony.

Funkcja auth.c po modyfikacji do obsługi haseł przesłanianych:


/*
 * login - Check the user name and password against the system
 * password database, and login the user if OK.
 *
 * This function has been modified to support the Linux Shadow Password
 * Suite if USE_SHADOW is defined.
 *
 * returns:
 *      UPAP_AUTHNAK: Login failed.
 *      UPAP_AUTHACK: Login succeeded.
 * In either case, msg points to an appropriate message.
 */
static int
login(user, passwd, msg, msglen)
    char *user;
    char *passwd;
    char **msg;
    int *msglen;
{
    struct passwd *pw;
    char *epasswd;
    char *tty;

#ifdef USE_SHADOW
    struct spwd *spwd;
    struct spwd *getspnam();
#endif

    if ((pw = getpwnam(user)) == NULL) {
        return (UPAP_AUTHNAK);
    }

#ifdef USE_SHADOW
        spwd = getspnam(user);
        if (spwd)
                pw->pw_passwd = spwd->sp-pwdp;
#endif
 
     /*
     * XXX If no passwd, let NOT them login without one.
     */
    if (pw->pw_passwd == '\0') {
        return (UPAP_AUTHNAK);
    }
#ifdef HAS_SHADOW
    if ((pw->pw_passwd && pw->pw_passwd[0] == '@'
         && pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL))
        || !valid (passwd, pw)) {
        return (UPAP_AUTHNAK);
    }
#else
    epasswd = crypt(passwd, pw->pw_passwd);
    if (strcmp(epasswd, pw->pw_passwd)) {
        return (UPAP_AUTHNAK);
    }
#endif

    syslog(LOG_INFO, "user %s logged in", user);

    /*
     * Write a wtmp entry for this user.
     */
    tty = strrchr(devname, '/');
    if (tty == NULL)
        tty = devname;
    else
        tty++;
    logwtmp(tty, user, "");             /* Add wtmp login entry */
    logged_in = TRUE;

    return (UPAP_AUTHACK);
}

Po dokładnym prześledzaniu tego kodu okaże się, że zrobiliśmy jeszcze jedną zmianę. Oryginalna wersja pozwalała na dostęp (zwracała UPAP_AUTHACK) jeśli nie było hasła w pliku /etc/passwd. Nie jest to dobrze, ponieważ popularnym użyciem tej właściwości programu login jest używanie jednego konta, na dostęp do programu PPP, a potem sprawdzenie identyfikatora i hasła dostarczonych przez PAP z tymi w plikach /etc/passwd i /etc/shadow.

Tak więc jeśli ustwilibyśmy oryginalną wersję, aby uruchamiała powłokę dla użytkownika np. ppp, to każdy mógłby uzyskać połączenie ppp przez podanie identyfikatora ppp i pustego hasła.

Poprawiliśmy to przez zwrócenie UPAP_AUTHNAK zamiast UPAP_AUTHACK jeśli pole z hasłem jest puste.

Interesujące jest to, że pppd-2.2.0 ma ten sam problem.

Następnie musimy zmodyfikować plik Makefile tak, żeby pojawiły się dwie rzeczy:
USE_SHADOW musi być zdefiniowane i libshadow.a musi być dodana w procesie "linkowania".

Wyedytuj plik Makefile i dodaj:

LIBS = -lshadow

Potem znajdź linię:

COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t

i zmień ją na:

COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t -DUSE_SHADOW

Teraz kompilacja i instalacja.

9. Często zadawane pytania.

P: Kiedyś kontrolowałem terminale z jakich mógł się logować "root" przez plik /etc/securettys, teraz nie wygląda na to żeby działało. Co jest grane ?

O: Teraz kiedy pakiet Shadow Suite jest zainstalowany plik /etc/securettys nie ma żadnego znaczenia. Terminale, z których może się zalogować "root" są teraz podawane w pliku konfiguracyjnym /etc/login.defs. Pozycja w tym pliku może wskazywać na jakiś inny plik.

P: Zainstalowałem pakiet Shadow Suite i nie mogę się zalogować, co przegapiłem ?

O; Przypuszczalnie zainstalowałeś pakiet i zapomniałeś uruchomić program pwconv albo zapomniałeś skopiować /etc/npasswd na /etc/passwd oraz /etc/nshadow na /etc/shadow. Możesz musisz także skopiować login.defs do /etc.

P: W sekcji o "xlock-u" było napisane, żeby zmienić grupę pliku /etc/shadow na shadow, ale ja nie mam takiej grupy - co mam zrobić ?

O: Możesz ją dodać. Po prostu wyedytuj plik /etc/group i dodaj linię definiującą grupę shadow. Musisz się upewnić, że numer grupy nie jest używany przez żadną inną i musisz ją dodać przed pozycją nogroup. Albo po prostu ustaw bit SUID dla programu xlock.

P: Jest jakaś lista dyskusyjna dla Linux Shadow Password Suite ?

O: Tak, ale jest ona dla rozwijających ten pakiet i dla testujących wersje BETA. Możesz się zapisać na tę listę wysyłając list na adres shadow-list-request@neptune.cin.net o tytule subscribe. Na liście tej dyskutuje się właściwie o konkretnej serii shadow-YYMMSS. Powinieneś się na nią zapisać jeśli chcesz być włączony do dalszego rozwoju albo jeśli zainstalowałeś sobie ten pakiet i chcesz wiedzieć o nowszych wersjach.

P: Zainstalowałem Shadow Suite, ale kiedy używam polecenia userdel dostaję: "userdel: cannot open shadow group file" - co zrobiłem źle ?

O: Skompilowałeś pakiet z włączoną opcją SHADOWGRP, ale nie masz pliku /etc/gshadow. Musisz albo wyedytować plik config.h i skompilować ponownie pakiet albo stworzyć plik /etc/gshadow. Zobacz sekcję dotyczącą przesłanianych grup.

P: Zainstalowałem Shadow Suite, ale zakodowane hasła pojawiają się w pliku /etc/passwd, co jest ?

O: Albo właczyłeś opcję AUTOSHADOW w pliku config.h, albo twoja biblioteka libc była skompilowana z opcją SAHDOW_COMPAT. Musisz dowiedzieć się, które z tych dwóch jest prawdziwe i skompilować ponownie.

10. Prawa autorskie podziękowania i różne.

10.1 Prawa autorskie

Linux Shadow Password HOWTO jest chronione prawami autorskimi Michaela H. Jacksona.

Dozwolone jest dystrybuowanie kopii tego dokumentu zakładając, że wzmianka o prawach autorskich i to pozwolenie jest zawarte we wszystkich kopiach.

Dozwolone jest dytrybuowanie i kopiowanie modyfikowanych wersji tego dokumentu pod warunkami kopiowania z powyższego akapitu, zakładając, że zawarta jest jasna informacja, że jest to wersja modyfikowana tego dokumentu.

Dozwolone jest kopiowanie i dystrybucja tłumaczeń tego dokumentu na inne języki pod warunkami dla wersji modyfikowanych wymienionymi wyżej.

Dozwolone jest konwertowanie tego dokumentu na inne media pod warunkami podanymi powyżej dla wersji modyfikowanych zakładając, że informacja o źródle nowego dokumentu jest zawarta przez oczywisty odnośnik do dokumentu źródłowego w nowej wersji tego dokumentu. Jeśli występują jakieś wątpliowści co do słowa "oczywiste", właściciel praw autorskich rezerwuje sobie prawo decyzji.

10.2 Podziękowania i różne.

Przykłady kodów dla auth.c zostały wzięte z pppd-1.2.1d i ppp-2.1.0e, Copyright (c) 1993 and The Australian National University oraz Copyright (c) 1989 Carnegie Mellon University.

Podziękowania dla Marka Michałkiewicza <marekm@i17linuxb.ists.pwr.wroc.pl> za napisanie i opiekę nad pakietem Shadow Suite dla Linux-a oraz za przejrzenie i komentarze do tego dokumentu.

Podziękowania dla Rona Tidda <rtidd@tscnet.com> za jego pomocne przejrzenie i testowanie.

Podziękowania dla wszystkich, którzy przysłali do mnie komentarze, aby pomóc w ulepszeniu tego dokumentu.

Jeśli masz jakieś uwagi lub sugestie to napisz do mnie proszę,

z poważaniem

Michael H. Jackson <mhjack@tscnet.com>

10.3 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to:

doc-linux-pl-2002.06.14.orig/html/Sound-HOWTO.pl.html0100664000175000017500000025667206770264140020653 0ustar covencoven Linux Sound-HOWTO, czyli Dźwięk w Linuxie - Jak To Zrobić?

Linux Sound-HOWTO, czyli Dźwięk w Linuxie - Jak To Zrobić?

Autor: Jeff Tranter, jeff_tranter@pobox.com
v1.16, 5 stycznia 1997
Wersja polska: Paweł Olszewski alder@amg.net.pl
v1.01, 23 marca 1997


Ten dokument opisuje obsługę dźwięku w Linuxie. Zawiera listę urządzeń dźwiękowych pracujących z Linuxem, wyjaśnia jak skonfigurować sterowniki dołączane do jądra i odpowiada na często zadawane pytania. Zamiarem autora jest szybsze wprowadzenie nowych użytkowników w temat i zmniejszenie ruchu sieciowego w grupach dyskusyjnych Usenetu i pocztowych listach dyskusyjnych.

1. Wprowadzenie

Oto dokument Linux Sound HOWTO, czyli Dźwięk w Linuxie - Jak To Zrobić? Z założenia ma to być szybki poradnik obejmujący wszystko, co potrzebujesz wiedzieć aby zainstalować i skonfigurować obsługę dźwięku pod Linuxem. Udzielono tu odpowiedzi na często zadawane pytania, a także zamieszczono odnośniki do innych źródeł informacji na rozmaite tematy związane z dźwiękiem i muzyką generowaną za pomocą komputerów.

Zakres pracy jest ograniczony do problematyki kart dźwiękowych, odnoszącej się do Linuxa. Więcej informacji na temat kart dźwiękowych i generowania dźwięku i muzyki z pomocą komputera znajdziesz w dokumentach wymienionych w rozdziale Źróła Informacji.

1.1 Podziękowania

Wiele z tych informacji pochodzi z dokumentacji dostarczonej wraz ze sterownikiem dźwięku, napisanym przez Hannu Savolainena ( hannu@voxware.pp.fi). Składam podziękowania Hannu i wielu innym ludziom, którzy tworzyli sterowniki dźwięku do jądra Linuxa i programy narzędziowe.

Dzięki pakietowi Linuxdoc-SGML ten dokument HOWTO jest dostępny w kilku formatach, wygenerowanych z jednego wspólnego pliku źródłowego.

1.2 Historia Wersji

Wersja 1.1

pierwsza wersja; wysłana jedynie do kanału SOUND pocztowej listy aktywistów Linuxa

Wersja 1.2

niewielkie uaktualnienia; pierwsza wersja dostępna w archiwach internetowych

Wersja 1.3

skonwertowana do formatu SGML; obecnie dostępna w kilku formatach dzięki narzędziom Linuxdoc-SGML Matta Welsha; zmiana wyglądu z powodu nowego formatu, jedynie niewielkie zmiany w treści

Wersja 1.4

niewielkie poprawki w SGMLu; dodana odpowiedź na temat niekompatybilności kontrolera SCSI Adaptec1542A i karty PAS16

Wersja 1.5

sterownik dźwięku w wersji 2.5a jest teraz w dystrybucji jądra 1.1; uwaga na temat obsłgi GUS-MAX; inne nieznaczne poprawki

Wersja 1.6

dodana informacja o błędzie "no space on device" ("brak przestrzeni na urządzeniu"); dodana uwaga o tym, że Podręcznik Hackera (Hacker's Guide) znajduje się w "ukrytym" katalogu; dodane pytanie o tryb dwukierunkowy; informacja o błędach "device busy" ("urządzenie zajęte"); inne nieznaczne poprawki

Wersja 1.7

dodane informacje o ASP i AWE32; dostępny jest VoxWare 2.9; odpowiedź na pytanie o używanie IRQ2; odnośniki do dokumentów HOWTO o dźwięku i SCSI

Wersja 1.8

dodane pytanie o błędy pod DOSem; wiele niewielkich poprawek celem uaktualnienia względem wersji 2.90 sterownika dźwięku; informacja o grze DOOM; odpowiedź na temat redukcji szumów

Wersja 1.9

pytania o nagrywanie i karty-klony

Wersja 1.10

napomknienie, że HOWTO dostępne jest przez WWW, jako dokumenty do druku i w innych wersjach językowych; informacja na temat konfliktu DMA ze sterownikiem napędu taśmowego QIC; informacja o karcie Sound Galaxy NX Pro i myszy szeregowej Logitech

Wersja 1.11

Długo oczekiwane uaktualnienie (byłem zajęty); dokument objęty licencją GPL; uaktualnienie do wersji 3.0 sterownika dźwięku; informacja o wielu nowo obsługiwanych kartach; więcej informacji o konfiguracji i usuwaniu błędów; masa nowych odnośników do stron HTML; uaktualnienie zgodnie z formatem CD-ROM HOWTO.

Wersja 1.12

nowe sterowniki w jądrze 1.3.34; nowe nazwy urządzeń dźwiękowych; adres 1542 to 334 a nie 333; wyjaśnienie statusu Emu i ASP Creative Labs; wskazanie do stron WWW Creative Labs i MediaTrix

Wersja 1.13

wzmianka o nazwie VoxWare; uaktualnienie o najnowsze obsługiwane karty dźwiękowe i opcje konfiguracji; pytanie o obsługę Plug and Play; problem rozmiarów bloku; nowe opcje w xconfig i menuconfig; narzędzia modutils mają obsługę dźwięku; usunięcie pocztowej listy dyskusyjnej vger; wyróżnienie adresu strony WWW autora; inne niewielkie zmiany

Wersja 1.14

Audio Excell DSP16 nie jest obecnie obsługiwana (powinna znowu działać za kilka miesięcy); zmiany w programie configure; dostępne jest włoska wersja językowa tego HOWTO; trick - jak ustawiać wzmocnienie miksowania podczas ładowania modułu obsługi dźwięku; ostatnia stabilna wersja jądra to 2.0; now nazwa sterownika dźwięku; pytanie o prawa dostępu root'a na plikach urządzeń dźwiękowych

Wersja 1.15

usunięcie kilku bardzo starych i obecnie nieaktualnych pytań; nowy adres e-mail autora; poprawione kilka odwołań do najnowszych pakietów programów; więcej informacji o książce nt. multimediów; niewielkie poprawki pisowni i gramatyki

Wersja 1.16

wiele uaktualnień i poprawek od Hannu Savolainena; dodany sześciomiesięczny "okres przydatności do użycia"; nowy URL do strony WWW dotyczącej książki, dodany odnośnik do hiszpańskiej wersji językowej; niewielkie poprawki poprawki pisowni i gramatyki

1.3 Nowe wersje tego dokumentu

Nowe wersje oryginału tego dokumentu będą okresowo wysyłane do gupy dyskusyjnej comp.os.linux.answers. Będą również załadowywane do rozmaitych anonimowych archiwów ftp, zbierających tego typu informacje, jak np. ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/.

Wersje hipertekstowe tego i innych dokumentów Linux HOWTO są dostępne na wielu serwerach WWW w Internecie, w tym pod adresem http://sunsite.unc.edu/mdw/mdw.html. Większość CD-ROMowych dystrybucji Linuxa zawiera dokumenty HOWTO, często w katalogu /usr/doc/, jak również dokumenty te dostępne są u kilku producentów w postaci drukowanej. Czasami dokumenty HOWTO z dystrybucji na płytach CD-ROM, archiwów ftp i w formie drukowanej są nieaktualne. Jeśli z daty wydania tego dokumentu wynika, że ma on więcej niż 6 miesięcy, prawdopodobnie nowsza wersja jest już dostępna w Internecie.

Wersja polska znajduje się wraz z pozostałymi dokumentami Linux-HOWTO w wersji polskiej w archiwum ftp://ftp.jtz.org.pl/HOWTO/

Oryginalna, angielska wersja tego dokumentu: ftp://sunsite.unc.edu/pub/Linux/HOWTO/.

Francuska wersja tego dokumentu : ftp://ftp.ibp.fr/pub2/linux/french/docs/HOWTO/.

Japońska wersja tego dokumentu : http://yebisu.ics.es.osaka-u.ac.jp/linux/.

Włoska wersja tego dokumentu : http://www.psico.unipd.it/ildp/docs/HOWTO/Sound-HOWTO.html.

Hiszpańska wersja tego dokumentu : http://www.insflug.nova.es/howtos/online/sonido/sonido-COMO.html.

Jeśli przetłumaczysz oryginał na inną wersję językową, daj znać autorowi, a do powyższej listy dodany zostanie odpowiedni odnośnik.

1.4 Informacja zwrotna

Polegam na Tobie, czytelniku, aby uczynić ten dokument użytecznym. Jeśli masz jakieś sugestie, poprawki lub komentarze, proszę wyślij je do mnie, jeff_tranter@pobox.com, a ja spróbuje włączyć je do następnej wersji.

Wyrażam również chęć udzielania odpowiedzi na ogólne pytania dotyczące kart dźwiękowych tak dobrze jak tylko potrafię. Jednak zanim zapytasz mnie, zapoznaj się proszę z całym niniejszym HOWTO, a wysyłając pytanie dołącz dokładną informację na temat problemu.

Jeśli opublikujesz ten dokument na dysku CD-ROM lub w wersji drukowanej, byłbym wdzięczny za przesłanie mi jednego egzemplarza. Napisz e-mail, to podam mój adres pocztowy. Warto w takiej sytuacji również rozważyć datek na rzecz Projektu Dokumentacji Linuxa (Linux Documentation Project), co wspomoże ideę darmowej dokumentacji do Linuxa. W sprawie dokładniejszych informacji skontaktuj się z koordynatorem projektu Linux HOWTO, Gregiem Hankinsem mailto:gregh@sunsite.unc.edu.

1.5 Polityka Dystrybucji

Prawa autorskie 1995-1997 Jeff Tranter.

Ten HOWTO jest darmową dokumentacją; możesz go rozprowadzać i/lub modyfikować na zasadach określonych w Generalnej Publicznej Licencji GNU (GPL) przez Fundację Darmowego Oprogramowania (Free Software Foundation); Licencja w wersji 2 lub (zgodnie z Twoim uznaniem) jakakolwiek późniejsza.

Dokument ten rozprowadzany jest w nadziei, że będzie przydatny, jednak bez żadnej gwarancji; nawet bez domniemanej gwarancji przeznaczenia lub przydatności do konkretnego celu. Więcej szczegółów znajdziesz w Generalnej Publicznej Licencji GNU.

Możesz otrzymać kopię Generalnej Publicznej Licencji GNU, jeśli napiszesz do Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

2. Technologia Kart Dźwiękowych

Ten rozdział jest bardzo skrótowym przeglądem technologii dźwięku komputerowego, który ma na celu ułatwić ci zrozumienie później używanych pojęć. Aby dowiedzieć się więcej, powinieneś odwołać się do książek o dźwięku cyfrowym lub cyfrowym przetwarzaniu sygnałów dźwiękowych.

Dźwięk jest zjawiskiem analogowym; może przyjmować dowolne wartości z ciągłego przedziału. Komputery są cyfrowe; lubią pracować z wartościami dyskretnymi. Karty dźwiękowe wykorzystują urządzenie zwane Konwerterem Analogowo - Cyfrowym (A/D lub ADC) do konwersji napięć odpowiadających analogowym falom dźwiękowym do postaci cyfrowych lub numerycznych wartości, które można przechowywać w pamięci. Podobnie, Konwerter Cyfrowo - Analogowy (D/A lub DAC) przekształca wartości numeryczne z powrotem na napięcia analogowe, które w efekcie mogą sterować głośnikiem, produkując dźwięk.

Proces przetwarzania postaci analogowej na cyfrową, zwany próbkowaniem, obciążony jest pewnym błędem. Dwa czynniki są najważniejsze przy określaniu, jak wiernie próbkowany dźwięk odwzorowuje analogowy oryginał. Częstotliwość próbkowania to liczba próbek pobranych w danej jednostce czasu (najczęściej określana w próbkach na sekundę lub Hertzach). Przy niskiej częstotliwości próbkowania analogowy sygnał odwzorowany będzie mniej dokładnie. Rozmiar próbki to zakres wartości używanych do opisania każdej próbki, zazwyczaj oznaczony w bitach. Im większy rozmiar próbki, tym dokładniejszy będzie sygnał cyfrowy.

Karty dźwiękowe najczęściej używają próbek 8- lub 16-bitowych przy częstotliwościach próbkowania od około 4000 do 44.000 próbek na sekundę. Próbki mogą również zawierać jeden kanał (mono) lub dwa kanały (stereo).

Synteza FM jest starszą techniką wytwarzania dźwięku. Polega na łączeniu różnych fal dźwiękowych (np. sinusoidalnej, trójkątnej, kwadratowej). Syntezę FM łatwiej jest zaimplementować sprzętowo niż konwersję D/A, ale za to trudniej ją oprogramować. Jest ona również mniej elastyczna. Wiele kart dźwiękowych obsługuje syntezę FM dla celów wstecznej kompatybilności ze starszymi kartami i programami. Zazwyczaj zawierają one kilka niezależnych generatorów dźwięku lub głosów.

Synteza Wavetable łączy elastyczność konwersji D/A z wielokanałowymi możliwościami syntezy FM. W tej technologii przetworzone na postać cyfrową głosy mogą być załadowane do dedykowanego obszaru pamięci, a następnie odtwarzane, łączone i modyfikowane przy niewielkim obciążeniu procesora. Wszystkie najlepsze karty dźwiękowe obsługują syntezę wavetable.

Większość kart dźwiękowych daje możliwość miksowania - łączenia sygnałów z różnych źródeł wejściowych i kontrolowania poziomów głośności.

MIDI jest skrótem od nazwy Musical Instrument Digital Interface (Cyfrowy Interfejs Instrumentów Muzycznych) i jest standardowym protokołem sprzętowym i programowym pozwalającym instrumentom muzycznym na komunikowanie się ze sobą. Sygnały przesłane po szynie MIDI mogą być również przechowywane w plikach MIDI do późniejszej obróbki i odtwarzania. Wiele kart dźwiękowych zawiera interfejs MIDI. Te, które go nie mają, nadal mogą odgrywać pliki MIDI przy użyciu zintegrowanych w karcie funkcji.

Pliki MOD są powszechnym formatem utworów generowanych za pomocą komputerów. Obok informacji o nutach, które mają być zagrane, pliki te zawierają cyfrowe próbki instrumentów (inaczej zwane głosami). Pliki MOD po raz pierwszy pojawiły się na komputerach Amiga, ale mogą być odtwarzane z pomocą stosownego oprogramowania na innych systemach, z Linuxem włącznie.

3. Obsługiwane Urządzenia

W tym rozdziale wymieniono karty graficzne i interfejsy, które są obecnie obsługiwane przez Linuxa. Informacja tutaj zawarta oparta jest na najnowszych w trakcie pisania tego dokumentu jądrach Linuxa.

Sterownik dźwięku ma swą własną numerację wersji. Ostatnie stabilne jądro Linuxa to wersja 2.0.27, wykorzystująca sterownik dźwięku w wersji 3.5.4-960630.

Autor sterownika dźwięku, Hannu Savolainen, zazwyczaj również udostępnia nowsze wersje sterownika dźwięku zanim włączane są one do standardowej dystrybucji jądra Linuxa. Najbardziej aktualna lista obsługiwanych kart znajduje się pod adresem http://www.4front-tech.com/ossfree/new_cards.html (USA) lub http://personal.eunet.fi/pp/voxware/new_cards.html (Europa). Na tych stronach wyszczególnione jest, która wersja sterownika dźwięku jest wymagana przy danym typie karty dźwiękowej, lub czy sterownik danej karty jest nadal w fazie rozwoju. Plik /usr/src/linux/drivers/sound/Readme.cards, rozprowadzany wraz ze sterownikiem dźwięku do jądra, zawiera informację o obsługiwanych kartach, ale nie zawsze jest aktualny.

Sterownik dźwięku powinien również działać z większością kart dźwiękowych na platformie Alpha. Jednakże, niektóre karty mogą wywoływać konflikty na portach I/O innych urządzeń systemów opartych na Alpha, nawet jeśli działają one poprawnie na komputerach i386, więc ogólnie rzecz biorąc nie można z góry określić, czy dana karta będzie działać, zanim się faktycznie nie spróbuje.

W czasie, gdy to piszę, sterownik dźwięku nie działa jeszcze na wersji Linuxa na systemy z procesorem PowerPC, ale w przyszłości obsługa ta powinna się pojawić.

Wygląda na to, że sterownik dźwięku można dołączyć do jądra w wersji Linuxa na systemy MIPs, ale obawiam się że nie specjalnie działa (czy komputery MIPs mają w ogóle sloty ISA?).

Jądro Linuxa zawiera osobne sterowniki dla wersji na Atari i Amigę, które implementują kompatybilny podzestaw sterownika na platformę Intel, przy użyciu wbudowanych w te komputery urządzeń.

Wersja Linuxa na systemy SPARC nie ma obecnie obsługi dźwięku (podobnie jak Amiga i Atari, komputery SPARC mają wbudowane urządzenia dźwiękowe, więc można to załatwić nowym sterownikiem).

3.1 Karty Dźwiękowe

Następujące karty dźwiękowe obsługiwane są przez sterownik dźwięku jądra Linuxa:

Należy zauważyć, że karty Plug and Play (PnP) nie są w pełni kompatybilne ze starszymi modelami bez PnP tego samego urządzenia. Dla przykładu, SoundBlaster16 PnP nie jest w pełni zgodna z oryginalną kartą SoundBlaster16. Podobnie jest w przypadku kart Soundscape PnP i GUS PnP. Więcej informacji o Plug and Play znajdziesz w dalszej części tego dokumentu.

Następujące karty nie są obsługiwane, z powodu, że są przestarzałe, bądź dlatego, że producent nie chce udostępnić informacji programistycznych niezbędnych do napisania sterownika.

Inne karty dźwiękowe, które określa się jako kompatybilne z jedną z obsługiwanych kart dźwiękowych mogą działać, jeśli są zgodne sprzętowo (tj. na poziomie rejestrów).

Mimo faktu, iż większość kart dźwiękowych tytułuje się mianem "kompatybilnych z SoundBlaster", bardzo niewiele z obecnie sprzedawanych kart jest wystarczająco kompatybilnych, aby pracować z linuxowym sterownikiem karty SoundBlaster. Karty te najczęściej pracują lepiej pod kontrolą sterownika MSS/WSS lub MAD16. Jedynie prawdziwe karty SoundBlaster, produkowane przez Creative Labs, zawierające oryginalne układy (tzn. SoundBlaster16 Vibra), karty MV Jaz16 i oparte o ESS688/1688 działają dobrze ze sterownikiem SoundBlaster. Próba użycia ustawienia "16-bitowa karta dźwiękowa kompatybilna z SoundBlaster Pro" to zazwyczaj tylko strata czasu.

Jądro Linuxa obsługuje port SCSI wbudowany w niektóre karty dźwiękowe (np. ProAudioSpectrum 16) i firmowy interfejs do niektórych napędów CD-ROM (np. Soundblaster Pro). Więcej informacji znajdziesz w dokumentach Linux SCSI HOWTO oraz Linux CDROM HOWTO

Dostępny jest także ładowalny moduł jądra obsługujący porty joysticka - również te, które znajdują się na niektórych kartach dźwiękowych.

Zauważ, że obsługa SCSI, CD-ROM, joysticka i sterowniki dźwiękowe w jądrze są od siebie całkowicie niezależne.

Najnowsze informacje o sterowniku kart dźwiękowych znajdziesz na stronie WWW Hannu Savolainena, której adres wymieniony jest w rozdziale Źródła Informacji.

3.2 Dodatkowe Sterowniki Dźwięku

Dostępnych jest też kilka "nieoficjalnych" sterowników dźwięku, nie włączonych do dystrybucji jądra Linuxa, używanych zamiast standardowego sterownika dźwięku.

Komercyjną wersję sterownika dźwięku pod Linuxa sprzedaje firma 4Front Technologies. Oferowana przez nich wersja ma kilka dodatkowych funkcji w porównaniu ze sterownikiem włączonym do dystrybucji jądra Linuxa. Więcej informacji na ten temat znajdziesz na stronie WWW 4Front Technologies.

Markus Mummert ( mum@mmk.e-technik.tu-muenchen.de) stworzył pakiet sterowników do kart Turtle Beach MultiSound (classic), Tahiti i Monterey. W dokumentacji czytamy:

"Jest on zaprojektowany do wysokiej jakości zapisu/odczytu z dysku twardego bez utraty synchronizacji nawet na obciążonych systemach. Inne funkcje, takie jak synteza fal, MIDI i cyfrowy procesor sygnałowy (DSP) nie mogą być używane. Nie jest również możliwe jednoczesne odtwarzanie i nagrywanie. Obecnie zastępuje on VoxWare i był testowany na kilku wersjach jądra, od 1.0.9 do 1.2.1. Można go również zainstalować na systemach UN*X SysV386R3.2."

Można je znaleźć pod adresem http://www.cs.colorado.edu/~mccreary/tbeach.

Kim Burgaard ( burgaard@daimi.aau.dk) napisał sterownik i programy narzędziowe do interfejsu MIDI Roland MPU-401. Opis z mapy oprogramowania Linuxa jest następujący:

"Sterownik do interfejsów MIDI w pełni zgodnych z Roland MPU-401 (w tym również Roland SCC-1 i RAP-10/ATW-10). Wraz ze sterownikiem otrzymujemy użyteczny zestaw programów narzędziowych, w skład którego wchodzą między innymi odtwarzacz i rejestrator standardowych plików MIDI (Standard MIDI Files)."

Od czasu wydania wersji 0.11a dokonano licznych ulepszeń. Między innymi, sterownik zawiera obecnie procedury dzielenia pracy IRQ i można go skompilować z nowym interfejsem modułów jądra. Opcja pracy z metronomem, możliwość synchronizowania np. grafiki na podstawie rytmu bez utraty precyzji, zaawansowany interfejs powtarzania/nagrywania/nadpisywania i wiele, wiele więcej."

Można to znaleźć pod adresem : ftp://sunsite.unc.edu/pub/Linux/kernel/sound/mpu401-0.2.tar.gz.

3.3 Głośnik PC (PC Speaker)

Dostępny jest sterownik dźwięku, nie wymagający żadnych dodatkowych urządzeń dźwiękowych; wykorzystuje on wewnętrzny głośnik PC. Jest on w większości programowo zgodny ze sterownikiem kart dźwiękowych, jednak jak można się było spodziewać, jakość uzyskiwanego dźwięku jest znacznie gorsza i procesor jest znacznie bardziej obciążony. Wyniki bywają różne, zależnie od charakterystyki danego głośnika. Więcej informacji znajdziesz w dokumentach dołączonych do sterownika głośnika PC.

Bieżąca wersja to 0.9b i można ją zdobyć pod adresem ftp://ftp.informatik.hu-berlin.de/pub/os/linux/hu-sound/

3.4 Port Równoległy

Innym wyjściem jest skonstruowanie konwertera cyfrowo-analogowego w oparciu o równoległy port drukarki i kilka dodatkowych komponentów. Jakość dźwięku w tym przypadku jest lepsza niż na głośniku PC, ale nadal sterownik konsumuje dużo czasu procesora. Wskazówki dotyczące budowy takiego konwertera, oraz odpowiedni sterownik zawiera wcześniej wspomniany pakiet sterujący do głośnika PC.

4. Instalacja

Konfiguracja obsługi dźwięku przez Linuxa sprowadza się do następujących kroków:

  1. Instalacja karty dźwiękowej.
  2. Konfiguracja i kompilacja jądra z obsługą dźwięku.
  3. Stworzenie plików urządzeń.
  4. Przeładowanie jądra Linuxa i testowanie ustawień.

Następne rozdziały szczegółowo opisują każdy z tych kroków.

4.1 Instalacja Karty Dźwiękowej

Postąp zgodnie ze wskazówkami producenta odnośnie instalacji sprzętu, lub zleć instalację dostawcy twojego komputera.

Starsze karty dźwiękowe mają zazwyczaj przełączniki lub jumpery pozwalające dobrać ustawienia IRQ, kanałów DMA, itd.; zapisz sobie wartości, które ustawisz. Jeśli nie masz pewności, wykorzystaj ustawienia fabryczne. W miarę możliwości próbuj unikać konfliktów karty z innymi urządzeniami (np. kartami ethernet, kontrolerami SCSI, portami szeregowymi i równoległymi).

Zazwyczaj powinieneś używać te same ustawienia portu I/O, IRQ i DMA, które działają pod DOSem. Jednak w niektórych przypadkach (szczególnie przy kartach PnP) dla poprawnego działania karty pod Linuxem ustawienia będą musiały być inne. Może się przydać metoda doświadczalna.

4.2 Konfigurowanie jądra

Przy wstępnej instalacji Linuxa prawdopodobnie użyłeś jądra prekompilowanego. Jądra te zazwyczaj nie zawierają obsługi dźwięku. Najlepiej przekompilować jądro samemu z takimi sterownikami, jakie są Ci potrzebne. Możesz również chcieć przekompilować jądro aby uaktualnić je do nowszej wersji lub aby zwolnić nieco pamięci przez zminimalizowanie jego rozmiarów.

Szczegóły odnośnie kompilacji jądra znajdziesz w Linux Kernel HOWTO po polsku (lub w oryginale Linux Kernel HOWTO). Wspomnę tutaj tylko o kilku kwestiach specyficznych dla kart dźwiękowych.

Jeśli nigdy wcześniej nie konfigurowałeś obsługi dźwięku w jądrze, dobrze byłoby, abyś przeczytał wszystkie dokumenty Readme dołączone do sterowników dźwięku do jądra, w szczególności informację o konkretnym typie karty dźwiękowej, której używasz. Następujące pliki informacyjne można znaleźć w katalogu kodu źródłowego sterownika dźwięku do jądra, zazwyczaj /usr/src/linux/drivers/sound:

CHANGELOG         - opis zmian w poszczególnych wersjach
COPYING           - ograniczenia rozprowadzania i prawa autorskie
Readme            - najświeższe i najważniejsze informacje
Readme.aedsp16    - informacje o karcie dźwiękowej Audio Excel DSP 16
Readme.cards      - uwagi na temat konfigurowania konkretnych kart
Readme.linux      - uwagi o instalacji osobnych wersji sterownika dźwięku
Readme.modules    - jak skompilować sterownik dźwięku do postaci modułu ładowalnego
Readme.v30        - nowe funkcje w wersji 3.0 sterownika dźwięku
experimental.txt  - uwagi o opcjach eksperymantalnych

Postąp zgodnie ze zwykłą procedurą tworzenia jądra. Obecnie dostępne są trzy interfejsy ułatwiające konfigurowanie jądra. Graficzny interfejs działający w X11 można wywołać wpisując "make xconfig". Interfejs oparty o okienkowe menu, wymagający jedynie trybu tekstowego jest dostępny jako "make menuconfig". Pierwotna metoda, wywoływana przez "make config", to prosty, tekstowy interfejs.

Szczególnie uważnie należy korzystać z "make xconfig" i "make menuconfig". Należy dokładnie prześledzić wszystkie pytania Yes/No. Domyślną odpowiedzią na te pytania jest zawsze 'No' (nie), co nie we wszystkich przypadkach jest poprawne. W szczególności opcja "/dev/dsp and /dev/audio support" (CONFIG_AUDIO) powinna zazwyczaj być włączona.

W tym dokumencie przyjąłem założenie, że konfigurować będziesz jądro metodą tradycyjną "make config" - odpowiadając na kolejne pytania, chociaż sam proces jest podobny w innych przypadkach.

Są również dwie różne metody konfigurowania dźwięku. Pierwsza to tzw. "stara" metoda (jedyna dostępna w jądrach przed wersją 2.0.0). Wykorzystuje ona osobny program konfiguracyjny, będący częścią sterownika dźwięku. Sposób ten jest skuteczny w przypadku więszości kart dźwiękowych z wyjątkiem kilku rzadkich modeli, które wymagają dodatkowych sterowników "niskopoziomowych" (miroSOUND, AWE32 i AEDSP16).

Druga, "nowa" metoda, jest lepiej zintegrowana z okienkowym systemem konfiguracji jądra. Nie działa ona w przypadku kart, które wymagają pliku załadowanego od producenta. Należą do nich karty PSS, SM Wave, AudioTrix Pro i TurtleBeach Tropez/Maui. Przy tych kartach konieczne jest użycie starej metody.

"make xconfig" wywołuje zawsze "nową" metodę. Przy "make menuconfig" możesz wybrać między "starą" i "nową" metodą w okienku konfiguracji dźwięku. Jeśli natomiast używasz "make config", domyślnie wybierana jest "stara" metoda. Jednak jeśli już raz skorzystałeś z "nowej" metody, będzie ona również używana przez "make config". Przełączyć się do "starej" metody możesz wówczas przez uruchomienie "make menuconfig" i wybranie jej w menu.

Zalecany sposób to użycie "make menuconfig" w połączeniu ze "starą" metodą. Wiele problemów konfiguracji dźwięku powstaje (przynajmniej częściowo) z powodu niepoprawnego użycia "nowej" metody.

Możliwe jest również skompilowanie sterownika dźwięku do postaci ładowalnego modułu jądra. Na początek zalecam wkompilowanie sterownika do rezydentnej części jądra. Z chwilą, gdy już zostanie przetestowany i działa poprawnie, możesz spróbować opcję modułu.

Po uruchomieniu make config, włącz obsługę dźwięku odpowiadając "y" na pytanie:

Sound card support (CONFIG_SOUND) [M/n/y/?]

Po zakończeniu pytań konfiguracyjnych skompilowany i uruchomiony zostanie program konfiguracji dźwięku, który następnie wypyta cię o pożądane opcje dotyczące kart dźwiękowych. Odpowiadaj na te pytania ostrożnie, nieprawidłowa odpowiedź może spowodować, że pewne dalsze pytania w ogóle nie zostaną zadane. Dla przykładu, nie odpowiadaj "yes" na pierwsze pytanie (PAS16) jeśli rzeczywiście nie masz PAS16. Nie włączaj większej ilości kart niż faktycznie potrzebujesz obsłużyć, gdyż jedynie zajmuje to pamięć. Dodatkowo, niektóre sterowniki (jak MPU-401) mogą kłócić się z kontrolerem SCSI i uniemożliwiać ładowanie jądra.

Wymieniam poniżej opisy poszczególnych opcji konfiguracji. Odpowiedz "y" (tak) lub "n" (nie) na każde pytanie. Pokazywana jest odpowiedź domyślna, więc "[Y/n/?]" oznacza domyślnie "y", a "[N/y/?]" oznacza, że domyślnym ustawieniem jest "n". Aby użyć ustawienie domyślne po prostu naciśnij Enter, ale pamiętaj, że wartość ta niekoniecznie jest poprawna.

Wpisując znak zapytania ("?") otrzymasz krótką informację opisującą daną opcję konfiguracji.

Zauważ również, że nie wszystkie pytania muszą uzyskać odpowiedź. Program konfiguracyjny może wyłączyć pewne pytania zależnie od wcześniejszych odpowiedzi. Może również wybierać pewne opcje automatycznie.

Old configuration exists in /etc/soundconf. Use it [Y/n/?]
(W /etc/soundconf znaleziono poprzednią konfigurację. Użyć ją [Y/n/?])

Jeśli wcześniej kompilowałeś jądro z obsługą dźwięku, mogą być zapisane ustawienia poprzedniej konfiguracji. Jeśli chcesz użyć poprzednio wybrane opcje, odpowiedz "y". Jeśli chcesz spróbować innej konfiguracji lub uaktualniłeś jądro do nowszej wersji, powinieneś odpowiedzieć "n" i przejść przez procedurę konfiguracji.

ProAudioSpectrum 16 support [Y/n/?]
(Obsługa ProAudioSpectrum 16 [Y/n/?])

Odpowiedz "y" tylko jeśli masz kartę Pro Audio Spectrum 16, ProAudio Studio 16 lub Logitech SoundMan 16. Nie odpowiadaj "y" jeśli masz jakąś inną kartę firmy Media Vision lub Logitech, gdyż nie są one kompatybilne z PAS16.

SoundBlaster support [Y/n/?]
(Obsługa kart SoundBlaster [Y/n/?])

Odpowiedz "y" jeśli masz oryginalną kartę SoundBlaster produkcji Creative Labs, lub klon w 100% kompatybilny (jak np. Thunderboard lub SM Games). Jeśli twoja karta jest na liście obsługiwanych kart, zerknij na instrukcje do tej konkretnej karty zawarte w pliku Readme.cards zanim odpowiesz na to pytanie. Przy nieznanych kartach możesz odpowiedzieć "y" jeśli w opisie dostarczonym z kartą stwierdzono, że jest kompatybilna z SoundBlasterem.

Gravis Ultrasound support [Y/n/?]
(Obsługa Gravis Ultrasound [Y/n/?])

Odpowiedz "y" jeśli masz kartę GUS lub GUS MAX. Odpowiedz "n" gdy ich nie masz, ponieważ sterownik zżera sporo pamięci.

MPU-401 support (NOT for SB16) [Y/n/?]
(Obsługa MPU-401 (NIE dotyczy SB16) [Y/n/?])

Bądź ostrożny z tym pytaniem. Interfejs MPU-401 jest obsługiwany przez prawie wszystkie karty dźwiękowe. Jednakże, pewne obsługiwane przez Linuxa karty mają własne sterowniki do MPU-401. Włączenie opcji MPU-401 dla tych kart wywoła konflikty. Trochę kłopotów spowodować może również włączenie opcji MPU-401 dla sprzętu, który tak naprawdę nie ma MPU-401. Jeśli twoja karta znalazła się na liście obsługiwanego sprzętu, przeczytaj informacje dotyczące tej konkretnej karty w pliku Readme.cards. Bezpiecznie jest odpowiedzieć "y" jeśli masz prawdziwą kartę interfejsu MIDI MPU-401.

6850 UART Midi support [Y/n/?]
(Obsługa MIDI 6850 UART [Y/n/?])

Bezpiecznie jest odpowiedzieć "n" na to pytanie we wszystkich przypadkach. Interfejs 6850 UART używany jest bardzo rzadko.

PSS (ECHO-ADI2111) support [Y/n/?]
(Obsługa PSS (ECHO-ADI2111) [Y/n/?])

Odpowiedz "y" tylko jeśli masz karty Orchid SW32, Cardinal DSP16 lub jakieś inne oparte na układzie PSS (AD1848 codec + kość ADSP-2115 DSP + kość Echo ESC614 ASIC).

16 bit sampling option of GUS (not GUS MAX) [Y/n/?]
(Opcja 16-bitowego próbkowania w GUS (nie dotyczy GUS MAX) [Y/n/?])

Odpowiedz "y" jeśli masz zainstalowaną 16-bitową kartę siostrzaną na swojej karcie GUS. Odpowiedz "n" jeśli masz kartę GUS MAX. Odpowiedź "y" przy tej opcji powoduje wyłączenie obsługi GUS MAX.

GUS MAX support [Y/n/?]
(Obsługa GUS MAX [Y/n/?])

Odpowiedz "y" tylko jeśli masz kartę GUS MAX.

Microsoft Sound System support [Y/n/?]
(Obsługa Microsoft Sound System [Y/n/?])

Ponownie, pomyśl dobrze, zanim odpowiesz tutaj "y". Bezpiecznie jest wybrać "y" jeśli masz oryginalną kartę Windows Sound System wyprodukowaną przez Microsoft, lub kartę Aztech SG 16 Pro (lub NX16 Pro). Możesz również odpowiedzieć "y" jeśli twoja karta nie była wymieniona wcześniej w tym dokumencie. Przy kartach obsługiwanych przez VoxWare, przejrzyj instrukcje do konkretnej karty w pliku Readme.cards. Niektóre karty mają własną obsługę MSS i w ich przypadku włączenie tej opcji wywoła konflikty.

Ensoniq Soundscape support [Y/n/?]
(Obsługa kart Ensoniq Soundscape [Y/n/?])

Odpowiedz "y" jeśli masz kartę dźwiękowoą opartą na układzie Ensoniq SoundScape. Takie karty produkowane są co najmniej przez Ensoniq, Spea i Reveal (Reveal robi także inne karty).

MediaTriX AudioTriX Pro support [Y/n/?]
(Obsługa MediaTriX AudioTriX Pro [Y/n/?])

Odpowiedz "y" jeśli masz kartę AudioTriX Pro.

Support for MAD16 and/or Mozart based cards?
(Obsługa kart MAD16 i/lub opartych na układzie Mozart?)

Odpowiedz "y" jeśli twoja karta ma układ interfejsu audio Mozart (OAK OTI-601) lub MAD16 (OPTi 82C928 or 82C929). Owe układy są obecnie dość popularne, więc możliwe jest, że wiele kart no-name ma jeden z nich. Dodatkowo, układ MAD16 montowany jest w niektórych kartach znanych producentów takich jak Turtle Beach (Tropez), Reveal (kilka modeli) i Diamond (ostatnie).

Support for Crystal CS4232 based (PnP) cards [Y/n/?]
(Obsługa kart Pnp opartych na Crystal CS4232 [Y/n/?])

Odpowiedz "y" jeśli masz kartę opartą na układzie Crystal CS4232.

Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers [Y/n/?]
(Obsługa Turtle Beach Wave Front (Maui, Tropez))

Odpowiedz "y" jeśli masz jedną z tych kart.

SoundBlaster Pro support [Y/n/?]
(Obsługa SoundBlaster Pro [Y/n/?]

Włącz tę opcję jeśli masz kartę SoundBlaster Pro lub SoundBlaster 16. Włącz ją również jeśli masz jakikolwiek klon SoundBlaster Pro. Odpowiedź "n" oszczędza trochę pamięci, ale "y" to bezpieczniejsze wyjście.

SoundBlaster 16 support [Y/n/?]
(Obsługa SoundBlaster 16 [Y/n/?]

Włącz jeśli masz kartę SoundBlaster 16 (również AWE32).

Audio Excel DSP 16 initialization support [Y/n/?]
(Obsługa inicjalizacji Audio Excel DSP 16 [Y/n/?])

Włącz tę opcję, jeśli masz kartę Audio Excel DSP16. Więcej informacji znajdziesz w pliku Readme.aedsp16.

Następnie program konfiguracyjny zadaje kilka pytań o serwisy wyższego poziomu. Zalecana jest odpowiedź "y" na każde z tych pytań. Odpowiadaj "n" tylko wówczas, gdy jesteś pewien, że nie będziesz danej opcji potrzebować.

/dev/dsp and /dev/audio support (usually required) [Y/n/?]
(Obsługa /dev/dsp i /dev/audio (zazwyczaj wymagana) [Y/n/?])

Odpowiedź "n" wyłącza /dev/dsp i /dev/audio, urządzenia konwerterów A/D i D/A. Odpowiedz "y".

MIDI interface support [Y/n/?]
(Obsługa interfejsu MIDI [Y/n/?])

Odpowiedź "n" wyłącza urządzenia /dev/midixx i dostęp do jakichkolwiej portów MIDI wykorzystujących /dev/sequencer i /dev/music. Opcja ta również wpływa na wszystkie urządzenia kompatybilne z MPU-401 i/lub General MIDI.

FM synthesizer (YM3812/OPL-3) support [Y/n/?]
(Obsługa syntezatora FM (YM3812/OPL-3) [Y/n/?])

Odpowiedz na to pytanie "y".

/dev/sequencer support [Y/n/?]
(Obsługa /dev/sequencer [Y/n/?])

Odpowiedź "n" wyłącza /dev/sequencer i /dev/music

Do you want support for the mixer of SG NX Pro ?
(Czy chcesz obsługę mixera SG NX Pro?)

Odpowiedz "y" jeśli masz kartę dźwiękową Sound Galaxy NX Pro i życzysz sobie mieć obsługę jej rozszerzonych funkcji miksowania.

Do you want support for the MV Jazz16 (ProSonic etc.) ?
(Czy chcesz obsługę MV Jazz16 (ProSonic itd.)?)

Odpowiedz "y" jeśli masz kartę dźwiękową MV Jazz16.

Do you have a Logitech SoundMan Games [Y/n/?]
(Czy masz kartę Logitech SoundMan Games[Y/n/?])

Odpowiedz "y" jeśli masz kartę dźwiękową Logitech SoundMan Games.

Po zadaniu powyższych pytań program konfiguracyjny pyta o szczegółowe informacje dotyczące konfiguracji karty. Zazwyczaj chodzi o adresy I/O i parametry IRQ i DMA. Przy niektórych kartach program pyta o pewne pliki, które mają być użyte w trakcie instalacji karty. Są one używane przez karty posiadające układ DSP lub mikroprocesor, który musi być zainicjalizowany poprzez załadowanie pliku programu (mikrokodu) do pamięci karty. W niektórych przypadkach plik mikrokodu dopisywany jest do pliku .h przez program konfiguracyjny, a następnie włączany do sterownika w trakcie kompilacji. Przeczytaj informacje dotyczące twojej karty w pliku Readme.cards.

Na końcu zostaniesz zapytany:

The sound driver is now configured.
Save copy of this configuration to /etc/soundconf [Y/n/?]

(Sterownik dźwięku jest teraz skonfigurowany.
Zapisać kopię tej konfiguracji do pliku /etc/soundconf [Y/n/?])

Najczęściej powinieneś wpisać "y" abyś miał możliwość wykorzystanie tej samej konfiguracji sterownika dźwięku następnym razem przy kompilacji jądra.

Jeśli uaktualniasz sterownik dźwięku do nowszej wersji, upewnij się, że pliki /usr/include/sys/soundcard.h i /usr/include/sys/ultrasound.h są dowiązaniami symbolicznymi do odpowiadających im plików w katalogu /usr/include/linux, lub że po prostu zawierają wiersze odpowiednio #include <linux/soundcard.h> i #include <linux/ultrasound.h>.

Jesteś teraz gotowy do kompilacji i instalacji nowego jądra.

4.3 Tworzenie Plików Urządzeń

Dla poprawnego działania urządzeń dźwiękowych, należy stworzyć dla nich pliki urządzeń. Zazwyczaj tworzone są one automatycznie podczas instalacji systemu Linux. Można przeprowadzić szybki test przy użyciu poniższych poleceń. Jeśli wynik jest zgodny z poniższym (różne będą daty utworzenia plików), prawie na pewno pliki urządzeń dźwiękowych są ustawione poprawnie.

% ls -l /dev/sdnstat
crw-rw-rw-   1 root     root      14,   6 Apr 25  1995 /dev/sndstat

Pamiętaj, że samo posiadanie odpowiednich plików urządzeń niczego jeszcze nie gwarantuje. Sterownik jądra musi być załadowany lub wkompilowany zanim urządzenia zaczną pracować (więcej o tym później).

W sporadycznych przypadkach, jeśli przekonany jesteś, że pliki urządzeń są niepoprawne, możesz je utworzyć ponownie przy użyciu krótkiego skryptu powłoki zamieszczonego na końcu pliku Readme.linux w katalogu /usr/src/linux/drivers/sound. Powinieneś powinieneś uruchomić ten skrypt jako root. Dodatkowo, większość dystrybucji Linuxa zawiera skrypt /dev/MAKEDEV, który można wykorzystać do tych celów.

Jeśli używasz sterownika dźwięku do głośnika PC, przeczytaj dokumentację dołączoną do pakietu aby ustalić, czy konieczne jest stworzenie jakichś plików urządzeń.

4.4 Przeładowywanie Linuxa i Testowanie Instalacji

Powinieneś być teraz gotów do przeładowania nowego jądra i sprawdzenia sterowników dźwięku. Postąp zgodnie ze swoją zwykłą procedurą instalacji i przeładowywania jądra (oczywiście trzymaj poprzednie jądro gdzieś pod ręką na wypadek kłopotów).

Sound initialization started
<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5
<Sound Blaster 16> at 0x330 irq 5 dma 0
<Yamaha OPL3 FM> at 0x388
Sound initialization complete

Opis powinien pasować do typu twojej karty dźwiękowej i ustawień przełączników (jeśli takowe są).

Pamiętaj, że powyższy komunikat nie jest wyświetlany, jeśli używasz ładowalnego modułu jądra (chyba, że to włączysz, np. tak: "insmod sound trace_init=1").

Jeśli sterownik dźwięku jest wkompilowany w jądro, powinny się pojawić komunikaty "Sound initialization started" ("Inicjalizacja dźwięku rozpoczęta") oraz "Sound initialization complete" ("Inicjalizacja dźwięku zakończona"). W przeciwnym wypadku, jądro nie zawiera sterownika dźwięku. Powinieneś wówczas sprawdzić, czy rzeczywiście zainstalowane zostało nowe jądro, które skompilowałeś po włączeniu obsługi dźwięku.

Jeśli między napisami "Sound initialization started" i "Sound initialization complete" nie pojawią się żadne wiersze, oznacza to, że nie wykryte zostały żadne urządzenia dźwiękowe. Najprawdopodobniej nie masz włączonego odpowiedniego sterownika, karta nie jest obsługiwana, podałeś zły port I/O lub masz kartę PnP, która nie została skonfigurowana.

W trakcie ładowania sterownik może również wyświetlać komunikaty o błędach i ostrzeżenia. Obserwuj je podczas ładowania sterownika po raz pierwszy po kompilacji.

Następnie powinieneś sprawdzić plik urządzeń /dev/sndstat. Odczytanie statusu tego pliku powinno udzielić ci dodatkowych informacji o tym, czy sterownik dźwięku poprawnie rozpoczął pracę. Przykładowy wynik powinien wyglądać mniej więce tak:

% cat /dev/sndstat
Sound Driver:3.5.4-960630 (Sat Jan 4 23:56:57 EST 1997 root,
Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586)
Kernel: Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586
Config options: 0

Installed drivers: 
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401

Card config: 
Sound Blaster at 0x220 irq 5 drq 1,5
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0

Audio devices:
0: Sound Blaster 16 (4.13)

Synth devices:
0: Yamaha OPL-3

Midi devices:
0: Sound Blaster 16

Timers:
0: System clock

Mixers:
0: Sound Blaster

Powyższe polecenie może wywołać kilka komunikatów błędu. "No such file or directory" ("Nie ma takiego pliku lub katalogu") oznacza, że musisz stworzyć pliki urządzeń (patrz rozdział 4.3). "No such device" ("Nie ma takiego urządzenia") oznacza, że sterownik dźwięku nie jest dołączony lub załadowany do jądra. Cofnij się do rozdziału 4.2 aby to poprawić.

Jeśli wiersze w sekcji "Card config:" ("Konfiguracja karty:") /dev/sndstat są wyświetlone w nawiasach (jak np. "(SoundBlaster at 0x220 irq 5 drq 1,5)"), oznacza to, że urządzenie to zostało skonfigurowane, ale nie wykryte.

Powinieneś teraz móc odtworzyć prosty plik dźwiękowy. Zdobądź przykładowy plik dźwiękowy i wyślij go do urządzenia dźwiękowego, tzn.

% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio

(Upewnij się, że nie pomijasz ">" w powyższym poleceniu).

Pamiętaj jednak, że używanie cat nie jest, ogólnie rzecz biorąc, poprawną metodą odtwarzania plików dźwiękowych, to tylko szybki test. Na pewno przyda ci się stosowny program odtwarzający dźwięk (opisane później), który zrobi to lepiej.

Polecenie to zadziała tylko jeśli na liście urządzeń dźwiękowych w pliku /dev/sndstat masz co najmniej jedno urządzenie. Jeśli część wymieniająca urządzenia dźwiękowe jest pusta, powinieneś sprawdzić, dlaczego urządzenie nie zostało wykryte.

Jeśli powyższe polecenie zwróci "I/O error" ("Błąd wejścia/wyjścia"), powinieneś zerknąć na końcówkę komunikatów jądra przy użyciu polecenia "dmesg". Prawdopodobne jest, że znajdziesz tam komunikat o błędzie "Sound: DMA (output) timed out - IRQ/DRQ config error?" (Dźwięk: DMA (wyjście) przekroczenie limitu czasowego - błąd konfiguracji IRQ/DRQ?"). Powyższy komunikat oznacza, że sterownik nie uzyskał oczekiwanego przerwania od karty dźwiękowej. W większości przypadków oznacza to, że IRQ lub kanał DMA ustawione w sterowniku nie działają. Najlepszą metodą ich uruchomienia jest spróbowanie wszystkich możliwych kanałów DMA i numerów IRQ obsługiwanych przez urządzenie.

Inną możliwą przyczyną jest fakt, że urządzenie nie jest kompatybilne z urządzeniem, dla którego skonfigurowany jest sterownik dźwięku. Najczęściej tak jest np. gdy karta teoretycznie "kompatybilna z SoundBlaster (Pro/16)" nie działa ze sterownikiem SoundBlaster. W tym przypadku powinieneś spróbować dowiedzieć się, z jakim urządzeniem twoja karta jest kompatybilna (np. wysyłając pytanie do grupy dyskusyjnej comp.os.linux.hardware).

Kilka próbnych plików dźwiękowych znaleźć można pod adresem ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z

Możesz teraz sprawdzić nagrywanie dźwięku. Jeśli masz możliwość nagrywania, przeprowadź szybki test używając poleceń typu:

# nagranie 4 sekund dźwięku z mikrofonu
EDT% dd bs=8k count=4 </dev/audio >sample.au
4+0 records in
4+0 records out
# odtworzenie dźwięku
% cat sample.au >/dev/audio

Oczywiście, aby to zadziałało, musisz mieć mikrofon podłączony do karty dźwiękowej i powinieneś do niego coś powiedzieć. Możesz również potrzebować program miksujący aby ustawić mikrofon jako urządzenie wejściowe i dostosować poziom nagrywania.

Jeśli przejdziesz przez te testy, możesz być dosyć pewny, że sprzęt i oprogramowanie konwersji dźwięku D/A i A/D działają poprawnie. Jeśli napotkasz problemy, zerknij do następnego rozdziału tego dokumentu.

4.5 Usuwanie błędów

Jeśli nadal masz problemy mimo postąpienia zgodnie z instrukcjami w tym dokumencie, oto kilka rzeczy, które powinieneś sprawdzić. Testy są uszeregowane względem rosnącego stopnia złożoności. Jeśli test się nie powiedzie, usuń problem zanim przejdziesz do następnego etapu.

Krok 1: Upewnij się, że rzeczywiście uruchomiłeś jądro, które skompilowałeś.

Możesz zerknąć na datę i czas utworzenia pliku jądra aby sprawdzić, czy uruchomione jest to, w które wkompilowałeś obsługę dźwięku. Możesz to zrobić za pomocą polecenia uname:

% uname -a
Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386

lub wyświetlając zawartość pliku /proc/version

% cat /proc/version
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996

Jeśli data i czas nie zgadzają się z momentem, w którym kompilowałeś jądro, uruchomione jest starsze jądro. Czy rzeczywiście przeładowałeś system? Jeśli używasz LILO, czy przeinstalowałeś je (zazwyczaj poprzez uruchomienie /etc/lilo/install)? Jeśli ładujesz system z dyskietki, czy stworzyłeś nową dyskietkę startową i użyłeś jej do załadowania systemu?

Krok 2: Upewnij się, że sterowniki dźwięku wkompilowane są w jądro.

Najprostszą metodą jest sprawdzenie zawartości "/dev/sndstat", jak to opisano wcześniej. Jeśli zawartość nie jest taka, jakiej się spodziewamy, coś musiało pójść nie tak w trakcie konfigurowania lub kompilacji jądra. Rozpocznij ponownie proces instalacji, począwszy od konfiguracji i kompilacji jądra.

Krok 3: Czy jądro wykryło kartę dźwiękową w trakcie ładowania?

Upewnij się, że karta dźwiękowa została wykryta w trakcie przeładowywania systemu. Powinieneś zobaczyć komunikat ładowania. Jeśli komunikaty przewinęły się za szybko poza krawędź ekranu, możesz je zazwyczaj przywołać przy użyciu polecenia dmesg:

% dmesg

lub

% tail /var/adm/messages

Jeśli karta nie została znaleziona, coś poszło niepomyślnie. Upewnij się, że jest rzeczywiście zainstalowana. Jeśli karta pracuje pod DOS, możesz być dosyć pewny, że sprzęt działa poprawnie, więc najprawdopopdobniej jest jakiś problem z konfiguracją jądra. Albo wkompilowałeś zły typ karty lub złe parametry, albo twoja karta nie jest kompatybilna z żadnym ze sterowników dźwięku do jądra Linuxa.

Jest także możliwe, że twoja karta dźwiękowa jest jednym z tych "kompatybilnych" modeli, które wymagają inicjalizacji przez sterownik pod DOS. Spróbuj załadować DOS, a następnie sterownik dostarczony przez producenta karty. Następnie załaduj Linuxa używająć miękkiego przeładowania przez Control-Alt-Delete. Upewnij się, że ustawienia portu I/O karty, DMA i IRQ są takie same, jak użyte pod DOS. Wskazówki na temat konfigurowania danego typu karty znajdziesz w pliku Readme.cards.

Jeśli twoja karta dźwiękowa nie jest wymieniona w tym dokumencie, możliwe jest, że sterowniki Linuxa jej nie obsługują. Aby się skonsultować w tej sprawie, możesz sprawdzić kilka odnośników zamieszczonych na końcu tego dokumentu.

Krok 4: Czy możesz pobierać dane z urządzenia dsp?

Spróbuj odczytać coś z urządzenia /dev/audio przy użyciu programu dd wymienionego wcześniej w tym dokumencie. Polecenie powinno działać bezbłędnie.

Jeśli nie działa, są szanse, że problem polega na konflikcie IRQ lub DMA lub niekompatybilności jakiegoś rodzaju sprzętu (urządzenie nie jest obsługiwane przez Linuxa lub sterownik jest skonfigurowany dla innego urządzenia)

Daleka ewentualność to wadliwy sprzęt. Jeśli to możliwe, przetestuj kartę pod DOSem, aby się upewnić.

Jeśli Wszystko Inne Zawiedzie

Jeśli nadal masz problemy, oto kilka ostatecznych sugestii, co możesz jeszcze sprawdzić:

5. Programy Obsługujące Dźwięk

Podaję tutaj przykładowe typy programów, które mogłyby ci się przydać, jeśli masz kartę dźwiękową pod Linuxem. Aby znaleźć więcej bieżących informacji, możesz sprawdzić Mapę Oprogramowania na Linuxa (Linux Software Map), archiwa internetowe i/lub pliki na krążku z dystrybucją Linuxa.

Jako minimum, z pewnością będziesz potrzebować następujące programy obsługujące dźwięk:

W przypadku większości z powyższych programów, istnieją zarówno wersje tekstowe, jak i wzbogacone o interfejs użytkownika. Istnieją również bardziej ezoteryczne programy (np. synteza i rozpoznawanie mowy), które mogłbyś zechcieć spróbować.

6. Odpowiedzi Na Często Zadawane Pytania

W tym rozdziale udzielono odpowiedzi na niektóre pytania spośród często zadawanych w pocztowych grupach dyskusyjnych i grupach Usenetu.

Odpowiedzi na więcej pytań można również znaleźć na stronie WWW sterownika dźwięku OSS.

6.1 Czym są różne pliki urządzeń dźwiękowych?

Są to najbardziej "typowe" nazwy plików urządzeń, niektóre dystrybucje używają nieco innych nazw.

/dev/audio

zazwyczaj dowiązanie do /dev/audio0

/dev/audio0

urządzenie dźwiękowe, kompatybilne ze stacjami roboczymi Sun (tylko częściowa implementacja, nie obsługuje interfejsu ioctl Sun, tylko kodowanie u-law)

/dev/audio1

drugie urządzenie dźwiękowe (jeśli jest obsługiwane przez kartę dźwiękową lub jeśli masz więcej zainstaowanych kart niż jedną)

/dev/dsp

zazwyczaj dowiązanie do /dev/dsp0

/dev/dsp0

pierwsze urządzenie cyfrowego próbkowania

/dev/dsp1

drugie urządzenie cyfrowego próbkowania

/dev/mixer

zazwyczaj dowiązanie do /dev/mixer0

/dev/mixer0

pierwszy mikser dźwięku

/dev/mixer1

drugi mikser dźwięku

/dev/music

interfejs wysokiego poziomu sequencera

/dev/sequencer

niskopoziomowy dostęp do MIDI, FM, i GUS

/dev/sequencer2

zazwyczaj dowiązanie do /dev/music

/dev/midi00

pierwszy surowy port MIDI

/dev/midi01

drugi surowy port MIDI

/dev/midi02

trzeci surowy port MIDI

/dev/midi03

czwarty surowy port MIDI

/dev/sndstat

wyświetla status sterownika dźwięku jeśli przeczytany

Sterownik głośnika PC udostępnia następujące urządzenia:

/dev/pcaudio

odpowiednik /dev/audio

/dev/pcsp

odpowiednik /dev/dsp

/dev/pcmixer

odpowiednik /dev/mixer

6.2 Jak mogę odtworzyć próbkę dźwiękową?

Pliki dźwiękowe stacji roboczych Sun (.au) można odtworzyć wysyłając je do urządzenia /dev/audio. Surowe próbki (pliki raw) można wysłać do /dev/dsp. Jednak zazwyczaj przyniesie to kiepskie efekty i lepiej jest używać program taki jak play, ponieważ rozpoznaje on większość typów plików i ustawia odpowiednią częstotliwość próbkowania i inne parametry na karcie.

Programy takie jak wavplay lub vplay (w pakiecie snd-util) dadzą najlepsze rezultaty z plikami WAV. Jednakże nie rozpoznają one plików WAV skompresowanych metodą Microsoft ADPCM. Starsze wersje programu play (z pakietu Lsox) nie działają również zbyt dobrze z 16-bitowymi plikami WAV.

Polecenie splay wchodzące w skład pakietu snd-util może być używane do odtwarzania większości plików dźwiękowych jeśli odpowiednie parametry podasz ręcznie w wierszu polecenia.

6.3 Jak mogę nagrać próbkę?

Odczyt /dev/audio lub /dev/dsp zwróci próbkowane dane, które można przekierować do pliku. Program taki jak vrec ułatwia kontrolowanie częstotliwości próbkowania, czas nagrania, itp. Może ci się również przydać programowy mikser do wybierania stosownego urządzenia wejściowego.

6.4 Czy mogę mieć więcej niż jedną kartę dźwiękową?

Przy obecnym sterowniku dźwięku jest możliwe posiadanie kilku kart SoundBlaster, SoundBlaster/Pro, SoundBlaster16, MPU-401 lub MSS jednocześnie w tym samym komputerze. Instalacja dwóch SoundBlasterów jest możliwa, ale wymaga zdefiniowania makr SB2_BASE, SB2_IRQ, SB2_DMA oraz (w niektórych przypadkach) SB2_DMA2 przez ręczną edycję pliku local.h. Możliwe jest również posiadanie karty SoundBlaster jednocześnie z PAS16.

Następujące sterowniki nie zezwalają na posiadanie wielokrotnych urządzeń:

6.5 Błąd urządzeń dźwiękowych "No such file or directory"

(Błąd: Nie znaleziono pliku lub katalogu)

Musisz stworzyć pliki urządzeń dźwiękowych. Przeczytaj rozdział o tworzeniu plików urządzeń. Jeśli masz pliki urządzeń, upewnij się, że mają poprawne liczby główną i poboczną (niektóre starsze dystrybucje Linuxa na CD-ROM nie tworzą odpowiednich plików urządzeń przy instalacji).

6.6 Błąd urządzeń dźwiękowych "No such device"

(Błąd: Nie znaleziono urządzenia)

Nie przeładowałeś jądra zawierającego sterownik dźwięku lub adres I/O nie odpowiada twojemu sprzętowi. Sprawdź, czy uruchomione jest świeżo skompilowane jądro i upewnij się, że ustawienia wpisane w trakcie konfigurowania sterownika odpowiadają charakterystyce sprzętu.

6.7 Błąd urządzeń dźwiękowych "No space left on device"

(Błąd: Brak wolnej przestrzeni na urządzeniu)

Może się to zdarzyć jeśli próbowałeś nagrywać dane na /dev/audio lub /dev/dsp bez stworzenia niezbędnego pliku urządzeń. Urządzenie dźwiękowe jest teraz zwykłym plikim, który wypełnił twoją partycję. Powinieneś uruchomić skrypt opisany w rozdziale Tworzenie Plików Urządzeń niniejszego dokumentu.

Może się to również przytrafiać przy jądrach Linuxa 2.0 i późniejszych jeśli nie ma wystarczającej ilości wolnej pamięci RAM w momencie, gdy zaczynamy używać urządzenie. Sterownik dźwięku wymaga co najmniej dwóch stron (8k) fizycznie ciągłej przestrzeni RAM dla każdego kanału DMA. Zdarza się to czasami na komputerach z mniej niż 16M pamięci RAM, lub działających przez bardzo długi czas. Możliwe jest zwolnienie nieco pamięci RAM przez skompilowanie i uruchomienie następującego programu w języku C przed ponowną próbą skorzystania z urządzenia.

main() {
  int i;
  char mem[500000];
  for (i = 0; i < 500000; i++)
    mem[i] = 0;
  exit(0);
}

6.8 Błąd urządzeń dźwiękowych "Device busy"

(Błąd: Urządzenie zajęte)

Tylko jeden proces może korzystać z danego urządzenienia dźwiękowego w danym momencie. Najprawdopodobniej jakiś inny proces korzysta z urządzenia, z którym mamy problem. Jedną z metod sprawdzenia tego jest użycie polecenia fuser:

% fuser -v /dev/dsp
/dev/dsp:             USER       PID ACCESS COMMAND
                      tranter    265 f....  tracker

W powyższym przykładzie, polecenie fuser wykazało, że proces 265 korzysta z urządzenia. Usunięcie procesu lub poczekanie aż się skończy umożliwi ponwne korzystanie z urządzenia.

6.9 Nadal pojawiają się błędy "urządzenie zajęte"!

Zdaniem Briana Gough, przy kartach SoundBlaster używających 1 kanału DMA istnieje potencjalny konflikt ze sterownikiem napędów taśmowych QIC-02, który również korzysta z DMA 1, co wywołuje błędy "device busy" (urządzenie zajęte). Zgodnie z FTAPE-HOWTO sterownik QIC-02 nie jest niezbędny aby używać FTAPE; wymagany jest jedynie sterownik QIC-117. Przekonfigurowanie jądra aby używało sterownika QIC-117 zamiast QIC-02 umożliwi koegzystencję FTAPE i sterownika dźwięku.

6.10 Niepełne odtwarzanie pliku z dźwiękiem cyfrowym

Symptom polega zawyczaj na tym, że próbka jest odgrywana przez mniej więcej sekundę, a następnie zatrzymuje się lub wyświetlany jest komunikat "missing IRQ" (brak IRQ) lub "DMA timeout" (przekroczenie limitu czasowego DMA). Najprawdopodobniej masz niepoprawnie ustawione parametry IRQ i DMA. Sprawdź, czy konfiguracja jądra odpowiada ustawieniom na przełącznikach karty i że nie kłócą się one z jakąś inną kartą.

Innym objawem są próbki dźwiękowe, które się "zapętlają". Jest to zazwyczaj spowodowane konfliktem IRQ.

6.11 W trakcie odtwarzania plików MOD pojawiają się przerwy

Odtwarzanie plików MOD wymaga dość znacznej pracy procesora. Być może masz zbyt wiele działających procesów lub twój komputer jest zbyt wolny, aby odtwarzać w czasie rzeczywistym. Masz następujące możliwości:

Jeśli masz kartę Gravis UltraSound, powinieneś używać jednego z programów do odtwarzania plików MOD, napisanych specjalnie dla karty GUS (np. gmof).

6.12 Błędy przy kompilacji programów dźwiękowych

Wersja 1.0c i wcześniejsze sterownika dźwięku wykorzystywały inny i niekompatybilny schemat ioctl(). Zdobądź nowsze kody źródłowe lub nanieś niezbędne poprawki aby przystosować dany program do nowego sterownika dźwięku. Więcej szczegółów znajdziesz w pliku Readme sterownika dźwięku.

Upewnij się również, że używasz ostatnią wersję soundcard.h i ultrasound.h przy kompilacji programów. Zerknij na wskazówki instalacyjne na początku tego tekstu.

6.13 SEGV przy uruchamianiu programów dźwiękowych, które wcześniej działały

Jest to prawdopodobnie taki sam problem, jaki opisano w poprzednim pytaniu.

6.14 Jakie znane błędy lub ograniczenia ma sterownik dźwięku?

Zobacz pliki Readme i CHANGELOG dostarczone z kodem źródłowym sterownika dźwięku do jądra.

6.15 Gdzie znajdę opis odwołań ioctl() sterownika dźwięku?

Są one częściowo opisane w Hacker's Guide to VoxWare (Podręcznik Hackera do VoxWare), obecnie dostępny w formie dokumentu draft. Ostatnia wersja to draft 2 i można ją znaleźć w ftp://nic.funet.fi/pub/OS/Linux/ALPHA/sound. Pamiętaj, że ten katalog jest "ukryty" i nie pojawia się w liście katalogów. Jeśli wejdziesz do tego katalogu i użyjesz polecenia FTP "dir", pliki tam będą.

W trakcie pisania tego dokumentu nowa dokumentacja pojawiła się na stronie WWW firmy 4Front Technologies.

Innym źródłem informacji jest Przewodnik po Multimediach w Linuxie, opisany w rozdziale Źródła Informacji.

6.16 Jaki procesor jest konieczny do odtwarzania lub nagrywania bez przestojów?

Nie ma odpowiedzi na to pytanie, ponieważ zależy to od następujących czynników:

Ogólnie rzecz biorąc, każdy komputer 386 powinien z łatwością być w stanie odtwarzać próbki lub muzykę powstałą przez syntezę FM na 8-bitowej karcie.

Jednakże odtwarzanie plików MOD wymaga dość dużej pracy procesora. Niektóre eksperymentalne pomiary wykazały, że odtwarzanie przy częstotliwości 44kHz wymaga ponad 40% prędkości 486/50 i komputer 386/25 będzie miał już kłopoty z próbkami powyżej 22kHz (takie są na 8-bitowych kartach, takich jak SoundBlaster). Karty takie jak Gravis UltraSound przeprowadzają więcej operacji sprzętowo i odciążają procesor.

Powyższe stwierdzenia są prawdziwe przy zakłożeniu, że komputer nie prowadzi żadnych działań obciążających procesor.

Dokonywanie konwersji plików dźwiękowych lub dodawanie efektów przy użyciu programów narządziowych jak np. sox jest również szybsze jeśli masz koprocesor matematyczny (lub procesor z wbudowanym FPU). Sterownik jądra sam w sobie nie wykonuje jednak żadnych obliczeń zmiennoprzecinkowych.

6.17 Problemy z kartą PAS16 i kontrolerem SCSI Adaptec 1542 SCSI

(następujące wyjaśnienie udostępnił seeker@indirect.com)

Linux rozpoznaje 1542 jedynie pod adresem 330 (domyślnie) lub 334, a PAS zezwala na emulację MPU-401 jedynie pod adresem 330. Nawet jeśli wyłączysz MPU-401 programowo, coś nadal chce się kłócić z 1542, jeśli jest on pod preferowanym adresem domyślnym. Przełączenie 1542 pod adres 334 wszystkich uszczęśliwi.

Dodatkowo, zarówno 1542, jak i PAS-16 korzystają z 16-bitowego DMA, więc jeśli próbkujesz przy 16 bitach i 44kHz w stereo i zapisujesz plik na dysku SCSI podczepionym pod 1542, jesteś o krok od kłopotów. DMA zachodzą na siebie i nie ma wystarczająco dużo czasu na odświeżenie RAM, więc dostajesz okrutny komunikat ``PARITY ERROR - SYSTEM HALTED'' (BŁĄD PARZYSTOŚCI - SYSTEM ZAWIESZONY), bez jakichkolwiek wskazówek, jak do tego doszło. Tym gorzej, że kilku innych producentów napędów QIC-117 zaleca ustawianie czasu włączania/wyłączania magistrali w taki sposób, że 1542 pozostaje włączony nawet dłużej niż zwykle. Zdobądź program SCSISEL.EXE z BBSu firmy Adaptec lub kilku innych miejsc w Internecie i zmniejszaj czas BUS ON lub zwiększaj BUS OFF dopóki problem nie zniknie, następnie ustaw je jeszcze ździebko dalej. SCISEL zmienia ustawienia EEPROM, więc jest to bardziej trwałe niż poprawka w wierszu sterownika pod DOS w CONFIG.SYS i będzie działać jeśi załadujesz bezpośrednio Linuxa (nie jest tak przy poprawce w DOSie). Następny problem z głowy.

Ostatni problem - starsze układy Symphony drastycznie zmniejszały czas cykli I/O aby przyspieszyć dostęp do magistrali. Żadna karta spośród różnych, którymi się bawiłem nie miała żadnych problemów ze zmniejszonym czasem, za wyjątkiem PAS-16. BBS firmy Media Vision udostępnia SYMPFIX.EXE, który ma usuwać problem przez zmianę bitu diagnostycznego w kontrolerze magistrali Symphony, ale nie jest to wystarczająca gwarancja. Mogą być konieczne:

Firma Young Microsystems uzupełnia płyty główne, które importuje, za mniej więcej $30 (US); inni producenci mogą też to robić jeśli jesteś w stanie dociec, kto sprowadził lub wyprodukował płytę główną (życzę szczęścia). Problem tkwi w układzie interfejsu magistrali ProAudio, o ile mi wiadomo; nikt nie kupuje karty dźwiękowej za $120 żeby zaraz wetknąć ją w 6MHz AT. Większość z nich działa znakomicie na komputerach 25-40MHz 386/486 i powinna być w stanie obsłużyć co najmniej 12MHz magistralę, o ile układy są poprawnie zaprojektowane.

Pierwszy problem zależy od układów użytych na płycie głównej, prędkości magistrali i innych ustawień BIOS, oraz fazy księżyca. Drugi problem zależy od ustawienia opcji odświeżania (ukryte lub synchroniczne), prędkości DMA 1542 i (być może) prędkości I/O magistrali. Trzeci można wykryć dzwoniąc do Media Vision i pytając, który rodzaj kości Symphony jest niekompatybilny. Bądź jednak ostrzeżony - 3 z 4 techników, z którymi rozmawiałem miało uszkodzenie mózgu. Byłbym bardzo ostrożny zanim bym uwierzył w cokolwiek, co powiedzieli o czyimś sprzęcie, ponieważ nawet swojego nie znają za dobrze.

6.18 Czy jest możliwe jednoczesne nagrywanie i odtwarzanie próbek?

Z powodu ograniczeń sprzętowych, nie jest to możliwe na większości kart dźwiękowych. Niektóre nowsze karty to umożliwiają. Więcej informacji znajdziesz w rozdziale o "trybie dwukierunkowym" w Podręczniku Hackera do VoxWare.

6.19 Mój SB16 jest ustawiony na IRQ 2, ale configure nie pozwala ustawić tej wartości.

Na '286 i starszych komputerach, przerwanie IRQ 2 jest przeniesione do drugiego kontrolera przerwań. Jest ono równoważne IRQ 9.

6.20 Czy SoundBlaster AWE32 lub SoundBlaster16 ASP są obsługiwane?

Dawniej, firma Creative Labs nie chciała udostępniać informacji dla programistów o tych kartach. Zmienili jednak swą politykę i sterownik do AWE wchodzi obecnie w skład sterowników w jądrach Linuxa 2.1.x.

6.21 Jeśli uruchomię Linuxa, po czym załaduje DOS, dostaję błędy i/lub programy dźwiękowe działają niepoprawnie.

Zdarza się to po miękkim przełądowaniu DOS. Czasami komunikat o błędzie myląco odnosi się do rzekomego błędu w pliku CONFIG.SYS.

Większość obecnych kart dźwiękowych ma programowo konfigurowalne ustawienia IRQ i DMA. Jeśli używasz inne ustawienia na Linuxie i MS-DOS/Windows, możesz napotkać problemy. Niektóre karty dźwiękowe nie przyjmują nowych ustawień bez całkowitego przeładowania (wyłączenie zasilania lub wciśnięcie przycisku reset).

Szybkim rozwiązaniem tego problemu jest pełne przeładowanie komputera przy użyciu przycisku reset lub przez wyłączenie i włączenie zasilania, a nie przeładowanie miękkie (np. przez Ctrl-Alt-Del).

Poprawne rozwiązanie upewnienie się, że pod MS-DOS i Linuxem używane są te same ustawienia (lub nie używaj DOS :-).

6.22 Problemy z uruchamianiem gry DOOM pod Linuxem

Użytkownikom linuxowej wersji gry DOOM firmy ID software mogą się te uwagi przydać.

Aby uzyskać poprawny dźwięk wyjściowy, potrzebujesz sterownik dźwięku w wersji 2.90 lub późniejszej; ma on obsługę "trybu DOOM" w czasie rzeczywistym.

Próbki dźwiękowe są 16-bitowe. Jeśli masz kartę 8-bitową, możesz nadal usłyszeć dźwięk przy użyciu jednego z kilku programów dostępnych w ftp://sunsite.unc/edu/pub/Linux/games/doom.

Jeśli gra DOOM działa wolno na twoim komputerze, wyłączenie dźwięku (przez zmianę nazwy pliku sndserver) może ją przyspieszyć.

Domyślnie DOOM nie obsługuje dźwięku (jak w wersji na DOS). Program musserver dodaje obsługę dźwięku do DOOMa pod Linuxem. Możesz go znaleźć pod adresem ftp://pandora.st.hmc.edu/pub/linux/musserver.tgz.

(Ostatnie przełomowe wieści: zdaje się, że sterownik dźwięku do gry DOOM nie chce działać z jądrami 2.0.x. Informuje o błędzie związanym z /dev/sequencer.)

6.23 Jak mogę zredukować szumy zbierane przez moją kartę dźwiękową?

Użycie dobrej jakości ekranowanych kabli i próbowanie karty w różnych slotach może pomóc w redukowaniu poziomu szumów. Jeśli karta dźwiękowa ma regulator głośności, możesz spróbować jego różne ustawienia (maksymalne jest prawdopodobnie najlepsze).

Użycie programowego miksera pozwala ci się upewnić, że niepożądane sygnały wejściowe (np. mikrofon) są ustawione na zerowym poziomie.

Konstrukcja niektórych kart dźwiękowych nie zapewnia dobrego ekranowania i uziemienia, przez co zbierają one sporo szumów.

Na koniec, w moim systemie odkryłem, że opcja jądra no-hlt w linii polecenia zmniejsza poziom szumów. Przekazuje ona do jądra informację, aby nie używana była instrukcja halt w trakcie przetwarzania pętli biernego procesu. Możesz sprawdzić to ręcznie w trakcie ładowania systemu, lub ustawić przez dodanie polecenia append="no-hlt" do pliku konfiguracyjnego LILO.

6.24 Mogę odtwarzać dźwięki, ale nie mogę nagrywać.

Jeśli możesz odtwarzać dźwięk, ale nie nagrywać, spróbuj zrobić następujące rzeczy:

Czasami do nagrywania używany jest inny kanał DMA niż do odtwarzania. W tym przyoadku najbardziej prawdopodobnym powodem będzie niepoprawne ustawienie DMA dla nagrywania.

6.25 Moja "kompatybilna" karta dźwiękowa działa tylko wówczas, gdy zainicjalizuję ją pod MS-DOS.

W większości przypadków karty "kompatybilne z SoundBlaster" będą działać lepiej pod Linuxem jeśli zostaną skonfigurowane ze sterownikiem innym niż SoundBlaster. Większość kart jest teoretycznie kompatybilna (tzn. "kompatybilna z 16-bitową SB Pro" lub "16-bitowa kompatybilna z SB"), ale zwykle ów tryb SoundBlaster jest tylko sztuczką dodaną dla kompatybilności gier pod DOSem. Większość kart ma 16-bitowy macierzysty tryb, który jest prawdopodobnie obsługiwany przez ostatnie wersje jądra Linuxa (2.0.1 i późniejsze).

Tylko przy niektórych (zazwyczaj raczej starych) kartach niezbędna jest próba uruchomienia ich w trybie SoundBlaster. Jedyne nowsze karty, które są wyjątkami od tej reguły są karty oparte na Mwave.

6.26 Moja 16-bitowa karta "kompatybilna" z SoundBlaster działa pod Linuxem jedynie w trybie 8-bitowym.

16-bitowe karty opisane jako kompatybilne z SoundBlaster są rzeczywiście kompatybilne jedynie z 8-bitową kartą SoundBlaster Pro. Mają zazwyczaj 16-bitowy tryb, który nie jest kompatybliny z SoundBlaster 16 oraz sterownikiem dźwięku w Linuxie.

Może ci się udać uruchomić kartę w trybie 16-bitowym przy użyciu sterownika MAD16 lub MSS/WSS.

6.27 Gdzie mogę znaleźć programy dźwiękowe pod Linuxa?

Oto kilka dobrych archiwów, które możesz przekopać w poszukiwaniu programów obsługujących dźwięk pod Linxem:

6.28 Czy sterownik dźwięku może być skompilowany jako ładowalny moduł jądra?

Przy ostatnich jądrach sterownik dźwięku może być skompilowany do postaci modułu.

Szczegóły znajdziesz w plikach /usr/src/linux/drivers/sound/Readme.modules i /usr/src/linux/Documentation/modules.txt (lub /usr/src/linux/README).

6.29 Czy mogę użyć kartę dźwiękową aby zastąpić systemowy sygnał na konsoli?

Spróbuj program oplbeep, znajdujący się pod adresem ftp://sunsite.unc.edu/pub/Linux/apps/sound/oplbeep-alpha.tar.gz

Inny wariant to program beep, znajdujący się tu: ftp://sunsite.unc.edu/pub/Linux/kernel/patches/misc/modreq_beep.tgz

Pakiet modutils zawiera przykładowy program i poprawkę do jądra, które pozwalają uruchamiać dowolny program zewnętrzny generujący dźwięki gdy jest to wymagane przez jądro.

Dodatkowo, przy niektórych kartach dźwiękowych możesz podłączyć wyjście głośnika PC do karty - wówczas wszystkie dźwięki wydobywają się z głośników podłączonych do karty.

6.30 Co to jest VoxWare?

Sterowniki dźwięku do jądra obsługują kilka różnych systemów kompatybilnych z Unixem, opartych na architekturze Intel. Można je zdobyć jako osobny pakiet, oddzielony od jądra. Do lutego 1996 autor nazywał oprogramowanie "VoxWare". Niestety, nazwa ta została zarejestrowana przez VoxWare Incorporated i nie można jej używać. Nowa nazwa sterownika to OSS/Free.

Open Sound System (OSS - Otwarty System Dźwiękowy) jest komercyjnie dostępnym steronikiem dźwięku dla różnych systemów Unix, sprzedawanym przez 4Front Technologies. Darmowa wersja, znana jako OSS/Free będzie nadal udostępniana za darmo na systemy Linux.

Więcej informacji znajdziesz na stronie WWW firmy 4Front Technologies - http://www.4front-tech.com/.

Inne nazwy, na jakie mogłeś się natknąć, które były używane wcześniej w odniesieniu do tego samego sterownika to TASD (Tymczasowo Anonimowy Sterownik Dźwięku) oraz USS (Unix Sound System - System Dźwięku dla Unixa).

6.31 Czy karty Plug and Play są obsługiwane?

Pełna obsługa Plug and Play powinna pojawić się w Linuxie 2.1. Tymczasem, istnieje kilka rozwiązań, pozwalających uruchomić karty Plug and Play.

Jeśli masz nowszy system Pentium z BIOSem Plug and Play, powinien się on automatycznie zająć konfigurowaniem kart. Upewnij się, że ustawiłeś sterownik dźwięku w Linuxie na takie same parametry adresu I/O, IRQ i kanału DMA, jakie użyte zostały przez BIOS.

Istnieje pakiet programów narzędziowych do Plug and Play dla Linuxa, który można wykorzystać do ustawienia karty. Można go znaleźć na stronach WWW Red Hat : http://www.redhat.com/ (może być także włączony do twojej dystrybucji Linuxa).

Jeśli używasz kartę pod Windows95, możesz użyć menedżera urządzeń do ustawienia karty, następnie miękko przeładować Linuxa przy użyciu programu LOADLIN. Upewnij się, że Windows95 i Linux używają tych samych ustawień karty.

Jeśli używasz kartę pod DOSem, do konfigurowania karty pod DOS możesz użyć program narzędziowy icu, dostarczany z kartami SoundBlaster16 PnP. Następnie miękkie przeładowanie Linuxa za pomocą programu LOADLIN. Ponownie, upewnij się, że Linux i DOS używają tych samych ustawień karty.

Komercyjny sterownik dźwięku OSS obsługuje kartę dźwiękową SoundBlaster16 PnP. Możesz nabyć ten sterownik od 4Front Technologies.

6.32 Sox/Play/Vplay wypisuje "invalid block size 1024" (błędny rozmiar bloku 1024)

Zmiana w sterowniku dźwięku w wersji 1.3.67 zepsuła kilka programów odtwarzających dźwięk, które (niepoprawnie) sprawdzały, czy wynik odwołania ioctl SNDCTL_DSP_GETBLKSIZE jest większy niż 4096. Programy narzędziowe włączone do ostatniego pakietu snd-util-3.x.tar.gz (pod adresem ftp://ftp.4front-tech.com/ossfree.) obecnie obsługują to poprawnie. Ostatnie wersje sterownika dźwięku zostały również poprawione celem uniknięcia alokacji fragmentów krótszych niż 4096 bajtów, co rozwiązuje problem ze starszymi programami.

6.33 Dlaczego sterownik dźwięku ma własny program konfiguracyjny?

Sterownik dźwięku obsługuje wiele różnych parametrów konfiguracyjnych. Program configure z pakietu sterownika dźwięku sprawdza wiele zależności między parametrami. Narzędzia używane do konfigurowania jądra nie umożliwiają takiego stopnia funkcjonalności.

Powiedziawszy powyższe, ostatnie jądra opcjonalnie pozwalają na użycie standardowych narzędzi konfiguracji jądra do ustawiania sterownika dźwięku (patrz wcześniejszy rozdział - "Konfigurowanie Jądra").

6.34 Ustawienia miksera są zerowane za każdym razem gdy załaduję moduł sterownika dźwięku

Możesz skompilować sterownik dźwięku jako moduł ładowalny i używać kerneld do jego automatycznego ładowania i usuwania. Może to wywołać jeden problem - za każdym przeładowaniem modułu ustawienia miksera powracają do wartości domyślnych. Przy niektórych kartach może to być zbyt głośno (np. SoundBlaster16), lub za cicho. Markus Gutschke (gutschk@uni-muenster.de) znalazł następujące rozwiązanie. Wpisz poniższy wiersz do pliku /etc/conf.modules:

options sound dma_buffsize=65536 && /usr/bin/setmixer igain 0 ogain 0 vol 75

Spowoduje to, że twój program miksujący (w tym przypadku setmixer) zostanie uruchomiony niezwłocznie po załadowaniu sterownika dźwięku. Parametr dma_buffsize jest jedynie sztuczną wartością, niezbędną ze względu na wymagany jakikolwiek parametr linii polecenia. Zmień polecenie zgodnie z potrzebami, aby dopasować ustawienia głośności.

Jeśli wkompilowałeś sterownik dźwięku do jądra i chcesz ustawiać poziomy głośności w trakcie ładowania jądra, możesz wywołać program miksujący w jednym z systemowych plików startowych, jak np. /etc/rc.d/rc.local.

6.35 Jedynie użytkownik root może nagrywać dźwięk

Domyślnie, skrypt w Readme.linux, który tworzy pliki urządzeń dźwiękowych ustawia prawa dostępu tak, że urządzenia odczytywane mogą być jedynie przez użytkownika root. Jest tak, aby uniknąć możliwej dziury w systemie. W środowisku sieciowym, zewnętrzni użytkownicy mogliby potajemnie podłączyć się zdalnie do systemu z kartą dźwiękową i mikrofonem i podsłuchiwać. Jeśli cię to nie martwi, możesz zmienić prawa dostępu ustanowione przez skrypt.

Przy domyślnych ustawieniach, użytkownicy nadal mogą odtwarzać pliki dźwiękowe. Nie jest to ryzykowne z punktu widzenia bezpieczeństwa, ale może być potencjalnie denerwujące.

7. Źródła Informacji

Jeśli masz kartę dźwiękową, która zawiera interfejs CD-ROM lub SCSI, dodatkowe informacje, które mogłyby ci się przydać są w dokumentach Linux SCSI HOWTO oraz Linux CD-ROM HOWTO

Sound Playing HOWTO opisuje sposoby użycia różnych typów plików dźwiękowych i muzycznych pod Linuxem.

Istnieje stary dokument, zwany Podręcznik Hackera do WoxWare, dostępny pod adresem ftp://nic.funet.fi/pub/OS/Linux/ALPHA/sound/. Większość zawartej tam informacji została zastąpiona dokumentami w http://www.4front-tech.com/pguide, ale rozdział o /dev/sequencer może nadal być przydatny.

Następujące dokumenty FAQ są regularnie wysyłane do grupy dyskusyjnej Usenetu news.announce, a także archiwizowane pod adresem ftp://rtfm.mit.edu/pub/usenet/news.answers:

Dokumenty FAQ wymieniają również kilka list pocztowych i archiwów dotyczących konkretnych produktów. Następujące grupy dyskusyjne Usenetu omawiają kwestie dźwięku i/lub pokrewne:

Strony WWW poświęcone multimediom znaleźć można tutaj: http://viswiz.gmd.de/MultimediaInfo/. Creative Labs ma stronę WWW pod adresem http://www.creaf.com/. MediaTrix ma stronę WWW pod adresem http://www.mediatrix.com/.

Linuxowe pocztowe listy dyskusyjne mają sporo "kanałów" poświęconych różnym tematom, w tym dźwiękowi. Aby dowiedzieć się, jak się do nich przyłączyć, wyślij pocztę ze słowem "help" jako treścią listu na adres majordomo@vger.rutgers.edu. Owe listy pocztowe nie są zalecane jeśli chodzi o pytania na temat konfiguracji kart dźwiękowych, itp. Istnieją z myślą o dyskusjach dotyczących programowania.

Jak wspomniano wcześniej kilka razy, do sterownik dźwięku do jądra dołączona jest pewna ilość plików Readme, zawierających użyteczne informacje o sterowniku kart dźwiękowych. Można je zazwyczaj znaleźć w katalogu /usr/src/linux/drivers/sound.

Z autorem sterownika dźwięku do jądra, Hannu Savolainenem, można się skontaktować pod adresem hannu@voxware.pp.fi. Ma on również stronę WWW : http://personal.eunet.fi/pp/voxware. Te strony WWW są najlepszym źródłem informacji, jeśli chodzi o bieżący status obsługiwanych kart dźwiękowych, znane problemy i poprawki błędów.

Informacje o OSS, komercyjnym sterowniku dźwięku do Linuxa i innych systemów kompatybilnych z Unixem można znaleźć na stronach WWW 4Front Technologies.

Mapa Oprogramowania Linuxa (Linux Software Map) jest nieocenionym narzędziem wyszukiwania oprogramowania na Linuxa. Przeszukiwanie LSM po słowach kluczowych, jak np. sound (dźwięk) jest dobrą metodą wynajdowania programów mających coś wspólnego z urządzeniami dźwiękowymi. LSM można znaleźć w rozmaitych anonimowych archiwach FTP, chociażby ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/LSM.gz.

W ramach Projektu Dokumentacji Linuxa powstało kilka książek o Linuxie, w tym Linux Installation and Getting Started (Instalacja Linuxa i Pierwsze Kroki). Są one za darmo dostępne poprzez anonimowy FTP z głównych archiwów Linuxa, a także do nabycia w formie drukowanej.

Na sam koniec, bezwstydny wtręt: Jeśli chcesz się dowiedzieć znacznie więcej o multimediach pod Linuxem (szczególnie aplikacje i programowanie CD-ROM i dźwięku), sprawdź moją książkę Linux Multimedia Guide, ISBN 1-56592-219-0, wydaną przez oficynę O'Reilly and Associates. O szczegółach dowiesz się pod numerem 800-998-9938 w Ameryce Północnej, lub na stronach WWW http://www.ora.com/catalog/multilinux/noframes.html.

8. Od tłumacza

Prawa autorskie wersji polskiej tego dokumentu (c) 1997 są własnością Pawła Olszewskiego (alder@amg.net.pl). Dystrybucja wersji polskiej objęta jest klauzulą analogiczną do zawartej w oryginale.

Jeśli znalazłeś w niniejszym dokumencie jakieś paskudne literówki, błędy ortograficzne, lub inne tego typu numery, ślij informację w pierwszej kolejności do tłumacza, w tej sytuacji autor oryginału jest najprawdopodobniej niewinny.

W kwestii merytorycznej, dokument ten nie różni się specjalnie od oryginału (nie dokonałem żadnych zmian ani poprawek), pomijając odnośnik do pliku LSM.gz, który zmieniłem na lokalne archiwum SunSITE. Dodałem również odnośnik do archiwum polskich wersji dokumentów HOWTO.

Najnowsza wersja tego dokumentu znajduje się wraz z innymi przetłumaczonymi na polski dokumentami serii Linux-HOWTO, w archiwum dokumentów JTZ (Jak To Zrobić): ftp://ftp.jtz.org.pl/HOWTO/. Najświeższa wersja angielska znajduje się tutaj: http://sunsite.unc.edu/mdw/HOWTO/Sound-HOWTO.html.

Na zdrowie,

Pawko Olszewski, alder@amg.net.pl

doc-linux-pl-2002.06.14.orig/html/Sound-Playing-HOWTO.pl.html0100664000175000017500000010605606770264140022242 0ustar covencoven Linux Sound Playing HOWTO

Linux Sound Playing HOWTO

Autor: Yoo C. Chung wacko@laplace.snu.ac.kr
v1.5, 7 Listopada 1997
Wersja polska: Leszek Urbański tygrys@fidonet.org.pl
v 1.0, 28 Marca 1998


Ten dokument opisuje aplikacje dla Linuxa, służące do odgrywania dźwięku w różnych formatach. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://laplace.snu.ac.kr/~wacko/howto/

1. Wprowadzenie

To jest Sound Playing HOWTO. Opisuje wiele formatów dźwięku i aplikacje, które mogą być użyte do ich odtwarzania. Opisuje także pare trików i rad dotyczących tych aplikacji. Jest tu też trochę innych interesujących programów związanych z dźwiękiem, nie związanych bezpośrednio z odtwarzaniem. Jednakże ten dokument nie opisuje, jak ustawić obsługę dźwięku w Linuxie. Zobacz Linux Sound HOWTO autorstwa Jeff'a Tranter'a, dla uzyskania instrukcji konfiguracji obsługi dźwięku i obsługiwanego sprzętu.

Ten dokument opisuje tylko normalne aplikacje użytkownika. Znaczy to, że tłumaczy tylko to, co średnio zaawansowany użytkownik powinien wiedzieć o stronie programowej dźwięku, a nie egzotyczne tematy typu synteza dźwięku lub sprzęt - jest on opisany w Sound HOWTO.

1.1 Prawa autorskie tego dokumentu

Ten dokument może być dowolnie dystrybuowany i modyfikowany (byłbym wdzięczny, gdybym był zawiadamiany o zmianach), dopóki są zachowane wiadomości o prawach autorskich. Jednakże nie może posiadać żadnych innych ograniczeń, a zmodyfikowany dokument musi mieć te same prawa autorskie, co ten. Musi być także podany autor zmian.

1.2 Prawa autorskie opisanych aplikacji

Jeżeli nie ma informacji o prawach autorskich, aplikacja jest pod Licencją Publiczną GNU (GNU General Public License).

1.3 Gdzie można zdobyć ten dokument

Najnowsza oficjalna wersja tego dokumentu może być ściągnięta z http://sunsite.unc.edu/LDP/. Najnowsza nieoficjalna wersja znajduje się na http://laplace.snu.ac.kr/~wacko/howto/. Koreańska wersja tego dokumentu (bardzo nieaktualna) znajduje się na http://laplace.snu.ac.kr/~wacko/howto/Sound-Playing-HOWTO.ks. Japońska wersja tego dokumentu jest dostępna na http://jf.gee.kyoto-u.ac.jp/JF/JF-ftp/euc/Sound-Playing-HOWTO.euc.

1.4 Kontakt z autorem

Nie jestem ominescentny i nie używam wszystkich aplikacji opisanych tutaj (kilku nawet nie wypróbowałem), więc mogą być błędy. Programy także ewoluują, więc dokumentacja ciągle się przedawnia. Jeżeli więc znajdziesz jakieś błędy, wyślij mi poprawki. Sugestie i dodatki będą także mile widziane.

1.5 Podziękowania

dla wszystkich autorów aplikacji opisanych w tym HOWTO. Także Hannu Savolainenowi za świetny sterownik dźwięku i Linusowi Torvaldsowi za świetny system operacyjny.

Chciałbym też podziękować Raymondowi Nijssenowi (raymond@es.ele.tue.nl), Jeroenowi Ruttenowi (jeroen@es.ele.tue.nl), Antonio Perezowi (aperez@arrakis.es), Ianowi Jacksonowi (ijackson@gnu.org) i Peterowi Amstutzowi (amstpi@freenet.tlh.fl.us) za informacje i pomoc.

2. Odtwarzanie różnych formatów dźwięku

Istnieje wiele rodzajów formatów dźwięku (WAV, MIDI, MPEG itp.). Poniżej opisuję różne formaty i aplikacje używane do ich odtwarzania.

2.1 MIDI

MIDI znaczy Musical Instrument Device Interface (Interfejs urządeń i instrumentów muzycznych). Pliki MIDI mają zazwyczaj rozszerzenie .mid. Zawierają informacje sekwencerowe, to znaczy informacje kiedy odtworzyć jaki instrument w jaki sposób itp. Zależnie od Twojego sprzętu (i może oprogramowania, którego używasz) dźwięk może być świetny, albo niewyraźny i charczący.

"Adagio package"

Ten pakiet zawiera mp (odtwarzacz MIDI obsługiwany z linii komend) i xmp (odtwarzacz MIDI oparty na XView, nie mylić nazwy z odtwarzaczem modułów także nazywanym xmp). Do używania xmp będziesz potrzebował rozszerzeń SlingShot. Pakiet zawiera także inne programy do odtwarzania utworów Adagio. Jeżeli jesteś posiadaczem GUS'a, mpmoże także odtwarzać pliki MOD (zobacz sekcję Moduły, żeby uzyskać więcej informacji o modułach).

Jeden mały, ale denerwujący błąd (w wersji 0.5 na niektórych kartach) - dźwięk urywa się przy końcu. Zamiast zakończenia utworu w sposób, który opisuje plik MIDI, kończy się on na przydługim odegraniu przedostatniej nuty. Nie przeszkodziło mi to w używaniu mp, ale może kogoś zniechęcić do używania go do ,,prawdziwej'' pracy. Uruchamia się dosyć wolno. W pakiecie nie ma notatki o prawach autorskich (przynajmniej nie mogłem takiej znaleźć), więc przyjmuję, że może być dowolnie dystrybuowana i modyfikowana. (W dokładnej interpretacji przepisów o prawach autorskich, nie wolno tego robić, ale sądzę, że taka była intencja autora). To jest wersja CMU MIDI Toolkit pod Linuxa (ale tak dużo zostało dodane, że można to zakwestionować) autorstwa Grega Lee (lee@uhunix.uhcc.hawaii.edu). Można go ściągnąć z anonimowego ftp z tsx-11.mit.edu z katalogu /pub/linux/packages/sound/adagio05.tar.gz. Binaria tu załączone są w formacie a.out (z dołączonymi archaicznymi bibliotekami), a binaria xmp działają w środowisku X11R6 (XFree86 3.1.1, libc 4.7.2). Binaria mp działają dobrze w środowisku a.out. Do skompulowania tego będzie potrzebne trochę sztuczek. Właściwie niewiele - wszystko, co musisz zrobić, to załączyć przełącznik -lfl na koniec SHROBJ i XMPOBJ w pliku Makefile. Jest to potrzebne do dołączenia biblioteki flex, co nie jest standardowo zrobione. Dalej postępuj zgodnie z instrukcją instalacji. I nie zapomnij, żeby mieć zainstalowane XView i rozszerzenia SlingShot, jeżeli chcesz skompilować xmp

TiMidity

Niektórzy ludzie polecają ten eksperymentalny program z powodu dobrej jakości dźwięku (co jest prawdą, brzmi znacznie lepiej niż mp na Sound Blaster'rze 16, jednak nie będzie brzmiał o wiele lepiej na karcie z syntezą wavetable, jak np. GUS). Jednakże jego problemem jest duże obciążanie procesora. Odgrywa MIDI przez skonwertowanie go do WAV i odtworzenie WAV (możesz także skonwertować MIDI do WAV bez odtwarzania). To tłumaczy obciążanie CPU. Ma także opcjonalny interfejs ncurses, SLang, Tcl/Tk lub Motif. Potrzebujesz plików z instrumentami Gravis'a Ultrasound do używania tego programu. Zobacz FAQ załączony z TiMidity. Autorem jest Tuukka Toivonen (tt@cgs.fi). Najnowsza wersja TiMidity znajduje się na stronie domowej TiMidity. Ta strona zawiera też odnośnik do małej biblioteki instrumenów GUS'a.

playmidi

To jest odtwarzacz MIDI obsługujących syntezę FM, GUS'a i zewnętrzny interfejs MIDI. [po odpowiednim "załataniu" także AWE32/64 - przyp. tłum.] Uruchamia się szybciej niż inne odtwarzacze MIDI. Może także odgrywać pliki Creative Music Files, pliki Microsoft RIFF i duże archiwa MIDI z gier takich jak Ultima 7. Posiada interfejs X i SVGA. Posiada także opcję śledzenia nut na każdym kanale i zegar odtwarzania (dołączony automatycznie z xplaymidi i splaymidi).
Powinieneś napisać coś takiego:

$ splaymidi foo.mid; stty sane

jeżeli chcesz używać interfejsu SVGA, jednak nie przywraca on trybu tty poprawnie. Tryb SVGA może być usunięty w bliskiej przyłości. Ten program był napisany przez Nathan'a Laredo (laredo@gnu org lub laredo@ix.netcom.com). Znajduje się na anonimowym ftp - sunsite.unc.edu w katalogu /pub/Linux/apps/sound/players/playmidi-2.3.tar.gz.

2.2 Moduły

Moduły (w muzyce komputerowej) to pliki z muzyką cyfrową, stworzone ze zbioru próbek (sampli) i informacji sekwencerowych, mówiących odgrywarce kiedy odtworzyć jaką próbkę (instrument) na jakiej ścieżce i z jaką wysokością, opcjonalnie wytwarzając efekt, taki jak np. vibrato. Ma zaletę nad MIDI - może zawierać prawie każdy rodzaj dźwięku (łącznie z głosem ludzkim). Po drugie, brzmi prawie tak samo na każdej platformie, ponieważ próbki są w module. Wadą jest, że moduły mają znacznie większy od MIDI rozmiar, a także to, że nie ma prawdziwego standardowego formatu (jedynym ,,prawdziwym'' jest ProTracker, z którym wiele modułów nie jest kompatybilnych). Pochodzi z Amigi. Najczęściej spotykany format to .mod. Jest wiele rozszerzeń, zależenie od formatu.

tracker

Ten bardzo elastyczny program (został napisany na wiele platform) odtwarza moduły muzyczne Soundtracker'a i Protracker'a. Używa wyjścia stereofonicznego 16-bitowego, jakość uważam za bardzo dobrą. Jeżeli potrzebujesz prostego sposobu na zredukowanie obciążenia procesora, użyj opcji -mono. To jest program "giftware" (cytując autora). Jest nim Marc Espie (Marc.Espie@ens.fr). Wersja z plikiem Makefile dostosowanym pod Linuxa może być sciągnięta z anonimowego ftp z sunsite.unc.edu z katalogu /pub/Linux/apps/sound/players/tracker-4.3-linux.tar.gz

gmod

Gmod to odtwarzacz modułów muzycznych dla Gravisa. Obsługiwane formaty to 4/6/8 kanałowy MOD, 8 kanałowy 669, MultiTracker (MTM), UltraTracker (ULT), FastTracker (XM) i ScreamTracker III (S3M).

Gmod wymaga wersji 3.0 lub późniejszej sterownika dźwięku. Oraz, oczywiście, GUS'a. Możliwe, że będziesz musiał zmodyfikować jądro żeby kontrola głośności działała tak, jak sobie tego życzysz.

Gmod posiada interfejs X'owy. Używa bibliotek QT (wersja 0.99 lub wyższa). Sprawdź stronę domową QT, żeby uzyskać informacje o QT.

Program może być darmowo rozpowszechniany. Był początkowo napisany przez Hannu Savolainen'a, a teraz jest nadzorowany przez Andrew J. Robinson'a (robinson@cnj.digex.net).

Można go ściągnąć z anonimowego FTP z sunsite.unc.edu (katalog /pub/Linux/apps/sound/players/gmod-3.1.tar.gz.

MikMod

Ten podręczny odtwarzacz modułów odtwarza formaty XM, ULT, STM, S3M, MTM, MOD i UNI. (Format UNI jest wewnętrznym formatem używanym przez MikMod.) Posiada obsługę spakowanych (zipped) plików z modułami. Używa jakości 16bit stereo. Użyj opcji -m (m jak mono) jeżeli potrzebujesz prostego sposobu obniżenia obciążenia procesora.

Wersja unixowa może używać bądź to ncurses, bądź to Tcl/Tk jako swój interferjs użytkownika. Może być także użyta jako biblioteka, a nie tylko niezależny program.

MikMod był początkowo napisany przez Jean-Paul Mikkers'a (mikmak@via.nl). Teraz jest nadzorowany przez Jake'a Stine'a (dracoirs@epix.net). Jest to shareware, które musi być zarejestrowane, jeżeli chcesz używać je komercyjnie. Potrzebne jest też zezwolenie na dystrybucję komercyjną (niekomercyjne rozpowszechnianie nie wymaga zezwolenia).

Program można znaleźć na stronie domowej MikMod.

xmp

Ten odtwarzacz modułów (nie mylić z xmp Adagia) może odtwarzać moduły MOD, S3M, STM, 669 i XM (inne formaty są też obsługiwane, ale ciągle eksperymentalnie lub niecałkowicie) na kartach z syntezą WaveTable (GUS albo SoundBlaster AWE 32) i na systemach z SoftOSS (sterownik miksujący programowo). W bardzo bliskiej przyszłości zwykły DSP będzie też obsługiwany.

Wersja pod X jest też dostępna.

Program jest napisany przez Claudio Matsuoka'ę (claudio@brasil.enemy.org) i H. Carraro Jr.

Znajduje się na stronie domowej xmp

s3mod

S3mod odtwarza 4/6/8 ścieżkowe moduły MOD i Scream Tracker 3. Używa standardowo jakości 8 bit mono, 22000Hz. Użyj opcji -s, żeby włączyć stereo, -b, żeby włączyć jakość 16 bitową i -f, żeby ustawić częstotliwość. Jednakże jakość dźwięku jest gorsza od tracker'a (szumy), więc polecałbym tracker'a zamiast s3mod do odtwarzania zwykłych plików MOD (chyba, że masz maszynę o małej mocy). S3mod obciąża procesor znacznie mniej niż tracker.

Prawa autorskie należą do Daniela Marks'a i David'a Jeske'a (jeske@uiuc.edu), ale możesz zrobić z tym co chcesz (poza twierdzeniem, że to ty go napisałeś).

Można go zdobyć przez anonimowe FTP z sunsite.unc.edu (katalog /pub/Linux/apps/sound/players/s3mod-v1.09.tar.gz.

mod

Ten program (wersja beta) odtwarza MOD'y (15/31 instrumentowe, do 32 głosów), MTM'y, ULT'y i S3M'y na Gravisie Ultrasound. Może też używać spakowane moduły, jeżeli masz gzip'a, lharc'a, unzip'a i unarj'a. Nie potrafi odtwarzać modułów spakowanych Powerpacker'em lub modułów spakowanych niektórymi programami do komponowania na Amigę (sygnatura "PACK").

Program wymaga wersji 3.0 sterownika dźwięku. Nie będzie działać z wersją 2.90-2 lub wcześniejszą. Interfejs tekstowy wymaga ncurses. Jest także załączony interfejs X'owy, który używa Tcl/Tk.

Mod jest napisany przez Mikael'a Nordqvist'a (mech@df.lth.se lub d91mn@efd.lth.se).

Można go znaleźć na anonimowym FTP z sunsite.unc.edu z /pub/Linux/apps/sound/players/mod-v0.81.tgz.

nspmod

Nspmod to odtwarzacz modułów w wersji alpha, który może odtwarzać moduły MTM, S3M i MOD. Jest przeznaczony dla kart dźwiękowych bez DSP (nie mylić z tym co Creative Labs nazywa DSP). Obciąża procesor porównywalnie z tracker'em

Posiada możliwość zapętlenia modułów, jeżeli są tak zaprogramowane. Ilość zapętleń może być limitowana opcją -l. Używa tylko wyjścia 8 bitowego. (jeżeli chodzi o wersję 0.1).

Został napisany przez Toru Egashira'ę (toru@jms.jeton.or.jp).

Można go ściągnąć z anonimowego FTP (sunsite.unc.edu, katalog /pub/Linux/apps/sound/players/nspmod-0.1.tar.gz).

yampmod

Ten program (wersja alfa) był zaprojektowany do odtwarzania 4 kanałowych modułów, minimalnie obciążając procesor. Nie był zaprojektowany do odtwarzania dźwięku wysokiej jakości. A więc jedyna jakość to 22kHz, mono. Dźwięk nie jest też tak czysty jak powinien, co wyjaśnia status alfa programu.

Został napisany przez David'a Groves'a (djg@djghome.demon.co.uk).

Można go znaleźć na anonimowym FTP z sunsite.unc.edu w katalogu /pub/Linux/apps/sound/players/yampmod-0.1.tar.gz.

2.3 MPEG audio

MPEG jest standardem specyfikującym kodowanie wideo i towarzszącego mu dźwięku w celu cyfrowej archiwizacji. MPEG jest zazwyczaj kojarzony z obrazem, ale część dźwiękowa może być używana oddzielnie. Część dźwiękowa standardu definiuje trzy powłoki (ang. layers), Layer I, II i III. Odtwarzacze mogące dekodować wyższe powłoki mogą także dekodować niższe. (np. odtwarzacze Layer III mogą odtwarzać pliki Layer II). Pliki audio MPEG Layer I mają zwykle rozszerzenie .mpg (więc jeżeli plik z tym rozszerzeniem nie może być odtworzony odtwarzaczem MPEG wideo, to jest to prawdopodobnie strumień audio), Layer II zazwyczaj ma rozszerzenie .mp2, a Layer III .mp3. Kompresja dźwięku nie jest najgorsza. Dwumegabajtowy Layer II zajmie 25 megabajtów jako czysty PCM o tej samej jakości

mpg123

Ten program (wersja beta) jest wydajnym odtwarzaczem MPEG audio, z obsługą powłok I, II i III. Jest oparty na kodzie z wielu źródeł. Może odtwarzać w czasie rzeczywistym strumień przez HTTP (tzn. można odtwarzać strumień MPEG bezpośrednio przez World Wide Web).

Głównym autorem jest Michael Hipp (Michael.Hipp@student.uni-tuebingen.de). Może być używany i rozpowszechniany w niezmodyfikowanej formie darmowo, przeznaczony do zadań niekomercyjnych. Załączenie w kolekcji darmowego oprogramowania (takiej jak CD-ROM'y lub serwery FTP) jest dozwolone.

Najnowszą wersję można znaleźć na stronie mpg123 Oliver'a Fromme'a.

maplay 1.2

Ten odtwarzacz MPEG audio obsługuje tylko Layer I i II. Obsługuje 16 bitowe karty dźwiękowe pod Linuxem.

Złużywa dosyć dużo czasu procesora, ok. 55% na Pentium 60MHz. Dźwięk jest niemożliwy do słuchania na 486 66MHz, ponieważ procesor nie może nadążyć z dźwiękiem. Jeżeli to ci się zdarzy, spróbuj odtwarzać tylko jedną stronę strumienia audio (opcją -l lub -r), zamiast domyślnego stereo.

Mała zmiana w jednym z plików może być potrzebna do skompilowania programu. Musisz dodać taką linię na początek pliku configuration.sh.

#! /bin/sh

Autorem jest Tobias Bading (bading@cs.tu-berlin.de). maplay 1.2 można znaleźć na anonimowym FTP na ftp.cs.tu-berlin.de z /pub/multimedia/maplay1.2/maplay1_2.tar

maplay 1.3b

To jest nieoficjalna modyfikacji (tzn. nie przez oryginalnego autora) maplay'a 1.2, może działać z o wiele mniejszym obciążeniem procesora. Udaje się jej to głównie przez używanie wyjścia u-law na innych platformach poza SPARC'em. Zauważ, że używa wyjścia u-law domyślnie, więc jakość dźwięku jest niższa.

Modyfikacje były przeprowadzone przez Orlando Andico (orly@gibson.eee.upd.edu.ph).

Program można znaleźć na anonimowym FTP na sunsite.unc.edu z katalogu /pub/Linux/apps/sound/players/maplay-1.3b-Linux.tar.gz.

maplay3

To jest kolejny krewny maplay'a 1.2. Dodaje obsługę formatu MPEG Layer 3. W tej chwili ma pewne błędy w odtwarzaniu (możesz słyszeć skrzeczące odgłosy). Możesz pobawić się opcjami żeby to zmienić.

Modyfikacje były przeprowadzone przez Timo Jantunen'a (timo.jantunen@hut.fi lub jeti@cc.hut.fi. Mówi, że może być używany darmowo, ale zarabianie nim pieniędzy nie jest dozwolone. Jakkolwiek nie jestem całkowicie przekonany o poprawności praw autorskich, ponieważ oryginalny maplay jest na Licencji Publicznej GNU (GNU General Public License), która nie pozwala zmodyfikowanym pracom mieć innych praw autorskich.

Program może być znaleziony na anonimowym FTP na sunsite.unc.edu z katalogu /pub/Linux/apps/sound/players/maplay3.tar.gz.

splay

Ten odtwarzacz (wersja beta) jest kolejnym krewnym maplay'a 1.2 (właściwie jest krewnym maplay'a 1.2+, który jest Windows'owym krewnym maplay'a 1.2). Dodaje obsługę strumieni MPEG Layer 3. Może też odtwarzać pliki WAV. Może także odtwarzać strumienie audio przez połączenie HTTP.

Inna opcja splay'a, to możliwość używania go jako biblioteki (na licencji GPL), więc może być używany w innych programach. Próbuje też polepszyć wydajność przez używanie grupowania (threading) (potrzebujesz pthread, żeby używać tą opcję) i trochę assemblera w kodzie.

Splay używa interfejsu linii komend i opcjonalnego X'owego (który używa QT).

Jeżeli nie działa po kompilacji (np. zwraca błąd segmentacji), spróbuj skompilować go jeszcze raz bez grupowania (threading).

Autorem jest Jung Woo-jae (jwj95@eve.kaist.ac.kr).

Program można znaleźć na stronie domowej splay'a.

Sajber Jukebox

Ten program jest odtwarzaczem MPEG z graficznym interfejsem użytkownika. Jest oparty na splay'u, więc obsługuje powłoki MPEG do III. Może też odtwarzać strumienie MPEG w czasie rzeczywistym, ze strumieniem podawanym przez HTTP. Jest także łatwy do skonfigurowania.

Używa bibliotek QT toolkit (w wersji 1.2<). Używa też LinuxThreads (załączone binaria działają tylko z wersją 0.5).

Autorem jest Joel Lindholm (wizball@kewl.campus.luth.se).

Najnowszą wersję można znaleźć na anonimowym FTP na kewl.campus.luth.se z katalogu /pub/jukebox.

amp

Ten odtwarzacz MPEG audio (wersja beta) obsługuje tylko MPEG Layer 3. Może odtwarzać bezpośrednio do karty dźwiękowej i do plików PCM lub WAV. Daje też dosyć duży ładunek dla procesora (około 60% na Pentium 133MHz).

Został napisany przez Tomislav'a Uzelac'a (tuzelac@rasip.fer.hr). Może być darmowo używany i rozpowszechniany, dotąd, dokąd nie będzie sprzedawany komercyjnie bez zezwolenia (załączanie go na CD-ROM'ach z darmowym oprogramowaniem jest dozwolone).

Można go znaleźć na anonimowym FTP na ftp.rasip.fer.hr z katalogu /pub/mpeg/amp-0.7.3.tgz.

XAudio

Ta biblioteka (alfa) została napisana jako szybka implementacja bibliotek dekodowania MPEG audio, do użycia w różnych interfejsach GUI. Obsługuje powłoki I, II i III. Może losowo pobierać dane ze strumieni. Interfejs linii komend jest załączony. Wersja Motif (Lesstif) jest też załączona w wersji pod Linuxa.

Autorzy to Gilles Boccon-Gibod, Alain Jobart i inni. Wykończenia (front-ends) biblioteki mogą być darmowo pobierane. Biblioteka sama w sobie musi być licencjonowana (dostępna jest licencja źródłowa i binarna).

Wykończenia tej biblioteki mogą być ściągnięte ze strony domowej XAudio.

Layer 3 Shareware Encoder/Decoder

Właściwie jest to konwerter, który przekształca strumienie audio MPEG Layer 3 w WAV, AIFF, SND, AIFC lub po prostu czyste PCM. Wersja pod Linuxa nie kieruje wyjścia bezpośrednio do karty dźwiękowej. Trzeba najpierw skonwertować plik do innego formatu.

Jakkolwiek, jeżeli spróbjesz odtworzyć skonwertowany plik używając sox'a, otrzymasz prawdopodobnie tylko szum, poniewać porządek słów (to taki rodzaj "liczby" komputerowej - przyp. Tygrys) w próbkach PCM nie jest poprawny (przynajmniej na platformach Intelowych). Musisz odpalić sox'a z opcją -x, żeby pozbyć się tego problemu. Ale niektóre odtwarzacze nie muszą być zawiadomione, że porządek słów jest zły, więc nie musisz się o to martwić.

Jeżeli masz naprawdę szybki komputer (prawdopodobnie co najmniej Pentium 100MHz), możesz spróbować odtwoezyć strumienie MPEG Layer 3 bezpośrednio, bez potrzeby skonwertowania dźwięku na inny format, tak jak w następującym przykładzie (przyjmuje on, że używasz sox'a i odtwarzasz próbkę 44.1kHz stereo).

$ l3dec foo.mp3 -sto | play -t raw -x -u -w -c 2 -r 44100 -

Liczba po -r jest częstotliwością próbkowania strumienia audio, a liczba po -c zależy od tego, czy to ma być mono, stereo, czy nawet kwadro. Jeżeli to wygląda zbyt skomplikowanie, możesz użyć skryptu lub aliasu.

To jest shareware z prawami autorskimi Fraunhofer-IIS. Wersja demo pod Linuxa na systemy x86 może być ściągnięta z anonimowego FTP na ftp.fhg.de z katalogu /pub/layer3. Wersja demo konwertuje tylko strumienie Layer 3.

2.4 WAV

Cytując ze strony podręcznika man sox'a:

Wydają się być podobne do plików IFF, ale nie takie same. Są oryginalnym formatem dźwiękowym Windows 3.1. Oczywiście Windows 3.1 jest tak ważne dla przemysłu komputerowego, że musiało mieć własny format plików dzwiękowych.

Mają zazwyczaj rozszerzenie .wav

wavplay

Ten program obsługuje odtwarzanie i nagrywanie w formacie WAV. Używa blokowania (locking), więc tylko jeden dźwięk może być odtwarzany w danej chwili. Jego możliwości blokowania mogą też być użyte oddzielnie od jego możliwości odtwarzania dźwięku.

Jako dodatek do interfejsu linii komend, ma także interfejs Motif, który może być używany z Lesstif'em.

Był początkowo napisany przez Andre Fuechsel'a (af1@irz.inf.tu-dresden.de), ale został całkowicie przepisany przez Warren'a W. Gay'a (bx249@freenet.toronto.on.ca lub wwg@ica.net).

Można go znaleźć na anonimowym FTP z sunsite.unc.edu w katalogu /pub/Linux/apps/sound/players/wavplay-1.0.tar.gz.

2.5 Inne rzeczy

Ta sekcja opisuje rzeczy, które odtwarzają formaty dźwięku nie zasługujące na oddzielną sekcję (np. formaty mające tylko jeden odtwarzacz), lub odtwarzacze obsługujące kilka formatów.

sox

Ten program jest właściwie konwerterem, zamienia jednen format dźwięku na drugi. Jakkolwiek, niektóre wersje sox'a, przywoływane komendą play, odtwarzają dźwięk. (Aplikacja play w Sound HOWTO prawdopodobnie odnosi się do tego). Obsługuje czyste (bez nagłówka) binaria i dane tekstowe , Pliki Dźwiękowe IRCAM, .voc Sound Blaster'a, .au SPARC'a (z nagłówkiem), HCOM Mac'a .voc PC/DOS, formaty Sndtool'a i Sounder'a, .snd NeXT'ta RIFF/WAV Windows 3.1, .smp Turtle Beach'a, CD-R i formaty AIFF i 8SVX Apple/SGI.

Gdzieś w kernelu 1.3.6x, musisz dokonać małej zmiany w jednym pliku, żeby dźwięk był odtwarzany bezpośrednio. Musisz zmienić linię 179 w pliku sbdsp.c z

if (abuf_size < 4096 || abuf_size > 65536) {

na

if (abuf_size < 1 || abuf_size > 65536) {

Ale może nie będziesz musiał tego robić. Jednak zrobienie tego nic nie zepsuje.

Został napisany przez wielu ludzi i może być użyty w każdym przeznaczeniu.

Można go znaleźć na anonimowym FTP na sunsite.unc.edu w katalogu /pub/Linux/apps/sound/convert/Lsox-linux.tar.gz.

Nowsza wersja, której autorem jest Chris Bagwell (cbagwell@sprynet.com) (oparta na najnowszej wesji gamma oryginalnego sox'a, z załączoną powyższą poprawką) może być ściągnięta przez anonimowe FTP na sunsite.unc.edu z katalogu /pub/Linux/apps/sound/convert/sox-11gamma-cb3.tar.gz.

bplay

Ten program (wersja beta) odtwarza czyste audio, WAV i VOC. Może też nagrywać takie pliki. Używa różnych technik do osiągnięcia najwyższej możliwej prędkości, a więc może chodzić przystępnie nawet na wolnych maszynach. Jedna z tych technik wymaga, żeby zainstalowane programy miały identyfikator setuid root. Jeżeli koniecznie chcesz tego używać, możesz użyć paczki Debiana, której autorem jest Ian Jackson (ijackson@gnu.org), która wyłącza funkcję potrzebującą bitu setuid.

Autorem jest David Monro (davidm@gh.cs.usyd.edu.au).

Można go znaleźć na anonimowym FTP na sunsite.unc.edu w katalogu /pub/Linux/apps/sound/players/bplay-0.96.tar.gz.

SIDPLAY

Ten program emuluje układ SID (Sound Interface Device, MOS 6581) i MPU (Micro Processor Unit, MOS 6510) Commodore'a 64. Jest więc w stanie załadować i uruchomić programy w kodzie maszynowym C64 wydające dźwięki lub muzykę. Głównie są to fragmenty kodu i danych, które zostały wyciągnięte (ripped) z gier i programów demonstracyjnych i przesłane bezpośrednio z C64.

Standardowo używa linii komend. Są też interfejsy Tk i QT, dostępne oddzielnie z głównej paczki.

Sidplay jest nadzorowany przez Michael'a Schwendt'a (sidplay@geocities.com).

Jest dostępny ze strony domowej SIDPLAY'a.

RealAudio Player

Pozwala ci słuchać dźwięku, zapisanego w odpowiednim formacie, w czasie rzeczywistym przez Internet bez pobierania całego pliku. Może być użyty oddzielnie, ale tak naprawdę jest przeznaczony do użytku z przeglądarką web (najlepiej obsługiwane są Mosaic i Netscape). Nie może być używany bez X'ów (nie możesz używać go z Lynxem na konsoli tekstowej).

Autorem jest firma Progressive Networks, Inc. Program nie może być rozpowszechniany, modyfikowany itp. Zajrzyj do licencji, żeby uzyskać dokładne informacje o tym, co możesz robić. Program można ściągnąć ze strony domowej RealAudio.

cat

Ktoś może pomyśleć co cat, czasami nadużywane narzędzie wypisujące, może mieć wspólnego z odgrywaniem dźwięku. Pokażę jak można to zużytkować na przykładzie.

$ cat sample.voc > /dev/dsp
$ cat sample.wav > /dev/dsp
$ cat sample.au > /dev/audio

Wykonanie cat'a pliku .au na urządzenie /dev/audio będzie zwykle działać, a jeżeli będziesz miał szczęście, porządek bajtów w pliku będzie odpowiedni do twojej platformy itp., uda się nawet "zcatowanie" pliku PCM (takiego jak /dev/audio czy /dev/dsp) na urządzenie /dev/dsp.

To wcale nie jest bezużyteczny sposób wykorzystania cat'a. Może być przydatny np. jeżeli masz plik dźwiękowy nie rozpoznawany przez twoje programy, a wiesz, że używa próbek PCM, możesz mieć przybliżone wyobrażenie tego, jak plik brzmi (jeżeli będziesz miał szczęście). (kurczę, nie pisze skąd to wziąć ;-) - przyp. Tygrys)

3. Inne przydatne narzędzia dźwiękowe

Ta sekcja nie ma bezpośrednio nic wspólnego z odtwarzaniem plików dźwiękowych. Jest to raczej kolekcja narzędzi, które mogą być przydatne.

3.1 volume

To jest prosty interfejs linii komend, który kontroluje głośność (co innego mogłoby to być?). Ma też oddzielny program z interfejsem Tcl/Tk załączonym w paczce, służącym do kontrolowania głośności i odtwarzania plików .au. Jest też załączony bardzo prosty odtwarzacz CD Tcl/Tk.

Jest to Freeware napisany przez Sam'a Lantinga'ę (slouken@cs.ucdavis.edu).

Można go znaleźć na anonimowym FTP na sunsite.unc.edu w katalogu /pub/Linux/apps/sound/soundcard/volume-2.1.tar.gz.

3.2 Sound Studio

To jest aplikacja Tcl/Tk zapewniająca odtwarzanie, nagrywanie i edycję cyfrowego dźwięku używając sox'a. Zawiera sox'a w swojej dystrybucji, żeby uniknąć problemów z kompatybilnością.

Program został napisany przez Paul'a Sharpe'a i N. J. Bailey'a (N.J.Bailey@leeds.ac.uk). Może być darmowo używane i rozpowszechniane, jeżeli zostanie wysłana kartka pocztowa. (greetsy i widoczek dla autorów :-) - przyp. Tygrys)

Można go znaleźć na stronie domowej Sound Studio.

3.3 Tickle Music

Ta (wersja beta, Tcl/Tk) przeglądarka plików muzycznych pozwala odtwarzać różne formaty dźwięku dotąd, dokąd odpowiednie programy odtwarzające są zainstalowane na twoim systemie. Standardowo moduły odtwarza gmod, a pliki MIDI mp (możesz zmienić źródła, żeby używać innych programów).

Został napisany przez Shannon Hendrix (shendrix@pcs.cnu.edu lub shendrix@escape.widomaker.com).

Można go ściągnąć przez anonimowe FTP na sunsite.unc.edu z katalogu /pub/Linux/apps/sound/players/tmusic-1.0.tar.gz.

4. Odnośniki

  1. Dokumentacja załączona z aplikacjami opisanymi w tym dokumencie
  2. Linux Sound HOWTO. Można je znaleźć w Linux Documentation Project. (Polska wersja znajduje się w Projekcie JTZ.)
  3. Strony MIDI i dźwięku w Linuxie
  4. MPEG Audio Layer 3 FAQ
  5. Programmer's Guide to OSS
  6. Strona domowa SoX

5. Od tłumacza

Zdaję sobie sprawę, że jest tu mnóstwo mniejszych lub większych błędów. Jest to dopiero wersja 1.0 - vis major, błędy muszą być... :-) Jeżeli jakieś znajdziesz, daj mi znać.

Prawa autorskie tłumaczenia - (C)1998 tygrys@fidonet.org.pl.

doc-linux-pl-2002.06.14.orig/html/UMSDOS-HOWTO.pl.html0100664000175000017500000007345207241614560020565 0ustar covencoven UMSDOS HOWTO

UMSDOS HOWTO

Jacques Gelinas jacques@solucorp.qc.ca
v1.1, 13 Listopada 1995
Wersja polska: Leszek Pietryka lesio@mail.uw.edu.pl
v1.0, 19 Listopada 2000


Umsdos to alternatywny dla Ext2 linuksowy system plików. Jego głównym celem jest ułatwienie współistnienia danych Linuksa i MS-DOS poprzez współdzielenie tej samej partycji. Ten dokument najpierw wyjaśnia, jak używać systemu Umsdos skonfigurowanego na różne sposoby, później opisuje zasadę jego działania, a następnie podaje informacje, które pozwolą ci zdecydować, czy jest to dla ciebie dobry wybór (zobacz PO CO UMSDOS na końcu dokumentu). Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się np. pod adresem: ftp.icm.edu.pl. Wersja polska znajduje się pod tym samym adresem.

1. UMSDOS: Skąd się wziął?

1.1 Historia

Projekt Umsdos powstał w 1992. W sieci pojawił się w styczniu 1994 w postaci łaty. Do standardowej dystrybucji jądra (wersja 1.1.36) dołączono go w lipcu.

Dystrybucja Slackware zaadoptowała Umsdos wcześniej, jeszcze zanim znalazł się w oficjalnej wersji jądra.

W jądrze 1.1.60 działanie Umsdos znacznie ulepszono, szczególnie w zakresie zapisu. Od wersji (mniej więcej) 1.1.70 jest on znowu stabilny.

W Linuksie 1.2.2 usunięto poważny błąd, który od samego początku sprawiał użytkownikom kłopoty (niektóre pliki same z siebie zmieniały nazwy, co stwarzało niezbyt przyjemne wrażenie, że zostały skasowane). Uważaj, gdyż Slackware 2.2 ma wersję jądra 1.2.1, czyli że ten błąd jeszcze się w nim znajduje.

1.2 Dostępność

Umsdos jest dostępny jako łata dla jądra 1.0.x. W jądro 1.2 jest już wbudowany. Może być wkompilowany na stałe bądź jako moduł. Pamiętaj, że jeśli zamierzasz ładować Umsdos jako moduł, tak samo jako moduł musisz też ładować obsługę systemu plików MS-DOS. Bierze się to z ograniczeń w systemie modułów (niektóre symbole mogą być wyeksportowane wyłącznie wtedy, gdy sterowniki są zainstalowane jako moduły).

1.3 Dystrybucje, które go obsługują

Jak na razie tylko Slackware obsługuje Umsdos. Tak mi się wydaje. Na pewno się mylę, więc proszę o przesłanie mi informacji, żebym mógł to poprawić.

1.4 Strona domowa

Stroną domową dla Umsdos jest sunsite.unc.edu. Sprawdź w katalogu /pub/Linux/system/filesystems/umsdos.

1.5 Dokumentacja techniczna

Istnieje dość sporo dokumentacji na temat budowy i działania Umsdos. Jest ona dostępna w formatach HTML i txt pod tym samym adresem, co użytki.

O ile wiem, wersja HTML nie jest dostępna dla bezpośredniego czytania na żadnej stronie w sieci. Musisz ją ściągnąć, "odtarować" i czytać lokalnie.

1.6 Kto napisał to HOWTO

Jacques Gelinas jacques@solucorp.qc.ca

2. Umsdos jako twoja partycja root

2.1 Tryb pseudoroot.

Dzięki Umsdos, Linuksa można zainstalować na zwykłej partycji DOS. Linux jest wtedy instalowany jako drugi (lub trzeci) system operacyjny na partycji. Aby uniknąć problemów z nazwami (na dysku C: może znajdować się już katalog bin lub tmp) Umsdos stosuje pewną sprytną sztuczkę: pseudoroot.

Wszystkie pliki Linuksa instalowane są w podkatalogu DOSa o nazwie linux. Z reguły jest to C:\LINUX. Umieszczana tam jest typowa struktura plików Linuksa/Uniksa. Tak więc otrzymujesz:

Kiedy ładujesz Umsdos, sprawdza on dysk w poszukiwaniu katalogu linux, a następnie /linux/etc. Jeśli je znajdzie, uruchamia tryb pseudoroot.

Przede wszystkim tryb pseudoroot przełącza główny katalog partycji do C:\LINUX, co daje w efekcie standardowy układ plików Uniksa

Do tej listy Umsdos dodaje nowy katalog o nazwie DOS. Jest to katalog wirtualny.

2.2 Co trzeba wiedzieć o trybie pseudoroot

3. Różne tematy dotyczące działania Umsdos

3.1 Opcje montowania

Możesz używać tych samych opcji montowania, co dla systemu plików MS-DOS. W systemie Umsdos można mieć zastrzeżenia co do opcji conv=. Sugeruję, żeby jej nie stosować. Większość opcji, których być może będziesz używał, to:

Pamiętaj tylko, że Umsdos obsługuje niepromowane katalogi tak samo, jak system MS-DOS. Powyższe opcje będą stosowane globalnie dla wszystkich niepromowanych katalogów. uid ustawia domyślnego właściciela, gid ustawia domyślną grupę, zaś umask ustawia domyślne prawa dostępu.

3.2 Jak skonfigurować ustawienia domyślne dla katalogu głównego

Aby umożliwić w czasie rzeczywistym ustawienie domyślnego właściciela katalogu głównego, utworzono umssetup. Dla innych partycji Umsdos można użyć albo polecenia mount, albo umssetup. Dla nich najlepiej zapisać opcje montowania w /etc/fstab Oto przykład. Dopisz go do /etc/rc.d/rc.S:

                /sbin/umssetup -u jack -g group -m 0755 /
        

3.3 "Wymieniać albo nie wymieniać, oto jest pytanie"

Plik wymiany jest generalnie wolniejszy w działaniu, niż partycja wymiany, ale taka opcja daje więcej możliwości. Można ustawić plik wymiany na partycji Umsdos tak samo, jak dla każdego innego linuksowego systemu plików. Przykładowo, aby ustawić 8-megabajtowy plik wymiany w katalogu głównym:

                dd if=/dev/zero bs=1024k count=8 of=/swap
                mkswap /swap 8192
                sync
                swapon /swap
        

Następnie dopisz następujący wiersz do pliku /etc/fstab:

                /swap   swap    swap    default         
        

Plik wymiany będzie wówczas aktywowany przy każdym uruchomieniu systemu. Z reguły w pliku /etc/rc.d/rc.S jest już wiersz "swapon -a".

4. Jak załadować Umsdos

4.1 Loadlin

Pakiet loadlin15.tgz jest dostępny pod adresem sunsite.icm.edu w katalogu /pub/linux/system/bootutils. Narzędzie to zostało przystosowane do bootowania systemu na Umsdos. Właściwie wszystko, co musisz zrobić, to:

        Uruchom DOS
        C:>loadlinx zImage root=D:
        

gdzie zImage to zwykły obraz jądra (skompresowany), skopiowany po prostu gdzieś na dysk DOS. C: to dysk DOSowy, na którym zainstalowałeś Linuksa.

4.2 Z dyskietki

Ładowanie systemu na Umsdos z dyskietki nie różni się od ładowania systemu na Ext2. Plik jądra zImage musi zostać poprawnie skonfigurowany, aby zlokalizować twoją główną partycję systemu na Umsdos. Z reguły można to osiągnąć przy pomocy polecenia rdev. Następująca sekwencja poleceń skonfiguruje zImage i zapisze go na dyskietce.

        rdev zImage /dev/hda1
        rdev -R zImage 0
        dd if=zImage bs=8192 of=/dev/fd0
        

Jeśli nic z tego nie rozumiesz, po prostu sformatuj startową dyskietkę DOS i zapisz na niej następujące składniki:

i w pliku autoexec.bat dopisz:

        loadlinx zImage rw root=C:
        

4.3 LILO

Do ładowania systemu na Umsdos można też wykorzystać menedżer startowy Linuksa - LILO. Niestety nie mam z tym doświadczenia. Powino działać od wersji 1.1.60. Wyślij mi e-maila, jeśli coś o tym wiesz.

4.4 Jak zdefragmentować partycję Umsdos

Można to zrobić przy pomocy jakiegokolwiek narzędzia DOS. Pliki utworzone przez Umsdos nie wyróżniają się niczym szczególnym. Ponadto Umsdos nie wymaga niczego nadzwyczajnego (układu katalogów, sekwencji nazw katalogów itd...) od swojego systemu plików.

O ile wiem, nie ma żadnego narzędzia do defragmentacji dla Linuksa.

4.5 Zaawansowane sztuczki

Umsdos do działania potrzebuje pliku --linux-.---, który z kolei potrzebuje katalogu DOS. Dla użytkowników lubiących eksperymentować jest program udosctl, część pakietu umsdos_progs (zawierającego umssync i umssetup) umożliwia podstawowe operacje na katalogach (wyświetlanie zawartości, kasowanie) niezależnie od pliku --linux-.--- i katalogu DOS.

5. Podstawowe zasady działania

5.1 Wprowadzenie

Umsdos przemapowuje pliki Linuksa bezpośrednio do plików MS-DOS. Jest to translacja jeden do jednego. Zawartość pliku w ogóle nie jest zmieniana. Umsdos funkcjonuje tylko na nazwach. Pliki specjalne (na przykład dowiązania i urządzenia) zarządzane są w sposób specjalny.

W każdym katalogu znajduje się plik o nazwie --linux-.---.

5.2 Umsdos może zastąpić system plików MS-DOS.

O Umsdos można myśleć jako o uniwersalnej specjalnej konfiguracji linuksowego systemu plików MS-DOS. W praktyce ta cecha i możliwość dostosowania wprowadzają zamieszanie w Umsdos. Oto dlaczego. Spróbuj zamontować nowo sformatowaną dyskietkę DOS tak, jak tutaj:

        mount -t umsdos /dev/fd0 /mnt
        

Następnie wykonaj:

        ls / >/mnt/LONGFILENAME
        ls -l /mnt
        

Otrzymasz następujący rezultat:

        -rwxr-xr-x   1 root     root          302 Apr 14 23:25 longfile
        

Jak na razie wygląda na to, że system plików Umsdos nie robi o wiele więcej (w praktyce zupełnie nic nie robi), niż zwykły system plików MS-DOS z Linuksem.

???

5.3 Promowanie katalogów

Jak na razie nic nadzwyczajnego. Oto cała sztuczka. Jeśli katalog DOS nie jest promowany, to będzie zarządzany tak samo w Umsdos, jak i w MS-DOS. Umsdos stosuje specjalny plik w każdym podkatalogu, do uzyskania translacji rozszerzonych właściwości atrybutów plików (długa nazwa, właściciel itd...) systemu Umsdos i ograniczeń DOSa. Ten plik jest niewidoczny dla użytkowników Umsdos, ale widać go, gdy ładujesz DOS. Żeby uniknąć niepotrzebnego zagracania partycji DOS tymi plikami (--linux-.---), są one opcjonalne. Jeśli ich nie ma, Umsdos zachowuje się tak, jak MS-DOS.

Kiedy katalog jest promowany, wszelkie kolejne operacje będą wykonywane z pełną składnią zwykle dostępną dla użytkowników Linuksa i Uniksa. W dodatku wszystkie później utworzone katalogi będą domyślnie promowane.

Ta właściwość pozwala Ci na logiczny podział swojej partycji DOS na materiał linuksowy i dosowy. Trzeba też zdać sobie sprawę z tego, że pliki --linux-.--- zajmują miejsce (mniej więcej 2k na katalog). DOS używa z reguły dużych klastrów (16k dla partycji 500MB), tak że unikanie tworzenia takiego pliku wszędzie, gdzie się da, może zaoszczędzić wiele miejsca.

5.4 Jak promować: /sbin/umssync

Promować katalog możesz kiedy chcesz, dzięki /sbin/umssync. Można go zastosować w każdym momencie. Żeby wypromować katalog, wykonaj następujące operacje:

/sbin/umssync zarządza istniejącym plikiem --linux-.---. Nie tworzy go jednak za każdym razem od początku. Po prostu dodaje do niego brakujące pozycje (pliki utworzone podczas sesji DOS). Usuwa również z niego pozycje plików, które zostały usunięte z katalogu DOS. Nazwa umssync bierze się właśnie stąd, że synchronizuje zawartość pliku --linux-.--- z odpowiednim katalogiem DOS.

5.5 Używanie /sbin/umssync podczas uruchamiania komputera

Dobrze jest umieścić wiersz uruchamiający /sbin/umssync na końcu pliku /etc/rc.d/rc.S, jeśli go tam nie ma. Następujące polecenie jest poprawne dla większości systemów:

        /sbin/umssync -r99 -c -i+ /
        

Opcja -c uniemożliwia umssync promowanie katalogów. Uaktualni on jedynie istniejące pliki --linux-.---.

To polecenie przydaje się, jeśli potrzebujesz dostępu do katalogu linux podczas sesji DOSa. Linux nie potrafi poinformować, że katalog został zmodyfikowany przez DOS, tak więc Umsdos nie może wykonać operacji umssync jak należy.

5.6 Jak ODpromować

Skasuj plik --linux-.--- z poziomu DOSa. Będziesz tego żałował.

5.7 A co z plikami utworzonymi podczas sesji DOS?

Jeśli nie używasz umssync w katalogu, w którym pliki zostały dodane lub skasowane przez DOS, zauważysz kilka problemów:

6. Instalowanie/ODinstalowywanie i kilka sztuczek

Instalacja Umsdos nie różni się wiele od instalacji zwykłego Linuksa (opartego na Ext2). Są tu dwie zasadnicze różnice.

6.1 Pseudoroot /mnt/linux

Normalne etapy instalacji to:

  1. Ustawienie partycji przy pomocy fdiska i sformatowanie jej.
  2. Zamontowanie jej jako /mnt odpowiednio do tego, gdzie jest główny system plików.
  3. Skopiowanie wszystkich pakietów do /mnt.

W przypadku Umsdos krok pierwszy nie jest potrzebny (czy brak potrzeby ponownego formatowania nie był właśnie celem Umsdos?).

Można zainstalować system Umsdos po prostu kopiując wszystkie pakiety do /mnt. To oczywiście będzie działać. Ale utworzy to całą kupę podkatalogów w twoim głównym katalogu DOS (C:), a to ci się nie spodoba. Właśnie dlatego wszystkie instalacje Umsdos stosują pseudoroot. I to jest najważniejsza różnica między zwykłą instalacją Ext2 a instalacją Umsdos: wszystki pliki kopiowane są do /mnt/linux.

6.2 Przygotowanie /mnt/linux

/mnt/linux to nie zwykły katalog. Musi on być promowany, aby poprawnie obsługiwać linuksowe długie nazwy plików i pliki specjalne (dowiązania, urządzenia). Kroki potrzebne do utworzenia /mnt/linux to:

  1. mkdir /mnt/linux
  2. umssync /mnt/linux

I już!

6.3 Upewnij się, że /mnt/linux jest poprawnieskonfigurowany

Jeśli nawet skonfigurowanie /mnt/linux to łatwizna, jest wiele pakietów instalacyjnych, które powodują, że coś źle działa. Dlaczego?

Najpoważniejszy problem podczas instalacji bierze się z niekompatybilności umssync. W wersji Linuksa 1.1.88 (nie pamiętam dokładnie) uaktualniono Umsdos i wykryto błąd w umssync. Aby uniknąć bałaganu wśród społeczności linuksowej, zdecydowano zwiększyć kompatybilność wszystkich narzędzi Umsdos. Stare wersje narzędzi po prostu odrzucono.

Wygląda na to, że wiele dystrybucji nie uaktualniło swojego programu umssync na dysku instalacyjnym.

Jest jeszcze wiele podobnych dystrybucji. Efekt tego jest po prostu taki, że katalog /mnt/linux w ogóle nie jest promowany i w rezultacie "obetnie" wszystkie długie nazwy plików i odrzuci wszystkie pliki specjalne.

Można bardzo wcześnie, jeszcze podczas instalacji, wykonać test, aby dowiedzieć się, czy coś poszło nie tak. Dzięki mechanizmowi konsoli wirtualnych Linuksa możesz to zrobić bez opuszczania programu instalacyjnego. Wykonaj następujące kroki:

  1. Wciśnij Alt-F2 (klawisz Alt w tym samym momencie, co klawisz F2).
  2. Zaloguj się jako root.
  3. cd /mnt/linux Jeśli to nie działa, próbujesz za wcześnie. Najlepiej przeprowadzić te kroki pod koniec selekcji pakietów.
  4. >TOTO
  5. ls -l Powinieneś zobaczyć pusty plik TOTO pisany wielkimi literami. Jeśli jest napisany małymi literami, to coś poszło nie tak. Spróbuj ponownie wykonać umssync. Można go używać raz po raz ( :-) ) bez problemu. umssync Jeśli nie ma komunikatu o błędzie, spróbuj znowu wykonać test TOTO. Jeśli TOTO wygląda jak trzeba, to wszystko jest w porządku. Jest w tej instalacji coś dziwnego, ale po prostu ją zapisz i kontynuuj.
  6. Wciśnij Alt-F1, aby powrócić do ekranu instalacyjnego.

Jeśli test się nie powiódł, najprościej to naprawić poprzez zaopatrzenie się w nowszą dyskietkę instalacyjną root. Można z reguły taką dyskietkę naprawić poprzez instalację nowszej wersji umssync. Nie jest to trudne, ale potrzebny jest do tego komputer z działającym Linuksem. Musisz po prostu zamontować dyskietkę root i wymienić źle działający umssync na nowy.

6.4 Oops releasing pseudo root ...

Większość instalacji Umsdos, w których coś się nie udaje, wypisuje na ekranie taką dziwną wiadomość. Nie jest to błąd w Umsdos, chociaż wygląda to osobliwie. Oto znane powody:

Niestety pierwsze dwa problemy (te z instalacją) w rezultacie powodują, że instalacja jest kompletnie do niczego. Odinstaluj Umsdos (zobacz w następnym podpunkcie) i zainstaluj jeszcze raz.

6.5 Jak ODinstalować system Umsdos

Jedną fajną rzeczą w Umsdos i mechanizmie pseudoroot jest to, że można go bez kłopotu ODinstalować. Po prostu uruchamiasz DOSa i kasujesz katalog linux. To wszystko. Umsdos nie potrzebuje żadnych specjalnych sterowników w config.sys, nie tworzy też nic specjalnego poza katalogiem linux.

6.6 Przenoszenie systemu Umsdos na inny napęd z DOSem

Można to zrobić albo z poziomu Linuksa, albo spod DOSa. Wystarczy tylko skopiować cały katalog linux z jednego dysku na drugi. Potem trzeba dostosować mechanizm ładowania (z reguły polecenie loadlin) i plik /etc/fstab.

Umsdos może istnieć na jakimkolwiek dysku DOSowym. Nie trzeba instalować go na dysku C:, ani w ogóle na pierwszym dysku twardym. Nie ma to żadnego znaczenia.

W rzeczywistości jeśli chcesz, to możesz mieć kilka instalacji Umsdos na różnych dyskach tylko po to, żeby poeksperymentować.

6.7 A gdyby tak zainstalować 50 systemów Umsdos

A co, gdyby chcieć zainstalować wiele Linuksów w krótkim czasie?

Systemy Umsdos istnieją w świecie DOS. Możesz to wykorzystać, jeśli chcesz łatwo zainstalować Linuksa.

Możesz zainstalować i skonfigurować Umsdos na swojej stronie internetowej. Kiedy będziesz zadowolony z wyników konfiguracji i pakietów, które wybrałeś, możesz załadować DOSa i skopiować cały katalog linux do swojego dosowego serwera plików. Można następnie uruchomić inną stację z DOSem i po prostu skopiować pliki z sieciowego systemu plików na dysk lokalny. I to wszystko. Trzeba tylko dostosować skrypt ładujący (loadlinx) i gotowe.

Przy minimalnej zmianie ustawień (nazwa hosta, numer IP) każdy będzie mógł zainstalować Linuksa w kilka chwil.

Dla zainteresowanych: instalacja systemów linuksowych poprzez kopiowanie włączonych systemów działa również dla innych Linuksów, w tym tych opartych na Ext2.

Piękne w Linuksie jest to, że nie ma tam żadnych ukrytych plików, które trzeba instalować przy pomocy magicznych programów instalacyjnych.

7. Ustawianie sekcji Linux na partycji DOS

Umsdos nadaje się nawet dla użytkowników Ext2 (rodzinny system plików Linuksa). Często ma miejsce taka sytuacja:

Tu właśnie może pomóc Umsdos. Możesz stworzyć katalog Linux na partycji DOS i bez ograniczeń korzystać z niego spod Linuksa. Dla przykładu, chcesz utworzyć nowy katalog o nazwie "extra" na swoim dysku C:. Chcesz też, aby działał on podobnie, jak normalny katalog linuksowy. Zrób tak (zakładając, że C: to /dev/hda1):

        mkdir /c
        /sbin/mount -t umsdos /dev/hda1 /c
        mkdir /c/extra
        umssync /c/extra
        

Musisz do tego mieć uprawnienia roota.

Jeśli ustawisz /etc/fstab w odpowiedni sposób, zawsze będziesz miał dostęp do katalogu /c/extra.

8. PO CO UMSDOS

Nie wystarczy wyjaśnić, jak zainstalować i posługiwać się systemem Umsdos. Większość ludzi chce się dowiedzieć, czy warto używać Umsdos, czy nie.

8.1 Jaki jest cel instalacji Umsdos

Celem tym było ułatwienie instalacji Linuksa. Innym celem było ułatwienie jego ODinstalowania. Ideą była promocja Linuksa. Instalacja nowego systemu operacyjnego zawsze sprawia kłopoty. Na przykład OS/2 zaśmieci twój główny dysk C: całym mnóstwem nowych katalogów. Jeśli jesteś tak sprytny, jak ja, skasuje on również twoje pliki config.sys i autoexec.bat :-(

Tryb pseudoroot systemu Umsdos pozwala na uniknięcie tej niechcianej ingerencji. Można odinstalować Linuksa bez skutków ubocznych.

8.2 Kto tego potrzebuje

Jeśli masz mały dysk, Umsdos da ci możliwość dzielenia przestrzeni na dysku między DOSem a Linuksem Dysk poniżej 300 MB to według mnie mały dysk. Opieram swoją opinię na rozmiarach dostępnych pakietów. Pewien popularny procesor teksu może zająć 70 MB, jeśli wybierze się wszystkie opcje.

Jeśli masz większy dysk, możesz rozważyć posiadanie wydzielonej partycji linuksowej z systemem plików Ext2. Ext2używa mniejszych klastrów niż DOS (faktycznie jest to 1k), więc kiedy tworzysz wiele małych plików, zajmie to mniej miejsca, niż na partycji Umsdos.

8.3 Wydajność

Poniższe punkty dotyczą porównania Umsdos z Ext2.

9. Od tłumacza

Tłumaczenie to jest chronione prawami autorskimi © Leszka Pietryki. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Nie zmieniłem zasadniczej treści dokumentu. Dodałem tylko odnośniki do stron z polskimi wersjami tłumaczeń dokumentów HOWTO oraz pozmieniałem kilka znaczników w celach estetyki.

Jeśli znajdziesz tu jakieś poważne błędy, literówki itp., wyślij mi, proszę, e-maila, żebym mógł je poprawić.

Nie ponoszę żadnej odpowiedzialności za ewentualne efekty stosowania się do rad zawartych w tym dokumencie.

doc-linux-pl-2002.06.14.orig/html/UUCP-HOWTO.pl.html0100664000175000017500000005733506770264140020332 0ustar covencoven Protokół UUCP na Linux-ie

Protokół UUCP na Linux-ie

Autor: Vince Skahan, vince@halcyon.com
v1.5, 29 Listopada 1995
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.02, 26 Lipca 1997


Dokument ten opisuje ustawienie, opiekowanie się i eksploatację UUCP pod Linux-em. Musisz to przeczytać jeśli masz zamiar podłączyć się przez UUCP przez modem, połączeniem bezpośrednim albo poprzez Internet. Przypuszczalnie nie musisz tego czytać jeśli nie mówisz językiem UUCP. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał można znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO.

1. Wprowadzenie.

Zamiarem tego dokumentu jest odpowiedzenie na kilka pytań oraz komentarzy, które zaliczają się do "często zadawanych pytań" na temat oprogramowania UUCP pod Linux-em ogólnie oraz wersji na Linux-a SLS i Slackware w szczególności.

Dokument ten wraz z odpowiadającym mu Mail i News HOWTO zastępują "UUCP-NEWS-MAIL-FAQ", które było poprzednio wysyłane na grupę comp.os.linux.announce.

1.1 Nowe wersje tego dokumentu.

Nowe wersje tego dokumentu będą okresowo wysyłane na grupę comp.os.linux.announce, comp.answers oraz news.answers. Będą także dodawane do różnych archiwów ftp, które gromadzą takie informacje, a między innymi SUNSite Polska.

Dodatkowo powinieneś móc także znaleźć go na domowej stronie WWW Linux-a pod adresem sunsite.unc.edu.

1.2 Odzew.

Jestem zainteresowany wszelkim odzewem, pozytywnym czy negatywnym, dotyczącym zawartości tego dokumentu. Koniecznie skontaktuj się ze mną jeśli znajdziesz jakieś błędy czy pominięcia.

Czytam wszystkie listy, ale nie koniecznie na wszystkie odpowiadam. Żądania poprawek czy ulepszeń będą rozważane w zależności od kombinacji wolnego czasu, wartości żądania i dziennego ciśnienia krwi :)

Wszelkie "ochrzany" będą kierowane do /dev/null więc się nie wysilaj.

W szczególności standardy ścieżek w systemie plików Linux-a ewaluują. Wszystko co znajduje się w tym dokumencie jest tylko zilustrowaniem opartym na bieżącym standardzie podczas pisania danej części dokumentu oraz na ścieżkach używanych w dystrybucjach albo narzędziach, które ja osobiście widziałem. Skonfrontuj ścieżki z tymi, których używa twoja dystrybucja.

Komentarze dotyczące aktualnego formatu dokumentu powinny być kierowane do koordynatora projektu HOWTO - Grega Hankinsa. gregh@sunsite.unc.edu.

1.3 Informacje o prawach autorskich.

Prawa autorskie należą do Vince'a Skahana.

Kopie mogą być reprodukowane i dystrybuowane w jakiejkolwiek postaci fizycznej lub elektronicznej bez pozwolenia autora. Tłumaczenia są podobnie dozwolone bez wyraźnego pozwolenia jeśli zawierają informację o tym, kto dokonał tłumaczenia.

Krótkie cytaty mogą być używane bez zgody autora. Prace pochodne oraz częściowa dystrybucja UUCP-HOWTO muszą zawierać kopię tego pliku albo wskazanie do kopii.

Dozwolona jest dystrybucja komercyjna a nawet zalecana; jednak autor chciałby być informowany o takowych przedsięwzięciach (jako grzeczność).

Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty.

Nadal chcemy, aby WSZYSTKIE informacje dostarczane w dokumentach HOWTO były rozprowadzane. Jeśli masz pytania, skontaktuj się proszę z Gregiem Hankinsem, koordynatorem projektu Linux HOWTO pod adresem gregh@sunsite.unc.edu.

1.4 Standardowe zrzeczenie (disclaimer).

Oczywiście wyrzekam się jakiejkolwiek odpowiedzialności za zawartość tego dokumentu. Użycie pomysłów, przykładów oraz innej zawartości tego dokumentu jest całkowicie na własne ryzyko.

1.5 Inne źródła informacji.

Dokumenty Linux HOWTO.

Jest mnóstwo dodatkowego materiału informacyjnego dostarczonego w innych dokumentach Linux HOWTO oraz z projektu dokumentacji Linux-a. W szczególności możesz rzucić okiem na:

USENET (newsy)

Grupa dyskusyjna comp.mail.uucp może rozwiązać większość twoich problemów.

Grupy pocztowe.

Jest grupa pocztowa na temat Taylor UUCP.

Aby się tam zapisać (lub wypisać) wyślij list na adres taylor-uucp-request@gnu.ai.mit.edu.

Żądanie przechodzi przez osobę a nie program, tak więc upewnij się, że dołączyłeś adres, pod którym chcesz otrzymywać pocztę.

Aby wysłać wiadomość na listę wyślij ją na adres taylor-uucp@gnu.ai.mit.edu.

Książki.

Wersje HDB i V2 protokołu UUCP są udokumentowane w dokumentacji prawie każdego sprzedawcy tak samo jak w prawie każdej książce poświęconej komunikacji w *nix-ach.

Pliki konfiguracyjne Taylor UUCP są obecnie udokumentowane tylko w plikach informacyjnych dołączonych do źródeł (a także mam nadzieję w dystrybucji SLS). Aby je przeczytać, możesz zainstalować miły program infosrc z dysków serii "s" z dystrybucji SLS oraz skompilować go.

Następujące książki mogą ci pomóc:

1.6 Gdzie *NIE* szukać pomocy.

Nie ma już więcej informacji dotyczących konfiguracji i uruchamiania UUCP na Linux-ie. Prawie na pewno nie chcesz puszczać pytań dotyczących UUCP na listach comp.os.linux.*

O ile twoje pytanie nie jest rzeczywiście specyficzne dla Linux-a (jak np. "powiedzcie proszę jaka obsługa pliku konfiguracyjnego jest wbudowana w binaria Taylor uucp v1.04 w SLS v1.02"), powinieneś zadawać je na grupie comp.mail.uucp jak to było powiedziany wyżej.

Powtórzę jeszcze raz.

Właściwie nie ma powodu, żeby wysyłać jakiekolwiek pytania związane z UUCP do hierarchii comp.os.linux.*. Są grupy w hierarchii comp.mail.*, które zajmują się takimi sprawami.

JEŚLI WYŚLESZ NA GRUPĘ COMP.OS.LINUX.* PYTNIE NIE ZWIĄZANE BEZPOŚREDNIO Z LINUX-EM, TO SZUKASZ POMOCY W ZŁYM MIEJSCU. EKSPERCI OD UUCP SIEDZĄ W MIEJSCACH WYMIENIONYCH POWYŻEJ I Z REGUŁY NIE MAJĄ LINUX-A.

WYSYŁANIE PYTAŃ NIE ZWIĄZANYCH BEZPOŚREDNIO Z LINUX-EM DO HIERARCHII COMP.OS.LINUX.* JEST STRATĄ CZASU TWOJEGO I INNYCH I CZĘSTO OPÓŹNIA TO OTRZYMANIE POPRAWNEJ ODPOWIEDZI NA TWOJE PYTANIE.

2. Wymagania sprzętowe.

Nie ma żadnych specyficznych wymagań sprzętowych dla UUCP pod Linux-em. Właściwie każdy modem kompatybilny z Heyes działa z UUCP.

W większości wypadków będziesz chciał najszybszy modem na jaki cię stać. Ogólnie będziesz musiał mieć na karcie szeregowej układ UART 16550, żeby obsługiwać prędkości większe od 9600 bodów.

Jeśli nie wiesz co oznacza ostatnie zdanie, to odwołaj się do grupy comp.dcom.modems albo różnych dokumentów na temat komunikacji szeregowej okresowo wysyłanych na USENET-cie.

3. Zdobywanie UUCP.

Taylor UUCP (wersja bieżąca to 1.05) jest dostępne jako źródło na prep.ai.mit.edu lub w postaci binarnej w różnych dystrybucjach Linux-a.

W Polsce UUCP jest dostępne na ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/system/mail/transport.

Plik newspak-2.4.tar.z zawiera pliki konfiguracyjne oraz "readme" związane z tworzeniem oprogramowania uucp, news-ów i poczty pod Linux-em z różnych wolno dystrybuowanych źródeł. Zwykle można go znaleźć na ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/system/news/misc. Jeśli go tam nie ma, to skontaktuj się ze mną, a upewnię się, żebyś dostał ten plik.

4. Instalacja oprogramowania.

(Większość z tej sekcji to dosłownie przekopiowana zawartość pliku README ze źródeł Taylor UUCP v1.05)

Szczegóły na temat kompilacji znajdują się w pliku uucp.texi w źródłach.

Pliki conf.h i policy.h dla Linux-a uznane za dobre możesz wziąć ze wspomnianej wyżej w sekcji "Inne źródła informacji" dystrybucji. W tym przypadku, możesz przypuszczalnie przejść od razu do napisania make.

4.1 Rozpakowywanie źródeł.

Aby rozpakować archiwum spakowane gzip-em robię tak:


                gunzip -c <nazwa_pliku>.tar.z | tar xvf -

Nowszy tar posiada specjalną opcję do obsługi spakowanych archiwów:


               tar -zxvf <nazwa_pliku>.tgz

4.2 Wyedytuj Makefile.in, aby ustawić katalogi instalacyjne.

Tutaj ustawiam "prefix" na "/usr" zamiast domyślnej wartości "/usr/local".

4.3 Uruchom "configure".

Napisz:


      sh configure

Skrypt konfiguracyjny skompiluje pewną ilość programów testowych, aby zobaczyć co jest dostępne na twoim systemie i obliczy trochę rzeczy.

Skrypt ten utworzy plik conf.h z pliku conf.h.in oraz Makefile z Makefile.in. Stworzy także config.status, który jest właściwym skryptem tworzącym wspomniane pliki.

4.4 Skonfiguruj późniejsze ustawienia oprogramowania.

Sprawdź conf.h oraz Makefile, aby się upewnić, że są one poprawne.

Ja wziąłem wartości domyślne.

Wyedytuj policy.h dla twojego lokalnego systemu.

4.5 Skompiluj i zainstaluj oprogramowanie.

4.6 Ustaw pliki konfiguracyjne.

Zalecałbym na początek, żebyś wziął dołączone uznane za dobre pliki konfiguracyjne dla typu HDB i je zainstalował.

4.7 No to spróbuj.


        /usr/lib/uucp/uucico -r 1 -x 9 -s nazwa_odległego_systemu

Opcja -x 9 spowoduje zapisanie maksymalnej ilości informacji do pliku /usr/spool/uucp/.Admin/audit.local.

Normalnie uruchamiam z opcją -x 4 ponieważ ten poziom logowania pomaga mi przy problemach z logowaniem się. Oczywiście, zawarte są tam czysto tekstowe informacje z twojego pliku Systems (konto/hasło) tak więc uważaj, żeby nie mógł go każdy czytać.

4.8 Nie działa - i co teraz ?

Ogólnie jeśli coś nie działa, to możesz odwołać się do wspomnianej wyżej dokumentacji. Możesz także poprosić o pomoc bardziej obytych z UUCP sąsiadów. Jednak zwykle jest to coś w rodzaju literówki.

5. Często Zadawane Pytania na temat UUCP pod Linux-em.

5.1 Dlaczego moje binaria są skonfigurowane w trybie HDB, a nie "Taylor" ?

(tryb skrupulatny włączony - wiem, że niektórzy są tak skrupulatni na temat "łatwości używania" jak ja na temat "bycia standardem". Dlatego robią oni źródła, z których możesz stworzyć własny program. :) )

Ponieważ, moim skromnym zdaniem, jest to w tych czasach de-facto standard implementacji UUCP. Są tysiące sieci z doświadczonymi administaratorami i jest wiele miejsc, w których możesz zdobyć naprawdę dobre informacje na temat ustawień HDB.

UUCP-1.04, które znajduje się w SLS 1.02 oraz w późniejszej wersji ma wbudowane wszystkie trzy typy plików konfiguracyjnych. Ponieważ nie mogę tego przetestować, poczytałem trochę i dowiedziałem się od Iana Taylora, że powinno to działać.

Porządek poszukiwania plików konfiguracyjnych, to Taylor potem V2 (L.sys) potem HDB. Użyj narzędzia uuconv z /usr/lib/uucp, aby zamienić format pliku konfiguracyjnego na inny.

Jeśli nie możesz się już doczekać, to weź źródła UUCP i zdefiniuj symbole HAVE_BNU_CONFIG, HAVE_V2_CONFIG oraz HAVE_TAYLOR_CONFIG w pliku policy.h i napisz make.

Następujący kruczek jest dość brzydki, ale działa z binariami, które nie mają wbudowanej obługi plików konfiguracyjnych Taylor, a mają z takich korzystać.

Bieżąca wersja Slackware ma także miłe ustawienie, w którym rozdzielono pliki konfiguracyjne dla różnych konfiguracji do różnych katalogów. Na przykład pliki konfiguracyjne HDB znalazłyby się w /usr/lib/uucp/hdb_config. Chociaż nawykłem do "swoich własnych składanek", już od pewnego czasu udaje mi się odpalać dziewicze UUCP, prosto ze Slackware w trybie HDB bez żadnych problemów.

5.2 Dlaczego mam "timeout" przy połączeniach kiedy uaktulanię do uucp-1.04 ?

5.3 Czemu anonimowe uucp HDB nie działa ?

Anonimowe uucp z SLS działa tylko w trybie "Taylor" ponieważ jest skompilowane z symbolem HAVE_TAYLOR_CONFIG. Jeśli chcesz mieć anonimowe uucp w trybie HDB, będziesz musiał przekompilować źródła ze zdefiniowanym HDB. Ian Taylor zastanawia się w jaki sposób obejść się z tą "zaletą".

Taylor w trybie HDB wydaje się także reagować na "białe znaki" i puste linie. Aby być zupełnie pewnym, sprawdź czy nie ma pustych linii albo spacji na końcach linii w pliku Permissions.

Ostatecznie upewnij się, że masz plik o nazwie remote.unknown w /usr/lib/uucp oraz że NIE nie jest on wykonywalny. Szczegóły dotyczące tego pliku znajdziesz w książce pt. "Managing UUCP and USENET" wydawnictwa O'Reilly&Assoc.

5.4 Co oznacza "no matching ports found" ?

Z całym prawdopodobieństwem, chcesz użyć urządzenia (/usr/lib/uucp/Devices), które nie istnieje, albo urządzenie, które podałeś w pliku /usr/lib/uucp/Systems nie jest identyczne z żadnym z pliku Devices.

W następstwie tego powstały ulepszone wersje moich działających plików konfiguracujnych Taylor 1.05 HDB, które możesz od razu użyć.

zauważyłeś "ACU" w pliku Systems ? Informuje to jakiego portu użyć w Devices.

zauważyłeś słowo "scout" w Systems ? Informuje ono, jakiego urządzenia użyć do dzwonienia w Dialers.

Jeśli miałeś port ACU, ale żadnego, który odpowiadałby urządzeniu do dzwonienia w tej samej linii w Systems, to dostaniesz tę właśnie informację.

5.5 Jakie są uznane za dobre pliki konfiguracyjne dla trybu HDB ?

Następujące pliki konfiguracyjne są uznane za dobre dla Taylor 1.05 pod Linux-a w trybie HoneyDanBer. Działają z jądrami 0.99-8 lub nowszymi. Wszystkie pliki powinny znajdować się w /usr/lib/uucp o ile nie zmieniałeś źródeł, żeby zmienić lokalizację katalogu bibliotecznego.

Jeśli umieściłeś cokolwiek w NIESTANDARDOWYM miejscu, to uważaj bo programy takie jak sendmail mogą się pogubić. Musisz się upewnić, że wszystkie programy związane z komunikacją są zgodne z twoim "standardem" ścieżek.

Jeśli masz jądro 0.99-7 lub wcześniejsze, to zmień "cua1" na "ttyS1".

#------------- Devices -------------
# upewnij się, że urządzenia są zgodne z twoim systemem
# cua1 = COM2 
#
# "scout" tutaj to modem Digicom Scout Plus 19.2, który używam.
# tbfast itd. to różne prędkości dla modemu Telebit Trailblazer Plus.
#
ACU cua1 - 19200 scout
ACU cua1 - 9600 tbfast
ACU cua1 - 1200 tbslow
ACU cua1 - 2400 tbmed

#------------- dialers --------------
# zauważ, że ustawienie Trailblazer-a odbywa się podczas działania
# "scout" to modem Digicom Scout Plus (typu Heyes), którego używam
#
scout   =W-,    "" ATM0DT\T CONNECT
tbfast  =W-,    "" A\pA\pA\pT OK ATS50=255DT\T CONNECT\sFAST
tbslow  =W-,    "" A\pA\pA\pT OK ATS50=2DT\T CONNECT\s1200
tbmed   =W-,    "" A\pA\pA\pT OK ATS50=3DT\T CONNECT\s2400

#-------------- Systems -------------
# to jest bardzo ogólna postać, która będzie działać dla większości systemów
#
# Any;1 oznacza, że możesz dzwonić raz na minutę używając -f (force)
# ACU,g oznacza użyj raczej protokołu "g" aniżeli Taylor-a - domyślne
#  jest "i"
# 
fredsys Any;1 ACU,g 19200 scout5555555 "" \r ogin:--ogin: uanon word: uanon 

#-------------------------------- Permissions -------------------------

# UUCP Taylor w trybie HDB wydaje się reagować na puste linie.
# Upewnij się, każda linia w tym pliku jest zapełniona lub jest komentarzem
#       
# to jest pozycja dla "anonymous" uucp
#
LOGNAME=nuucp MACHINE=OTHER \
READ=/usr/spool/uucp/nuucp \
WRITE=/usr/spool/uucp/nuucp \
SENDFILES=yes REQUEST=yes \
COMMANDS=/bin/rmail
#
# to jest normalne ustawienie dla odległego systemu, który łaczy się z nami
# zauważ, że jest tu bezwzględna ścieżka do rnews, ponieważ ta sieć umieszcza
# różne rzeczy w niestandardowych lokacjach
#
LOGNAME=fredsys MACHINE=fredsys \
READ=/usr/spool/uucp/fredsys:/usr/spool/uucp/uucppublic:/files \
WRITE=/usr/spool/uucp/fredsys:/usr/spool/uucppublic \
SENDFILES=yes REQUEST=yes \
COMMANDS=/bin/rmail:/usr/local/lib/news/bin/rnews
#----------------------------------------------------------------------

5.6 Powodowanie próbowania alternatywnych numerów.

Nowa wersja v1.05 ma dodaną opcję -z do programu uucico, która powoduje próbowanie połączenia się z dodatkowymi numerami.

6. Podziękowania.

Następujący ludzie pomogli przy składaniu informacji, tak aby mógł powstać ten dokument.

Ed Carp, Steve Robbins, Ian Taylor, Greg Naber, Matt Welsh, Pierre Beyssac

Jeśli o kimś zapomniałem, to przepraszam.

6.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to info nt. polskiego tłumaczenia książki "Practical Unix Security". doc-linux-pl-2002.06.14.orig/html/User-Group-HOWTO.pl.html0100664000175000017500000016171607457640740021574 0ustar covencoven O Grupach Użytkowników Linuksa (LUG-ach)

O Grupach Użytkowników Linuksa (LUG-ach)

Autor: Kendall Grant Clark
v.1.6.2, 24 kwietnia 1998
Wersja polska: Tomasz `tsca' Sienicki, tsca@cryogen.com
v1.0, 30 czerwca 1999


Dokument ten służyć ma pomocą w zakładaniu, prowadzeniu i rozbudowywaniu Grup Użytkownków Linuksa (LUG-ów).

1. Wstęp

1.1 Cel tego dokumentu

Dokument ten służyć ma pomocą w zakładaniu, prowadzeniu i rozbudowywaniu Grup Użytkownków Linuksa (zwanych dalej LUG-ami).

Linux jest wolnodostępną wersją Unix-a na komputery osobiste, serwery i stacje robocze. Stworzony został na procesory i386, w tej chwili obsługiwane są również i486, Pentium, Pentium Pro, Pentium II (oraz klony x86 produkowane przez AMD, Cyrix itd), SPARC-e, DEC-Alpha, PowerPC/PowerMac, Motorola 68x0 (Amiga i Mac).

1.2 Inne źródła informacji

Jeśli chcesz dowiedzieć się więcej na temat Linuksa, rozpocznij od Linux Documentation Project.

Ogólne informacje na temat grup użytkowników komputerów znajdziesz w zasobach Stowarzyszenia Grup Użytkowników Komputerów Osobistych (Association of PC Users Groups).

2. Czym jest Grupa Użytkowników Linuksa?

2.1 Czym jest Linux?

Aby w pełni pojąć i docenić ważką rolę odgrywaną w społeczności Linuksa przez LUG-i istotne jest zrozumienie co takiego czyni Linuksa wyjątkowym systemem operacyjnym.

Linux jest potężnym i niezwykle efektywnym OS-em, a rozumiany jako ucieleśnienie idei rozwoju oprogramowania jest jeszcze potężniejszy. Linux, dzięki oparciu o licencję GNU, jest darmowy i ogólnodostępny. Kod źródłowy -- zawsze dostępny dla wszystkich zainteresowanych -- jest rozwijany pod technicznym nadzorem Linusa Torvaldsa i innych głównych koordynatorów przez niepowiązaną w struktury grupę programistów na całym świecie. Linux rozwija się bez centralnego sterowania, biurokracji, ani ciała zajmującego się nadzorem, koordynacją, czy kierunkowaniem działań. Sytuacja taka stanowi lwią część uroku tego systemu, zapewnia mu techniczną jakość, ale jest również przyczyną nieefektywnego wykorzystania zasobów ludzkich (również na polu nauczania nowych użytkowników) oraz nieskutecznej - lub wręcz szkodliwej - promocji (a co za tym idzie tworzenia niewłaściwego wizerunku systemu).

2.2 Co to znaczy, że Linux jest wyjątkowy?

Na szczęście nic nie zapowiada zmiany luźnej struktury projektu. Linux istnieje, ponieważ ludzie mogą przyłączać się do projektu i odchodzić - i zależy to tylko od nich. Wolny programista jest szczęśliwym programistą jest efektywnym programistą.

Jednak owa luźna struktura może nieco skomplikować życie przeciętnego użytkownika, szczególnie jeśli nie jest on programistą z zawodu lub powołania. Dokąd zwrócić się o pomoc? Gdzie szukać kursów? Gdzie dowiedzieć się, do jakich celów Linux nadaje się najlepiej?

Odpowiedziami na wiele z tych pytań powinny służyć LUG-i biorąc na siebie zadania wypełniane normalnie przez lokalne biura koropracji, w przypadku Linuksa naturalnie nieistniejące. Dlatego właśnie lokalne grupy użytkowników są tak ważne.

Linux jest wyjątkowy, ponieważ zadania takie jak planowanie wykorzystania zasobów, nauczanie użytkowników, czy udzielanie wszelkiego rodzaju pomocy nie są odgórnie ani centralnie sterowane przez żadną ociężałą strukturę biurokratyczną. Zadania te, wykonywane przez wiele podmiotów (Internet, konsultantów, handlowców, szkoły i uniwersytety), coraz częściej przejmowane są przez lokalne LUG-i.

2.3 Czym jest Grupa Użytkowników?

Grupy Użytkowników Komputerów nie są niczym nowym, przynajmniej w Stanach Zjednoczonych. W istocie odegrały one istotną rolę w historii komputeryzacji. Powstanie komputera osobistego było w dużej mierze odpowiedzią na zapotrzebowanie grup zrzeszających pasjonatów elektroniki, radia HAM, oraz innych hobbystów i uczestników różnego rodzaju prezentacji i spotkań handlowych na prosty dostęp do niedrogiego sprzętu liczącego, gromadzącego i przetwarzającego dane. Naturalnie po pewnym czasie giganty takie jak IBM odkryły, że PC może być źródłem dochodu, ale impet swojego rozwoju zawdzięcza komputer osobisty głównie zwykłym użytkownikom, ich pracy i potrzebom.

Charakter tych grup zmienił się z czasem, często na gorsze. Szeroko opisywane były finansowe kłopoty największej kiedykolwiek istniejącej grupy Boston Computer Society, a i w innych grupach w całych Stanach Zjednoczonych zmniejszyła się ilość członków. W okresie rozkwitu amerykańskie grupy użytkowników koncentrowały się na wydawaniu broszur informacyjnych, utrzymywaniu dyskietkowych bibliotek oprogramowania shareware, organizowaniu spotkań (także towarzyskich), a czasem nawet BBS-ów. Jednak z rozpowszechnieniem się Internetu wiele aspektów działalności tych grup przejętych zostało przez CompuServe, AOL i, ogólnie, sieć.

Powstanie Linuksa zbiegło się (a nawet zostało przyspieszone przez) z ogólnym ,,odkryciem'' Internetu. Wraz z rozwojem popularności Internetu wzrastała popularność Linuksa. Internet przysporzył społeczności Linuksa nowych użytkowników, programistów i handlowców.

W momencie więc, gdy ilość tradycyjnych grup użytkowników komputerów osobistych zmniejszała się z powodu popularności Internetu, ta właśnie popularność popchnęła Linuksa do przodu i stworzyła zapotrzebowanie na grupy temu konkretnie systemowi poświęcone.

Prostym przykładem pokazującym odmienność LUG-ów od tradycyjnych grup użytkowników jest podejście do sprawy kopiowania i wymiany programów podczas spotkań członków. Tradycyjne grupy zmuszone były do ścisłej kontroli rodzaju owego oprogramowania. Nielegalne kopiowanie komercyjnych programów, chociaż naturalnie miało podczas owych spotkań miejsce, było oficjalnie zabronione. W przypadku spotkań LUG-owskich problem ten po prostu nie występuje. Nie tylko nie należy zabraniać kopiowania Linuksa, przeciwnie -- darmowe rozpowszechnianie go powinno być jednym z głównych zadań LUG-ów! Wiadomo skąd inąd, że grupy tradycyjne mają problemy z zaakceptowaniem faktu, że Linuksa można legalnie kopiować do woli :-).

2.4 Podsumowanie

Rozbudowa istniejących i powstawanie nowych LUG-ów jest jednym z koniecznych warunków dalszego rozwoju Linuksa. Z powodu wyjątkowego statusu tego systemu LUG-i przejmować muszą część funkcji wypełnianych normalnie przez regionalne przedstawicielstwa takich korporacji jak IBM, Microsoft, czy Sun. LUG-i mogą i muszą oferować użytkownikom oraz konsultantom wiedzę i pomoc, promować Linuksa jako rozwiązanie tam, gdzie istnieje zapotrzebowanie na pracę komputerów, oraz być źródłem wszelkiego rodzaju informacji dla lokalnych mediów, takich jak gazety, czy telewizja.

3. Istniejące Grupy Użytkowników Linuksa

Ponieważ ten dokument jest pomocą nie tylko w prowadzeniu, ale również i w zakładaniu lokalnych LUG-ów, omówmy sposoby sprawdzania, czy i gdzie takie grupy już istnieją.

3.1 Listy LUG-ów

W sieci dostępny jest szereg takich spisów. Jeśli planujesz założenie lokalnej grupy, sprawdź po pierwsze gdzie znajduje się najbliższy istniejący LUG. Lepiej dołączyć do istniejącej już w pobliżu grupy niż zakładać nową.

Według danych z połowy roku 1997, LUG-i istnieją we wszystkich pięćdziesięciu stanach USA, w Kolumbii, i w 26 innych krajach (włączając w to Indie, Rosję, oraz większą część Zachodniej i Wschodniej Europy.)

Na marginesie:

Największym niezdobytym jeszcze komputerowo rynkiem na naszej planecie są Chiny, w których, jak się wydaje, nie istnieje ani jeden LUG. Indie, drugi pod względem zaludnienia kraj na świecie, ma ich zaledwie kilka.

Pierwsza z w/w list skupia się głównie na LUG-ach amerykańskich, natomiast lista druga oferuje spis bardziej międzynarodowy.

3.2 Jedność kontra wygoda

Znajdujące się w sieci listy są raczej aktualne, istnieje jednak możliwość, że nie wszystkie LUG-i znajdują się w spisie. Dlatego oprócz przejrzenia owych list warto wysłać ogłoszenie o planach założenia nowej grupy na grupy dyskusyjne comp.os.linux.announce, comp.os.linux.misc, oraz na grupy w hierarchii lokalnej. Ogłoszenia takie, jeśli w pobliżu nie ma LUG-a, posłużą za informację dla potencjalych członków nowej grupy.

Założenie lokalnej grupy wymaga czasem dokonania wyboru między wygodą a jednością. Jeśli na przykład w dużej aglomeracji istnieje już LUG, ale na drugim końcu miasta, można zastanowić się nad założeniem nowej grupy -- po prostu dla wygody. Z drugiej jednak strony może lepiej wziąć pod uwagę korzyści płynące ze współpracy i, aby nie rozbijać pewnych całości na kawałki, dołączyć do grupy już istniejącej. Większa ilość członków oznacza większe możliwości, wpływy i efektywność! Owszem, ,,fajnie'' jest mieć ,,swojego'' LUG-a, jednak grupa dwustuosobowa jest lepsza niż dwie stuosobowe. Oczywiście w przpadku małych miasteczek czy wsi lepiej założyć grupę małą, niż nie zakładać jej wcale.

Podsumowując, założenie LUG-a jest trudnym przedsięwzięciem, wymagającym rozważenia wielu problemów -- włącznie z efektem, jaki powstanie nowej grupy może mieć na istniejące już LUG-i.

4. Czym zajmują się LUG-i?

Cele lokalnych LUG-ów są różne, podobnie jak różne są regiony, w których grupy te działają. Nie istnieje żaden ,,plan przewodni'' dla LUG-ów (również ten dokument takiego planu nie poda), ponieważ Linux (a więc i grupy jego użytkowników) wolny jest od biurokracji i centralnego sterowania.

Można jednak sprecyzować kilka najważniejszych celów działalności LUG-ów:

Każdy z lokalnych LUG-ów powienien łączyć te cele w indywidualny sposób zaspokajając różne przecież potrzeby swoich członków.

4.1 Promowanie Linuksa

Promowanie Linuksa jest dla jego użytkownika potrzebą tak naturalną jak odżywianie się czy sen. Zwykłą reakcją na odkrycie czegoś działającego, i to działającego dobrze, jest chęć podzielenia się odkryciem z jak największą ilością osób. Nie sposób nie docenić roli LUG-ów w promowaniu Linuksa, szczególnie w sytuacji gdy jego -- zasłużona przecież -- odpowiednio wysoka pozycja w świecie producentów oprogramowania komercyjnego i sprzętu nie została jeszcze osiągnięta. Oczywiście każda pozytywna wzmianka o Linuksie w prasie działa na jego korzyść, jednak równie istotne są opinie użytkowników tego systemu przekazywane osobiście znajomym, szefom, czy pracownikom.

Rozpowszechnianie wiedzy o Linuksie możne przynieść pozytywne efekty, może również jednak społeczności linuksowej zaszkodzić. Jako członkowie tej społeczności musimy starać się promować Linuksa w sposób przynoszący korzyści zarówno jemu, jak i jego autorom, programistom i użytkownikom. Linux-Advocacy mini-HOWTO dostępne (również po polsku) w ramach Linux Documentation Project zawiera na ten temat kilka rozsądnych rad. Podsumowując: promowanie Linuksa jest ważną częścią misji lokalnego LUG-a.

Być może nadejdzie dzień, w którym promowanie Linuksa zacznie mijać się z celem, gdyż system ten osiągnie zasłużoną sobie pozycję i możliwość używania go zostanie powszechnie zakceptowana. Dopóki to jednak nie nastąpi, w promocji tej LUG-i odgrywają niezastąpioną rolę. Odgrywają ją dobrze, gdyż ich działalność promocyjna jest darmowa, służy dobrej sprawie, i poparta jest szczerym zapałem. Osoba dowiadująca się o istnieniu Linuksa dzięki działaniom lokalnego LUG-a jest jako nowy użytkownik na korzystnej pozycji wyjściowej: wie o istnienu organizacji gotowej pomóc mu/jej w instalacji, konfiguracji i nawet konkretnej pracy z Linuksem na dowolnych koputerach, które do tego przeznaczy.

Nowi użytkownicy będący w kontakcie z lokalnym LUG-iem mają poważną przewagę nad ludźmi, który dowiedzieli się o Linuksie z gazet, ale nie znają nikogo, kto mógłby im pomóc w instalacji, konfiguracji i nauce tego systemu.

Dlatego tak istotne jest propagowanie Linuksa właśnie przez LUG-i, których działalność jest efektywna i dobrowolna.

4.2 Nauczanie Linuksa

Propagowanie Linuksa nie jest jedynym celem lokalnych LUG-ów. Grupy te mogą również skupić się na praktycznym i teoretycznym nauczaniu Linuksa oraz oferowaniu pomocy we wszelaki sposób związanej z komputerami społeczności lokalnej. Według mojej oceny to właśnie nauczanie jest najważniejszym z celów, na którym może skoncentrować się lokalny LUG. Oczywiście, jak już powiedziałem, LUG-i same decydują o swojej organizacji i priorytetach. Wierzę jednak, że nauczanie praktyki i teorii Linuksa przynosi społeczności Linuksa najwięcej korzyści.

Lokalne LUG-i mogą skupić się na edukowaniu swoich członków chociażby dlatego, że nie istnieje żadna inna lokalna organizacja czy instytucja taką naukę oferująca. Prawdą jest, że coraz więcej uniwersytetów i wszelkiego rodzaju szkół zaczyna, dzięki efektywności i niskim kosztom tej metody, używać Linuksa w procesie nauczania o Unixowych systemach operacyjnych. Niestety, część użytkowników nie może lub z różnych powodów nie chce zapoznawać się z Linuxem chodząc na kursy. Dla takich właśnie użytkowników istnienie LUG-ów jest cenną pomocą w procesie zdobywania i poszerzania bardziej zaawansowanych umiejętności: administracji systemów Unixowych, programowania, tworzenia i obsługi technologii Inter- i intranetowych, itd.

Mało oczywistym jest fakt, że lokalne LUG-i często pośrednio ułatwiają dużym korporacjom organizację i przeprowadzanie szkoleń pracowników. Każdy z pracowników korporacji X poszerzający swoją wiedzę i nabierający dzięki uczestnictwu w życiu lokalnego LUG-a nowych umiejętności zmniejsza o jeden ilość pracowników, dla których X musi zorganizować (lub zapłacić za) odpowiednie kursy. Nawet jeśli używanie i administrowanie domowym Linuksem nie może równać się zarządzaniu korporacyjnym systemem komputerowym, centrum telekomunikacyjnym, czy podobnie zaawansowanym zadaniom, jest to o niebo bardziej skomplikowane, kształcące i ciekawsze wyzwanie niż praca z Windows 95. Ponieważ Linux zaczyna wspierać system plików z kroniką (JFS), operacje wykonywane w czasie rzeczywistym, podwyższoną niezawodność i dostępność (High Availability) i inne cechy znane z zaawansowanych Uniksów, już teraz trudna do określenia różnica międzi Linuksem a ,,prawdziwymi'' Uniksami staje się coraz mniejsza.

Takie nauczanie jest nie tylko formą szkolenia pracowników. Technologie informatyczne stają się coraz istotniejsze w globalnej ekonomii, nauczanie więc o nich jest też służbą społeczeństwu. W większości amerykańskich aglomeracji lokalne LUG-i wprowadzać mogą Linuksa do szkół, małych firm, socjalnych i społecznych organizacji oraz innych niekorporacyjnych środowisk. Jest to aktywna promocja Linuksa -- jako, że wiele z wyżej wymienionych podmiotów planuje prędzej czy później zaznaczyć swoją obecność w Internecie lub umożliwić doń dostęp swoim uczniom/studentom/pracownikom, LUG-i mają tu wymarzoną wręcz okazję do rozpowszechniania wiedzy o darmowym i wolnodostępnym systemie operacyjnym. Ten rodzaj społecznej działalności umożliwia przeciętnemu użytkownikowi Linuksa wykazanie ,,dobroczynności'' od samego początku charakteryzującej Linuksa i całą społeczność oprogramowania wolnodostępnego. Większość użytkowników nie ma umiejętności programistycznych Linusa Torvaldsa, wszyscy jednak możemy poświęcić trochę naszego czasu i umiejętności innym użytkownikom Linuksa, jego społeczności, i -- szerzej -- społeczności w której pracujemy i żyjemy.

Linux w naturalny sposób wpasowuje się w profil w/w organizacji, ponieważ stosowanie go nie wymaga wyokich licencyjnych, aktualizacyjnych, ani bieżących opłat. Linux jest również niezwykle elegncki i oszczędny -- swobodnie działa na wszelkiego rodzaju ,,przestarzałym'' sprzęcie, który korporacje zazwyczaj wyrzucają na śmietnik, a który organizacje nie nastawione na zysk z radością mogą wykorzystać. Coraz więcej osób odkrywa, że kurzący się w szafie stary 486 może wykonywać realną pracę, jeśli tylko zainstaluje się na nim Linuksa.

Nauczanie Linuksa ma pozytywny wpływ na pozostałe cele LUG-a, szczególnie na omówione poniżej zadanie udzielania pomocy. Lepsza znajomość Linuksa oznacza więcej możliwości udzielania wsparcia. Im więcej osób, na które LUG może liczyć w udzielaniu wsparcia technicznego, tym łatwiejsze owo udzielanie, a co za tym idzie -- łatwiej dostępna pomoc. Im więcej nowych niedoświadczonych użytkowników uzyska pomoc i wiedzę z LUG-a, tym większa i efektywniejsza staje się grupa. Innymi słowy, jeśli LUG skoncentruje się głównie na pomocy zapominając o szkoleniu, wzrosną naturalne bariery rozwoju grupy. Jeśli tylko dwa lub trzy procent członków weźmie na siebie zadanie udzielania wsparcia innym, rozwój grupy zostanie zahamowany. Jedno jest pewne: nowy i niedoświadczony użytkownik nie zostanie na długo członkiem LUG-a jeśli nie uzyska od niego spodziewanej pomocy. Jeśli większy procent członków LUG-a zajmie się pomocą mniej zaawansowanym osobom, grupa powiększy się o wiele bardziej. Nauczanie o Linuksie jest kluczem do jego dynamicznego rozwoju: przekształca ono nowych użytkowników w użytkowników doświadczonych.

Darmowość nauczania o Linuksie podkreśla fakt, iż Linux jest częścią społeczności oprogramowania wolnodostępnego. Wydaje się więc stosowne koncentrowanie się nie tylko na rozpowszechnianiu wiedzy o Linuksie, ale również o wszelkich systemach, oprogramowaniu i technologiach pod nim działających. Należą do nich narzędzia i programy na licencji GNU, serwer WWW Apache, XFree86 -- darmowa wersja systemu X-Window, TeX, LaTeX, itd. Szczęśliwie lista darmowego oprogramowania pod Linuksa jest bardzo długa i różnorodna.

Zaznaczyć należy, że Linux jest systemem samo-dokumentującym się. Innymi słowy: jeśli sami nie stworzymy dokumentacji, nikt tego za nas nie zrobi. Dlatego upewnić się należy, że wszyscy użytkownicy Linuksa znają zasoby Linux Documentation Project, dostępne również w licznych kopiach. Zastanów się, czy masz możliwość stworzenia na swoim serwerze kopii LDP dla lokalnej społeczności Linuksa i członków LUG-a. Pamiętaj również o ogłaszaniu i publikacji (na przykład przez comp.os.linux.announce, wyżej wspomniany adres, czy inne powszechnie dostępne źródła informacji o Linuksie) wszelkiego rodzaju dokumentacji stworzonej przez LUG: prezentacji technicznych, podręczników, zbiorów FAQ (odpowiedzi na najczęściej zadawane pytania), itd. Istnieje bowiem duża ilość stworzonych przez LUG-i wartościowych materiałów, z których światowa społeczność użytkowników nie może skorzystać po prostu dlatego, że materiały owe nie opuściły wcale macierzystego LUG-a. Nie marnujmy w ten sposób swojej pracy i osiągnięć; jest bardzo prawdopodobnie, że ludzie z innych grup borykają się z problemem, który my już rozwiązaliśmy i opisaliśmy.

4.3 Pomoc

Dla zdesperowanego nowicjusza najważniejszą rolą lokalnego LUG-a jest naturalnie pomoc. Błędem byłoby jednak założenie, że ,,pomoc'' oznacza tu tylko wspomaganie nowicjuszy. ,,Pomoc'' może, i powinna, oznaczać znacznie więcej.

Lokalne LUG-i mogą oferować swoją szeroko rozumianą pomoc

Użytkownicy

Nowi użytkownicy świeżo po instalacji pierwszego Linuksa najczęściej żalą się na stromą krzywą nauki, nie tyle zresztą typową dla Linuksa, ile generalnie współczesnych Uniksów. Krzywa ta jednak uzasadniona jest potęgą, możliwościami i elastycznością tego systemu operacyjnego. LUG jest często jedynym źródłem pomocy w pokonywaniu i łagodzeniu tej krzywej.

Jednak nawet jeśli świeżo upieczony użytkownik Linuksa jeszcze tego nie wie, potrzebuje on czegoś więcej niż tylko wsparcia technicznego. Linux i świat oprogramowania wolnodostępnego są gwałtownie rozwijającymi się rynkami; lokalne LUG-i mogą być bezcennym źródłem informacji na te tematy. Prawdą jest, że rozwojem Linuksa nie steruje centralna struktura. Oznacza to jednak, że nie posiada on żadnego rodzaju stałego zaplecza prasowego, tak pomocnego użytkownikom innych systemów. Owszem, istnieją zasoby takie, jak Linux Journal, czy Linux Gazette. Niestety, wielu nowych użytkowników nie ma pojęcia o ich istnieniu. Na domiar złego są to miesięczniki, informacje o łatach, problemach z bezpieczeństwem, poprawkach, nowych jądrach, itp są więc często po prostu przedawnione. Informacjami aktualnymi -- równie istotnymi dla nowych, jak i doświadczonych użytkowników -- powinny więc służyć lokalne LUG-i.

Na przykład dopóki nowy użytkownik Linuksa nie dowie się, że najnowsze wersje jądra znajdują się pod adresem ftp.kernel.org, lub, że na serwerze Linux Documentation Project zazwyczaj znadują się nowsze niż na CD wersje dokumentów HOWTO, LUG posłużyć musi jako główne źródło informacji i pomocy, poinformować zainteresowanych o owych zasobach i ułatwić im korzystanie z nich.

Jednak skupianie się LUG-ów wyłącznie na pomocy udzielanej nowym użytkownikom jest lekkim nieporozumieniem. Również bowiem średnio i mocno zaawansowani użytkownicy skorzystają z dostępu do bogatego źródła informacji o użytecznych sztuczkach i sekretach Linuksa. Jest to system tak rozbudowany, że nawet osoby o dużej wiedzy często poznać mogą nowe techniki i sposoby jego wykorzystania. Po przyłączeniu się do grupy nawet one mogą dowiedzieć się o istnieniu ciekawych pakietów, czy też przypomnieć sobie zapomnianą od czasów studiów karkołomną sekwencję poleceń vi.

Konsultanci

Truizmem jest stwierdzenie, że LUG-i powinny być źródłem pomocy dla nowych użytkowników, któż bowiem inny może im ową pomocą służyć? Mniejszą jednak oczywistością jest fakt, że LUG-i mogą odgrywać istotną rolę we wspieraniu osób pracujących jako konsultanci (tj. oferujących instalację i administrację Linuksa, itd). Niezależnie od tego, czy pracują oni na pół etatu, czy na pełny etat, mogą być istotną częścią lokalnego LUG-a. Jaką pomoc może im LUG oferować?

Odpowiedź na powyższe pytanie jest jednocześnie odpowiedzią na pytanie następujące: czego chcą i czego potrzebują konsultanci? Potrzebują rynku: zapotrzebowania na konsultacje. Lokalny LUG pośredniczyć może między osobami oferującymi konsultacje a podmiotami tych konsultacji potrzebującymi. LUG może nieformalnie sprzyjać tworzeniu takich kontaktów poprzez gromadzenie w jednym miejscu wszystkich (lub ilu się tylko da) osób w regionie zainteresowanych Linuksem i inicjowanie dialogu. Konkretne sposoby omówimy poniżej, w tym miejscu wspominamy tylko kolejne zadanie, którym LUG-i mogą i powinny się zajmować. Linux-Consultants-HOWTO (zawierające także polskie kontakty -- przyp. tłum.) jest tu niezwykle pomocnym dokumentem, oczywistym jest jednak, że wymieniona jest w nim jedynie część pracujących na cały lub pół etatu konsultatów.

Związek ten jest obopólnie korzystny. Konsultanci wzbogacają LUG-i o swoje doświadczenie, zarówno organizacyjne, jak i merytoryczne, natomiast LUG-i ułatwiają konsultantom kontakt z klientami potrzebującymi ich usług. Nowi i niedoświadczeni użytkownicy zyskują na kontaktach z LUG-iem, który udzieli darmowej pomocy w typowych i prostych przypadkach, a w bardziej skomplikowanych, w oczywisty sposób wymagających zatrudnienia konsultanta, sytuacjach ułatwi z takim specjalistą kontakt.

Granica między zapotrzebowaniem na pomoc, której może udzielić konsultant, a pomoc, którą może zapewnić LUG, choć bywa niewyraźna, w większości przypadków jest oczywista. Naturalnie niepożądana jest sytuacja, w której LUG zyskuje złą opinię z powodu wmuszania potrzebującym konsultantów -- takie zachowanie byłoby po prostu nieuprzejme i źle świadczące o użytkownikach Linuksa -- nie ma jednak nic złego w ułatwianiu kontaktów między podmiotami potrzebującymi pomocy profesjonalnej i osobami takiej pomocy udzielającymi.

Międzynarodowa lista konsultantów znajduje się w napisanym przez Martina Michlmayr-a Linux Consultants HOWTO.

Firmy, szkoły i organizacje typu non-profit

LUG-i mogą również służyć pomocą lokalnym firmom i organizacjom. Pomoc taka przejawiać się może dwojako. Po pierwsze, LUG-i mogą wspierać organizacje chcące w swojej działalności korzystać z Linuksa. Pod drugie, LUG oferować może pomoc lokalnym firmom i organizacjom tworzącym oprogramowanie/sprzęt pod Linuksa, instalującym, lub w inny sposób wspieracjącym ten system.

Rodzaj pomocy oferowanej firmom chcącym używać Linuksa nie różni się w istocie wiele od wsparcia udzielanego osobom korzystającym z Linuksa w domu. Na przykład kompilowanie jądra nie przebiega w inny sposób w domu i w firmie. Współpraca z firmami może oznaczać jednak konieczność zaangażowania się również w prace nad oprogramowaniem komercyjnym. Jeśli Linux nadal rozwijał się będzie w dotychczasowym tempie pewne jest zainteresowanie się twórców oprogramowania możliwością przeniesienia lub napisania swoich programów pod ten -- interesujący już komercyjnie -- system. Jeśli LUG-i będą w stanie odnieść sukces w przekonaniu przedsiębiorstw do komercjalnego wykorzystania Linuksa, zainteresowanych firm będzie coraz więcej.

Powyższe wiąże się bezpośrednio z kolejnym związkiem LUG-ów z lokalnymi firmami. LUG-i mogą i powinny dostarczać w zasadzie nigdzie indziej niedostępnych informacji takich jak:

Gromadzenie i upublicznianie tych informacji nie tylko jest pomocne członkom LUG-ów, korzystają na tym również wspomniane firmy. Dzięki stworzeniu wokół nich przyjaznej atmosfery powstać może sytuacja, w której inne przedsiębiortwa, nie chcąc pozostać w tyle, zainteresują się Linuksem.

Rozwój wolnodostępnego oprogramowania

LUG-i mogą również wspierać rozwój idei Linuksa poprzez inicjowanie i organizowanie sponsoringu. Poniżej zapoznać się możesz z opinią Chrisa Browne na ten temat.

Chris Browne o finansowym wsparciu idei oprogramowania wolnodostępnego

Głębsze zaangażowanie przejawiać się może w zachęcaniu do finansowego wspierania rozmaitych związanych z Linuksem organizacji. Całkiem rozsądnym wydaje się pomysł finansowego wspierania idei przez użytkowników Linuksa. Według znajdującego się pod adresem spisu użytkowników tych są miliony, a całkiem rozsądna cena ,,wdzięczności'' -- sto dolarów od osoby (kwota równa zresztą sumie pieniędzy wydanych w tym roku na aktualizację systemu Microsoftu) mogłaby złożyć się na miliony dolarów przeznaczone na rozwój i ulepszanie narzędzi oraz aplikacji linuksowych.

LUG zachęcać może swoich członków do finansowego wsparcia rozmaitych projektow związanych z rozwojem oprogramowania. Jeśli istnieje możliwość odpisania sobie takiej darowizny od podatku, zachęcać można członków do kierowania pieniędzy prosto do kasy grupy, skąd przekazane one będą dalej odpowiednim organizacjom.

Jest w każdym razie na miejscu zachęcanie członków LUG-a do składania bezpośrednich darowizn na rzecz organizacji pracujących nad projektami, które chcą oni popierać.

W bieżącym rozdziale podam konkretne propozycje organizacji, nad których wsparciem warto się zastanowić. Żadna z nich nie jest tu wyraźnie i wprost polecana, jest to lista, która ma sprowokować do zastanowienia się. Wiele z nich jest w Stanach Zjednoczonych zarejestrowanych jako organizacje dobroczynne, datki na ich rzecz można więc odliczyć sobie od podatku.

Oto lista organizacji bezpośrednio zaanngażowanych w prace nad oprogramowaniem dla Linuksa:

Datkowanie tych organizacji jest w istocie bezpośrednim wspieraniem procesu tworzenia wolnodostępnego oprogramowania pracującego pod Linuksem. Ziarnko do ziarnka, a zebrana miarka będzie z pewnościa miała większy wpływ na rozwój Linuksa niż jakakolwiek inna forma wsparcia.

Istnieją też organizacje w mniej bezpośredni sposób związane z Linuksem, również jednak warte chwili zastanowienia. Są to:

Społeczność Linuksa

W dokumencie tym używam wyrażenia społeczność Linuksa. Nie istnieje chyba lepsze określenie na międzynarodowe zjawisko, jakim jest rozwój Linuksa i jego użytkownicy. Jest to ruch zorganizowany bez biurokracji, nie jest to korporacja, a liczą się z nim korporacje na całym świecie. Najlepszym sposobem wspierania Linuksa jako międzynarodowego zjawiska jest utrzymywanie tej społeczności silnej, aktywnej i rosnącej. Linux jest rozwijany międzynarodowo -- wystarczy zajrzeć do pliku /usr/src/linux/MAINTAINERS, by się o tym przekonać. Linux jest również _używany_ na całym świecie. Ta stale rosnąca rzesza użytkowników jest kluczem do sukcesu tego systemu. I tu również LUG-i odgrywają istotną rolę.

Międzynarodowa siła przebicia Linuksa spowodowana jest przede wszystkim jego nieznaną dotychczas za swoją cenę i przy swojej dostępności mocą obliczeniową i wyrafinowaniem. Kluczem jest tu wartość systemu i jego niezależność od nadzoru własnościowego. Każda nowa osoba, grupa, czy organizacja mająca okazję zapoznać się z rzeczywistymi możliwościami tego systemu oznacza wzmocnienie i rozwój społeczności Linuksa. Lokalne LUG-i mogą zwiększać ilość takich osób.

4.4 Linux socjalizuje

Ostatnim z omawianych przeze mnie celów istnienia Grup Użytkowników Linuksa jest cel towarzyski. W pewnym sensie jest to punkt najtrudniejszy do opisania, nie wiadomo bowiem do jakiego stopnia i ile LUG-ów uważa go za istotny. Dziwna byłaby grupa nie zainteresowana realizacją pozostałych celów, bez trudu jednak można wyobrazić sobie LUG-a nie przywiązującego zbytniej wagi do towarzyskich aspektów swojego istnienia.

W każdym razie jakoś tak się składa, że zawsze kiedy spotyka się dwóch czy trzech ,,linuksiarzy'' zaczyna się robić wesoło, i często kończy się to wysyłaniem kogoś po piwo. Sam Linus Torvalds określa jeden z celów istnienia Linuksa jako ,,dla zabawy''. Dla hakerów, programistów, czy zwykłych użytkowników nie ma nic ciekawszego niż ściąganie nowej wersji jądra, ponowna kompilacja starego, obgadywanie nowego windows managera, czy tworzenie kodu. To właśnie tak rozumiana zabawa konsoliduje grupę i prowadzi w naturalny sposób do zawierania przyjaźni.

Przez słowo ,,socjalizacja'' rozumiemy głównie dzielenie doświadczeń, zawieranie znajomości, wzajemne uznanie i szacunek. Istnieje jednak również naukowe znaczenie tego słowa. Jak wyjaśniają specjaliści, w każdym ruchu, instytucji, czy społeczności ludzkiej istnieje tendencja do przemiany newbies w hakerów (jeśli użyjemy terminów z naszego podwórka). Innymi słowy, socjalizacja oznacza przemianę z ,,jednego z nich'' w ,,jednego z nas''.

Proces ten znamy na przykład z wojska lub szkoły, gdzie ,,koty'' stają się pełnoprawnymi członkami grupy. Sytuacja w społeczności Linuksa jest analogiczna -- nowi użytkownicy muszą nauczyć się, co oznacza ,,używać Linuksa'', czego oczekuje się od nich, jako członków międzynarodowej społeczności. ,,Nowi'' muszą poznać specjalne słownictwo, wymagania i szanse dawane przez przynależność do grupy. Może to być taki drobiazg, jak poprawna wymowa słowa ,,Linux'', mogą to być równie dobrze sposoby korzystnego promowania Linuksa, i -- co nawet ważniejsze -- sposoby, których nie należy stosować.

Proces socjalizacji poprzez Linuksa, w odróżnieniu od tego z ,,prawdziwego świata'' może też przebiegać przez listy i grupy dyskusyjne. Skuteczność jednak takiego procesu ciągle podważają przykłady mało towarzyskich użytkowników. Wydaje się, że najlepiej poznawać ludzi z krwi i kości, a przyjaźnie zawierać z żywymi osobami, a nie bezcielesnymi szeregami literek na newsach.

5. Działanie lokalnych LUG-ów

W rozdziale poprzednim skupiłem się wyłącznie na omawianiu tego, czym powinny się LUG-i zajmować. Teraz przejdźmy do praktycznych sposobów osiągnięcia wymienionych wyżej celów.

Działalność LUG-a przejawia się na dwa podstawowe sposoby: po pierwsze, ludzie spotykają się, po drugie, komunikują się w sieci. Jedno przeplata się z drugim, generalnie jednak życie LUG-a to spotkania i zasoby sieciowe.

5.1 Spotkania

Jak już wspomniałem spotkania są istotą LUG-ów, jak zresztą i innych grup użytkowników. LUG może organizować następujące rodzaje spotkań:

Czym zajmują się LUG-i podczas owych spotkań?

5.2 Zasoby w sieci

Komercyjny rozwój Internetu chronologicznie pokrywa się mniej więcej z powstaniem Linuksa i ma w jego powstaniu i późniejszym rozwoju swój pokaźny udział. Nie inaczej jest w przypadku LUG-ów. Większość z nich ma swoją stronę lub strony w Internecie. W zasadzie przeszukanie sieci jest chyba jedynym sposobem zlokalizowania najbliższego LUG-a.

Świat komercyjny odkrywa, że użycie Internetu jest skuteczną formą reklamy, informowania, nauczania, a nawet sprzedaży. I LUG-i powinny więc używać wszelkich dostępnych im technologii internetowych: WWW, list i grup dyskusyjnych, FTP, e-maila, WAIS-a i fingera. Drugim powodem do szerokiego wykorzystywania usług Internetu jest fakt, że istotą Linuksa jest zapewnienie stabilnej i bogatej w możliwości platformy, na której owe usługi można uruchamiać. Ogłoszenie istnienia i organizacja działań danego LUG-a nie jest więc jedyną korzyścią z pojawienie się w Internecie. Wykorzystanie tych technologii daje bowiem członkom grupy okazję do nauki uruchamiania tego typu usług internetowych na Linuksie i obserwacji systemu w działaniu.

Oto kilka przykładowych LUG-ów efektywnie wykorzystujących Internet:

Poinformuj mnie, jeśli Twój LUG wykorzystuje Internet w interesujący sposób, dołączę wtedy adres waszych stron do powyższego spisu.

6. Praktyczne wskazówki

Na zakończenie podam kilka bardzo praktycznych, wręcz przyziemnych porad dla chcących założyć, prowadzić, lub rozbudować LUG.

6.1 Organizacje udzielające wsparcia Linuksowi

Istnieje szereg organizacji udzielających wsparcia Linuksowi:

GLUE

Groups of Linux Users Everywhere jest zainicjowanym przez SSC (ludzi wydających Linux Journal) programem koordynującym i wspierającym LUG-i. Program GLUE jest niezbyt kosztownym sposobem poszerzenia zasobów Twojego LUG-a.

Linux Systems Labs

LSL bardzo tanio oferuje LUG-om do dalszej dystrybucji swój Tri-Linux Disk set (trzy dystrybucje Linuksa na czterech kompaktach -- Red Hat, Slackware, Debian).

Linux Mall User Group Program

Sponsorowany przez WorkGroup Solutions Linux Mall User Group Program oferuje należącym doń LUG-om szereg korzyści. LUG-i mogą również uczestniczyć w Linux Mall's Referral Program.

Cleveland Linux User's Group

jest właścicielem domeny internetowej lug.net. Dadzą Twojemu LUG-ow domenę w lug.net: miasto-LUG-a.lug.net. Więcej informacji na ten temat znajdziesz pod adresem LUG.NET, lub pocztą elektroniczną: Jeff Garvas.

Red Hat Software's User Group Program

Wspomaga rowój LUG-ów. Więcej informacji pod adresem Red Hat Web site

6.2 Zakładanie LUG-a

6.3 Prowadzenie i rozwijanie LUG-a

7. Zagadnienia prawne i polityczne

7.1 Zagadnienia prawne

Stany Zjednoczone

Wiele wskazuje na to, że powinieneś zastanowić się nad formalną rejestracją swojego LUG-a. Nie będę przytaczał tu argumentów, jeśli jednak planujesz nadanie LUG-owi osobowości prawnej, rozdział ten wprowadzi Cię w część zagadnienia.

Uwaga: nie traktuj treści tego rozdziału jako profesjonalnych porad prawnych. Omawiane tu problemy wymagają fachowej opinii, dlatego też przed podjęciem jakiegokolwiek działania powinieneś skonsultować się z prawnikiem.

Zgodnie z prawem Stanów Zjednoczonych status zlokalizowanych na ich terenie LUG-ów może przybrać jedną z co najmniej dwóch form:

  1. organizacji typu non-profit (nie przynoszącej zysku)
  2. organizacji zwolnionej z obowiązku płacenia podatków

Chociaż wymienione rodzaje statusu prawnego niekoniecznie oznaczają to samo we wszystkich stanach, prawo większości stanów zezwala na rejestrowanie LUG-ów jako organizacji typu non-profit. Zyskami płynącymi z takiej rejestracji mogą być m. in. ograniczenie odpowiedzialności członków i współpracowników grupy, a także zmniejszenie podatków lub nawet zwolnienie z koniecznosci ich płacenia.

Przed zarejestrowaniem LUG-a jako organizacji non-profit powinieneś oczywiście zasięgnąć kompetentnej porady prawnej. Z pewnością zaoszczędzisz na kosztach owej porady, jeśli przed zasięgnięciem jej zapoznasz się z zagadnieniem; polecam tu publikację Non-Lawyers Non-Profit Corporation Kit (ISBN 0-937434-35-3).

Drugi z wymienionych rodzajów statusu, zwolnienie od podatku, jest tak naprawdę nie tyle statusem prawnym, ile decyzją IRS (amerykańskiego Biura Podatkowego). Pamiętaj, że zarejestrowanie organizacji jako nie przynoszącej zysków nie oznacza automatycznie zwolnienia od podatków! Niektóre organizacje typu non-profit muszą płacić podatki.

IRS wydał względnie prosty dokument omawiający kryteria i sam proces zwalniania od podatku. Jest to Publication 557: Tax-Exempt Status for Your Organization (,,Zwolnienie Twojej organizacji od podatku''). Dokument ten, w formacie Adobe Acrobat, dostępny jest na stronie IRS. Zdecydowanie polecam zapoznanie się z jego treścią przed wypełnieniem wniosku o rejestrację LUG-a jako organizacji typu non-profit. Zarejestrowanie grupy jako organizacji typu non-profit nie zapewnia automatycznie zwolnienia jej przez IRS od podatku, a niektóre rodzaje rejestracji mogą wręcz uniemożliwić takie zwolnienie. Wspomniany wyżej dokument (Tax-Exempt Status for Your Organization) jasno omawia warunki konieczne do uzyskania przez Twoją organizację zwolnienia od podatków.

W sieci znajduje się trochę wiadomości na temat organizacji typu non-profit i zwalniania od podatku. Część z nich zapewne ma zastowosowanie w przypadku lokalnych LUG-ów.

Kanada

Podziękowania dla Chrisa Browne za następujące komentarze na temat sytuacji w Kanadzie:

Kanadyjski system podatkowy bardzo przypomina system amerykański w tym, że status organizacji ,,dobroczynnej'' oznacza dla dawców większe ulgi podatkowe niż status non-profit; podobnie otrzymanie i utrzymanie statusu organizacji dobroczynnej wymaga dodatkowej roboty papierkowej przy stałych kontaktach z władzami podatkowymi.

7.2 Zagadnienia politczne

Chris Browne w następujący sposób komentuje zagadnienia polityczne mogące budzić emocje w grupie:

Wątpliwości na temat idei wolnodostępnego oprogramowania.

Użytkownicy Linuksa są różni. Gdy kilku z nich zbierze się w jednym miejscu, mogą rozgorzeć pewne dyskusje. Politycznie radykalni użytkownicy wierzą, że każdy rodzaj oprogramowania powinien ,,zawsze'' być darmowy. Caldera życzy sobie całkiem sporej sumy za swoją dystrybucję i nie przekazuje wszystkich zysków do (tu wstaw swoją ulubioną organizację promocyjną) -- dlatego sądzą oni, że Caldera to ,,zło''. Podobnie Red Hat i S.u.S.E. Pamiętać jednak warto, że wszystkie trzy organizacje mocno już zasłużyły się, i nadal aktywnie działają na rzecz idei wolnodostępnego oprogramowania.

Inni zastanawiać się mogą nad sposobami na dogłębne wykorzystanie darmowości Linuksa dla zabawy lub zysków. Na przykład wielu użytkowników systemów BSD uważa, że ich licencje, pozwalające na tworzenie własnych wersji ich OS-ów są lepsze niż ,,zmuszająca do darmowości'' licencja GPL, z której korzysta Linux. Nie zakładaj automatycznie, że osoby wyrażające takie opinie muszą być chciwcami.

Kiedy osoby o takich poglądach spotkają się, łatwo o nieporozumienia. W podobnych sytuacjach osoba przewodząca grupie powinna zwrócić uwagę, że:

Takie różnice zdań nie ograniczają się zresztą tylko do tego konkretnego problemu, toczenie przeróżnych ,,świętych wojen'' komputerowych nie jest bowiem niczym nowym. Dziś jest to opozycja Linux -- inne systemy Unixowe, czy systemy operacyjne Microsoftu, IBM PC -- komputery oparte na Motoroli 68000, KDE -- GNOME. Kiedyś walczyli ze sobą zwolennicy różych typów ośmiobitowców.

Osoba przewodząca LUG-owi powinna starać się łagodzić takie postawy i w żadnym wypadku nie dolewać oliwy do ognia; dlatego przywódcy grupy powinny być silnymi osobowościami.

Przy tak wielu sprzecznych poglądach nieporozumień nie da się uniknąć. Osoby przewodzące grupie muszą umieć radzić sobie z podobnymi sytuacjami i łagodzić konflikty, a nie je zaogniać.

Organizacje typu non-profit i problem pieniędzy

Zajmowanie się finansami organizacji typu non-profit zawsze wymaga dużej ostrożności.

W przypadku podmiotów, których celem jest zarabianie pieniędzy, ,,niepowodzenia'' takie jak np. niewłaściwe zużytkowanie niewielkiej sumy nie spędzają zazwyczaj ludziom snu z powiek. Sytuacja w organizacjach nie nastawionych na zysk jest odmienna. Część osób jest w nie zaangażowana dla idei i w ich oczach każdy niewielki problem może urosnąć do nieadekwatnie dużych rozmiarów. Możliwość powszechnego uczestnictwa w naradach finansowych dodatkowo zwiększa niebezpieczeństwo skupienia nadmiernej uwagi na sprawach ekonomicznych.

Płynie z tego wniosek, że najlepiej chyba zrezygnować w ogóle ze składek członkowskich, członkowie LUG-u bowiem, co zrozumiałe, będą chcieli wiedzieć, czy zebrane pieniądze są rozsądnie wydawane. A pieniędzy, które nie istnieją, zmarnować nie można.

Jeśli jednak grupa dysponuje dużymi środkami pieniężnymi lub innymi, osoby odpowiedzialne za gospodarowanie nimi powinny w każdej chwili móc się z nich rozliczyć przed członkami grupy.

Nad sprawami finansowymi aktywnej, rozwijającej się grupy pieczę powinna sprawować więcej niż jedna osoba. Niezdrowa jest sytuacja, w której zajmujący się finansami kurczowo trzyma się stanowiska, i nie chce oddać kontroli nad ekonomią. W sytuacji idealnej wszystkie oficjalne stanowiska we władzach LUG-u, włączając w to skarbnika, podlegają rotacji.

Wszyscy zainteresowani powinni mieć możliwość regularnego zapoznawania się ze zrozumiale napisanymi raportami finansowymi. LUG-i, które ze względów podatkowych utrzymują oficjalny status ,,organizacji dobroczynnych'', co najmniej raz do roku muszą przedstawić takie raporty lokalnym urzędom podatkowym. Raporty te służyć również mogą zainteresowanym finansami grupy członkom.

W wraz z rozwojem działającego pod Linuksem oprogramowania do księgowości tworzenie regularnych raportów finansowych staje się coraz łatwiejsze, a ekspansja Internetu umożliwia nawet ich publikację na WWW.

8. O tym dokumencie

8.1 Warunki stosowania

Prawa autorskie:
Copyright (c) 1997 by Kendall Grant Clark.

Zezwala się na rozpowszechnianie niniejszego dokumentu na warunkach określonych w licencji LDP, dostępnej pod adresem http://sunsite.unc.edu/LDP/COPYRIGHT.html.

8.2 Nowe wersje

Nowe wersje JTZ o Grupach Użytkowników Linuksa będą od czasu do czasu umieszczanie na odpowiednich serwerach WWW i FTP, przede wszystkim na mojej stronie oraz stronie Linux Documentation Project.

8.3 Pomóż w tworzeniu tego dokumentu!

Z radością powitam pytania i komentarze dotyczące ninejszego dokumentu. Proszę przysyłać je (w jęz. angielskim) pod adresem kclark@cmpu.net. Szczególnie interesują mnie opinie osób prowadzących LUG-i na całym świecie. Chciałbym móc przytoczyć z życia wzięte przykłady realizacji opisanych tu zagadnień. Chciałbym również dołączyć rozdział na temat LUG-ów spoza Stanów Zjednoczonych, w tej chwili bowiem dokument ten skupia się głównie na problemach grup amerykańskich. Proszę również o informację, jeśli Twoja grupa zajmuje się nie wspomnianą tu działalnością.

8.4 Historia dokumentu

Wersja

8.5 Podziękowania

Chciałbym tu podziękować wszystkim wspaniałym ludziom, których poznałem i z którymi pracowałem podczas zajmowania stanowiska Przewodniczącego Grupy Użytkowników Linuksa w Półn. Teksasie. Dzięki nim całkowicie przeniosłem się na Linuksa. Najlepszą rzeczą w Linuksie są ludzie, których się dzięki mu poznaje!

Specjalne podziękowania kieruję do Chrisa Browne za opis sytuacji kanadyjskich ogranizacji dobroczynnych i non-profit, wypowiedź o finansowych datkach jako sposobie wspierania rozwoju Linuksa i oprogramowania wolnodostęnego, oraz refleksji n/t zagadnień politycznych mogących być przedmiotem dyskusji w LUG-ach.

Następującym osobom dziękuję za komentarze i sugestie:

9. Od tłumacza

Copyright for the translation (c) 1999 by Tomasz 'tsca' Sienicki (tsca@edb.dk)

Strona WWW Polskiej Grupy Użytkowników Linuksa: PLUG

Tłumaczenia innych dokumentów HOWTO: JTZ doc-linux-pl-2002.06.14.orig/html/Wacom-Tablet-HOWTO.pl.html0100664000175000017500000010064407073204340022016 0ustar covencoven Wacom Tablet HOWTO

Wacom Tablet HOWTO

Autor: Stefan Runkel runkel@runkeledv.de
v1.0.4, listopad 1999
Wersja polska: Marek Guevara Braun marek@atm.com.pl
v1.0, 2 kwietnia 2000


Instalacja graficznych tabletów (nie tylko) Wacoma pod Linuksem i/lub XFree86.

1. Prawa autorskie

Prawa autorskie należą do Stefana Runkela (c) 1999 Runkel@runkeledv.de

Dokument ten opisuje proces instalacji tabletów Wacoma pod systemem Linux.
Nieskrępowane używanie, rozpowszechnianie oraz reprodukowanie tego dokumentu jest możliwe pod następującymi warunkami:

2. Wprowadzenie

Tablety graficzne są obecnie niezbyt drogie i mogą być bardzo pomocne przy obróbce obrazów. Obok tego czego możemy dokonać przy użyciu myszy tablety cechuje dodatkowa funkcjonalność:

Dokument ten opisuje głównie produkty firmy Wacom. Powodem tego jest fakt posiadania przeze mnie trzech różnych urządzeń tego producenta oraz to, że są one bardzo popularne w Europie.

Niemniej jednak, sądzę że zaadaptowanie nakreślonej koncepcji do innych produktów nie powinno być rzeczą trudną.

Powodem napisania tego dokumentu było to, iż nigdzie w Sieci nie mogłem znaleźć niczego podobnego. Zamiast tego miałem bardzo dużo dokumentów opisujących temat tylko częściowo. Po ich przeczytaniu, wciąż pozostawały (i nadal pozostają) otwarte pytania, na które nie znałem odpowiedzi. Zmusiło mnie to do zadawania pytań wielu różnym ludziom.

Po tym wszystkim co zostało zrobione, nadal jestem przekonany, że dokument ten był tego wart.

2.1 Nowe wersje dokumentu

Oryginał tego dokumentu znajduje się pod adresem: http://www.runkeledv.de/linux.htm

2.2 Uwagi i Poprawki

Mile widziane są wszelkie komentarze, poprawki oraz uzupełnienia. Skontaktować się można ze mną pod adresem:

Runkel@runkeledv.de

2.3 Podziękowania

Chciałbym podziękować wszystkim autorom wymienionym w sekcji Dalsze informacje/wykorzystane dokumenty oraz wszystkim osobom, które odpowiedziały na moje pytania pocztą elektroniczną. Ten dokument jest odzwierciedleniem ich pracy.

3. Wymagania

Ten rozdział mówi co jest potrzebne aby tablet zaczął działać

3.1 Jaki sprzęt jest obsługiwany

Na początek powinieneś zdobyć tablet. Ponieważ obsługa USB pod Linuksem jest wciąż w fazie rozwoju, a ADB najprawdopodobniej długo już nie pociągnie, powinien to być model wyposażony w port szeregowy (RS232)

Obsługiwane są następujące tablety Wacoma:

Pomimo, iż starsze tablety Wacoma z serii SD oraz HD nie są standardowo obsługiwane przez sterowniki XFree86, istnieje zmodyfikowany sterownik obsługujący zarówno te, jak i inne urządzenia (np. produkty OEM ze zintegrowanymi wyświetlaczami, takie jak IBM Thinkpad 360 PE oraz Toshiba T200). Wspomniany sterownik znajduje się pod adresem: http://hwr.nici.kun.nl/pen-computing/pen-computing-formats.html

3.2 Jakiego oprogramowania potrzebujemy

3.3 Jakie oprogramowanie jest obsługiwane

Wiele programów bazuje na bibliotece gtk. Gtk posiada obsługę specyfikacji XInput dzięki czemu łatwo jest z niej skorzystać.


Wsparcie dla XInput zawieraja poniższe aplikacje:

4. Tablety jako zamiennik myszy dla konsoli Linuksa

4.1 Tablety i gpm

Demon gpm obsługuje całkiem sporą liczbę urządzeń wejściowych, w tym tablety. Jeżeli chciałbyś otrzymać listę obsługiwanych przez Twoją wersję gpm urządzeń wykonaj następujące polecenie:

gpm -t help

Pomimo tego, że nie znalazłem nic na ten temat w dokumentacji, wydaje mi się że zawarty w gpm-ie sterownik do Wacoma został napisany dla bardzo starych modeli UltraPad. Testowałem go z modelami PenPartner, Graphire oraz Intuos ale nie działał. Dopisałem obsługę Graphire dla gpm, aby jej użyć potrzebna jest przynajmniej wersja 1.18.1 programu gpm.

Jeżeli posiadasz starego ArtPada, spróbuj wykonać: killall gpm ; gpm -t wacom -m /dev/ttyS0 powinno zadziałać.
Jeśli używasz modelu Graphire, polecenie powinno wyglądać następująco: killall gpm ; gpm -t graphire -m /dev/ttyS0

Oczywiście, uzyskasz dostęp wyłącznie do funkcji ruchu i klawiszy, nacisk i pochylenie nie będą obsługiwane, gdyż tak naprawdę nie są to zbyt przydatne funkcje w aplikacjach tekstowych.

Jeżeli równocześnie korzystasz z gpm i XFree86 to możesz, choć nie musisz, popaść w kłopoty w związku z tym, że w tym samym czasie urządzenie zwykle może być używane tylko przez jeden program. Istnieją dwa rozwiązania tego problemu:

5. Tablety w XFree

5.1 Wymagana wersja XFree

Minimalną wersją XFree powinna być 3.3.3.1. Jest to związane z rozszerzoną obsługą XInput, działaniem drugiego przełącznika oraz zlikwidowaniem efektu blokowania myszy.

Jeżeli musisz korzystać z wersji wcześniejszej, obsługa XInput powinna być dostępna od 3.1.2.d.

Obsługa XInput w XFree jest zwykle konfigurowana w pliku XF86Config. W większości wypadków plik XF86Config umieszczony jest w katalogu /etc lub /etc/x11. Pokażę teraz bardzo krótką sekcję konfiguracyną i wyjaśnię co może być zmienione i dlaczego jest to potrzebne.

5.2 Przykładowy wycinek XF86Config (prosty)

Section "Module"
# sterownik urządzenia Wacom
Load "xf86Wacom.so"
EndSection

Section "Xinput"
# ustawienia dla rysika Wacoma 
  SubSection "WacomStylus"    # typ urządzenia wejściowego
    DeviceName "Pen1"         # nazwa, wybierz dowolną
    Port "/dev/ttyS0"         # port szeregowy
    Baudrate 9600             # użyteczne tylko dla Intuosa
    Mode Absolute             # mapuj obszar tableta na ekran
    AlwaysCore                # patrz opis
    HistorySize 200           # rozmiar bufora dla ruchu
  EndSubSection
EndSection

5.3 Sekcja modułu

Obsługa XInput w XFree jest osiągana przez użycie modułów. Moduł sterownika urządzenia dla Wacoma nosi nazwę xf86Wacom.so. Jego wywołanie umieszczamy w sekcji "Module" pliku XF86Config tylko jeden raz.

5.4 Rodzaje urządzeń

Urządzeniem fizycznym może być:

PenPartner oraz Graphire rozpoznaja typ urządzenia ale nie potrafią ich rozróżnić. Dla przykładu, nie możesz użyć dwóch różnych rysików, skonfigurowanych powiedzmy, jeden na czerwono, drugi na niebiesko - wszystko co te urządzenia rozpoznają to: "Znalazłem czubek rysika na mojej powierzchni", lub "Znalazłem gumkę na mojej powierzchni", lub "znalazłem myszkę na mojej powierzchni".

XInput przypisuje urządzeniom ich rodzaj, które z kolei zostaną później opisane w pliku XF86Config w podsekcjach sekcji Xinput:

5.5 Nazwa urządzenia

Każdemu skonfigurowanemu urządzeniu musisz nadać unikalną nazwę. Nazwa ta będzie później używana w Twoim programie do komunikacji z tym urządzeniem. Wybór nazwy zależy od ciebie.

5.6 Port

XInput chce wiedzieć do którego portu szeregowego podłączone jest nasze urządzenie. Pozwala mi to na używanie dwóch różnych tabletów w tym samym czasie, na przykład Graphire podłączonego do /dev/ttyS0 i PenPartnera podłączonego do /dev/ttyS01.

5.7 Poziom DebugLevel

Dzięki ustawieniu poziomu DebugLevel możemy kontrolować poziom "gadatliwości" sterownika Wacoma do logów. Poziomy mogą przybierać wartości od 0 do 10. Jeżeli pominiemy to ustawienie przyjęta zostanie wartość domyślna DebugLevel równa 0, co odpowiada bardzo skąpemu logowaniu.

Przykład:

SubSection "WacomStylus" # rysik
  DeviceName "PenRed"    # nazwa, wybież dowolną
  ...
  DebugLevel 10          # generuj bardzo dużo komunikatów
  ...
EndSubSection

5.8 Numer seryjny (tylko dla tabletów Intuos)

Tablety Intuos są bardziej wydajne niż PenPartner i Graphire ponieważ potrafią rozróżnić wiele urządzeń tego samego rodzaju. Znaczy to tyle, że możemy już używać dwa rysiki, jeden skonfigurowany jako czerwony, drugi skonfigurowany jako niebieski. Jak widać rozróżnianie wyłącznie rodzajów urządzeń nie daje wystarczającej informacji do obsługi różnych rysików. Dlatego, każde urządzenie Intuosa, niech będzie to rysik, piórko, mysz lub cokolwiek, posiada numer seryjny, który możesz wyspecyfikować by umożliwić rozpoznanie konkretnego urządzenia przez XInput. Wygląda to następująco:

Section "Xinput"
  SubSection "WacomStylus" # rysik
    DeviceName "PenRed"    # nazwa, wybierz dowolną
    ...
    Serial 2609917443      # numer seryjny tego urządzenia
    ...
  EndSubSection
  SubSection "WacomStylus" # inny rysik
    DeviceName "PenBlue"   # nazwa, wybierz dowolną
    ...
    Serial 2609918664      # numer seryjny tego urządzenia
    ...
  EndSubSection
EndSection

Chciałbym zaznaczyć że złożone urządzenia wejściowe posiadają tylko jeden mumer seryjny. Sterownik używa otrzymany numer seryjny do rozpoznania specyficznego rysika, natomiast czubek rysika od gumki jest rozpoznawany na podstawie rodzaju urządzenia.

Jak uzykać numer seryjny danego urządzenia

  1. Ustaw DebugLevel na 6
  2. Uruchom serwer X wypisując polecenie X 2>t
  3. Dotknij powierzchni tableta po kolei wszystkimi urządzeniami, zapamiętując kolejnosć.
  4. Usuń proces serwera X (zwykle Ctrl+Alt+Backspace)
  5. Uruchom grep serial_num t

Powinieneś otrzymać listę z różniącymi się numerami.

Numer seryjny - przykład tego co zostało zalogowane

BEGIN xf86WcmProc dev=0x8354d60 priv=0x833e3f0 type=stylus flags=9 what=1
xf86WcmProc pWcm=0x8354d60 what=ON
END xf86WcmProc Success what=1 dev=0x8354d60 priv=0x833e3f0
device_id=0x96 serial_num=2595227137 type=cursor
[cursor] abs prox=false x=0 y=0 z=0 button=false buttons=0

5.9 Tryby pracy bezwzględny (absolute) i względny (relative)

Jeżeli ustawisz tablet do pracy w trybie bezwzględnym, cała powierzchnia urządzenia będzie odpowiadała ekranowi komputera. Za każdym razem gdy opuścisz rysik na ten sam punkt tableta wskaźnik pojawi się w odpowiadającym mu tym samym punkcie ekranu.

Jeżeli ustawisz urządzenie do pracy w trybie względnym, uzyskasz dobrze Ci znane zachowanie myszy. Jeśli podniesiesz myszkę z powierzchni, przesuniesz ją i ponownie opuścisz, wskaźnik (idealnie) nie poruszy się.

Przykład:
Mode Absolute

5.10 Tryby pracy urządzeń Extension, Core oraz AlwaysCore

XFree zna dwa rodzaje wskaźników: pierwszy, posiadający tylko podstawową funkcjonalność (klawisze, możliwość ruchu), wykorzystywany jest do wybierania pozycji menu, zaznaczania tekstu, naciskania guzików i tym podobnych rzeczy. Jest to urządzenie podstawowe Core.

Drugi rodzaj wskaźnika wykorzystują aplikacje potrzebujące dodatkowych informacji, takich jak poziom nacisku czy nachylenia.
Urządzenie to nazywamy rozszerzonym - Extension.

Począwszy od wersji 3.3.3.1, ustawienie AlwaysCore mówi sterownikowi by powinien osługiwać obydwa rodzaje zdarzeń.

Jeżeli w pliku XF86Config nie zostanie wyspecyfikowane ustawienie AlwaysCore, wskaźnik zostanie zainicjowany w trybie rozszerzonym - będzie można z niego skorzystać wewnątrz aplikacji, ale już nie do kontroli pozycji menu systemu zarządzania oknem.

Jeżeli pozycja AlwaysCore została wpisana, urządzenie (obok myszy) będzie działać jako wskaźnik podstawowy wysyłając dodatkowo informacje na temat nachylenia i nacisku do wszystkich programów, które uzyskały dostęp do wskaźnika w trybie rozszerzonym.

Dzięki użyciu dwóch różnych urządzeń logicznych możemy tak skonfigurować jedno fizycznie urządzenie, by pracowało zarówno w trybie podstawowym jak i rozszerzonym.
Aby tego dokonać musimy stworzyć dwie identyczne sekcje różniące się jedynie ustawieniem nazwy urządzenia DeviceName. Następnie musimy dodać wpis AlwaysCore od ostatniej z tych sekcji.

Przykład:
AlwaysCore

5.11 Parametr HistorySize

Ustawienie HistorySize określa rozmiar bufora używanego do przechowywania informacji o zdarzeniach ruchu.

5.12 Parametr Suppress

Ustawienie to określa liczbę jednostek, o które urządzenie musi być przesunięte zanim sterownik poruszy wskaźnikiem. Jest ono zwykle niezbędne przy użyciu wysokich rozdzielczości.

Przykład:
Suppress 6

5.13 Parametr TiltMode (tylko Intuos)

TiltMode umożliwia wysyłanie informacji na temat pochylenia dla urządzeń wejściowych tableta Intuos. Jeżeli pominiemy ten parametr, przesyłana zostanie jedynie informacja o nacisku.

5.14 Ustawienia TopX, TopY, BottomX, BottomY

Te cztery parametry pozwalają na zredukowanie aktywnego obszaru tableta. Dla przykładu, mój Intuos A4 oversize jest tak wielki, że nie da się na nim normalnie malować, gdyż ruchy rysika muszą być zbyt duże. Używam tych parametrów aby tak poinstruować sterownik by przypisał do ekranu tylko lewą dolną ćwiartkę tableta.

Przykład:

TopX        0 # współrzędne lewego górnego punktu
TopY     5000
BottomX  5000 # współrzędne prawego dolnego punktu
BottomY 10000

Określanie maksymalnych wartości X, Y, aktualnej konfiguracji oraz rozdzielczości

Jeśli używasz powyższych ustawień, najprawdopodobniej będziesz chciał obliczyć rozmiar oraz położenie definiowanego prostokąta. Zwykle potrzebne są do tego maksymalne współrzędne oraz rozdzielczość. Aby poznać te wartości uruchom swój serwer: X 2>t. Następnie usuń proces serwera X (zwykle Ctrl+Alt+Backspace) i wykonaj grep "X=" t. W odpowiedzi powinieneś otrzymać wartości które Cię interesowały.

Określanie rozdzielczości - przykład tego co zostało zalogowane

(--) Wacom IV tablet maximum X=5103 maximum Y=3711 X 
     resolution=1000 Y resolution=1000 suppress=6
(--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711
(--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711
(--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711

5.15 Ustawienie KeepShape

Opcja ta korzysta ze zmiennych TopX i TopY (lub wbudowanych wartości domyślnych, jeśli je pomineliśmy) do ustawienia parametrów BottomX i BottomY tak aby

Jakiekolwiek wcześniejsze ustawienia BottomX i BottomY są ignorowane, gdyż wartości tych zmiennych zostaną obliczone.

6. Zmiany konfiguracji pod działającymi X-ami

6.1 Konfigurowanie Gimpa w celu wykorzystania urządzeń XInput

Począwszy od wersji 1.1.x Gimp posiada wbudowaną obsługę XInput.

Aplikacja musi jednak wiedzieć, którego urządzenia powinna użyć i w jakim trybie. Aby to ustawić powinieneś otworzyć okno dialogowe Plik/Okna dalogowe/Urządzenia wejściowe (w wersji angielskiej File/Dialogs/Input Devices). U góry okna znajdziesz dwie rozwijane listy z etykietami Urządzenie (Device) oraz Tryb (Mode). Z pierwszej wybierz urządzenie z drugiej tryb obsługi.

Tryby te to:

Jeżeli widzimy, że znaszym urządzeniem związane są dwa kursory, mamy dwa rozwiązania:

Poniżej obydwu rozwijanych list znajdują się pola kontrolne z zakładkami Osie (Axes) oraz Klawisze (Keys). Osie przypisują osiom funkcje. W większości przypadków nie potrzeba zmieniać tych ustawień, ale możesz zastanowić się nad ekranem dotykowym, który został zamontowany w pozycji obróconej o 90 stopni. W tym przypadku moglibyśmy chcieć zamienić ze sobą osie x i y.

Niektóre tablety posiadają umieszczone u góry specjalne klawisze makropoleceń (makro), kórym mogą być przypisane często używane funkcje. Zakładka Klawisze pozwala na przypisanie do klawisza makro pwnego znaku. Na przykład do klawisza makro można przypisać kombinację Ctrl+Shift+R. Jeżeli zostanie on naciśnięty, wywołana zostanie funkcja włączenia/wyłączenia linijki.
Obecne sterowniki do tabletów Wacoma obsługują klawisze makro jedynie w UltraPadach, pola klawiszy w tabletach Intuos nie są wykorzystane w ten sposob.

Powinniśmy teraz omówić jak możemy korzystać z naszych urządzeń. Otwórz okno dialogowe Plik/Okna dialogowe/Stan urządzenia (File/Dialogs/Device Status). Otwórz dowolny plik z rysunkiem.

Każde urządzenie wejściowe w gimpie jest konfigurowane osobno.

Jeżeli będziesz poruszał kursorem w oknie rysunku przy użyciu różnych urządzeń zauważysz zmianę urządzeń w oknie dialogowym Stan urządzenia. Jeśli wybierzesz dowolne narzędzie, pędzel, wzór lub kolor zmiana także zostanie uwzględniona. Aby wybrane ustawienia zostały odtworzone przy następnej sesji gimpa można je tam zapisać.

6.2 Urządzenie przełącznika (SWITCH)

Jest to, cały czas aktywne, urządzenie specjalne. Generuje ono zdarzenia za każdym razem gdy nowe urządzenie przejmuje wskaźnik w trybie podstawowym. Posiada ono pseudo "oś". "Wartość" na tej osi jest identyfikatorem urządzenia będącego wskaźnikiem podstawowym. Nie mam pojęcia co użytkownik mógłby zrobić z urządzeniem przełącznika - głównie jest ono przydatne dla programistów.

6.3 Przyciski

Przyciski, w które są wyposażone urządzenia wejściowe mogą być tak zróżnocowane jak same urządzenia:
Rysik posiada przynajmniej czubek, ale może też mieć jeden lub dwa przyciski na boku oraz gumke na drugim końcu. Myszy mogą mieć do 32 klawiszy (choć zwykle mają ich 3). Przyciski ponumerowane są od 1 do liczby klawiszy. Opisane poniżej dwa programy pozwalają na modyfikacje liczby wykorzystywanych klawiszy.

6.4 Przyporządkowywanie przycisków przy użyciu xmodmap dla urządzeń pracujących w trybie podstawowym

xmodmap będzie modyfikował jedynie wskaźnik podstawowy (Core Pointer). Jako że w danym momencie istnieje tylko jeden wskaźnik podstawowy, nie mają znaczenia różnice pomiędzy fizycznymi urządzeniami, które mogą stać się takim wskaźnikiem. Na jakiś czas zapomnijmy o całym tym XInput i pomyślmy o osobie leworęcznej, która chciałaby zamienić znaczenie prawego i lewego przycisku myszy. Aby poznać stan aktualny można wykonać polecenie xmodmap -pp. W odpowiedzi powinniśmy otrzymać następującą tabelę:

Physical        Button
Button          Code
1              1      # ( lewy     przycisk )
2              2      # ( prawy    przycisk )
3              3      # ( środkowy przycisk )

Aby zamienić klawisze należy wykonać polecenie xmodmap -e "pointer = 2 1 3", oraz xmodmap -e "pointer = default" aby przywrócić poprzednie przypisanie. Powinno to działać dla dowolnych urządzeń posiadających przynajmniej dwa przyciski. Należy zaznaczyć, że wyrażenie "pointer = x x x" musi być zawarte w cudzysłowach by zapobiec jego modyfikacji ze strony powłoki.

6.5 Przyporządkowywanie przycisków przy użyciu xinput dla urządzeń pracujących w trybie rozszerzonym

Wróćmy ponownie do XInput. Jeśli używasz gimpa, możesz chcieć zmienić przyporządkowanie klawiszy dla każdego urządzenia osobno (możesz być zadowolony z myszy, ale chciałbyś zamienić znaczenia dwóch bocznych przycisków rysika). Frederic Lepied napisał w tym celu program o nazwie xinput.

Aby zamienić boczne przyciski powinieneś wykonać polecenie xinput list w celu uzyskania listy urządzeń wraz z ich aktualnymi ustawieniami. Zamiana realizowana jest przez wykonanie xinput set-button-map Pen1 1 3 2 gdzie Pen1 jest urządzeniem, które chcemy zmienić.

Począwszy od XFree 3.3.2 rozwiązanie to działa dla urządzeń skonfigurowanych (w pliku XF86Config) jako AlwaysCore.

6.6 xsetmode - zmiany trybu pracy na względny oraz bezwzględny

Przy pomocy xsetmode możliwe jest przełączanie urządzenia pomiędzy trybem bezwzględnym (absolute) a względnym (relative) trybem pracy.

Przykład:
xsetmode GraphireMouse ABSOLUTE

6.7 xsetpointer - ustawianie domyślnego urządzenia podstawowego

Jeżeli żadne z naszych urządzeń nie zostało skonfigurowane jako AlwaysCore a chcielibyśmy by jedno z nich zostało wskaźnikiem podstawowym musimy użyć programu xsetpointer.

Wykonaj polecenie xsetpointer NazwaUrządzenia. Stare urządzenie podstawowe (zwykle jest to mysz) nie będzie już dłużej wykorzystywane, jego miejsce zajmie urządzenie wyspecyfikowane w naszym poleceniu. Dla przykładu możliwe jest przypisanie funkcji wskaźnika podstawowego myszy Graphire w uruchomionych wczesniej XFree.

xsetpointer -l wypisuje listę wszystkich urządzeń oraz ich trybów pracy.

6.8 Klawisze

Niektóre urządzena posiadają klawisze makro lub specjalne pola, którym można przypisać pojedyncze znaki sterujace lub też ich ciągi. Działa to wyłącznie dla urządzeń pracujących w trybie rozszerzonym, a co za tym idzie, realizowane jest przez te aplikacje, które chcielibyśmy by wykorzystywały klawisze.

xinput -l daje nam informacje na temat liczby klawiszy czy też wysyłanych znaków sterujących.

6.9 Narzędzia do korzystania z więcej niż jednego tableta oraz do włączania i wyłączania obsługi

Posiadam 3 tablety Wacoma, które używam wraz z moim notebookiem. Za każdym razem gdy uruchamiam X-y, a żaden z tabletów nie jest podłączony do komputera, musi upłynąć sporo czasu nim sterowniki się poddadzą. Jeżeli uruchamiany jest xdm okres oczekiwania znacznie się wydłuża.

Stworzyłem dwa narzędzia, które powinny ułatwić życie wszystkim którzy są w takiej samej sytuacji:

Koncepcją, która leży u podstaw działania obu programów, jest podział pliku XF86Config na plik XF86Config.bare, zawierający informacje wspólne dla wszystkich konfiguracji, oraz szereg małych plików zawierających specyficzne informacje na temat poszczególnych konfiguracji.

Obydwa narzędzia łączą te części w działającą całość.

Pakiet ten jest dostępny na stronie http://www.runkeledv.de/download, pod nazwą xinput_chooser_sr.

7. Dalsze informacje/wykorzystane dokumenty

gpm:
strona podręcznika (man) gpm, FAQ gpm, kod źródłowy pliku mice.c

XInput:
dokument XInput HOWTO autorstwa Owena Taylora

XFree oraz Wacom:
podręcznik XF86Config

strona Web Frederica Lepieda

dużo, dużo listów...

8. Od tłumacza

Dokument ten został napisany w standardzie ISO-8859-2.

Tłumaczenie to jest chronione prawami autorskimi (c) Marka Guevara Braun. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeżeli znalazłeś(łaś) jakieś błędy ortograficzne, gramatyczne, składniowe lub techniczne to napisz do mnie na adres marek@atm.com.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp://www.jtz.org.pl/pub/Linux/JTZ/

Zmiany wprowadzone przez tłumacza w stosunku do oryginału to odnośniki do polskich serwerów ftp i WWW oraz zmiana pisowni nazw produktów Wacoma (Intuos zamiast intuos, Graphire zamiast graphire, itp.) doc-linux-pl-2002.06.14.orig/html/X-Big-Cursor.pl.html0100644000175000017500000002521307007144760021024 0ustar covencoven Duży-kursor-w-X11 MINI-JTZ

Duży-kursor-w-X11 MINI-JTZ

Jak używać powiększonego kursora myszy z systemem X Window

Jörg Schneider

v2, 11 August 1997


Wersja polska: Krzysztof P. Jasiutowicz kpjas@priv.onet.pl
v1.0, 27 sierpnia 1999 roku


Ten dokument opisuje jak używać powiększonego kursora myszy z systemem X Window.

1. Wstęp

Jest kilka przyczyn dla których standardowy kursor myszy jest dla niektórych niewłaściwy :

W tych przypadkach pomocne są powiększone kursory myszy. Optymalnie powinno to być robione przez jeden program X-ów, który automatycznie powiększałby każdy kursor myszy.

O ile wiem, nie da się w prosty sposób napisać takiego programu, ponieważ protokół X-ów nie umożliwia dostępu do kursora myszy. Więcej szczegółów znajdziesz w rozdziale Szczegóły techniczne poniżej.

Jeśli naszym celem nie jest takie ogólne rozwiązanie, co nieco da się zrobić :

Istnieje standardowy zestaw kursorów myszy, znajdujący się w foncie kursora ( wypróbuj polecenie xfd -fn cursor wtedy go obejrzysz). Większość programów wykorzystuje te kursory myszy i zasada polega na zastępowaniu standardowego kursora jego powiększoną wersją.

2. O tym dokumencie

Zostałem umotywowany do napisania tego MINIHOWTO, kiedy słabo widzący kolega student zapytał mnie jak powiększyć kursor myszy w X-ach. Kiedy już się dowiedziałem jak to zrobić, napisałem pierwotną wersję tego dokumentu. Ponieważ wiedza o sposobie tu opisanym nie jest zapewne powszechna, zdecydowałem podzielić się nią i utworzyłem z tego dokumentu MINIHOWTO linuksowe, mimo tego że, nie jest on wcale typowy dla Linuksa. Jak inne MINIHOWTO, znajduje się on na macierzystym serwerze Linux Documentation Project (LDP).

Matryca tego dokumentu jest w formacie SGML/linuxdoc. Dzięki temu możliwe jest automatyczne tworzenie wersji w następujących formatach (które są dostępne w tym samym miejscu co matryca) : html, text, LaTeX, DVI, PostScript i GNU info.

Shinobu Miyata przetłumaczył to MINIHOWTO na japoński. Znajduje się ono tu : http://i11www.ira.uka.de/~schneid/jp/X11-big-cursor/.

3. Jak To Zrobić

Postępuj zgodnie z instrukcją podaną poniżej. Jeśli nie chcesz sam odnajdywać i kompilować pakietu bdfresize, możesz przejść do punktu 3 i ściągnąć powiększony font zamiast tworzyć go.

  1. weź cursor.bdf, plik źródłowy fonta kursora, z jakiejś dystrybucji X-ów, n. p. z ftp://ftp.x.org/pub/R6.3/xc/fonts/bdf/misc/cursor.bdf (jeśli tam go nie będzie spróbuj archie lub pobierz go ode mnie).
  2. zdobądź, skompiluj i zainstaluj pakiet bdfresize z ftp://ftp.cs.titech.ac.jp/X11/contrib/Local/bdfresize-1.4.tar.Z (lub ode mnie):
         zcat bdfresize-1.4.tar.Z  | tar xf -
         cd bdfresize-1.4
         xmkmf
         make
         
    
    W Linuksie pewnie trzeba użyć:
         make CCOPTIONS='-include /usr/include/bsd/bsd.h' clean all
         
    
  3. utwórz katalog i zainstaluj w nim powiększony font kursora (powiększenie dwukrotne w tym przykładzie):
         mkdir $HOME/fonts
         bdfresize -f 2 cursor.bdf | bdftopcf >$HOME/fonts/cursor2.pcf
         mkfontdir $HOME/fonts
         
    
    Przygotowałem kilka powiększonych fontów kursora o następujących stopniach powiększenia: 1.5, 2, 2.5, 3, 4, 5, 6, 7, 8 i 16-krotne. Można je ściągnąć jeden z nich i zainstalować w $HOME/fonts jeżeli nie chcesz używać bdfresize.
  4. zmodyfikuj plik .xinitrc lub .xsession : przed uruchomieniem jakiegokolwiek klienta X-ów (który używa kursora) następujące polecenie musi być wykonane :
         xset +fp $HOME/fonts
         xsetroot -cursor_name X_cursor
         
    
  5. przerwij sesję X-ów i zrestartuj.

Gotowe—teraz wszystkie kursory myszy powinny być podwojonych rozmiarów.

4. Uwagi i ograniczenia

5. Szczegóły techniczne

Czy jest możliwe napisanie programu dla X-ów, powiększającego kursory automatycznie?

Rozwiązanie (częściowe)

Użyj XTestCompareCursor z rozszerzenia XTEST. We wszystkich oknach nad którymi znajduje się kursor porównuj kursor tego okna z zestawem 'znanych' kursorów (n. p. z fontu kursora ). Jeżeli kursor istnieje, zamień go na powiększony odpowiednik, w innym przypadku albo zostaw bez zmian albo zamień na standardowy kursor. To zadziała tylko tam, gdzie dostępne jest rozszerzenie XTest.

Rozwiązanie 2

Napisz proxy X serwer, który przekazuje wszystkie żądania klientów bez zmian, lecz przechwytuje wszystkie żądania odnoszące się do funkcji Xlib XCreate*Cursor. Żądania XCreate*Cursor powinny być zmieniane tak aby powiększonego kursora.

Ten serwer proxy symuluje nowy display, n. p. :1. Wszystkie programy klienckie, które łączą się z tym display (n. p. xterm -display :1) są wyświetlane na rzeczywistym serwerze (zwykle :0) i ich kursory myszy są automatycznie powiększone. Kursory myszy klientów, które łączą się z :0 pozostaną niezmienione.

6. Inne pomysły jak poprawić widoczność kursora myszy

Oto niektóre pomysły dla raczej prostych programów dla X-ów, które sprawią że kursor myszy będzie lepiej widoczny.

Bardziej ambitnym projektem byłyby ślady myszy à la windoze, t. j. kiedy mysz jest przesuwana i kursor myszy musi być wyświetlony w innej pozycji, wtedy "stary kursor" nie znika od razu, ale z pewnym opóźnieniem. Ślady myszy najlepiej byłoby zaimplementować w X serwerze, ale można by to wykonać jako klienta X-ów, lub lepiej jako serwer proxy ( dokładniejszy opis w rozdziale Szczegóły techniczne).

7. Informacje związane z tym tematem

7.1 Jak używać font serwera

Font serwer jest usługą sieciową, która dostarcza zestaw fontów X11 z nieskomplikowanym protokołem. Można do niego wysyłać zapytania, które fonty są dostępne i zażądać od niego fontu bitmapowego.

Font serwer może być przydatny do dostarczenia X serwerowi zmodyfikowanego fontu kursora, zamiast informowania gdzie w file systemie on się znajduje.

Ta metoda jest szczególnie przydatna jeśli używa się kilku maszyn, które nie maja tego samego systemu plików lub jeśli używa się X terminali, które wspierają protokół font serwera.

Font serwer i związane z nim narzędzia są w dystrybucji X11R5+ (o ile wiem).

instalacja font serwera

Przeczytaj strony podręcznika systemowego fs(1), fslsfonts(1) (lub xfs(1), xfslsfonts(1) pod X11R6) i spróbuj—to nie jest trudne. Powiedzmy, że serwer jest uruchomiony na hoście some.host.edu na porcie 7100. Instalację można wypróbować poleceniem fslsfonts -server some.host.edu:7100

Żeby naprawdę uruchomić font serwer należy wydać polecenie :

xset +fp tcp/some.host.edu:7100

które nie powinno dać informacji o błędzie.

7.2 Jak uzyskać źródła bdf jakiegoś fonta

Jeśli uruchomiłeś font serwer użyj po prostu fstobdf dołączonego do serwera fontów.

Inne wyjście to użycie getbdf który może zapisać dowolny zainstalowany font X11 do pliku bdf.

doc-linux-pl-2002.06.14.orig/html/XFree86-HOWTO.pl.html0100664000175000017500000007264606770264140020747 0ustar covencoven Jak w Linuxie zainstalować XFree86

Jak w Linuxie zainstalować XFree86

Autor: Eric S. Raymond, esr@snark.thyrsus.com
v4.2, 16 styczeń 1997
Wersja polska: Piotr Tęczyński pteczyn@hum.amu.edu.pl
w.1.0, 05 marzec 1997


Niniejszy dokument opisuje, jak uzyskać, zainstalować i skonfigurować wersję 3.2 XFree86, która stanowi wersję X Window System (X11R6) przeznaczoną dla systemów Linuxowych. Ten przewodnik krok po kroku wyjaśnia, jak skonfigurować w Twoim systemie XFRee86.

1. Wstęp

X Window System stanowi wielkie i potężne (niektórzy mogliby powiedzieć, iż zbyt wielkie i nadmiernie złożone) graficzne środowisko dla systemów UNIXowych. Oryginalny kod X Window System opracowano w MIT; od tego czasu komercyjni sprzedawcy uczynili z X'a przemysłowy standard dla platform UNIXowych. Faktycznie, na wszystkich UNIXowych stacjach roboczych na świecie chodzi jakiś wariant systemu X Window.

Pochodzący z MIT i rozprowadzany bez opłat X Window System wersja 11 wydanie 6 (X11R6) przystosowany dla systemów UNIXowych opartych o 80386/80486/Pentium pierwotnie rozwijał zespół programistów pod kierownictwem Davida Wexelblata <dwex@XFree86.org>. Wersja ta, znana jako XFree86, dostępna jest dla Systemu V/386, 386BSD i innych implementacji UNIXa opartych na platformie x86, włączając w to Linuxa. Zawiera ona wszystkie potrzebne binaria, pliki pomocnicze, biblioteki i programy narzędziowe.

Wyczerpujące informacje o XFree86 dostępne są na stronie Pajęczyny poświęconej XFree86 pod adresem http://www.XFree86.org.

Niniejszym dokument krok po kroku opisujeq, jak zainstalować i skonfigurować XFree86 dla Linuxa, chociaż niektóre szczegóły trzeba będzie samodzielnie uzupełnić czytając dokumentację dostarczoną z samym XFree86. (Dokumentacja ta zostanie omówiona poniżej.) Jednakże używanie i dostosowanie do własnych potrzeb X Window System wykracza daleko poza zakres tego dokumentu -- w tym celu zaopatrz się w jedną z wielu dobrych książek na temat używania X Window System.

1.1 Inne źródła informacji

Jeśli zupełnie nie orientujesz się, czym jest Linux, istnieje kilka źródeł informacji o tym systemie. Najlepszym miejscem jest strona Pajęczyny z Dokumentacją Linuxa dostępna pod adresem http://sunsite.unc.edu/mdw/linux.html. Tam też, pod adresem http://sunsite.unc.edu/mdw/HOWTO/XFree86-HOWTO.html, znajdziesz najnowszą, aktualną wersję tego dokumentu.

1.2 Nowe wersje niniejszego dokumentu

Nowe wersje Linux XFree86 HOWTO są okresowo rozsyłane na grupy dyskusyjne comp.os.linux.help, news:comp.os.linux.announce i news.answers. Są one również zamieszczane w rozmaitych miejscach Pajęczyny i archiwach ftp poświęconych Linuxowi, włączając w to stronę LDP.

Najnowszą wersję zawsze możesz znaleźć w Pajęcznie pod adresem URL http://sunsite.unc.edu/mdw/HOWTO/XFree86-HOWTO.html.

1.3 Kontakt z autorem i poprawki

Jeśli masz jakiekolwiek pytania czy uwagi na temat niniejszego dokumentu, proszę nie krępuj się i wyślij pocztę elektroniczną do Erica S. Raymonda na adres esr@thyrsus.com. Jestem otwarty na wszelkie sugestie i krytykę. Daj mi proszę znać, jeśli znajdziesz jakiś błąd w tym dokumencie, tak bym mógł go poprawić w następnej wersji. Dzięki.

Prosze, nie wysyłaj mi pytań jak zrobić, by Twoja karta video czy monitor działał z X'em. Niniejsze JTZ ma być w zamierzeniach stanowić szybki i bezbolesny przewodnik dla normalnej instalacji przy użyciu nowego, interakcyjnego programu konfigurującego. Jeśli wpadniesz w tarapaty przejrzyj the Hitchiker's Guide to XFree86 Video Timing, http://www.ccil.org/~esr/xconfig/video-modes.html. (Jest to aktualna, w formacie HTML, wersja pliku `Videomodes.doc'z XFree86.) Dokument ten zawiera całą moją wiedzę na temat rozwiązywania problemów związanych z konfiguracja; jeśli on nie jest w stanie Tobie pomóc, ja również.

2. Wymagania sprzętowe

XFree w wersji 3.2 wprowadzono w październiku 1996 roku. Poniżej opisano obsługiwane zestawy układów video. Dokumentacja dostarczona z Twoją kartą video powinna określać zastosowany zestaw układów scalonych. Kiedy zamierzasz kupić nową kartę video lub też kupujesz nową maszynę z jakąś kartą video, niech sprzedawca dokładnie określi markę, model i zestaw układów scalonych owej karty. Może to wymagać od niego zadzwonienia w tej sprawie do działu wsparcia technicznego; generalnie będą oni uszczęśliwieni mogąc to zrobić. Wielu sprzedawców sprzętu PC stwierdzi, iż dana karta video jest ,,standardową kartą SVGA'', która ,,powinna pracować'' w Twoim systemie. Wyjaśnij wówczas, że Twoje oprogramowanie (wspomnij Linuxa i XFree86!) nie obsługuje wszystkich zestawów układów video oraz że musisz posiadać szczególowe informacje.

Możesz również samodzielnie określić zestaw układów karty video uruchamiając program SuperProbe zawarty w dystrybucji XFree86. Poniżej całą sprawę przedstawiono bardziej szczegółowo.

Obsługiwane są następujące standardowe zestawy układów SVGA:

Obsługiwane są również akceleratory SVGA oparte o następujące układy zestawów:

Karty video, które stosują powyższe zestawy układów, obsługiwane są na wszystkich typach magistral, włączając w to VLB i PCI.

Zestawy układów oparte o Avance Logic, MX i Video 7 obsługują wyłącznie tryb 256 kolorów. Wszystkie pozostałe karty oparte o powyższe zestawy układów obsługują zarówno tryb 256 kolorów, jak i monochromatyczny. Wiele z powyższych zestawów układów będzie obsługiwać tryb 16 i 32 bitów na pixel (zwłaszcza niektóre karty oparte o układy Mach32, P9000, S3 i Cirrus), o ile tylko masz zainstalowaną na karcie wystarczającą ilość DRAM. Zwykła konfiguracja to 8 bitów na pixel (to znaczy 256 kolorów).

Serwer monochromatyczny obsługuje również standardowe karty VGA, monochromatyczną kartę Hercules oraz monochromatyczne karty Hyundai HGC1280, Sigma LaserView i Apollo. Dla karty Compaq AVGA obsługuje on jedynie 64k pamięci video. Nie testowano karty GVGA zawierającej więcej niż 64k.

Bez wątpienia lista ta powiększy się wraz z upływem czasu. Stosowne uwagi dałączane do aktualnych wersji XFree86 powinny zawierać kompletną listę obsługiwanych zestawów układów video.

Twórcy XFree86 napotykają na pewien problem, bowiem niektórzy producenci kart video stosują niestandardowe mechanizmy określania częstotliwości zegara używane do sterowania kart. Niektórzy z nich albo nie publikują specyfikacji opisujących jak zaprogramować kartę, albo wymagają od twórców podpisania oświadczenia o zachowaniu w tajemnicy otrzymanych informacji. To oczywiście ograniczałoby możliwość nieodpłatnej dystrybucji XFree86 -- coś, czego zespół twórców XFree86 bynajmniej nie chce zrobić. Przez długi czas stanowiło to problem odnośnie pewnych kart video produkowanych przez firmę Diamond. Jednakże począwszy od wersji 3.1 XFree firma Diamond zaczęła współpracować z zespołem twórców nad dostarczeniem bezpłatnych sterowników dla tych kart.

Sugerowany system dla XFree86 pod Linuxem to maszyna 486 z przynajmniej 8 megabajtami RAM i kartą video z zestawem układów wymienionym powyżej. Dla osiągnięcia optymalnej wydajności sugerujemy zastosowanie karty z akceleratorem, na przykład jakiejś karty z zestawem układów S3. Zanim podejmiesz ostateczną decyzję i nabędziesz kosztowny sprzęt, sprawdź w dokumentacji, czy XFree86 obsługuje Twoją wybraną kartę. Porównania testów wydajności dla rozmaitych kart video pod XFree86 są regularnie rozsyłane na grupy dyskusyjne USENETu comp.windows.x.i386unix i comp.os.linux.x.

Tak na marginesie, prywatny system Linuxowy Matt Welsh'a (pierwotnego twórcy niniejszego FAQa) chodził na maszynie 486DX2-66 z 20 megabajtami RAM, wyposażonej w kartę VLB z 2 megabajtami DRAM i zestaw układów S3-864. Matt przeprowadził test wydajności X'a dla swojej maszyny oraz dla stacji roboczej Sun Sparc IPX. System Linuxowy był w przybliżeniu 7 razy szybszy niż ów Sparc IPX. (Dla ciekawości, XFree86-3.1 pod Linuxem z tą kartą video osiągnął wynik około 171000 xstonów, Sparc IPX około 24000.) Generalnie rzecz biorąc, XFree86 na systemie Linuxowym zaopatrzonym w kartę SVGA z akceleratorem jest znacznie wydajniejszy niż uruchomiony na jakiejś karcie stosowanej w komercyjnych UNIXowych stacjach roboczych, które zwykle stosują obsługują grafikę za pomocą prostych ramek.

Potrzebujesz co najmniej 4 megabajty fizycznej RAM i 16 megabajtów wirtualnej RAM (przykładowo, 8 mega fizycznej i 8 mega pliku wymiany). Pamiętaj, że im więcej masz fizycznej RAM, tym mniej system będzie przy małej pamięci wymieniał dane. Ponieważ wymiana jest z definicji powolna (dyski są bardzo wolne w porównaniu z pamięcią), wiec aby XFree86 chodził komfortowo posiadanie co najmniej 8 megabajtów RAM jest koniecznością. Jeszcze lepiej zainstalować 16 megabajtów. System z 4 megabajtami fizycznej RAM mógłby chodzić dużo (do 10 razy) wolniej od takiego, który posiada co najmniej 8 mega.

3. Instalacja XFree86

Prawdopodobnie masz już XFree86 jako część dystrybucji Linuxa -- w tym przypadku nie jest konieczne oddzielne ściąganie oprogramowania. W takim przypadku możesz pominąc tę sekcję.

Binarną dystrybucję XFree86 dla Linuxa można znaleźć w wielu archiwach ftp. Oryginalne archiwum XFree86 jest pod ardesem ftp://ftp.xfree86.org/pub/XFree86/current/binaries/Linux (w czasie qpisania niniejszego tekstu aktualna wersja oznaczona była numerem 3.2; okresowo wypuszczane są nowsze wersje).

Na sunsite.unc.edu XFree86 można znaleźć w katalogu /pub/Linux/X11.

Kiedy bezpośrednio ściągasz XFree86, przyda się Tobie poniższa poniższa tabela. Wyszczególnia ona pliki zawarte w dystrybycji XFree86-3.2.

Wymagany jest jeden z następujących serwerów:

X328514.tgz

Serwer dla kart opartych o 8514.

X32AGX.tgz

Serwer dla kart opartych o AGX.

X32I128.tgz

Serwer dla Number Nine Imagine 128.

X32Mach32.tgz

Serwer dla kart opartych o Mach32.

X32Mach64.tgz

Serwer dla kart opartych o Mach64.

X32Mach8.tgz

Serwer dla kart opartych o Mach8.

X32Mono.tgz

Serwer dla monochromatycznych trybów video.

X32P9K.tgz

Serwer dla kart opartych o P9000.

X32S3.tgz

Serwer dla kart opartych o S3.

X32S3V.tgz

Serwer dla S3 ViRGE i ViRGE/VX (wersja beta).

X32SVGA.tgz

Serwer dla kart opartych o Super VGA.

X32W32.tgz

Serwer dla kart opartych o ET4000/W32.

Jeśli nie wiesz, który serwer wybrać, wybierz VGA16, plik X32VGA16.tgz. Tak czy inaczej zechcesz go ściągnąc, ponieważ w następnym kroku instalacji będzie on potrzebny do uruchomienia programu autokonfigurującego.

Wymagane są wszystkie następujące pliki:

preinst.sh

Skrypt przedinstalacyjny.

postinst.sh

Skrypt poinstalacyjny.

X32bin.tgz

Pozostałe binaria X11R6.

X32cfg.tgz

Pliki konfiguracyjne dla xdm, xinit i fs.

X32doc.tgz

Dokumentacja i strony podręcznika.

X32fnts.tgz

Pliki dla 75dpi, misc i PEXa.

X32lib.tgz

Dzielone biblioteki X i pliki pomocnicze.

X32set.tgz

Program narzędziowy XF86Setup.

X32VG16.tgz

Serwer dla kart opartych o VGA/EGA.

Następujące pliki są opcjonalne:

X32f100.tgz

Fonty 100dpi.

X32fcyr.tgz

Fonty cyrylicy.

X32fnon.tgz

Inne fonty (chińskie, japońskie, koreańskie, hebrajskie).

X32fscl.tgz

Fonty skalowalne (Speedo i Type1).

X32fsrv.tgz

Fonty serwera i pliki konfiguracyjne.

X32prog.tgz

Pliki nagłówkowe X, pliki konfiguracyjne i biblioteki kompilacyjne.

X32lkit.tgz

LinkKit dla serwera X.

X32lk98.tgz

LinkKit dla serwera PC98 X.

X32nest.tgz

Zagnieżdżony serwer X.

X32vfb.tgz

Wirtualny serwer X.

X32ps.tgz

Dokumentacja w PostScripcie.

X32html.tgz

Dokumentacja w HTMLu.

Katalog XFree86 powinien zawierać plik RELNOTES zawierający uwagi odnośnie aktualnej wersji. Zajrzyj tam odnośnie szczegółów związanych z instalacją.

Wszystko, co potrzeba, by zainstalować XFree86, to zdobyć powyższe pliki, utworzyć (jako root) katalog /usr/X11R6 i rozpakować owe pliki z /usr/X11R6 następującą komendą:

gzip -dc X32bin.tgz | tar xfB -
Pamiętaj, iż te starowane pliki są spakowane relatywnie do katalogu /usr/X11R6, taki więc ważne jest ich rozpakowanie właśnie tam.

Upewnij się, iż katalog /usr/X11R6/bin znajduje się na Twojej ścieżce dostępu. Możesz to zrobić edytując domyślne ustawienia Twojego systemu zawarte w pliku /etc/profile lub /etc/csh.login (zależnie od typu powłoki, jaką stosujesz Ty czy inni użytkownicy Twojego systemu). Możesz też po prostu dodać ten katalog do Twojej osobistej ścieżki modyfikując plik /etc/.bashrc lub /etc/.cshrc, zależnie od rodzaju Twojej powłoki.

Upewnij się również, iż ld.so (konsolidator), potrafi zlokalizować katalog /usr/X11R6/lib. Aby to zapewnić, dodaj linię

/usr/X11R6/lib
do pliku /etc/ld.so.conf i, jako root, uruchom /sbin/ldconfig.

Uwaga: Odkryłem, po zainstalowaniu wszystkich następujących części:

X32Ma64.tar X32cfg.tar X32fnts.tar X32html.tar X32prog.tar X32VG16.tar X32doc.tar X32fscl.tar X32lib.tar X32set.tar X32bin.tar X32f100.tar X32fsrv.tar X32man.tar

że żadna z nich nie zawierała wsparcia dla Xpm (stanowi to problem, ponieważ, przynajmniej w mojej konfiguracji, sam serwer X'a wymaga Xpm'a -- Twoje potrzeby mogą być inne). Musiałem przekopiować biblioteki Xpm z mojej starej dystrybucji X'a. Tak więc pakiet nie jest jeszcze doskonały.

4. Konfiguracja XFree86

4.1 Normalna konfiguracja

Do niedawna skonfigurowanie XFree86, tak by używał Twojej myszy, klawiatury, monitora i karty video, zwykło być czymś w rodzaju czarnej magii, wymagającej sporego grzebania w złożonym pliku konfiguracyjnym. To już jednak historia. Wersja 3.2 uczyniła cały ten proces prawie trywialnym. Wszystko co robisz, to odpalasz program XF86Setup.

Działanie tego programu opiera się na fakcie, iż obecnie cały nowy sprzęt PC posiada monitory EGA/VGA. Program ów uruchamia serwer SVGA16 i używa go do przywołania X'a w trybie 640x480, co stanowi najmniejszy wspólny mianownik. Potem uruchamia interakcyjny program, który poprowadzi Cię przez serię pięciu menu konfiguracyjnych -- dla myszy, klawiatury, karty (video), monitora i ,,pozostałych'' (rozmaite opcje serwera). Cały proces przebiega prawie bezboleśnie.

Warto również pamiętać o drobnym fakcie, mianowicie iż jeśli jak większość ludzi używasz rozpowszechnionego peceta, to Twoja klawiatura jest obecnie raczej tym, co XF86Setup nazywa `Generic 102-key PC (intl)' niż domyślną `Generic 101-key PC'. Jeśli wybierzesz domyślną (101), wówczas klawisze znajdujące się po prawej stronie Twojej klawiatury (klawiatura numeryczna i obszar przyległy) mogą przestać działać.

Jeśli żywisz wątpliwości odnośnie typu swojego monitora, możesz po kolei wypróbować wylistowane opcje. Przejdź z góry listy na dół (wyższe opcje dają niższe prędkości taktowania zegara i są mniej szkodliwe dla sprzętu). Wycofaj się, jeśli zobaczysz śnieżący lub poważnie zniekształcony obraz. Pomniejsze zniekształcenia (obraz lekko za duży, za mały czy lekko zdecentrowany) nie stanowią problemu -- za moment będziesz mieć szansę skorygować je w trybie dostrajania.

A kiedy program przywołuje xvidtune, dając Tobie możliwość dostrojenia Twojego trybu video, nie daj się wyprowadzić z równowagi pojawiającym się na początku napisom ostrzegawczym. W ten sposób nie jest łatwo uszkodzić współczesne wieloczęstotliwościowe monitory (inaczej niż ich przodków o stałej częstotliwości).

4.2 Radzenie sobie w kłopotach

Może się czasem tak zdarzyć, iż kiedy po raz pierwszy odpalisz X serwer nie wszystko będzie w całkowitym w porządku. Prawie zawsze jest to spowodowane jakimś problemem w Twoim pliku konfiguracyjnym. Zwykle wyłączone są wartości synchronizacji monitora są lub też niepoprawnie ustawione są częstotliwości taktowania zegara Twojej karty video. Drobniejsze problemy można poprawić używając programu xvidtune. Naprawdę zniekształcony ekran zwykle oznacza, iż musisz powrócić do XF86Setup i wybrać typ monitora posiadający mniejsze możliwości.

Jeśli ekran wydaje się falować lub ma rozmyte brzegi, to jest to jasna wskazówka, iż złe są wartości synchronizacji monitora lub częstotliwości taktowania zegara. Upewnij się również, że właściwie został ustawiony zestaw układów karty video, jak również i inne opcje w sekcji Device w XF86Config. Miej absolutną pewność, że używasz właściwego X serwera i że /usr/X11R6/bin/X jest połaczeniem symbolicznym do tego serwera.

Jeśli wszystko to zawiedzie spróbuj wystartować ,,gołego'' X'a. W tym celu wydaj podobne do poniższego polecenie:

X > /tmp/x.out 2>&1 
Możesz potem zabić X serwer (używając kombinacji klawiszy ctrl-alt-backspace) i przestudiować zawartość pliku /tmp/x.out. X serwer zapisze tam jakieś ostrzeżenia czy błędy -- na przykład, że częstotliwość taktowania Twojej karty video nie koresponduje z trybem obsługiwanym przez monitor.

Pamiętaj, iż aby przełączyć się pomiędzy trybami video kreślonymi w linii Modes w sekcji Screen w pliku XF86Config możesz użyć ctrl-alt-numeryczne + i ctrl-alt-numeryczne -. Jeśli tryb najwyższej rozdzielczości nie wygląda poprawnie, spróbuj przełączyć się na niższe rozdzielczości. Pozwoli to Tobie stwierdzić, że przynajmniej te fragmenty Twojej konfiguracji X'a działają poprawnie.

Sprawdź również pokrętłami na monitorze pionową i poziomą wielkość obrazu. Podczas startowania X'a w wielu przypadkach konieczne jest takie dostrojenie. Na przykład, jeśli ekran wydaje się być lekko przesunięty w jedną stronę, zwykle możesz to skorygować używając panelu kontrolnego monitora.

Grupy dyskusyjne USENETu comp.windows.x.i386unix i comp.os.linux.x poświęcone są dyskusjom o XFree86. Dobrym pomysłem mogłoby być przypatrzenie się tym grupom w poszukiwaniu wiadomości związanch z Twoją konfiguracją video -- możesz tam spotkać kogoś z identycznymi jak Twoje własne problemami.

4.3 Dostosowywanie X'a do własnych potrzeb

1280x1024 jest najwyższą wbudowaną rozdzielczością jaką obsługuje XF86Setup. Jeśli Twój monitor potrafi obsłużyć 1600x1200, wówczas by uzyskać optymalną wydajność będziesz musieć pogrzebać w swojej konfiguracji X'a.

Jeśli z tego czy dowolnego innego powodu chcesz grzebać w swojej konfiguracji video, zapoznaj się najpierw z dokumentem the Hitchiker's Guide to XFree86 Video Timing dostępnym pod adresem http://ww.ccil.org/~esr/xconfig/video-modes.html. (Jest to najnowsza, w formacie HTML, wersja pliku `Videomodes.doc' zawartego z XFree86.)

4.4 Używanie koloru 16 bitowego

X domyślnie używa koloru 8 bitowego, co daje paletę 256 barw. Aby ominąć to ograniczenie wiele aplikacji umieszcza swe własne mapy kolorów. Jednak kiedy kursor przemieszcza się pomiędzy dwoma oknami, z których każde ma swą własną mapę kolorów, powoduje to nagłe przeskoki kolorów. w ten sposób zachowuje się przeglądarka Pajęczyny Arena.

Kiedy zechcesz używać zaawansowanych aplikacji graficznych 256 kolorów przestaje wystarczać. Możesz użyć koloru 16 bitowego z paletą 65K różnych barw startując po prostu X'a jak niżej

    startx -- -bpp 16
lub wpisując
    exec X :0 -bpp 16
w swój plik .xserverrc. Uważaj jednak, bowiem nie wszystkie aplikacje będą działać z 16 bitowym kolorem.

Większa ilość kolorów powoduje, iż Twoja karta video transferuje więcej danych w tej samej jednostce czasu. Jeśli Twoja karta video nie potrafi temu podołać, wówczas trzeba zredukować albo rozdzielczość, albo prędkość odświeżania. Domyślnie XFree redukuje rozdzielczość. Jeśli chcesz zachować rozdzielczość a zredukować prędkość odświeżania, musisz umieścić nowe stosowne paramery w linii Modeline w swoim pliku XqF86Config. Określi to tę rozdzielczość z niższą prędkościa odświeżania. Przykładowo zastąp starą wartość

Modeline "1024x768" 75 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
na
Modeline "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync.
Magiczne liczby 75 i 65 odpowiadają prędkościom zegara. Znajdziesz je zapisane przez X'a w swoim pliku .X.err. Sprawdź w dokumentacji X'a plik odnoszący się do monitorów. Znajdziesz tam parametry Modelines stosowne dla maksymalnej prędkości zegara, jaką Twoja karta video potrafi obłużyć przy kolorze 16 bitowym.

5. Uruchamianie XFree86

Kiedy masz już skonfigurowany plik XF86Config spokojnie możesz odpalć X serwer i odbyć krótką przejażdżkę. Po pierwsze upewnij się, że katalog /usr/X11R6/bin znajduje się na Twojej ścieżce dostępu.

Aby wystartować XFree86 wydaj polecenie

startx
Stanowi to front dla xinit (w przypadku, jeśli kiedykolwiek zdarzyło się Tobie używać xinit na innych systemach UNIXowych).

Polecenie to wystartuje X serwer i uruchomi komendy znalezione w pliku .xinitrc znajdującym się w Twoim domowym katalogu. .xinitrc jest zwykłym skryptem powłokowym, który zawiera przeznaczonych do uruchomienia X klientów. Jeśli plik ten nie istnieje, zostaną użyte domyślne wartości systemu z pliku /usr/X11R6/lib/X11/xinit/xinitrc.

Standardowy pliki .xinitrc wygląda podobnie jak poniższy:

#!/bin/sh

xterm -fn 7x13bold -geometry 80x32+10+50 &
xterm -fn 9x15bold -geometry 80x34+30-10 &
oclock -geometry 70x70-7+7 &
xsetroot -solid midnightblue &

exec twm 

Skrypt ten wystartuje dwóch kilientów xterm, oclock oraz ustawi kolor tła okna root'a na midnightblue. Następnie wystartuje menadżer okien twm. Zauważ, iż twm wykonuje się z powłokowego wyrażenia exec. W ten sposób proces xinit zostanie zastąpiony przez twm. Kiedy tylko proces twm zostanie powołany do życia, X serwer wyłączy się. Możesz wyjść z twm używając głównego menu. W tym celu naciśnij na tle pulpitu klawisz myszy 1 -- wyświetli to rozwijalne menu, które pozwoli Tobie uaktywnić opcję Exit Twm.

Upewnij się, że ostatnia komenda w pliku .xinitrc startuje z exec i że nie jest ona umieszczona w tle (żadnego znaku & na końcu linii), w przeciwnym bowiem razie X serwer wyłączy się zaraz po tym, jak tylko wystartuje klientów z pliku .xinitrc.

Alternatywnie możesz wyjść z X'a wciskając kombinację klawiszy ctrl-alt-backspace, co bezpośrednio zabija X serwer i wychodzi z X Window System.

Powyżej zaprezentowano bardzo, ale to bardzo prostą konfigurację pulpitu. Wkładając trochę pracy w swój plik .xinitrc możesz osiągnąć wiele wspaniałych programów i konfiguracji. Przykładowo, menadżer okien fvwm może umożliwiać używanie pulpitu wirtualnego. Możesz również ustawić kolory, czcionki, wielkość i pozycje okien i tak dalej, co tylko dusza zapragnie.

Jeśli dopiero zaczynasz poznawać środowisko X Window System, gorąco polecamy zapoznanie się z jakąs książką z tego zakresu, np. The X Window System: A User's Guide. Używanie i konfiguracja X'a są o wiele nazbyt złożone, by je tutaj omawiać. Wskazówek na sam początek poszukaj na stronach podręcznika odnoszących się do xterm, oclock i twm.

5.1 Warunki użytkowania niniejszego dokumentu

Copyright (c) 1996 by Eric S. Raymond. Niniejszy dokument możesz używać, rozpowszechniać i reprodukować w dowolny sposób o ile:

Powyższe restrykcje mają na celu ochronę potencjalnych czytelników przed starymi lub niekompletnymi wersjami. Spytaj się mnie jeśli przypuszczasz, iż masz jakiś ważny powód dla uczynienia Tobie wyjątku.

5.2 Podziękowania

Niniejszy dokument powołał do życia Matt Welsh w zacofanych czasach, gdy panował mętny pierwotny chaos. Dzięki Matt!

5.3 Od tłumacza

Copyright (c) for the Polish translation by Piotr Tęczyński, 1997.

Jeśli masz jakiekolwiek pytania czy uwagi odnośnie tłumaczenia bądź też zwyczajnie znajdziesz byka nie krępuj się i wyślij do mnie wiadomość pocztą elektroniczną. W ten sposób następna wersja będzie lepsza, ku pożytkowi nas wszystkich. Hmm, możesz też przesłać mi komplementy i pochwały... ;) Tak czy inaczej -- dzięki.

Podziękowania

Dzięki za nieocenioną pomoc przy powstawaniu i dalszej dystrybucji niniejszego dokumentu oryginalnemu jego twórcy, czyli Ericowi S. Raymondowi, całej fantastycznej i tryskającej humorem grupie JTZ (Jak To Zrobić), oraz uroczemu kociakowi ;) o imieniu Danka. No i oczywiście twórcy samego Linuxa, czyli Linusowi Torvaldsowi, torvalds@cs.helsinki.fi, przez którego mamy tyle świetnej zabawy.

doc-linux-pl-2002.06.14.orig/mini/0042755000175000017500000000000007502336646015343 5ustar covencovendoc-linux-pl-2002.06.14.orig/mini/html/0042755000175000017500000000000007502336671016305 5ustar covencovendoc-linux-pl-2002.06.14.orig/mini/html/3-Button-Mouse.pl.html0100664000175000017500000010025207104371340022271 0ustar covencoven Jak zainstalować trójprzyciskową mysz szeregową (mini-JTZ)

Jak zainstalować trójprzyciskową mysz szeregową (mini-JTZ)

Autor: Geoff Short, geoff@kipper.york.ac.uk
v1.32, 4 listopdada 1997
Wersja polska: Krzysztof P. Jasiutowicz kpjas@priv.onet.pl
v1.0 beta, 30 marca 1998 roku


Co zrobić aby 3 przyciskowa mysz szeregowa działała pod Linux-em. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem : ftp.icm.edu.pl.

1. Disclaimer

Ten dokument jest oddany do użytkowania w dobrej wierze, jako zawierający w sobie tylko bezpieczne programowanie i operacje. Autor nie bierze odpowiedzialności za żadne szkody i uszkodzenia powstałe w jakikolwiek sposób u jakichkolwiek osób i sprzętu, jako bezpośrednie lub niebezpośrednie następstwo wypełniania podanych zaleceń.

2. Wprowadzenie

Najnowsza wersja tego dokumentu (w oryginale ) jest zawsze dostępna : http://kipper.york.ac.uk/mouse.html

Istnieje japońska wersja tego dokumentu : http://jf.gee.kyoto-u.ac.jp/JF/JF-ftp/euc/3-Button-Mouse.euc

Od tłumacza : moja wiedza dotycząca myszy jest ograniczona. Jeśli zauawżyłeś jakieś błędy lub niedociągnięcia poinformuj mnie o tym. Pod adresem kpjas@priv.onet.pl.

Większość aplikacji X Window jest pisana z założeniem, że użytkownik będzie używał trzyprzciskowej myszy. Myszy szeregowe są zazwyczaj stosowane w zestawach komputerowych i są tanie. Wiele z tych myszy ma trzy klawisze i opisane są, iż używają protokołu Microsoft, co teoretycznie znaczy, że idealnie nadają się do systemu X Window. ( Obecnie rekord najniższej ceny za działającą trzyprzyciskową mysz szeregową wynosi $1.14!)

Większość myszy o podwójnym protokole będzie działać w dwóch trybach:

Ten dokument poprowadzi cię krok po kroku przez konfigurację myszy w tych dwóch różnych trybach, w szczególności przez to co konieczne do używania bardziej przydatnej myszy trzyprzyciskowej.

3. Porty szeregowe

Pierwszą rzecz, którą trzeba sprawdzić to czy oprogramowanie może odnaleźć myszkę. Dowiedz się, do którego portu szeregowego twoja mysz jest podłączona - zazwyczaj będzie to /dev/ttyS0 ( COM1 w DOS-ie ) lub dev/ttyS1 (COM2). ( ttyS0 jest zwykle 9-pinowym gniazdem, ttyS1 25-pinowym, ale oczywiście nie ma w tej sprawie sztywno ustalownych reguł). Istnieje też odpowiadająca liczba urządzeń /dev/cua, które są prawie identyczne z /dev/ttyS ale ich odradza się ich używania. Dla wygody należy wykonać nowe powiązanie /dev/mouse z tym portem. Na przykład dla ttyS0:

ln -s /dev/ttyS0 /dev/mouse

4. Myszy z przełącznikiem

Niektóre myszy, zazwyczaj nie te najtańsze, mają przełącznik na spodzie oznaczony `2/3'. Czasem może to być `PC/MS'. W tym wypadku oznaczenie `2' dotyczy trybu dwuprzyciskowego Microsoft-u, a `3' trzyprzyciskowego trybu MouseSystems. Przełącznik `PC/MS' jest nieco bardziej skomplikowany. Prawdopodobnie stwierdzisz, że ustawienie `MS' oznacza tryb Microsoft, a `PC' oznacza tryb MouseSystems. Możliwe, że ustawienie `PC' będzie opisane jako ps/2, ale powinno ono działać także jako tryb MouseSystems. Jeśli posiadasz taką mysz, możesz przełączyć ją w ustawienie `3' lub `PC', wstawić ustawienie dla MouseSystems w Xconfigs (patrz poniżej) i mysz powinna doskonale działać w trybie trzyprzyciskowym.

5. Normalne myszy

Jeżeli nie masz żadnych przełączników i nie masz instrukcji, to trzeba trochę eksperymentować. Po pierwsze spróbuj założyć, że producent myszy mówi prawdę, i mysz obsługuje w pełni tryb Microsoft. Ustaw w Xconfig tak żeby spodziewał się myszy Microsoft (zobacz Xconfig section) i wypróbuj to.

Jeśli mysz w ogóle nie działa, wtedy nie jest to mysz Microsoft, lub jest jakiś inny problem. Wypróbuj inne ustawienia w konfiguracji, najlepiej zacząć od dokumenatacji systemowej dla pliku konfiguracyjnego. Także zajrzyj do Różne problemy w rozdziale poniżej.

Zauważysz prawdopodobnie, że kiedy uruchomisz X-y, mysz działa doskonale, ale tylko zewnętrzne przyciski coś robią. Możesz to oczywiście zaakceptować i emulować trzeci przycisk ( naciśnij oba przyciski jednocześnie, aby kliknąć środkowy ), tak jak to się robi z myszą dwuprzciskową. Aby to zrobić, zmień swój plik Xconfig jak to pokazano w Xconfig example poniżej. Może to oznaczać, że niepotrzebnie kupiłeś mysz trzyprzyciskową i nie posuwasz się do przodu. A więc, teraz musisz przyjrzeć się swojemu sprzętowi.

6. Przełączanie myszy w tryb trójprzyciskowy

Nawet tanie myszy mogą pracować w protokole MouseSystems, z wszystkimi trzema przyciskami działającymi. Sztuczka polega na tym, aby mysz myślała, że jest myszą Mouse System, coś co rzadko znajduje się w instrukcjach.

Kiedy mysz otrzymuje zasilanie i jeżeli lewy przycisk jest wciśnięty, mysz przełączaa się w tryb MouseSystems. To proste, ale nie zawsze opisywane zjawisko. Zwróć uwagę, że soft reboot komputera może nie odciąć zasialnia myszy i dlatego może nie działać. Jest kilka sposobów przełączania trybu, które mogą działać lub nie z twoim rodzajem myszy. Niektóre z nich są mniej drastyczne niż rebootowanie komputera, a dwa są bardziej !

7. Używanie gpm do przełączania trybów myszy

gpm jest programem, który pozwala używac myszy w konsoli. Jest on zazwyczaj dołączany do dystrybucji Linux-owych i można go uruchomić z linii poleceń lub w skrypcie startowym /etc/rc.d/rc.local. gpm stanowi problem dla ludzi używających myszy typu bus, ponieważ blokuje mysz i powoduje, że X-y nie mogą jej używać - ci z nas którzy używają myszy szeregowych nie mają tego problemu.

Podstawowe tryby dla myszy szeregowych z gpm to:

gpm -t ms
gpm -t msc
gpm -t help

dla trybu Microsoft lub MouseSystems, lub aby przetestować mysz i wyświetlić wyniki. Aby uruchomić mysz w trybie MouseSystems, może byc potrzebna flaga -3 oraz bu\yć może opcja DTR za pomocą flagi -o dtr :

gpm -3 -o dtr -t msc
gpm często potrafi rozpoznać trzy przyciski myszy nawet w trybie Microsoft. A nowsze wersje ( wersja 1.0 i poźniejsze (?)) potrafią udostępnić tą informację innym programom. By to działało musisz uruchomić gpm z flagą -R w ten sposób :
gpm -R -t ms
To spowoduje reeksport danych myszy do nowego urządzenia, nazywanego /dev/gpmdata, które przypomina mouse dla innych programów. Zwróć uwagę, że to urządzenie zawsze korzysta z protokołu Mouse Systems. Można, tak zapisać Xconfig, aby używała tego zamiast /dev/mouse tak jak to pokazano poniżej, ale oczywiście miej na uwadze, aby gpm zawsze działało, kiedy używasz X-ów. Niektórzy pisali, że niektóre event-y X-ów nie są poprawnie interpretowane przez X-y przy użyciu tego sposobu, co może być związane z indywidualnym ustwieniem myszy.

Zmiana mapowania przycisku dla gpm i X ( gustafso@math.utah.edu)

Można stwierdzić, że gpm używa różne defaultowe mapowanie przycisków dla X, więc używanie obu systemów na tej samej maszynie może być frustrujące. Aby X-y używały tych samych przycisków jak gpm dla operacji wyboru i wklejania zastosuj polecenie X-ów :

xmodmap -e "pointer = 1 3 2"
co powoduje, że lewy przycisk wybiera, a prawy przycisk wkleja, zarówno w myszach dwu i trzyprzyciskowch. Aby wymusić na gpm użycie standardowego mapowania przycisków, uruchom go z poleceniem -B, np:
gpm -t msc -B 132

8. Używanie dwóch myszy

W niektórych przypadkach, na przykład w laptopie z wbudowanym urządzeniem wskazującym, ktoś może chcieć używać jako drugiego urządzenia myszy szeregowej. W większości przypadków, wbudowane urządzenie używa protokołu PS/2 i można go pominąć jeśli nie chce się go używać. Po prostu skonfiguruj gpm lub X-y do używania /dev/ttyS0 ( lub innego) w sposób typowy.

Aby używać obu jednocześnie, można użyć gpm -M do reeksportu urządzeń. Więcej szczegółów w podręczniku systemowym w rodziale dotyczącym gpm.

9. Przykłady plików XF86Config i Xconfig

Lokalizacja pliku konfiguracyjnego dla X-ów zależy od konkretnej wersji i rodzaju dystrybucji. Prawdopodobnie będzie to albo /etc/Xconfig, /etc/XF86Config albo /usr/X11/lib/X11/XF86Config. Powinieneś zobaczyć, który to jest kiedy uruchomisz X - będzie wypisana na ekranie zanim wszystkie opcje będą wyświetlone. Składnia nieco się różni pomiędzy poszczególnymi plikami XF86Config i Xconfig, więc oba będą tu podane.

Mysz szaregowa Microsoft

Mysz szeregowa Microsoft z emulacją myszy trójprzyciskowej

Trójprzyciskowa mysz MouseSystems

Microsoft Serial Mouse z gpm -R

10. Kable, przedłużki i przelotki

Jedyne przewody potrzebne w kablu myszy to: TxD and RxD do przesyłu danych, RTS i/lub DTR dla zasilania i ground. Co przekłada się na numery pinów, w ten sposób:

         port 9-pinowy      port 25-pinowy 
        TxD     3                2
        RxD     2                3
        RTS     7                4
        DTR     4               20
        Gnd     5                7
Powyższa tabela może być użyteczna jeśli chcesz robić przelotki między 9- i 25-pinowymi wtyczkami, lub kable przedłużające.

11. Różne kłopoty i ustawienia

12. Przetestowane modele

Jest wiele różnych myszy na świecie i nie mogę z czystym sercem powiedzieć, że powinieneś iść i kupić raczej tą mysz, a nie tamtą. To co mogę zrobić to wyliczyć co te myszy potrafią, oparte na doświadczeniu i pogłoskach. Nawet z tymi informacjami ostrożność jest wskazana - mieliśmy w biurze dwie identyczne myszy przy dwóch komputerach i niektóre rzeczy działały z jedną myszą i nie działały z drugą. Wszelkie dodatki do tego wyliczenia będą mile widziane.

Optyczna mysz MouseSystems, wersja szeregowa
Działa dobrze (jak możnaby się spodziewać po nazwie!) bez ClearDTR lub ClearRTS w konfiguracji.
WiN mouse, sprzedawana przez Office World za osiem funtów.
Standardowa dwutrybowa mysz Microsoft/MouseSystems.
Agiler Mouse 2900
Standardowa dwutrybowa mysz Microsoft/MouseSystems. SYSGRATION SYS2005i układ scalony nadaje się do lutowania.
Sicos mouse,
Działa ok, wymaga ClearDTR & Clear RTS w konfiguracji.
Index sprzedają mysz za 10 funtów,
Nie działa w trybie 3 przyciskowym, ale ma fajną instrukcję :-)
Artec mouse
Zwyczajna mysz o podwójnym protokole, wymaga `ClearDTR' ustawionego w konfiguracji, NIE `ClearRTS'
DynaPoint 3 przyciskowa mysz szeregowa.
Zwyczajna mysz o podwójnym protokole, wymaga `ClearDTR' I `ClearRTS' w konfiguracji X-ów.
Genius Easymouse mysz 3-przyciskowa
Doskonale działa w protokole Mouseman bez ustawiania parametru ChordMiddle. Od Roderick Johnstone ( rmj@ast.cam.ac.uk)
Truemouse, made in Taiwan
Działa OK, wymaga `ClearDTR' w konfiguracji. (Od Tim MacEachern)
Mysz marki Champ
Wymaga przełączenia w tryb PC, co uaktywnia także protokół MouseSystems. (Od tnugent@gucis.cit.gu.edu.au)
Mysz MicroSpeed
Zwykła mysz o podwójnym protokole.
Mysz marki Venus ($7)
Ma w śrokdu przełącznik między trybem 2 i 3 przyciskowym. (Od mhoward@mth.com )
Saturn
Mysz z przełącznikiem, działa OK jako mysz MouseSystems w pozycji 3-przyciskowej. (Od grant@oj.rsmas.miami.edu .)
Manhattan mouse.
Jest przełącznik trybów `MS AM' / `PC AT', tryb MS działa doskonale z rozwiązaniem z gpm -R. (Od komanec@umel.fee.vutbr.cz).
Mysz Inland.
Przełącznik dla trybów `PC/MS', działa doskonale. (Od http://ptsg.eecs.berkeley.edu/~venkates).
qMouse (3-przyciskowa), FCC ID E6qmouse X31.
Sprzedawana w USA za około $10. działa z `gpm -t msc -r 20'. Nie ma jumper-ów lub przełączników do 3-przyciskowego trybu MouseSystems. Nie jest godna polecenia w X. Nie reaguje na echo "*n" > /dev/mouse.
Mitsumi Mouse (2-przyciskowa), FCC ID EW4ECM-S3101.
Sprzedawana w USA za około $12. Godna polecenia w X i w gpm, łagodny klik. (Te dwa od gustafso@math.utah.edu)
Myszy PC Accessories które kupiłem w CompUSA poniżej $10.
Ma przełącznik PC/MS na spodzie. Działa OK. (Od steveb@communique.net)
First Mouse - naprawdę tanio za 7.79 funtów w Tempo.
Dwutrybowa mysz Microsoft/MouseSystems, tryb ustawiany przez wciśnięcie przycisku przy włączeniu zasilania. Nie ma przełączników, ani połączeń. Cztero kablowe połącznie, echo '*n' nie działa. `gpm -R' działa wspaniale. (Od peterk@henhouse.demon.co.uk)
Mysz 3-przyciskowa Trust.
O dwóch trybach z przełącznikiem, działa dobrze jako MouseSystems w trybie `PC'. gpm gryzie się z trybem Microsoft.
Chic 410
działa doskonale w ustawionym trybie ms i przy użyciu polecenia gpm -R Od Stephena M. Weissa ( steve@esc.ie.lehigh.edu)
Trzyprzycikowa mysz KeyMouse.
działa prawidłowo z ClearDTR i ClearRTS w Xconfig; w gpm konieczne `-o dtr' . (Od EZ4PHIL@aol.com)
Klawiatura Qtronix `Scorpio 60'
Wszystkie trzy przyciski działają w protokole MouseSystems. (Od hwe@uebemc.siemens.de)
Laptop Tecra 720
Glidepoint jest na /dev/cua0; rysik na /dev/psaux. (Od apollo@anl.gov)
Mysz Anubis
Działa doskonale, wymaga przytrzymywania lewego przycisku przy przełączaniu do wirtualnej konsoli X. (Od Joel Crisp)
Yakumo No.1900 mouse
Działa z eksportem do X-ów gpm -R -t ms. (Od Oliver Schwank)
Genius `Easy Trak' Trackball
Nie jest zgodna z trybem Microsoft, użyj Mouseman w konfiguracji X-ów i będzie działać doskonale. (Od VTanger@aol.com.)
Highscreen Mouse Pro
`Działa doskonale' twierdzi alfonso@univaq.it.
Logitech CA series
Działa w X-ach używając protokołu MMseries, przy 2400 Baud, 150 SampleRate. (Powinno też odnosić się do myszy Logitech CC, CE, C7 & C9). (Od vkochend@nyx.net.)
Mysz A4-Tech
Działa OK, wymaga wiersza DTR pod X-ami i gpm. (Od deane@gooroos.com)
Mysz Vertech
Prawidłowe zachowanie Microsoft/Mousesystems, można zalutować do ustawienia na stałe. (Od duncan@fs3.ph.man.ac.uk.)
Boeder M-7 ``Bit Star'' (i inne z serii M oprócz M13)
Przełącza się w tryb Mousesystems trzymając lewy przycisk przy włączaniu zasilania. (Od mailto:sjt@tappin.force9.co.uk.)
Mouse Systems ``Scroll'' Mouse (cztery przyciski i roller/przycisk)
Ma przełącznik 2/3 - w trybie 3 działa jako trzyprzyciskowa mysz MouseSystems, bez działającego dodatkowego przycisku & kółka. Nie wymaga ClearDTS/DTR. (Od parker1@airmail.net.)
Mysz Szeregowa 3-przyciskowa Radio Shack
Model 26-8432, dostępny w Tandy za około 20 funtów. Działa jako Mousesystems z ClearDTR. (Od Sherilyn@sidaway.demon.co.uk.)

13. Dalsze informacje

14. Ogon myszy

Większość informacji w tym dokumencie została zaczerpnięta z różnych linuksowych grup dyskusyjnych. Przepraszam, że nie umieściłem informacji o wszystkich, którzy pośrednio przyczynili się w ten sposób, dziękuję bardzo wam wszystkim.

Podsumowując :

doc-linux-pl-2002.06.14.orig/mini/html/Advocacy.pl.html0100664000175000017500000004575107104371340021335 0ustar covencoven Linux Advocacy mini-HOWTO

Linux Advocacy mini-HOWTO

autor: Paul L. Rogers, Paul.L.Rogers@li.org
v0.4, 6 Luty 1997
Wersja polska: Janusz Batko, Janusz.Batko@krakow.linux.org.pl
v0.1, 21 Kwiecień 1998


Dokument ten jest zbiorem wielu rad i sugestii dotyczących tego jak efektywnie może promować i rozpowszechniać Linuxa jego społeczność (czyli każdy dotychczasowy użytkownik Linuxa, chcacy zrobić coć konstruktywnego dla idei popularyzowania tego systemu - przypis tłumacza)

1. Informacje o tym dokumencie

Dokument ten to Linux Advocacy mini-HOWTO. Jego intencją jest dostarczenie ogólnych zaleceń i wytycznych jakie powinny towarzyszyć twoim staraniom slużącym promowaniu Linuxa.

To mini-HOWTO zostało zainspirowane przez Jona ``maddog'' Halla w momencie gdy zareagował on na potrzebę opracowania wytycznych slużących promowaniu Linuxa podczas Netday96. Pozytywnie przyjął on plan wytycznych i spostrzegł, że były one podstawą ``kanonow zachowania'', mogących przynieść pożytek społeczności linuxowej.

Dokument ten jest dostępny w formacie HTML pod adresem http://www.datasync.com/~rogerspl/Advocacy-HOWTO.html.

Net Makarevitch <nat@nataa.fr.eu.org> tłumaczy obecnie ten dokument na język francuski.

Chie Nakatani <jeanne@mbox.kyoto-inet.or.jp> przetłumaczył ten dokument na język japoński.

Janusz Batko <janus@krakow.linux.org.pl> przetłumaczył ten dokument na język polski.

Autorem i pomyslodawca Linux Advocacy mini-HOWOT jest Paul. L. Rogers <Paul.L.Rogers@li.org>.

Wszelkie komentarze i propozycje odnosnie tego dokumentu sa mile widziane.

Jesli potrzebujesz wiedziec wiedzej na temat Linux Documantion Project (LDP) lub Linux HOWTO's, skontatkuj sie z administratorem - Gregiem Hankinsem gregh@sunsite.unc.edu.

Greg Hankins wysyła ten dokument na poszczególne narodowe i międzynarodowe grupy newsowe przeważnie raz w miesiącu.

2. Prawa autorskie - informacje.

To mini-HOWTO jest własnością Paula L. Rogersa. Copyright (c) 1996 by Paul. L. Rogers. Wszelkie prawa zastrzezone.

Oryginalna kopia może być odtworzana lub rozpowszechniana na dowolnym nośniku fizycznym lub elektronicznym bez zgody autora. Tłumaczenia są dozwolone bez wyrażenia przyzwolenia, jeśli tylko zawierają informacje kto dokonał tłumaczenia.

Krótkie cytaty mogą być użyte bez uprzedniej zgody autora. Prace oparte na lub cześciowe dystrybucje Advocay mini-HOWTO muszą być załączone albo z orygialna kopią tego pliku albo ze wskazaniem na taką kopię.

Komercyjne rozpowszechanienie jest dozwolone i wręcz zalecane, jednakże autor życzy sobie być poinformowany o tym.

Innymi słowy, pragniemy rozpowszechniać zawarte tu informacje na wszystkie możliwe sposoby i wszelkimi możliwymi drogami, jednakże, chcemy przy tym zachować prawa autorskie. Chcielibyśmy także być informowani o wszelkich planach rozpowszechniania HOWTOs.

Pragniemy także by wszystkie informacje zawarte w HOWTOs były poszerzone. Jeśli masz pytania, skontaktuj się proszę z Gregiem Hankinsem, koordynatorem HOWTO, pod adresem gregh@sunsite.unc.edu.

3. Wprowadzenie.

Społeczność Linuxa ma świadomosc tego, że dla całego mnóstwa aplikacji Linux jest stabilnym, solidnym, pewnym i niezawodnym produktem. Niestety, jest wciąż wielu ludzi, również tych będących na kierowniczych stanowiskach, którzy nie zdają sobie sprawy z istnienia Linuxa i jego zalet.

Jeśli Linux i wiele innych elementów, które tworzą dystrubucję Linuxa mają osiagnąć swój pełny potencjał, jest bardzo ważne abyśmy zdobyli przyszłych klientow i zalecali (będąc ostrożnym by nie obiecywać za dużo) używanie Linuxa dla konkretnych, właściwych aplikacji. Należy pamiętać, że przyczyną, dla której wiele firmowych produktów sprzedaje się dobrze na rynku, nie jest wcale ich wyższość techniczna, lecz zdolności marketingowe firmy wypuszczajacej ten produkt.

Jeśli jesteś zadowolony używajac Linuxa i chciałbyś się przyczynić w jakiś sposób dla społeczności linuxowej, weź proszę pod uwagę działania w jednej lub wielu kwestiach zawartych w tym mini-HOWTO i pomoc innym nauczyć się czegoś wiecej o Linuxie.

4. Pomocne Informacje.

Lars Wirzenius, moderator comp.os.linux.announce, ma równiez pewne spostrzeżenia na temat skutecznego promowania Linuxa.

Celem Linux International jest promocja i rozwój Linuxa.

The Linux Documentation Project to nieocenione, bardzo bogate i cenne źródło informacji pomocne w promowaniu Linuxa.

The Linux Business Applications to forum organizacji zajmujących się Linuxem w codziennych działaniach biznesowych, służące dzieleniu się doświadczeniami związanymi z używaniem i promocją Linuxa w zastosowaniach komercyjnych.

Celem The Linux Advocacy Project's jest zachęcanie twórcow aplikacji komercyjnych by swoje oprogramowanie dostarczali także w wersjach dedykowanych dla Linuxa.

Program The Linux CD and Support Giveaway pomaga w szerokim udostępnianiu Linuxa poprzez zachęcanie do wielokrotnego używania CD-ROMow z Linuxem.

Specialized Systems Consultants, Inc. (SSC) jest wydawcą Linux Journal jak również Linux Gazette - pisma online, dostępnego tylko w postaci elektronicznej.

5. Promowanie Linuxa

6. Kanony Zachowania

7. Grupy Użytkownikow

8. Kontakty ze Sprzedawacami

9. Kontakty z Mediami

10. Podziękowania.

Duże podziękowanią nalezą się wszystkim, w tym:

 
        Jon "maddog" Hall   <maddog@zk3.digital.com>
        Greg Hankins        <gregh@cc.gatech.edu>
        Eric Ladner         <eladner@goldinc.com>
        Chie Nakatani       <eanne@mbox.kyoto-inet.or.jp>
        Nat Makarevitch     <nat@nataa.fr.eu.org>
        Martin Michlmayr    <tbm@cyrius.com>
        Idan Shoham         <idan@m-tech.ab.ca>
        Adam Spiers         <adam.spiers@new.ox.ac.uk>
        C. J. Suire         <suire@datasync.com>
        Lars Wirzenius      <liw@iki.fi>

11. Od tłumacza.

Copyright (c) by Janusz Batko (1997)

Autorem powyższego tłumaczenia jest Janusz Batko: <Janusz.Batko@krakow.linux.org.pl>

Autor zastrzega sobie wszelkie prawa do powyższego tłumaczenia. W ramach tych praw dozwolone jest dowolne kopiowanie i rozpowszechnianie tego dokumentu, także w celach komeryjnych (tutaj jednak autor pragnałby być o tym poinformowany).

Autor tłumaczenia nie ponosi żadnej odpowiedzialoności za wszelkie szkody powstałe w wyniku korzystania z tego tłumaczenia.

Jeśli znajdziesz w moim tłumaczeniu jakiekolwiek błedy (np. ortograficzne, techniczne, rzeczowe, gramatycze, składniowe itd.) to proszę napisz do mnie:

Janusz.Batko@krakow.linux.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu pub/Linux/JTZ/.

Kontakt z naszą grupą, grupą tłumaczy možesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

(w. 0.01 * Sobota * 25 czerwiec * 16:34:44 * 1997 * Kraków * Wersja polska) doc-linux-pl-2002.06.14.orig/mini/html/ApplePrint.pl.html0100664000175000017500000010305607104371340021653 0ustar covencoven Jak ustawić drukarkę używającą AppleTalk

Jak ustawić drukarkę używającą AppleTalk

Autor: Werner Eugster, eugster@giub.unibe.ch
Wersja polska: Bartosz Maruszewski B.Maruszewski@zsmeie.torun.pl
v1.01, 26 Lipca 1997


Jako użytkownik Linux-a chcesz mieć dostęp do drukarek Mac-a takich jak LaserWriter siedzących na sieci z kontrolerem EtherTalk. Jako użytkownik Mac-a chcesz mieć dostęp do wszystkich drukarek na Linux-ie. Aby ustawić taki serwis na Linux-ie musisz postępować według tej samej procedury w obu przypadkach. Po skompilowaniu i zainstalowaniu oprogramowania AppleTalk netatalk (jeśli tego nie zrobiłeś, to przeczytaj najpierw Podręcznik instalacji atalk napisany przez Andersa Brownwortha) pewnie już uruchomiłeś wszystkie demony poprzez rc.atalk w swoim katalogu /etc. Ale najpierw upewnij się, że serwis AppleTalk rzeczywiście działa zanim zaczniesz konfigurować drukarki. Ja używam netatalk w wersji 1.3.3 z łatami opisanymi w Przewodniku instalacyjnym Andersa Brownwortha. Powiedziano mi, że ścieżka do filtrów netatalk zmieniła się w nowszych wersjach.

1. Moja strefa AppleTalk.

Napisz /usr/local/atalk/bin/getzones, aby sprawdzić czy wszystkie strefy AppleTalk są widziane przez Linux-a. Powinieneś widzieć przynajmniej jedną nazwę, która jest twoją strefą lokalną, w innym przypadku bardzo prawdopodobne jest, że twój serwis AppleTalk nie działa poprawnie. Ja dostaję coś takiego (tylko kilka pierwszych linii):

        Pingo$ /usr/local/atalk/bin/getzones | more
        VLSB
        LSB-Integrative Biology
        LSB-Biology Library
        LSB-Herbaria
        LSB-UCMP
        LSB-MVZ
        Vanishing Packets
        MIP
        Barker Hall

Przy pomocy opcji dowiesz się która jest twoją strefą:

        Pingo$ /usr/local/atalk/bin/getzones -m
        VLSB
        Pingo$

Tak więc moją strefą lokalną jest VLSB, kompletną listę wszystkich lokalnych stref można uzyskać przy pomocy opcji -l (w razie gdy twoja drukarka nie jest w twojej strefie musisz znać dokładną nazwę strefy).

2. Dowiedz się jaka jest nazwa drukarki.

Jeśli chcesz tylko, aby lokalna drukarka UNIX-owa była dostępna dla klientów AppleShare, to przeskocz tę sekcję i idź do sekcji nr 3.

Najpierw musimy się dowiedzieć jak są zdefiniowane nazwy Internetowe w AppleTalk. Jest to bardzo podobne do tego co znasz ze swojego Linux-a. Nazwy występują w formie: objekt:typ@strefa. Jeśli nie zależy ci na nazwie strefy lokalnej to użyj @*.

Tak więc, aby znaleźć wszystkie objekty w twojej strefie, napisz /usr/local/atalk/bin/nbplkup, co wypluje wielką listę, z elementami jak ten:

Pingo$ /usr/local/atalk/bin/nbplkup |more
         Sun ValleyUs Macintosh:Macintosh IIsi           12398.245:253
         Sun ValleyUs Macintosh:Workstation              12398.245:4
       IB Instructional Support:  Power Macintosh        12398.196:253
       IB Instructional Support:Workstation              12398.196:4
                  centris 660AV:  Macintosh              12398.51:253
                  centris 660AV:Workstation              12398.51:4
           Chapin Lab vx - JoeC:Macintosh IIvx           12398.101:253
           Chapin Lab vx - JoeC:Workstation              12398.101:4
              Pingo Mac Printer:LaserWriter              12398.164:129
          Pingo Default Printer:LaserWriter              12398.164:128
                          Pingo:AFPServer                12398.164:130
                          Pingo:netatalk                 12398.164:4
                          Pingo:Workstation              12398.164:4
                      Lucicutia:AFPServer                12398.123:248
           Theobald Chapin, III:LaserWriter              12398.73:191

Jeśli chcesz znać tylko objekty konkretnego typu jak LaserWriter, musisz użyć /usr/local/atalk/bin/nbplkup :LaserWriter. Upewnij się, że wstawiłeś dwukropek, który oznacza, że chcesz znać tylko objekty typu LaserWriter. Słowo nie może zawierać dużych liter, ale nie możesz ominąć spacji. Tak więc, żeby zobaczyć Macintosh IIvx musisz wstawić nazwę typu w cudzysłowia:

Pingo$ /usr/local/atalk/bin/nbplkup  :"Macintosh IIvx"
           Chapin Lab vx - JoeC:Macintosh IIvx           12398.101:253
Pingo$

Dobra. Krótko: Chcę móc drukować z mojego Linux-a na LaserWriter o nazwie Theobald Chapin, III. Zanim spróbujesz ustawić printcap dla kolejki tej drukarki, upewnij się czy masz dostęp do tej drukarki.

Napisz /usr/local/atalk/bin/papstatus -p "Theobald Chapin, III" (zauważ, że cudzysłowia służą tylko temu, aby poinformować twoją powłokę, iż Theobald Chaplin, III to jeden argument a nie trzy) i powinieneś otrzymać coś takiego:

status: idle

Jeśli nie, to sprawdź czy AppleTalk rzeczywiście działa (może demon nie jest uruchomiony ? Sprawdź tak: ps -xa | grep atalkd i ps -xa | grep afpd).

Ponieważ LaserWriter spodziewa się PostScriptu, powinieneś mieć pod ręką krótki plik testowy w PostScripcie. Nazwa mojego pliku to: test.eps i mogę go wysłać bezpośrednio do Theobald Chaplin, III uruchamiając klienta drukowania AppleShare:

/usr/local/atalk/bin/pap -p "Theobald Chapin, III":LaserWriter@VLSB test.eps

Zauważ, że dołaczyłem nazwę strefy tylko po to, żeby się upewnić, że wszystko działa dobrze. Jeśli twoje zadanie drukowania się pojawi (co sekundę - czy jakoś tak - otrzymasz komunikat jeśli ktoś inny używa drukarki w tym samym momencie. Obserwuj odpowiedź twojej drukarki i co robi kiedy zacznie drukować twój plik).

Jeśli będziesz miał jakieś kłopoty, użyj aecho, aby sprawdzić objekty AppleTalk w ten sam sposób jakbyś używał ping-a przez TCP/IP (Ctrl-C zatrzymuje aecho):

/usr/local/atalk/bin/aecho "Theobald Chapin, III":LaserWriter@VLSB
14 bytes from 12398.73: aep_seq=0. time=15. ms
14 bytes from 12398.73: aep_seq=1. time=14. ms
14 bytes from 12398.73: aep_seq=2. time=14. ms
14 bytes from 12398.73: aep_seq=3. time=14. ms

----12398.73 AEP Statistics----
5 packets sent, 4 packets received, 20% packet loss
round-trip (ms)  min/avg/max = 14/14/15
Pingo$ 

Powinieneś stracić tylko ostatni pakiet przy przerwaniu Ctrl-C, w innym wypadku coś jest nie talk z twoim połączeniem.

3. Ustawianie serwisu drukowania na Linux-ie.

Będą dwa kroki. Najpierw upewnisz się, że możesz drukować na Linux-ie potem upewnisz się, że ta drukarka jest dostępna dla klientów AppleShare.

Mówiąc jaśniej: najpierw ustawisz swoją drukarkę, żeby była dostępna dla UNIX-a (lpd - demona drukowania) (sekcja 3.1 do 3.2), a potem udostępnisz ją innym użytkownikom w strefie AppleTalk (sekcja 3.3) co jest oczywiście opcjonalne.

Wielu ludzi nie lubi ustawiania z dwóch powodów:
(1) Jeśli drukarka AppleTalk jest już dostepna w strefie AppleTalk, to użytkownicy Mac-ów mogą się do niej bezpośrednio dołączyć. Więc nie ma potrzeby istnienia kolejki na Linux-ie. Jednak ja jestem użytkownikiem Linux-a i chcę mieć dostęp do tej drukarki i dlatego mój poniższy opis robi dokładnie to: pozwala użytkownikowi Linux-a na drukowanie na drukarce AplleTalk.
(2) Jeśli twoja drukarka jest drukarką lokalną podłączoną do równoległego portu Linux-a (np. /dev/lp1), to jest kilka zmian w pliku /etc/printcap. Ja pokażę przykład ustawienia z drukarką lokalną, którego nie testowałem, ale dostałem od innego użytkownika. Przeczytaj sekcję 3.4 na ten temat i sprawdź szczegółowe informacje na temat używania Ghostscript-u razem z Netatalk napisane przez Mike'a Pearsona i Billa McGonigle'a.

3.1 Konfiguracja twojego /etc/printcap.

Jeśli twoja drukarka może już drukować przy pomocy polecenia

Pingo$ lpr -P lp test.eps

to możesz przeskoczyć ten pierwszy krok.

W innym przypadku stań się "root-em" i idź do katalogu /etc, żeby wyedytować plik printcap. Szczegóły znajdziesz na stronie podręcznika systemowego "man". Ja opiszę tylko jak ustawić LaseWriter, tak żeby działał z poleceniem lpr z Linux-a.

Dodaj pozycję dla swojej drukarki do pliku printcap. Ja mam zdefiniowaną tylko LaserWriter i mój plik wygląda tak:

lp|Pingo LaserWriter|Theobald Chapin, III:\
        :sd=/usr/spool/theobald:\
        :lp=/dev/null:\
        :pl#63:pw#85:\
        :mx#0:\
        :sh:sf:\
        :lf=/usr/adm/lpd-errs:\
        :if=/usr/local/bin/myif:\
        :of=/usr/local/atalk/etc/ofpap:

nazwa drukarki dla użytkowników Linux-a

Pierwsza linia definiuje trzy logiczne nazwy, które nie muszą mieć żadnego podobieństwa do nazw, jakie chcesz nadać tej drukarce w kliencie AppleShare. Dlatego nazwałem ją lp, ponieważ jest to nazwa stosowana w większości UNIX-ów. Inne nazwy stosuję tylko po to, żeby wiedzieć co to właściwie za drukarka.

katalog zadań

Potem musisz mieć katalog zadań, gdzie demon będzie składował zadania. Ja nazwałem swój katalog zadań /usr/spool/theobald w tej samej hierarchii co katalog poczty.

Pingo$ ls -l
drwxrwxr-x   2 root     mail         1024 Feb  8 08:46 mail
drwxr-xr-x   2 root     mail         2048 Feb  8 17:23 mqueue
drwxrwxr-x   5 news     news         1024 Sep  1  1994 news
drwxrwxr-x   2 root     lp           1024 Feb  9 13:15 theobald

Stwórz go używając mkdir a potem ustaw właściciela (root), grupę (lp)

Pingo$ chown root.lp theobald

i prawa dostępu

Pingo$ chmod 775 theobald

Potem stworzyłem dwa pliki: lock i status w tym katalogu:

Pingo$ cd theobald
Pingo$ touch lock; chown root.root lock; chmod 004 lock
Pingo$ touch status; chown root.root status; chmod 664 status

teraz możesz zdefiniować ten katalog jako katalog zadań jak ja to zrobiłem w linii 2.

urządzenie drukarki

Jeśli twoja drukarka jest lokalną drukarką dołączoną do urządzenia takiego jak/dev/lp1, to to jest urządzenie, którego potrzebujesz. Użyjesz mknod, aby utworzyć to urządzenie jeśli go jeszcze nie ma. Dla drukarki w AppleTalk nie chcesz właściwie drukować do żadnego urządzenia, ale wysłać zadanie do tej drukarki używając programu pap z katalogu /usr/local/atalk/bin. Zrobi się to przy pomocy filtra psf, który uruchomi program pap, aby mieć dostęp do drukarki. Dlatego, po tym jak zadanie zostało wysłane do LaserWriter, jest ono ciągle w Linux-ie, ponieważ demon drukowania lpd ma na samym końcu wysłać to zadania na urządzenie. Dlatego zdefiniujemy urządzenie /dev/null jako urządzenie drukarki, które wyśle twoje zadanie w próżnię (bo chcesz mieć tylko to co się pojawiło na drukarce AppleTalk, prawda?). Dlatego w trzeciej linii wpiszemy :lp=/dev/null:\. Przeczytaj stronę podręcznika systemowego na temat psf, jeśli masz więcej niż jedną drukarkę AppleTalk i jeśli masz problemy z używaniem urządzenia /dev/null jako urządzenia drukarki.

rozmiar strony, maksymalny rozmiar pliku i nagłówek

Użyj pól pl i pw dla określenia długości strony (linie) i szerokości (znaki). Polem mx możesz zdefiniować maksymalny rozmiar pliku drukowanego. Jeśli plik jest większy, demon drukarki obetnie go, albo odmówi drukowania. Jeśli ustawisz tę wartość na 0 (mx#0), oznacza to, iż można drukować pliki o nieograniczonych rozmiarach. Uważaj, bo przypadkowo papier może się skończyć jeśli nikt się nie będzie o to troszczyć. A twoja głodna drukarka będzie wołać o papier ! Tak więc radzę nie ustawiać pola mx na 0 jeśli skończyłeś już testować i wszystko jest w porządku.

Polem sh możemy zabronić drukowania strony początkowej (z identyfikatorem właściciela itp.)

Polem sf możemy zabronić drukowania feed forms.

zapisywanie błędów

Ja zdefiniowałem do tego celu plik /usr/adm/lpd-errs. Będziesz musiał stworzyć ten plik samemu (np. poleceniem touch /usr/adm/lpd-errs)

filtry

To jest ważne ! Jak już to opisałem, twoje zadanie zostanie wysłane do drukarki AppleTalk tylko jeśli zainstalujesz odpowiedni filtr, który uruchomi program, pap. Pakiet netatalk używa konceptu hackerskiego, używając filtru psf, ale z różnymi dołączeniami do niego. psf analizuje nazwę tego dołączenia, aby dowiedzieć się, czy ma uruchomić pap jeśli podłańcuch jest w nazwie dołączenia, i odwrócić kolejność drukowania jeśli w nazwie jest rev. Spójrz na to wydając polecenie:

Pingo$ ls -l /usr/local/atalk/etc
lrwxrwxrwx   1 root     root            3 Feb  8 14:44 ifpap -> psf
lrwxrwxrwx   1 root     root            3 Feb  8 14:44 ifpaprev -> psf
lrwxrwxrwx   1 root     root            3 Feb  8 14:44 ofpap -> psf
-rwxr-xr-x   1 root     root        49299 Feb  8 14:44 papd
-rw-r--r--   1 root     root           35 Feb  9 13:48 papd.conf
-rwxr-xr-x   1 root     root        11395 Feb  8 14:44 psf
lrwxrwxrwx   1 root     root            3 Feb  8 14:44 tfpap -> psf
lrwxrwxrwx   1 root     root            3 Feb  8 14:44 tfpaprev -> psf
Pingo$ 

Tak więc filtr o nazwie ifpap uruchomi pap, ifpaprev odwróci kolejność stron i uruchomi pap. Zamienia on zwykły tekst na PostScript, tak żebyś nie skończył na komunikacie z błędem.

Jedyny filtr jaki musisz zainstalować to of:

        :of=/usr/local/atalk/etc/ofpap:

gdzie /usr/local/bin/myif jest prostym skryptem powłoki, który pozwala mi na przerywanie linii w tekście, które zostały zapisane programem, który automatycznie łamie linie (bp. textedit). Niestety filtr psf nie robi nic takiego i ignoruje ustawienia szerokości papieru. Ja napisałem swój własny filtr linebreak.c, który robi to dla mnie i umieść następujące linie w "myif":

#!/bin/sh
/usr/local/bin/linebreak $* | /usr/local/atalk/etc/ifpap $*

Jeśli w ten sposób ustawisz filtr tekstowy, to linbreak będzie uważał tylko na szerokość strony (ustawioną pw), podczas gdy ifpap (psf) sprawdza tylko długość. Wygląda na to, że psf zakłada, że pierwsza linia to 0, tak więc ustaw pl#63 jeśli chcesz mieć 64 linii na stronie.

Jeśli nie chcesz łamania linii, to po prostu umieść linię:

        :if=/usr/local/atalk/etc/ifpap:\

Teraz zapisz swój nowy printcap. Jeśli spróbujesz teraz coś wydrukować, dowiesz się, że jeszcze nie działa, więc czytaj następny paragraf.

Jak wspomniałem wcześniej, UNIX-owa nazwa drukarki w printcapie nie ma odpowiednika dla nazwy drukarki w AppleTalk. Musisz stworzyć plik .paprc w swoim katalogu zadań, który będzie zawierał adres drukarki w AppleTalk. Jest to tylko jedna linia. Zauważ, że nie musiałem umieszczać nazwy drukarki w cudzysłowia w tym pliku, ale inni piszą mi, że u nich to działało tylko z cydzysłowami. To spróbuj najpierw bez cydzysłowów:

Pingo$ cat /usr/spool/theobald/.paprc
Theobald Chapin, III:LaserWriter@VLSB

To teraz możesz zaczynać.

Jeśli dostaniesz komunikat o błędzie jak np. "Turing:LaserWriter@Tech Support": NBP wtedy spróbuj z cudzysłowami. Może być też tak, że musisz wstawić tylko nazwe przed dwukropkiem w cudzysłowa, tak: "Theobald Chapin, III":LaserWriter@VLSB. Jeśli masz jeszcze jakieś problemy, to myśl i kombinuj ;) NIe znam żadnego uniwersalnego sposobu na rozwiązanie tego problemu.

Więcej na temat hackowania i różnych obejść z filtrami znajdziesz w sekcji Znane problemy.

3.2 Przetestuj drukarkę.

Najpierw sprawdź czy demon drukarki jest rzeczywiście uruchomiony:

Pingo$ ps -xa | grep lpd
   45  ?  SW    0:00 (lpd)
  346 pp0 D     0:00 grep lpd
Pingo$ 

Spróbuj wydrukować plik w PostScripcie i plik tekstowy, żeby się przekonać, że wszystko działa. Przypuszczalnie musisz zrestartować demona poleceniem lpc. Uruchom lpc i napisz restart lp, down lp i up lp. Potem sprawdź status:

lpc> status
lp:
        queuing is enabled
        printing is enabled
        no entries
        no daemon present
lpc> 
lpc> quit

Teraz wydrukuj swój plik poleceniem

Pingo$ lpr -P lp filename

Jeśli wszystko jest w porządku, to plik status w katalogu zadań powienien teraz zawierać najświeższe informacje na temat twojej drukarki:

Pingo$ cat /usr/spool/theobald/status
job: Paul; status: busy; source: LocalTalk
Pingo$ 

3.3 Skojarz tę drukarkę z jakąś nazwą dla AppleTalk.

Jeśli teraz pójdziesz do Mac-a i spróbujesz wybrac swoją nową drukarkę dowiesz się, że pokaże się ona z nazwą twojego serwera Linux-owego. To może nie być zbyt zadowalające, dlatego musisz stworzyć, albo wyedytować plik papd.conf w katalogu etc AppleTalk, /usr/local/atalk/etc/papd.conf (przeczytaj "man papd" jeśli chcesz znać więcej szczegółów). Minimum tego co musisz zrobić to umieszczenie w tym pliku nazwy jaką chcesz nadać drukarce, a na końcu dopisz :\ tak jak w printcap-ie. W drugiej linii podajesz nazwę jaką ta drukarka ma w Linux-ie opcją pr. Mój plik wygląda tak:

Pingo$ cat /usr/local/atalk/etc/papd.conf
Pingo Mac LaserWriter:\
        :pr=lp:
Pingo$

Oznacza to, że (domyślna) zmienna lp zawiera nazwę: Pingo Mac LaserWriter dla klienta AppleShare. Dowiesz się również, że teraz użytkownik na Mac-u może drukować bezpośrednio na drukarce Theobald Chaplin III jak i poprzez Linux-a, gdzie nazwa drukarki to Pingo Mac LaserWriter. Dla mnie jest ważne, aby móc drukować bezpośrenio na tej drukarce, a podczas pracy na Mac-u drukowanie poprzez Linux-a wydaje się o wiele szybsze, ponieważ Linux zkolejkuje zadanie i zniknie ono natychmiast z mojego desktopu.

Jeśli chcesz zarejestrować swoją drukarkę w jakiejś strefie AppleTalk (nie w domyślnej strefie), po prostu podajesz tę strefę wraz z rozszerzeniem @nazwa_strefy w pliku papd.conf:

MotorsLab@EEAP:\
        :pr=ee3rd:

3.4 Jaka jest różnica między lokalną drukarką podłączoną do komputera Linux-owego?

Ta sekcja nie jest jeszcze całkiem gotowa !!!

/etc/princap:
lp:lp=/dev/lp1:sd=/usr/spool/lp1:sh

/usr/local/atalk/etc/papd.conf:
HP LJIIIp:\
        :pr=lp:\
        :pd=/usr/local/atalk/etc/HP_LaserJet_IIIP.ppd:

Sprawdź szczegóły na stronie Używanie ghostscript-a wraz z Netatalk.

4. Rozwiązywanie problemów.

4.1 Ogólna strategia.

Jeśli masz jakieś problemy podczas drukowania, nawet jeśli działało kiedy wszystko ustawiałeś tak jak opisałem, to spójrz do /usr/adm/mesaages (albo do /usr/log/messages albo /var/log/messages - przyp. tłum.) oraz do /usr/adm/syslog (patrz poprzednia uwaga). Jeśli tylko spróbujesz coś wydrukować używając filtru psf, to znajdziesz podobne linie w wymienionych wyżej plikach:

Feb 12 17:47:52 Pingo ofpap[1443]: starting for ?
Feb 12 17:47:52 Pingo ofpap[1443]: sending to pap[1444]
Feb 12 17:47:52 Pingo ofpap[1443]: straight text
Feb 12 17:47:59 Pingo ofpap[1443]: 1444 done
Feb 12 17:47:59 Pingo ofpap[1443]: pausing
Feb 12 17:48:01 Pingo ifpap[1447]: starting for ?
Feb 12 17:48:01 Pingo ifpap[1447]: sending to pap[1448]
Feb 12 17:48:01 Pingo ifpap[1447]: straight text
Feb 12 17:48:09 Pingo ifpap[1447]: 1448 done
Feb 12 17:48:09 Pingo ofpap[1443]: restarting
Feb 12 17:48:09 Pingo ifpap[1447]: done
Feb 12 17:48:09 Pingo ofpap[1443]: done
Feb 12 18:00:46 Pingo ofpap[1481]: starting for ?
Feb 12 18:00:46 Pingo ofpap[1481]: sending to pap[1482]
Feb 12 18:00:46 Pingo ofpap[1481]: straight text
Feb 12 18:00:51 Pingo ofpap[1481]: 1482 done
Feb 12 18:00:51 Pingo ofpap[1481]: pausing
Feb 12 18:00:52 Pingo ifpap[1485]: starting for ?
Feb 12 18:00:52 Pingo ifpap[1485]: sending to pap[1486]
Feb 12 18:00:52 Pingo ifpap[1485]: straight text
Feb 12 18:00:57 Pingo ifpap[1485]: 1486 done
Feb 12 18:00:57 Pingo ofpap[1481]: restarting
Feb 12 18:00:57 Pingo ofpap[1481]: done
Feb 12 18:00:57 Pingo ifpap[1485]: done

Jeśli coś nie działa, otrzymasz komunikat w /usr/adm/syslog jak ten:

Feb 12 10:04:59 Pingo papd[70]: No such printer: "lp"
Feb 12 10:04:59 Pingo papd[70]: printcap problem: "lp"

(twoja domyślna zmienna lp nie jest zdefiniowana)

Feb 12 17:02:21 Pingo ofpap[1149]: 1150 died with 1
Feb 12 17:02:21 Pingo lpd[1148]: lp: output filter died (1)
Feb 12 17:02:26 Pingo lpd[1148]: lp: Daemon filter 'f' terminated (11)
Feb 12 17:04:48 Pingo lpd[1195]: lp: Daemon filter 'f' terminated (11)
Feb 12 17:08:03 Pingo lpd[1216]: lp: Daemon filter 'f' terminated (11)
Feb 12 17:10:00 Pingo lpd[1228]: cannot execv /usr/local/bin/linebreak|/usr/local/atalk/ifpap
Feb 12 17:11:51 Pingo lpd[1244]: /usr/adm/lpd-errs: No such file or directory

(/etc/printcap nie akceptuje strumieni w definicji if; oto dlaczego używałem skryptu /usr/local/bin/myif. Zapomniałem także stworzyć pliku /usr/adm/lpd-errs, który zdefiniowałem w /etc/printcap)

4.2 Nieznane problemy

Najpierw przeczytaj sekcję o Znanych problemach. Jeśli nie będzie tam nic pomocnego dla ciebie, to wyślij do mnie list i dołącz do niego pliki /etc/printcap oraz /usr/local/atalk/etc/papd.conf.

nbplkup pokazuje nazwę drukarki i jej adres, ale ja nie dostaję żadnej odpowiedzi z programu papstatus od tej drukarki.

4.3 Znane problemy.

Dostaję dużo listów od ludzi, którzy mają problemy, więc umieszczę tutaj rozwiązania dla wszystkich. Będzie to rosnąca, nieposortowana lista. Po prostu sprawdź czy twój problem jest tu opisany.

nie ma wydruku zwykłego pliku tekstowego

Sprawdź czy nie masz w pliku /usr/adm/lpd-errs czegoś takiego:

unprintable character (0x9a)!

Jest to problem dotyczący psf, filtru użytego do drukowania. Zlokalizuj plik psf.c w swojej dystrybucji netatalk i uczyń go zapisywalnym

chmod 644 psf.c

Zlokalizuj drugą linię, w której jest łańcuch unprintable character. Pierwsze wystapienie (z dwóch) powino być w linii 402 a drugie - w 496 lub podobnie. Druga linia to jest przypuszczalnie ta, która ci sprawia kłopoty. Zamień

  if ( !isascii( *p ) || !isprint( *p )) {
      if ( !literal ) {
          fprintf( stderr, "unprintable character (0x%x)!\n",
                  (unsigned char)*p );
          return( 2 );  /* Toss job */
      }
      printf( "\\%o", (unsigned)*p );

na

  if ( !isascii( *p ) || !isprint( *p )) {
      if ( !literal ) {
          fprintf( stderr,
                  "unprintable character (0x%x) converted to ?!\n",
                  (unsigned char)*p );
          /* return( 2 );*/     /* Toss job */
          putchar( '?' );       /* Don't toss job!      */
      }
      else{
        printf( "\\%o", (unsigned)*p );
      }

Teraz napisz "make" w wierszu poleceń w katalogu netatalk (nie w tym, w którym jest psf.c, bo make nie będzie w tym przypadku znało ścieżki do pap !). Potem skopiuj nowe psf do odpowiedniego katalogu (/usr/local/atalk/etc).

To co się dzieje to: program zamienia niedrukowalny znak na znak "?" i nie przerywa pracy. Może ktoś ma lepszy pomysł na to jak przekonwertować niedrukowalny znak na jego odpowiednik w PostScripcie ?

Ale jeśli to będziesz robił, to uważaj na prawa autorskie w psf !

nie ma umlautów, ani znaków narodowych

Jak właśnie wyżej wspomniałem, psf nie obsługuje rozszerzonych zbiorów znaków. Ale nenscript to potrafi. Ale ponieważ nie jest to filtr, który mógłby zostać użyty bezpośrednio w printcap-ie, będziesz musiał to obejść. Ja mam zdefiniowaną dodatkową drukarkę, która obsługuje zwykły tekst używając nenscriptu.

/etc/printcap wygląda tak:

#
# Apple LaserPrinter Select 360 on AppleTalk:
#
lp|Pingo LaserWriter|Theobald Chapin, III:\
        :sd=/usr/spool/theobald:\
        :lp=/dev/null:\
        :pl#61:\
        :pw#80:\
        :mx#0:\
        :sh:\
        :sf:\
        :lf=/var/adm/lpd-errs:\
        :if=/usr/local/bin/myif:\
        :of=/usr/local/atalk/etc/ofpap:
#
# Special setup for plain text files, to convert to PostScript using nenscript
# instead of psf (which doesn't process the whole ISO characterset)
#
text:\
        :sd=/usr/spool/textprinter:\
        :lp=/dev/null:\
        :mx#0:\
        :sh:\
        :sf:\
        :lf=/var/adm/lpd-errs:\
        :of=/usr/local/bin/textfilter:

/usr/local/bin/textfilter jest skryptem w powłoce:

#!/bin/sh
/usr/bin/nenscript -P lp -2 -r -T US -i "Werner Eugster"

Niestety nie znalazłem sposobu na zachowanie nazwy pliku do drukowania i dlatego używam opcji -i z moim nazwiskiem, żeby oznaczyć wydruk. Może znajdziesz jakiś lepszy sposób używając np. Unix-owej zmiennej środowiskowej z loginem.

W tym ustawieniu otrzymuję tekst na papierze w układzie poziomym (opcja -r) w dwóch kolumnach (-2) wysłany na standardową drukarkę lp. Aby wydrukować zwykły plik tekstowy używam polecenia

lpr -P text plain.txt

Tak więc przede wszystkim, drukarka zdefiniowana jako text zamienia zwykły tekstowy plik na PostScript używając nenscript (który obsługuje pełen zestaw znaków ISO), ktory przekazuje go dalej do drukarki zdefiniowanej jako lp. Przez to, używając polecenia lpq zobaczysz, że zadanie drukowania pojawi się przy drukarce lp i przychodzącego ze standardowego wejścia, co jest poprawne.

Jeśli ktoś zna jakiś sposób, żeby umieścić na wydruku nazwę pliku, to będę bardzo wdzięczny za tę informację !

moje ustawienia długości i szerokości strony sa ignorowane

To był mój błąd. Sprawdź część powyżej, gdzie opisuję myif. Musisz dodać $* dwa razy w drugiej linii w pliku, która teraz wygląda tak:

#!/bin/sh
/usr/local/bin/linebreak $* | /usr/local/atalk/etc/ifpap $*

zadanie jest wysłane do drukarki, ale nie zostaje wydrukowane

Jest wiele takich problemów. Jeden, o którym dowiedziałem się od Paolo Supino to ten:

"Podczas krótkiej inspekcji wydruku z nbplkup (żeby zobaczyć czy są tak jakieś dziwne rzeczy), zobaczyłem, że nasza drukarka na sieci ma ten sam numer co serwer NT (który kolejkuje zadania z PC-tów). To było źle.
1. Serwer NT jest bardzo złym spoolerem.
2. Powinien on kolejkować tylko maszyny Windows-owe.
3. Pomimo tego, iż nie miał on przechwytywać wszystkiego co przez niego przeszło - on to robił.

Rozwiązanie: Wyłączyć zupełnie serwer drukowania dla Mac-ów na NT. Wyedytować plik .paprc w katalogu zadań tak, żeby wskazywał on bezpośrednio na drukarkę. Zrestartować komputer, żeby mu się pamięc odświeżyła.

moja drukarka nie bierze papieru z tego zasobnika, z którego ja chcę

Domyślnie wszystko jest drukowane na papierze ze standardowego zasobnika. Jeśli chcesz tak ustawić drukarkę, aby brała papier z innego zasobnika niż ze standardowego, to spróbuj tego:

Zmodyfikuj swój plik /usr/local/bin/myif i przepuść wszystko przez program awk, czy jakiś inny, który potrafi zapisać dodatkową linię do strumienia po nagłówku.
Np. Ja spróbowałem tak:

#!/bin/sh
/usr/local/bin/linebreak $* | awk '{if(NR==1&&$1~"%!"){print;print
"statusdict begin /manualfeed true store end\n";}else{print}}' | /usr/local/atalk/etc/ifpap $*

(upewnij się, że nie ma fizycznych łamań linii w linii drugiej).
A informuje to drukarkę o tym, że ma wziąć papier z podajnika ręcznego. Dla innych podajników zamień tekst w cuszysłowach ("statusdict begin /manualfeed true store end\n") na odpowiednie polecenie z tej listy:

Podajnik          |             Polecenie PostScriptu
------------------+---------------------------------------------------
przedni           | "statusdict begin 0 setpapertray end"
                  |
tylny             | "statusdict begin 1 setpapertray end"
                  |
automatyczny      | "statusdict begin /manualfeed true store end"

Polecenia PostScriptu do zdefiniowania wyjściowych "szufladek":

Szufladka         |              Polecenie PostScriptu
------------------+---------------------------------------------------
górna             | "0 statusdict /setoutputtray get exec"
                  |
dolna             | "1 statusdict /setoutputtray get exec"

Oczywiście jeśli chcesz zdefiniować podajnik wejściowy i szufladkę wyjściową, to musisz wstawić dwie linie do pliku PostScriptowego.

Chociaż to działa dla wejścia, które już jest PostScriptem. Jeśli chcesz to osiągnąć dla tekstu, który jest dopiero zamieniany na PostScript, to musisz zmodyfikować plik psf.c i skompilować nowy filtr psf. (nie zapomnij zainstalować go w katalogu /usr/local/atalk/etc !). Wszystko co musisz zrobić, to znaleźć linię %%!PS-Adobe-2.0 (ok. linii 379, musi to być funkcja textps(). Dodaj nową linię:

printf( "statusdict begin /manualfeed true store end\n" );

(i znowu - możesz zamienić tekst w cudzysłowach na ten, który ci odpowiada). Potem skompiluj ponownie psf i zainstaluj go.

Davis Goodman skończył na takim skrypcie myif, który sprawdza czy chcesz drukować w rozmiarach listowych czy normalnych. Jeśli jest to normalny, to wykonywane jest polecenie PostScriptu powodujące wybór tylnego podajnika, w innym przypadku papier pobierany jest z podajnika standardowego.

#!/bin/sh
bounding=`grep BoundingBox $8 | cut -d" " -f5 `
if [ "$bounding" = "" ]; then
  /usr/bin/awk '{if(NR==1&&$1~"%!"){print;print "statusdict begin 1 setpapertray end\n";}else{print}}' | /usr/local/atalk/etc/ifpap $*
else
  /usr/local/atalk/etc/ifpap $*
fi

To działa z Netscape a twoje własne oprogramowanie może przyjmować inne wartości. Załączyłem ten przykład tylko po to, żeby ci wskazać, gdzie należy zacząć jeśli chcesz robić podobne sztuczki.

Jeszcze jeden przykład jest od Tomasa Pospiska, który zdefiniował nazwy drukarek dla różnych podajników w tej samej drukarce w /etc/printcap. Żeby wydrukować na papierze z konkretnego podajnika wysyłasz zadanie na odpowiednią drukarkę. Jego printcap wygląda tak:

# LaserWriter Pro 630 (Default Tray)
lp:\
        :sd=/usr/spool/lp1:\
        :lp=/dev/null:\
        :pl#63:pw#85:\
        :mx#0:\
        :sh:sf:\
        :lf=/var/log/lp-errs:\
        :if=/usr/lib/atalk/filters/myif:\
        :of=/usr/lib/atalk/filters/ofpap:
#
# LaserWriter Pro 630 (Manual Tray)
lpm:\
        :sd=/usr/spool/lpm:\
        :lp=/dev/null:\
        :pl#63:pw#85:\
        :mx#0:\
        :sh:sf:\
        :lf=/var/log/lp-errs:\
        :if=/usr/lib/atalk/filters/myif_manual:\
        :of=/usr/lib/atalk/filters/ofpap:

a filtr myif wygląda tak:

#!/bin/sh
/usr/bin/awk '{if(NR==1&&$1~"%!"){print;print "statusdict begin
/manualfeed true store end\n";}else{print}}' |
/usr/lib/atalk/filters/ifpap $*

Jak dotąd dostałem konstruktywne komentarze i pytania od ludzi z

COM domena              11
EDU (USA)               12
US domena (USA)         1
GOV domena USA          2
NET domena              1

Australia               1
Austria                 2
Belgia                  1
Francja                 2
Niemcy                  5
Islandia                1
Włochy                  3
Japonia                 1
Holandia                1
Portugalia              2
Wileka Brytania         1
Szwajcaria              1

© 13 Marca 1997 Werner Eugster ( eugster@giub.unibe.ch)

5. Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@zsmeie.torun.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/BTTV-mini-HOWTO.pl.html0100664000175000017500000006516507354177140022225 0ustar covencoven BTTV Mini-HOWTO

BTTV Mini-HOWTO

Eric Sandeen eric_sandeen@bigfoot.com
wersja 0,3, luty 2000
Wersja polska: Leszek Pietryka lesio@mail.uw.edu.pl
wersja 1,0, 09 września 2001


Ten dokument opisuje, jaki sprzęt i oprogramowanie trzeba mieć i co trzeba zrobić, żeby uruchomić pod Linuksem kartę telewizyjną lub urządzenie przechwytujące obraz. Mowa jest o urządzeniach opartych na układzie bt8x8.

1. Wprowadzenie

Jedną z bardziej interesujących multimedialnych możliwości Linuksa jest fakt, że umożliwia on przechwytywanie i oglądanie obrazów wideo z różnych źródeł. Interfejs programistyczny API video4linux ( http://roadrunner.swansea.uk.linux.org/v4l.shtml) obsługuje wiele różnych typów urządzeń wideo, w tym tunery telewizyjne zbudowane z wykorzystaniem układów bt848 i bt878 firmy Conexant. Ten dokument wyjaśnia, jak korzystać z takich kart pod Linuksem.

1.1 Prawa Autorskie

Prawa autorskie do tego dokumentu należą do Erica Sandeena (1999).

O ile nie jest stwierdzone inaczej, prawa autorskie dokumentów Linux HOWTO należą do ich autorów. Dokumenty Linux HOWTO mogą być kopiowane i rozpowszechniane w całości lub w części, w jakiejkolwiek formie fizycznej lub elektronicznej, tak długo, dopóki ta klauzula dotycząca praw autorskich pozostaje dołączona do wszystkich kopii. Autor zezwala na dystrybucję komercyjną i zachęca do takowej, jednakże chciałby być poinformowany o takich wypadkach.

Wszelkie tłumaczenia, prace pochodne lub prace zbiorowe z wykorzystaniem dokumentów Linux HOWTO muszą być rozpowszechniane pod warunkiem dołączenia do nich kopii niniejszej informacji o prawach autorskich. Oznacza to, że nie można tworzyć prac pochodnych na podstawie tego HOWTO i jednocześnie nakładać dodatkowych restrykcji na ich rozpowszechnianie. Odstępstwa od tych zasad są możliwe pod pewnymi warunkami; skontaktuj się z koordynatorem Linux HOWTO pod adresem podanym poniżej.

Mówiąc w skrócie, staramy się promować rozpowszechnianie niniejszej dokumentacji tak wieloma sposobami, jak to możliwe. Chcielibyśmy jednakże zachować prawa autorskie do dokumentów HOWTO i wolelibyśmy być powiadamiani o wszelkich planach ich redystrybucji.

Jeśli macie jakieś pytania, skontaktujcie się z Timem Bynumem, koordynatorem Linux HOWTO pocztą elektroniczną pod adresem linux-howto@metalab.unc.edu

1.2 Gdzie można znaleźć ten dokument

Najnowszą oficjalną wersję tego dokumentu można znaleźć pod adresem Linux Documentation Project http://metalab.unc.edu/LDP/.

1.3 Podziękowania

Dziękuję Ralphowi Metzlerowi i Marcusowi Metzlerowi za napisanie oryginalnego sterownika bttv. Dziękuję Alanowi Coxowi za stworzenie interfejsu programowania Video4Linux, Gerdowi Knorrowi za pracę nad obsługą kart radiowych, kolejne wersje bttv i xawtv. Dziękuję też wszystkim innym za ich wkład w pracę nad obsługą kart TV przez Linuksa. Dziękuję Williamowi Burrowowi za napisanie BTTV HOWTO (o którym dowiedziałem się po tym, jak napisałem ten dokument...). Poprawiłem ten podręcznik dzięki jego pracy.

To HOWTO opiera się w dużej mierze na dokumentacji bttv i xawtv.

1.4 Zastrzeżenie

Nie ponoszę żadnej odpowiedzialności za informacje zawarte w tym dokumencie. Wszystkich zaleceń, przykładów i/lub innych wskazówek używacie wyłącznie na własne ryzyko.

Wszelkie prawa autorskie należą do właścicieli, o ile nie jest stwierdzone inaczej. Użycie jakiegokolwiek terminu w tym dokumencie nie powinno być uważane za naruszenie ważności żadnego znaku handlowego ani usługowego.

Nazwy produktów lub marek użyte są wyłącznie w celach informacyjnych i nie stanowią podstawy do żadnych roszczeń. Zalecane jest utworzenie kopii zapasowej systemu przed właściwą instalacją bttv, jak również tworzenie kopii zapasowych w regularnych odstępach czasu.

2. Wymagania Sprzętowe

Z pliku README w dokumentacji bttv:

Bttv jest sterownikiem dla urządzeń przechwytujących obraz, opartych na rodzinie układów dekodujących wideo Bt848 firmy Conexant ( http://www.conexant.com). Do tej rodziny należą układy: Bt848, Bt848A, Bt849, Bt878 i Bt879. Jedyne różnice między kartami produkowanymi przez różnych wytwórców to typy tunerów i dodatkowe komponenty na kartach. Na przykład, niektóre karty Hauppauge mają dodatkowy dekoder wideotekstu i/lub dekoder dźwięku. Bttv nie obsługuje wszystkich dodatkowych komponentów. Występują też różnice w typach i ilości wejść (kompozytowe, S-Video).

Następujące karty powinny działać:

Jeśli wiecie, że działają jakieś inne karty, wyślijcie mi, proszę, e-maila, a dołączę je w następnej wersji HOWTO.

3. Wymagania Programowe

Aby uruchomić kartę TV pod Linuksem, potrzebujemy odpowiednich sterowników. Sterownik bttv znajduje się w jądrze począwszy od wersji 2.2.0.

Możemy też zaopatrzyć się w najnowszą wersję pakietu sterownika i używać go z jądrem 2.0.35 lub nowszym. Nie będzie on jednak raczej działał ze starszymi jądrami 2.0.x. Zaktualizowany pakiet bttv można znaleźć pod adresem http://www.thp.uni-koeln.de/~rjkm/linux/bttv.html, a jeszcze nowszy można ściągnąć od Gerda Knorra spod adresu http://www.in-berlin.de/User/kraxel/xawtv.html. W tych pakietach dodano obsługę układów dźwiękowych, między innymi TEA6300, TDA8425, i DPL3518.

Jeśli nie mamy pojęcia o sterownikach bttv, lepiej będzie, jeśli wypróbujemy najpierw wersję bttv dołączoną do ostatniego jądra. Jeśli będziemy mieli z tym kłopoty, lub okaże się, że nasza karta nie jest jeszcze obsługiwana, spróbujmy szczęścia z nowszą serią 0.6, do ściągnięcia z powyższych adresów. Jeśli jesteśmy naprawdę odważni, wypróbujmy serię sterowników 0.7, autorstwa Gerda Knorra. Będą one dołączone do jąder 2.4 i również dostępne są pod adresem http://www.in-berlin.de/User/kraxel/xawtv.html.

Ten dokument opisuje głównie sterowniki jądra 2.2.14. Wspomniane są pewne właściwości nowej serii 0.6. Obecnie brakuje opisu serii 0.7, ponieważ w chwili pisania trwają intensywne prace nad jej opracowywaniem.

4. Konfiguracja systemu

4.1 Instalacja karty

Dziękuję Williamowi Burrowowi za tę sekcję.

Jeśli boimy się zdjąć obudowę komputera, przeczytajmy najpierw całe HOWTO i zanotujmy gdzieś informacje o swojej karcie, czyli typ tunera, numery układów scalonych, częstotliwości kryształu (kryształów) itp. Potem znajdźmy kogoś, kto się na tym zna i zainstaluje nam kartę.

W przeciwnym wypadku, zdejmijmy obudowę i zainstalujmy kartę w wolnym gnieździe. Wybierzmy takie gniazdo, które obsługuje zarządzanie magistralą PCI i transfer PCI, jeśli nasza płyta główna umożliwia taki wybór (zobaczmy w instrukcji obsługi płyty). Będzie nam to potrzebne dla trybu odbierania obrazu.

Aby uzyskać dźwięk, możemy połączyć kartę TV i kartę muzyczną na dwa sposoby. Jeden z nich to sposób wewnętrzny. Podłączmy kabel audio CD-ROM-u do wejścia dźwiękowego karty wideo, a wyjście karty wideo podłączmy do wejścia audio na karcie muzycznej, w CD-ROM-ie lub tunerze. Możemy też podłączyć zewnętrzną wtyczkę typu "jack" 1/8 cala (3 mm) z karty wideo do wejścia liniowego audio na karcie muzycznej. Inny sposób to podłączenie wzmacniacza z głośnikami bezpośrednio do wyjścia audio karty TV, jeśli nie mamy karty dźwiękowej lub nie chcemy z niej korzystać (niektóre z nowszych kart z układem bt878 nie mają żadnego wyjścia dźwiękowego, ponieważ transmitują dźwięk w postaci cyfrowej przez szynę PCI. W momencie pisania tego dokumentu ta funkcja nie jest jeszcze obsługiwana).

Źródło wideo przydaje się też, jeśli chcemy sprawdzić, czy karta w ogóle działa. Wiele kart ma osobne wejścia dla sygnału kompozytowego, S-Video oraz, o ile mają tuner radiowy, dla RF (radio frequency).

4.2 Konfiguracja jądra

Aby jądro obsługiwało kartę TV, trzeba je odpowiednio skonfigurować. W większości nowych dystrybucji Linuksa odpowiednie moduły są już skompilowane. Jeśli więc w katalogu /lib/modules/2.x.x/misc są moduły videodev.o, bttv.o i tuner.o, to możemy iść dalej.

Jeśli nie znaleźliśmy odpowiednich modułów, będziemy musieli zrekompilować jądro z włączonymi opcjami:

CONFIG_VIDEO_DEV

oraz

CONFIG_VIDEO_BT848.

Powinniśmy skompilować je jako moduły. Przeczytajmy Linux Kernel HOWTO ( http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html), aby dowiedzieć się więcej szczegółów na temat rekompilacji jądra.

4.3 Jak używać nowszych pakietów 0.6.x

Jeśli chcemy używać nowszego sterownika z serii 0.6.x, musimy ściągnąć spakowane archiwum z jednej ze wspomnianych stron. Następnie rozpakowujemy je poleceniem

tar -xvzf bttv-0.6.x.tar.gz

i przechodzimy do nowo utworzonego katalogu. Wpisujemy su aby stać się rootem. Następnie piszemy

make

w głównym katalogu ze źródłami, aby utworzyć sterownik (możemy spokojnie zignorować informację w pliku INSTALL, która dotyczy modyfikacji plików makefile i tym podobnych, ponieważ odpowiednie opcje będziemy przekazywać sterownikowi w postaci parametrów modułu). Następnie piszemy

make install,

aby zainstalować sterownik. Na koniec wykonujemy

/sbin/depmod -a,

aby uaktualnić informacje o zależnościach międzymodułowych.

http://roadrunner.swansea.uk.linux.org/v4lapi.shtml).

W podkatalogu driver katalogu ze źródłami bttv znajduje się skrypt MAKEDEV, który utworzy nam cztery urządzenia wideo. Możemy łatwo zrobić to sami, jeśli mamy tylko jedną kartę TV. Jako root, wpisujemy:

mknod /dev/video0 c 81 0

chmod 666 /dev/video0

ln -s /dev/video0 /dev/video

mknod /dev/radio0 c 81 64

chmod 666 /dev/radio0

ln -s /dev/radio0 /dev/radio

Jeśli mamy jakieś aplikacje wymagające urządzeń videotext i VBI, również możemy je utworzyć (nie ma ich za wiele). Wpiszmy:

mknod /dev/vtx0 c 81 192

chmod 666 /dev/vtx0

ln -s /dev/vtx0 /dev/vtx

mknod /dev/vbi0 c 81 224

chmod 666 /dev/vbi0

ln -s /dev/vbi0 /dev/vbi

4.5 Ładowanie modułów

Sterownik bttv składa się z różnych modułów. Każdy może przyjmować wiele opcji, co jest opisane w dodatku do tego dokumentu. Mając tyle modułów i opcji, być może będziemy chcieli ładować je ręcznie, dopóki wszystko nie będzie działało, jak należy. Ponieważ może to spowodować (choć jest to mało prawdopodobne) zwis systemu, nie zaszkodzi wpisać:

sync; sleep 1; sync

aby zapisać bufory systemu plików, zanim pójdziemy dalej. Następnie, jako root, poleceniem insmod ładujemy moduły. Pierwsze dwa są łatwe, ponieważ z reguły nie wymagają opcji:

insmod videodev

insmod i2c

Teraz możemy załadować sam moduł bttv:

modprobe bttv

Domyślnie moduł bttv próbuje sam wykryć typ karty. Sprawdźmy /var/log/messages aby zobaczyć, czy mu się udało. Jeśli nie wykrył karty właściwie, na końcu polecenia dodajemy opcję card=n, co wymusza typ karty. n wybieramy z poniższej listy. (Typy od 0 do 19 są obsługiwane przez sterownik dostarczany z jądrem, bttv-0.6.4h obsługuje typy od 20 do 27). Możemy też dodać opcję radio=1, jeśli karta ma tuner FM.

Uwaga! W jądrach serii 2.4.x ze sterownikiem bttv 0.7.x ta lista jest zmieniona i poszerzona. Przeczytaj /usr/src/linux/Documentation/video4linux/bttv/CARDLIST, aby dowiedzieć się więcej (przyp. tłum.).


card=n          typ karty
                0:  Auto-Detect
                1:  Miro
                2:  Hauppauge (stare karty na bt848)
                3:  STB
                4:  Intel
                5:  Diamond
                6:  AVerMedia
                7:  MATRIX Vision MV-Delta
                8:  FlyVideo
                9:  TurboTV
                10: Hauppauge (nowe karty na bt878)
                11: MIRO PCTV pro
                12: Terratec/Vobis TV-Boostar
                13: Newer Hauppauge WinCam (bt878)
                14: MAXI TV Video PCI2
                15: Terratec TerraTV+
                16: Aimslab VHX
                17: PXC200
                18: AVermedia98
                19: FlyVideo98 (nowsze karty FlyVideo)
                20: Zoltrix TV-Max
                21: iProTV
                22: ADS Technologies Channel Surfer TV
                23: Pixelview PlayTV (bt878)
                24: Leadtek WinView 601
                25: AVEC Intercapture
                26: LifeView FlyKit w/o Tuner
                27: Intel Create and Share PCI

Następnie ładujemy moduł tunera:

modprobe tuner type=n

Żeby określić typ tunera, prawdopodobnie będziemy musieli zdjąć obudowę komputera i obejrzeć kartę. Niektóre karty (Miro i Hauppauge) umożliwiają automatyczne wykrycie tunera, ale może będziemy musieli podać go sami. Tuner powinien być oznaczony nazwą firmy. Możemy spojrzeć na kryształy (małe skrzyneczki z aluminium) na karcie, aby zobaczyć, czy jest to tuner PAL czy NTSC. Dla systemu PAL kryształ jest oznaczony 28.xxxMHz (gdzie xxx to trzy cyfry). Oznaczeniem NTSC jest 35.xxxMHz. Po określeniu typu tunera wybieramy wartość n z następującej listy (typy 8 i 9 znajdują się tylko w bttv-0.6.4h):


type=n          typ układu tunera. n jest następujące:
                0: tuner Temic PAL
                1: tuner Philips PAL_I
                2: tuner Philips NTSC
                3: tuner Philips SECAM
                4: brak tunera
                5: tunerPhilips PAL
                6: tuner Temic NTSC
                7: tuner Temic PAL
                8: tuner Alps TSBH1 NTSC
                9: tuner Alps TSBE1 PAL

Na końcu ładujemy potrzebne moduły obsługi dźwięku. I znowuż, będziemy musieli uważnie przyjrzeć sie karcie i zobaczyć, jaki mamy układ dźwiękowy. Uwaga: sterowniki dla układów TEA6300, TDA8425, TDA9855 i DPL3518 znajdują sie tylko w wersji bttv 0.6.4h. Ne ma ich w bieżącej (2.2.14) wersji jądra.

modprobe msp3400 albo tea3600 albo tda8425 albo tda9855 albo dpl3518 (szczegóły i opcje zamieszczone są w dodatku)

Uruchamiamy teraz nasz ulubiony program video4linux i sprawdzamy, czy działa. Jeśli nie możemy zmienić kanału, upewnijmy się, że załadowaliśmy właściwy moduł tunera. Jeśli nie słychać dźwięku, dwa razy sprawdźmy moduł dźwięku i, jeśli przepuszczamy sygnał audio przez kartę muzyczną, upewnijmy się, że dźwięk nie jest wyciszony.

4.6 Automatyzacja ładowania modułów

Wiedząc, jakich modułów i jakich opcji potrzebujemy, możemy zautomatyzować proces ich ładowania. W tym celu dokonujemy odpowiednich wpisów w pliku /etc/conf.modules (albo /etc/modules.conf - przyp.tłum.). Jeśli wówczas uruchomimy jakąś aplikację potrzebującą danego sterownika, zostanie on załadowany automatycznie. Ja wpisałem coś takiego:


# TV
alias   char-major-81   bttv
pre-install bttv        modprobe -k tuner; modprobe -k msp3400
options bttv            radio=1 card=3
options tuner           type=2

Pamiętajmy o zmianie tych wpisów, aby moduły i opcje odpowiadały konkretnemu modelowi karty. (Wykonajmy polecenie /sbin/depmod -a aby upewnić się, że informacje o zależnościach międzymodułowych są aktualne.)

5. Aplikacje

Skonfigurowaliśmy już jądro i urządzenia, załadowaliśmy odpowiednie moduły. Teraz potrzebna nam aplikacja, żeby oglądać lub przechwytywać obrazy z karty TV. Jest ich sporo:

Pod adresem http://wolf.ifj.edu.pl/~jochym/FlyVideo98/ jest dostępny sterownik dla pilota karty FlyVideo98.

Koniecznie przeczytajmy dokumentację każdej aplikacji, której chcemy używać. Wiele z nich wymaga modyfikacji plików konfiguracyjnych, żeby w ogóle działać! Ponadto, istnieje wiele typów kart TV, dlatego musimy poświęcić czas na przeczytanie dotyczącej ich dokumentacji, gdyż z reguły ustawienia domyślne aplikacji nie będą działały z naszą kartą.

6. Dodatek - Opcje dla wszystkich modułów

Punkty poprzedzone znakiem "*" są dostępne tylko w serii 0.6.4h.



videodev.o
        podstawowy moduł video4linux. Zaliczają się do niego wszystkie
sterowniki wideo (w tym bttv).



i2c.o
        standardowy moduł i2c. Zarządza obsługą magistrali i2c, korzystają z
niego wszystkie inne moduły (oprócz videodev.o)


        opcje insmod:


                scan=1          skanuje szynę w poszukiwaniu urządzeń i2c
                verbose=0       każe się zamknąć i2c
                i2c_debug=1     dla debugowania. Wysyła cały ruch
(programowy, nie sprzętowy) )na szynie i2c do syslog




bttv.o
        sterownik układu przechwytującego obraz bt848



        opcje insmod:


                remap=adr       remapuje pamięć Bt848 do adresu <<20
        



                vidmem=base     adres bufora ramek (karty graficznej) >>20


                triton1=0/1     dla zgodności z układem Triton1. Ten układ
jest co prawda rozpoznawany automatycznie, ale może to pomóc z innymi
układami


                pll=0/1/2       ustawienia pll
                                0: nie używaj PLL
                                1: zainstalowany kryształ 28 MHz
                                2: zainstalowany kryształ 35 MHz
                radio=0/1       karta obsługuje radio
                card=n          typ karty
                                0:  Auto wykrywanie
                                1:  Miro
                                2:  Hauppauge (stare karty na bt848)
                                3:  STB
                                4:  Intel
                                5:  Diamond
                                6:  AVerMedia
                                7:  MATRIX Vision MV-Delta
                                8:  FlyVideo
                                9:  TurboTV
                                10: Hauppauge (nowe karty na bt878)
                                11: MIRO PCTV pro
                                12: Terratec/Vobis TV-Boostar
                                13: Nowsze Hauppauge WinCam (bt878)
                                14: MAXI TV Video PCI2
                                15: Terratec TerraTV+
                                16: Aimslab VHX
                                17: PXC200
                                18: AVermedia98
                                19: FlyVideo98 (nowsze karty FlyVideo)
                                *20: Zoltrix TV-Max
                                *21: iProTV
                                *22: ADS Technologies Channel Surfer TV
                                *23: Pixelview PlayTV (bt878)
                                *24: Leadtek WinView 601
                                *25: AVEC Intercapture
                                *26: LifeView FlyKit w/o Tuner
                                *27: Intel Create and Share PCI

        remap, card, radio i pll akceptują do czterech oddzielonych
przecinkiem opcji (jeśli mamy więcej niż jedną kartę TV). Definicje CARD
i PLL z pliku Makefile są używane jako wartości domyślne.



msp3400.o
        sterownik dla układów dźwiękowych msp34xx. Jeśli mamy kartę stereo,
prawdopodobnie należy go załadować.


        opcje insmod:

                debug=1/2       wysyła informacje użyteczne dla debugowania do
syslog. 2 jest bardziej gadatliwe.




*tea6300.o
        Sterownik układu tea6300 fader. Jeśli z kartą stereo nie
działa moduł msp3400.o, możemy wypróbować ten. Układ ów można znaleźć na
większości kart STB TV/FM (z reguły kupionych na aukcjach internetowych z
nadwyżek Gateway OEM)




        opcje insmod:

                debug=1         wysyła informacje użyteczne dla debugowania do
syslog.



*tda8425.o
        Sterownik układu tda8425. Kiedyś był on częścią bttv.c, więc jeśli
dźwięk nam działał, ale przestał, załadujmy ten moduł.



        opcje insmod:

                debug=1         wysyła informacje użyteczne dla debugowania do
syslog.



*tda9855.o
        Sterownik dekodera dźwięku / procesora audio tda9855.


        opcje insmod:   

                debug=1         wysyła informacje użyteczne dla debugowania do
syslog.

*dpl3518.o
        Sterownik układu dpl3518a Dolby Pro Logic Processor

        opcje insmod:   

                debug=1         wysyła informacje użyteczne dla debugowania do
syslog.

tuner.o
        Sterownik tunera. Potrzebujemy go koniecznie, chyba że chcemy
używać tylko kamery lub zewnętrznego tunera...


        opcje insmod:

                debug=1         wysyła informacje użyteczne dla debugowania do
syslog.


                type=n          typ układu tunera. n jak poniżej:
                                0: tuner Temic PAL
                                1: tuner Philips PAL_I
                                2: tuner Philips NTSC
                                3: tuner Philips SECAM
                                4: brak tunera
                                5: tuner Philips PAL
                                6: tuner Temic NTSC
                                7: tuner Temic PAL
                                *8: tuner Alps TSBH1 NTSC
                                *9: tuner Alps TSBE1 PAL

i2c_chardev.o
        urządzenie znakowe dla dostępu do szyny i2c. Działa tylko z
jądrami 2.1.x, nie kompilowane domyślnie.


7. Od tłumacza

Tłumaczenie to jest chronione prawami autorskimi © Leszka Pietryki. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znajdziecie tu jakieś poważne błędy, literówki itp., wyślijcie mi, proszę, e-maila, żebym mógł je poprawić.

Nie ponoszę żadnej odpowiedzialności za ewentualne efekty stosowania się do rad zawartych w tym dokumencie.

W jądrach serii 2.4 konfiguracja przebiega nieco inaczej - moduły szyny i2c zostały oddzielone, rozszerzono zakres obsługiwanego sprzętu. Koniecznie przeczytajcie dokumentację w /usr/src/linux/Documentation/video4linux/.

doc-linux-pl-2002.06.14.orig/mini/html/Bridge+Firewall.pl.html0100664000175000017500000005176407104371340022542 0ustar covencoven Bridge+Firewall

Bridge+Firewall

Autor: Peter Breuer, ptb@it.uc3m.es
v1.1, 23 Grudnia 1996
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.01, 26 Lipca 1997


W oryginalnym dokumencie na temat Bridge'a opisane są inne sposoby podejścia. Jest to Bridge mini-HOWTO napisane przez Chrisa Cole'a <chris@polymer.uakron.edu>. Wersja, na której bazowałem to 1.03 z 23 Sierpnia 1996. Oryginał tego dokumentu znajduje się na ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO/mini. Dokument ten jest napisany w standardzie ISO-8859-2.

1. Co, jak i dlaczego ?

1.1 Co.

Bridge jest to inteligentne połączenie pomiędzy dwoma kartami sieciowymi. Firewall jest to inteligentny izolator.

1.2 Dlaczego.

Możesz chcieć bridge'a jeśli masz kilka komputerów:

"Kilka komputerów" to może być np. trzy jeśli mają być rutowane, bridge'owane albo po prostu od czasu do czasu zmieniają swoje miejsce pobytu. Możesz także chcieć mieć bridge tylko dla zabawy, żeby się dowiedzieć co on robi - ja właśnie dlatego sobie go postawiłem.

Jeśli naprawdę chcesz go postawić z pierwszego powodu, to poczytaj lepiej NET-3-HOWTO albo Serial-HOWTO a znajdziesz tam lepsze obejścia.

Firewall jest ci potrzebny jeśli:

Ja tu potrzebowałem tego drugiego. Przepisy na naszym uniwersytecie zabraniały nam grać rolę dostawcy Internet-u dla studentów.

1.3 Jak.

Zacząłem bridge'ować dwie karty sieciowe w maszynie z firewallem a skończyłem na firewall-owaniu wraz z bridge'owaniem bez usuwania jednej z funkcji. Wydaje się to działać znacznie bardziej wydajnie niż każda z konfiguracji osobno. Mogę na przykład wyłączyć firewall a bridge dalej działa albo odwrotnie jeśli chcę być bardziej bezpieczny.

Stawiałbym na to, że kod bridge'a jest tuż nad fizycznym poziomem urządzenia a kod firewalla jest o jeden poziom wyżej, tak że połaczenie bridge'a z firewallem działa tak jakby to była jedność a nie jakby działały równolegle.

  -> wej. bridge'a -> wej. firewalla -> jądro -> wyj. firewalla -> wyj. bridge'a

Nie ma innego sposobu na wytłumaczenie dlaczego maszyna może być "konduktorem" i izolatorem w tym samym czasie. W każdym razie wydaje się to działać razem bardzo dobrze. Oto co ja robię ...

2. Bridge.

2.1 Oprogramowanie.

Zdobądź konfigurator do bridge'a BRCFG.tgz.

2.2 Najpierw poczytaj.

Przeczytaj Multiple-Ethernet, żeby się dowiedzieć jak rozpoznać i skonfigurować więcej kart sieciowych.

Więcej szczegółów na temat magii startowania, które możesz potrzebować jest w BootPrompt-HOWTO.

Może obędzie się bez NET-3-HOWTO. Jest to dobry i długi dokument i będziesz musiał wybrać sobie to czego potrzebujesz.

2.3 Konfiguracja startu systemu.

Po przeczytaniu powyższego dowiesz się, że musisz skompilować jądro, żeby rozpoznało drugie urządzenie ethernet-owe podczas startu oraz, że musisz dodać linię do pliku /etc/lilo.conf i uruchomić lilo:

        append = "ether=0,0,eth1"

Zauważ, że jest tu eth1. eth0 jest pierwszą kartą a eth1 jest drugą kartą. Zawsze możesz podać parametry podczas startu kiedy lilo ich oczekuje. Oto przykład dla trzech kart:

        linux ether=0,0,eth1 ether=0,0,eth2

Ja używam loadlin.exe, aby uruchomić Linux-a:

        loadlin.exe c:\vmlinuz root=/dev/hda3 ro ether=0,0,eth1 ether=0,0,eth2

Zauważ, że to zmusza jądro do szukania podczas startu. Nie będzie to miało miejsca jeśli załadujesz sterowniki ethernet-owe jako moduły (ze względów bezpieczeństwa ponieważ kolejność szukania nie może być określona). Więc jeśli używasz modułów, to będziesz musiał dodać parametry określające IRQ i port w pliku /etc/conf.modules - to jest mój przykład:

             alias eth0 3c509
             alias eth1 de620
             options 3c509 irq=5 io=0x210
             options de620 irq=7 bnc=1

Możesz sprawdzić czy używasz modułów przez ps -aux i zobaczenie czy jest proces kerneld i czy w katalogu /lib/modules/`uname -r` są pliki *.o. (w miejsce uname -r wstaw wynik tego polecenia). Jeśli masz proces kerneld albo w podanym katalogu są pliki *.o, to wyedytuj plik /etc/conf.modules i przeczytaj uważnie stronę podręcznika systemowego na temat depmod.

Zauważ też, że do niedawna (2.0.25) sterownik 3c509 nie mógł być użyty jako moduł dla więcej niż jednej karty. Widziałem gdzieś łatę, która naprawia tę niedogodność. Może on być w jądrze kiedy to czytasz.

2.4 Konfiguracja jądra.

Skompiluj jądro z włączoną opcją bridge.

 CONFIG_BRIDGE=y

Ja skompilowałem także z włączonymi opcjami firewalling, IP-forwarding, IP-masquerading i resztą. Ale tylko jeśli chcesz mieć także firewall.

CONFIG_FIREWALL=y
CONFIG_NET_ALIAS=y
CONFIG_INET=y
CONFIG_IP_FORWARD=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_FIREWALL_VERBOSE=y
CONFIG_IP_MASQUERADE=y

Nie potrzebujesz tego wszystkiego. To czego potrzebujesz, to standardowa konfiguracja sieci:

CONFIG_NET=y

i nie sądzę, żebyś się musiał przejmować innymi opcjami związanymi z siecią. Wszystkie opcje, których właściwie nie wkompilowałem w jądro mam dostępne jako moduły i mogę je dodać później.

Zainstaluj nowe jądro, uruchom lilo i zresetuj z nowym jądrem. W tym momencie nic się nie powinno zmienić.

2.5 Adresy sieciowe.

Chris twierdzi, że bridge nie powinien mieć adresu IP, ale to nie jest to ustawienie opisane tutaj.

Będziesz chciał używać tej maszyny do łączenia się z siecią więc potrzebujesz adresu i musisz się upewnić, że masz skonfigurowane poprawnie urządzenie "loopback", tak żeby twoje oprogramowanie mogło komunikować się z miejscami, z którymi spodziewa się, że będzie się mogło porozumieć. Jeśli nie będzie tego urządzenia, to serwis nazw albo inny serwis sieciowy może nie działać. Przeczytaj NET-3-HOWTO, ale twoja standardowa konfiguracja powinna już to za ciebie zrobić:

   ifconfig lo 127.0.0.1
   route add -net 127.0.0.0

Będziesz musiał nadać adres obojgu kartom. Ja dopasowałem swój /etc/rc.d/rc.inet1 w Slackware 3.x, aby ustawić moje dwie karty. A ty powinieneś także poszukać gdzie jest konfiguracja sieci u ciebie i podwoić instrukcje. Załóżmy, że masz już adres: 192.168.2.100 (jest to prywatny zarezerwowany adres sieciowy, ale nieważne - nikomu nie zaszkodzi jeśli użyjesz tego adresu przez pomyłkę) wtedy masz już pewnie linię:

  ifconfig eth0 192.168.2.100 netmask 255.255.255.0 metric 1

w swojej konfiguracji. Pierwsze co pewnie będziesz chciał zrobić to podzielić przestrzeń adresową na pół, tak że możesz potem te dwie połowy bridge'ować. Więc dodaj linię. która zredukuje maskę tak, że będzie ona adresować mniejszą ilość maszyn:

  ifconfig eth0 netmask 255.255.255.128

Spróbuj tego też. Powoduje to obcięcie przestrzeni adresowej do zakresu od .0 do .127.

Teraz możesz ustawić swoją drugą kartę w drugiej połowie adresów. Upewnij się, że nikt jeszcze takiego adresu nie ma. Dla symetrii ja ustawiłem ją na 228 (128+100=228). Każdy adres będzie się tak zachowywał dopóki nie znajdzie się w masce tej pierwszej karty - a nawet wtedy, no może. Unikaj adresów specjalnych takich jak .0, .1, .128 o ile naprawdę wiesz co robisz.

  ifconfig eth1 192.168.2.228 netmask 255.255.255.128 metric 1

To powoduje zmniejszenie zakresu adresów drugiej karty do .128 do .255.

2.6 Ruting sieci.

Powyższe może być wystarczającą konfiguracją dla działającego bridge'a, ale ja będę miał także firewall i chcę kontrolować fizyczne przeznaczenie niektórych pakietów. Nawet wtedy trzeba się pilnować przed spoofingiem.

Mam małą sieć maszyn dołączonych do hub-a na eth0, więc konfiguruję tam sieć:

  route add -net 192.168.2.128 netmask 255.255.255.128 dev eth0

128 byłoby 0 gdybym miał pełną klasę C. "dev eth0" nie jest tu potrzebne ponieważ adres karty zalicza się do tej sieci, ale może być potrzebne dla ciebie.

Na drugiej karcie mam linię idącą prosto do dużego rutera, któremu ufam.

                                            client 129
         __                                        |     __
client 1   \    .0                    .128         |   /   net 1
client 2 --- Hub - eth0 - Kernel - eth1 - Hub - Router --- net 2
client 3 __/       .100            .228         .2 |   \__ net 3
                                                   |
                                            client 254

Dołączam adres tego rutera do tej karty jako statyczny ponieważ inaczej zaliczałby się on do maski tej pierwszej karty i jądro źle kierowałoby pakiety do tego dużego rutera.

  route add 192.168.2.2 dev eth1

Ja go nie potrzebuję ponieważ nie mam więcej maszyn w tej połówce przestrzeni adresowej, ale deklaruję sieć także na tej drugiej karcie

  route add -net 192.168.2.128 netmask 255.255.255.128 dev eth1

Muszę także wysłać wszystkie nie lokalne pakiety w świat, więc informuję jądro, żeby wysyłało je do dużego rutera:

  route add default gw 192.168.2.2 

2.7 Konfiguracja karty.

To tyle odnośnie standardowego ustawiania sieci, ale my mamy bridge więc musimy na obydwu (?) kartach słuchać pakietów, które nie są przeznaczone dla nas. Następujące dwie linie powinny się znaleźć w pliku konfigurującym sieć:

  ifconfig promisc eth0
  ifconfig promisc eth1

Na stronie podręcznika systemowego napisane jest, że allmulti=promisc, ale u mnie to nie działało.

2.8 Dodatkowy ruting.

Jedno co zauważyłem, to to, że musiałem przynajmniej drugą kartę ustawić w tryb, w którym odpowiadałaby ona dużemu ruterowi jakie maszyny chowam w swojej sieci.

  ifconfig arp eth1

Na wszelki wypadek zrobiłem to samo dla pierwszej karty.

  ifconfig arp eth0.

2.9 Konfiguracja Bridge'a.

Umieść włączanie bridge'owania w swoim pliku konfiguracyjnym:

    brcfg -enable

Powinieneś to próbować w czasie rzeczywistym cały czas oczywiście! Konfigurator bridge'a poda parę liczb. Możesz poeksperymentować włączając i wyłączając porty - jeden za każdym razem.

   brcfg -port 0 -disable/-enable
   brcfg -port 1 -disable/-enable

Polecenie brcfg pokaże ci raport w każdej chwili. Zobaczysz, że bridge słucha, dowiaduje się i potem przekazuje pakiety. (Nie rozumiem dlaczego kod powtarza te same adresy sprzętowe dla obu moich kart, ale nieważne ... HOWTO Chrisa mówi, że to dobrze)

2.10 Wypróbuj.

Jeśli cały czas wszystko u ciebie działa, to wypróbuj swoją konfigurację w rzeczywistości - wyłącz obie karty i uruchom swój plik konfiguracyjny:

    ifconfig eth0 down
    ifconfig eth1 down
    /etc/rc.d/rc.inet1

Jeśli masz szczęście, to różne podsystemy (nfs, ypbind, itp) nie zauważą tej zmiany. Nie próbuj tego o ile nie siedzisz przy klawiaturze.

Jeśli chcesz być bardziej ostrożny niż teraz, powinieneś wyłączyć tyle demonów ile się da i odmontować katalogi nfs. Najgorszym co może się stać, to to, że będziesz musiał zrestartować komputer w trybie jednego użytkownika (parametr "single" dla lilo lub loadlin) i zmienić wszystko na stan taki jaki był przed zmianą konfiguracji.

2.11 Sprawdzenia.

Sprawdź czy na każdym interfejsie jest inny ruch:

        tcpdump -i eth0    (w jednym oknie)
        tcpdump -i eth1    (w drugim oknie)

Powinieneś się przyzwyczaić do używania tcpdump do szukania przyczyn niektórych zdarzeń, które nie powinny mieć miejsca a mają.

Na przykład szukanie pakietów, które przeszły przez bridge do drugiej karty z wewnętrznej sieci. W tym przykładzie szukam pakietów z maszyny o adresie .22:

       tcpdump -i eth1 -e host 192.168.2.22

Potem wyślij ping-a z maszyny .22 do rutera. Powinieneś zobaczyć raport o tym pakiecie.

W tym momencie powinieneś mieć w pełni działający bridge z dwoma adresami. Sprawdź czy możesz je pingować z zewnątrz i z wewnątrz sieci oraz, że możesz się łączyć z jednej sieci do drugiej i z zewnątrz.

3. Firewall.

3.1 Oprogramowanie i czytanie.

Powinieneś przeczytać Firewall-HOWTO.

Dowiesz się stamtąd skąd wziąć ipfwadm jeśli jeszcze go nie masz. Są jeszcze inne narzędzia, które możesz ściągnąć, ale ja nie zrobiłem nic dalej bez ipfwadm. Jest on dość przyjazny i niskopoziomowy ! Widzisz dokładnie co się dzieje.

3.2 Sprawdzenie wstępne.

Wkompilowałeś IP-forwarding i -masquerading w jądro, więc możesz sprawdzić czy firewall jest w swoim domyślnym (akceptującym) stanie poleceniami:

       ipfwadm -I -l
       ipfwadm -O -l
       ipfwadm -F -l

I tak odpowiednio wyświetlane są zasady dotyczące wchodzących, wychodzących i przekazywanych (masquerading) pakietów. -l oznacza "list".

Możliwe, że wkompilowałeś także zliczanie (accounting):

       ipfwadm -A -l

Powinieneś zobaczyć, że nie ma zdefiniowanych żadnych zasad i że domyślnym stanem jest akceptacja wszystkich pakietów. Możesz wrócić do tego stanu w każdej chwili pisząc:

       ipfwadm -I -f
       ipfwadm -O -f
       ipfwadm -F -f

-f oznacza "flush". Możliwe, że musisz tego użyć.

3.3 Zasady domyślne.

Chcę po prostu odciąć resztę świata od swojej sieci wewnętrznej i nic więcej, tak więc ostatnią (domyślną) zasadą będzie ignorowanie wszelkich pakietów pochodzących z wnętrza sieci i zaadresowanych na zewnątrz. Umieściłem wszystkie te zasady (w takiej kolejności) w /etc/rc.d/rc.firewall i wykonuję ten skrypt z rc.local podczas startu.

  ipfwadm -I -a reject -S 192.168.2.0/255.255.255.128 -D 0.0.0.0/0.0.0.0

-S oznacza źródłowy (source) adres/maskę. -D to adres/maska przeznaczenia (destination).

Ten format dla ipfwadm-a jest trochę długi. Program ten jest inteligentny jeśli chodzi o nazwy sieciowe i niektóre popularne skróty. Zajrzyj do podręcznika systemowego.

Przypuszczalnie bardziej wygodnie jest określać niektóre lub wszystkie zasady dla wychodzącej połowy firewall-a używając opcji -O zamiast -I, ale ja określę je dla części wchodzącej.

3.4 Dziury na adres.

Przed zasadami domyślnymi muszę umieścić kilka zasad, które służą jako wyjątek od ogólnego zabronienia dostępu do serwisów zewnętrznych dla klientów wewnętrznych.

Chcę traktować adres firewall-a w sieci wewnętrznej specjalnie. Zabronię logowania się na tę maszynę o ile ktoś nie ma specjalnego pozwolenia, ale jak już się tam zalogują, to powinni mieć możliwość kontaktu ze światem.

  ipfwadm -I -i accept -S 192.168.2.100/255.255.255.255 \
                       -D 0.0.0.0/0.0.0.0

Chcę także, aby klienci wewnątrz sieci mogli się komunikować z firewall-em. Może mogą go zmusić, aby wypuścił ich na zewnątrz !

  ipfwadm -I -i accept -S 192.168.2.0/255.255.255.128 \
                       -D 192.168.2.100/255.255.255.255

W tym momencie sprawdź czy możesz się dostać do klientów wewnątrz sieci z zewnątrz poprzez telnet i nie możesz się wydostać. Oznacza to, że możesz się kontaktować, ale klienci nie mogą ci odpowiedzieć. Powinieneś móc się dostać wszystkimi drogami jeśli używasz firewall-a jako maszyny przejściowej. Spróbuj także rlogin i ping z uruchomionym tcpdump na jednej z kart. Powinieneś umieć odpowiednio wykorzystać to co robisz.

3.5 Dziury na protokół.

W następnym kroku poluźniłem trochę zasady protokół po protokole. Chcę, na przykład, wpuszczać ping-i, żeby dostać odpowiedź.

  ipfwadm -I -i accept -P icmp -S 192.168.2.0/255.255.255.128 \
                               -D 0.0.0.0/0.0.0.0

-P icmp to magiczne zaklęcie dla konkretnego protokołu.

Dopóki trzymam ftp-proxy pozwalam także na odwołania ftp na zewnątrz przez konkretne porty. Te docelowe porty na odległej maszynie to: 20, 21, 115

  ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \
                               -D 0.0.0.0/0.0.0.0 20 21 115

Bez działającego serwera nazw nie mógłbym mieć działającego sendmail-a. Zamiast ustawić serwer nazw na firewall-u, pozwoliłem mu przepuszczać zapytania skierowane do najbliższego serwera nazw i umieściłem jego adres w plikach /etc/resolv.conf u klientów - nameserver 123.456.789.31 - w osobnej linijce.

  ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \
                               -D 123.456.789.31/255.255.255.255 54

To, którego portu używa dany serwis możesz dowiedzieć się z programu tcpdump. Po prostu uruchom dany serwis przez ftp, albo telnet na danym kliencie i szukaj go na portach wejściowych albo wyjściowych na danym kliencie:

  tcpdump -i eth1 -e host client04

Plik /etc/services jest drugim ważnym źródłem.

Aby pozwolić na dostęp poprzez telnet do firewall-a z zewnątrz, musisz pozwolić klientom na wołanie na konkretnym porcie. Rozumiem dlaczego jest to potrzebne dla ftp - z powodu serwera, który ustawia strumień danych na końcu - ale nie jestem pewien dlaczego telnet także tego potrzebuje.

  ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 ftp telnet \
                               -D 0.0.0.0/0.0.0.0

Są problemy z pewnymi demonami, które sprawdzają nazwę firewall-a, żeby zdecydować jaki jest ich adres sieciowy. rpc.yppasswdd to jeden, z którym miałem problemy. Nalegał na rozsyłanie informacji, że jest on poza firewall-em (na drugiej karcie). To znaczy, że klient wewnątrz nie może się z nim porozumieć.

Zamiast uruchamiania IP-aliasing-u, albo zmiany kodu demona, odwzorowałem nazwę dla karty wewnętrznej u klientów w ich plikach /etc/hosts.

3.6 Sprawdzenia.

Teraz chcesz sprawdzić czy wciąż możesz połączyć się telnet-em, rlogin-em lub ping-ować z zewnątrz. Z wewnątrz powinieneś móc ping-ować na zewnątrz. Powinieneś móc także połączyć się telnet-em z firewall-em z wewnątrz a później móc robić wszystko.

To tyle. W tym momencie możesz się pouczyć o rpc/Yellow Pages i interakcji z plikiem haseł. Sieć chroniona firewall-em powinna działać tak, aby nie pozwalać nieuprzywilejowanym użytkownikom na logowanie się na firewall-u i przez to na wychodzenie na zewnątrz.. A to już historia na inne HOWTO.

4. Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/Bridge.pl.html0100664000175000017500000001503207104371340020765 0ustar covencoven Bridge - instalacja.

Bridge - instalacja.

Autor: Chris Cole, chris@polymer.uakron.edu
v1.03, 23 Sierpnia 1996
Wersja polska: Bartosz Maruszewski B.Maruszewski@zsmeie.torun.pl
v1.01, 26 Lipca 1997


Wszelkie sugestie i poprawki są mile widziane pod adresem chris@polymer.uakron.edu. Oryginał tego dokumentu możesz znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO/mini. Dokument ten został napisany w standardzie ISO-8859-2.

1. Ustawienie bridge'a.

  1. Zdobądź "Bridge Config" (BRCFG.tgz): shadow.cabi.net.
  2. Zdobądź i przeczytaj Multiple ethernet HOWTO na SUNSite Polska.
  3. Włącz złożone urządzenia ethernet-owe przez dodanie tej linii do pliku /etc/lilo.conf
            append = "ether=0,0,eth1"
    
    Jeśli masz trzy interfejsy na swoim bridge'u, to wpisz taką linię:
            append = "ether=0,0,eth1 ether=0,0,eth2"
    
    Więcej urządzeń można dodać zwiększając ilość parametrów ether. Domyślnie jądro szuka tylko jednej karty Ethernet, a jak już znajdzie to przerywa dalsze szukanie. Linia ta informuje jądro, aby szukało dalej urządzeń Ethernet jak już znajdzie jedno. Alternatywnie możesz użyć parametru podczas startu:
            linux ether=0,0,eth1
    
    albo z trzema interfejsami:
            linux ether=0,0,eth1 ether=0,0,eth2
    
  4. Skompiluj ponownie jądro z włączoną opcją BRIDGING.
  5. Bridge nie powinien mieć adresu IP. Może mieć, ale czysty bridge go nie potrzebuje. Aby usunąć adres IP ze swojego bridge'a idź do katalogu /etc/sysconfig/network-scripts/ (w dystrybucji RedHat) i skopiuj plik ifcfg-lo0 na ifcfg-eth0 i ifcfg-eth1. W tych dwóch plikach *-eth zmień linię DEVICE=lo na DEVICE=eth0 i DEVICE=eth1. W innych dystrybucjach może to być rozwiązane inaczej, zrób to co musisz ! Jeśli jest więcej niż dwa interfejsy na tym bridge'u, upewnij się, że zrobiłeś dla nich odpowiednie urządzenia.
  6. Zrestartuj system, żeby uruchomić nowe jądro i żeby interfejsy sieciowe nie były podpięte pod numery IP.
  7. Jak już system stoi, uruchom kart-ę/y w trybie "bezwzględnym" (promiscous), tak że będą śledzić każdy pakiet przechodzący przez nie:
            ifconfig promisc eth0 ; ifconfig promisc eth1
    
    Wszystkie interfejsy, do których są podłączone segmenty mające być bridge'owane muszą być w tym trybie.
  8. Włączanie bridge'owania przy pomocy programu brcfg:
            brcfg -ena
    
  9. Sprawdź czy na każdym interfejsie jest inny ruch:
            tcpdump -i eth0    (w jednym oknie)
            tcpdump -i eth1    (w innym oknie)
    
    Uruchom jakiegoś sniffer-a czy tcpdump-a na innej maszynie, żeby zweryfikować, że bridge oddziela poprawnie segmenty.

2. Częste problemy.

P1: Dostaję komunikat: "ioctl(SIOCGIFBR) failed: Package not installed". Co on oznacza ?

O1: Nie masz włączonej opcji BRIDGING w jądrze. Zdobądź jakieś jądro 2.0 lub wyższe i skompiluj je z tą opcją włączoną.

P2: Maszyny z jednej strony nie mogą ping-ować drugiej strony !

O2: - Czy włączyłeś bridge'owanie poleceniem brcfg -ena ?
(brcfg powinien pisać bridging is ENABLED.)
- Czy włączyłeś tryb "bezwzględny" na urządzeniach ?
(wydaj polecenie ifconfig. Flaga PROMISC powinna być
włączona dla wszystkich interfejsów)
- Używając złożonych adapterów interfejsów, upewnij się, że
odpowiedni interfejs jest włączony. Może musisz użyć
programu konfiguracyjnego, który przyszedł wraz z kartą.

P3: Nie mogę się połączyć telnet-em, ftp z bridge'a ! Czemu ?

O3: Dlatego, że interfejsy na bridge'u nie mają przypisanych adresów IP. Bridge ma być przeźroczystą częścią sieci.

P4: Co muszę zrobić, żeby ustawić ruting ?

O4: Nic ! Cały ruting jest obsługiwany przez kod w jądrze. Żeby zobaczyć znalezione przez bridge adresy ethernet-owe użyj programu brcfg:

        brcfg -deb

P5: Bridge niby działa, ale dlaczego traceroute go nie pokazuje ?

O5: Z powodu natury bridge'a - traceroute NIE powinien pokazywać bridge'a jako części ścieżki. Bridge ma być przeźroczystą częścią sieci.

P6: Czy muszę wkompilować IP_FORWARD w jądro ?

O6: Nie. Kod bridge'a w jądrze zajmuje się transportem pakietu. IP_FORWARD jest dla ruterów, które mają przypisane adresy IP do swoich interfejsów.

P7: Dlaczego według programu brcfg adresy ethernet-owe dla portu 1 i 2 są takie same - nie powinny być różne ?

O7: Nie. Każdemu portowi na bridge'u specjalnie przypisywany jest ten sam adres ethernet-owy przez kod bridge'a.

3. Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@zsmeie.torun.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/Callback.pl.html0100664000175000017500000003601407104642140021267 0ustar covencoven Callback-miniHOWTO

Callback-miniHOWTO

Paweł Skonecki, e-mail: stona@fizyka.umcs.lublin.pl
v1.0, Marzec 2000


Dokument ten opisuje, jak za pomocą Linuxa ustawić połączenie zwrotne przy pomocy modemu. Program callbeck opracował Gert Doering, <gert@greenie.muc.de>. Chciałbym podziękować Annie za wyrozumiałość dla pingwinów.

1. Wstęp.

1.1 Opinie.

Czekam na wszystkie opinie, czy to dobre, czy złe, na temat zawartości tego dokumentu. Starałem się, aby informacje w nim umieszczone były jak najbardziej pewne i dokładne. Daj mi znać gdy znajdziesz jakieś błędy.

Dziękujemy ludziom którzy przysłali by poprawki lub sugestie. Ich wkład uczynił ten dokument o wiele lepszym, niż gdybym tworzył go sam. Wysyłaj komentarze, sugestie i poprawki na adres email autora podany powyżej. Nie mam nic przeciwko odpowiadaniu na pytania, jednak radzę najpierw przeczytać dokument w całości.

1.2 Rozpowszechnianie.

Copyright ? 1999 by Paweł Skonecki. Ten dokument może zostać rozpowszechniany na warunkach ustalonych przez Licencję Linux Documentation Project. Skontaktuj się z autorem, jeśli nie jesteś w stanie otrzymać licencji.

Ta dokumentacja jest darmowa. Jest rozpowszechniana z nadzieją, że okaże się użyteczna, jednak bez żadnej gwarancji.

2. A może sieć w domu ...

Większość z nas używa sieci korporacyjnych lub uczelnianych w swoim miejscu pracy. Pojawia się jednak potrzeba skorzystania z sieci w domu lub w innym miejscu. Może przecież okazać się iż pracownicy będący w terenie muszą mieć dostęp do danych znajdujących się w Internecie lub też w sieci firmowej. Możemy mieć też do czynienia z sytuacją kiedy firmie będzie opłacać się zapłacić pracownikom za połączenia telefoniczne aby pracowali w domach. Sądzę że optymalnym rozwiązaniem jest zainstalowanie na serwerze z Linuxem i oprogramowania typu callback.

Callback to nic innego jak oddzwanianie pod wskazany numer na koszt firmy. Spróbuję przedstawić jego działanie. Osoba posiadająca odpowiednie uprawnienia dzwoni pod numer modemu będącego w serwerze z Linuxem, tam weryfikuje się po raz pierwszy. Wtedy po stronie użytkownika następuje "zawieszenie modemu" na stan oczekiwania. W tym czasie serwer dzwoni po wskazany numer. Użytkownik weryfikuje się powtórnie. Następuje zestawienie połączenia a impulsy biją po stronie serwera (czyli w firmie), osoba do której oddzwania serwer płaci jedynie za zainicjowanie połączenia.

Podwójna weryfikacja oraz dodatkowe parametry w programie callback uniemożliwiaj by osoby nie powołane wtargnęły na nasz rachunek. Można także ograniczyć osobom korzystającym z tej usługi do dostęp do sieci wewnętrznej lub też całego Internetu. Callback jest elastyczny i pozwala na wiele opcji w stosunku do osób go używających.

W poniższym mini-HOWTO postaram się przedstawić konfigurację serwera callback na Linuxe wytłumaczę jak dostosować swoją maszynę do odbierania połączeń.

3. Pierwsze kroki z modemem.

Aby wszystko zadziałało jak należy potrzebujemy niezłego modemu do naszego serwera z Linuxem. W tej mierze istniej ,a różne preferencje administratorów i nie można wskazać tutaj żadnej marki jako faworyta. Warto jednak pamiętać przyzakupie o pewnych zasadach jakimi należy się kierować.

Jeżeli mamy już modem który będziemy wykorzystywać do komunikacji pomiędzy serwerem a osobami do niego dzwoniącymi. Musimy go zainstalować go w systemie. Aby to zrobić musimy sprawdzić na jaki com-ie jest nastawiony modem i czy nie pokrywa się z już wykorzystywanym. Jeżeli tak jest to trzeba przestawić modem na kolejny wolny com.

Instalacja jest prosta i nie powinna nastręczać problemów. Wystarczy że będziemy się trzymać zasad jakie istniej ,a w systemie.

Aby Linux "zobaczył" modem należy poprowadzić połączenie symboliczne z com-a do urządzenia /dev/modem. Przykładowo jeżeli mamy modem na com 2 piszemy:


ln -s /dev/cua1 /dev/modem

sprawdzamy teraz komendą ls -l czy wszystko jest w porządku:

lrwxrwxrwx 1 root root 4 Dec 28 15:28 modem -> cua1

Jeżeli wynik jest jak powyżej to oznacza że tak właśnie się stało. Jeżeli modem znajduje się na innym com-ie winniśmy zastosować się do poniższych zasad i poprowadzić odpowiednie połączenie symboliczne.

Sprawdzamy teraz czy wszystko chodzi przy pomocy minicoma, który powinien znajdować się w większości dystrybucji. Przy jego pomocy dzwonimy pod jakikolwiek numer gdzie znajduje się modem. Teraz czas na dzwonienie do nas ....

4. Zadzwoń do Linuxa.

Pierwszym krokiem w udostępnieniu usługi callback na Linuxe jest ustawienie odpowiednich parametrów w jądrze systemu. W tym celu musimy sprawdzić czy nasze jądro systemu obsługuje protokół ppp. Jeżeli tak nie jest to powinno się w kompilować go w jądro systemu albo pozostawić jako moduł do ładowania. Nie jest to miejsce na przedstawiane tego problemu. Dlatego też proszę zapoznać się z Kernel-HOWTO.

Jeżeli już mamy odpowiednio przygotowane jądro czas zabrać się za konfigurację oprogramowania. W tym celu winniśmy zainstalować na naszym serwerze pakiet o nazwie mgetty-sendfax, ponieważ on zawiera w sobie program do oddzwaniania. Nie jest to jego jedyna możliwość, może także wysyłać fax-y oraz pracować jako access-server.

Tu warto wspomnieć o pracy callback-u. Kiedy inicjujemy połączenie z serwerem następuje pierwotna weryfikacja użytkownika. Poproszony jest on o wpisanie hasła a kiedy to uczyni następuje "zawieszenie" modemu po stronie dzwoniącego a serwer oddzwania pod wskazany numer związany z użytkownikiem. Jeżeli nastąpi połączenie następuje drugi monit o username oraz hasło. Jeżeliwszystko pójdzie dobrze to połączenie zostaje zestawione pomiędzy komputerem lokalnym i zdalnym (user uruchomi protokół ppp po stronie serwera).

Tak więc cała operacja składa się z dwóch elementów. Mamy więc do czynienia z dwoma rodzajami użytkowników: pierwszy to użytkownik do callbacku a drugi to ten kóry ma uruchomić protokół ppp po stronie serwera.

Najpierw zajmijmy się drugim z nich. Zakładamy konto o dowolnym username testowo niech to będzie user pppuser.

pppuser:klkIOM89mn65H:230:PPP Dialin:/home/pppuser:/etc/ppp/ppplogin

Następnie zmieniamy mu hasło. Jak można zauważyć nie ma on normalnego shall-a do logowania ale pliczek w /etc/ppp/ppplogin. Musimy go własnoręcznie przygotować.

Przechodzimy do tego katalogu i przy pomocy jakiegokolwiek edytora tworzymy plik i wprowadzamy odpowiednie parametry np.: vi ppplogin. Wewnątrz niego wpisujemy.

#!/bin/sh
exec /usr/sbin/pppd -detach 192.168.1.1:192.168.1.2

gdzie adres 192.168.1.1 to adres serwera w którym jest modem a adres 192.168.1.2 to adres jaki przypisaliśmy naszemu modemowi. Pamiętajmy nadać temu plikowi prawo wykonywania.

Ponieważ ppp domyślnie sprawdza co znajduje się w pliku /etc/ppp/options musimy go stworzyć aby wpisać odpowiednie wartości.

Podobnie jak w powyższym przypadku tworzymy plik przy pomocy dowolnego edytora i wpisujemy odpowiednio:

netmask 255.255.255.0
proxyarp
lock
crtscts
modem

Najważniejsza z powyższych opcji jest proxyarp, umożliwia on wyjście na świat poprzez modem w serwerze. Jej brak może być korzystny jeżeli nie chcemy aby nasi pracownicy używali Internetu a jedynie sieci lokalnej. Pozostałe z nich oprócz netmask (tego nie trzeba tłumaczyć), dotyczą kontroli modemu.

Teraz przechodzimy do konfiguracji modemu w systemie w taki sposób aby zaraz po jego starcie był gotowy do pracy czyli odbierania połączeń.

Uruchamiamy dowolny edytor a w nim plik /etc/inittab gdzie dopisujemy poniższą linę.

s1:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100

jest ona prawidłowa dla modemów które znajdują się na com2, jeżeli jest inaczej poprawiamy ją. Np dla com-a 1 wyglądać powinna

s0:2345:respawn:/sbin/mgetty ttyS0 -D /dev/ttyS0 vt100

Wykonujemy teraz polecenie init q i jeżeli nie mamy informacji o błędach w logach sytemu przechodzimy do następnego etapu.

Wracamy do katalogu /etc/ppp gdzie tworzymy plik options.ttyS1 (jeżeli mamy modem na com 1 options.ttyS0) a w nim wpisujemy adesy IP.

IP_localne:IP_dla_modemu_zdalnego

dla naszej sieci będzie to 192.168.1.1:192.168.1.2

Mamy już wiele - przed zadzwonieniem do naszego systemu, sprawdzamy co znajduje się w pliku /etc/mgetty+sendfax/login.config

Najważniejsza jest linia podobna do tej:

/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login detach kdebug 7 debug

Pozostałe możemy zaznaczyć znakiem #. Ważną sprawą jest także nadanie odpowiedniego suida demonowi ppp, tak aby użytkownik pppuser mógł go uruchomić oraz podnieść na nim interfejs.


chmod u+s /usr/sbin/pppd

czego efektem będzie

-rwsr-xr-x 1 root root 106892 Jan 11 1999 /usr/sbin/pppd

Od tego momentu użytkownik pppuser będzie mógł uruchomić demona ppp. Warto dopisać zmianę preferencji pppd w cronie, u mnie po restarcie systemu dochodziło do samoczynnej zmiany preferencji. Aby zweryfikować nasze dokonania dzwonimy pod numer naszego serwera. Jeżeli robimy to z Windows-o'w wywołujemy okno terminala a jeżeli wykorzystujemy do tego Linuxa to poprawiamy skrypty z których korzystamy dzwoniąc do naszego provaidera. Logujemy się do systemu jako pppuser z haslem mu nadanym. Mam nadzieję że wszystko jest w porządku.

5. Teraz Linux dzwoni do mnie ...

Możemy dodzwaniać się już do naszego Linuxa. Pora teraz na to aby on do nas zadzwonił. Nie wymaga to specjalnego już wysiłku wystarczy wyedytować jeden plik. Zanim jednak to zrobimy musimy zebrać numery telefonów od osób które maj ,a korzystać z tej usługi. Sprawdzamy teraz czy w katalogu /etc/mgetty+sendfax znajduje się plik o nazwie callback.config. Jeżeli tam się znajduje to pozostawiamy go w spokoju. Można wypełnić go treścią ale nie ma najmniejszej potrzeby ponieważ jego pusta zawartość nie ma wpływu na funkcjonowanie callbacku. Ważne tylko aby tam był.

Teraz czas na wpisanie numerów telefonów jakie wcześniej zebraliśmy. Będziemy kreować pseudo użytkowników powiązanych z numerami ich telefonów.

W tym celu wpisujemy do pliku /etc/mgetty+sendfax/login.conf linijkę tekstu podobną do poniższej

call - - /usr/sbin/callback - S 123456

gdzie call to pseudo użytkownik potrzebny do zainicjowania połączenia zwrotnego, a linia /etc/mgetty+sendfax/ uruchamia program który oddzwania pod wskazany numer (w tym przypadku jest to 123456). Podobnie czynimy z innymi użytkownikami przypisując pseudo użytkownikom poszczególne numery telefonów. Postaram się teraz wytłumaczyć jak całą operacja wygląda w praktyce. Gdy dzwonimy do naszego serwera ten prosi nas o weryfikację. Wtedy to logujemy się jako pseudo użytkownik, w tym przypadku call. Skrypt w naszym komputerze zawesza modem w oczekiwaniu a połączenie zostaje przerwane. Program callbeck zaczyna działać i oddzwania do nas. Weryfikujemy się powtórnie jako pppuser zestawiamy połączenie oraz postawienie interfejsu ppp na serwerze. I to już wszystko.

Czeka nas teraz skonfigurowanie stacji roboczych pracujących z naszym serwerem.

W przypadku Windows operacja jest dość prosta. Instalujemy Dial-up dla naszego numeru dostępowego a następnie we właściwościach modemu znajdujemy zakładkę "Właściwości" --> Rozszerzone ---> Ekstra gdzie wpisujemy

&c0 s0=1

Zamykamy okienko i dzwonimy. Logujemy się według opisu powyżej. Gdy chcemy zastosować Linux-a, to musimy odwołać się do skryptów. Trudno jest podać jakiś jeden dobry skrypt dla naszego Linuxa. Ważne jest to aby mieć dobrze skonfigurowane ppp w systemie (sprawdź to dzwoniąc jako pppuser najpierw przez skrypty).

Poniżej skrypty napisane przez A. Góździa. Najlepiej jak wsadzisz wszystko do katalogu /etc/ppp i tam będziesz odpalał swoje skrypty. Nie musisz tego koniecznie robić tego w tym miejscu jest to tylko moja sugestia. Dokładnie o pisaniu skryptów pod Linuxem możesz poczytać w PPP-HOWTO.

Najpierw jednak plik konfiguracyjny dla demona ppp (przykład dla modemu na comie 2).

/etc/options
lock
defaultroute
noipdefault
modem
/dev/cua1
33600
crtscts
debug
passive
asyncmap 0

I właściwe skrypty:

Powyższe dwa skrypty powinny wystarczyć dla prawidłowego funkcjonowania całości. Pozostaje teraz odpalić ppp-call :)

6. Podsumowanie.

Jak widać konfiguracja oddzwaniania nie jest skomplikowana i polega głównie na prawidłowym zestawieniu serwera ppp na Linuxie. Nie znam lepszej drogi na zrobienie acces-servera. Przedstawiona konfiguracja jest wynikiem prób i błędów, można zrobić ją całkowicie inaczej. Dlatego proponuję przejrzenie wszelkiej dokumentacji do tego zagadnienia to jest man pppd, NET3-HOWTO oraz PPP-HOWTO.

Callback może być przyjemną alternatywą w pracy zdalnej.

Inne moje dokumenty znajdziesz ftp://ftp.fizyka.umcs.lublin.pl/pub/priv/stona

Paweł Skonecki

e-mail: stona@fizyka.umcs.lublin.pl doc-linux-pl-2002.06.14.orig/mini/html/Coffee.pl.html0100664000175000017500000004061707104371340020767 0ustar covencoven Coffee HOWTO

Coffee HOWTO

Georgatos Photis gef@ceid.upatras.gr
v0.5, 15 Stycznia 1998
Wersja polska: Leszek Urbański tygrys@fidonet.org.pl
v1.0, 4 Sierpnia 1998


Jedna z najbardziej zastanawiających uwag o oprogramowaniu, które kiedykolwiek słyszałem - czy ten lub inny program może zrobić kawę. Linux POTRAFI ją zrobić. I smakuje doskonale! Od długiego czasu ludzkość zastanawia się, czy komputery potrawią robić kawę... Ludzie potrzebują kawy, żeby obudzić się i nie zasypiać przed komputerem przez długi czas. Każdy wie, że najlepsze programy pisze się w nocy... Głównym problemem jest kontrolowanie ekspresu do kawy komputerem, tak żeby można było sterować go programowo. Ogólnie oznacza to implementację przełącznika WŁ/WYŁ w obwodzie kontrolującym zasilanie ekspresu do kawy. Ten dokument został napisany w standardzie ISO-8859-2.

1. Menu

1.1 Kawa francuska

Popularna kawa wśród programistów, ponieważ nie wymaga długiego przygotowania i nadzoru, tak jak programy komercyjne. Jej doskonały smak zainspirował tysiące programistów do napisania wyśmienitych programów, napisanych w pierwszych godzinach dnia. Windowsy na przykład zostały napisane o 5:00 rano, dzięki tej kawie. Wynik gwarantowany.

1.2 Nescaffe

Nescaffe jest dosyć mocną kawą, gotowaną przez nalewanie gorącej wody do mieszaniny kawy, cukru i wody. Zazwyczaj powinno się brać jedną łyżkę kawy i jedną łyżkę cukru, oraz trochę wody w celu zmieszania. W tym czasie powinna zagotować się gorąca woda. Wtedy zmieszaj ją z resztą - możesz dodać mleka. Chociaż możesz używać czegoś prostszego niż ekspres do kawy do zagotowania wody, wiele razy widziałem powyższą procedurę.

1.3 Frappe

Popularna wersja powyższej kawy. Właściwie nie jest potrzebny ekspres do kawy, a lodówka do otrzymania zimnej wody i kostek lodu.

1.4 Freddo

Trudny przepis. Przeczytaj coffe-faq (zobacz odnośniki)

1.5 Cappucino (do dodania)

1.6 Espresso (do dodania)

2. Układ elektroniczny

Ogólny schemat wygląda tak:

--------- 0-5V  --------- ~220V  -----------------
|  PC   |===>===| Obwód |========|Ekspres do kawy|
---------       ---------        -----------------

Celem jest wzięcie napięcia kontrolującego z komputera, które będzie napędzać elektrycznie odizolowany układ z przekaźnikiem lub triakiem. Jeżeli twój ekspres do kawy jest duży (więcej niż 200W), musisz wybrać przekaźnik, a jeśli nie, wystarczy triak.

Wszystkie układy tu przedstawione zostały przetestowane raz albo więcej, ale TY ODPOWIADASZ ZA SKUTKI UŻYWANIA. Jeżeli nie masz doświadczenia z elektroniką, NIE baw się z tym, inaczej może ci coś nie wyjść...

Powinieneś być bardzo ostrożny przy eksperymentach z 220V - można używać odpowiedniego bezpiecznika.

2.1 Napięcie kontrolujące 0-5V z komputera

Oto prosty przykład pobrania napięcia 0-5V z portu równoległego komputera.

   Widok od tyłu
   Męskie złącze   -----    Pin 10 - ACK
   DB25            |   |    Pin  9 - D7
                   |   |                           Pin 2 - D0   
~Strobe            v   v                           v   Pin 1 -
    _________________________________________________________
   /                                                         \
   \  13  12  11  10   9   8   7   6   5   4   3   2   1     /  
    \                                                       /
     \  25  24  23  22  21  20  19  18  17  16  15  14     /
      \___________________________________________________/

Pin 1 to ,,Strobe'' (logika odwrotna)

Piny 2-9 to sygnały SZYNY DANYCH (DATA BUS), dokładnie to, co zostało wpisane do (hmm ,,klamek''??? (latches) - przyp. tłum.) komendą OUTB.

Pin 10 to sygnał potwierdzenia (ACK) sterowany przez ciebie, tak żebyć mógł wyprodukować przerwanie.

Piny 18-25 są zwarte i jest to uziemienie (GND).

Dokładniej:


<= we  pin    Główny  Nazwa    
=> wy  DB25   pin     sygnału   Bit  Uwagi
--------  ----   ------  -------   ---   -----------------------
=>      1       1     -Strobe   C0-   Ustaw niskie napięcie >0.5us do wysył.
=>      2       2     Dane 0    D0    Ustaw na pierwsze znaczące dane
=>      3       3     Dane 1    D1    ...
=>      4       4     Dane 2    D2    ...
=>      5       5     Dane 3    D3    ...
=>      6       6     Dane 4    D4    ...
=>      7       7     Dane 5    D5    ...
=>      8       8     Dane 6    D6    ...
=>      9       9     Dane 7    D7    Ustaw na ostanie znaczące dane
<=     10      10     -Ack      S6+IRQ Niskie napięcie ~ 5uS, po zaakcept.
<=     11      11     +Busy     S7-   1 Dla Zajęte/Offline/Błąd
<=     12      12     +PaperEnd S5+   1 Dla braku papieru
<=     13      13     +SelectIn S4+   1 Dla wybranej drukarki
=>     14      14     -AutoFd   C1-   Ustaw na 0 dla LF
<=     15      32     -Error    S3+   0 dla Błędu/Offline/Końca papieru
=>     16      31     -Init     C2+   Ustaw niskie napięcie > 50uS do inicjalizacji
=>     17      36     -Select   C3-   Ustaw na 0 do wybrania drukarki
<==>18-25   19-30  GND

2.2 Kontrolowanie za pomocą przekaźnika

Najprostszy możliwy do zbudowania układ to:

                                 Vcc
                                  |
                             +---------+
                             |       __|__
                        Przekaźnik    /^\  Dioda 1N4002
                             |       /---\
                             |         |
                             +---------+
                             |
                           | /
                   4.7K   B|/ C
port równoległy >-\/\/\/\/-|       Tranzystor NPN: BD547A lub 2N2222A
                           |\  E
                           | V
                             |
pin GND portu równ. >--------+
                             |
                         Uziemienie

Połącz Vcc z napięciem równym napięciu przekaźnika (zazwyczaj 5 lub 12V). Oczywiście parametry przekaźnika powinny być poprawne dla twojego ekspresu.

Barmani często umieszczają przekaźnik ZA tranzystorem, na emiterze (E) zamiast na kolektorze (C). Nie jest to dobre, ponieważ obciąża tranzystor i może być powodem zrobienia złej kawy :-). Dioda 1N4002 jest potrzebna do ochrony tranzystora przed napięciami przekaźnika. Jeśli jej nie użyjesz, tranzystor stanie się ciemniejszy i zacznie dymić...

2.3 Kontrolowanie triakiem - sposób 1

Jeżeli potrzebujesz prostego obwodu, użyj sterownika triaków Motoroli - MOC301[012], razem z triakiem ogólnego zastosowania, takim jak SC 141D. Metoda ta ma zaletę - nie musisz stosować dodatkowego źródła zasilania.

Dla nieindukcyjnych ładunków:

        270     1 +-------+ 6    180
  +5v -VAVAVA-----+       +----VAVAVA-----+-------------- Linia gorąca
                2 |  MOC  |               |
  TTL in ---------+ 3012  +nc            VA  SC141D
                  |       | 4           / |
                nc+       +------------/  |
                  +-------+               +----\/\/\/---- Line Neutralna
                                             OBCIĄŻENIE

Jeżel będziesz pracował z napięciem 220V, wybierz 3021. Do obciążeń indukcyjnych powinny być stosowane kondensatory obejściowe, zobacz ,,Motorola Application Note AN-780. Ekspresy do kawy są raczej obciążeniami opornościowymi, a nie indukcyjnymi (jak silniki), ale kto wie, jaki jest twój...

2.4 Kontrolowanie triakiem - sposób 2

+5VDC
|    180                      180            2.2k
+---/\/\/\----+-----+   +----/\/\/-+--/\/\/\---+-------> 120V
              |    1|   |6         |           |         Gorąca
              |    +=====+         |           | MT1
              |    | MC  | Sterown.|          +-+
              |    | 3032| triaków |        G | | TRIAK
              |    +=====+         |         /| |
              \    2|   |4         |        / +-+
       2N3904  |----+   |          |        |  | MT2
              /     |   +--------- | -------+  |
             V      \              |        |  |
             |      /              |        \  |
             |      \ 43    .01u  ---   10k /  |
             |      /       500V  ---       \  |
             |      |              |        /  |
             +------+              |        |  |            Neutralna
             |                     +--------+--+---o    o--> 120V
             /                                      load
 >-/\/\--|  2N3904
             \
              V
              |
             ---
            ///

Powinieneś zmienić rezystory na odpowiednie dla 220V.

Opis obwodu:

MC2032 jest optoizolacyjnym sterownikiem triaka. 180-omowy rezystor zapewnia napięcie dla diody LED w optoizolatorze. Zmień wartość rezystora, jeśli to potrzebne, żeby uzyskać poprawny prąd (np. 15mA).

Zauważ, że nie możesz testować tego układu bez obciążenia. Triak nie przełączy się, jeżeli nie będzie podłączony do źródła napięcia zmiennego, nie możesz więc testować go bez użycia napięcia AC i obciążenia. Zauważ napisz ,,500V'' na obudowie kondensatora .01.

3. Oprogramowanie

3.1 Program obsługi

Będziesz musiał napisać program wykonujący następujące czynności:

Zmień PODSTAWĘ na 0x3bc dla /dev/lp0, 0x378 dla /dev/lp1 i 0x278 dla /dev/lp2, zakres na 8.

Dobrze byłoby dać programowi prawa setuid, żeby każdy mógł pić kawę! (UWAGA: nie ustawiaj tych praw w ,,usieciowionym'' komputerze, grozi to pożarem itd. wywołanym przez nieuprawnionych użytkowników! - przyp. tłum.)

3.2 Sterownik

Przeczytaj Kernel Hacker's Guide i zaimplementuj sterownik (sądzę, że może on być stosowany w trybie użytkownika). Skompiluj go jako moduł, żebyś nie musiał kompilować jądra przy każdym uaktualnieniu. Napisz:

echo cappucino > /dev/coffee

Uzyskasz filiżankę gorącej kawy w minutę. Pamiętaj, żeby dać prawidłowe prawa dostępu do /dev/coffee, zależnie od tego, czy chcesz, żeby kawę robił tylko root, czy nie.

Zaletą tej metody jest obsługa sprzężenia zwrotnego z ekspresu do kawy przez użycie ACK portu równoległego tak, żeby ,,mądre'' ekspresy mogły tworzyć przerwanie.

Zrób to jako pracę domową.

3.3 Łączenie się z Internetem

(zalecam implementację tej technologii tylko w sieci LAN, z powodu bezpieczeństwa - przyp. tłum.)

Jeżeli napisałeś program w C (objaśnienia powyżej), wystarczy zrobić prosty skrypt CGI włączający i wyłączający ekspres do kawy. Powinieneś napisać kilka ładnych stron WWW wyjaśniających jak zrobić kawę i umieścić je na serwerze WWW Apache...

4. Oznaki przedawkowania

5. Rozszerzenia

Oto nasze pomysły:

6. Odnośniki

7. Inne

7.1 Wstęp

Ten dokument był pierwotnie napisany w języku helleńskim (greckim), ewoluując z małej debaty na liście greckich użytkowników Linuxa, czy Linux potrafi zrobić kawę, czy nie. Był on artykułem w naszym pięknym magazynie Linuxowym ,,magaz'': http://www.linux.gr/magaz. Pamiętaj, że jest on napisany po grecku.

7.2 Autorstwo i nadzór

Nazywam się Georgatos Photis i jestem (jeszcze-nadal może przez długi czas) studentem wydziału Inżynierii Komputerowej i Informatyki na Uniwersytecie Patras. Jestem zazwyczaj dosyć zajęty grecką dokumentacją i stronami WWW, ale mogę przyjmować dodatki do tego HOWTO, jeżeli nie będziesz niecierpliwy.

7.3 Prawa autorskie

Standardowe prawa autorskie wszystkiego od Linuxa... Przeczytaj wszystkie i wybierz najważniejsze. Inaczej nie możesz kopiować tego dokumentu.

7.4 Dodatkowi autorzy

8. Od tłumacza

Jeżeli znajdziesz jakieś błędy, daj mi znać. :-) doc-linux-pl-2002.06.14.orig/mini/html/Colour-ls.pl.html0100664000175000017500000003556107104371340021461 0ustar covencoven Kolory na terminalach Linux-owych.

Kolory na terminalach Linux-owych.

Autor: Thorbjørn Ravn Andersen, ravn@dit.ou.dk v1.4, 7 Sierpnia 1997 Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl. v1.3, 5 Listopada 1997


Większość dystrybucji Linux-a ma polecenie 'ls' służące do wyświetlania zawartości katalogu, które można znacznie uatrakcyjnić używając różnych kolorów, ale skonfigurowanie tego zgodnie z własnymi upodobaniami może nie być taką łatwą sprawą. Dokument ten opisuje różne aspekty i podejścia ustawiania polecenia 'ls' przez konfigurowanie istniejącego oprogramowania plus lokalizacja alternatywnego oprogramowania nie zawartego w dystrybucjach Slackware czy RedHat, którego można użyć na większości systemów unix-owych. Wersja HTML (w oryginale) jest także dostępna na mojej stronie WWW. Dokument ten został napisany w standardzie ISO-8859-2.

1. Wprowadzenie.

W ostatnich latach kolorowe monitory stały się bardzo popularne, i użytkownicy zaczynają to wykorzystywać przez używanie programów, które wykorzystują kolory do wizualizacji różnych szczegółów takich jak słowa kluczowe w językach programowania czy podkreślenie słów źle napisanych.

Ponieważ konsola Linux-owa obsługuje kolory, oryginalna wersja GNU ls została szybko zmodyfikowana, aby wyświetlać kolorowe informacje i program ten został dołączony do dystrybucji Slackware ok. wersji 2.0. Ulepszone wersje tych łat weszły w skład standardowej dystrybucji GNU ls i dlatego powinny być częścią wszystkich nowych dystrybucji Linux-a.

Wersja ta jest w głównej mierze przepisaną wersją pierwotną zawierającą informacje na temat xterminala i łatania jądra.

Informacja zawarta w tym dokumencie została sprawdzona na dystrybucji RedHat 4.1 i została oryginalnie skompilowana na dystrybucji Slackware 2.0.2 i jądrze w wersi 1.1.54. Informacje na temat łaty zostały uzyskane z Dystrybucji Slackware 2.2.0 z jądrem 1.2.13 i powłoką tcsh jako domyślną oraz później sprawdzona na jądrze 2.0.27. Jeśli używasz jakiejś innej konfiguracji czy wersji unix-a, to będę wdzięczny za info na temat systemu operacyjnego i wersji oraz czy kolory są dostępne jako standardowe.

2. Szybki start dla niecierpliwych.

Jeśli masz nową dystrybucję Linux-a, to zmodyfikuj pliki w swoim katalogu domowym tak jak to pokazano. Efekt będzie widoczny po ponownym zalogowaniu się.

~/.bashrc:
    alias ls="ls ‐‐color"

~/.cshrc:
    alias ls 'ls ‐‐color'
    

I to wszystko!

Możesz także zrobić swój plik .colourrc, żeby mieć swoje kolory (``dircolors -p >$HOME/.colourrc''). Jest tam dużo komentarzy, więc nie powinieneś mieć problemów z modyfikacjami. Po ustawieniu wszystkich kolorów piszesz ``eval `dircolors $HOME/.colourrc`'' żeby ustawienia zadziałały.

3. Czy ja to w ogóle mam?

Przede wszystkim powinieneś wiedzieć czy masz wersję ls, która umie kolorować. Spróbuj wydać takie polecenie na konsoli Linux-owej (chociaż na xterm-ie też powinno się udać):

% ls ‐‐color

(% jest tu znakiem zachęty systemu).

Jeśli dostaniesz komunikat o błędzie mówiący, że ls nie rozumie tej opcji, to musisz zainstalować nowszą wersję pakietu GNU fileutils. Jeśli nie masz odpowiedniego pakietu aktualizacyjnego dla swojej dystrybucji, to ściągnij ostatnią wersję z najbliższego ci lustra GNU i zainstaluj bezpośrednio ze źródła.

Jeśli nie dostałeś komunikatu o błędzie, to masz ls, które rozumie to polecenie. Niestety niektóre wcześniejsze wersje zawarte w dystrybucji Slackware (i możliwe, że w innych) miały błędy. ls zawarte w dystrybucji RedHat 4.1 jest w wersji 3.13, która jest w porządku.

% ls ‐‐version
ls - GNU fileutils-3.13

Jeśli uruchomiłeś polecenie ``ls ‐‐ color'' na konsoli tekstowej Linux-a, to rezultat powienien być pokolorowany zgodnie z domyślnymi ustawieniami i możesz teraz zdecydować czy jest coś co chcesz zmienić czy nie.

Jeśli uruchomiłeś je w xterm-ie, to mogłeś lub nie - zauważyć zmianę w kolorach. W przeciwieństwie do ls, oryginalny program xterm nie obsługiwał kolorów dla programów uruchamianych w nim, ale ostatnie wersję to robią. Jeśli twój xterm nie obsługuje kolorów, to powinieneś zdobyć nowszą wersję tak jak to opisano na końcu tego dokumentu. W międzyczasie przełącz się na tryb tekstowy i pracuj tam.

4. Z jakich kolorów można wybierać ?

Ten skrypt (dzięki dla wielu tych, którzy przysłali mi wersję bash) pokazuje wszystkie standardowe kombinacje kolorów na bieżącej konsoli. Jeśli żadne kolory sie nie pojawią, oznacza to, iż twoją konsola nie obsługuje ANSI.

   #!/bin/bash
   # Wyświetl kolory ANSI.
   #
   esc="\033["
   echo -n " _ _ _ _ _40 _ _ _ 41_ _ _ _42 _ _ _ 43" 
   echo "_ _ _ 44_ _ _ _45 _ _ _ 46_ _ _ _47 _"
   for fore in 30 31 32 33 34 35 36 37; do
     line1="$fore  "
     line2="    "
     for back in 40 41 42 43 44 45 46 47; do
       line1="${line1}${esc}${back};${fore}m Normal  ${esc}0m"
       line2="${line2}${esc}${back};${fore};1m Bold    ${esc}0m"
     done
     echo -e "$line1\n$line2"
   done

Numer koloru pierwszego planu jest pokazany po lewej stronie, a tła - w prostokącie. Jeśli chcesz znaki jaskrawe dodajesz "1" do parametrów, tak że jasny niebieski na białym to: "37;44;1". Cała sekwencja selekcji to: ESC [ 3 7 ; 4 4 ; 1 m.

Uwaga: Tło w chwili obecnej nie może być jaskrawe, więc nie możesz mieć żółtego (jaskrawy brązowy) jako coś innego niż pierwszy plan. Limit ten wynika ze sprzętu.

The colours are:
        0 - black    4 - blue           3# is foreground
        1 - red      5 - magenta        4# is background
        2 - green    6 - cyan
        3 - yellow   7 - white          ;1 is bold

5. Jak skonfigurować kolory dla ls?

Jeśli chcesz zmodyfikować standardowe kolory, to potrzebujesz swojej osobistej kopii w swoim katalogu domowym, co uzyskasz przy pomocy polecenia:

% cd ; dircolors -p > .coloursrc

Po modyfikacji tego dobrze skomentowanego pliku musisz wczytać go do zmiennej środowiskowej LS_COLORS, co można zwykle zrobić poleceniem:

     eval `dircolors .colourrc`

Musisz umieścić tę linię w swoim .bashrc (.cshrc, .tcshrc) (w zależności od twojej powłoki), aby robić to automatycznie przy każdym logowaniu się. Więcej szczegółów znajdziesz w stronie podręcznika man dircolors(1).

6. Jak skonfigurować inny standard tekstowy niż białe-na-czarnym ?

Będziesz musiał przekazać sterownikowi twojego terminala kod, który chcesz mieć jako domyślny. Nie ma standardowego sposobu, aby to zrobić, ale w przypadku Linux-a masz program setterm.

"setterm" używa informacji zawartych w bazie danych o terminalach, aby ustawić atrybuty. Tak się wybiera:

     setterm -foreground black -background white -store

gdzie -store poza właściwą zmianą powoduje, że ustawienia stają się także domyślne dla bieżącej konsoli. Wymaga to, aby bieżący terminal (zmienna środowiskowa TERM) był opisany "wystarczająco dobrze" w bazie danych "termcap". Jeśli setterm z jakichś powodów nie działa, to tu jest kilka alternatyw:

6.1 Xterm.

Jeden z tych Xterminali powinien być dostępny i przynajmniej jeden z nich obsługuje kolory.

     xterm -fg white -bg blue4
     color_xterm -fg white -bg blue4
     color-xterm -fg white -bg blue4
     nxterm -fg white -bg blue4

gdzie 'color_xterm' obsługuje kolorową wersję 'ls'. Ten konkretny wybór przypomina kolory używane na SGI.

6.2 Konsole wirtualne.

Możesz zmodyfikować jądro raz na zawsze, tak samo jak udostępniając standard podczas działania dla konsol wirtualnych przez sekwencję ze znakiem ESC. Jeśli skompilowałeś swoje własne jądro to zalecam modyfikację jądra.

Plik ze źródeł jądra, który powinieneś zmodyfikować około linii 1940, to /usr/src/linux/drivers/char/console.c

           def_color       = 0x07;   /* white */
           ulcolor         = 0x0f;   /* bold white */
           halfcolor       = 0x08;   /* grey */

Ja używam białego na niebieskim:

           def_color       = 0x17;   /* white */
           ulcolor         = 0x1f;   /* bold white */
           halfcolor       = 0x18;   /* grey */

Liczby to kody atrybutów w postaci szesnastkowej używane przez kartę graficzną: najbardziej znacząca cyfra ("1" w przykładzie powyżej) jest tłem; najmniej znacząca - pierwszym planem. 0=czarny, 1=niebieski 2=zielony, 3=jasno-niebieski, 4=czerwony, 5=purpurowy, 6=brązowy/żółty, 7=biały. Dodaj 8, aby uzyskać kolory jaskrawe. Zauważ, że w większości przypadków jaskrawe tło = mrugające znaki, matowe tło. (Od sjlam1@mda023.cc.monash.edu.au).

Możesz także dostarczyć nowy standard podczas działania dla wirtualnych konsol, na bazie na-ekran z niestandardowymi sekwencjami ANSI (znalazłem podczas przglądania źródeł jądra)

     ESC [ 8 ]

która ustawia domyślne kolory na bieżące tło i pierwszy plan. Wtedy łańcuch resetujący atrybuty (ESC [ m) wybiera te kolory zamiast białego i czarnego.

Właściwie będziesz musiał wysłać ten łańcuch na konsolę poleceniem echo za każdym razem kiedy restartujesz komputer. Zależnie od tego do czego używasz swojego Linux-a, może być kilka odpowiednich miejsc:

/etc/issue

To jest miejsce, gdzie wyświetla się komunikat "Welcome to Linux xx.yy", i jest to dobry wybór dla komputera, na którym pracujesz tylko ty. (Przypuszczalnie będzie zmorą dla użytkowników logujących się zdalnie przy pomocy telnet-a). Plik ten jest tworzony podczas startu (Slackware w /etc/rc.d/rc.S; RedHat w /etc/rc.d/rc.local), i powinieneś zmodyfikować linie wyglądające mniej więcej tak:

     echo ""> /etc/issue
     echo Welcome to Linux /bin/uname -a | /bin/cut -d\  -f3. >> /etc/issue
   

na:

     ESCAPE="<wstaw tu znak escape>"
     echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue
     echo Welcome to Linux /bin/uname -a | /bin/cut -d\  -f3. >> /etc/issue

Ten kod spowoduje przesunięcie kursora na początek strony, ustawienie koloru (tutaj: biały na niebieskim), zapisanie tego wyboru i wyczyszczenie reszty ekranu. Modyfikacja zadziała przy następnym starcie systemu. Zapamiętaj, aby wpisać kod klawisza ESC przy pomocy Ctrl-Q w emacs-ie, Ctrl-V w vi lub `Esc w joe, bo wygląda na to, że powłoka, w której się uruchamia ten skrypt nie rozumie sekwencji: /033.

/etc/profile lub .profile.

     if [ "$TERM" = "console" ]; then
         echo "\033[37;44m\033[8]" #
   # albo użyj setterm
         setterm -foreground white -background blue -store
     fi

/etc/login lub .login

     if ( "$TERM" == "console" ) then
       echo "\033[37;44m\033[8]"
   # albo użyj setterm
         setterm -foreground white -background blue -store
     endif

6.3 Logowanie zdalne.

Powinieneś być w stanie użyć setterm tak jak to było pokazane wyżej. Jeszcze raz: wymaga to, aby zdalny komputer wiedział wystarczająco dużo na temat twojego terminala i żeby emulator terminala, przy pomocy którego się logujesz, obsługiwał kolory. Z moich doświadczeń wynika, że najlepszymi emulatorami vt100 dostępnymi obecnie na inne platformy to:

Szczegóły na temat Kermita znajdziesz na http://www.columbia.edu/kermit/

7. Oprogramowanie.

Wszystkie informacje opisane tutaj zakładają instalację GNU/Linux-a. Jeśli masz coś innego (jak np. Sun-a z X-ami czy coś takiego), to możesz zdobyć i samemu sobie skompilować programy.

Kolorowa wersja xterm-a jest oparta na standardowych źródłach xterm-a z łatą dostępną na każdym serwerze X11R6. Xterm dystrybuowany wraz z R6.3 podobno ma natywną obsługą kolorów, ale nie był przeze mnie testowany.

Na przykład tutaj: color-xterm-R6pl5-patch.gz

Przejrzyj dokumentację jeśli używasz starszej wersji X-ów. Uwaga: Nie próbowałem tego samemu !!!

'ls' jest w pakiecie 'fileutils' Można go pobrać z serwera: ftp.icm.edu.pl. Weź wersję co najmniej 3.13.

Będziesz jeszcze potrzebować łaty, którą możesz pobrać z tego samego katalogu, a nazywa się ona "color-ls-3.12.0.3.patch.gz"

Osobiście udało mi się skompilować color-ls na Solaris-ie, SunOS-ie i Irix-ie.

Byłbym wdzięczny za wszelki odzew na temat tego tekstu. Mój adres pocztowy: ravn@dit.ou.dk

‐‐

Thorbjørn Ravn Andersen

8. Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Na pewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać.

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/DHCP.pl.html0100664000175000017500000002724607104371340020321 0ustar covencoven Jak zmusić Linux-a, żeby korzystał z informacji DHCP od Windows 95

Jak zmusić Linux-a, żeby korzystał z informacji DHCP od Windows 95

Autor:Dan Halbert, halbert@world.std.com
lub
halbert@bbn.com
6 Grudnia 1996
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.02, 26 Lipca 1997


Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl.

1. Wprowadzenie.

Mój Linux na PC-cie musi otrzymać IP oraz inne informacje o sieci z serwera DHCP. Ale nie mogłem znaleźć takiego klienta, który działałby z moim serwerem.

Mój PC-et normalnie startuje z Windows 95, a Linux jest rzadziej używany. Klient DHCP pod Windows 95 działa u mnie dobrze. Mogłem skopiować mój adres IP, "nameserver" itp. ręcznie do Linux-a, ale chciałem zautomatyzować ten proces.

Windows 95 dostarcza program (\Windows\Winipcfg.exe), który wyświetla informacje DHCP w ładny graficzny sposób. Po przejrzeniu pliku winipcfg.exe odkryłem, że ma on nieudokumentowaną opcję, która pozwala zapisać informacje do pliku (domyślnie jest to Winipcfg.out). Pozwoliło mi to, na zrobienie takiego trick-u:

  1. Start Win95. Klient DHCP pobierze potrzebne informacje od serwera DHCP.
  2. Uruchomienie Winipcfg.exe i zapis wyniku do pliku.
  3. Start Linux-a.
  4. Zamontować system plików Win95.
  5. Przeczytać plik utworzony przez Winipcfg.
  6. Dostarczyć potrzebne informacje Linux-owi.

Wersję oryginalną tego dokumentu możesz znaleźć na SUNSite Polska. Na temat wersji tłumaczenia patrz sekcja Od tłumacza.

2. Metoda.

Teraz szczegóły na temat tego jak to robię:

  1. W moim folderze startowym Win95 uruchamiam to polecenie. Kiedy Win95 startuje, Winipcfg zapisuje otrzymane od serwera DHCP informacje:
            winipcfg -all -batch c:\winipcfg.out
    
    Opcje muszą być podane w podanym porządku. Nie podanie -all spowoduje brak niektórych informacji. Nie podanie ścieżki do pliku winipcfg.out spowoduje zapisanie tego pliku w katalogu bieżącym. Poniżej jest załączony przykładowy plik winipcfg.out.
  2. Natychmiast (albo jakiś czas później) po starcie Win95, startuję Linux-a. Używam loadlin-a uruchamianego z batch-a DOS-owego. Możesz użyć tego albo czegoś innego.
    (Nie możliwe jest połączenie loadlin-a i winipcfg w jednym batch-u ponieważ najprzypuszczalniej plik winipcfg.out nie zostanie przepisany z cache'u na dysk przed startem loadlin-a. Nie znalazłem sposobu na zapisanie zawartości cache'u na dysk z wiersza poleceń.)
  3. Podczas startu Linux-a wykonywany jest program napisany w Perlu (winipcfg.pl) dołączony na końcu tego dokumentu. Program ten musi być wykonany po zamontowaniu systemu plików Win95, a przed uruchomieniem skryptów sieciowych. Ja używam dystrybucji Debian: poniżej załączony jest wyjątek z pliku /etc/init.d/boot z zanotowanymi moimi dodatkami. Twoja dystrybucja może mieć inne skrypty startowe, więc może będziesz musiał to trochę zmienić. (aut. Patrz kilka linijek niżej na temat innych dystrybucji).Program winipcfg.pl zapisuje nowe wersje plików: /etc/hostname, /etc/resolv.conf oraz /etc/init.d/network. Skrypt network wykonuje polecenie ifconfig z podanymi parametrami.

To tyle. Zapamiętaj oczywiście, że nie powinieneś trzymać Linux-a uruchomionego dłużej niż pozwala na to DHCP. Ja startuję tylko na kilka godzin, więc nie ma u mnie tego problemu.

Będziesz musiał dopasować program winipcfg.pl jeśli masz więcej niż jeden adapter sieciowy albo pseudo-adapter. Na przykład, oprogramowanie AOL ustawia udawany (fake) adapter sieciowy, i musisz zignorować jego informacje.

-------------------------------------------------------------------------------
Od autora: Oto lokalizacje plików odpowiedzialnych za konfigurację sieci oraz plików inicjacyjnych:

-------------------------------------------------------------------------------

Oto załączniki (jeden na stronę):



==============================================================================
Przykładowy plik winipcfg.out zrobiony przez Win95 "winipcfg -all -batch"
(adresy zostały zmienione ze względów bezpieczeństwa)
==============================================================================
Windows 95 IP Configuration

        Host Name . . . . . . . . . : foo.bar.com
        DNS Servers . . . . . . . . : 11.222.33.8
                                      11.222.33.9
        Node Type . . . . . . . . . : Broadcast
        NetBIOS Scope ID. . . . . . : 
        IP Routing Enabled. . . . . : No
        WINS Proxy Enabled. . . . . : No
        NetBIOS Resolution Uses DNS : Yes

Ethernet adapter :

        Description . . . . . . . . : ELNK3 Ethernet Adapter
        Physical Address. . . . . . : 00-AA-BB-99-88-77
        DHCP Enabled. . . . . . . . : Yes
        IP Address. . . . . . . . . : 11.222.33.222
        Subnet Mask . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . : 11.222.33.1
        DHCP Server . . . . . . . . : 11.222.33.10
        Primary WINS Server . . . . : 
        Secondary WINS Server . . . : 
        Lease Obtained. . . . . . . : Wed Oct 16 96 10:17:26 PM
        Lease Expires . . . . . . . : Wed Oct 30 96 10:17:26 PM
==============================================================================

==============================================================================
Wyjątek z pliku /etc/init.d/boot, z moimi dodatkami.
==============================================================================
...
# Mount local file systems in /etc/fstab.
echo "Mounting local file systems..."
mount -avt nonfs

# Execute swapon command again, in case we want to swap to
# a file on a now mounted filesystem.
swapon -a 2>/dev/null

#### Dodatek o DHCP info ####################################################
# Uaktualnij plik z informacjami sieciowymi według informacji z
# klienta DHCP pod Win95
if [ -f /c/winipcfg.out -a -x /usr/local/sbin/winipcfg.pl ]
then
  echo "Setting network information from Windows 95 DHCP info."
  # To powoduje zapisanie nowszych wersji hostname, resolv.conf oraz
  # init.d/network.
  # Katalog /c to tam, gdzie montuję system plików Win95
  /usr/local/sbin/winipcfg.pl /c/winipcfg.out
  if [ $? != 0 ]
  then
    echo "Error getting network information. Using existing network info."
  fi
else
  echo "** Windows 95 DHCP info not available. Using existing network info."
fi
#### koniec dodatku o DHCP info #############################################

# Setup the network interfaces. Note that /var/run and /var/lock
# are cleaned up after this, so don't put anything in the "network"
# script that leave a pidfile or a lockfile.
if [ -x /etc/init.d/network ]
then
  /etc/init.d/network
fi

# Set hostname.
hostname --file /etc/hostname

# Now that TCP/IP is configured, mount the NFS file systems in /etc/fstab.
echo "Mounting remote file systems..."
mount -a -t nfs

...
==============================================================================

==============================================================================
/usr/local/sbin/winipcfg.pl:
To jest program perlowy wywoływany ze skryptu startowego.
==============================================================================
#!/usr/bin/perl

while (<>) {
    # Remove any trailing CR and LF.
    s/\r//g;
    s/\n//g;

    if (/^\tHost Name.*: (.*)$/i) {
        ($hostname, $domain) = split(/\./, $1, 2);
    } elsif (/^\tDNS Servers.*: *(.*)$/i) {
        push @nameservers, $1;
    } elsif (/^\t +([\.0-9]+)$/) {
        push @nameservers, $1;
    } elsif (/^\tIP Address.*: (.*)$/i) {
        $ip_address = $1;
    } elsif (/^\tSubnet Mask.*: (.*)$/i) {
        $netmask = $1;
    } elsif (/^\tDefault Gateway.*: (.*)$i/) {
        $gateway = $1;
    }
}

$hostname || die "Hostname not given";
$domain || die "Domain not given";
$ip_address || die "IP address not given";
$netmask || die "Netmask not given";
$gateway || die "Gateway not given";
$#nameservers != -1 || die "No nameservers given";

open(HOSTNAME, ">/etc/hostname") ||
    die "Could not open /etc/hostname for writing\n";
open(RESOLV, ">/etc/resolv.conf") ||
    die "Could not open /etc/resolv.conf for writing\n";
open(NETWORK, ">/etc/init.d/network") ||
    die "Could not open /etc/init.d/network for writing\n";
chmod 0755, "/etc/init.d/network";

print HOSTNAME "$hostname\n";
print RESOLV "domain $domain\n";
print RESOLV "search $domain\n";
foreach (@nameservers) {
    print RESOLV "nameserver $_\n";
}

@ip_address = split(/\./, $ip_address, 4);
@netmask = split(/\./, $netmask, 4);
$network = join(".",
                $ip_address[0]+0 & $netmask[0]+0,
                $ip_address[1]+0 & $netmask[1]+0,
                $ip_address[2]+0 & $netmask[2]+0,
                $ip_address[3]+0 & $netmask[3]+0);
$broadcast = join(".",
                  $ip_address[0]+0 | ~($netmask[0]+0) & 255,
                  $ip_address[1]+0 | ~($netmask[1]+0) & 255,
                  $ip_address[2]+0 | ~($netmask[2]+0) & 255,
                  $ip_address[3]+0 | ~($netmask[3]+0) & 255);
print NETWORK
"ifconfig eth0 $ip_address netmask $netmask broadcast $broadcast
route add -net $network netmask $netmask
route add default gw $gateway metric 1
";

print
"DHCP info: $hostname.$domain ($ip_address)
  netmask: $netmask broadcast: $broadcast gateway: $gateway
  nameservers: @nameservers
";
exit(0);
==============================================================================

2.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu HOWTO.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany wprowadzone przez tłumacza, to dodatek o lokalizacji plików startowych w innych dystrybucjach.

doc-linux-pl-2002.06.14.orig/mini/html/Diald.pl.html0100664000175000017500000002732307104371340020614 0ustar covencoven Przykład ustawienia demona "diald"

Przykład ustawienia demona "diald"

Autor: Harish Pillay, h.pillay@ieee.org
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.0, 30 Sierpnia 1997


Dokument ten ma służyć jako przykład ustawienia, którym posługiwałem się na wielu maszynach i które umożliwia automatyczną instalację diald podczas startu systemu. Kiedy pojawia się żądanie połączenia, automatycznie wybierany jest numer mojego ulubionego dostawcy Internet-u tutaj w Singapurze - Pacific Internet. Wielkie dzięki dla Erica Schenka za ten super program - diald. Dokument ten został napisany w standardzie ISO-8859-2. Jego oryginalna wersja znajduje się pod adresem ftp.icm.edu.pl.

1. Opis działania diald.

1.1 /etc/rc.d/rc.local

#! /bin/sh
# Put any local setup commands in here
# Running gpm
echo "Running gpm..."
gpm -t ms &

# starting innd
/etc/rc.d/rc.news

# starting CERN httpd
echo "Starting CERN httpd with proxy and caching."
/usr/local/bin/httpd

# loading modules that are needed
/etc/rc.d/rc.modules

# starting diald
echo "Starting diald daemon to Pacific Internet ..."
cd /usr/lib/ppp
/usr/lib/ppp/diald.pacific.internet

1.2 /usr/lib/ppp/diald.pacific.internet

/usr/sbin/diald /dev/ttyS1 /dev/ttyS1 lock debug 20 -m ppp local 127.0.0.2 \
  remote 127.0.0.3 defaultroute modem crtscts \
  connect "chat -v -f /usr/lib/ppp/pppchat.pi" \
  dynamic -- debug noipdefault

1.3 /usr/lib/ppp/pppchat.pi

ABORT "NO CARRIER"
ABORT BUSY
"" ATZ OK
ATm1s50=255s111=0DT1-800-555-1212
CONNECT ""
login MÓJLOGIN
ssword MOJEHASŁO

1.4 Prosty skrypt do PPP.

#!/bin/sh
#       Ustaw PPP na ślepo - skrypt o nazwie blind.ppp

DEVICE=ttyS1
(
        stty 38400 -tostop
        pppd -detach debug noipdefault defaultroute mru 1500 /dev/$DEVICE &
        exit 0
)  /dev/$DEVICE

1.5 Mój plik /etc/diald.conf (nie zmieniony od instalacji dystrybucji)

# Jest to dość skomplikowana kombinacja reguł filtrujących.
# (Są to reguły, których używam osobiście)
#
# Podzieliłem te reguły na 4 sekcje:
# pakiety TCP, pakiety UDP, pakiety ICMP i na końcu reguły dla reszty.
#------------------------------------------------------------------------------
# Reguły dla pakietów TCP
#------------------------------------------------------------------------------
# Ogólny komentarz dotyczący zestawu reguł:
#
# Ogólnie, jako znaczące do timeout-ów, chcielibyśmy traktować tylko
# pakiety zawierające dane na łączu TCP. Dlatego spróbujemy ignorować
# pakiety bez danych.  Ponieważ najkrótszy możliwy nagłówek pakietu
# TCP to 40 bajtów, więc każdy pakiet o długości 40 bajtów nie może
# zawierać danych.  W ten sposób możemy przeoczyć puste pakiety (w
# nagłówku IP mogą znajdować się opcjonalne informacje na temat
# routing-u i inne dodatkowe informacje), ale powinniśmy dostać
# większość z nich. Zauważ, że nie chcemy odfiltrowywać pakietów z
# wyzerowanym polem "tcp.live", ponieważ użyjemy ich później, aby
# przyspieszyć rozłączenia na niektórych połączeniach TCP.
#
# Chcemy także być pewni, że pakiety WWW są aktywne, nawet jeśli gniazdo TCP
# jest zamknięte. Robimy to ponieważ WWW nie utrzymuje otwartych
# połączeń jak już dane zostaną przetransportowane, i byłoby
# denerwujące ciągłe inicjowanie i zamykanie połączenia jak tylko
# dostaniesz jakiś dokument.
#
# Poza WWW TCP jest najczęściej używane do długożywotnych połączeń,
# które jak już zginą, to znaczy, że ich nie potrzebujemy. Nie
# koniecznie chcemy czekać 10 minut aż połączenie zostanie zamknięte
# jeśli nie mamy uruchomionych żadnych telnet-ów czy rlogin-ów, tak
# więc chcemy przyspieszyć timeout na połączeniu TCP, które zostały
# zamknięte. Zrobimy to poprzez przechwytywanie pakietów, które nie
# mają ustawionej flagi "live".
#
# --- właściwy początek zestawu reguł ---

# Na inicjację połączenia dajemy tylko 15 sekund. Cały pomysł polega tu
# na tym, że trzeba się liczyć z możliwością, iż sieć na drugim końcu
# nie będzie działać. W tym przypadku nie chcesz przecież dawać 10
# minut na połączenie. Poniższą regułą dajemy właśnie połączeniu owe
# 15 sekund czasu. Jeśli sieć z drugiej strony działa, to w ciągu 15
# sekund otrzymamy odpowiedź, która będzie zawierała jakieś
# dane. Jeśli w twoim przypadku sprawia to problemy, bo np.: masz
# wolne połączenie czy długi czas odpowiedzi, to możesz zwiększyć
# timeout lub po prostu usunąć tę regułę.
accept tcp 15 tcp.syn

# Nie podtrzymuj połączenia jeśli przychodzą pakiety do named-a
ignore tcp tcp.dest=tcp.domain
ignore tcp tcp.source=tcp.domain

# (Oj! SCO telnet zaczyna od wysyłania pustych sygnałów "SYN" i
# otwiera połączenie tylko w przypadku jeśli otrzyma odpowiedź. Jeny...)
accept tcp 5 ip.tot_len=40,tcp.syn

# Nie podtrzymuj połączenia jeśli pakiety są puste (oprócz pustych SYN-ów)
ignore tcp ip.tot_len=40,tcp.live

# Upewnij się, że transfer http podtrzymuje połączenie przez 2 minuty,
# nawet po zakończeniu.
# UWAGA: W pliku /etc/services może nie być definicji
# serwisu tcp dla www, w którym to przypadku powinieneś zakomentować
# dwie poniższe linie, albo zdobyć nowszy plik /etc/services. W
# sprawie nowego /etc/services zobacz FAQ.
accept tcp 120 tcp.dest=tcp.www
accept tcp 120 tcp.source=tcp.www

# Jeśli połączenie nie jest już aktywne, spróbujemy szybko je
# zamknąć. Zauważ, że jeśli połączenie jest już "zdown-owane", to
# zmiana stanu nie spowoduje jego przywrócenia.
keepup tcp 5 !tcp.live
ignore tcp !tcp.live

# po danych ftp albo połączeniu ftp można się spodziewać dość częstego
# ruchu
accept tcp 120 tcp.dest=tcp.ftp
accept tcp 120 tcp.source=tcp.ftp

# UWAGA: ftp-data nie jest zdefiniowane w pliku /etc/services
# dostarczanego z najnowszą wersją NETKIT, więc to zakomentowałem.
# Jeśli chcesz to zdefiniować, to dodaj poniższą linię do
# /etc/services
# ftp-data       20/tcp
# i odkomentuj dwie następne linie
#accept tcp 120 tcp.dest=tcp.ftp-data
#accept tcp 120 tcp.source=tcp.ftp-data

# Jeśli nie wyłapiemy tego wcześniej, to daj połączeniu 10 minut.
accept tcp 600 any

# Reguły dla pakietów UDP
#
# Żądania dla domeny będziemy odrzucać od razu ponieważ chcemy, żeby
# one tylko podniosły połączenie, a nie trzymać je przez długi czas.
# Robimy tak ponieważ, sieć byłaby inicjowana przy każdym odwołaniu do
# biblioteki resolvera (o ile nie trzymasz wszystkich swoich często używanych
# adresów w /etc/hosts, w którym to przypadku odkryjesz jeszcze inne
# problemy.)
# Zauważ, że nie powinieneś ustawiać mniejszego timeout-u niż
# spodziewany czas odpowiedzi twojego serwera DNS. W innym przypadku
# kiedy inicjacyjne połączenie jest już ustawione może się pojawić
# większe opóźnienie niż to pomiędzy inicjacyjną serią pakietów zanim
# jakikolwiek pakiet, który podtrzymuje połączenie przejdzie przez połączenie.

# Nie ustawiaj połączenia dla rwho
ignore udp udp.dest=udp.who
ignore udp udp.source=udp.who
# Nie ustawiaj połączenia dla RIP
ignore udp udp.dest=udp.route
ignore udp udp.source=udp.route
# Nie ustawiaj połączenia dla NTP czy timed.
ignore udp udp.dest=udp.ntp
ignore udp udp.source=udp.ntp
ignore udp udp.dest=udp.timed
ignore udp udp.source=udp.timed
# Nie ustawiaj połączenia dla żądań domeny pomiędzy dwoma działającymi named-ami
ignore udp udp.dest=udp.domain,udp.source=udp.domain
# Ustaw połączenie jeśli pojawi się żądanie domeny z innego miejsca
# niż named
accept udp 30 udp.dest=udp.domain
accept udp 30 udp.source=udp.domain
# To samo dla rozgłaszania netbios-ns 
# UWAGA: w pliku /etc/services serwis netbios-ns może nie być
# zdefiniowany - wtedy powinieneś zakomentować 3 poniższe linie
ignore udp udp.source=udp.netbios-ns,udp.dest=udp.netbios-ns
accept udp 30 udp.dest=udp.netbios-ns
accept udp 30 udp.source=udp.netbios-ns
# Nie utrzymuj połączenia dla transferów routed i gated
ignore udp tcp.dest=udp.route
ignore udp tcp.source=udp.route
# Wszystko inne dostaje 2 minuty czasu
accept udp 120 any

# Wszystkim pakietom, których nie objęły poprzednie zasady daj 30
# sekund życia
accept any 30 any

1.6 Mój plik diald.defs (nie zmieniony od instalacji dystrybucji)

# Definicja domyślnych reguł dla protokołów
prule tcp tcp 9:12:13:14:15:16:17:18:19:+0:+1:+2:+3:9:9:9
prule udp udp 9:12:13:14:15:16:17:18:19:+0:+1:+2:+3:9:9:9
prule icmp icmp 9:12:13:14:15:16:17:18:19:9:9:9:9:9:9:9
prule any any 9:12:13:14:15:16:17:18:19:9:9:9:9:9:9:9
# Definicja pól nagłówków pakietów internet-owych
var ip.ihl 0(24)&0xf
var ip.version 0(28)&0xf
var ip.tos 1(24)&0xff
var ip.tot_len 2(16)&0xffff
var ip.id 4(16)&0xffff
var ip.frag_off 6(16)&0x3fff
var ip.ttl 8(24)&0xff
var ip.protocol 9(24)&0xff
var ip.check 10(16)&0xffff
var ip.saddr 12
var ip.daddr 16
# Definicja pól nagłówków pakietów TCP
var tcp.source +0(16)&0xffff
var tcp.dest +2(16)&0xffff
var tcp.seq +4
var tcp.ack_seq +8
var tcp.doff +12(28)&0xf
var tcp.fin +13(24)&0x1
var tcp.syn +13(25)&0x1
var tcp.rst +13(26)&0x1
var tcp.psh +13(27)&0x1
var tcp.ack +13(28)&0x1
var tcp.urg +13(29)&0x1
var tcp.live +127
# Definicja nagłówków pakietów UDP
var udp.source +0(16)&0xffff
var udp.dest +2(16)&0xffff
var udp.len +4(16)&0xffff
var udp.check +6(16)&0xffff
# Definicja nagłówków pakietów ICMP
var icmp.type +0(24)&0xff
var icmp.code +1(24)&0xff
var icmp.checksum +2(16)&0xffff
var icmp.echo.id +4(16)&0xffff
var icmp.echo.sequence +6(16)&0xffff
var icmp.gateway +4

1.7 Mój sprzęt i oprogramowanie.

1.8 Uwagi.

Masz jakieś pytania? Przyślij mi list.

1.9 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/Dip+SLiRP+CSLIP.pl.html0100664000175000017500000004605607104371340022112 0ustar covencoven Dip+SLiRP+CSLIP

Dip+SLiRP+CSLIP

Autor: Zenon Fortuna, zenon@netcom.com
v1.1, 29 Października 1995
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.0, 3 Września 1997


[Od tłumacza]Tłumaczenie to jest zrobione z wersji 1.1, którą znalazłem na serwerze u autora, a której nie wiedzieć czemu nie ma nigdzie na oficjalnych serwerach.[koniec] Dlaczego powstał ten dokument? Jest on przeznaczony dla tych, którzy nie chcą czytać całego NET-3-HOWTO z wszystkimi jego szczegółami, ani nie chcą czytać dokumentacji do Dip-a/SLiRP-a, ale chcieliby zainstalować SLIP-owe połączenie do Internetu, używając do tego celu konta z dostępną powłoką (shell-em). Wymieniona wcześniej dokumentacja powinna być rozważana jako bardziej wyczerpująca (i to w obu tego słowa znaczeniach). Opisane przykłady zostały przetestowane na pakietach dip337n-uri i slirp-0.95h. Testy zostały przeprowadzone na stabilnej wersji jądra (tm) Linux-a - 1.2.13, oprogramowanie zostało zainstalowane pod dystrybucją Slackware 2.2.0. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp.netcom.com w katalogu /pub/ze/zenon/linux/DipSlirpCSLIP/.

1. Historia zmian.

29 Października '95 Wersja: 1.1 Dodałem informację dla systemów tylko z urządzeniem loopback. 15 Października Wersja: 1.0
Pierwotna wersja tego dokumentu.

2. Krótki opis.

I stanie się cud: będziemy mieli połączenie TCP/IP między Linux-em a zasobami Internet-u.

3. Kroki podczas konfiguracji.

3.1 Instalacja SLiRP-a.

3.2 Testowanie SLiRP-a.

Zaloguj się na swoje konto u dostawcy i napisz bin/slirp (albo ./slirp, w zależności od lokalizacji)

Powinieneś zobaczyć listę wiadomości z taką linią na końcu:

                [talking CSLIP, MTU 1500, MRU 1500, 38400 baud]

Aby wyjść ze slirp-a wpisz powoli (z ponad sekundowymi przerwami) pięć zer.

3.3 Konfiguracja twojego Linux-a.

W skrócie to co musisz zrobić, to przygotować jądro, żeby mogło pracować z siecią i CSLIP-em. Potem powinieneś skonfigurować sieć. Napisz make config w katalogu /usr/src/linux i odpowiedz "y" na następujące pytania:

                Networking support (CONFIG_NET) [y]
                TCP/IP networking (CONFIG_INET) [y]
                Assume subnets are local (CONFIG_INET_SNARL) [y]
                Network device support? (CONFIG_NETDEVICES) [y]
                Dummy net driver support (CONFIG_DUMMY) [y]
                SLIP (serial line) support (CONFIG_SLIP) [y]
                CSLIP compressed headers (CONFIG_SLIP_COMPRESSED) [y]
                PPP (point-to-point) support (CONFIG_PPP) [y]

Ja używam karty Ethernet-owej 3c509, więc moje dodatkowe opcje to:

                3COM cards (CONFIG_NET_VENDOR_3COM) [y]
                3c509/3c579 support (CONFIG_EL3) [y]

Przy instalacji poprzez NFS możesz też dodać:

                NFS filesystem support (CONFIG_NFS_FS) [y]

Teraz, jak już poprawnie skonfigurowałeś jądro, skompiluj je wydając polecenia: make dep && make clean && make zImage. Po kompilacji przenieś plik /usr/src/linux/arch/i386/boot/zImage do katalogu, w którym zwykle znajduje się jądro i uruchom lilo.

Aby skonfigurować sieć, najpierw zdecyduj jaki będzie twój adres IP. Jeśli brakuje ci specjalnych adresów, to weź 192.168.1.100, który to jest dozwolony dla użytku lokalnego przez RFC1597.
Dla systemów tylko z urządzeniem loopback będzie to adres 127.0.0.1.
Jeśli chcesz dokładnych i poprawnych informacji, to powinieneś raczej przeczytać NET-3-HOWTO ( dostępne także po polsku), ale możesz spróbować zrobić coś takiego:

Teraz zrestartuj system.

3.4 Testowanie twojego Linux-a.

Przede wszystkim obserwuj komunikaty pojawiające się podczas startu, albo zajrzyj do pliku /usr/adm/messages jeśli działa u ciebie proces syslogd(8).

Powinieneś zobaczyć mniej więcej takie komunikaty:

                 IP Protocols: ICMP, UDP, TCP
                 PPP: version ...
                 TCP compression ...
                 PPP line discipline registered.
                 SLIP: version ...
                 CSLIP: code copyright ...

Jeśli posiadasz też interfejs Ethernet, to powinien on także zostać poprawnie rozpoznany:

                 eth0: 3c509 at 0x280 ...

Twoja sieć powinna być już aktywna i możesz trochę potestować kilkoma poleceniami:

Dobra, twój Linux jest gotowy do współpracy z CSLIP-em.

3.5 Instalacja DIP-a.

Skrypt dip-a jest zwykle długi i skomplikowany. W katalogu samples znajduje się kilka przykładów (może to być np. /usr/doc/dip/samples)
W każdym razie ja podam tutaj swój skrypt jako przykład:

#### slirp.dip file ####
#
# slirp.dip     Dialup IP script for use with SLiRP and netcom
#

main:
  # Ustaw maskę sieci na sl0
  netmask 255.255.255.0

  # Ustaw odpowiedni port szeregowy i jego prędkość.
  # Możliwe, że musisz zmienić ttyS2 na inną wartość dla twojego modemu.
  # Ja mam także uruchomione "mgetty" na tym porcie dlatego używam
  # "ttyS2" a nie "cua2"
  port ttyS2
  speed 38400

  # Zresetuj modem i linię terminalową.
  # Tutaj występują u niektórych problemy.
  reset

  # Przygotuj się do dzwonienia.
  # Zauważ, że twój modem może mieć inny łańcuch inicjacyjny.
  # Mój to WordBlazer
  send AT S0=0 S11=70 S50=254 S58=2 Q0 V1 E1 X4\r
  wait OK 2
  if $errlvl != 0 goto modem_trouble

redial:
  # Wybierz numer.
  # U ciebie będzie raczej inny numer.
  send ATDT 274 2900\r
  wait CONNECT 50
  if $errlvl != 0 goto dial_trouble

  # Połączyliśmy się. Zaloguj ten fakt do systemu.
login:
  sleep 2
  send \n
  wait ogin: 20
  if $errlvl != 0 goto login_trouble
  print got the login prompt, OK
  # zamień poniższe "zenon" na twój identyfikator u dostawcy
  sleep 2
  send \n
# Nie wiem dlaczego musiałem dodać jeszcze "\n" przed wysłaniem mojego
# identyfikatora, ale inaczej nie działało
  sleep 2
  send zenon\n
  print sent 'zenon', waiting for 'password' ...

  wait ord: 30
  if $errlvl != 0 goto password_trouble
  # poniższe "blablabla" zamień na swoje hasło.
  send blablabla\r

  # Teraz jesteśmy już zalogowani - przypuszczalnie.
loggedin:
  # Zamień poniższe na TWÓJ prompt (mój to zenon@netcomNN n% )
  wait zenon 15
  if $errlvl != 0 goto prompt_error

  # SLiRP ustawia 10.0.2.2 jako adres odległego komputera.
  get $remote 10.0.2.2

  # Upewnij się, że "slirp" jest na ścieżce i że jest wykonywalny.
  # W tym przykładzie zakładam, że slirp został zainstalowany w katalogu
  # $HOME/bin
  send exec bin/slirp\n

  # Ustaw parametry CSLIP-a
  get $mtu 1500
  # Upewnij się, że polecenie "route add -net default $remote" jest wykonane
  # W pakiecie dip-3.3.7n wystarczy wpisać "default"
  default

  # Powiedz "Cześć" i odpalaj.
done:
  print CONNECTED local: $locip ---> remote: $rmtip
  mode CSLIP
  goto exit

prompt_error:
  print TIME-OUT waiting for SLIPlogin to fire up...
  goto error

login_trouble:
  print Trouble waiting for the Login: prompt...
  goto error

password_trouble:
  print Trouble waiting for the Password: prompt...
  goto error

modem_trouble:
  print Trouble occurred with the modem...
  goto error

dial_trouble:
  print Trouble occurred while dialing...
error:
  print CONNECT FAILED to $remote
  quit

exit:
  exit
#### end

KOMENTARZ: W powyższym przykładzie niektóre pozycje wymagają podania danych specyficznych dla ciebie:

3.6 Testowanie DIP-a.

Polecenie dip -v slirp.dip spowoduje uruchomienie dip-a w trybie verbose - czyli na ekranie będą pojawiać się informacje co się w danym momencie dzieje.

Komunikaty pojawiające się na ekranie mogą zasugerować jakieś zmiany do skryptu slirp.dip.

Jeśli wszystko poszło dobrze, to powinieneś zobaczyć taki komunikat na końcu:

                CONNECTED local: 192.168.1.100 ---> remote: 10.0.2.2
         (albo  CONNECTED local: 127.0.0.1 ---> remote: 10.0.2.2)

a dip "zmienia" się teraz w proces-demon, zwracając ci dostęp do prompt-a.

Przy okazji: teraz aby zakończyć działanie dip-a, wpisz po prostu dip -k a działanie dip-a zostanie zakończone i połączenie modemowe zamknięte.

4. Normalne działanie.

Po udanym (?) połączeniu anonimowym, możesz odkryć, że jesteś... na sunsite.icm.edu.pl - polskiej kopii archiwum Linux-a.

Jeśli zaszedłeś już tak daleko, to możesz zacząć podziwiać możliwości połączenia dip+slirp: jesteś na SIECI.

Rozłącz się z "sunsitem" tak szybko jak możesz, powracając do systemu "moj-host".

Teraz pojawia się pytanie:

Czy możemy po prostu napisać: ftp sunsite.icm.edu.pl?

Nie przed uaktywnieniem DNS-u (Domain Name Server).

W tym momencie możesz chcieć się rozłączyć. Wpisz w swoim lokalnym prompcie dip -k.

4.1 Dodawanie DNS-u.

Najprzypuszczalniej twój dostawca Internet-u ma serwis DNS (w przeciwnym razie nie byłbyś w stanie używać połączeń Internet-owych w normalny sposób). Połącz się raz jeszcze z serwerem dostawcy przy pomocy dip slirp.dip i telnet 10.0.2.1. Zajrzyj do pliku /etc/resolv.conf.

Powinieneś zobaczyć tam kilka takich linijek:

                nameserver  <adres-IP>

gdzie <adres-IP> będzie miał konkretną wartość.

Skopiuj przynajmniej jedną z tych linijek do swojego pliku /etc/resol.conf.

Teraz powróć do swojego lokalnego komputera (bez zamykania połączenia) i sprawdź czy serwis DNS działa. Wpisz: dnsquery sunsite.icm.edu.pl.

Jeśli na ekranie pojawi się numer IP powyższego adresu, to oznacza, że twój DNS działa.

Teraz możesz używać takich narzędzi jak lynx, mosaic czy netscape bezpośrednio ze swojego Linux-a.

5. Komentarze.

Ten uproszczony dokument został napisany raczej jako streszczenie podstawowej instalacji dip+slirp, aniżeli podręcznik.
Zamysłem było pomóc potencjalnym użytkownikom CSLIP-a przy starcie. Tekst ten jest wysyłany jako mini-HOWTO, dlatego, jeśli zobaczysz w nim jakieś oczywiste błędy, daj mi znać, proszę.
Wszystkie wersję są dostępne u mnie w katalogu na ftp:

ftp.netcom.com.

Chcę podziękować autorom narzędzi dip i slirp za cudowne programy. Jestem pod wrażeniem i bardzo wdzięczny.

Zenon Fortuna ( zenon@netcom.com)

5.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to:

doc-linux-pl-2002.06.14.orig/mini/html/Diskless.pl.html0100664000175000017500000003620607104371340021360 0ustar covencoven Mini Howto dla bezdyskowych stacji

Mini Howto dla bezdyskowych stacji

Robert Nemkin, buci@math.klte.hu
v0.0.3, 12 Września 1996.
Wersja polska: Bartosz Maruszewski B.Maruszewski@zsmeie.torun.pl
v1.12, 26 Lipca 1997


Dokument ten opisuje jak zainstalować bezdyskową stacje roboczą Linux-a. Prawa autorskie należą do Roberta Nemkina. Polisa praw autorskich to GPL. Chciałbym podziękować Bela Kis bkis@cartan.math.klte.hu za przetłumaczenie tego dokumentu na język angielski. Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl.

1. Zmiany.

2. Jak zainstalować bezdyskową stację roboczą Linux-a ?

Dokument ten traktuje o instalacji bezdyskowej stacji roboczej na Linux-ie. Czasami jest konieczna instalacja Linux-a na PC-tach, które nie mają ani dysku twardego ani stacji dyskietek. Jeśli dostępna jest sieć, inny komputer z Unix-em z bootp, tftp, serwer NFS, i eprom burner FIXME wtedy możliwe jest zainstalowanie Linux-a bez twardego dysku czy dyskietek.

3. Dokumenty związane z tym.

4. Sprzęt.

Cokolwiek tu było opisane, sprawdzone zostało na następującej konfiguracji:

5. Podstawowe idee.

Podstawową ideą tego jest: PC-et otrzyma swój adres IP z serwera startowego poprzez protokół bootp, używając 0.0.0.0 jako inicjacyjnego adresu IP oraz jądro poprzez protokół tftp.

Startowanie poprzez różne segmenty (poprzez ruter) nie jest takim prostym pytaniem, więc albo umieść oba - serwer startowy i stację bezdyskową - w jednym segmencie albo skonfiguruj pomocniczy adres UDP w swoim ruterze dla adresu serwera. Dalszych informacji szukaj w podręczniku dostarczonym razem z twoim ruterem.

Aby to zrobić postepuj zgodnie z poniższymi krokami.

5.1 Ustawianie PC-ta.

Zdobądź pakiet nfsboot. (Dostępny jest np. z ftp.icm.edu.pl) Zawiera on obraz BIOS-u dla karty wd8013, który może być bezpośrednio zapisany.

Są jeszcze inne alternatywne sposoby na przygotowanie PC-ta:

Jeśli wybierzesz tę druga opcję musisz zapisać obraz na dyskietke poleceniem dd.

Obrazy te zawierają klienta bootp oraz tftp. Musisz także przygotować jądro, które będzie zawierało opcję nfs-root.

Możesz skonfigurować obsługę urządzenia blokowego (dyskietki albo dysku twardego), ale musisz skonfigurować obsługę tcp/ip, karty wd ethernet, głównego sytemu plików przez nfs. Potem skompiluj jądro jak zwykle.

5.2 Ustawianie bootpd na serwerze.

Można go znleźć w pakiecie >bootpd-2.4.tar.gz na serwerze ftp.icm.edu.pl.

Zdobądź pakiet, skompiluj go i zainstaluj. Jeśli twój drugi komputer to przypadkiem Linux Slackware, to możesz przeskoczyć ten krok ponieważ standardowa dystrybucja zawiera bootpd. Demona można uruchomić albo bezpośrednio poleceniem: bootpd -s albo używając inetd. W tym wypadku musisz:

5.3 Konfiguracja bottpd na serwerze.

Po pierwsze bootpd ma plik konfiguracyjny o nazwie bootptab, który z reguły znajduje się w katalogu /etc. Musisz go zmodyfikować przez wpisanie adresu IP twoich gateway-ów, serwerów dns i adres-u/ów ethernet twojej stacji bezdyskowej.

Oto przykładowy plik konfiguracyjny /etc/bootptab:


   global.prof:\
           :sm=255.255.255.0:\
           :ds=192.168.1.5:\
           :gw=192.168.1.19:\
           :ht=ethernet:\
           :bf=linux:
   machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.1
   machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.1
   machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.1

global.prof jest ogólnym szablonem dla pól host-a, gdzie

Potem każdy komputer musi mieć swoją linię:

5.4 Rozumienie tftp.

TFTP (Trivial File TRansfel Protocol) jest protokołem transferu plików, takim jak ftp, z tym, że o wiele prostszym do zapisania go w EPROM-ach. TFTP może zostac użyty na dwa sposoby:

Prawie każda implementacja Unix-a zawiera serwer tftp, przypuszczalnie nie musisz instalować własnego.

5.5 Ustawianie minimalnej konfiguracji Linux-a na odległymserwerze.

Może to zawierać pakiety a, ap, n oraz x z dystrybucji Slackware. Jeśli zainstalujesz więcej - nie ma sprawy; ale wymienione pakiety wystarczą, żeby zrobić bezdyskowy Xterminal. Do instalacji potrzebujesz działającego już Linux-a. Znajdź trochę miejsca na dysku na odległym komputerze i wyeksportuj je jako do zapisu-i-odczytu. Zamontuj ten wyeksportowany katalog gdzieś (np. /mnt) w systemie plików Linux-a. Zacznij ustawianie Linux-a i zmień opcję root w setup-ie z / na /mnt. Potem zainstaluj powyższe pakiety jak zwykle. Jeśli chcesz mieć nie więcej niż jedną stację bezdyskową Linux-ową, to nie potrzeba żadnych zmian. Jednak z drugiej strony, jeśli planujesz używać więcej niż jednej bezdyskowej stacji Linux-owej wtedy powyższe ustawienia nie będą działać ponieważ niektóry pliki i katalogi muszą być prywatne dla danej maszyny. Problem ten można obejść przez przeniesienie katalogu /usr (nie zaweira on żadnych prywatnych danych) i stworzyć osobne podkatalogi dla każdej bezdyskowej stacji. Na przykład, jeśli /export/linux/machine1 zostałby zamontowany na /mnt wtedy struktura katalogów po inicjacyjny ustawieniu wyglądałaby tak:


   /export/linux/machine1/bin
   /export/linux/machine1/sbin
   /export/linux/machine1/lib
   /export/linux/machine1/etc
   /export/linux/machine1/var
   /export/linux/machine1/usr

Po zmianach wyglądałaby tak:


   /export/linux/machine1/bin
   /export/linux/machine1/sbin
   /export/linux/machine1/lib
   /export/linux/machine1/etc
   /export/linux/machine1/var
   /export/linux/usr

Teraz stwórz podkatalogi dla innych maszyn. Przyjmij na razie, że twoje stacje bezdyskowe nazywają się machine1, machine2, ..., machinen; wtedy możesz użyć następującego skryptu w bash-u, aby pozakładać inne katalogi:


   #!/bin/bash
   cd /export/linux
   for x in machine2 machine3 ; do
        mkdir $x; cd $x
        (cd ../machine1; tar cf - *) | tar xvf -
   done

Potem zrób nastepujące eksporty:

tak jak tutaj:

format tego przykładowego pliku odpowiada składni pliku eksportowego z SunOS-u 4.1.3


   # To jest plik /etc/export
   # dla odległych Xterminali na Linux-ie zrobiony przez Buci
   # ta linia pojawia się tylko jeden raz
   /export/root/usr             -access=linuxnet
   # te po jednej dla każdego host-a
   /export/root/machine1       rw=machine1,root=machine1
   /export/root/machine2       rw=machine2,root=machine2
   /export/root/machine3       rw=machine3,root=machine3

Nie zapomnij uruchomić exportfs -a.

5.6 Konfiguracja serwera tftp.

Teraz czas na konfigurację serwera tftp. Jeśli nie potrzebujesz bezpiecznego tftp, to wszystko jest raczej proste, twoje klienty mogą być startowane z katalogu /export.

Jeśli używany jest bezpieczny tftp, to możesz albo zrobić pełną strukturę katalogów /export/linux pod tftpboot (z jednym rzeczywistym jądrem i symbolicznymi dołączeniami dla innych maszyn), albo niech katalog /export będzie katalogiem startowym dla bezpiecznego tftpd. Albo, jeśli masz odrębny katalog tftpboot, to potrzbujesz tylko oryginalnej struktury katalogów z jednym jądrem i symbolicznymi dowiązaniami dla innych. Możesz otrzymać takie ustawienie przez wpisanie tego:


         mkdir -p /tftpboot/export/linux/machine1
         cd /tftpboot/export/linux/machine1
         cp /export/linux/machine1/<name of the kernel> .

5.7 Praca końcowa.

Ostatecznie musisz wpisać:


     /sbin/mount nfs_server:/export/linux/usr /usr

jako pierwszą linię pliku


     /export/linux/<machinex>/etc/rc.d/rc.S

gdzie <machinex> to machine1, machine2, itd.

6. Wymagania pamięciowe i dyskowe; prędkość.

Slackware 2.3; dla innych dystrybucji/wersji podane liczby mogą być różne.

7. Możliwe błędy.

8. Błędy i możliwy dalszy rozwój tego dokumentu.

8.1 Od autora.

8.2 Od tłumacza.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@zsmeie.torun.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl/pub/Linux/JTZ/

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

Zmiany wprowadzone przeze mnie do tego dokumentu to polskie odnośniki do serwerów ftp i WWW. doc-linux-pl-2002.06.14.orig/mini/html/Ext2fs-Undeletion.pl.html0100664000175000017500000013504507104371340023057 0ustar covencoven Linux Ext2fs Undeletion mini-HOWTO

Linux Ext2fs Undeletion mini-HOWTO

Autor: Aaron Crane aaronc@poboc.com
v1.3, 2 lutego 1999
Wersja polska: Bartosz Sawicki sawickib@ee.pw.edu.pl
v1.0, 15 kwietnia 1999


Wyobraź sobie. Trzy ostatnie trzy dni spędziłeś bez snu, jedzenia, a nawet bez prysznica. Właśnie ukończyłeś program, który przyniesie Ci światową sławę i uznanie. Musisz go jeszcze tylko starować i umieścić na Metalab-ie. No, i skasować wszystkie kopie zapasowe tworzone przez Emacs-a. Piszesz więc rm * ~. Już za późno, zauważyłeś dodatkową spację w poleceniu. Właśnie skasowałeś całe swoje dzieło ! Nadchodzi pomoc. Dokument ten wyjaśnia jak odzyskiwać skasowane pliki w systemie plików Second Extended File System. Może uda Ci się jednak opublikować Twój genialny program. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://pobox.com/~aaronc/.

1. Wstęp

To mini-Howto stara się dostarczyć porad jak odzyskiwać skasowane pliki w systemie plików ext2. Zawiera ono również dyskusję, jak przede wszystkim, nie dopuścić do skasowania ważnych plików.

Chciałbym, aby było ono przydatne dla ludzi, którym zdarzył się mały wypadek z rm; jakkolwiek mam również nadzieję, że przeczytają je także inni. Nigdy nie wiadomo, pewnego dnia, któraś z zamieszczonych tu informacji z może uratować Ci tyłek.

Tekst ten zakłada ogólną podstawową wiedzę o systemie plików UNIX-a. Mam jednak nadzieję, że będzie dostępny dla większości użytkowników Linux-a. Jeśli jesteś całkowicie początkujący, obawiam się, że odzyskiwanie plików wymaga ilości wiedzy technicznej, której nie posiadasz.

Nie będziesz mógł odtwarzać skasowanych plików z systemu plików ext2 bez praw odczytu do urządzenia, na którym były one przechowywane. Ogólnie oznacza to, że musisz być administatorem (root). Niektóre dystrybucje (takie jak Debian GNU/Linux) tworzą grupę disk, której członkowie mają dostęp do takich urządzeń. Będziesz potrzebował także debugfs z pakietu e2fsprogs. Prawdopodobnie jest on już zainstalowany przez Twoją dystrybucję.

Dlaczego to napisałem? Wynikło to głównie z moich własnych doświadczeń ze zwykłą głupotą i katastrofą spowodowaną przez komendę rm -r wykonywaną z prawami administratora. Skasowałem 97 plików typu JPEG, których potrzebowałem i których prawie na pewno nie można było odzyskać z innych źrodeł. Z pomocą użytecznych wskazówek (patrz rozdział Wyrazy uznania i Bibliografia) i dużej wytrwałości, odzyskałem 91 nieuszkodzonych plików. Udało mi się odtworzyć częściowo następne pięć (wystarczająco, aby zobaczyć co było na tych obrazkach). Tylko jednego nie byłem w stanie obejrzeć, ale nawet w tym przypadku, jestem prawie pewien, ze stracone zostały nie wiecej niż 1024 bajty (niefortunnie z samego poczatku pliku; uwzględniając to, że nic nie wiem o formacie JPG, zrobiłem wszystko co mogłem).

W dalszych rozważaniach będę chciał przedstawić jakiej wielkości współczynnika odtworzenia skasowanych plików możesz się spodziewać.

1.1 Historia publikacji

Istnieją następujące upublicznione wersje tego dokumentu (i daty ich publikacji):

Zmiany w wersji 1.1

Jakie zmiany zostały zrobione w tej wersji? Przede wszystkim, został poprawiony błąd w przykładowym odzyskiwaniu pliku. Dziękuję wszystkim, którzy napisali, żeby wskazać mi ten błąd. Mam nadzieję, że nauczyłem się być bardziej uważnym przy interakcyjnej pracy z programem.

Po drugie, rozważania o systemie plików w UNIX-ie zostały przerobione tak, aby uczynić je bardziej zrozumiałymi. Od początku nie byłem z tego zadowolony i dostałem komentarze, że nie było to napisane zbyt jasno.

Po trzecie, uuencode'owany gzip-owany tar-owany pakiet fsgrab ze środka pliku został usunięty. Teraz program dostępny jest na mojej stronie domowej i na Metalab-ie (i kopiach, w Polsce - Sunsite ).

Po czwarte, dokument ten został przetłumaczony na język składu SGML używany w Linux Documention Project. Ten język może być łatwo konwertowany do innych języków składu (np. HTML-a i LaTeX-a) w celu dogodnego sposobu wyświetlania i drukowania. Jedną z korzyści z tego jest to, że ładny wygląd wersji papierowej jest łatwiejszy do osiągniecia. Inną jest to, że dokument zawiera wewnętrzne i zewnętrzne odnośniki, gdy oglądany jest przez WWW.

egil@kvaleberg.no, który wskazał na polecenie dump w debugfs. Jeszcze raz, dzięki Egil. Druga zmiana polegała na zaznaczeniu, że użycie chattr pomaga uniknąć skasowania ważnych plików. Dziekuję Hermanowi Suijs H.P.M.Suijs@kub.nl za zauważenie tego. Streszczenie zostało uaktualnione. Zostały dodane URL-e do organizacji i oprogramowania. Wprowadzono wiele innych mniejszych zmian (literówki i tym podobne).

Zmiany w wersji 1.3

Pomimo, że jest to pierwsza wersja od 17 miesięcy, jest tutaj mało nowego. W wersji tej poprawione są drobniejsze błędy (literówki, puste URL-e, tego typu rzeczy -- szczególnie nie związane z Open Group), uaktualniono kilka części tekstu, które uległy przeterminowaniu, takich jak partie dotyczące wersji jądra i lde. No i zmieniłem `Sunsite' na `Metalab'.

To wydanie jest przewidywane jako ostatnie przed wersją 2.0, która, mam nadzieję, będzie pełnym Howto. Pracuję nad istotnymi zmianami, które spowodują zwiększenie głównego numeru wersji.

1.2 Inne lokalizacje tego dokumentu

Najnowsza publiczna wersja tego dokumentu powinna być zawsze dostępna na Linux Documentation Project site (i kopiach, w Polsce - Sunsite ).

Najbardziej aktualna wersja jest również przechowywana na mojej stronie domowej w kilku formatach:

2. Jak nie skasować plików

Trzeba pamiętać, że Linux różni się od MS-DOS jeśli chodzi o kasowanie plików. W MS-DOS (jak i w Windows 95), dosyć łatwo jest odzyskać skasowane pliki - `system operacyjny' (używam tego terminu dosyć swobodnie) dostarcza nawet narzędzi, które automatyzują ten proces. W Linux-ie jest inaczej.

Reguła numer jeden (podstawowa wskazówka) brzmi:

RÓB KOPIE ZAPASOWE

bez względu na wszystko. Pomyśl o wszystkich swoich danych. Być może, jak ja, trzymasz kilkuletni zbiór listów, kontaktów, programów, dokumentów na swoim komputerze. Pomyśl co by się stało z Twoim życiem, gdyby Twój dysk uległ katastrofalnemu uszkodzeniu, lub gdyby -- o wielkie nieba ! -- złośliwy craker wyczyścił Twój dysk. To nie jest niemożliwe; korespondowałem z wieloma ludźmi w takiej sytuacji. Myślę, że teraz wszyscy rozsądnie myślący użytkownicy Linux-a wyjdą, kupią urządzenie do robienia kopii zapasowych, opracują kalendarz archiwizacji i będą się jego trzymać. Ja używam wolnego dysku twardego w innym komputerze i okresowo kopiuję tam przez sieć ethernet mój katalog domowy. Więcej informacji o planowaniu kalendarza archiwizacji znajdziesz u Frischa (1995) (patrz rozdział Bibliografia i Wyrazy Uznania).

Co wtedy, gdy nie ma kopii zapasowej? (lub nawet przy istnieniu kopii zapasowej: żadne środki bezpieczeństwa nie są złym rozwiązaniem w miejscu gdzie przechowywane są ważne dane).

Spróbuj ustawić prawa dostępu do ważnych plików na 440 (lub mniej): odebranie sobie samemu praw zapisu oznacza, że rm będzie wymagał potwierdzenia przed skasowaniem. (Zauważyłem, że jeśli rekursywnie kasuję katalog rm -r, prośba potwierdzenia pojawi się przy pierwszym i drugim pliku, potem program zachowuje się jak rm -rf).

Niezłą sztuczką dla wybranych plików jest utworzenie w ukrytym katalogu twardych dowiązań do nich. Kiedyś usłyszałem historię o administatorze, który przez pomyłkę skasował /etc/passwd (nieomal w ten sposób niszcząc system). Jednym z rozwiązań takiego kłopotu jest zrobienie czegoś następującego (jako root):

# mkdir /.backup
# ln /etc/passwd /.backup

Teraz skasowanie pliku wymaga większego wysiłku: gdy napiszesz tylko

# rm /etc/passwd

wtedy

# ln /.backup/passwd /etc

odtworzy Twój plik. Oczywiście, to rozwiązanie nie pomoże jeśli nadpiszesz plik, więc nie zapomninaj o kopii zapasowej.

W systemie plików ext2 jest możliwe użycie atrybutów ext2, aby ochraniać pliki. Atrybuty te mogą być zmieniane za pomocą komendy chattr. Istnieje atrybut `append-only`: plik z tym atrybutem może być tylko powiększany, nie może być skasowany i istniejąca zawartość nie może być nadpisana. Jeśli atrybut ten ma katalog, każdy plik czy katalog w nim leżący może być normalnie modyfikowany, ale żaden z plików nie może zostać skasowany. Atrybut `append-only' ustawia się poleceniem

$ chattr +a FILE...

Istnieje również atrybut `immutable', który może być zapalany lub gaszony tylko przez administratora. Pliku lub katalogu z tym atrybutem nie można zmienienić, skasować, zmienić jego nazwy, czy utworzyć do niego twardego dowiązania. Można go ustawić w następujący sposób:

# chattr +i FILE...

Ext2fs dostarcza również atrybutu `undeletable' (+u in chattr). Założenie było takie, że plik z tym atrybutem po skasowaniu zostaje przeniesiony w bezpieczne miejsce `safe location', aby rzeczywiste skasowanie przesunąć w czasie. Niestety funkcja ta nie jest jeszcze zaimplementowana w jądrze. Myślałem, że będzie większe zainteresowanie nią i stanie się to szybko, ale nie jest ona dostępna (według mojej wiedzy) w żadnej aktualnej wersji jądra.

Niektórzy radzą, aby zrobić alias lub funkcję w powłoce rm, która wykonywałaby rm -i (będziesz musiał potwierdzić skasowanie każdego pliku). Dystrubucja Red Hat robi to domyślnie dla wszystkich użytkowników, w tym i dla root-a. Ja osobiście nie lubię oprogramowania, które nie może działać bez mojej pomocy, dlatego nie używam tego sposobu. Wcześniej, czy później może pojawić się kolejny problem: kiedy będziesz pracował w trybie singe-user, lub będziesz używał innej powłoki lub nawet innej maszyny, gdzie Twoja funkcja rm nie istnieje. Jeśli będziesz spodziewał się, że każde skasowanie wymaga potwierdzenia, dosyć łatwo jest nie przewidzieć tego, że kazałeś skasować zbyt wiele plików. Również skrypty i programy, które podmieniają rm mogą być bardzo niebezpieczne.

Trochę lepszym rozwiązaniem jest użycie pakietu, który umożliwia `odtwarzalne' kasowanie poprzez specjalną komendę zastępująca rm. Szczegóły znajdziesz u Peeka (1993) (patrz rozdział Bibliografia i Wyrazy Uznania). Jednak w ten sposób przyzwyczajamy użytkownika do pewniej nonszalancji przy kasowaniu plików. Nie jest to najlepsze, bowiem system typu Unix wymaga jednak uważnego działania.

3. Jakiego współczynnika odzyskania skasowanych plików mogę się spodziewać ?

To zależy. Problem wynika z tego, że w systemie operacyjnym wysokiej jakości, wielozadaniowym, wieloużytkownikowym, takim jak Linux, nie możesz przewidzieć kiedy ktoś zechce zapisać coś na dysk. Po chwili, w której kazałeś systemowi skasować jakiś plik, bloki przez niego zajęte mogą zostać użyte, gdy system będzie chciał zapisać coś nowego. (Jest to jeden przykład ogólnej zasady systemów typu Unix: jądro i związane z nim programy zakładają, że użytkownicy nie są idiotami). Ogólnie rzecz biorąc, im bardziej obciążona jest Twoja maszyna, tym mniej prawdopodobne jest odzyskanie plików.

Znaczenie może mieć również fragmentacja dysku. Jeśli partycja, na której był skasowany plik jest bardzo pofragmentowana, masz małe szanse na odczytanie całej jego treści.

Jeśli Twój komputer, tak jak mój, realnie jest maszyną jednoużytkownikową i nie robiłeś niczego co intensywnie korzystało z dysku w tragicznej chwili skasowania pliku, możesz się spodziewać współczynnika odzysku zbliżonego do tego wymienionego niżej. Ja odzyskałem prawie 94% plików (były to pliki binarne) w stanie nieuszkodzonym. Jeżeli otrzymasz 80% lub więcej, myślę, że będziesz z siebie zadowolony.

4. Jak odzyskać skasowane pliki ?

Operacja ta polega głównie na znalezieniu danych na urządzeniu partycji i uczynieniu ich ponownie widocznymi dla systemu operacyjnego. Są dwa sposoby, żeby to zrobić: pierwszy polega na takiej zmianie systemu plików, żeby usunąć znacznik `deleted' ze skasowanych iwęzłów z nadzieją, że pliki nagle pojawią się na swoim miejscu. Inną metodą, bezpieczniejszą, ale wolniejszą jest znalezienie położenia interesujących danych na partycji i zapisaniu ich jako nowy plik w innym systemie plików.

Przed odtwarzeniem danych musisz zrobić kilka rzeczy; patrz rozdziały Odmontowanie systemu plików, Przygotowanie do bezpośrednich zmian w iwęzłach i Przygotowanie do zapisania danych w innym miejscu. Informację jak odzyskiwać pliki znajdziesz w rozdziałach Szukanie skasowanych iwęzłów, Uzyskiwanie szczegółowych informacji o iwęzłach, Odzyskiwanie bloków danych i Bezpośrednie modyfikacje iwęzłów.

5. Odmontowanie systemu plików

Niezależnie od metody jaką wybrałeś, pierwszym krokiem jest odmontowanie systemu plików zawierającego skasowane pliki. Zdecydowanie nie polecam żadnych działań na zamontowanym systemie plików. Krok ten powinien być wykonany najszybciej jak to będzie możliwe od momentu, gdy zauważyłeś, że pomyłkowo skasowałeś pliki. Im szybciej odmontujesz system plików, tym większa będzie szansa, że Twoje dane nie zostaną nadpisane (zamazane).

Najprostszą metodą, aby to zrobić jest: zakładając, że skasowane pliki były systemie plików /usr,

# umount /usr

Jeśli chcesz możesz również utrzymać widoczność katalogu /usr. Zamontuj go w trybie tylko-do-odczytu:

# mount -o ro,remount /usr

W przypadku, gdy skasowane pliki były na głównej partycji musisz dodać opcję -n, aby zabronić programowi mount na próby zapisu do /etc/mtab:

# mount -n -o ro,remount /

Poza tym wszystkim, możliwe jest również, że jakiś inny proces używa interesującego nas systemu plików (spowoduje to błąd typu `Resource busy' przy próbie odmontowania). fuser jest programem, który wyśle sygnał do każdego procesu używającego wskazanego pliku lub punktu montowania. Spróbuj tego dla partycji /usr:

# fuser -v -m /usr

W ten sposób uzyskasz listę przeszkadzających Ci procesów. Zakładając, że żaden z nich nie jest niezbędny, możesz napisać

# fuser -k -v -m /usr

aby wysłać sygnał SIGKILL do każdego z nich ( gwarantuje to ich zabicie), albo

# fuser -k -TERM -v -m /usr

aby przekazać każdemu sygnał SIGTERM (spowoduje to normalne zakończenie pracy procesów).

6. Przygotowanie do bezpośrednich zmian iwęzłów

Moja rada? Nie używaj tej metody. Nie uważam, żeby dobrym pomysłem była zabawa na niskim poziomie w systemie plików. Metoda ta stwarza również problemy jeśli chcesz odtworzyć pliki większe niż 12 bloków. W celu odzyskania dużych plików, tak czy owak, będziesz musiał użyć innej metody. (Chociaż patrz rozdział Czy będzie to kiedyś łatwiejsze? w celu dodatkowych informacji.)

Jeżeli jednak chcesz koniecznie użyć tego sposobu, lepiej skopiuj bezpośrednio obraz partycji na inną partycję, a później zamontuj ją używając pętli zwrotnej (loopback):

# cp /dev/hda5 /root/working
# mount -t ext2 -o loop /root/working /mnt

(Niektóre wersje mount nie potrafią tego zrobić. Jeśli Twój mount nie działa poprawnie, zalecam użycie najnowszej wersji, conajmniej 2.7. Dużo starsze wersje mają problemy z utrzymaniem bezpieczeństwa danych.)

Używając pętli zwrotnej, nawet jeśli całkowicie zniszczysz system plików, możesz ponownie skopiować partycję i zacząć próby od nowa.

7. Przygotowanie do zapisu danych w innym miejscu

Jeżeli wybierzesz tę drogę działania, musisz znaleźć partycję ratunkową -- miejsce, gdzie zapiszesz nowe kopie odzyskanych plików. Na całe szczęście, twój system zawiera kilka partycji: prawdopodobnie partycję główną, /usr i /home. Wybierz jedną z nich i utwórz na niej nowy katalog.

Jeśli masz tylko partycję główną i wszystko przechowujesz na niej, rozwiązanie troszkę się skomplikuje. Może masz partycje MS-DOS lub Windows, której bedziesz mógł użyć ? Albo masz sterownik do ramdisk-u w swoim jądrze, albo w module ? W celu użycia ramdisk-u (zakładając, że jądro jest nowsze od 1.3.48), napisz:

# dd if=/dev/zero of=/dev/ram0 bs=1k count=2048
# mke2fs -v -m 0 /dev/ram0 2048
# mount -t ext2 /dev/ram0 /mnt

W ten sposób stworzyłeś 2MB wolumen ramdisk-u i zamontowałeś do w /mnt.

Krótkie ostrzeżenie: jeżeli używasz kerneld (lub zastępującego go kmod w jądrach 2.2.x i późnych 2.1.x) w celu automatycznego ładowania i odładowywania modułów, nie odmontowuj ramdisk-u dopóki nie skopiujesz wszystkich plików na bardziej trwały nośnik. W chwili, gdy go odmontujesz, kerneld zakłada, że może odładować moduł (zwykle jednak czeka pewien okres). Gdy to już się stanie, pamięć zostanie użyta przez inne części jądra i stracisz wszystkie godziny spędzone na odzyskiwaniu danych.

Jeżeli masz napęd Zip, Jaz, LS-120 lub coś podobnego, może on spełniać z powodzeniem rolę partycji ratunkowej. W pozostałych przypadkach, użyj po prostu napędu stacji dyskietek.

Będziesz jeszcze potrzebował programu, który potrafi czytać dane ze środka partycji. Właściwie może to zrobić dd, ale aby przeczytać dane leżące od 600 MB do 800 MB, dd musi przeczytać i zignorować pierwsze 600 MB. Zajmuje to dosyć dużo czasu, nawet na szybkich dyskach. Moim sposobem na obejście tego problemu było napisanie programu, który przeskakuje w środek partycji. Nazywa się on fsgrab; pakiet ze źródłem możesz znaleźć na mojej stronie domowej lub na Metalab-ie (i kopiach, w Polsce - Sunsite ). Jeśli będziesz chciał stosować tę metodę, w dalszej części tego mini-JTZ zakładam, że masz fsgrab.

Nie potrzebujesz fsgrab-a, jeżeli żaden z plików, które starasz się odzyskać, nie zajmuje więcej niż 12 bloków (przeważnie blok ma rozmiar jednego kilobajta).

Jeżeli musisz użyć fsgrab-a, ale nie chce Ci się go ściągać i kompilować, jest też prosta droga na przetłumaczenie polecenia dla fsgrab na polecenie dla dd. Mając

fsgrab -c count -s skip device

możesz użyć komendy dd (przeważnie jest to dużo wolniejsze)

dd bs=1k if=device count=count skip=skip

Muszę Cię ostrzec, że chociaż dla mnie fsgrab działa doskonale, nie mogę brać odpowiedzialności za jego funkcjonowanie. Pisałem go dosyś szybko i niestarannie, po prostu, aby działał poprawnie. Więcej szczegółów o gwarancji znajdziesz w rozdziale `No Warranty' w pliku COPYING dołaczonym do pakietu (the GNU General Public Licence).

8. Szukanie skasowanych iwęzłów

Następnym krokiem jest odnalezienie w systemie plików tych iwęzłów, które zostały ostanio uwolnione. Do tego zadania użyjemy programu debugfs. Uruchom debugfs z nazwą urządzenia, na którym przechowywany jest system plików:

# debugfs /dev/hda5

Jeżeli chcesz bezpośrednio wprowadzać zmiany do iwęzłów, dodaj opcję -w, aby umożliwić zapisywanie do systemu plików:

# debugfs -w /dev/hda5

lsdel jest poleceniem debugfs, które wyszukuje skasowane iwęzły. Po zachęcie programu, napisz więc:

debugfs:  lsdel

Po chwili świergotania dysku, długa lista zostanie przekierowana do Twojego ulubionego łamacza na strony (ang. pager) (wartość zmiennej $PAGER). Powinienneś zachować gdzieś kopię tej listy. Jeżeli używasz less, możesz po prostu napisać -o i nazwę pliku wyjściowego. W innym razie, będziesz musiał przesłać wyniki do pliku w inny sposób. Spróbuj czegoś takiego:

debugfs:  quit
# echo lsdel | debugfs /dev/hda5 > lsdel.out

Teraz, tylko na podstawie czasu skasowania, rozmiaru, praw własności i właściciela musisz określić, które iwęzły należały do skasowanych plików. Będzie to prawdopodobnie proste zadanie jeśli wypadek przydarzył się 5 minut temu, jeśli nie, przeszukaj listę bardzo uważnie.

Polecam wydrukowanie sobie listy iwęzłów, które chcesz odzyskać. Ułatwi Ci to dalszą pracę.

9. Uzyskiwanie szczegółowych informacji o iwęzłach

debugfs dysponuje poleceniem stat, które wyświetla szczegółowe informacje o iwęźle. Wykonaj tę komendę dla wszystkich iwęzłów, które chcesz odzyskać. Na przykład, jeżeli interesuje Cię iwęzeł o numerze 148003, napisz tak:

debugfs:  stat <148003>
Inode: 148003   Type: regular    Mode:  0644   Flags: 0x0   Version: 1
User:   503   Group:   100   Size: 6065
File ACL: 0    Directory ACL: 0
Links: 0   Blockcount: 12
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
mtime: 0x313bf4d7 -- Tue Mar  5 08:01:27 1996
dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
BLOCKS:
594810 594811 594814 594815 594816 594817
TOTAL: 6

Gdy chcesz odzyskać wiele plików, dobrze będzie jak zautomatyzujesz ten proces. Przy założeniu, że Twoja lsdel lista interesujących iwęzłów znajduje się w pliku lsdel.out, napisz coś takiego:

# cut -c1-6 lsdel.out | grep "[0-9]" | tr -d " " > inodes

Nowy plik inodes zawiera tylko numery iwęzłówm, które chcesz odzyskać, po jednym w jednej linii. Zapisaliśmy to, bowiem później bardzo nam się przyda. Potem piszesz po prostu:

# sed 's/^.*$/stat <\0>/' inodes | debugfs /dev/hda5 > stats

i plik stats zawiera wyniki wszystkich poleceń stat.

10. Odzyskiwanie bloków danych

Ta część jest albo bardzo łatwa, albo trudna, w zależności od tego, czy plik który chcesz odzyskać zajmował więcej niż 12 bloków.

10.1 Małe pliki

Jeżeli plik ma mniej niż 12 bloków, numery wszystkich bloków, które on zajmuje zapisane są w jednym iwęźle. Możesz odczytać je po wykonaniu polecenie stat dla tego iwęzła. Ponadto, w debugfs jest polecenie, które automatycznie odzyskuje taki plik. Weźmy ten sam przykład co poprzednio:

debugfs:  stat <148003>
Inode: 148003   Type: regular    Mode:  0644   Flags: 0x0   Version: 1
User:   503   Group:   100   Size: 6065
File ACL: 0    Directory ACL: 0
Links: 0   Blockcount: 12
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
mtime: 0x313bf4d7 -- Tue Mar  5 08:01:27 1996
dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
BLOCKS:
594810 594811 594814 594815 594816 594817
TOTAL: 6

Plik ten zajmuje sześć bloków. Ponieważ jest to mniej niż 12, możemy użyć debugfs, aby zapisać plik w nowym miejscu, na przykład /mnt/recovered.000:

debugfs:  dump <148003> /mnt/recovered.000

Oczywiście można to zrobić również, posługując się fsgrab. Pokażę jak wygląda takie przykładowe wywołanie:

# fsgrab -c 2 -s 594810 /dev/hda5 > /mnt/recovered.000
# fsgrab -c 4 -s 594814 /dev/hda5 >> /mnt/recovered.000

Zarówno przy korzystaniu z debugfs jak i fsgrab, na końcu pliku /mnt/recovered.000 pozostaną śmieci. Nie ma to większego znaczenia. Łatwo można się ich pozbyć. Najprostszą metodą jest odczytanie pola Size w iwęźle i wpisanie tej wartości za opcją bs komendy dd:

# dd count=1 if=/mnt/recovered.000 of=/mnt/resized.000 bs=6065

Może się okazać, że jeden lub więcej z bloków zostało straconych, bowiem zostały już nadpisane. Jeżeli tak będzie, po prostu nie miałeś szczęścia: bloki te odeszły już na zawsze. (Wybraź sobie, że odmontowałeś je wcześniej!)

10.2 Większe pliki

Problem pojawia się, gdy plik zajmuje więcej niż 12 bloków danych. Przypadek ten wymaga pewnej wiedzy o tym jak zbudowany jest system plików UNIX-a. Dane pliku przechowywane są w jednostkach zwanych `blokami'. Bloki te są numerowane sekwencyjnie. Każdy plik ma również `iwęzeł', w którym przechowywane są informacje typu: właściciel, prawa dostępu i typ. Podobnie jak bloki, iwęzły są numerowane sekwencyjnie, chociaż mają one różne numeracje. Pozycja w katalogu odpowiadająca plikowi składa się z jego nazwy i numeru iwęzła.

Jednak na postawie tych informacji jądro nie jest jeszcze w stanie odnaleźć na partycji danych odpowiadających jednej z pozycji w katalogu. Żeby to umożliwić, iwęzeł przechowuje położenia bloków danych zajmowanych przez plik. Zorganizowane jest to w następujący sposób:

Przeczytaj to jeszcze raz: wiem, że to jest skomplikowane, ale bardzo ważne.

Niestety wszystkie implementacje jądra, aż do wersji 2.0.36 podczas kasowania pliku zerują bloki pośrednie (podwójnie pośrednie, itd.). Jeśli Twój plik jest większy niż 12 bloków, nie masz gawarancji, że będzie możliwe odnalezienie numerów wszystkich jego bloków, nie mówiąc już nic o ich zawartości.

Jedyną metodą jaką udało mi się znaleźć, jest oparcie się na założeniu, że plik nie był pofragmentowany. Jeżeli był, masz poważny problem. Zakładając, że plik nie był pofragmentowany, istnieje kilka sekcji bloków danych, w zależności od tego ile bloków danych zajmuje plik:

0 do 12

Numery bloków przechowywane są w iwęźle, jak to było opisane wcześniej.

13 to 268

Po blokach bezpośrednich, odlicz jeden na blok pośredni, dalej znajduje się 256 bloków danych.

269 do 65804

Tak jak poprzednio jest: 12 bezpośrednich bloków, (nieprzydatny) blok pośredni i 256 bloków. Po tym wszystkim następuje (nieprzydatny) podwójnie pośredni blok oraz 256 powtórzeń jednego (nieprzydatnego) bloku pośredniego i 256 bloków danych.

65805 lub więcej

Położenie piewszych 65804 bloków jak wyżej. Potem potrójnie pośredni blok i 256 powtórzeń `sekwecji podwójnie pośredniej'. Każda podwójnie pośrednia sekwencja zawiera (nieprzydatny) podwójnie pośredni blok, po którym następuje 256 powtórzeń jednego (nieprzydatnego) bloku pośredniego i 256 bloków danych.

Oczywiście, nawet jeśli numery bloków, które przyjęliśmy, są poprawne, nie ma żadnych gwarancji, że dane są w nich są nienaruszone. Dodatkowo, im dłuższy był plik, tym mniejsze szanse, że system operacyjny zapisał go bez żadnej fragmentacji (za wyjątkiem wyjątkowych sytuacji).

Założyłem, że rozmiar Twoich bloków wynosi 1024 bajty, tyle ile wartość standardowa. Jeśli Twój blok jest większy, niektóre z liczb podanych wyżej zmienią się. Sprecyzujmy: dopóki numer każdego bloku ma długość 4 bajtów, rozmiarbloku/4 jest liczbą numerów bloków, które mogą być przechowane w każdym bloku pośrednim. Każde wystąpienie liczby 256 we wcześniejszym opisie, zastąp na rozmiarbloku/4. Zmianie ulegną również ograniczenia na ilość wymaganych bloków.

Popatrz na przykładowe odzyskiwanie dużego pliku.

debugfs:  stat <1387>
Inode: 148004   Type: regular    Mode:  0644   Flags: 0x0   Version: 1
User:   503   Group:   100   Size: 1851347
File ACL: 0    Directory ACL: 0
Links: 0   Blockcount: 3616
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
mtime: 0x313bf4d7 -- Tue Mar  5 08:01:27 1996
dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
BLOCKS:
8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8583
TOTAL: 14

Wydaje się, że mamy pewne szanse, że plik nie jest pofragmentowany. Pewne jest tylko, że pierwsze 12 bloków, których numery są zawarte w iwęźle, jest `po kolei'. Możemy więc odtworzyć te bloki:

# fsgrab -c 12 -s 8314 /dev/hda5 > /mnt/recovered.001

Następny blok, wymieniony w iwęźle, 8326, jest blokiem pośrednim, który ignorujemy. Mamy jednak nadzieję, że nastepne 256 bloków jest naszymi blokami danych (numery 8327 do 8582).

# fsgrab -c 256 -s 8327 /dev/hda5 >> /mnt/recovered.001

Ostatnim blokiem wymienionym w iwęźle jest 8583. Nadal zakładamy, że istnieje ciągłość w blokach. Jest to jednak uzasadnione bowiem: ostatnim blokiem danych był blok o numerze 8582 (8327 + 255). Blok 8583 jest podwójnie pośredni i może być zignorowany. Teraz może nastąpić do 256 powtórzeń bloku pośredniego (który można pominąć) i 256 bloków danych. Trochę arytmetyki i już można pisać kolejne polecenie. Zauważ, że pominęliśmy podwójnie pośredni blok 8583 oraz pośredni blok 8584 i rozpoczęliśmy czytać dane od bloku numer 8585.

# fsgrab -c 256 -s 8585 /dev/hda5 >> /mnt/recovered.001
# fsgrab -c 256 -s 8842 /dev/hda5 >> /mnt/recovered.001
# fsgrab -c 256 -s 9099 /dev/hda5 >> /mnt/recovered.001
# fsgrab -c 256 -s 9356 /dev/hda5 >> /mnt/recovered.001
# fsgrab -c 256 -s 9613 /dev/hda5 >> /mnt/recovered.001
# fsgrab -c 256 -s 9870 /dev/hda5 >> /mnt/recovered.001

Dodajmy to wszystko, zapisaliśmy do tej pory 12 + (7 * 256) bloków, co daje 1804. Wyniki polecenia `stat' dla iwęzła dały nam `blockcount' (liczba bloków) równe 3616. Niestety są to bloki o rozmiarze 512 bajtów (zaszłość z UNIX-a), na prawdę potrzebujemy więc 3616/2 = 1808 bloków o rozmiarze 1024 bajty. Oznacza to, że musimy jeszcze odnaleźć cztery bloki. Ostatni przeczytany blok danych miał numer 10125. Tak jak to robiliśmy do tej pory, pomijamy blok pośredni (numer 10126) i możemy już zapisać ostatnie cztery bloki.

# fsgrab -c 4 -s 10127 /dev/hda5 >> /mnt/recovered.001

Przy pewnym szczęściu udało nam się odzyskać cały plik.

11. Bezpośrednie modyfikacje iwęzłów

Metoda ta jest dużo prostsza. Jednak, tak jak wspomniałem wcześniej, nie może być jeszcze stosowana do plików większych niż 12 bloków.

W każdym iwęźle, który chcesz odzyskać musisz ustawić licznik podłączeń (linkcount) na jeden i czas skasowania (deletion time) na zero. Robi się to za pomocą polecenia mi (modify inode) w debugfs. Przykładowe wywołanie, modyfikacja iwęzła 148003 (tego co wcześniej):

debugfs:  mi <148003>
                          Mode    [0100644]
                       User ID    [503]
                      Group ID    [100]
                          Size    [6065]
                 Creation time    [833201524]
             Modification time    [832708049]
                   Access time    [826012887]
                 Deletion time    [833201524] 0
                    Link count    [0] 1
                   Block count    [12]
                    File flags    [0x0]
                     Reserved1    [0]
                      File acl    [0]
                 Directory acl    [0]
              Fragment address    [0]
               Fragment number    [0]
                 Fragment size    [0]
               Direct Block #0    [594810]
               Direct Block #1    [594811]
               Direct Block #2    [594814]
               Direct Block #3    [594815]
               Direct Block #4    [594816]
               Direct Block #5    [594817]
               Direct Block #6    [0]
               Direct Block #7    [0]
               Direct Block #8    [0]
               Direct Block #9    [0]
              Direct Block #10    [0]
              Direct Block #11    [0]
                Indirect Block    [0]
         Double Indirect Block    [0]
         Triple Indirect Block    [0]

Ustawiłem czas skasowania na 0, licznik podłączeń na 1 i nacisnąłem Enter dla wszystkich innych pól. Jest to pewną niedogodnością, jeżeli masz wiele plików do odzyskania. Myślę jednak, że można z tym żyć. Jeśli oczekujesz wygody, lepiej zacznij używać graficznego `systemu operacyjnego' ze ślicznym `Koszem na śmieci'.

Przy okazji: polecenie mi pokazuje `Czas stworzenia' (Creation time) w iwęźle. To kłamstwo ! (lub, jak kto woli, pomyłka.) Prawda jest taka, że nie można w systemie plików UNIX-a stwierdzić kiedy dany plik został utworzony. Pole st_ctime w struct stat zawiera `czas zmiany iwęzła', czyli czas ostaniej zmiany, któregoś z parametrów iwęzła. To tyle z dzisiejszej lekcji.

Nowsze wersje debugfs niż moja, prawdopodobnie nie wyświetalają niektórych pól w iwęźle (szczególnie, Reserved1 i Fragment).

Po zmianie w iwęzłach, możesz wyjść z debugfs i napisać:

# e2fsck -f /dev/hda5

Pomysł polega na tym, że każdy ze skasowanych plików został odkasowany, ale nie pojawił się w żadnym katalogu. Program e2fsck umie to wykryć i doda pozycję dla każdego z nich w katalogu /lost+found systemu plików. (Jeżeli partycja była zamontowana w /usr, pliki pojawią się w /usr/lost+found, gdy ją zamontujesz.) Pracą, którą musisz jeszcze zrobić, to nadanie plikom nazw i umieszczenie ich we właściwym miejscu drzewa plików.

Po uruchomieniu e2fsck, wyświetli Ci on trochę informacji, ale zada również pytania, które zniszczenia naprawiać. Odpowiadaj `yes' (tak) na wszystko co dotyczy `summary information' lub iwęzłów, które zmieniałeś. Resztę pozostawiam do Twojej decyzji, pamiętaj, że nie jest najlepszą metodą odpowiadanie `tak' na wszystkie pytania. Po skończeniu pracy przez e2fsck, możesz ponownie zamontować system plików.

Istnieje alternatywne rozwiązanie do pozwolenia, aby e2fsck utworzył pliki w /lost+found. Możesz użyć debugfs i stworzyć w systemie plików dołączenie (link) do iwęzła. Służy do tego polecenie link w debugfs, po zmianach w samym iwęźle:

debugfs:  link <148003> foo.txt

W ten sposób powstanie w bieżącym katalogu plik o nazwie foo.txt; foo.txt będzie Twoim odzyskanym plikiem. Nadal musisz jednak uruchomić e2fsck, aby uaktualnić informacje ogólne, liczniki bloków itp. itd.

12. Czy będzie to kiedyś łatwiejsze?

Tak. Właściwie, mam nadzieję, że tak. Chociaż, gdy to piszę, aktualna, stabilna wersja jądra (seria 2.0.x) zeruje bloki pośrednie. Wersje serii rozwojowej 2.1.x i stabilnej 2.2.x nie mają tej wady. Dzisiaj, 2 lutego 1999 minęło dopiero kilka dni od wydania jądra 2.2.1; prawdopodobnie pojawi się ono w dystrybucjach za jeden, dwa miesiące.

Kiedy wersje jądra rozwiążą problem zerowania bloków pośrednich, wiele moich ręcznych technik modyfikacji iwęzłów nie będzie już potrzebnych. W tym samym czasie stanie się możliwe użycie polecenia dump w debugfs dla dużych plików i innych programów narzędziowych do odzyskiwania plików.

13. Czy są jakieś programy automatyzujące ten proces?

Pewnie, że są. Niestety cierpią one na te same problemy co ręczna technika zmian w iwęzłach: bloki pośrednie są nieodzyskiwalne. Warto im się przyjrzeć, bowiem wydaje się, że ograniczenie to wkrótce zniknie.

Napisałem program e2recover, który jest właściwie tylko Perl-ową otoczką dookoła fsgrab. Stara się on poradzić sobie z wyzerowanymi blokami pośrednimi i wydaje sie, że działa całkiem nieźle dla dużych plików, które nie uległy fragmentacji. Ustawia poprawne prawa dostępu (i właściciela, gdy to jest możliwe). Upewnia się również, że odzyskiwany plik ma poprawny rozmiar.

Program e2recover był planowany jako część poważnych zmian w tym Howto; oznacza to niestety, że więcej użytecznej dokumentacji do e2recover będzie zamieszczone dopiero w nowej wersji tego dokumentu. Jednak i teraz może on się komuś przydać; można go ściągnąć z mojej strony domowej, i wkrótce z Metalab-a (jest już w Polsce - Sunsite).

Scott D. Heavner jest autorem programu lde, the Linux Disk Editor. Może on być używany zarówno jako binarny edytor dysku i jako odpowiednik debugfs dla systemów plików ext2 i minix, a nawet dla systemu plików xia (chociaż wsparcie dla xia przestało być dostępne w jądrach 2.1.x i 2.2.x). Zawarto w nim kilka pomysłów wspomagających odzyskiwanie skasowanych plików: śledzenie listy bloków tworzących plik i wyszukiwanie danych na dysku. Zawiera on także całkiem użyteczną dokumentację o podstawach systemu plików oraz jak go używać do odzyskiwania plików skasowanych. Wersja 2.4 lde jest dostępna na Metalab-ie (i kopiach, w Polsce - Sunsite), lub na stronie domowej autora.

Inne możliwości oferowane są przez GNU Midnight Commander, mc. Jest to pełnoekranowe narzędzie do zarządzania plikami, oparte na znanym w środowisku MS-DOS programie o nazwie `NC'. mc obsługuje mysz zarówno na konsoli, jak i w oknie xterm-a, dostarcza mechanizm wirtualnych systemów plików, co umożliwia triki takie jak cd do archiwum tar. Odzyskiwanie plików obsługiwane jest przez jeden z takich wirtualnych systemów plików. Wszystko to brzmi bardzo zachęcająco, ale muszę przyznać, że nie używam tego programu -- wolę staromodne polecenia powłoki.

Aby używać możliwości odzyskiwania skasowanych plików, musisz skonfigurować program z opcją --with-ext2undel; będziesz również potrzebował bibliotek w wersji rozwojowej i niektórych plików zawartych w pakiecie e2fsprogs. W ten sposób zbudowana jest wersja dostarczana w Debian GNU/Linux; tak samo może być w innych dystrybucjach. Teraz możesz po prostu kazać mu cd undel:/dev/hda5, i otrzymasz `zawartość katalogu' ze skasowanymi plikami. Jak wiele innych i ten program bardzo źle radzi sobie z zerowaniem bloków pośrednich -- przeważnie odtwarza tylko pierwsze 12k większych plików.

Aktualną wersję można ściągnąć z serwera ftp the Midnight Commander.

14. Kolofon

Mam zamiar regularnie uaktualniać ten dokument tak długo jak będę miał wystarczająco dużo czasu i coś ciekawego do powiedzenia. Oznacza to, że bardzo mi zależy na komentarzach od czytelników. Czy moje pisanie może być bardziej zrozumiałe? Czy myślicie o czymś, co uczyniłoby problem prostszym? Jest jakiś program, który robi to wszystko automatycznie? Jeżeli masz coś do powiedzenia o tym dokumencie, albo o fsgrab, albo o e2recover, napisz do mnie aaronc@pobox.com.

15. Wyrazy uznania i bibliografia

`Jeżeli widzę dalej od innych, to dlatego, że stoję na ramionach olbrzymów.' (Isaac Newton)

To mini-Howto wywodzi się z listu zamieszczonego w grupie comp.os.linux.misc przez Robina Glovera swrglovr@met.rdg.ac.uk. Chciałbym podziekować Robinowi za wspaniałomyślne pozwolenie na przetworzenie jego pomysłów w to mini-Howto.

Korzystając z okazji, chciałbym jeszcze raz podziękować wszystkim, którzy napisali do mnie o tym Howto. Otrzymywanie wyrazów wdzieczności czyni pracę wartą wysiłku.

Niektóre odnośniki bibliograficzne:

16. Formalności

Wszystkie znaki towarowe są własnością ich prawowitych właścicieli. Konkretnie:

Prawa autorskie do tego dokumentu 1997, 1999 posiada Aaron Crane aaronc@pobox.com. Może on być darmowo rozpowszechniany w całości, łącznie z tą notą autorską. Nie może być zmieniany bez zgody autora lub koordynatora Linux Documentation Project HOWTO. Nie dotyczy to tylko kopiowania jego części w celu przeglądania lub cytowania; w takim przypadku, części te muszą być poprawnymi cytatami i nie muszą zawierać noty o prawach autorskich.

Autor oczekuje, ale nie wymaga, że ten kto będzie chciał sprzedawać kopie tego dokumentu, niezależnie od tego, czy na nośniku elektronicznym, czy papierowym, poinformuje jego lub koordynatora projektu Linux HOWTO o swoich zamiarach.

Koordynatorem projektu Linux HOWTO jest aktulanie Tim Bynum linux-howto@sunsite.unc.edu.

17. Od tłumacza

Starałem się, aby tłumaczenie było najwierniejsze z możliwych. Dlatego nie ma żadnych zmian w stosunku do orginału, za wyjątkiem odnośników do polskiej kopii serwera Metalab na Sunsite.icm.edu.pl.

Czekam na komentarze pod adresem: Bartosz Sawicki sawickib@ee.pw.edu.pl.

doc-linux-pl-2002.06.14.orig/mini/html/GravisUltrasound.pl.html0100664000175000017500000002101007104371340023076 0ustar covencoven Ultrasound Plug'n'Play mini-HOWTO

Ultrasound Plug'n'Play mini-HOWTO

Autor: J-F MAMMET, mammet@diva.univ-mlv.fr
v0.01, 27 Marca 1996
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.0, 7 Września 1997


Dokument ten został napisany w standardzie ISO-8859-2. Wersji oryginalnej nie ma na głównym serwerze (sunsite.unc.edu) Linux Documentation Project, a na stronę WWW autora ( diva.univ-mlv.fr) nie można się dostać.

1. Wprowadzenie.

Jako długoletni fan kart dźwiękowych gravis-a, byłem naprawdę szczęśliwy kiedy zobaczyłem prawdziwą nowość gravis-a. Od długiego czasu planowałem kupić kartę Ultrasound i kupiłem ją z 1 MB RAM-u jak tylko pojawiła się we Francji.

Zainstalowałem ją, i cieszyłem się kiedy została wykryta przez mój Plug'n'Play BIOS, a nawet przez Windows 95 (przepraszam, ale nie ponabijam się dzisiaj z ich marketingu). Więc pomyślałem, że karta mogłaby działać wszędzie...

No to odpaliłem Linux-a, nie miałem problemów, karta została wykryta jako gus rev 3.4, co wydawało się być poprawne, ale nie było...

Jakiś czas później spróbowałem Quake'a i nie miałem dźwięku. Przeczytałem więc podręcznik do gry, i zobaczyłem, że korzysta on z pewnych mechanizmów DMA, których nie było w standardowym gus-ie.

Pomyslałem, że to wcale nie jest zabawne, mieć taką cholernie dobrą kartę i nie mieć dźwięku w takiej fajnej grze. (wersja dos-owa potrzebuje emulacji sound blaster-a, a ja wolę nie mieć dźwięku niż to)

No to co teraz? Powinienem czekać do maja na sterownik PnP dla gus-a? Mam kupić sound blaster-a (sic)? co będzie w następnym odcinku "Akt X"?

2. GUS MAX?

No i wróciłem do dos-a i pobawiłem się trochę programem iwinit. Popatrzyłem na to co mi wyświetlał w trybie verbose i zobaczyłem coś takiego: CODEC adress 32c...

Co? gus PnP ma CS4231/CS1848 Codec tak jak gus MAX???

Potem pogrzebałem po moich kopiach zapasowych i znalazłem ostatnie sterowniki gravis-a, wziąłem ultrinit 2.31 i wpisałem:


>set ultrasnd=220,6,5,5,5
>set ultra16=32c,0,0,1,0
>set ultradir=c:\ultrapnp
>ultrinit

i wiecie co? Ultrasound MAX detected !!!

Wow. Super! Pomyslałem więc, że muszę tylko to wpisać zanim wystartuje Linux-a i będę miał obsługę gus Max i w końcu ten p**** quake będzie miał dźwięk !

To nie było takie proste 8(

3. Przerabianie sterownika.

Nie jestem dobrym programistą, ale znam C na tyle, żeby przejrzeć sterownik i zobaczyć co się dzieje (szczególnie jeśli jest tam dużo komentarzy).

Popatrzyłem do pliku gus_card.c, ale nie znalazłem nic ciekawego. Potem popatrzyłem do gus_wave.c i zobaczyłem coś takiego:

         * Value 255 means pre-3.7 which don't have mixer.
         * Values 5 thru 9 mean v3.7 which has a ICS2101 mixer.
         * 10 and above is GUS MAX which has the CS4231 codec/mixer.

Super! Po prostu muszę ustawić wartość 10 i będzie działać... Nie!

Zrobienie tego spowoduje, że jądro będzie myślało, że masz gus Max, ale nie wykryje chip-a codec!

Więc musiałem także wymusić wykrycie tego chip-a!

Znalezienie co muszę zrobić nie było łatwe, ale w końcu mi się udało. W pliku gus_wave.c była taka linia:

if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp))

co znaczyło, że jądro próbuje samo wykryć chip AD1848. Pomyślałem, że nie może go wykryć przez to PnP i miałem rację! Zmieniłem tę linię na:

if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)))

skompilowałem jeszcze raz jądro i quake działa teraz na cacy!

Tak przy okazji: W pliku gus_card.c jest opcja gus_pnp_flag, ale nie widziałem żadnej różnicy między tym kiedy była włączona i wyłączona 8( (może robiłem coś źle).

4. Więc co mamy dokładnie zrobić?

Nie zapomnij, że to nie będzie działać jeśli nie masz RAM-u na swojej karcie...
Przede wszystkim nie używaj już lilo, ponieważ musisz zainicjować gus-a PnP zanim wystartujesz Linux-a ([Od tłumacza] w tej chwili można już inicjować karty (nie wszystkie) PnP pod Linux-em. Przeczytaj podrozdział Karty PnP pod Linux-em.). Napisz fdisk /mbr pod dos-em, przeczytaj odpowiednie HOWTO na ten temat).

W swoim autoexec.bat wpisz:

set interwave=c:\ultrapnp\iw.ini
c:\ultrapnp\iwinit
set ultrasnd=220,6,5,5,5 (czy jakie tam są twoje wartości)
set ultra16=32c,0,0,1,0
set ultradir=c:\ultrapnp
c:\ultrapnp\ultrinit

Ultrinit znajdziesz w gus00045.zip na każdym ftp z gravis-em.

Pod Linux-em, otwórz plik gus_wave.c w katalogu /usr/src/linux/drivers/sound (czy gdziekolwiek indziej). Znajdź linię:

if (val == 255 || val < 5) (line 3049 in 3.5b7)

i w linii wcześniej napisz:

val=10;

Potem znajdź linię:

if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)) (line 3085)

i zmień ją na

if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)))

Skompiluj jądro z obsługą gus-a i gus max. U mnie jest to:

BASE = 220
IRQ = 5
DMA1 = 6
DMA2 = 5
DMABUF = 65536

No i miłej zabawy z dźwiękiem!

4.1 Karty PnP pod Linux-em.

[Sekcja dodana przez tłumacza.]

Do inicjalizacji karty służy narzędzie o nazwie sapnptools, które jest do zdobycia np. pod adresem ftp.icm.edu.pl. Dokładny opis znajduje się razem z dystrybucją. Ogólnie wygląda to tak: najpierw kompilujesz programy isapnp i pnpdump. Potem tym drugim generujesz sobie plik konfiguracyjny, który potem odpowiednio modyfikujesz do własnych potrzeb. Następnie, żeby zainicjalizować kartę (jeśli używasz modułu do dźwięku), piszesz isapnp /etc/isapnp.conf i insmod sound.

5. Credits.

Używałem jądra w wersji 1.3.75, ale powinno być dobrze również z jądrami nowszymi niż 1.3.70 (napisz do mnie jeśli tak nie jest).

To mini-HOWTO zostało napisane przez J-F MAMMETa.
e-mail: mammet@diva.univ-mlv.fr
www: http://diva.univ-mlv.fr/ mammet/
Najnowszą wersję tego dokumentu możesz pobrać z mojej strony WWW pod adresem diva.univ-mlv.fr (to w krótce).

Nie biorę żadnej odpowiedzialności za jakiekolwiek szkody, które mogą ci się przytrafić (nawet padnięte win95).

Jeśli zobaczysz jakieś błędy w pisowni czy techniczne, to nie wahaj się napisać do mnie. Jestem tylko biednym Francuzem zagubionym w angielskim świecie, próbującym mówić zrozumiałym językiem.

27 Marca 1996.

5.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany wprowadzone przez tłumacza:
Doadałem sekcję dotyczącą inicjalizacji kart PnP pod Linux-em.

doc-linux-pl-2002.06.14.orig/mini/html/HTTP+Netware.pl.html0100664000175000017500000004112307104371340021751 0ustar covencoven Sieć Intranet na Linux-ie

Sieć Intranet na Linux-ie

Autor: Pramod Karnad, karnadp@mozart.inet.co.th
v1.1, 14 Marca 1996
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.01, 26 Lipca 1997


Dokument ten opisuje jak zamienić twój komputer z Linux-em w serwer HTTP i połączyć go z siecią LAN przy pomocy programu Netware Client pod Windows. Oryginał tego dokumentu możesz znaleźć pod adresem ftp.icm.edu.pl. Dokument ten został napisany w standardzie ISO-8859-2.

1. Wprowadzenie.

Dokument ten zakłada, że umiesz zainstalować protokół TCP/IP na Linux-ie i podłączyć się fizycznie do sieci lokalnej przy pomocy karty Ethernet. Zakłada się także, że masz jakieś podstawowe wiadomości na temat sieci Netware. Konfiguracja serwera Netware została pokazana na przykładzie wersji 3.1x. Możesz zrobić to samo używając INETCFG. Strona klienta dotyczy Windows 3.1x, Windows for Workgroups i Windows 95.

We wszystkich przykładach zakładam, że adres Linux-a to 200.0.0.1 i dlatego przypisuję adresy 200.0.0.2 i 200.0.0.3 odpowiednio serwerowi Netware i stacji roboczej. Ty możesz oczywiście wybrać adresy odpowiednie dla siebie.

1.1 Co jest potrzebne.

Przed instalacją będziesz potrzebował następującego oprogramowania.

2. Instalacja serwera HTTP.

Kiedy ściagniesz serwer masz do wyboru dwie opcje: Wziąć źródła i skompilować samemu, albo wziąć już skompilowane programy. Programy te na Linux-a w wersji ELF są dostępne przy serwerze NCSA ale nie ma ich w starszych wersjach.

2.1 Przygotowania przed ściągnięciem.

Serwer firmy NCSA przeprowadzi cię przez konfigurację i przygotuje dla ciebie różne pliki. Ale zanim będziesz chciał ściągnąć HTTPd przygotuj się na następujące pytania.

System Operacyjny

Najpierw musisz wybrać czy ściągasz wersję źródłową czy skompilowaną. Jeśli akurat twój system nie pojawi się w menu, to będziesz musiał ściągnąć wersję źródłową i skompilowac ją samemu.

Żeby sprawdzić wersję twojego Linux-a napisz w linii poleceń:

  uname -a

w odpowiedzi uzyskasz mniej więcej coś takiego:

   linux:~$  uname -a
   Linux linux 1.0.9 #4 Tue Sep 13 04:05:51 CDT 1994 i586
   linux:~$

Wersja Linux-a to 1.0.9. (Uwaga: Bieżące wersje Linux-a są w formacie ELF i powinny wyglądać tak: 1.2.13 ELF)

Pozostałe parametry mogą być podane przed ściągnięciem albo skonfigurowane później poprzez modyfikację pliku srm.conf w katalogu /usr/local/etc/httpd/conf. Nazwy właściwych dyrektyw, które występują w pliku httpd.conf zostały pokazane w nawiasach. Jedynym wyjatkiem jest dyrektywa DocumentRoot, która występuje w pliku srm.conf.

Typ procesu (ServerType).

Określa to w jaki sposób twój komputer będzie uruchamiał serwer HTTPd. Metodą preferowaną jest "standalone". To powoduje, że demon HTTPd jest ciągle uruchomiony. Jeśli wybierzesz ładowanie HTTPd przez "inetd", to program będzie ponownie ładowany do pamięci przy każdym odwołaniu, co może w rezultacie spowolnić twój serwer.

Przypisywanie portu (Port).

Tutaj podajesz na jakim porcie demon będzie "słuchał" żądań HTTP. Jeśli masz uprawnienia "root-a", to wybierz wartość domyślną czyli 80.
W innym wypadku musisz wybrać wartość z przedziału od 1025 do 65535.

Identyfikator użytkownika dla serwera (User).

Jest to identyfikator, na który HTTPd zmieni swój podczas odpowiadania na żądanie i działania na plikach. Odpowiedź na to pytanie musi być udzielona tylko jeśli jako rodzaj serwera wybrałeś "standalone".
Jeśli nie masz uprawnień root-a, po prostu użyj swojego identyfikatora. Jeśli jesteś administratorem systemu, możesz stworzyć specjalnego "użytkownika", tak żebyś mógł kontrolować dostęp do plików.

Identyfikator grupy dla serwera (Group).

Jest to numer grupy, na który HTTPd zmieni swój podczas odpowiadania na żądanie i działania na plikach. Jest to podobne do identyfikatora użytkownika i wymagane jest tylko jeśli serwer ma działać jako "standalone".

Jeśli nie masz uprawnień root-a, to użyj nazwy swojej grupy. Aby się dowiedzieć do jakiej grupy należysz napisz w linii poleceń groups.

Adres pocztowy administratora serwera (ServerAdmin).

Jest to adres osoby, do której użytkownicy mają wysyłać komentarze i uwagi na temat działania serwera. Możesz tu podac swój adres.

Lokalizacja katalogu serwera (ServerRoot).

Jest to katalog, w którym rezyduje twój HTTPd. Jeśli jesteś administratorem, to zostaw wartość domyślną (/usr/local/etc/httpd). Jeśli nie, to wybierz jakiś podkatalog w twoim katalogu domowym. Swój katalog domowy możesz odnaleźć przy pomocy polecenia pwd.

Lokalizacja dokumentów HTML (DocumentRoot).

To jest miejsce, gdzie mają znajdować się pliki HTML, które będą tworzyć strony twojego serwera. Wartością domyślną jest /usr/local/etc/httpd/htdocs.
Możesz to oczywiście zmienić na katalog specjalnego użytkownika, którego wcześniej stworzyłeś albo na podkatalog twojego katalogu domowego jeśli nie jesteś root-em.

Jeśli nie masz pewności, to użyj wartości domyślnych. Teraz kiedy już masz odpowiedzi na te pytania możesz ściągnąć NCSA HTTPd. Powinieneś przeczytać dokumentację HTTPd zanim zaczniesz instalację. Jeśli planujesz kompilować program, to musisz zmodyfikować pliki "makefile" w każdym z trzech podkatalogów: support, src, cgi-src. Jeśli twoja wersja Linux-a jest już obsługiwana, to musisz tylko napisać make linux w głównym katalogu (czyli /usr/local/etc/httpd).

2.2 Kompilowanie HTTPd.

Kompilacja jest prosta, po prostu napisz make linux w linii poleceń w głównym katalogu serwera.
Uwaga: Użytkownicy Linux-a w wersji pre-ELF muszą odkomentować linię #define NO_PASS w pliku portability.h oraz DBM_LIBS= -ldbm w pliku Makefile przed kompilacją.

3. Testowanie HTTPd.

Po tym jak zainstalowałeś HTTPd, zaloguj się jako root i wystartuj demona pisząc httpd & (przy założeniu, że instalowałeś go jako wersję "standalone"). Powinieneś go teraz zobaczyć w liście procesów generowanej przez ps. Najprostszą metodą na sprawdzenie HTTPd jest telnet. Napisz w wierszu poleceń:

   telnet 200.0.0.1 80 

gdzie 80 to domyślny port HTTP. Jeśli skonfigurowałeś "Port" jako coś innego to wpisz ten numer zamiast 80. Powinieneś otrzymać odpowiedź, która wygląda mniej więcej tak:

   Trying 200.0.0.1...
   Connected to linux.ppg_corp.
   Escape character is '^]'.

Teraz jeśli wpiszesz jakiś znak i wciśniesz <ENTER>, to powinieneś otrzymać odpowiedź podobną do tej poniżej:

   HTTP/1.0 400 Bad Request
   Date: Wed, 10 Jan 1996 10:24:37 GMT
   Server: NCSA/1.5
   Content-type: text/html

   <HEAD><TITLE>400 Bad Request < /TITLE> < /HEAD>
   <BODY><H1>400 Bad Request < /H1>
   Your client sent a query that this server could
   not understand.<P>
   Reason: Invalid or unsupported method.<P>
   < /BODY>

Teraz jesteśmy gotowi podłączyć się do tego serwera z innego PC-ta używając przeglądarki WWW.

4. Połączenie przez sieć Netware z Windowsami.

Żeby ustawić serwer Netware powinieneś mieć uprawnienia Supervisor-a, albo przynajmniej uprawnienia operatora konsoli. Jeśli ich nie masz, to spróbuj poprosić swojego administratora sieci, żeby ci pomógł w instalacji.

W poniższych przykładach zakładam, że adres Linux-a to 200.0.0.1 i dlatego przypisuję adresy 200.0.0.2 i 200.0.0.3 odpowiednio serwerowi Netware i stacji roboczej. Ty możesz oczywiście wybrać adresy odpowiednie dla siebie.

4.1 Ustaw serwer Netware.

Włącz na serwerze ramkę Ethernet_II przez wpisanie poniższych poleceń na konsoli lub w pliku autoexec.ncf

   load NE2000 frame=Ethernet_II name=IPNET
   load TCPIP
   bind IP to IPNET addr=200.0.0.2 mask=FF.FF.FF.0

Możesz podać numer slotu albo karty (board) podczas ładowania sterownika do NE2000 w zaleźności od twojej konfiguracji. (np. load NE2000 slot=3 frame=...).

Na PC-cie masz trzy możliwości: Win3.1, WfWg albo Win95. Procedura instalacji różni się pomiędzy Win95 a starszymi wersjami windows jeśli używasz 32-bitowego klienta z Microsoft-a lub Novell-a. Jeśli masz zamiar używac 16-bitowego klienta, to procedura instalacyjna jest opisana w instrukcji instalacji dla wersji pod Windows 3.1. Jeśli będziesz instalował wersję klienta 32-bitową, to przejdź do Windows 95.

Windows 3.x

Jeśli używasz Win3.1 albo WfWg możesz zainstalować klienta Netware (VLMs) i kilka dodatkowych plików, które są dostarczane na dyskietce TCP/IP, a mianowicie:

 TCPIP.exe, VTCPIP.386, WINSOCK.dll i WLIBSOCK.dll

Zauważ, że plik WINSOCK.dll różni się od tych z Win95 i Trumpet. Zainstaluj klienta Netware z obsługą Windows-ów. Skopiuj VTCPIP.386, WINSOCK.dll i WLIBSOCK.dll do katalogu SYSTEM a TCPIP.exe do katalogu NWCLIENT. Teraz zmodyfikuj plik STARTNET.bat w katalogu NWCLIENT:

   lsl
   ne2000     ---> sterownik do twojej karty
   c:\windows\odihlp.exe     ---->jeśli używasz WfWg
   ipxodi
   tcpip        ---> dodaj tę linię
   vlm

Stwórz podkatalog - powiedzmy \NET\TCP i skopiuj pliki HOSTS, NETWORKS, PROTOCOLS i SERVICES z /etc na twoim Linux-ie albo z SYS:ETC na serwerze Netware. Zmodyfikuj skopiowany plik HOSTS i dodaj linię dla twojego nowego serwera Linux-a. To pozwoli ci na odwoływanie się do serwera na Linux-ie w taki sposób http://linux.ppg_corp/ zamiast http://200.0.0.1/ w twojej przeglądarce WWW.

   127.0.0.1      localhost
   200.0.0.1      linux.ppg_corp

Zmodyfikuj plik NET.cfg w katalogu NWCLIENT

   Link Driver NE2000
       port 300
       int 3
       MEM D0000
       FRAME Ethernet_802.2

; ---- dodaj te linie ----

      FRAME Ethernet_II

   Protocol TCPIP
      PATH TCP_CFG C:\NET\TCP
      ip_address  200.0.0.3
      ip_netmask  255.255.255.0

   Link Support
      MemPool 6192       ---> minimum to 1024, spróbuj z różnymi wartościami
      Buffers 10 1580    ---> tutaj też możesz ustawić w/g własnych potrzeb

;---------------------------------

Zmodyfikuj plik SYSTEM.ini w katalogu WINDOWS i dodaj tę pozycję dla VTCPIP.386

   [386Enh]
   .....
   network=*vnetbios, vipx.386, vnetware.386, VTCPIP.386
   .....

Zrestartuj PC-ta, uruchom STARTNET.bat i możesz już używać swojej ulubionej przglądarki WWW. Nie musisz się logować do sieci Netware i nie musisz uruchamiać TCPMAN-a (jeśli używasz Trumpet Winsock).

Windows 95

Ta sekcja opisuje jak zainstalować 32-bitowego klienta pod Win95. Najpierw musisz zainstalować nastepujące programy:

   Client for Netware Networks (od Microsoft-a albo Novell-a)
   Microsoft TCP/IP Protocol
   Network Adapter

Aby zainstalować te programy, kliknij na Mój komputer, Panel sterowania, Sieci. Klknij Dodaj. Teraz znajdziesz się w oknie, które wyświetla Klient, Karta (Adapter), Protokół i Usługa (Service).

Aby zainstalować klienta dla sieci Netware:

  1. kliknij dwa razy na Klient.
  2. kliknij na Microsoft lub Novell.
  3. kliknij dwa razy na Klient dla sieci Netware.

Aby zainstalować protokół TCP/IP

  1. kliknij dwa razy na Protokół.
  2. kliknij na Microsoft.
  3. kliknij dwa razy na TCP/IP.

Windows 95 instaluje domyślnie kilka innych protokołów. Usuń je przez kliknięcie na nich i wciśnięcie przyciku Usuń. W typowych przypadkach Win95 instaluje protokół Microsoft NetBeui i protokół kompatybilny z IPX/SPX. Możesz skasować protokół NetBEUI, ale będziesz potrzebował protokołu IPX/SPX jeśli chcesz się logować do serwera Netware.
Więcej szczegółów znajdziesz w TCP/IP Setup FAQ.

Aby ustawić TCP/IP kliknij na TCP/IP, kliknij na Właściwości, kliknij na adres IP

   Wpisz twój adres IP w linii "Podaj adres IP" jako 200.0.0.3
   W linii "Maska podsieci" wpisz 255.255.255.0
   Kliknij OK.

Powinieneś teraz dostać komunikat, aby zresetować komputer. Zrób tak. Powinieneś teraz móc używać swojej przeglądarki.

5. Inne połączenia.

To nie jest jedyny sposób na połączenie się z serwerem Linux-a. Możesz wypróbować kilka innych programów jak:

Możesz też być zainteresowany udostępnianiem serwera Netware przez załadowanie sterownika NCP dla Linux-a.

6. Aplikacje serwera WWW.

Serwer HTTP może być użyty w biurze, aby udostępniać w przejrzystej formie informacje znajdujące się na różnych serwerach, w różnych miejscach i katalogach. Danymi mogą być proste dokumenty w Wordzie, arkusze w Lotusie, albo złożone bazy danych. Może być użyty do tworzenia interfejsu przy pomocy RDBMS takich jak ORACLE i SYBASE do generowania informacji w czasie rzeczywistym. Tutaj jest lista baz danych gateway-ów do WWW

7. Podziękowania i Legalność.

Dziekuję ludziom z NCSA za dostarczenie tak wspaniałej dokumentacji oraz Davidowi Andersonowi za jego komentarze i wypróbowanie tego HOWTO!
Powiedziano mi (David), że nie możesz używać klienta Netware nie mając licencji Netware

7.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/INN+SUCK.pl.html0100664000175000017500000011151107457640740020773 0ustar covencoven inn+suck - instalacja.

inn+suck - instalacja.

Rafał Czeczótka

v4.11, 18 sierpień 2000


Tekst ten opisuje procedurę instalacji lokalnego serwera news (inn), sposób wymiany postów (suck) oraz metodę kompresji newsów w drodze (ssh). Oryginał tego dokumentu można znaleźć na stronie www.amg.gda.pl/~michu/linux.html. Zostało użyte kodowanie ISO-8859-2.

1. Wstęp

1.1 Przedmowa

Impulsem do napisania tego tekstu były moje początkowo nieudane próby instalacji oraz nikły odzew na moje posty na grupie pl.comp.os.linux (pewnie jak zwykle moje zapytania zaginęły gdzieś w potoku informacji i zapytań docierających tu codziennie). Nie mam zamiaru pretendować do miana fachowca od konfiguracji serwerów news (po prostu u mnie już to działa), tym nie mniej mam nadzieję, że opis działającej konfiguracji będzie dla kogoś przydatny.

Całą treść tego dokumentu stanowi opis mojej instalacji duetu inn+suck w systemie RedHat 6.2, w oparciu o pakiety inn-2.2.2-3 i suck-4.2.2-1. Jeśli dysponujesz inną wersją systemu i/lub pakietów to mogą występić pewne różnice w konfiguracji, mniemam jednak, że nie powinno to stanowić najmniejszego problemu już dla średnio zaawansowanego miłośnika Linux'a.

Wszelkie sugestie i poprawki są mile widziane i należy je wysyłać pod adres michu@amg.gda.pl. Jestem skory do pomocy, proszę jednak o uszanowanie mojego czasu i nie wysyłanie mi listów o lakonicznej treści typu "nie działa mi, CO ROBIĆ???" czy magabajtowych załączników z konfiguracją. Jeśli widzisz, że nic Ci nie wychodzi, to sprawdź czy wykonałeś dokładnie wszystkie kroki (z dokładnością do różnych wersji pakietów/dystrybucji). Jeśli po paru podejściach nadal masz poważne problemy, to lepiej na razie sobie odpuść i spróbuj ponownie za jakiś czas.

W tym dokumencie w paru miejscach porównuję inn'a do leafnode'a, którego wcześniej używałem.

1.2 Podziękowania

Następujący ludzie przyczynili się do powstania tego dokumentu, taką czy inną drogą, świadomie lub nieświadomie (w kolejności alfabetycznej):

2. Słowo o programach, instalacja i konfiguracja

2.1 Co to jest inn i suck

Inn jest to "InterNetNews daemon" czyli program umożliwiający wielu użytkownikom korzystanie z zasobów news.

Suck jest to zasysacz newsów; pośredniczy on w wymianie newsów pomiędzy dwoma serwerami: naszym i zdalnym (emulując zachowanie normalnego czytnika; protokół wymiany postów pomiędzy serwerami (wbudowany w inn'a) odbywa się na trochę innej zasadzie i wymaga specjalnej konfiguracji po obu stronach, czego chcemy uniknąć).

2.2 Kiedy instalować inn+suck

Jeśli uważasz, że spełnione są poniższe warunki:

  1. Nudzi Ci się i potrzebujesz jakiejś odmiany (warunek konieczny, bo przecież tak naprawdę jeśli potrzebujesz lokalnego serwera newsów, to z pewnością wystarczy Ci dużo prostszy w konfiguracji i używaniu leafnode, poza tym ten eksperyment może Cię kosztować sporo czasu i nadszarpniętych nerwów),
  2. Z newsów na twoim komputerze korzysta więcej niż jeden użytkownik (bo dla jednego usera zupełnie wystarczające są rozwiązania typu rtin -SQ) ewentualnie "twój" komputer służy jako serwer news dla całej sieci (np. w firmie),
  3. Możliwości leafnode'a już Ci nie wystarczają (potrzebujesz killfile'i, różnych ograniczeń na ściąganą pocztę newsową, ...),
  4. Ściąganie newsów trwa u Ciebie zbyt długo i potrzebujesz ich kompresji,
to znaczy, że powinieneś zainstalować duet inn+suck.

Jeśli już będziesz chciał zainstalować to oprogramowanie, to będą Ci potrzebne następujące (lub inne wersje) pakiety:

  1. cleanfeed (np. cleanfeed-0.95.7b-7, wymagany tylko w RedHat, aby spełnić zależności RPM'a),
  2. inn (np. inn-2.2.2-3),
  3. perl-MD5 (np. perl-MD5-1.7-2, podobnie jak cleanfeed wymagany tylko w RedHat),
  4. suck (np. suck-4.2.2-1).

2.3 Wady i zalety tego rozwiązania

Zalety inn+suck:

  1. Szybki (piekielnie),
  2. Znaczne możliwości (killfile, ...), choć tu należy raczej patrzeć na możliwości suck'a (ponieważ dopiero po ściągnięciu pliki są przesyłane do inn'a a jak coś już w całości przeszło przez modem, to moim zdaniem niech już zostanie),
  3. Można tak skonfigurować inn+suck, że newsy są ściągane skompresowane, czyli czas transmisji można skrócić parokrotnie,
  4. Można grep'ować pliki z zawartością grup bez żadnych "skutków ubocznych" (ta uwaga odnosi się do dużo prostszego leafnode'a, gdzie czas do expire jest liczony od daty ostatniego dostępu do pliku, więc jeśli "to się zrobiło", to czas ten oczywiście przedłużał się),
  5. Instalując ten serwer jesteś "wśród najlepszych" (większość dużych serwerów news działa właśnie na inn'ie).

Wady inn+suck:

  1. Dość pogmatwana konfiguracja i hermetyczna dokumentacja (przynajmniej na początek) ale ten dokument powstał właśnie aby wyeliminować tę niedogodność,
  2. Pamięciożerność:

2.4 Podstawowa instalacja i konfiguracja

UWAGA!!! W zależności od dystrybucji i wersji pakietów wymienione poniżej pliki konfiguracyjne mogą występować w innych katalogach (np. /var/lib/suck/, /usr/lib/suck/, /etc/suck/, ...).

Proces instalacji i "konfiguracji" jest prosty (przynajmniej do pierwszego "ruszenia", ale o tym, bez tego wstępu, przeciętny zjadacz newsów możne przekonać się dopiero po parodniowych dociekaniach):

  1. Zainstalować inn i suck (i jeszcze parę wymienionych wcześniej drobiazgów),
    UWAGA!!! Ponieważ inn bardzo źle znosi wszelkie zmiany atrybutów plików (jest to przyczyna większości niepowodzeń), najlepiej je gdzieś zapisać:
    ----- ciach -----
    ls -ld `rpm -ql inn` > ~/jakiś_plik_z_atrybutami
    ----- ciach -----
    
    a wszelkie operacje wykonywać jako użytkownik news.
  2. W pliku /etc/news/newsfeeds dodać własną sekcję z feeds, tj.:
    ----- ciach -----
    ...
    news.task.gda.pl\
            :!junk,!test,!to\
            :Tf,Wnm:
    ...
    ----- ciach -----
    
    gdzie news.task.gda.pl to nazwa mojego serwera news, oraz do definicji dystrybucji akceptowanych przez nasz serwer dodać polską:
    ----- ciach -----
    ...
    ME\
        :*,!junk,!control*,!local*,!foo.*\
        /pl,world,usa,na,gnu,bionet,pubnet,u3b,eunet,vmsnet,inet,ddn,k12\
        ::
    ##   ^^ - to jest to pl
    ...
    ----- ciach -----
    
  3. W pliku /var/lib/suck/get.news.inn (w Debiani'e jest to plik /etc/suck/get-news.conf) wstawić nazwę serwera news (np. REMOTE_HOST=news.task.gda.pl) oraz "sajtu" (tego samego co przy definicji feed'u, tj. SITE=news.task.gda.pl),
  4. W suck'u w pliku /var/lib/suck/sucknewsrc zapisać wszystkie interesujące nas grupy i numery postów, od których ma się zacząć "ściąganie", np. aby ściągnąć ostatnich 100 postów należy podać:
    ----- ciach -----
    ...
    pl.comp.ogonki -100
    pl.comp.os.linux -100
    ...
    ----- ciach -----
    
  5. Jeśli istnieją pliki /etc/cron.daily/inn-cron-rnews oraz /etc/cron.hourly/inn-cron-nntpsend, to należy je usunąć (ich funkcje przejmuje suck),
  6. Jeśli w pliku /etc/news/nnrp.access nie ma wpisu localhost: to należy go dodać,
  7. Teraz możemy już wystartować serwer np. poleceniem /etc/rc.d/init.d/innd start. Można/trzeba także dodać odpowiednie linki do katalogów /etc/rc.d/rc[0-6].d/ (np. poleceniem ntsysv),
  8. Dodać grupy do inn'a. Można to zrobić ręcznie poleceniem ctlinnd newgroup nazwa.grupy lub skorzystać z poniższego skryptu:
    ----- ciach -----
    #!/bin/bash
    #
    # Ten skrypt tworzy automatycznie grupy w inn'ie, które podałeś w pliku
    # /var/lib/suck/sucknewsrc - konfiguracyjnym dla suck-a.
    # UWAGA !!!
    # Wymagany format tego pliku to:
    ############################
    # nazwa.grupy numer.artykulu
    ############################
    #
    # Możesz podać inna lokalizacje
    SUCK_FILE=/var/lib/suck/sucknewsrc
    #
    # Podaj ścieżkę do programu ctlinnd. Skrypt spróbuje sam zgadnąć, ale
    # lepiej podaj jak wiesz.
    CTLINND=`which ctlinnd`
    
    cat ${SUCK_FILE} | while read ln; do
            set -e $ln >/dev/null
            ${CTLINND} newgroup $1
            if [ $? -eq 1 ]; then
                    echo Błąd podczas zakładania grupy $1 !!!
                    exit
            fi
    done
    ----- ciach -----
    
  9. Aby nie ściągać grup control, control.cancel, junk, test ani to (z pewnością nam się nie przydadzą), musimy stworzyć plik /var/lib/suck/get.news.inn:
    ----- ciach -----
    control
    control.cancel
    junk
    test
    to
    ----- ciach -----
    
    Oczywiście grup tych nie należy umieszczać w pliku /var/lib/suck/sucknewsrc,
  10. Wymianę newsów ze zdalnym serwerem inicjujemy skryptem /var/lib/suck/get.news.inn (lub /var/sbin/get-news na Debian'ie),
  11. Aby czytać newsy musimy ustawić zmienną środowiskową NNTPSERVER. Dla bash'a będzie to komenda:
    export NNTPSERVER=localhost
    

2.5 Kompresja newsów w drodze

Ponieważ newsy są danymi tekstowymi, więc ich kompresja zdecydowanie skraca czas transmisji, dzięki czemu z pewnością zaoszczędzimy trochę pieniędzy kosztem naszego operatora telekomunikacyjnego (pieniądze te mogą być wysłane do autora powyższego tekstu, za ewentualne straty autor oczywiście nie bierze żadnej odpowiedzialności ;-). Osobiście wydaje mi się, że przedstawione tu rozwiązanie jest najbardziej naturalne i elastyczne. Nie oznacza to oczywiście, że nie można tego zrobić lepiej. Podczas eksperymentów okazało się także, że zwykłe tunelowanie komunikacji w skompresowanym kanale ssh nie daje oczekiwanych rezultatów, stąd wyniknęła potrzeba wywołania suck'a na zdalnym komputerze (po prostu komunikacja pomiędzy komputerami jest na tyle duża, że po uwzględnieniu opóźnień występujących w trakcie transferu, niemal całkowicie niweczony jest efekt zmniejszonej objętości danych).

Opisując poniższe rozwiązanie zakładam, że masz już poprawnie zainstalowane i skonfigurowane pakiety inn+suck. Aby z niego korzystać niezbędne nam także będą:

  1. na domowym komputerze musi być zainstalowny klient ssh,
  2. musimy mieć dostęp do konta na zdalny komputerze z zainstalowanym systemem Unix'opodobnym, podłączony w miarę szybkim łączem stałym do internetu, z zainstalowanym suck'iem oraz uruchomionym demonem ssh.

Cała przedstawiona poniżej idea opiera się na możliwości uruchomienia suck'a na zdalnym komputerze tak, aby wiadomości były wysyłane w postaci strumienia danych, który jest przesyłany w skompresowanym kanale ssh (opcja -C). Dopiero później, lokalnie, za pomocą skryptu filter2rnews, strumień ten jest dzielony na poszczególne wiadomości, które są wpuszczane za pomocą programu rnews do lokalnego serwera innd.

W tym celu musimy:

  1. Usunąć z pliku /var/lib/suck/get.news.inn całą sekcję służącą do ściągania wiadomości, czyli skrypt ten powinien być postaci:
    ----- ciach -----
    #!/bin/sh
    
    #BEFORE USING - check to ensure all the paths defined below are correct!!
    
    #NOTE: this script probably needs to be run by root.  Most systems will
    # not let a normal user run ctlinnd 
    
    REMOTE_HOST=news.task.gda.pl
    LOCAL_HOST=localhost
    
    SPOOLDIR=/var/spool/news/articles       # base directory for articles to be rposted
    NEWSDIR=/usr                            # base directory for news binaries 
    BASEDIR=/var/lib/suck                   # base directory for scripts and data files
    
    CTLINND=${NEWSDIR}/bin/ctlinnd          # location of binary
    SHLOCK=${NEWSDIR}/bin/shlock            # location of binary
    
    TMPDIR=${BASEDIR}                       # location for suck.* files
    MSGDIR=${BASEDIR}/Msgs                  # where to put MultiFile messages when getting them
    
    SITE=news.task.gda.pl                           # name of site from newsfeeds file
    
    OUTGOING=${SPOOLDIR}/../outgoing/${SITE}        # location of the list of articles to upload
    OUTGOINGNEW=${OUTGOING}.new             # file to contain the list temporarily
    OUTGOINGFAIL=${OUTGOINGNEW}.fail        # file with failed xfers
    SCRIPT=${BASEDIR}/put.news              # my filter for rpost
    OUTFILE=/tmp/tmp$$                      # used by rpost as article after it is filtered
    LOCKFILE=${BASEDIR}/getnews.lock        # lock file to prevent multiple instances of script
    NEWSGROUP=news                          # which group owns the file in out.going, typically either news or uucp.
    
    TESTHOST=testhost
    RPOST=rpost
    SUCK=suck
    
    HISTORY=/var/lib/news/history           # location of history file
    
    # if we are already running, abort 
    
    trap 'rm -f ${LOCKFILE} ; echo "Aborting" ; exit 1' 1 2 3 15
    ${SHLOCK} -p $$ -f ${LOCKFILE}
    if [ $? -ne 0 ]; then
            echo "Already running, can't run two at one time"
            exit
    fi
    
    # now upload messages
    if [ -s ${OUTGOING}  -o -s ${OUTGOINGNEW} ]; then
    
            ${TESTHOST} ${REMOTE_HOST} -s
    
            if [ $? -ne 0 ]; then
                    echo "Remote posting host not responding"
            else
                    # this is needed by INND so that the outgoing file will be
                    # properly flushed and we have a new blank file to work with
                    # when we are done
                    # First mv the current one to a new file name
                    # Since innd already has the file open, it doesn't care 
                    # about the rename.
                    # The flush will ensure that all messages to be posted have
                    # been written out, close off the old one (already renamed)
                    # and create a new one.
    
                    # if the outgoingnew already exists, it means we aborted last time
                    # so don't try to do it again
                    if [ ! -s ${OUTGOINGNEW} ]; then
                            mv ${OUTGOING} ${OUTGOINGNEW}
                            ${CTLINND} flush ${SITE}
                    fi
    
                    # outgoing messages to post
                    ${RPOST} ${REMOTE_HOST} -d -b ${OUTGOINGNEW} -p ${SPOOLDIR} -f \$\$o=${OUTFILE} ${SCRIPT} \$\$i ${OUTFILE}
    
                    ERRLEV=$?
                    if [ ${ERRLEV} -eq 0 ]; then
                            echo "Remotely posted articles"
                            rm ${OUTFILE}
                    elif [ ${ERRLEV} -eq 1 ]; then
                            echo "Error posting a message"
                    elif [ ${ERRLEV} -eq 2 ]; then
                            echo "Unable to do NNTP authorization with remote server"
                    elif [ ${ERRLEV} -eq 3 ]; then
                            echo "Unexpected answer from remote server to a command while doing NNTP authorization"
                    elif [ ${ERRLEV} -eq -1 ]; then
                            echo "Fatal error"
                    fi
    
                    if [ -f ${OUTGOINGFAIL} ]; then
                            mv ${OUTGOINGFAIL} ${OUTGOINGNEW}       # so we can re do it
                            chown news.${NEWSGROUP} ${OUTGOINGNEW}
                            chmod 664 ${OUTGOINGNEW}
                    fi
            fi
            echo "You can hang up the modem now"
    fi      
    
    rm -f ${LOCKFILE}
    ----- ciach -----
    
    Oczywiście należy pamiętać o właściwym ustawieniu zmiennych REMOTE_HOST i SITE.
  2. Skopiować z lokalnego katalogu /var/lib/suck/ pliki active-ignore, suck.killlog, suckkillfile oraz sucknewsrc do zdalnego katalogu $HOME/suck/ (jeśli nie jest tam zainstalowany suck, a tamta maszyna ma taką samą architekturę jak nasza, to możemy skopiować tam także program /usr/bin/suck).
  3. Stworzyć możliwość logowania się na zdalnym komputerze za pomocą ssh bez użycia hasła (tylko na podstawie znajomości klucza RSA):
    1. wygenerować parę kluczy RSA komendą ssh-keygen (w pass phrase nie podawać hasła),
    2. następnie skopiować plik $HOME/.ssh/identity.pub na zdalny komputer do pliku $HOME/.ssh/authorized_keys.
    UWAGA!!! Należy zdawać sobie sprawę z tego, że mimo, iż takie rozwiązanie jest o wiele bezpieczniejsze od logowania się za pomocą hasła, to krytyczną rolę dla bezpieczeństwa odgrywa tutaj nie ujawnianie zawartości pliku $HOME/.ssh/identity, czyli prywatnej połowy klucza. Istnieje także rozwiązanie umożliwiające wygenerowanie klucza z hasłem i podawanie go tylko raz na sesję (patrz program ssh-agent).
  4. Utworzyć skrypt /usr/local/bin/filter2rnews:
    ----- ciach -----
    #!/usr/bin/perl -w
    
    while (not eof STDIN) {
      @POST = ();
      while (<>) {
        last if /^\.$/;
        push @POST, $_;
      }
      $dlug = length(join('',@POST));
      print "#! rnews $dlug\n";
      print @POST;
    }
    ----- ciach -----
    
  5. Po dokonaniu wszystkich powyższych kroków możemy już pobierać newsy komendą:
    ----- ciach -----
    ssh -C -l username serwer.name \
      '~/suck/suck news.task.gda.pl -dd ~/suck -dt ~/suck -M -c' | \
      filter2rnews | rnews -N -vvv -S localhost
    ----- ciach -----
    
    gdzie username to nazwa użytkownika na komputerze serwer.name a news.task.gda.pl jest nazwą naszego serwera news. Wiadomości wysyłamy tak jak poprzednio, czyli za pomocą skryptu /var/lib/suck/get.news.inn.
  6. Pomocnym będzie uaktualnienie bazy overview (rnews nie robi tego automatycznie):
    ----- ciach -----
    su news -c 'expireover -s -a'
    ----- ciach -----
    

2.6 CNFS

Krótka chrakterystyka CNFS

Domyślnie inn skonfigurowany jest w taki sposób, że artykuły przechowywane są w postaci oddzielnych plików, w strukturze katalogów odpowiadającej pozycji grupy w hierarchii. Podstawową zaletą tego rozwiązania jest prostota oraz wynikająca z niej łatwość tworzenia rozwiązań pomocniczych. Jednak taki sposób przechowywania ma co najmniej dwie poważne wady. Pierwszą jest to, że artykuły przechowywane są z użyciem mechanizmów systemu operacyjnego, które to nie są zoptymalizowane do obsługi wielu plików o małym rozmiarze, konsekwencją czego jest wolny dostęp i duża ilość zmarnowanego miejsca. Drugą wadą jest to, że nigdy nie wiemy, jak dużo miejsca będą nam zajmowały newsy, co grozi przepełnieniem partycji.

Wymienione powyżej niedogodności tradycyjnego przechowywania plików eliminuje CNFS (Cyclic News File System). Ten sposób przechowywania artykułów polega na tym, że zapisywane są one w pliku o specjalnym formacie. Gdy skończy się miejsce, nowe artykuły automatycznie nadpisują najstarsze. Rozwiązanie takie jest bardzo szybkie i nie grozi nam już przepełnienie partycji. Jedyną jego wadą jest to, że teraz utrudniony jest "samodzielny" dostęp do pojedynczych artykułów.

Instalacja i konfiguracja CNFS

Aby zainstalować CNFS należy (wszystkie te czynności oczywiście najlepiej wykonać jako użytkownik news):

  1. W pliku /etc/news/inn.conf ustawić opcję storageapi na on,
  2. W pliku /etc/news/newsfeeds:
    1. Wyrzucić wpis crosspost:...,
    2. Zmienić wpis overview na:
      ----- ciach -----
      overview!:*:Tc,Ao,WhR:/usr/bin/overchan
      ----- ciach -----
      
  3. W pliku /etc/news/cycbuff.conf umieścić definicję naszego bufora cyklicznego, np.:
    ----- ciach -----
    cycbuff:ONE:/var/spool/news/one:131072
    metacycbuff:BIGAREA:ONE
    ----- ciach -----
    
    gdzie ONE jest symboliczną nazwą bufora, /var/spool/news/one jest plikiem bufora, 131072 rozmiarem bufora a BIGAREA jest nazwą metabufora cyklicznego,
  4. W /etc/news/storage.conf definiujemy jakie artykuły mają być przechowywane w buforze. Ponieważ my mamy tylko jeden bufor, gdzie powinny znaleźć się wszystkie artykuły, to u nas ten plik będzie wyglądał następująco:
    ----- ciach -----
    method cnfs {
      newsgroups: *
      class: 1
      size: 0,1000000
      options: BIGAREA
    }
    ----- ciach -----
    
  5. Z poziomu shell'a tworzymy bufor zdefiniowany w pliku /etc/news/cycbuff.conf:
    ----- ciach -----
    dd if=/dev/zero of=/var/spool/news/one bs=1k count=131072
    chmod 0664 /var/spool/news/one
    ----- ciach -----
    
  6. Ponieważ teraz do treści artykułów nie dostaniemy się przez nazwę pliku (np. komendą cat) lecz token (program sm), to musimy w konfiguracji suck'a:
    1. W skrypcie /var/lib/suck/get.news.inn usunąć w wywołaniu rpost'a parametr -p nazwa_katalogu,
    2. Zamienić skrypt put.news na put.news.sm (powinien być w przykładach lub źródłach),
  7. I możemy zaczynać ściągać news'y.

Podstawowe różnice

Podstawową różnicą w stosunku do standardowego sposobu przechowywania artykułów jest to, że nie ma potrzeby ich expirowania, teraz dzieje się to automatycznie, bez naszej pomocy (czasem być może wbrew naszej woli ;-).

Inną konsekwencją jest to, że pewne czynności wykonuje się w zupełnie inny sposób. Np. do odtworzenia bazy overview należy zamiast komendy expireover używać komendy expireindex (baza overview znajduje się teraz w katalogu /var/spool/news/uniover/). Ponieważ nie mamy teraz bezpośredniego dostępu do artykułów, czasem jest potrzeba wspomożenia się komendą makehistory (więcej informacji w manualach).

2.7 Grupy moderowane

[ RCz: sekcja napisana w całości przez Marcina Kasperskiego ]

W normalnej konfiguracji inn+suck grupy moderowane traktowane są tak samo, jak wszystkie pozostałe: wysyłane na nie artykuły trafiają od razu na lokalne grupy (bez akceptacji moderatora) i są wysyłane do serwera z którego pobieramy newsy. Dopiero ten serwer przesyła posty do moderatora.

Sprawia to następujące problemy:

Problemy te możemy rozwiązać konfigurując grupy jako moderowane na naszym własnym serwerze. Wówczas inn nie będzie automatycznie umieszczał na grupie wysyłanych postów a zamiast tego wyśle je pocztą do moderatora. Zaakceptowane posty "spłyną" do nas kiedyś tam suck'iem - tak jak to się dzieje normalnie.

W celu takiej konfiguracji należy (lokalizacje plików poniżej odpowiadają Debianowi):

  1. Tworzymy plik /etc/news/moderators z następującą treścią:
    # Uniwersalny adres moderatorów grup polskich
    pl.*:%s@usenet.pl
    # Uniwersalny adres moderatorów grup światowych
    *:%s@moderators.isc.org                                                                                                  
    
  2. W pliku /etc/news/inn.conf ustawiamy fromhost na adres jakiejś maszyny widocznej w światowym DNS'ie (nasz host maskaradujący, nasz provider, my sami jeśli jesteśmy wbici). Najlepiej, jeśli jesteśmy w stanie czytać pocztę dostawaną przez konto news na tym hoście (listy które nie doszły) ale nie jest to zdaje się absolutnie konieczne. Przy konfiguracji poczty smarthost najlepiej nadaje się tu adres naszego serwera mailowego. Mój plik inn.conf zawiera pola organization, server (prawdziwa nazwa mojego serwera) i fromhost (nazwa serwera pocztowego). Uwaga: straciłem dobry dzień zgadując czemu moje posty nie dochodzą póki na to nie wpadłem - miałem wcześniej jako fromhost pewien adres z sieci lokalnej i jakiś mailer po drodze wywalał pocztę do kosza - nie przysyłając żadnej informacji zwrotnej, bo nie miał jak.
  3. Sprawdzamy dla pewności, czy jesteśmy w stanie wysłać pocztę z palca z konta news, przy pomocy sendmail'a na jakieś konto w internecie (np. na friko), ustawiając jako From news@to-co-wpisaliśmy-jako-fromhost.
  4. Charakteryzujemy grupy jako moderowane
    ----- ciach -----
    ...
    ctlinnd changegroup pl.rec.humor.najlepsze m
    ctlinnd changegroup comp.lang.c++.moderated m
    ...
    ----- ciach -----
    
  5. Próbujemy coś wysłać - najlepiej na grupę z której przychodzą powiadomienia o zakolejkowaniu.

2.8 Uwagi i kruczki

Jeśli coś może pójść źle, to z pewnością pójdzie

  1. Bardzo pomocnym programem jest inncheck, który sprawdza poprawność konfiguracji, atrybuty plików oraz wyświetla potencjalne źródła problemów. Jeśli coś nam nie działa to diagnostykę powinniśmy zacząć właśnie od uruchomienia tego programu.
  2. W razie problemów należy także sprawdzić właścicieli oraz prawa dostępu do plików z pakietu inn'a (np. z plikiem ~/jakiś_plik_z_atrybutami który czujnie zrobiliśmy na początku instalacji).
  3. Jeśli podczas ściągania newsów pojawi się komunikat GROUP command not recognized, try the -M option oczywiście dodaj w pliku /var/lib/suck/get.news.inn opcję -M do wywołania suck'a.
  4. Jeśli wysyłane przez nas posty nie pojawiają się w naszej kolejce wyjściowej (tzn. pliki w katalogu /var/spool/news/outgoing/ są puste), to może pomóc dodanie wpisu *, w pliku /etc/news/newsfeeds:
    ----- ciach -----
    ...
    news.task.gda.pl\
            :*,!junk,!test,!to\
            :Tf,Wnm:
    ...
    ----- ciach -----
    
  5. Jeśli nasz serwer odsyła z powrotem ściągnięte posty do zdalnego serwera, to przyczyną może być to, że nazwa zdalnego feed'u (np. news.task.gda.pl) jest inna niż nazwa umieszczona w polu Path: (np. tasknews.task.gda.pl). Aby temu zaradzić należy sprawdzić jaka nazwa jest w tym polu (najbardziej z lewej) i zmodyfikować plik /etc/news/newsfeeds w następujący sposób:
    ----- ciach -----
    ...
    news.task.gda.pl/tasknews.task.gda.pl\
            :!junk,!test,!to\
            :Tf,Wnm:
    ...
    ----- ciach -----
    
    Innym rozwiązaniem tego problemu jest dodanie parametru H1 do opcji feedu, czyli :Tf,Wnm,H1:.

Inn na co dzień, czyli rzeczy o których warto wiedzieć

  1. Usuwanie grup odbywa się przez ctlinnd rmgroup nazwa.grupy (jeśli wywołujemy suck'a lokalnie, to on sam usunie taką grupę z pliku sucknewsrc, jeśli zdalnie (patrz kompresja) to musimy to zrobić ręcznie),
    UWAGA!!! Nie należy usuwać grup control, control.cancel, junk, test ani to, inn bardzo źle to znosi.
  2. Opisy grup można dodawać w pliku /var/lib/news/newsgroups, np.:
    ----- ciach -----
    ...
    pl.comp.ogonki O polskich literkach w komputerach.
    pl.comp.os.linux Linux - system operacyjny dla kazdego.
    ...
    ----- ciach -----
    
    Możemy je ściągnąć np. komendą
    testhost news.task.gda.pl -d > jakiś_plik
    
    (jeśli na serwerze z którego ściągamy opisy jest dużo grup (może być ich nawet parędziesiąt tysięcy), to może to potrwać parę minut).
  3. Dane o przeterminowaniach (nie dotyczy CNFS) są w pliku /etc/news/expire.ctl, usuwanie przeterminowanych postów można wymusić uruchamiając skrypt /etc/cron.daily/inn-cron-expire (przecież nie każdy ma włączony komputer całą dobę).
  4. Aby usunąć limit linii dla postów ściągniętych przez inn'a (już po zaakceptowaniu przez suck'a) należy dodać w pliku /etc/rc.d/rc.news do opcji FLAGS flagę -l0.
  5. Jeśli nie chcemy aby inn odrzucał stare posty, powinniśmy zwiększyć wartość parametru artcutoff w pliku /etc/news/inn.conf.
  6. Od czasu do czasu można wyczyścić skrytkę pocztową użytkownika news np. z konta root'a komendą su - news -c pine.
  7. W pliku /etc/news/inn.conf możemy zmienić parametry organization (bo napis A poorly-installed InterNetNews site w postach wygląda nieelegancko) oraz ustawić pathhost (ułatwia czytanie logów).
  8. Jeśli przy próbie połączenia z inn'em pojawia się komunikat You have no permision to talk. Goodbye należy zaktualizować zawartość pliku /etc/news/nnrp.access, np. poniżej dodaliśmy możliwość dostępu z sieci 192.168.1.0:
    ----- ciach -----
    # Default to no access
    *:: -no- : -no- :!*
    # Allow access from localhost
    localhost:Read Post:::*
    192.168.1.0/24:Read Post:::*
    ----- ciach -----
    
  9. Jeśli chcemy założyć lokalną (local) hierarchię, to wystarczy założyć odpowiednie grupy local.* oraz zmienić wpis w /etc/news/newsfeeds:
    ----- ciach -----
    ...
    news.task.gda.pl\
            :!junk,!test,!to,!local.*\
            :Tf,Wnm:
    #                       ^^^^^^^^^ ten wpis
    ...
    ----- ciach -----
    
    aby nasze lokalne posty nie wędrowały gdzieś po świecie.
  10. Jeśli ściągamy newsy z kilku serwerów, to wystarczy jeśli umieścimy w pliku /etc/news/newsfeeds odpowiednie wpisy:
    ----- ciach -----
    ...
    news.task.gda.pl/news.tpnet.pl,news.icm.edu.pl\
            :!junk,!test,!to\
            :Tf,Wnm:
    
    news.tpnet.pl/news.task.gda.pl,news.icm.edu.pl\
            :!junk,!test,!to\
            :Tf,Wnm:
    ...
    ----- ciach -----
    
  11. Jeśli przy uruchomieniu suck'a pojawia się komunikat typu Can not open /usr/news/db/history, Skipping warto podlinkować /usr/news/db/ do katalogu z bazą history (zazwyczaj /var/lib/news/). Jeśli zdarza nam się używać kilku serwerów, to suck nie będzie ponownie ściągał postów, które już są w naszym serwerze.
  12. Sprawdzenie kolejki postów wychodzących można dokonać poniższym skryptem (jest to przerobiony skrypt newsq z pakietu leafnode):
    ----- ciach -----
    #!/usr/bin/perl
    
    use MIME::Words qw(:all);
    
    $spooldir = "/var/spool/news";
    
    if ( chdir "$spooldir/outgoing" && opendir( DIR, "." ) ) {
        @sites = readdir( DIR );
        closedir( DIR );
    
        foreach (@sites) {
            if ( open(F, "< $_") ) {
                while(<F>) { 
                    push @posts, (split)[0];
                }
                close F;
            }
        }
    
        undef $/;
        foreach (@posts) {
            if ( open(F, "< $spooldir/articles/$_") ) {
    #       if ( open(F, "sm $_ |") ) {  # zamienić te linie dla CNFS
                undef $subject, $newsgroups, $from;
                $_ = <F>;
                close F;
                s/\n\n.*//s;
                s/\r//gs;
                s/\n\s+/ /sg;
                foreach ( split( /\n/, $_ ) ) {
                    $subject = $1 if ( /^Subject:\s+(.*)/i );
                    $newsgroups = $1 if ( /^Newsgroups:\s+(.*)/i );
                    $from = $1 if ( /^From:\s+(.*)/i );
                }
                if ( $subject ne "" && $from ne "" && $newsgroups ne "" ) {
                  $from=decode_mimewords($from);
                  $newsgroups=decode_mimewords($newsgroups);
                  $subject=decode_mimewords($subject);
                  print $from . " in " . $newsgroups . "\n\t" . $subject . "\n";
                }
            }
        }
    }
    ----- ciach -----
    
  13. Jeśli chcemy aby było robione lokalne archiwum (np. grup z hierarchii pl.comp), to wystarczy jeśli dopiszemy do pliku /etc/news/newsfeeds:
    ----- ciach -----
    source-archive:!*,pl.comp.*\
      :Tc,Wn\
      :/usr/bin/archive -i /var/spool/news/archive/INDEX
    ----- ciach -----
    
    Archiwum to możemy czytać używając tin'a, np.:
    export TIN_SPOOLDIR=/var/spool/news/archive
    export TIN_LIBDIR=/var/lib/news
    tin
    
  14. Jeśli mamy już wcześniej ściągnięte pliki z postami, to możemy spróbować przenieść te zasoby do inn'a, np. komendą:
    ----- ciach -----
    (for i in [0-9]*; do cat $i; echo .; done) \
      | filter2rnews | rnews -N -vvv -S localhost
    ----- ciach -----
    
    wykonywaną po kolei w każdym katalogu (z postami).

3. Inne dokumenty związane z tematem

4. Do zrobienia

5. Prawa autorskie/legalność

Prawa autorskie należą do © Rafała Czeczótki. Dokument ten jest rozpowszechniany na podstawie GPL (Gnu Public License). Aby otrzymać kopię tej licencji napisz do Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Znaki towarowe należą do ich właścicieli. Nie ma żadnych gwarancji co do dokładności czy przydatności informacji zawartych w tym dokumencie.

doc-linux-pl-2002.06.14.orig/mini/html/IO-Programming.pl.html0100664000175000017500000007716707104371340022401 0ustar covencoven Linux I/O port programming mini-HOWTO

Linux I/O port programming mini-HOWTO

Autor: Riku Saikkonen Riku.Saikkonen@hut.fi
v, 28 Grudnia 1997
Wersja polska: Michał Szwaczko michalsz@lena.zsg.lublin.pl
v1.0, 1 Marca 2000


Ten dokument HOWTO opisuje programowanie sprzętowych rejestrów wejścia/wyjścia oraz zatrzymywanie na niewielkie okresy czasu pracy programów użytkownika działających na Linuxie pracującym w architekturze Intel x86. Dokument został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/mini

1. Wstęp

Ten dokument HOWTO opisuje programowanie sprzętowych rejestrów wejścia/wyjścia oraz zatrzymywanie na niewielkie okresy czasu pracy programów użytkownika działających na Linuxie pracującym w architekturze Intel x86. Dokument ten jest następcą bardzo małego IO-port mini-HOWTO tego samego autora. Dokument został napisany przez Riku Saikkonen. Copyright 1995-1997 Riku Saikkonen. Po szczegóły odnośnie praw autorskich zobacz Linux HOWTO copyright. Jeśli chcesz coś poprawić lub dodać to śmiało możesz do mnie pisać (Riku.Saikkonen@hut.fi)...

Zmiany w stosunku do poprzedniej wersji (30 Marca 1997):

2. Używanie rejestrów wejścia/wyjścia w programach napisanych w C

2.1 Metoda zwykła

Procedury dostępu do portów (rejestrów) we/wy umieszczone są w /usr/include/asm/io.h (lub w linux/include/asm-i386/io.h w źródłach jądra) Procedury te występują w formie makr do wstawienia a więc wystarczy że zrobisz #include <asm/io.h>; nie potrzebujesz już żadnych dodatkowych bibliotek.

Z powodu ograniczeń w gcc (obecna wersja 2.7.2.3 i poniżej) oraz egcs (wszystkie wersje) programy wykorzystujące te procedury muszą być kompilowane z włączoną optymalizacją (gcc -O1 lub więcej) lub możesz też zrobić #define extern bez parametru (puste) zanim włączysz <asm/io.h>.

Do odpluskwiania (debugging) możesz użyć gcc -g -O (przynajmniej w nowoczesnych wersjach gcc), chociaż optymalizacja może spowodować, iż debugger będzie zachowywał się trochę dziwnie. Jeśli to sprawia Ci kłopot, procedury korzystające z rejestrów we/wy wstaw do osobnego pliku i tylko ten plik poddaj optymalizacji podczas kompilacji.

Zanim dostaniesz się do jakiegokolwiek portu we/wy, musisz nadać swemu programowi uprawnienia do tego. Robi się to wywołując funkcję ioperm() (zdeklarowaną w unistd.h i zdefiniowaną w jądrze) gdzieś w okolicach początku programu (przed jakimkolwiek dostępem do portów) Składnia tego polecenia to ioperm(skąd,ile,włacz) gdzie skąd jest pierwszym portem do którego chcesz mieć dostęp a ile liczbą kolejnych portów do których chcesz mieć dostęp. Dla przykładu ioperm(0x300, 5, 1) da ci dostęp do portów od 0x300 do 0x304 (w sumie pięc portów). Ostatni argument to wartośc logiczna mówiąca o tym czy program otrzyma dostęp do portów (1 - prawda) bądź nie (0 - fałsz). Możesz wywoływać ioperm() wiele razy aby włączyć wiele nieciągłych obszarów rejestrów. Zajrzyj do ioperm(2) w podręczniku systemowym man po szczegóły odnośnie składni.

Wywołanie ioperm() wymaga aby twój program miał uprawnienia root'a: wobec czego albo musisz uruchamiać go jako root albo dać mu suid root'a. Po wywołaniu ioperm() możesz już zrezygnować z uprawnień root'a. Nie wymaga się abyś w sposób jawny wyłączał uprzywilejowany dostęp do portów (czyli ioperm(....,0)) na końcu programu; robi się to automatycznie wraz z zakończeniem procesu.

Funkcja setuid() w wypadku użytkownika bez przywilejów root'a nie odbiera dostępu do portów przydzielonego przez ioperm() ale funkcja fork() już tak. (proces potomny nie dostaje dostępu ale proces-rodzic go zachowuje)

ioperm() może jedynie umożliwić dostęp do portów od 0x000 do 0x3FF. Jeśli chcesz używać innych portów (wyższych) musisz użyć funkcji iopl() (która daje ci dostęp do wszystkich portów od razu) Użyj argumentu 3 (czyli iopl(3)) aby dać swemu programowi dostęp do wszystkich portów (bądź ostrożny - dostęp do niewłaściwych portów może wywołać najróżniejsze usterki komputera). Musisz mieć uprawnienia root'a aby wywołać iopl(). Po szczególy zajrzyj do podręcznika systemowego man: iopl(2)

Teraz właściwy dostęp do portów.. Aby odczytać bajt (8 bitów) z portu, wywołaj funkcję inb(port), zwraca ona odczytaną wartość. Aby zapisać bajt do portu wywołaj outb(wartość,port) (zwróć uwagę na kolejność argumentów) Aby odczytać słowo (16 bitów) z portów x i x+1 (jeden bajt z każdego łączone w słowo za pomocą asemblerowej instrukcji inw) wywołaj inw(x) Aby zapisać słowo do tych dwóch portów użyj outw(wartość,x) Jeśli nie jesteś pewien której instrukcji użyć (operującej bajtem czy słowem) prawdopodobnie będziesz chciał użyć inb() i outb() - większość urządzeń zaprojektowana jest z bajtowo-zorientowanym dostępem do portów. Zauważ, że wykonanie każdej instrukcji operującej na portach zajmuje co najmniej mikrosekundę.

Makra inb_p(),outb_p(),inw_p() i outw_p() działają identycznie z tymi powyżej ale dodatkowo wykonują opóźnienie (około 1 mikrosekundy) po dostępie do portu. Możesz spowodować że opóźnienie będzie wartości ok 4 mikrosekund jeśli zrobisz #define REALLY_SLOW_IO zanim włączysz <asm/io.h> Makra te zwykle (chyba że zrobisz #define SLOW_IO_BY_JUMPING, które jest raczej mniej dokładne) używają zapisu do portu 0x80 zby uzyskać opóźnienie, wobec czego musisz najpierw dać dostęp do portu 0x80 za pomocą ioperm(). Zapisy do portu 0x80 nie powinny mieć wpływu na żadną częsć systemu. Jeśli chcesz poznać bardziej wszechstronne metody dostępu do portów czytaj dalej.

W stosunkowo nowych dystrybucjach podręcznika systemowego man znajdują się strony ioperm(2), iopl(2) oraz powyższych makr.

2.2 Metoda alternatywna: /dev/port

Innym sposobem dostępu do rejestrów I/O jest otworzenie urządzenia /dev/port do zapisu lub/i odczytu za pomocą funkcji open() (/dev/port to urządzenie znakowe, numer główny 1, poboczny 4) (Funkcje f*() z biblioteki stdio mają wewnętrzne buforowanie więc ich unikaj) Następnie wywołaj lseek() do odpowiedniego bajtu w tym pliku (pozycja 0 = port 0x00 pozycja 1 = port 0x01 itd) i czytaj (read()) lub zapisuj (write()) bajt lub słowo.

Oczywiście aby to zadziałało twój program musi mieć możliwośc czytania i zapisywania do /dev/port. Metoda ta jest prawdopodobnie wolniejsza od metody normalnej pokazanej powyżej ale nie potrzebuje ani optymalizacji programu ani wywoływania ioperm(). Nie potrzebuje też uprawnień root'a jeśli nadasz zwykłym użytkownikom lub jakiejś grupie prawa dostępu do /dev/port - jest to jednak nieporządane z punktu widzenia bezpieczeństwa systemu, jako że możliwe jest wtedy uszkodzenie systemu, a może nawet zdobycie przywilejów root'a przez bezpośredni dostęp za pomocą /dev/port do dysków, kart sieciowych itp.

3. Przerwania (IRQ) oraz dostęp DMA

Nie można bezpośrednio korzystać z IRQ lub DMA w programach użytkownika. Musisz napisać sterownik/moduł do jądra; zajrzyj do The Linux Kernel Hacker's Guide po szczegóły a także do źródeł jądra po przykłady. W programach użytkownika nie można też przerwań wyłączać.

4. Mierzenie czasu z dużą dokładnością

4.1 Opóźnienia

Przede wszystkim trzeba stwierdzić że z powodu wielozadaniowej natury Linuxa nie można zagwarantować że procesy w trybie użytkownika będą mieć dokładną kontrolę czasu. Twój proces może zostać rozpoczęty w każdej chwili i może mu to zająć od 10 milisekund do kilku sekund (na bardzo obciążonych systemach). Jednakże, dla większości aplikacji używających portów I/O nie ma to większego znaczenia. Aby zminimalizować to zjawisko możesz nadać swemu procesowi wyższy priorytet (zobacz nice(2) w podręczniku man) lub używać zarządzania procesami w czasie rzeczywistym (patrz niżej)

Jeśli chcesz berdziej precyzyjnie odmierzać czas niż pozwalają ci na to procesy w trybie użytkownika, możesz skorzystać ze wsparcia dla procesów użytkownika w czasie rzeczywistym. Jądra 2.x.x mają niewielkie wsparcie dla czasu rzeczywistego; zobacz sched_setscheduler(2) w podręczniku man. Jest również specjalne jądro które ma zaawansowane wsparcie dla czasu rzeczywistego. Zobacz http://luz.cs.nmt.edu/~rtlinux aby uzyskać więcej informacji na ten temat.

Opóźnianie za pomocą funkcji sleep() i usleep()

Zacznijmy teraz od łatwiejszych wywołań. Jeśli chcesz opóźnień rzędu sekund to najpewniej jest użyć sleep(). Dla opóźnień rzędu przynajmniej dziesiątek milisekund (10ms wydaje się być najmniejszym możliwym opóźnieniem) powinieneś użyć usleep(). Funkcje te oddają czas innym procesom a więc czas procesora nie jest marnowany. Zajrzyj do sleep(3) i usleep(3) w podręczniku man po szczegóły dotyczące tych funkcji.

Jeśli potrzebujesz opóźnień mniejszych niż 50 milisekund (w zależności od prędkości procesora i samego komputera oraz obciążenia systemu) oddawanie czasu procesora zajmuje zbyt wiele czasu ponieważ linuxowy zarządca procesów (w architekturze x86) zwykle zabiera około 10-30 milisekund zanim zwróci kontrolę do twojego procesu. Z tego powodu dla małych opóźnień usleep() zwykle opóźnia o trochę więcej czasu niż podajesz w parametrze a przynajmniej około 10 ms.

Opóźnianie za pomocą funkcji nanosleep()

W serii jąder 2.0.x znajduje się nowa funkcja systemowa nanosleep() (zobacz nanosleep(2) w podręczniku man) która pozwala opóźniać lub zatrzymywać proces na krótkie okresy czasu (kilka mikrosekund lub więcej).

Dla uzyskania opóźnień <=2ms, jeśli (i tylko wtedy) twój proces jest ustawiony na zarządzanie z wsparciem dla czasu rzeczywistego (poprzez sched_setscheduler()), nanosleep() używa pętli opóźniającej; w przeciwnym razie zatrzymuje proces tak jak usleep().

Pętla opóźniająca używa udelay() (wewnętrznej funkcji jądra użtwanej przez wiele jego modułów) a długość pętli jest obliczana na podstawie wartości BogoMips (prędkość tego rodzaju pętli opóźniającej jest jedną z rzeczy którą BogoMips dokładnie mierzy) Zobacz /usr/include/asm/delay.h po szczegóły odnośnie działania tego mechanizmu.

Opóźnianie za pomocą operacji I/O na porcie

Inną metodą opóźniania o niewielkie ilości mikrosekund są operacje I/O na portach. Czytanie/zapisywanie jakiegokolwiek bajtu z/do portu 0x80 (patrz wyżej jak to się robi) powinno dać opóźnienie prawie dokładnie 1 mikrosekundy bez względu na typ procesora i jego prędkość. Możesz tak robić wiele razy aby uzyskać opóźnienie rzędu kilku mikrosekund. Sposób ten nie powinien wywoływać żadnych szkodliwych efektów ubocznych na żadnym standardowym komputerze (nawet niektóre moduły jądra go używają). W ten sposób uzyskują opóźnienie funkcje {in|out}[bw]_p() (zobacz asm/io.h).

W zasadzie, instrukcje I/O na większości portów w obszarze 0-0x3ff zbierają prawie dokładnie 1 mikrosekundę, więc jeśli na przykład używasz bezpośrednio portu równoległego po prostu wykonaj kilka razy inb() z tego portu aby uzyskać opóźnienie.

Opóźnianie za pomocą instrukcji asemblerowych

Jeśli znasz typ procesora i prędkośc zegara w komputerze na którym będzie działał twój program, możesz na stałe uzyskać krótsze opóźnienia poprzez zastosowanie pewnych rozkazów asemblerowych (pamiętaj jednak że twój proces może się zacząć w dowolnym momencie wobec czego opóźnienia te mogą być większe od czasu do czasu) W tabeli poniżej wewnętrzna prędkość procesora określa liczbę cykli np dla procesora 50MHz (np. 486DX-50 lub 486DX2-50) jeden cykl zegara zajmuje 1/50000000 sekundy. (200 nanosekund).

Instrukcja   cykle zegara na 386    cykle zegara na 486
nop                   3                   1
xchg %ax,%ax          3                   3
or %ax,%ax            2                   1
mov %ax,%ax           2                   1
add %ax,0             2                   1
(Przykro mi ale niewiele wiem o Pentium. Pewnie podobnie do 486. Nie mogę znaleźć żadnej instrukcji która zajmowała by tylko jeden cykl zegara na 386. Jeśli możesz, używaj instrukcji jednocyklowych, w przeciwnym razie architektura potokowa (pipelining) używana w nowoczesnych procesorach może dać jeszcze krótsze czasy)

Rozkazy nop i xchg z tabeli powyżej nie powinny powodować żadnych skutków ubocznych. Reszta może modyfikować rejestr znaczników ale nie powinno mieć to znaczenia bo gcc powinno to wykryć. Użycie nop jest dobrym wyborem.

Aby skorzystać z powyższego, trzeba w swoim programie wywołać funkcję asm("instrukcja") Składnia instrukcji jest taka sama jak w tabeli powyżej. Jeśli chcesz użyć kilku instrukcji w jednym wywołaniu funkcji asm rozdziel je średnikami. Na przykład asm("nop ; nop ; nop ; nop") wywoła cztery razy instrukcję nop opóźniając nasz program o 4 cykle na 486 lub Pentium (lub 12 cykli na 386)

Funkcja asm() jest przez gcc tłumaczona na wstawkę w asemblerze a więc nie ma zagrożenia przekroczenia limitu wywołań funkcji.

Opóźnienia krótsze niż jeden cykl zegara nie są możliwe w architekturze Intel i386.

Instrukcja rdtsc w Pentium

Jeśli masz Pentium, możesz odczytać ilość cykli zegara które upłynęły od ostatniego uruchomienia komputera. Robi się to za pomocą takiego kodu w C:


   extern __inline__ unsigned long long int rdtsc()
   {
     unsigned long long int x;
     __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
     return x;
   }

Możesz odczytywać tą wartość w celu opóźniania o dowolną ilość cykli.

4.2 Mierzenie czasu

Dla czasów rzędu sekundy prawdopodobnie najłatwiej będzie użyć funkcji time(). Dla bardziej dokładnych pomiarów: gettimeofday() jest dokładne co do mikrosekundy (ale zobacz wyżej o zarządzaniu procesami) Dla Pentium fragment kodu rdtsc powyżej jest dokładny co do cykla zegarowego.

Jeśli chcesz aby twój proces dostawał jakiś sygnał po jakimś czasie, użyj settimer() lub alarm(). Zajrzyj do stron podręcznika man dotyczących tych funkcji.

5. Inne języki programowania

Opis powyżej koncentruje się na języku C. Powinien bezpośrednio odnośić się też do C++ i Objective C. W asemblerze musisz wywołać ioperm() lub iopl() tak jak w C ale potem możesz już używać instrukcji czytania/zapisywania portów bezpośrednio.

W innych językach, jeśli nie możesz wstawiać do programu wstawek w asemblerze lub C bądź jeśli nie możesz użyć funkcji systemowych opisanych powyżej, najłatwiej będzie napisać osobny program w C ze wszystkimi operacjami na portach I/O i wszystkimi opóźnieniami których potrzbujesz po czym skompilować go i zlinkować z resztą twojego programu. Możesz też użyć /dev/port jak to opisano powyżej.

6. Niektóre przydatne porty

Teraz trochę informacji programistycznych dotyczących zwykłych portów które mogą być bezpośrednio użyte do operacji I/O w logice TTL (lub CMOS).

Jeśli chcesz używać tych lub innych zwykłych portów zgodnie z ich normalnym przeznaczeniem (np chcesz sterować normalną drukarką bądź modemem) powinieneś najpewniej użyć istniejących sterowników (zwykle dołączonych do jądra) zamiast programować porty bezpośrednio jak to opisuje ten dokument. Ten rozdział jest dla tych którzy chcą podłączyć do standardowych portów komputera wyświetlacze LCD, silniki krokowe lub inne niestandardowe urządzenia elektroniczne.

Jeśli chcesz sterować jakimś urżądzeniem produkowanym na rynek masowy, np. skanerem (które to urządzenie jest już na rynku jakiś czas) poszukaj raczej istniejącego sterownika Linuxowego. Dobrym miejscem aby zacząć jego poszukiwania jest Hardware-HOWTO

www.hut.fi/Misc/Electronics jest dobrym źródłem informacji dotyczących podłączania urządzeń do komputera (jak i samej elektroniki w ogóle)

6.1 Port równoległy

Adres bazowy portu równoległego (zwany poniżej >BASE) to 0x3bc dla /dev/lp0, 0x378 dla /dev/lp1 i 0x278 dla /dev/lp2. Jeśli chcesz sterować tylko czymś co działa jak normalna drukarka powinieneś zapoznać się z Printing-HOWTO.

Oprócz standardowego trybu tylko-do-zapisu opisanego powyżej, w większości portów równoległych istnieje jeszcze rozszeżony tryb dwukierunkowy. Po informacje na ten temat oraz na temat nowych trybów ECP/EPP (jak i samego standardu IEEE 1284 w ogóle) zajrzyj na http://www.fapo.com oraz na http://www.senet.com.au/~cpeacock/parallel.htm Pamiętaj, że skoro nie możesz używać DMA i IRQ w programach użytkownika, aby użyć trybów ECP/EPP będziesz prawdopodobnie musiał napisać własny sterownik do jądra. Zdaje się, że ktoś już pisze taki sterownik ale nie znam szczegółów.

Port BASE+0 (port danych) kontroluje sygnały danych portu (D0 do D7 dla bitów od 0 do 7) Stany: 0=niski (0 V), 1=wysoki (5 V). Zapis do tego portu zatrzaskuje dane na pinach. Odczyt zwraca ostatnio zapisaną daną w trybie normalnym bądź rozszeżonym lub dane z innego urządzenia w rozszeżonym trybie odczytu.

Port BASE+1 (port statusu) jest tylko-do-odczytu i zwraca stan poniższych sygnałów wejsciowych.

(Nie jestem pewien stanów tych bitów.)

Port BASE+2 (Port kontrolny) jest tylko do zapisu (odczyt zwraca ostatnio zapisaną wartość) i kontroluje poniższe sygnały kontrolne:

(Znowu nie jestem pewien stanów.)

Rozkład wyprowadzeń. (25 pinowe żeńskie gniazdo typu D) (i=wejscie, o=wyjscie):

1io -STROBE, 2io D0, 3io D1, 4io D2, 5io D3, 6io D4, 7io D5, 8io D6,
9io D7, 10i ACK, 11i -BUSY, 12i PE, 13i SLCT, 14o AUTO_FD_XT,
15i ERROR, 16o -INIT, 17o SLCT_IN, 18-25 Ground

Specyfikacja IBM twierdzi że piny 1,14,16 i 17 (wyjscia kontrolne) mają otwarte kolektory podpięte do +5V przez 4.7 kiloomowe oporniki (dostarcza 20 mA, pobór 0.55 mA, wyjscie w stanie wysokim +5V minus to co podpięte) Reszta pinów pobiera 24 mA, dostarcza 15 mA a wyjscie w stanie wysokim to minimum 2.4V. Stan niski dla wszystkich to maximum 0.5V. Porty równoległe inne niż IBM prawdopodobnie odbiegają od tego standardu. Po więcej informacji na ten temat zajrzyj na http://www.hut.fi/Misc/Electronics/circuits/lptpower.html

Na koniec jeszcze ostrzeżenie: Uważaj z uziemieniem. Zepsułem już parę portów przez podłączanie się do nich gdy komputer był włączony. Dobrze jest w takim wypadku używać portów równoległych nie zintegrowanych z płytą główną (zwykle można dodać drugi port równoległy do komputera za pomocą taniej standardowej karty I/O (tzw ajołki - tłum); po prostu wyłącz porty których nie potrzebujesz i ustaw adres portu na karcie IO na jakiś wolny adres. Nie musisz się martwić o IRQ dla portu równoległego gdyż normalnie się go nie używa)

6.2 Port joysticka/Port gier

Port gier jest umieszczony pod adresami 0x200-0x207. Jeśli chcesz kontrolować normalny joystick to jest do tego specjalny sterownik w jądrze, zobacz ftp://sunsite.icm.edu.pl/sunsite/pub/Linux/kernel/patches Plik nazywa się joystick-*.

Rozkłąd wyprowadzeń od stony portu (15-pinowe żeńskie gniazdo typu D-shell):

Piny +5V zwykle są podłączane bezpośrednio do linii zasilania na płycie głównej, więc, w zależności od płyty, zasilacza i portu ,powinny dawać całkiem sporo mocy. Cyfrowe wejścia są używane dla przycisków joysticków które możesz sobie podłączyć do portu (joystick A i B, dwa przyciski każdy) Wejścia te powinny być na poziomach TTL a ich stan możesz odczytać z portu statusu (zobacz poniżej) Prawdziwy joystick zwraca stan niski (0V) kiedy przycisk jest naciśnięty a stan wysoki (+5V z pinów zasilających przez jednokiloomowy rezystor) kiedy jest zwolniony.

Tak-zwane wejścia analogowe w istocie mierzą opór. Port joysticka ma przyłączony do tych 4 wejść poczwórny multiwibrator (quad one-shot multivibrator) (scalak 558) Na każdym wejściu mamy rezystor 2.2k pomiędzy pinem a wejściem multiwibratora oraz kondensator 0.01uF pomiędzy wyjściem multiwibratora a masą. Prawdziwy joystick ma jeszcze potencjometr dla każdej z osi (X i Y) umieszczony pomiędzy +5V a właściwym pinem wejsćiowym (AX lub AY dla joysticka A oraz BX lub BY dla joysticka B)

Kiedy jest aktywny, multiwibrator ustawia swoje wyjścia w stan wysoki (5V) i oczekuje aż każdy z kondensatorów osiągnie 3.3V po czym ustawia w stan niski odpowiednie linie wyjściowe. Dlatego właśnie czas trwania okresu kiedy multivibrator jest w stanie wysokim jest proporcjonalny do oporu potencjometru joysticka. (czyli pozycji joysticka na odpowiedniej osi) Relacja wygląda tak:

R = (t - 24.2) / 0.011,
gdzie R to opór potencjometru w omach a t to czas trwania stanu wysokiego w sekundach.

Wobec tego aby odczytać wejśćia analogowe musisz najpierw uaktywnić multiwibrator (za pomocą zapisu do odpowiedniego portu - patrz niżej) po czym odczytywać stan czterech osi (za pomocą następujących po sobie odczytów z portów) aż zmienią stan z wysokiego na niski po czym mierzysz czas trwania stanu wysokiego. Odczytywanie takie zużywa sporo czasu procesora, co w systemie wielozadaniowym takim jak Linux nie będącym systemem czasu rzeczywistego powoduje niedokłądność rezultatów gdyż nie można odczytywać portu stale (chyba że użyjesz sterownika niskopoziomowego i wyłączysz przerwania na czas odczytów - ale to zabiera jeszcze więcej czasu procesora). Jeśli wiesz że przejście do stanu niskiego zajmie sygnałowi dłużśzy czas (rzędu 10 ms) możesz użyć usleep() przed odczytem oddając w ten sposób czas procesora innym procesom.

Jedynym portem do którego potrzebujesz mieć dostęp to port 0x201 (inne porty zachowują się identycznie bądź nie robią nic). Każdy zapis (nie ważne czego) do tego portu uaktywnia multiwibrator. Odczyt z tego portu zwraca stan poszczególnych sygnałów wejściowych.

6.3 Port szeregowy

Jeśli urządzenie z którym się komunikujesz przypomina coś co działą jak RS-232 możęsz do tego celu użyć portu szeregowego. Linuxowy sterownik portu szeregowego powinien wystarczyć w prawie wszystkich zastosowaniach (nie powinienneś mieć potrzeby programować port bezpośrednio, a nawet jeśli chciałbyś to robić prawdopodobnie musiałbyś napisać własny moduł do jądra.) Sterownik Linuxowy jest całkiem wszechstronny a więc używanie na przykład niestandardowych prędkości portu nie powinno być problemem.

Jeśli chcesz dowiedzieć się więcej o programowaniu portu szeregowego w Linuxie zobacz stronę termios(3) w podręczniku systemowym man, źródła sterownika (linux/drivers/char/serial.c), i http://www.easysw.com/~mike/serial/index.html.

7. Porady

Jeśli zależy Ci na dobrej obsłudze analogowej transmisji I/O, możesz podłączyć do portu równoległego przetworniki analogowo-cyfrowe bądż cyfrowo-analogowe (ADC,DAC).(Podpowiedź: weż zasilanie z portu joysticka bądż z wolnej wtyczki zasilania dysku twardego wyprowadzonej na zewnątrz obudowy, chyba że masz urządzenie nie wymagające dużej mocy, wtedy możesz wziąść zasilanie z samego portu. Możesz też użyć zewnętrznego zasilacza.) Możesz też kupić kartę przetworników analogowo-cyfrowych i cyfrowo analogowych (AD/DA) (większość starszych/wolniejszych takich kart jest sterowana za pomocą portów I/O) Jeśli nie przeszkadza ci małą ilość kanałów (1 lub 2) niedokładność oraz (możliwe) złe zerowanie, dobra (i szybka) będzie tania karta dżwiękowa wspierana przez Linuxowy sterownik.

W czułych urządzeniach analogowych niewłaściwe uziemienie możę spowodować błędy na wejściach bądź wyjściach. Jeśli przytrafi Ci się coś takiego, możesz spróbować odizolować elektrycznie urządzenie od komputera przez użycie transoptorów (optocouplers) na wszystkich sygnałach pomiędzy Twoim urządzeniem a komputerem. Aby zapewnić lepszą izolację zasilanie do transoptorów spróbuj wziąść z komputera (wolne sygnały na porcie mogą dać wystarczającą ilość mocy)

Jeśli szukasz oprogramowania do projektowania płytek drukowanych na Linuxa to jest darmowa aplikacja która nazywa się Pcb i powinna sprawiać się dobrze, przynajmniej wtedy kiedy nie robisz czegoś bardzo skomplikowanego. Załączona jest ona do wielu dystrybucji Linuxa a dostępna na ftp://sunsite.icm.edu.pl/pub/Linux/sunsite/apps/circuits/ (plik pcb-*).

8. W razie kłopotów

P1.

Dostaje błąd segmentacji pamięci kiedy dobieram się do portów

O1.

Albo twój program nie ma uprawnień root'a bądź wywołanie ioperm() nie powiodło się z jakiegoś innego powodu. Sprawdź wartość powrotną funkcji ioperm(). Sprawdź również czy rzeczywiśćie operujesz na portach do których uzyskałeś dostęp za pomocą ioperm() (zobacz P3). Jeśli używasz makr opóźniających (inb_p(), outb_p(), itd), pamiętaj aby wywołać ioperm() również wtedy jeśli chcesz uzyskać dostęp do portu 0x80

P2.

Nie mogę nigdzie znaleść deklaracji funkcji in*(), out*() i gcc narzeka na niezdefiniowane referencje.

O2.

Nie kompilowałeś z włączoną optymalizacją (-O), i w ten sposób gcc nie mógł odnaleźć makr w katalogu asm/io.h. Albo nie włączyłeś w ogóle <asm/io.h> do swojego programu.

P3.

Wywołąnie out*() nie robi nic bądź robi coś dziwnego.

O3.

Sprawdź kolejność parametrów; powinno być outb(wartość, port), a nie outportb(port, wartość) co jest popularne w MS-DOS.

P4.

Chcę sterować standardowym urządzeniem RS-232/portem równoległym/drukarką/joystickiem

O4.

Lepiej będzie jak użyjesz istniejących sterowników z jądra, X serwera lub czegoś innego. Sterowniki te są zazwyczaj dosyć wszechstronne więc nawet lekko niestandardowe urządzenia z nimi współpracują. Zobacz wyżej informacje o zwykłych portach, są tam odnośniki do stosownej dokumentacji.

9. Przykładowy program

Oto kawałek prostego przykładowego programu demonstrującego dostęp do rejestrów I/O.


/*
 * example.c: bardzo prosty przykład dostępu do portów I/O
 *
 * Program ten nie robi nic użytecznego, zapisuje do portu, czeka i
 * odczytuje z portu. Kompilacja: gcc -O2 -o example example.c
 * Uruchamiac jako ./example będąc root'em
/ 

#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>

#define BASEPORT 0x378 /* lp1 */

int main()
{
  /* Uzyskaj dostęp do portów */
  if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);}
  
  /* Ustaw wszystkie bity danych (D0-D7) w stan niski (0) */
  outb(0, BASEPORT);
  
  /* Zaczekaj chwilkę (100 ms) */
  usleep(100000);
  
  /* Odczytaj z rejestru statusowego (BASE+1) i wyświetl rezultat */
  printf("status: %d\n", inb(BASEPORT + 1));

  /* Już nie potrzebujemy portów */
  if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);}

  exit(0);
}
/* koniec example.c */

10. Wyrazy uznania

Pomogło mi zbyt wiele osób aby je tutaj wszystkie wymienić, ale wszystkim bardzo dziękuję. Nie odpowiedziałem im wszystkim; przepraszam za to i jeszcze raz dzięki za pomoc.

11. Od tłumacza

Niniejsze tłumaczenie objęte jest prawami autorskimi Michała Szwaczko. Dozwolone jest rozpowszechnianie i dystrybucja na prawach takich samych jak dokument oryginalny.(Zobacz HOWTO-Copyright)

Zmiany wprowadzone przeze mnie do dokumentu polegają na zastąpieniu adresów niektórych serwerów ftp przez ich mirrory w Polsce.

Zdaję sobie sprawę że tłumaczenie nie jest wolne od wad i błędów. Jeśli znajdziesz jakieś, proszę napisz do mnie:
michalsz@lena.zsg.lublin.pl

Oficjalną stroną grupy tłumaczy HOWTO jest http://www.jtz.org.pl doc-linux-pl-2002.06.14.orig/mini/html/IP-Alias.pl.html0100664000175000017500000002340707104371340021135 0ustar covencoven IP Alias mini HOWTO

IP Alias mini HOWTO

Autor: Harish Pillay h.pillay@ieee.org
v?, 13 Stycznia 1997
Wersja polska: Leszek Urbański tygrys@fidonet.org.pl
v1.0, 5 Kwietnia 1998


Jak ustawić IP Aliasing na maszynie Linuxowej. Dodatkowo jest instrukcja, jak ustawić odbieranie poczty na aliasowanych numerach IP. Dokument został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://home.pacific.net.sg/ harish/linuxipalias.html.

1. Mój system

  1. Najnowsze jądro (2.0.27 - z ftp://ftp.funet.fi/pub/Linux/kernel/src/v2.0, ale IP Aliasing działa od 1.3.7x. (Najnowsze jądro w tej chwili to 2.0.33 - przyp. tłum.)
  2. IP Alias skompilowany jako moduł. W "make config" powinieneś zaznaczyć, że IP Masquerade powinien być skompilowany jako (M)oduł. Zobacz Modules HOWTO (jeżeli istnieje), lub sprawdź informacje w /usr/src/linux/Documentation/modules.txt.
  3. Muszę obsługiwać 2 dodatkowe adresy IP, powyżej tych, które zostały mi przydzielone.
  4. D-Link DE 620 pocket adapter (nie ważne, działa z każdym obsługiwanym przez Linuxa urządzeniem sieciowym).

2. Komendy

  1. Najpierw załaduj moduł IP Alias (możesz pominąć ten krok, jeżeli wkompilowałeś ten moduł w jądro):
    /sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o 
    

  2. Po drugie, ustaw pętlę zwrotną (loopback), eth0 i wszystkie numery IP zaczynając głównym numerem dla interfejsu eth0:
    /sbin/ifconfig lo 127.0.0.1
    /sbin/ifconfig eth0 up
    /sbin/ifconfig eth0 172.16.3.1 
    /sbin/ifconfig eth0:0 172.16.3.10
    /sbin/ifconfig eth0:1 172.16.3.100
    

    172.16.3.1 jest głównym IP, a .10 i .100 są aliasami. Magiczne polecenie to eth0:x, gdzie x=0,1,2,...n dla różnych numerów IP. Główny adres IP nie musi być aliasowany.
  3. Po trzecie, ustaw routing. Najpierw do pętli zwrotnej, potem do sieci, a na końcu do różnych adresów IP zaczynając domyślnym (pierwotnie przydzielonym):
    /sbin/route add -net 127.0.0.0 
    /sbin/route add -net 172.16.3.0 dev eth0
    /sbin/route add -host 172.16.3.1 dev eth0
    /sbin/route add -host 172.16.3.10 dev eth0:0
    /sbin/route add -host 172.16.3.100 dev eth0:1
    /sbin/route add default gw 172.16.3.200 
    

Koniec.

Jako przykładowe numery IP powyżej, używam Prywatnych numerów IP ( RFC 1918) dla zilustrowania przykładu. Zamień je na swoje oficjalne lub prywatne adresy IP.

Ten przykład zawiera tylko trzy numery IP. Maksymalna liczba, zdefiniowana w /usr/include/linux/net_alias.h, to 256. 256 adresów IP na JEDNEJ karcie to mnóstwo! :-)

Oto, jak wygląda mój /sbin/ifconfig:


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:5088 errors:0 dropped:0 overruns:0
          TX packets:5088 errors:0 dropped:0 overruns:0

eth0      Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
          inet addr:172.16.3.1  Bcast:172.16.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:334036 errors:0 dropped:0 overruns:0
          TX packets:11605 errors:0 dropped:0 overruns:0
          Interrupt:7 Base address:0x378 

eth0:0    Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
          inet addr:172.16.3.10  Bcast:172.16.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0
          TX packets:0 errors:0 dropped:0 overruns:0

eth0:1    Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
          inet addr:172.16.3.100  Bcast:172.16.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0
          TX packets:0 errors:0 dropped:0 overruns:0

i /proc/net/aliases:


device           family address                                
eth0:0           2      172.16.3.10                        
eth0:1           2      172.16.3.100

oraz /proc/net/alias_types:


type    name            n_attach
2       ip              2   

Oczywiście rzeczy w /proc/net były utworzone przez komendę ifconfig, a nie ręcznie!

3. Pytania i odpowiedzi

Pytanie: Jak mogę utrzymać zmiany, żeby nie uległy skasowaniu po restarcie systemu?

Odpowiedź: Jeżeli używasz init'a BSD lub System V (np. RedHat), możesz zawsze załączyć ustawienia w pliku /etc/rc.d/rc.local. Oto, co mam w moim systemie inicjalizującym (RedHat 3.0.3 i 4.0):

  1. Mój /etc/rc.d/rc.local: (skrócony, żeby pokazać odpowiednie części)
    #ustawiamy interfejsy aliasów IP
    echo "Ustawiam aliasy IP 172.16.3.1, 172.16.3.10, 172.16.3.100 ..."
    /sbin/ifconfig lo 127.0.0.1
    /sbin/ifconfig eth0 up
    /sbin/ifconfig eth0 172.16.3.1
    /sbin/ifconfig eth0:0 172.16.3.10
    /sbin/ifconfig eth0:1 172.16.3.100
    #ustawiamy routing
    echo "Ustawiam routing IP ..."
    /sbin/route add -net 127.0.0.0
    /sbin/route add -net 172.16.3.0 dev eth0
    /sbin/route add -host 172.16.3.1 eth0
    /sbin/route add -host 172.16.3.10 eth0:0
    /sbin/route add -host 172.16.3.100 eth0:1
    /sbin/route add default gw 172.16.3.200 
    #
    

Pytanie: Jak ustawić aliasowaną maszynę do odbierania e-maili na różne aliasowane numery IP (na maszynie używającej sendmail'a)?

  1. Odpowiedź: Utwórz (jeżeli nie istnieje) plik nazwany np. /etc/mynames.cw. Nie musi mieć takiej nazwy, nie musi być też w katalogu /etc.
  2. W tym pliku umieść oficjalne nazwy domen aliasowanych numerów IP. Jeżeli te IP nie mają domeny, możesz umieścić tu je same.
    /etc/mynames.cw:
    ----------------
    # /etc/mynames.cw - wpisz wszystkie aliasy twojej maszyny; # jest komentarzem.
    domain.one.net
    domain.two.com
    domain.three.org
    4.5.6.7
    

  3. W twoim pliku sendmail.cf, w miejscu definiującym makro klasy ,,Fw'', dodaj następujące dane:
    .
    .
    .
    ##################
    #   local info   #
    ##################
    .
    .
    # file containing names of hosts for which we receive email
    Fw/etc/mynames.cw
    .
    .
    .
    

  4. To powinno wystarczyć. Przestestuj nowe ustawienia przez wywołanie sendmaila w trybie testowym, np.:
    ganymede$ /usr/lib/sendmail -bt
    ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
    Enter < ruleset> < address>
    > 0 me@4.5.6.7
    rewrite: ruleset  0   input: me @ 4 . 5 . 6 . 7
    rewrite: ruleset 98   input: me @ 4 . 5 . 6 . 7
    rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 7
    rewrite: ruleset 97   input: me @ 4 . 5 . 6 . 7
    rewrite: ruleset  3   input: me @ 4 . 5 . 6 . 7
    rewrite: ruleset 96   input: me < @ 4 . 5 . 6 . 7 >
    rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 7 . >
    rewrite: ruleset  3 returns: me < @ 4 . 5 . 6 . 7 . >
    rewrite: ruleset  0   input: me < @ 4 . 5 . 6 . 7 . >
    rewrite: ruleset 98   input: me < @ 4 . 5 . 6 . 7 . >
    rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 7 . >
    rewrite: ruleset  0 returns: $# local $: me
    rewrite: ruleset 97 returns: $# local $: me
    rewrite: ruleset  0 returns: $# local $: me
    > 0 me@4.5.6.8
    rewrite: ruleset  0   input: me @ 4 . 5 . 6 . 8
    rewrite: ruleset 98   input: me @ 4 . 5 . 6 . 8
    rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 8
    rewrite: ruleset 97   input: me @ 4 . 5 . 6 . 8
    rewrite: ruleset  3   input: me @ 4 . 5 . 6 . 8
    rewrite: ruleset 96   input: me < @ 4 . 5 . 6 . 8 >
    rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 8 >
    rewrite: ruleset  3 returns: me < @ 4 . 5 . 6 . 8 >
    rewrite: ruleset  0   input: me < @ 4 . 5 . 6 . 8 >
    rewrite: ruleset 98   input: me < @ 4 . 5 . 6 . 8 >
    rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 8 >
    rewrite: ruleset 95   input: < > me < @ 4 . 5 . 6 . 8 >
    rewrite: ruleset 95 returns: me < @ 4 . 5 . 6 . 8 >
    rewrite: ruleset  0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 >
    rewrite: ruleset 97 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 >
    rewrite: ruleset  0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 >
    > 
    

    Zauważ, że kiedy testowałem adres me@4.5.6.7, dostarczył pocztę na maszynę lokalną, a me@4.5.6.8 było przekazane do mailera smtp. To jest poprawna odpowiedź.
  5. Wszystko jest teraz ustawione.

Mam nadzieję, że było to użyteczne dla kogoś.

4. Podziękowania

Dziękuję wszystkim, którzy zrobili tyle świetnej pracy nad Linuxen i IP Aliasingiem, a zwłaszcza Juanowi Jose Ciarlantowi za odpowiedzi na moje pytania. Podziękowania dla asów programowania!

Jeżeli ten dokument był dla ciebie użyteczny, lub masz jakieś sugestie o poprawkach, wyślij e-mail na h.pillay@ieee.org.

Baw się.

5. Od tłumacza (przeczytaj KONIECZNIE!)

Ten dokument był pierwotnie w formie htmlowej (dla niewtajemiczonych - tłumacze z JTZ piszą w SGML), zupełnie niedostosowanej do ,,standardu HOWTO'', więc pozwoliłem sobie go do niego dostosować, m.in. podzielić na sekcje.
Prawa autorskie tego tłumaczenia należą do tygrys@fidonet.org.pl. Jeżeli masz jakieś pytania lub poprawki dotyczące tego tłumaczenia, daj mi znać.

doc-linux-pl-2002.06.14.orig/mini/html/IP-Masquerade.pl.html0100664000175000017500000016527607104371340022206 0ustar covencoven Jak założyć maskowanie IP czyli IP-Masquerade.

Jak założyć maskowanie IP czyli IP-Masquerade.

Autor: Ambrose Au, ambrose@writeme.com
v1.20, 10 Listopada 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.0, 23 Września 1998


Dokument ten opisuje jak włączyć maskowanie IP na hoście linux-owym, pozwalając tym samym na dostęp do Internetu komputerom podłączonym do tego Linux-a i nie posiadającym własnego adresu IP.

1. Wprowadzenie.

Dokument ten opisuje jak włączyć maskowanie IP na hoście linux-owym, pozwalając tym samym na dostęp do Internetu komputerom podłączonym do tego Linux-a i nie posiadającym własnego adresu IP. Możliwe jest podłączenie tych komputerów do Linux-a poprzez Ethernet czy inne medium jak linie dzwonione ppp. Dokument ten skupi się na połączeniach Ethernet, ponieważ jest to najbardziej rozpowszechniony przypadek.

Dokument ten jest przeznaczony dla użytkowników jąder 2.0.x. Jądra w wersji rozwojowej NIE są opisane.

1.1 Słowo wstępne, komentarze & prawa.

Założenie maskowania na nowszych jądrach (tj. 2.x) będąc nowym użytkownikiem, jest trochę trudne moim zdaniem. Chociaż jest FAQ i lista dyskusyjna, nie ma żadnego specjalnie dla tego tematu przeznaczonego dokumentu; a pojawiają się na liście dyskusyjnej żądania o takowy. Tak więc zdecydowałem się napisać taki dokument jako punkt oparcia dla nowych użytkowników, i pewnie także coś dla doświadczonych użytkowników, którzy mogą go dalej rozbudowywać. Jeśli sądzisz, że nie robię tego źle, to nie bój się mi tego powiedzieć, jak mogę to zrobić lepiej.

Dokument ten jest w dużej mierze oparty o oryginalne FAQ napisane przez Kena Evesa i dużą liczbę pomocnych wiadomości z listy dyskusyjnej o maskowaniu IP. Specjalne podziękowania należą się Panu Matthew Driverowi, którego to list zainspirował mnie do zainstalowania maskowania IP i napisania tego.

Nie krępuj się napisać mi jakiekolwiek komentarze na adres ambrose@writeme.com, jeśli podaje jakieś błędne informacje lub jakiejś informacji brakuje. Wasze nieocenione komentarze na pewno wpłyną na przyszłość tego HOWTO!

To HOWTO ma być podręcznikiem pomocnym do jak najszybszego ustawienia maskowania IP. Ponieważ nie mam praktyki w pisaniu technicznych dokumentów, możesz stwierdzić, że informacje zawarte tutaj nie są takie ogólne i obiektywne jak powinny być. Najnowsze informacje można znaleźć na stronie Zasoby IP-Masquerade, którą prowadzę. Jeśli masz jakieś techniczne pytania na temat maskowania, dopisz się do listy dyskusyjnej zamiast wysyłać listy do mnie, ponieważ mój czas jest ograniczony oraz ci którzy rozwijają kod maskowania są bardziej kompetentni do odpowiedzi na te pytania.

Najnowsza wersja oryginału tego dokumentu znajduje się na stronie Zasoby IP Masquerade, gdzie są także wersje HTML i PostScript:

1.2 Prawa autorskie i zastrzeżenia.

Prawa autorskie należą do Ambrose Au (C) 1996 i jest to dokument wolnodostępny. Można go rozprowadzać na zasadach licencji GNU GPL.

Informacje i cała zawartość tego dokumentu są najlepsze o których wiem. Jednak maskowanie IP jest eksperymentalne i możliwe, że zrobię jakiś błąd. Tak więc powinieneś się zastanowić czy chesz stosować informacje z tego dokumentu.

Nikt nie jest odpowiedzialny za jakiekolwiek szkody czy zniszczenia wynikłe z używania informacji tutaj zawartych, tj:

AUTOR NIE JEST ODPOWIEDZIALNY ZA JAKIEKOLWIEK ZNISZCZENIA POWSTAŁE NA SKUTEK DZIAŁAŃ PODJĘTYCH NA PODSTAWIE INFORMACJI Z TEGO DOKUMENTU.

1.3 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@jtz.org.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany wprowadzone przez tłumacza:

2. Podstawowa wiedza.

2.1 Co to jest maskowanie IP.

Jest to funkcja sieciowa w fazie rozwoju w Linuksie. Jeśli na podłączonym do Internetu Linux-ie jest włączone maskowanie, to komputery łączące się z nim (czy to w tej samej sieci czy też przez modem) mogą także połączyć się z Internetem, pomimo iż nie mają swojego oficjalnego numeru IP.

Pozwala to grupom maszyn ukrytych za gateway-em, który wydaje się być jedynym komputerem łączącym się z Internetem, na niewidzialny dostęp do Internetu. Złamanie zabezpieczeń dobrze skonfigurowanego systemu maskowania powinno być trudniejsze od złamania dobrego firewall-a opartego na filtrowaniu pakietów (zakładając, że w obu nie ma błędów software'owych).

2.2 Obecny stan.

Maskowanie IP jest nadal w fazie eksperymentalnej. Jednak, jądra od wersji 1.3.x mają już wbudowaną obsługę. Wiele osób prywatnych jak i instytucji używa go z zadowalającym rezultatem.

Przeglądanie sici WWW oraz usługa telnet działają według zgłoszeń dobrze. FTP, IRC i słuchanie Real Audio działają po załadowaniu pewnych modułów. Inne systemy przekazu audio jak True Speech czy Internet Wave także działają. Niektórzy z listy dyskusyjnej próbowali nawet konferencji wideo. Po zaaplikowaniu najnowszej łaty ICMP działa także ping.

Dokładniejszą listę działającego oprogramowania znajdziesz w sekcji 4.3.

Maskowanie IP działa dobrze z klientami na kilku różnych systemach operacyjnych i platformach. Pozytywne przypadki odnotowano z Unix-em, Windows 95, Windows NT, Windows for Workgroups (z pakietem TCP/IP), OS/2, Macintosh System's OS z Mac TCP, Mac Open Transport, DOS z pakietem NCSA Telnet, VAX, Alpha z Linux-em i nawet Amiga z AmiTCP czy ze stosem AS225.

2.3 Kto może mieć korzyści z maskowania IP?

2.4 Kto nie potrzebuje maskowania IP?

2.5 Jak działa maskowanie IP?

Wzięte z IP-Maquerade FAQ autorstwa Kena Evesa:

   Oto rysunek przedstawiający najprostszy przypadek:
 
     SLIP/PPP         +------------+                         +-------------+
     do prowajdera    |  Linux     |       SLIP/PPP          |  Cokolwiek  |
    <---------- modem1|            |modem2 ----------- modem |             |
      111.222.333.444 |            |           192.168.1.100 |             |
                      +------------+                         +-------------+

   Na powyższym rysunku Linux z zainstalowanym i działającym
   maskowaniem jest połączony z Internetem poprzez SLIP lub PPP
   przez modem1. Ma on przypisany adres IP 111.222.333.444. Istnieje
   też możliwość połączenia się z nim poprzez łącze dzwonione
   SLIP/PPP przez modem2.
   
   Drugi system (który nie musi być Linux-em) wdzwania się do Linux-a
   i otwiera połączenie SLIP/PPP. NIE ma on przypisanego adresu IP w
   Internecie więc używa 192.168.1.100 (zobacz poniżej).
   
   Z poprawnie skonfigurowanymi maskowaniem IP i routing-iem
   Cokolwiek może połączyć się z Internetem jak gdyby rzeczywiście
   było podłączone (z kilkoma wyjątkami).

Cytat Pauline Middelink:
   Nie zapomnij wspomnieć, że Cokolwiek powinno mieć jako gateway
   Linux-a (czy to będzie domyślny routing czy tylko podsieć nie ma
   znaczenia). Jeśli Cokolwiek nie może tego zrobić, Linux powinien
   działać jako proxy arp dla wszystkich routowanych adresów, ale
   ustawianie proxy arp jest poza obszarem tego dokumentu.
   
   Następujące jest wyjątkiem z postu na grupie
   comp.os.linux.networking, który został poddany edycji, aby nazwy
   użyte w przykładzie powyżej pasowały:

   o Informuję Cokolwiek, że mój Linux ze SLIP-em jest jego gatewayem.
   o Kiedy nadejdzie do Linux-a pakiet z Cokolwiek, zostanie mu nadany
     nowy numer portu źródłowego oraz dodany adres Linux-a w nagłówku
     pakietu z zachowaniem oryginału. Potem Linux wyśle ten pakiet w
     świat przez SLIP/PPP.
   o Kiedy nadejdze do Linux-a pakiet ze świata, jeśli numer portu
     jest jednym z nadanych powyżej, zostanie nadany mu oryginalny port
     i adres IP i pakiet ten zostanie przesłany do Cokolwiek.
   o Host, który wysłał pakiet nigdy nie będzie widział różnicy.

Przykład Maskowania IP.

Oto typowy przykład:


    +----------+
    |          |  Ethernet
    | komp1    |::::::
    |          |2    :192.168.1.x
    +----------+     :
                     :   +----------+   łącze
    +----------+     :  1|  Linux   |    PPP
    |          |     ::::| masq-gate|:::::::::// Internet
    | komp2    |::::::   |          |
    |          |3    :   +----------+
    +----------+     :
                     :
    +----------+     :
    |          |     :
    | komp3    |::::::
    |          |4    
    +----------+  
                

    <-Sieć wewnętrzna->

W tym przykładzie są 4 komputrery, na których się skupiliśmy (najpewniej jest jeszcze coś daleko na prawo, przez co przechodzi twoje połączenie z Internetem, i jest coś (daleko poza stroną) w Internecie, z czym byś chciał się komunikować). Linux masq-gate jest gateway-em z maskowaniem dla wewnętrznej sieci złożonej z komp1, komp2 i komp3, które chcą się dostać do Internetu. Sieć wewnętrzna używa jednego z adresów do prywatnego użytku, w tym przypadku sieci klasy C 192.168.1.0, z Linux-em posiadającym adres 192.168.1.1 i innymi systemami posiadającymi adresy w tej sieci.

Trzy maszyny komp1, komp2 i komp3 (które, przy okazji, mogą być jakimkolwiek innym systemem rozumiejącym IP - jak np.: Windows 95, Macintosh MacTCP czy nawet kolejny Linux) mogą połączyć się z innymi maszynami w Internecie, jednak system maskowania masq-gate zamienia wszystkie ich połączenia, tak żeby wyglądały jakby pochodziły z masq-gate i zajmuje się tym, aby dane przychodzące spowrotem do połączenia maskowanego zostały przekazane do odpowiedniego systemu - tak więc systemy w wewnętrznej sieci widzą bezpośrednie połączenie z Internetem i są nieświadome, że ich dane są zmieniane.

2.6 Wymagania dla maskowania IP na Linuksie 2.x.

** Najnowsze informacje znajdziesz na stronie zasobów dla maskowania. Trudno jest często uaktualniać HOWTO.**

3. Ustawianie maskowania IP.

Jeśli twoja prywatna sieć zawiera jakieś ważne informacje, pomyśl trochę zanim zaczniesz korzystać z maskowania. Może to być twoja brama do Internetu, ale także brama do twojej sieci dla kogoś z zewnątrz.

3.1 Kompilacja jądra dla obsługi maskowania.

** Najnowsze informacje znajdziesz na stronie zasobów dla maskowanieu. Trudno jest często uaktualniać HOWTO.**

Uwaga: Możesz także załadować te moduły ręcznie przed użyciem ip_masq, ale NIE używaj do tego celu kerneld - to NIE będzi działać!

3.2 Przypisywanie adresów IP w prywatnej sieci.

Ponieważ wszystkie INNE maszyny nie mają przypisanych adresów, musi być jakiś poprawny sposób, aby nadać im takie adresy.

Z IP Masquerade FAQ:

Jest RFC (#1597) informujące które adresy IP mogą być używane w niepołączonych sieciach. Są 3 bloki przeznaczone do tego celu. Ten, którego używam to podsieci klasy C o adresach 192.168.1.n do 192.168.255.n.

Z RFC 1597:

Rozdział 3: Prywatna przestrzeń adresowa

IANA (Internet Assigned Numbers Authority) zarezerwowało następujące
trzy bloki przestrzeni adresów IP dla prywatnych sieci:

              10.0.0.0        -   10.255.255.255
              172.16.0.0      -   172.31.255.255
              192.168.0.0     -   192.168.255.255

Do pierwszego będziemy się odnosić jako "24-bitowy blok", do drugiego
jako "20-bitowy blok" i do trzeciego jako "16-bitowy blok". Zauważ, że
pierwszy blok to nic innego jak pojedynczy numer sieci klasy A,
podczas gdy drugi blok to ciągły blok 16. sieci klasy B i trzeci blok
to ciągły blok 255. sieci klasy C.

Tak więc, jeśli używasz sieci klasy C, powinieneś nadać swoim maszynom adresy 192.168.1.1, 1.92.168.1.2, 1.92.168.1.3, ..., 192.168.1.x.

192.168.1.1 to zwykle gateway, który jest Linux-em łączącym cię z Internetem. Zauważ, że 192.168.1.0 i 192.168.1.255, to odpowiednio adresy sieci i broadcast, które są zarezerwowane. Unikaj użycia tych adresów na twoich maszynach.

3.3 Konfiguracja INNYCH maszyn.

Oprócz ustawienia na każdej maszynie adresu IP, powinieneś także ustawić odpowiedni gateway. Ogólnie, jest to raczej proste. Po prostu wpisujesz adres swojego Linux-a (zwykle 192.168.1.1) jako adres gateway-a.

Jako DNS możesz wpisać jakikolwiek dostępny adres serwera DNS-u. Najlepiej ten sam, którego używa twój Linux. Możesz także dodać jakąkolwiek domenę do przeszukiwania.

Po tym jak skonfigurowałeś te adresy IP, nie zapomnij zrestartować odpowiednich serwisów lub systemów.

Następujące wskazówki konfiguracyjne zakładają, że używasz sieci klasy C, twój Linux ma adres 192.168.1.1. Pamiętaj, że 192.168.1.0 i 192.168.1.255 są zarezerwowane.

Konfiguracja windows 95.

  1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz.
  2. Przejdź do Panel Sterowania/Sieć.
  3. Dodaj protokół TCP/IP jeśli jeszcze go nie masz.
  4. We właściwościach TCP/IP przejdź do Adres IP i ustaw na 192.168.1.x (1 < x < 255) i wtedy ustaw Maskę podsieci na 255.255.255.0
  5. Dodaj 192.168.1.1 jako twój gateway w polu Gateway.
  6. W Konfiguracji DNS dodaj serwer DNS, którego używa twój Linux (zwykle jest w pliku /etc/resolv.conf). Opcjonalnie możesz dodać jakąś domenę do przeszukiwania.
  7. Pozostaw resztę ustawień w takim stanie w jakim są, chyba że wiesz co robisz.
  8. Kliknij OK we wszystkich okienkach i zrestartuj system.
  9. ping-nij Linux-a, aby sprawdzić połączenie sieciowe: Start/Uruchom, wpisz ping 192.168.1.1
    (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.)
  10. Możesz opcjonalnie stworzyć w katalogu windows plik HOSTS, żebys mógł używać nazw hostów (bez domeny) ze swojej sieci. W katalogu windows znajduje się przykład o nazwie HOSTS.SAM.

Konfiguracja Windows for Workgroups 3.11.

  1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz.
  2. Zainstaluj pakiet TCP/IP 32b jeśli jeszcze go nie masz.
  3. W Grupa główna/Ustawienia/Sieć kliknij Sterowniki.
  4. Podświetl Microsoft TCP/IP-32 3.11b w Sterownikach sieciowych, kliknij Ustawienia.
  5. Ustaw adres IP na 192.168.1.x (1 < x < 255), ustaw Maskę podsieci na 255.255.255.0 i domyślny gateway na 192.168.1.1
  6. Nie włączaj Automatycznej konfiguracji DHCP i nie wpisuj nic w wiersze WINS Server o ile jesteś w domenie Windows NT i wiesz co robisz.
  7. Kliknij DNS, wypełnij odpowiednie pola wymienione w kroku 6. w sekcji 3.3.1, potem kliknij OK.
  8. Kliknij Zaawansowane, zaznacz Włącz DNS dla Windows Name Resolution i Włącz sprawdzanie LMHOSTS jeśli używasz pliku z hostami, podobnie do kroku 10. w sekcji 3.3.1.
  9. Kliknij OK we wszystkich okienkach i zrestartuj system.
  10. tt/ping/-nij Linux-a, aby sprawdzić połączenie sieciowe: Start/Uruchomm wpisz ping 192.168.1.1
    (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.)

Konfiguracja Windows NT.

  1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz.
  2. Przejdź do Grupa główna/Panel sterowania/Sieć
  3. Dodaj protokół TCP/IP i powiązane składniki z menu Dodaj oprogramowanie jeśli nie masz jeszcze zainstalowanego serwisu TCP/IP.
  4. W sekcji Oprogramowanie sieciowe i karty sieciowe podświetl protokół TCP/IP w Zainstalowane oprogramowanie sieciowe.
  5. W Konfiguracji TCP/IP zaznacz odpowiednią kartę sieciową, np. [1]Novell NE2000 Adapter. Potem ustaw Adres IP na 192.168.1.x (1 < x < 255), ustaw Maskę podsieci na 255.255.255.0 i Domyślny gateway na 192.168.1.1.
  6. Nie włączaj Automatycznej konfiguracji DHCP i nie wpisuj nic w wiersze WINS Server o ile jesteś w domenie Windows NT i wiesz co robisz.
  7. Kliknij DNS, wypełnij odpowiednie pola wymienione w kroku 6. w sekcji 3.3.1, potem kliknij OK.
  8. Kliknij Zaawansowane, zaznacz Włącz DNS dla Windows Name Resolution i Włącz sprawdzanie LMHOSTS jeśli używasz pliku z hostami, podobnie do kroku 10. w sekcji 3.3.1.
  9. Kliknij OK we wszystkich okienkach i zrestartuj system.
  10. tt/ping/-nij Linux-a, aby sprawdzić połączenie sieciowe: Start/Uruchomm wpisz ping 192.168.1.1

Konfiguracja systemów unix-owych.

  1. Jeśli nie masz zainstalowanej swojej karty ani skompilowanego odpowiedniego sterownika, zrób to teraz.
  2. Zainstaluj TCP/IP, jak np. pakiet nettols, jeśli jeszcze tego nie zrobiłeś.
  3. Ustaw IPADDR na 192.168.1.x (1 < x < 255), ustaw NETMASK na 255.255.255.0, GATEWAY na 192.168.1.1 i BROADCAST na 192.168.1.255.
    Np. możesz zmodyfikować plik /etc/sysconfig/network-scripts/ifcfg-eth0 w dystrybucji Red Hat, albo po prostu zrób to w Control Panel-u.
    (inaczej postępuje się w SunOS, BSDi, Slckware Linux, itd.)
  4. Dodaj serwer DNS i domenę do przeszukiwania w /etc/resolv.conf.
  5. W zależności od twoich ustawień możesz też uaktualnić /etc/networks.
  6. Zrestartuj odpowiednie serwisy albo po prostu zrestartuj system.
  7. Wydaj polecenie ping: ping 192.168.1.1, aby sprawdzić połączenie do gateway-a.
    (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.)

Konfiguracja DOS-a z pakietem NCSA Telnet.

  1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz.
  2. Załaduj odpowiedni sterownik. Dla karty NE2000 wydaj polecenie nwpd 0x60 10 0x300, jeśli karta jest ustawiona na IRQ=10 i adres I/O=0x300.
  3. Stwórz nowy katalog i rozpakuj pakiet NCSA Telnet,; pkunzip tel2308b.zip.
  4. Zmodyfikuj plik config.tel.
  5. Ustaw myip=192.168.1.x (1 < x < 255) i netmask=255.255.255.0.
  6. W tym przykładzie powinieneś ustawić hardware=packet, interrupt=10, ioaddr=60
  7. Powinieneś mieć przynajmniej jedną maszynę ustawioną jako gateway, tj. Linux-a:
    name=default
    host=twój.linux
    hostip=192.168.1.1
    gateway=1
    
  8. Kolejna pozycja to DNS:
    name=dns.domena.pl ; hostip=123.123.123.123; nameserver=1
    
    Uwaga: zamień powyższe informacje na poprawne dla ciebie.
  9. Zapisz plik config.tel
  10. Połącz się poprzez telnet z Linux-em, aby sprawdzić połączenie telnet 192.168.1.1

Konfiguracja MacOS z MacTCP.

  1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić.
  2. Otwórz MacTCP control panel. Wybierz odpowiedni sterownik sieci (Ethernet, NIE EtherTalk) i kliknij przycisk More....
  3. W Obtain Address kliknij Manually.
  4. W IP Address wybierz Class C z listy. Zignoruj resztę ustawień w tym okienku.
  5. Wypełnij odpowiednie informacje w Domain name Service information.
  6. W Gateway Address wpisz 192.168.1.1.
  7. Kliknij OK, aby zachować ustawienia. W głównym okienku MacTCP control panel wpisz adres IP swojego Mac-a (192.168.1.x, 1 < x < 255) w wierszu IP Address.
  8. Zamknij MacTCP control panel. Jeśli pojawi się okienko sugerujące restart systemu - zrób tak.
  9. Możesz opcjonalnie ping-nąć Linux-a, aby sprawdzić połączenie. Jeśli masz program freeware'owy MacTCP Watcher, kliknij na przycisk Ping i wpisz adres swojego Linux-a (192.168.1.1) w okienku, które się pojawi. (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.)
  10. Opcjonalnie możesz także stworzyć plik Hosts w System Folders, żeby używać tylko nazw hostów bez domeny w swojej sieci lokalnej. Plik powinien się już znajdować w System Folders i powinien zawierać kilka (zakomentowanych) przykładowych pozycji, które możesz zmodyfikować na swoje potrzeby.

Konfiguracja systemów MacOS z Open Transport.

  1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić.
  2. Otwórz TCP/IP Control Panel i wybierz User Mode ... z menu Edit. Sprawdź czy user mode jest ustawiony conajmniej na Advanced i kliknij OK.
  3. Wybierz Configuration ... z menu File. Zaznacz konfigurację Default i kliknij Duplicate .... Wpisz "Ip masq" (lub coś co zaznaczy, że jest to specjalna konfiguracja) w okienku Duplicate Configuration, prawdopodobnie będzie tam coś jak Default Copy. Potem kliknij OK i Make Active.
  4. Zaznacz Ethernet z okienka Connect via.
  5. Zaznacz odpowiednią pozycję na liście Configure. Jeśli nie wiesz którą opcję wybrać, prawdopodobnie powinieneś wybrać ponownie konfigurację Default i wyjść. Ja używam Manually.
  6. Wpisz adres IP swojego Mac-a (192.168.1.x, 1 < x < 255) w okienku IP Address.
  7. Wpisz 255.255.255.0 w okienku Subnet mask.
  8. Wpisz 192.168.1.1 w okienku Router address.
  9. Wpisz adresy IP swoich serwerów DNS w okienku Name server addr.
  10. Wpisz swoją domenę Internetową (np. microsoft.com) w okienku Starting domain name w wierszu Implicit Search Path:.
  11. Następujące procedury są opcjonalne. Niepoprawne wartości mogą powodować złe zachowanie. Jeśli nie jesteś pewien, to lepiej je zostawić puste, niezaznaczone i/lub niewybrane. Usuń wszelkie informacje z tych pól, jesli jest to konieczne. O ile wiem, to nie ma sposobu, żeby zabronić poprzez okienka TCP/IP systemowi używania poprzednio wybranego alternatywnego pliku "Hosts". Jeśli wiesz coś na ten temat, to jestem zainteresowany.
    Zaznacz 802.3 jeśli twoja sieć wymaga ramek 802.3.
  12. Kliknij Options..., aby upewnić się, że TCP/IP jest aktywne. Ja używam opcji Load only when needed. Jeśli uruchomisz i wyłączysz aplikację TCP/IP wiele razy bez restartowania maszyny, może się okazać, że odznaczenie opcji Load only when needed zredukuje zapotrzebowanie na pamięć w twojej maszynie. Z niezaznaczoną tą opcją stosy TCP/IP są zawsze ładowane i dostępne do użytku. Jeśli jest zaznaczona, stosy TCP/IP są ładowane automatycznie kiedy są potrzebne i usuwane z pamięci kiedy już nie są potrzebne. To właśnie ten proces ładowania/usuwania może sfragmentować twoją pamięć.
  13. Możesz ping-nąć Linux-a, aby sprawdzić połączenie sieciowe. Jeśli masz program freeware'owy MacTCP Watcher, kliknij na przycisk Ping i wpisz adres swojego Linux-a (192.168.1.1) w okienku, które się pojawi. (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.)
  14. Opcjonalnie możesz także stworzyć plik Hosts w System Folders, żeby używać tylko nazw hostów bez domeny w swojej sieci lokalnej. Plik może, ale nie musi, już się znajdować w System Folders. Jeśli jest, to powinien zawierać kilka (zakomentowanych) przykładowych pozycji, które możesz zmodyfikować na swoje potrzeby. Jeśli go nie ma, możesz pobrać kopię z systemu z MacTCP, albo po prostu stworzyć swój własny (składnia jest taka jak w unix-owym /etc/hosts. Opisane to jest na stronie 33. w RFC 1035). Jeśli już stworzyłeś taki plik, otwórz TCP/IP control panel, kliknij Select Hosts File ... i otwórz plik Hosts.
  15. Kliknij Close lub Quit z menu File i potem kliknij Save, aby zachować zmiany, które zrobiłeś.
  16. Zmiany będa uwzględnione natychmiast, ale restart systemu nie zaszkodzi.

Konfiguracja sieci Novell z DNS-em.

  1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić.
  2. Zciągnij plik tcpip16.exe z adresu ftp.novell.com.
  3. Zmodyfikuj c:\nwclient\startnet.bat. Oto kopia mojego:
    SET NWLANGUAGE=ENGLISH
    LH LSL.COM
    LH KTC2000.COM
    LH IPXODI.COM
    LH tcpip
    LH VLM.EXE
    F:
    
  4. Zmodyfikuj c:\nwclient\net.cfg (zmień Link Driver na swój):
    Link Driver KTC2000
            Protocol IPX 0 ETHERNET_802.3    
            Frame ETHERNET_802.3     
            Frame Ethernet_II        
            FRAME Ethernet_802.2
    
    NetWare DOS Requester
               FIRST NETWORK DRIVE = F
               USE DEFAULTS = OFF
               VLM = CONN.VLM
               VLM = IPXNCP.VLM
               VLM = TRAN.VLM
               VLM = SECURITY.VLM
               VLM = NDS.VLM
               VLM = BIND.VLM
               VLM = NWP.VLM
               VLM = FIO.VLM
               VLM = GENERAL.VLM
               VLM = REDIR.VLM
               VLM = PRINT.VLM
               VLM = NETX.VLM
    
    Link Support
            Buffers 8 1500
            MemPool 4096
    
    Protocol TCPIP
            PATH SCRIPT     C:\NET\SCRIPT
            PATH PROFILE    C:\NET\PROFILE
            PATH LWP_CFG    C:\NET\HSTACC
            PATH TCP_CFG    C:\NET\TCP
            ip_address      xxx.xxx.xxx.xxx
            ip_router       xxx.xxx.xxx.xxx
    
  5. i na końcu stwórz c:\bin\resolv.cfg.
    SEARCH DNS HOSTS SEQUENTIAL
    NAMESERVER 207.103.0.2
    NAMESERVER 207.103.11.9
    
  6. Mam nadzieję, że to pomoże niektórym podłączyć ich sieci Novell. Konfiguracja jest poprawna dla NetWare 3.1x i 4.x

Konfiguracja OS/2 Warp.

  1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić.
  2. Zainstaluj protokół TCP/IP jeśli jeszcze go nie masz.
  3. Przejdź do Programms/TCP/IP (LAN) / TCP/IP.
  4. W Network dodaj swój adres TCP/IP i ustaw maskę sieci (255.2555.255.0).
  5. W Routing wciśnij Add. Ustaw Type na default i wpisz w polu Router Address adres swojego Linux-a. (192.168.1.1).
  6. Ustaw w polu Hosts ten sam adres DNS, którego używa twój Linux.
  7. Zamknij TCP/IP control panel. Odpowiedz yes na pojawiające się pytania.
  8. Zrestartuj system.
  9. Możesz ping-nąć Linux-a, aby sprawdzić konfigurację sieci. W oknie OS/2 Command prompt wpisz ping 192.168.1.1. Jeśli pakiety ping-a przychodzą wszystko jest w porządku.

Konfigurowanie innych systemów.

Powinno się to robić podobnie. Sprawdź poprzednie punkty. Jeśli jesteś zainteresowany opisaniem konfiguracji w jakimkolwiek systemie, to wyślij szczegółowe instrukcje na adres ambrose@writeme.com.

3.4 Konfiguracja zasad forwardingu IP.

W tym momencie, powinieneś mieć zainstalowane jądro wraz ze wszystkimi potrzebnymi pakietami, jak również załadowane moduły. Także adresy IP, gateway-a i DNS-u na INNYCH maszynach powinny być ustawione.

Teraz jedyne co pozostało, to użycie ipfwadm, aby przekazywać odpowiednie pakiety odpowiednim maszynom.

** Można to zrobić na wiele róznych sposbów. Poniższe sugestie i przykłady działały u mnie, ale ty możesz mieć inne pomysły. Więcej szczegółów znajdziesz w rozdziale 4.4 i na stronie podręcznika systemowego o ipfwadm. **

ipfwadm -F -p deny 
ipfwadm -F -a m -S yyy.yyy.yyy.yyy/x -D 0.0.0.0/0 

gdzie x jest jednym z poniższych adresów w zależności od klasy twojej sieci, a yyy.yyy.yyy.yyy jest adresem twojej sieci:

Maska           | x  | Podsieć
~~~~~~~~~~~~~~~~|~~~~|~~~~~~~~~~~~~~~
255.0.0.0       | 8  | Klasa A
255.255.0.0     | 16 | Klasa B
255.255.255.0   | 24 | Klasa C
255.255.255.255 | 32 | Point-to-point

Na przykład jeśli jestem w posieci klasy C, wpisałbym:

ipfwadm -F -p deny 
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 

Ponieważ pakiety bootp przychodzą z poprawnym IP kiedy klient jeszcze nic na temat adresu IP nie wie, dla tych którzy używają serwera bootp w maszynach z maskowaniem czy firewall-ingiem konieczne jest użycie poniższego polecenia przed poleceniem z deny:

ipfwadm -I -a accept -S 0/0 68 -D 0/0 67 -W bootp_clients_net_if_name -P udp

Możesz to także zrobić dla każdej maszyny osobno. Na przykład jeśli chcę, żeby maszyny 192.168.1.2 i 192.168.1.8 miały dostęp do Internetu, a inne nie, to wpisałbym:

ipfwadm -F -p deny 
ipfwadm -F -a m -S 192.168.1.2/32 -D 0.0.0.0/0 
ipfwadm -F -a m -S 192.168.1.8/32 -D 0.0.0.0/0 

Opcjonalnie możesz wpisać maskę podsieci zamiast wartości: 192.168.1.0/255.255.255.0.

Popularnym błędem jest umieszczanie jako pierwszego polecenia:

ipfwadm -F -p masquerade

Nie czyń maskowania domyślną zasadą - jeśli tak zrobisz, ktoś kto może manipulować swoim routingiem, będzie w stanie stworzyć tunel bezpośrednio poprzez twój gateway, aby ukryć swoją tożsamość!

Możesz dodać te linie do plików /etc/rc.local, do jakiegoś innego pliku rc.*, lub robić to ręcznie za każdym razem kiedy potrzebujesz maskowania.

Szczegóły na temat ipfwadm znajdziesz w rozdziale 4.4.

3.5 Testowanie maskowania.

Nadszedł czas, żeby wypróbować to wszystko po ciężkiej pracy. Upewnij się, że Linux jest podłączony do Internetu.

Możesz spróbować posurfować po INTERNECIE!!! na swoich INNYCH maszynach i sprawdzić czy się uda. Za pierwszym razem radzę, użyć adresu IP zamiast nazwy kanonicznej, ponieważ twoje ustawienia DNS mogą być niepoprawne.

Na przykład możesz sprawdzić stronę projektu JTZ (http://www.jtz.org.pl/) podając jako adres http://156.17.40.40/.

Jeśli ujrzysz ją, to gratulacje! Działa! Możesz teraz spróbować podać nazwę kanoniczną, potem telnet, ftp, Real Audio, True Speech i co tam jeszcze jest obsługiwane przez maskowanie ... .

Jak dotąd nie mam problemów z powyższymi ustawieniami i jest to w pełni zasługa ludzi, którzy poświęcają swój czas, aby ta wspaniała właściwość działała.

4. Inne sprawy związane z maskowaniem IP i obsługa oprogramowania.

4.1 Problemy z maskowaniem IP.

Niektóre protokoły nie będą obecnie działały z maskowaniem, ponieważ albo zakładają pewne fakty na temat numerów portów, albo kodują dane na temat adresów i portów w swoich strumieniach - te drugie potrzebują specyficznych proxies wbudowanych w kod maskowania, aby działały.

4.2 Wchodzące serwisy.

Maskowanie nie potrafi w ogóle obsługiwać takich serwisów. Jest kilka sposobów, aby takowe działały, ale są one zupełnie nie związane z maskowaniem i są częścią standardowego działania firewall-i.

Jeśli nie wymagasz wysokiego poziomu bezpieczeństwa, to możesz po prostu przekierować porty. Są różne sposoby, aby to zrobić - ja używam zmodyfikowanego kodu programu redir (który mam nadzieję będzie dostępny wkrótce z sunsite i jego kopii). Jeśli chcesz mieć jakiś poziom autoryzacji połączeń wchodzących, to możesz użyć albo TCP wrappers albo Xinetd "powyżej" redir w wersji 0.7 lub nowszej, aby wpuszczać tylko konkretne adresy IP, albo użyj jakichś innych narzędzi. TIS Firewall Toolkit jest dobrym miejscem, w którym możesz poszukać narzędzi i informacji.

Więcej informacji znajdziesz na stronie z zasobami dla maskowania IP.

4.3 Obsługiwane oprogramowanie klienckie i uwagi o innych ustawieniach.

** Nastepującą listą nikt się już nie zajmuje. Zajrzyj na tę stronę, aby dowiedzieć się które aplikacje działają poprzez maskowanie na Linux-ie. Więcej informacji także na stronie z zasobami dla maskowania IP. **

Ogólnie aplikacja, która używa TCP/UDP powinna działać. Jeśli masz jakieś sugestie, wskazówki lub pytania, na temat aplikacji z maskowaniem IP, odwiedź tę stronę prowadzoną przez Lee Nevo.

Oprogramowanie, które działa.

Ogólne:

HTTP

wszystkie obsługiwane platformy, surfowanie po sieci

POP & SMTP

wszystkie obsługiwane platformy, klienci e-mail

Telnet

wszystkie obsługiwane platformy, zdalne logowanie

FTP

wszystkie obsługiwane platformy, z modułem ip_masq_ftp.o (nie wszystkie adresy działają z pewnymi klientami; np. do niektórych nie można się dostać przy pomocy ws_ftp32, ale działa z Netscape)

Archie

wszystkie obsługiwane platformy, szukanie plików (nie wszytkie wersje oprogramowania są obsługiwane)

NNTP (USENET)

wszystkie obsługiwane platformy, klient USENET NEWS

VRML

Windows (przypuszczalnie wszystkie obsługiwane platformy), surfowanie po wirtualnej rzeczywistości.

traceroute

głównie platformy na UNIX-ie, niektóre wersje mogą nie działać

ping

wszystkie platformy, z łatą ICMP

wszystko oparte o IRC

wszystkie obsługiwane platformy, z modułami ip_masq_irc.o

klient Gopher

wszystkie obsługiwane platformy

klient WAIS

wszystkie obsługiwane platformy

Klienci Multimedialni:

Real Audio Player

Windows, network streaming audio z załadowanym modułem ip_masq_raudio

True Speech PLayer 1.1b

Windows, network streaming audio

Internet Wave Player

Windows, network streaming audio

Worlds Chat 0.9a

Windows, program Client-Server 3D do pogawędek

Alpha Worlds

Windows, program Client-Server 3D do pogawędek

Internet Phone 3.2

Windows, komunikacja audio Peer-to-peer, można się z tobą porozumieć tylko jeśli zainicjowałeś połączenie, ale nie można zadzwonić do ciebie

Powwow

Windows, komunikacja na bazie tablic (ogłoszeniowych), można się z tobą porozumieć jeśli zainicjowałeś połączenie; nie można się do ciebie dodzwonić

CU-SeeMe

, wszystkie obsługiwane platformy, z załadowanymi modułami cuseeme; szczegóły znajdziesz na stronie z zasobami dla maskowania IP.

VDOLive

Windows, z łatą vdolive

Uwaga: Niektóre programy, jak IPhone i Powwow mogą działać nawet jeśli to nie ty zaincjowałeś połączenie poprzez użycie pakietu ipautofw. Zobacz w rozdziale 4.6.

Inni klienci:

NCSA Telnet 2.3 08

DOS, pakiet zawierający telnet, ftp, ping, itp.

PC-anywhere for Windows 2.0

MS-Windows, zdalna kontrola PC poprzez TCP/IP, działa tylko jeśli jest klientem a nie hostem.

Socket Watch

używa ntp - protokół czasu w sieci

pakiet net-acct w Linux-ie

Linux, pakiet do zarządzania i monitorowania sieci.

Oprogramowanie nie działające.

Intel Internet Phone Beta 2

Łączy się, ale głos wędruje tylko w jedną stronę (na zewnątrz)

Intel Streaming media Viewer beta 1

Nie może połączyć się z serwerem

Netscape CoolTalk

Nie może połączyć się z drugą stroną

talk, ntalk

nie będą działać - wymagają napisania proxy dla jądra

WebPhone

W tej chwili nie może działać (robi złe założenia na temat adresów)

X

Nietestowane, ale sądze, że nie może działać o ile ktoś stworzy proxy dla X, który jest prawdopodobnie osobnym programem dla kodu maskowania. Jednym ze sposobów, aby to działało jest użycie ssh jako połączenia i użycie wewnętrznego proxy X.

Przetestowane platformy/systemy operacyjne jako INNE maszyny.

4.4 Administracja Firewall-em IP (ipfwadm)

Rozdział ten pogłębia wiedzę na temat stosowania polecenia ipfwadm.

Poniżej jest ustawienie dla system z maskowaniem/firewalling-iem, z łączem PPP i statycznymi adresami PPP. Zaufanym interfejsem jest 192.168.255.1, interfejs PPP został zmieniony, aby chronić winnych :). Każdy wchodzący i wychodzący interfejs jest podany osobno, aby wychwycić spoofing IP jak i zatkany (stuffed) routing i/lub maskowanie. Wszystko co nie jest wyraźnie dozwolone jest zabronione!

#!/bin/sh
#
# /etc/rc.d/rc.firewall, define the firewall configuration, invoked from
# rc.local.
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin

# testowanie, poczekaj trochę, potem wyczyść wszystkie regułki.
# odkomentuj poniższe linie jeśli chcesz wyłączyć firewall
# automatycznie po 10. minutach.
# (sleep 600; \
# ipfwadm -I -f; \
# ipfwadm -I -p accept; \
# ipfwadm -O -f; \
# ipfwadm -O -p accept; \
# ipfwadm -F -f; \
# ipfwadm -F -p accept; \
# ) &

# Wchodzące, wyczyść i ustaw domyślną regułkę na zabronione. Właściwie
# domyślna regułka jest nieodpowiednia, ponieważ zrobiliśmy inną: nie
# wpuszczaj nikogo i loguj wszystko.
ipfwadm -I -f
ipfwadm -I -p deny
# interfejs i maszyny lokalne mogą się dostać wszędzie
ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0
# interfejs odległy, twierdzący, że jest od nas, spoofing IP, nie
# wpuszczaj
ipfwadm -I -a deny -V twój.stały.adres.PPP -S 192.168.0.0/16 -D 0.0.0.0/0 -o
# interfejs odległy, jakiekolwiek źródło, jeśli celem jest stały adres
# PPP, to wpuść
ipfwadm -I -a accept -V twój.stały.adres.PPP -S 0.0.0.0/0 -D twój.stały.adres.PPP/32
# interfejs loopback (lo) jest w porządku
ipfwadm -I -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0
# wychwyć wszystko, każdy inny ruch wchodzący jest zabroniony i
# logowany, szkoda, że nie ma opcji logowania, ale to robi to samo.
ipfwadm -I -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o

# Wychodzące, wyczyść i ustaw domyślną regułkę na zabronione. Właściwie
# domyślna regułka jest nieodpowiednia, ponieważ zrobiliśmy inną: nie
# wpuszczaj nikogo i loguj wszystko.
ipfwadm -O -f
ipfwadm -O -p deny
# interfejs lokalny, wszystko z zewnątrz do nas jest w porządku
ipfwadm -O -a accept -V 192.168.255.1 -S 0.0.0.0/0 -D 192.168.0.0/16
# wychodzące do lokalnej sieci na zdalnym interfejsie, stuffed
# routing, odrzuć
ipfwadm -O -a deny -V twój.statyczny.adres.PPP -S 0.0.0.0/0 -D 192.168.0.0/16 -o
# wychodzące z lokalnej sieci na zdalnym interfejsie, stuffed
# masquerading, odrzuć
ipfwadm -O -a deny -V twój.statyczny.adres.PPP -S 192.168.0.0/16 -D 0.0.0.0/0 -o
# wychodzące z lokalnej sieci na zdalnym interfejsie, stuffed
# masquerading, odrzuć
ipfwadm -O -a deny -V twój.statyczny.adres.PPP -S 0.0.0.0/0 -D 192.168.0.0/16 -o
# wszystko inne wychodzące na zdalnym interfejsie jest w porządku
ipfwadm -O -a accept -V twój.statyczny.adres.PPP -S twój.statyczny.adres.PPP/32 -D 0.0.0.0/0
# interfejs lokalny (lo) jest w porządku
ipfwadm -O -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0
# wychwyć wszystko, każdy inny ruch wychodzący jest zabroniony i
# logowany, szkoda, że nie ma opcji logowania, ale to robi to samo.
ipfwadm -O -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o

# Przekazywanie, wyczyść i ustaw domyślną regułkę na zabronione. Właściwie
# domyślna regułka jest nieodpowiednia, ponieważ zrobiliśmy inną: nie
# wpuszczaj nikogo i loguj wszystko.
ipfwadm -F -f
ipfwadm -F -p deny
# maskuj z lokalnej sieci na lokalnym interfejsie dokądkolwiek
ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0
# wychwyć wszystko, każdy inny ruch jest zabroniony i
# logowany, szkoda, że nie ma opcji logowania, ale to robi to samo.
ipfwadm -F -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o

Możesz blokować ruch do poszczególnego adresu przy pomocy opcji -I, -O i -F. Pamiętaj, że regułki są skanowane od góry w dół i -a oznacza "dodaj" do już istniejących regułek, tak więc wszelkie szczegółowe regułki muszą pojawić się przed zasadami ogólnymi. Na przykład (nietestowane):

Użycie opcji -I. Przypuszczalnie najszybsze rozwiązanie, ale zatrzymuje tylko lokalne maszyny, firewall jako taki, ma nadal dostęp do zabronionych adresów. Oczywiście możesz dopuścić taką kombinację.

... początek regułek -I ...
# odrzuć i loguj lokalny interfejs i lokalne maszyny próbujące dostać
# się do 204.50.10.13
ipfwadm -I -a reject -V 192.168.255.1 -S 192.168.0.0/16 -D 204.50.10.13/32 -o
# lokalny interfejs i maszyny dokądkowiek jest w porządku
ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0
... koniec regułek -I ...

Użycie opcji -O. Najwolniejsze ponieważ pakiety najpierw przechodzą przez maskowanie, ale ta regułka zatrzymuje nawet firewall przed dostępem do zabronionych adresów.

... początek regułek -O ...
# odrzuć i zaloguj wychodzące do 204.50.10.13
ipfwadm -O -a reject -V twój.statyczny.adres.PPP -S twój.statyczny.adres.PPP/32 -D 204.50.10.13/32 -o
# wszystko inne wychodzące na odległym interfejsie jest w porządku.
ipfwadm -O -a accept -V twój.statyczny.adres.PPP -S twój.statyczny.adres.PPP/32 -D 0.0.0.0/0
... koniec regułek -O ...

Użycie opcji -F. Prawdopodobnie wolniejsze niż -I i wciąż zatrzymuje tylko maszyny zamaskowane (tj. wewnętrzne), firewall ma nadal dostęp do zabronionych adresów.

... początek regułek -F ...
# odrzuć i zaloguj  z lokalnej sieci na interfejsie PPP do
# 204.50.10.13
ipfwadm -F -a reject -W ppp0 -S 192.168.0.0/16 -D 204.50.10.13/32 -o
# maskuj z lokalnej sieci na lokalnym interfejsie dokądkolwiek
ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0
... koniec regułek -F ...

Nie ma potrzeby na specjalną regułkę, aby pozwolić na ruch z 192.168.0.0/16 do 204.50.11.0; jest to zapewnione przez regułki ogólne.

Jest więcej niż jeden sposób ujęcia interfejsów w powyższych regułkach. Na przykład zamiast -V 192.168.255.1 możesz wpisać -W eth0; zamiast -V twój.statyczny.adres.PPP możesz użyć -W ppp0. Prywatny wybór i dokumentacja, to więcej niż cokolwiek innego.

4.5 Maskowanie IP i dzwonienie na żądanie.

  1. Jeśli chciałbyś tak ustawić swoją sieć, aby połączyć się z Internetem automatycznie, to narzędzie diald - dzwonienie na żądanie - będzie swietnym pakietem.
  2. Aby ustawić diald, zajrzyj na stronę Ustawianie Diald dla linux-a.
  3. [Od tłumacza] Możesz tez zajrzeć do Diald mini HOWTO (dostępne w j. polskim).
  4. Jak już ustawisz diald i maskowanie IP, możesz podejść do którejkolwiek z maszyn klienckich i zainicjować połączenie WWW, telnet lub FTP.
  5. Diald wychwyci nadchodzące żądanie, zadzwoni do prowajdera i ustawi połączenie.
  6. Przy pierwszym połączeniu pojawi się przerwa. Jest to nieuniknione jeśli używasz analogowych modemów. Czas, który jest potrzebny do ustawienia połączenia modemów i PPP, spowoduje, że twój program kliencki stwierdzi rozłączenie. Można tego uniknąć jeśli używasz modemów ISDN. Wszystko co musisz zrobić, to przerwać bieżący proces na kliencie i ponowić go.

4.6 Pakiet do przekazywania IPautofw.

IPautofw jest programem do ogólnie pojętego przekazywania pakietów TCP i UDP w Linux-ie. Żeby użyć pakietu, który wymaga transmisji UDP trzeba załadować specyficzny moduł ip_masq - ip_masq_raudio, ip_masq_cuseeme, itd. Ipautofw odgrywa bardziej ogólną rolę; będzie on przekazywał każdy rodzaj ruchu włącznie z tym, którego nie przepuszczą moduły specyficzne dla danej aplikacji. Jeśli zarządza się tym programem niepoprawnie można stworzyć dziurę w bezpieczeństwie.

5. Różności.

5.1 Zdobywanie pomocy.

** Proszę SPRÓBUJ NIE wysyłać do mnie listów na temat problemów z maskowaniem IP. Z powodu ilości własnych zajęć nie mogę obiecać, że odpowiem na wszystkie listy nie związane ze stroną WWW. Zamiast tego ślij proszę takie listy na listę dyskusyjną o maskowaniu IP (sądzę, że jest to najlepsze źródło pomocy). Przepraszam za to, ale nie chcę abyś czekał tygodniami na odpowiedź.

5.2 Podziękowania.

5.3 Odwołania.

doc-linux-pl-2002.06.14.orig/mini/html/LILO.pl.html0100664000175000017500000002255707104371340020342 0ustar covencoven Lilo mini-HOWTO

Lilo mini-HOWTO

Cameron Spitzer, cls@truffula.sj.ca.us
Wersja polska: Bartosz Maruszewski B.Maruszewski@zsmeie.torun.pl
v1.12, 26 Lipca 1997


Ten plik opisuje niektóre typowe instalacje LILO. Został on napisany jako dodatek do dokumentacji LILO. Sądze, że przykłady są pożyteczne nawet jeśli twoje ustawienia nie są podobne do moich. Mam nadzieję, że zaoszczędzi ci to kłopotów. Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl.

1. Różne instalacje LILO.

1.1 Przykład 1.

Mam dwa dyski IDE i jeden dysk SCSI. Dysku SCSI nie widać w BIOS-ie. LILO używa BIOS-owych odwołań i widzi tylko te dyski, które widzi także BIOS. Mój głupi AMI BIOS może wystartować tylko z "A:" lub "C:". Mój główny system plików jest na partycji na dysku SCSI.

Rozwiązanie:
Zapisz jądro, plik z odwzorowaniem (map file) i chain loader na partycji Linux-owej na pierwszym dysku IDE. Zauważ, że nie potrzebne jest, aby trzymać jądro na swojej partycji z głównym systemem plików.

Druga partycja na moim pierwszym dysku IDE (/dev/hda2) jest zamontowana na /u2.

Oto mój plik /etc/lilo.conf:


   # Zainstaluj rekord startowy LILO w Master Boot Record
   # na pierwszym dysku IDE.
   #
   boot = /dev/hda
   # /sbin/lilo (instalator) kopiuje rekord startowy LILO z następującego
   # pliku do MBR.
   install = /u2/etc/lilo/boot.b
   #
   # Napisałem swoje menu startowe. LILO je tam znajduje.
   message = /u2/etc/lilo/message
   # Instalator stworzy następujący plik.
   # Mówi on programowi ładującemu, gdzie znajduje się jądro.
   # 
   map = /u2/etc/lilo/map
   compact
   prompt
   #  Zaczekaj 10 sekund, a potem załaduj jądro 1.2.1 jako domyślne
   timeout = 100
   # Jądro jest zapisane tam, gdzie BIOS je zobaczy poleceniem:
   #   cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1
   image = /u2/z1.2.1
           label = 1.2.1
   # LILO informuje jądro, aby zamontowało pierwszą partycję dysku SCSI
   # jako główny system plików.
   # BIOS nie musi jej widzieć.
           root = /dev/sda1
   # Ta partycja będzie sprawdzona i ponownie zamontowana przez /etc/rc.d/rc.S
           read-only
   # Temu samemu jądru można przekazać, aby zmontowało inną partycję
   # jako główny system plików. Mam awaryjną konfigurację na /u2.
   image = /u2/z1.2.1
           label = 1.2.1-hda2
           root = /dev/hda2
           read-only
   # Trzymałem stare jądro ze Slackware w razie gdybym stworzył
   # jakieś nie działające nowe jądro. Właściwie potrzebowałem tego
   # jeden raz.
   image = /u2/z1.0.9
           label = 1.0.9
           root = /dev/sda1
           read-only
   #  Moja partycja DR-DOS-a 6
   other = /dev/hda1
           loader=/u2/etc/lilo/chain.b
           label = dos
           alias = m

1.2 Przykład 2.

System w moim biurze ma jeden dysk IDE 1GB. BIOS może widzieć tylko pierwsze 504 MB dysku IDE. (Gdzie MB oznacza 2^10 bajtów a nie 10^6 bajtów.) Tak więc mam MS-DOS na partycji 350 MB /dev/hda1 i główny system plików Linux-a na partycji 120 MB /dev/hda.

MS-DOS nie był w stanie się poprawnie zainstalować kiedy dysk był jeszcze świeży. Novell DOS 7 miał te same problemy. Na szczęście dla mnie, "Options by IBM" zapomnieli włożyć dysietki "OnTrack" do pudełka z dyskiem. Dysk miał przyjść z produktem zwanym "OnTrack Disk Manager". Jeśli tylko masz MS-DOS-a, sądze, że musisz tego użyć.

A więc zrobiłem tablicę partycji Linux-owym fdisk-iem. MS-DOS 6.2 nie chciał się zainstalować na /dev/hda1. Pisał coś jak:

'this release of MS-DOS is for new installations. Your computer already has MS-DOS [co było nieprawdą, bo dysk był czysty] so you need to get an upgrade release from your dealer.'

Co za palant! Uruchomiłem Linux-owego fdisk-a jeszcze raz i skasowałem parytcję pierwszą z tablicy partycji. To zadowoliło MS-DOS-a 6.2, który stworzył dokładnie tę samą partycję pierwszą, którą właśnie skasowałem i zainstalował się. MS-DOS 6.2 zapisał swój Master Boot Record na dysk, ale nie mógł wystartować.

Na szczęście miałem jądro ze Slackware na dyskietce (zrobioną przez program instalacyjny Slackware "setup"), wystartowałem Linux-a i zapisałem LILO na zepsuty MBR DOS-a. To działa.

Oto plik /etc/lilo.conf jakiego użyłem:


   boot = /dev/hda
   map = /lilo-map
   delay = 100
   ramdisk = 0             # Wyłącza ramdisk w jądrze Slackware
   kernel
   timeout = 100
   prompt
   disk = /dev/hda         # BIOS widzi tylko pierwsze 500 MB.
      bios=0x80            # podaje pierwszy dysk IDE.
      sectors = 63         # weź te liczby z dokumentacji twojego
      heads= 16            #    dysku twardego
      cylinders = 2100
   image = /vmlinuz
     append = "hd=2100,16,63"  # To jest opcjonalne.
     root = /dev/hda2
     label = linux
     read-only
     vga = extended
   other = /dev/hda1
     label = msdos
     table = /dev/hda
     loader = /boot/chain.b

   ## koniec

Po tym, jak zainstalowałem te systemy, stwierdziłem, że partycja zawierająca zImage, boot.p, map, chain.b i plik z komunikatami może używać systemu plików msdos, tak długo dopóki nie jest potraktowana "stacker-em" czy "doublespace-m". Tak więc mogłem zrobić partycję DOS-ową na /dev/hda1 o poj. 500 MB.

Dowiedziałem się także, że "OnTrack" zapisałby tablicę partycji poczynając od kilku tuzinów bajtów od początku dysku, zamiast zacząć na samym początku dysku, i że jest możliwe tak przerobić sterownik Linux-owy do IDE, żeby sobie poradził z tym problemem. Ale instalacja z prekompilowanym jądrem ze Slackware nie byłaby możliwa. Ostatecznie IBM przysłał mi dyskietkę "OnTrack". Zadzwoniłem do serwisu technicznego "OnTrack". Powiedzieli, że Linux jest popsuty, bo nie używa BIOS-u. Oddałem im dyskietkę spowrotem.

1.3 Przykład 3

Potem zainstalowałem Windows 95 w moim biurze. Rozwaliły mój ładny LILO MBR w pył, ale zostawiły moją partycję Linux-ową w spokoju. Jądra długo się ładują z dyskietek, więc zrobiłem dyskietkę z działającym na niej ustawieniem LILO, która mogła startować moje jądro z dysku IDE.

W ten sposób stworzyłem dyskietkę LILO:


     fdformat /dev/fd0H1440     #  utwórz ścieżki na dyskietce
     mkfs /dev/fd0 1440         #  utwórz na niej stsem plików minix
     mkdir /3                   #  stwórz katalog, żeby ją zamontować
     mount /dev/fd0 /3          #  zamontuj dyskietkę
     cp -p /boot/chain.b /3     #  przekopiuj chain loader
     lilo -C /etc/lilo.flop     #  zainstaluj LILO i mapę systemu na dyskietce
     umount /3                  # odmontuj dyskietkę

Zauważ, że DYSKIETKA MUSI BYĆ ZAMONTOWANA KIEDY URUCHAMIASZ NA NIEJ INSTALATORA tak, żeby LILO mogło zapisać swoją mapę prawidłowo.

Oto plik /etc/lilo.flop. Jest prawie identyczny z poprzednim:


   #  Tworzy dyskietkę, która może ładować jądra z dysku twardego.
   boot = /dev/fd0
   map = /3/lilo-map
   delay = 100
   ramdisk = 0     # Wyłącza ramdisk w jądrze ze Slackware
   timeout = 100
   prompt
   disk = /dev/hda        # Dysk 1 GB, BIOS widzi tylko 500 MB
      bios=0x80
      sectors = 63
      heads = 16
      cylinders = 2100
   image = /vmlinuz
     append = "hd=2100,16,63"
     root = /dev/hda2
     label = linux
     read-only
     vga = extended
   other = /dev/hda1
     label = msdos
     table = /dev/hda
     loader = /3/chain.b

   ## koniec

Ostatecznie, potrzebowałem MS-DOS-a 6.2 w moim systemie biurowym, ale nie chciałem dotykać pierwszego dysku. Dodałem kontroler SCSI i dysk, stworzyłem na nim Linux-owym mkdosfs-em plik systemów msdos i Windows 95 widzi to jako "D:". Ale oczywiście MS-DOS nie wystartuje z "D:". To nie jest problem jeśli masz LILO. Dodałem:


   other = /dev/sda1
     label = d6.2
     table = /dev/sda
     loader = /boot/any_d.b

do lilo.conf z przykładu 2. MS-DOS 6.2 działa i myśli, że jest na"C:" a Windows 95 jest na "D:".

1.4 Od tłumacza.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@zsmeie.torun.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl/pub/Linux/JTZ/

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/Leased-Line.pl.html0100664000175000017500000003555607104371340021670 0ustar covencoven Leased Line Mini-HOWTO

Leased Line Mini-HOWTO

Autor: Rob van der Putten rob@sput.webster.nl
v1.4, 5 Lipca 1998
Wersja polska: Leszek Urbański tygrys@fidonet.org.pl
v1.0, 6 Sierpnia 1998


To HOWTO opisuje połączenie Linuxa do linii dzierżawionej. Ten dokument został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://www.sput.webster.nl/~rob/leased-line.html.

1. Wprowadzenie

1.1 Co to jest linia dzierżawiona

Linią dzierżawioną jest każde stałe połączenie dwóch punktów (point-to-point, dalej będę nazywał je p-t-p, nie mylić z ppp - przyp. tłum.), dzierżawione od firmy telekomunikacyjnej lub innej organizacji. Linia dzierżawiona składa się z przewodów, takich jak skrętka, kabel koncentryczny lub światłowód; może też zawierać wszystkie rodzaje dodatkowego osprzętu, jak rdzenie, transformatory, wzmacniacze i regeneratory.

Ten dokument opisuje

Konfigurację modemu i pppd do użycia dwużyłowej linii dzierżawionej na skrętce.
Ten dokument NIE opisuje
SLIP, pobierania i instalowania pppd, synchronicznego przesyłania danych i modemów pasma podstawowego (baseband)

1.2 Założenia

Zakładam, że masz już działającego pppd. Potrzebny będzie też Minicom lub podobny program do konfiguracji modemów.

2. Modem

Linia dzierżawiona nie jest podłączona do centrali telefonicznej, nie zapewnia więc napięcia stałego, sygnału wybierania lub zajętości, ani dzwonka. Znaczy to, że twoje modemy będą musiały same poradzić sobie z tą sytuacją.

Powinieneś mieć dwa identyczne zewnętrzne modemy obsługujące linię dzierżawioną i ,,głuchy'' tryb pracy. Upewnij się, że twoje modemy naprawdę to potrafią! Twój modem powinien posiadać też odpowiednią dokumentację. Potrzebne będą też:

2.1 Konfiguracja modemu

Ogólna uwaga o konfiguracji modemu i liniach inicjalizujących:
Konfiguruj swoje oprogramowanie modemowe takie jak minicom lub (m)getty tak, żeby używało najwyższej możliwej prędkości - 57600 bodów dla 14.400 i 115200 bodów dla 28.800 lub szybszych.
Wiele ludzi używa bardzo długich i skomplikowanych linii inicjalizujących, często zaczynających się AT&F i zawierających mnóstwo komend specyficznych dla danego modemu. Jest to niepotrzebne. Większość programów używa takich samych ustawień modemu, a więc czemu nie zapisać tych ustawień do nieulotnej pamięci modemu i używać ,,ATZ'' do inicjalizacji modemu we wszystkich programach? W ten sposób można zamienić lub rozszerzyć modemy bez rekonfiguracji oprogramowania.

Większość programów wymaga następujących ustawień:

Sprawdź te ustawienia za pomocą AT&V lub AT&I[numer] (przeczytaj dokumentację modemu).

Ustawienia te nie są identyczne do profilu firmowego (&F), a więc używanie linii inicjalizującej z AT&F nie jest dobrym pomysłem. Dobrą rzeczą jest użycie AT&F tylko wtedy, gdy masz powód żeby sądzić, że ustawienia zapisane w nieulotnej pamięci modemu są bardzo niepoprawne. Jeżeli sądzisz, że znalazłeś odpowiednie ustawienia dla twoich modemów, zapisz je w pamięci nieulotnej komendą AT&W i przetestuj dokładnie protokołem Z-Modem zarówno dla plików tekstowych ASCII, jak i binarnych. Konfiguruj twoje modemy do linii dzierżawionej tylko jeżeli masz pewność, że te ustawienia działają idealnie.

Dowiedz się, jak przestawić twój modem w ,,głuchy'' tryb, oraz, co ważniejsze, w tryb linii dzierżawionej - modem może być rekonfigurowany tylko wtedy, gdy nie znajduje się w ,,głuchym'' trybie. Upewnij się, czy napewno ustawiłeś modemy na największą możliwą prędkość. Kiedy modem wejdzie w ,,głuchy'' tryb pracy, będzie ignorował wszystkie komendy ,,AT'' - z tego powodu nie będzie można ustawić jego szybkości do tej ustawionej dla portu szeregowego; będzie używał prędkości skonfigurowanej komendami AT (prędkość ta jest zapisana w rejestrze S komendą AT&W).

Teraz skonfiguruj modemy w następujący sposób:

Zapisz konfigurację do nieulotnej pamięci (&W).

2.2 Test

Podłącz modemy do dwóch komputerów używając przewodów RS232 i połącz ze sobą modemy za pomocą kabla RJ11. Użyj programu takiego jak Minicom (na Linuxa), procom albo telix (DOS) na obu komputerach, żeby sprawdzić modemy. Powinieneś zobaczyć tekst pisany na jednym komputerze w drugim terminalu i odwrotnie. Jeżli widzisz śmieci, sprawdź prędkość portu i inne ustawienia. Teraz odłącz i podłącz ponownie przewód RJ11. Poczekaj, aż połączenie ponownie się ustali. Odłącz i podłącz ponownie kable RS232, wyłącz i włącz modemy, uruchom ponownie minicoma. Modemy powinny zawsze połączyć się ponownie na najwyższej możliwej prędkości (niektóre modemy mają diody pokazujące prędkość). Sprawdź, czy modemy naprawdę ignorują znak ESC (+++). Jeżeli będzie to potrzebne, wyłącz znak ESC.

Jeżeli to wszystko działa, możesz rekonfigurować modemy: wyłącz dźwięk w zdalnym modemie (M0) i ustaw niski poziom głośności w modemie lokalnym (L1).

2.3 Przykłady

Hi-Tech

Lokalnie:

ATL1&C1&D3&L2%D1&W&W1
Zdalnie:
ATM0&C1&D3&L2%D1S0=1&W&W1

Tron DF

Znak ESC powinien być wyłączony za pomocą komendy S2 > 127;

Lokalnie:

ATL1&L1Q1&C1&D3S2=171\D1&W
Zdalnie:
ATM0&L2Q1&C1&D3S0=1S2=171\D1&W

US Robotics Courier V-Everything

Poniższa sekcja jest oparta na informacjach dostarczonych przez Rolf'a Raar'a.
USR Sportster i USR Courier-I nie obsługują linii dzierżawionych. Potrzebna będzie wersja Courier V-everything. Na serwerze USR znajduje się strona ,,wyjaśniająca'' jak skonfigurować Courier'a do linii dzierżawionej. Jednakże jeżeli będziesz postępował zgodnie z tymi wskazówkami, skończysz z modemem kompletnie ,,pozbawionym rozumu'', który nie będzie mógł być kontrolowany lub nadzorowany przez pppd.

USR Courier może być konfigurowany przez przełączniki DIP, jednakże najpierw musisz podać mu linię inicjalizacyjną. Po pierwsze, upewnij się, że używa prawidłowego profilu fabrycznego. Inaczej niż większość innych modemów ma ich trzy: &F0, &F1, &F2. Standardowy, którego powinieneś używać, to &F1. Uwaga: jeżeli wyślesz mu AT&F, załaduje &F0! Dla resetowania przy DTR, ustaw bit 0 rejestru S13. Znaczy to, że musisz ustawić S13 na 1. Następnie musisz przestawić go w tryb linii dzierżawionej za pomocą &L1: ATS13=1&L1&W
Przełączniki dip powinny być w domyślnych ustawieniach, wyjątkiem są:

3 - WYŁ - Wyłączyć kody wynikowe.

4 - ZAŁ - Wyłączyć komendy offline

5 - ZAŁ dla lokalnego, WYŁ dla zdalnego

8 - WYŁ - ,,Głuchy'' tryb pracy

3. PPPD

Potrzebny ci będzie pppd (Point to Point Protocol Daemon) i odpowiednia wiedza o jego działaniu. Przeczytaj odpowiednie RFC i Linux PPP HOWTO, jeżeli jest to potrzebne. Ponieważ nie będziesz używał procedury logowania, nie musisz używać (m)getty ani (fałszywego) użytkownika skojarzonego z pppd kontrolującym połączenie. Nie będziesz musiał wybierać numeru, nie będą więc potrzebne żadne skrypty chat. Obwód modemowy i konfiguracja, którą właśnie wykonałeś jest właściwie kablem null-modem. Znaczy to, że będziesz musiał skonfigurować pppd w sposób, w jaki konfigurowałbyś go do kabla null-modem.

Dla dobrego połączenia, twoje ustawienia powinny spełniać następujące wymogi:

Zakładam, że modem jest podłączony do COM2, lokalny adres IP to ,,Loc_IP'', a zdalny to ,,Rem_Ip''. Chcemy użyć 576 jako nasze MTU. /etc/ppp/options.ttyS1 powinno wyglądać tak:

crtscts
mru 576
mtu 576
passive
Loc_Ip:Rem_Ip
-chap
modem
-pap
persist

A więc, jeżeli system lokalny to 192.168.1.1, a system zdalny to 10.1.1.1, /etc/ppp/options.ttyS1 powinien wyglądać następująco:

crtscts
mru 576
mtu 576
passive
192.168.1.1:10.1.1.1
-chap
modem
-pap
persist

options.ttyS1 na zdalnym systemie powinien wyglądać tak:

crtscts
mru 576
mtu 576
passive 10.1.1.1:192.168.1.1
-chap
modem
-pap
persist

Opcja passive limituje numer (ponownych) połączeń. Opcja persist będzie próbowała trzymać pppd uruchomionym w razie rozłączenia, lub jeżeli nie będzie mógł odrazu się połączyć. Jeżeli telnetujesz się dużo podczas transferu plików (FTP lub przeglądanie WWW), możesz użyć mniejszego MTU i MRU, takiego jak 296. System zdalny będzie wtedy czujniejszy. Jeżeli nie będziesz telnetował się podczas FTP, może ustawić MTU i MRU na 1500.

3.1 Skrypty

Uruchamianie pppd i utrzymywanie go w działaniu

Skrypt /usr/local/sbin/PRem_Host.sh poniżej startuje pppd. Musisz uruchomić go po skonfigurowaniu portów szeregowych (zamień Rem_Host na nazwę zdalnego systemu).

#!/bin/bash
# Opcjonalnie sleep
#/usr/bin/sleep 30
( /usr/sbin/pppd /dev/ttyS1 115200 ) &

Może on być uruchamiany ze skryptu konfigurującego kartę sieciową (/etc/init.d/network w systemie Debian), w tym przypadku musisz odkomentować sleep, żeby być pewnym, że porty com zostały skonfigurowane jako pierwsze. Jeżeli używasz setserial, możesz uruchomić go z tego skryptu. Innym sposobem jest uruchomienie go z rc.local. W systemach Debian istnieje katalog /etc/rc.boot/. Według Rolf'a Raar'a, skrypty w tym katalogu są uruchamiane w kolejności alfabetycznej. Skrypt setserial nazywa się 0setserial. Jeżeli wywołasz swój skrypt z pliku o nazwie 2linie-dzierżawione, będzie wykonany po 0setserial.

Chociaż opcja persist czyni to powierzchownym, pppd może być też restartowany przez ip-down:

#! /bin/bash
case $s in
     /dev/ttyS1)
          /usr/bin/sleep 30
          /usr/local/sbin/PRem_Host.sh &
          ;;
esac

Jeżeli pppd zginie, powinien być restartowany opcją w skrypcie ip-up (opcjonalnie). Jeżeli to się nie dzieje, skrypt /usr/local/sbin/test-Rem_Host-ppp robi to za ciebie. Ten skrypt sprawdza, czy zdalny interfejs istnieje - jeżeli nie, spróbuje uruchomić pppd:


#!/bin/bash
if ! ( /sbin/ifconfig | grep Rem_Ip > /dev/null )
then
     # PPP nie żyje
     logger "Rem_Host PPP nie żyje! ; uruchomiony ponownie"
     /usr/local/sbin/PRem_Host.sh &
fi

Następująca linia w crontab uruchamia powyższy skrypt co 5 minut. Możesz uruchamiać skrypt częsciej, ale ja nie uruchamiałbym go częściej niż co dwie minuty.

*/5 * * * *        /usr/local/sbin/test-Rem_Host-ppp

Możesz edytować crontab poleceniem ,,crontab -e''. Zrestartuje on crona po edycji. Używa edytora podanego w zmiennej środowiskowej ,,EDITOR'', która może być ustawiona przez /etc/profile lub  /.profile (export EDITOR=Twoj_Ulubiony_Edytor).

Niektórzy ludzie uruchamiają pppd z /etc/inittab, ale ja nigdy tego nie testowałem.

Ustawianie routingu

Domyślny routing może zostać ustawiony opcją defaultroute, albo przez skrypt /etc/ppp/ip-up:

#! /bin/bash
case $2 in
     /dev/ttyS1)
          /sbin/route add -net 0.0.0.0 gw Rem_Ip netmask 0.0.0.0
          ;;
esac

Ip-up może być też używany do synchronizacji zegara używając netdate.

Oczywiście routing ustawiony w ip-up nie musi być domyślnym routingiem. Twoj skrypt ip-up ustawia routing do zdalnej sieci, kiedy ip-up w zdalnym systemie ustawia trasę do twojej sieci. Jeżeli jest nią 192.168.1.0, a interfejsem ppp jest 192.168.1.1, skrypt ip-up na zdalnej maszynie powinien wyglądać podobnie do tego:

#!/bin/bash
case $2 in
   /dev/ttyS1)
   /sbin/route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0
   ;;
esac

Bity ,,case $2'' i ,,/dev/ttyS1'' są tam na wypadek gdybyś używał więcej niż jednego połączenia ppp. Ip-up będzie uruchamiany za każdym razem kiedy pojawi się połączenie, ale tylko część pomiędzy ,,/dev/ttySx'' i ,,;;'' zostanie wykonana, ustawiając poprawny routing dla poprawnego ttyS. Możesz dowiedzieć się więcej o routingu z sekcji o routingu NET-3-HOWTO.

3.2 Testowanie

Przetestuj to wszystko tak jak modemy. Jeżeli działa, wsiądź na rower i przewieź modem na drugą stronę połączenia.

4. Od tłumacza

Jeżeli znajdziesz jakieś błędy, daj mi znać. doc-linux-pl-2002.06.14.orig/mini/html/Linux+DOS+Win95.pl.html0100664000175000017500000001113207104371340022215 0ustar covencoven Linux Linux+DOS+Win95 mini-HOWTO

Linux Linux+DOS+Win95 mini-HOWTO

Alan L. Wendt alan@ez0.ezlink.com
v1.0, 10 Września 1996
Wersja polska: Grzegorz Nalepa nalepa@ibm.uci.agh.edu.pl
v1.0, 4 Stycznia 1998


Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem : ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/mini . Dokument opisuje jak startować Linux'a, DOS i Windows 95 z jednego twardego dysku, używając LILO.

1. Opis Zagadnienia.

W95 i DOS nie działają poprawnie jeżeli więcej niż jedna partycja jest ustawiona jako "aktywna", jest więc konieczne aby program startujący aktywował ich partycję, przed startem systemu, oraz dezaktywował pozostałe partycje. W95 i DOS z jakiegoś powodu zmieniajś nazwy partycji, na urządzeniu z którego zostały wystartowane tak, że system zawsze jest na dysku C. Na przykład : jeżeli zainstaluje się DOS na partycji E głównego dysku, to po wystartowaniu go będzie się zdawało, że jest na dysku C.

1.1 Krok 1.

Użyj fdisk-u w Linux-e lub programu Partition Magic, by założyć trzy partycje na dysku. Zainstaluj W95 na jednej, DOS na drugiej, używając (na przykład) polecenia format /s c: , a Linux-a na trzeciej. Jeżeli na początku masz tylko jedną partycję (DOS-u) na dysku, to Partition Magic bez problemu podzieli ją na trzy. FIPS zrobi to również i to za darmo, lecz jest nieco trudniejszy w obsłudze.

1.2 Krok 2.

Zdobądź plik lilo.17.tar.gz, który, do Sierpnia 1996, był jedyną wersją potrafiącą zmieniać flagę aktywnej partycji przed wystartowaniem systemu. Kopia tego pliku jest dostępna pod adresem : ftp://ftp.ezlink.com/pub/lilo.17.tar.gz. Skompiluj i zainstaluj program ze zdefiniowaną opcją REWRITE_TABLE w pliku Makefile.

1.3 Krok3.

Wpisz do pliku /etc/lilo.conf kod podobny do tego poniżej i uruchom /sbin/lilo, aby uaktualnić MBR (MasterBootRecord) dysku.



    boot = /dev/sda
    compact
    delay = 5           # opcjonalne, dla systemów startujących bardzo szybko
    vga = normal        # wymuszenie rozsądnego stanu
    ramdisk = 0         # paranoiczna opcja
    root = current      # użyj aktualnego głównego systemu plików

    image = /vmlinuz.1.3.97
      append = "aha1542=0x230 ro"
      label = linux

    other = /dev/sda1
      table = /dev/sda
      rewrite-table
      label = dos

    other = /dev/sda2
      table = /dev/sda
      rewrite-table
      label = w95


Od Tłumacza - krótkie uaktualnienie.

Od chwili gdy powstał oryginalny dokument upłynęło dużo czasu.
Bardziej aktualne informacje mogą być w pokrewnych mini-HOWTO z cyklu Linux+*. Polecam również podręcznik systemowy "man" : lilo(8) i lilo.conf(5) oraz doskonały podręcznik znajdujący się w dystrybucji lilo. Jeżeli zainstalowałeś lilo z dystrybucji Linux'a, to Manual ten powinieneś prawdopodobnie znaleźć w katalogu /usr/doc/lilo*.
Aktualna, na Grudzień 1997, wersja lilo to lilo-20, dostępna w Polsce np. pod adresem : ftp://ftp.icm.edu.pl/pub/Linux/sunsite.unc.edu/system/boot/lilo

Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Grzegorza Nalepy. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeżeli znalazłeś jakiekolwiek błędy ortograficzne, gramatyczne lub inne językowe, to są one wyłącznie moją zasługą. Napisz do mnie nalepa@ibm.uci.agh.edu.pl pełen krytyki list , a postaram się je jak najszybciej usunąć. Tłumaczenia mojego autorstwa znajdziesz na mojej stronie WWW: http://ibm.uci.agh.edu.pl/~nalepa

Projekt JTZ, czyli polskie tłumaczenia dokumentów HOWTO ma oficjalną stronę WWW : http://www.jtz.org.pl. Tam znajdziesz wszystkie przetłumaczone dokumenty, oraz informacje o samym Projekcie.

doc-linux-pl-2002.06.14.orig/mini/html/Linux+NT-Loader.pl.html0100664000175000017500000002201707104371340022412 0ustar covencoven NT OS Loader + Linux mini-JTZ

NT OS Loader + Linux mini-JTZ

Bernd Reicher, reichert@dial.eunet.ch
v1.11, 2 Wrzesień 1997
Wersja polska: Michał Malarski, malarz@it.pw.edu.pl
v1.0, 15 Listopada 1997


Dokument ten opisuje użycie boot loader-a z Windows NT do uruchamiania Linux-a. To rozwiązanie zostało przetestowane z Windows NT 4.0 WS i Linux 2.0.

1. Jak pracuje NT OS Loader

NT OS loader chciałby mieć sektor startowy z innego dostępnego systemu operacyjnego w pliku. Czyta ten plik i startuje wybrany system operacyjny, n.p. albo Windows NT w innym trybie inny dowolny system operacyjny.

2. Wskazówki jak zainstalować Windows NT i Linux-a na jednym Komputerze

2.1 Instalacja Windows NT

Spróbój najpierw zainstalowć Windows NT. Jeżeli chcesz używać NTFS dla twojej własnej partycji Windows NT, pamiętaj, że dzisiejsza wersja Linux-a nie umożliwia dostępu do partcji NTFS. Sterownik w wersji alfa mogący czytać partycje NTFS jest dostępny w http://www.informatik.hu-berlin.de/~loewis/ntfs. Możesz utworzyć oddzielną parycję FAT do wymiany danych lub będziesz musiał używać dyskietek w formacie DOS.

2.2 Podział dysku na partycje

Inny dokument mini-HOWTO nie poleca używania "Disk Administrator-a" systemu NT do stworzenia partycji wymiany i partycji głównej systemu plików Linux-a. Wystarczy pozostawić na dysku wolne miejsce. Polecam użycie później Linux-owego fdisk-a.

2.3 Instalacja Linux-a

Teraz wystartuj system linux z dyskietek, utwórz partycję wymiany i główną partycję systemu plików. Fdisk pokaże partycję NTFS jako partcję HPFS. Jest to normalne. Ponownie wystartuj system z dyskietek i zainstaluj Linux-a tak jak chcesz.

Tylko w przypadku gdy procedura instalacyjna zaproponuje, że możesz zamontować partycję HPFS, którą znalazła: Zignoruj to.

2.4 Lilo

Kiedy dojdziesz do sekcji Lilo, wskaż twoją główną partycję systemu plików Linux-a jako urządzenie startowe ponieważ Master Boot Record (MBR) twojego dysku jest w posiadaniu Windows NT. To znaczy, że pozycja root i pozycja boot w twoim /etc/lilo.conf powinny mieć takie same wartości. Jeżeli posiadasz dysk IDE i twoją partycją Linux-ową jest druga partcja, twoja pozycja boot w pliku /etc/lilo.conf wygląda następująco:


      boot=/dev/hda2

Jeżeli posiadasz dwa dyski i twój Linux znajduje się na pierwszej partycji twojego drugiego dysku, twoja pozycja boot w pliku /etc/lilo.conf wygląda następująco:


      boot=/dev/hdb1

Uruchom lilo z jądrem, które pasuje do twojego systemu. Sprawdź jądro startując je najpierw z dyskietki jeżeli nie jesteś pewien.

Jeżeli nie możesz teraz załadowwać Windows NT, to masz problem. Mam nadzieję, że stworzyłeś ostatnio dyskietkę retunkową.

3. Program bootpart

Istnieje program NT nazwany bootpart napisany przez G. Vollant-a, który może wykonać robotę z dwóch następnych punktów za ciebie. Bootpart jest dostępny z: http://ourworld.compuserve.com/homepages/gvollant/bootpart.htm.

Jeżeli chcesz wiedzieć jak wszystko wspólpracuje razem, użyj procedury opisnaej w punktach 4 i 5.

4. Część pracy w Linux-ie

Musisz startować system z dyskietek aż NT nie będzie przygotowane.

Teraz musisz zrzucić sektor startowy z twojej głównej partycji systemu plików Linux-a. Jeżeli /dev/hda2 jest twoją partycją linux-a, komenda dd jest następująca:


      # dd if=/dev/hda2 of=/bootsect.lnx bs=512 count=1

Jeżeli bootsect.lnx ma więcej niż 512 bajtów wystąpił jakiś błąd.

Teraz skopiuj bootsect.lnx na dyskietkę w formacie DOS jeżeli jest to twój spsób do przenoszenia plików na partcję NTFS.

Możesz to skopiować tak:


      # mcopy /bootsect.lnx a:

lub inaczej:


      # mount -t msdos /dev/fd0 /mnt
      # copy /bootsect.lnx /mnt
      # umount /mnt

5. Część pracy w Windows NT

Skopiuj plik z dyskietki do c:\bootsect.lnx. Nie powiem ci jak to zrobić.

Czym dla linux-a jest lilo.conf tym c:\boot.ini jest dla Windows NT. Usuń atrybuty systemowy i tylko_do _odczytu zanim będziesz mógł modyfikować go:


      C:\attrib -s -r c:\boot.ini

Teraz dowolnym edytorem, np. notepad-em, zmień następująco boot.ini:


      [boot loader]
      timeout=30
      default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
      [operating systems]
      multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation ...
      multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation ...
      C:\BOOTSECT.LNX="Linux"

W tym przykładzie została dodana tylko ostatnia linia. Po zapisaniu boot.ini odtwórz otrybuty:


      C:\attrib +s +r c:\boot.ini

Po zamknięciu Windows NT i ponownym starcie powinieneś ujrzeć:


      OS Loader V4.00

      Please select the operating system to start:

      Windows NT Workstation Version 4.0
      Windows NT Workstation Version 4.0 [VGA mode]
      Linux

Wybierz Linux i zobacz:


      LILO loading zImage ....

6. Zrób to jeszcze raz, Sam

Nowa kopia bootsect.lnx musi być przeniesiona do c:\bootsect.lnx za każdym razem gdy sektor startowy twojej partycji linux-a będzie modyfikowany. Będzie to miało na przykład miejsce gdy będziesz używał lilo do zainstalowania nowego jędra. Jak możesz zauważyć taki sposób nie jest idealny do testowania doświadczalnych wersji jądra.

7. Usuwanie błędów

Jeżeli cokolwiek pracuje nie tak jak oczekiwano, sprawdz możliwość startowania systemu z dyskietki. Jeżeli twoją partycją Linux-a jest /dev/hdb1, twój /etc/lilo.conf będzie miał następujące pozycje:


      root=/dev/hdb1
      boot=/dev/fd0

Uruchom lilo z włożoną dyskietką. Teraz spróbój wystartować system z dyskietki. Jeżli twój linux z /dev/hdb1 nie może wystartować, NT OS loader również nie zdoła go uruchomić. Jeżeli zobaczycz wiele 01 01 01 01, znaczy to, że twój dysk główny jest niedostępny. Sprawdź czy wszystkie twoje dyski są rozpoznawane przez bios.

Jeżeli możesz wystartować twoją partycję Linuxa z dysietki, możesz zrzucić twój sektor startowy dla NT OS loader-a:


      # dd if=/dev/fd0 of=/bootsect.lnx bs=512 count=1

Możesz zatrzymać tą dyskietkę jako dyskietkę ratunkową na wypadek gdyby twoja instalacja Windows NT została przerwana.

8. Źródła informacji

9. Podziękowania

10. Uwagi

Jakiekolwiek komentarze będą mile widziane.

11. Od tłumacza

Tłumaczenie to jest chronione prawami autorskimi © Michała Malarskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: malarz@it.pw.edu.pl

Napewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać.

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp://ftp.ippt.gov.pl/pub/Linux/JTZ.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres: listproc@ippt.gov.pl.

doc-linux-pl-2002.06.14.orig/mini/html/Locale.pl.html0100664000175000017500000005177407104371340021005 0ustar covencoven Jak zrobić ustawienia lokalne w Linux-ie. (Locales)

Jak zrobić ustawienia lokalne w Linux-ie. (Locales)

Peeter Joot, peeter_joot@vnet.ibm.com
v1.5, 21 Lipca 1997.
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.4, 4 Listopada 1997


Dokument ten opisuje jak skonfigurować twojego Linux-a, aby móc używać pakietu "Locales", czyli ustawień narodowych. Dokument ten jest napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl. Nowsza wersja zawiera uaktualnione wskazania na katalog zawierający jądra na ftp.icm.edu.pl

1. Wprowadzenie.

To jest naprawdę opis tego co musiałem zrobić, żeby działał u mnie pakiet "Locales". Zrobiłem to tylko dla zabawy, i pomyślałem, że może niektórzy chcą sami spróbować. Jak już raz wszystko poustawiasz, powinieneś móc używać aplikacji korzystających z NLS, wraz z twoimi lokalnymi ustawieniami. Już niedługo pakiet "Locales" powinien być częścią standardowych dystrybucji i większość z tego co tu napisałem będzie niepotrzebne.

2. Co to w ogóle jest pakiet "Locales"?

Jest to pakiet, który zawiera ustawienia specyficzne dla twojego kraju. (zapis daty, czasu, specjalne litery itp.) Ustawień tych nie powineneś zapisywać na stałe w swoich programach.

Jeśli masz na swoim komputerze zainstalowane ustawienia lokalne dla różnych krajów/języków, to poprzez następujące zmienne możesz kontrolować zachowanie programów korzystających z nich. Ustawieniem domyślnym jest ustawienie wg. standardu C lub POSIX zapisane na stałe w "libc".

LANG

-- ustawia jakiego języka używamy; może być zmienione przez zmienną LC_xxxx,

LC_COLLATE

-- ustawia porządek sortowania,

LC_CTYPE

-- definicje znaków, duże i małe litery... używane jest to przez takie funkcje jak: toupper, tolower, islower, isdigit itp.

LC_MONETARY

-- definicja formatu liczb związanych z pieniędzmi. Są tu definicje separatora tysięcy, separatora ułamkowego, symbolu pieniądza (zł) i miejsce, gdzie należy go umieścić,

LC_NUMERIC

-- separatory tysięcy i ułamkowe oraz grupowanie numeryczne,

LC_TIME

-- definicja formatu czasowego i datowego. Są tu zdefiniowane np. dni tygodnia, miesiące,

LC_MESSAGES

-- wyrażenia Nie i Tak,

LC_ALL

-- ustawia jakiego języka używamy i zmienia wszystkie inne zmienne LC_xxxx.

Oto niektóre ustawienia, a jest ich znacznie więcej:

en_CA

-- kanadyjski angielski,

en_US

-- amerykański angielski,

de_DE

-- niemiecki niemiecki,

fr_FR

-- francuski francuski.

Jeśli piszesz program i chcesz, aby można go było używać na całym świecie respektuj ustawienia lokalne. Najważniejszym powodem jest to, że nie każdy będzie używał tego samego zestawu znaków czy strony kodowej co ty.

Upewnij się, że nie robisz czegoś takiego w swoich programach:

   /* sprawdź czy to litera */
   if ( (( c >= 'a') && ( c <= 'z' )) ||
        (( c >= 'A') && ( c <= 'Z' )) ) { ... }

Jeśli napiszesz coś takiego, to zakładasz, że użytkownik będzie używał tylko podstawowych znaków z kodu ASCII i nie bierzesz pod uwagę, iż może używać strony kodowej specyficznej dla swojego kraju. Pomija to takie znaki jak np. a-umlaut, które zostałoby użyte w środowisku niemieckim. Zamiast tego powinieneś raczej używać funkcji, które respektują lokalne ustawienia, jak np. isalpha(). Jeśli twój program wyraźnie wymaga tylko podstawowych znaków ASCII (US-ASCII), dalej używasz funkcji isalpha(), ale musisz także ustawić zmienną LANG albo LC_CTYPE albo LC_ALL na "C" lub użyć funkcji setlocale(LC_CTYPE, "C").

Ustawienia lokalne pozwalają na dużą elastyczność i robią pewne założenia, o których programista mógł zapomnieć.

Na przykład nie możesz z góry założyć pozycji danego znaku na stronie kodowej. Nic nie stoi na przeszkodzie, żebyś np. stworzył sobie stronę kodową, na której "A" byłoby na pozycji 99 a nie 65.

Podstawową ideą jest to, że różni ludzie mówią różnymi językami, przetsrzegają różnych reguł sortowania, używają różnych stron kodowych i mieszkają w różnych krajach. Ustawienia lokalne i funkcje, które ich przstrzegają dają środki na respektowanie takich rzeczy i odpowiedniego ich traktowanie. Nie wymaga to dużego nakładu pracy, tylko trochę innego sposobu myślenia podczas pisania takich programów.

3. Uwagi.

4. Czego potrzebujesz.

Kilka rzeczy musisz sobie ściagnąć. Wszystko czego potrzebujesz znajdziesz na ftp.icm.edu.pl Kiedy ja instalowałem u siebie ustawienia lokalne używałem libc-5.2.18, która jest teraz troche przestarzała. Jak na razie powiedziano mi, że bieżącą wersją jest 5.4.17 i taką też umieszczam w opisie. Przypuszczalnie libc-5.4.17 będzie przestarzała zanim zdążysz mrugnąć więc po prostu użyj najnowszej dostępnej wersji.

Rozważ użycie glibc (gnu libc) zamiast Linux libc 5 w pracach unaradawiających (internalizacyjnych). Glibc jest w pełni unarodowiona i ma pełne wsparcie dla programowania narodowego tak samo jak jest w pełni przenaszalna FIXME i ma wbudowaną obsługę wątków. Prawie cała internalizacja zrobiona w libc 5 wzięta zostałą z glibc. Lokalizacje i mapy klawiszy dla glibc są powiązane z dodatkami o lokalizacjami glibc.

Jeśli jesteś za używaniem glibc, to możesz pominąć to mini-howto. Dołączanie dodatków lokalizacyjnych do kompilacji i instalacji glibc jest trywialne i opisane jest w dokumentacji do instalacji glibc.
ednak ostrzegam, że pełna aktualizacja nie jest trywialnym zadaniem! Mam nadzieję, że RedHat (którego używam) wypuści niedługo dystrybucję opartą na glibc, bo jakoś nie uśmiecha mi się rekompilacja całego mojego systemu. Wszystkie poniższe pakiety możesz znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/GCC oprócz "make" - /pub/Linux/sunsite/devel/make oraz jądra - /pub/Linux/kernel/

5. Instalacja wszystkiego.

Oto co zrobiłem, aby wszystko zainstalować. Miałem już system ELF (kompilator, jądro ...).

  1. Najpierw zainstalowałem pakiet binutils: tar xzf binutils-2.6.0.2.bin.tar.gz -C /
  2. Potem zainstalowałem bibliotekę do łączenia:
       tar zxf ld.so-1.7.12.tar.gz -C /usr/src
       cd /usr/src/ld.so-1.7.12  
       sh instldso.sh
    
  3. Potem binaria do libc. Przeczytaj odpowiednie pliki dotyczące instalacji w release.libc-5.4.17.
       rm -f /usr/lib/libc.so /usr/lib/libm.so
       rm -f /usr/include/iolibio.h /usr/include/iostdio.h
       rm -f /usr/include/ld_so_config.h /usr/include/localeinfo.h
       rm -rf /usr/include/netinet /usr/include/net /usr/include/pthread
       tar -xzf libc-5.4.17.bin.tar.gz -C /
    
  4. Teraz trzeba uruchomić ldconfig, żeby zlokalizować nowe biblioteki dzielone: ldconfig -v.
  5. Jest błąd, który został już poprawiony w libc. Powodował on złe działanie "make" i innych programów. Oto co zrobiłem, żeby skompilować i zainstalować "make":
       tar zxf make-3.74.tar.gz -C /usr/src
       cd /usr/src/make-3.74
       patch < ścieżka_do_release.libc-5.4.17
       configure --prefix=/usr
       sh build.sh
       ./make install
       cd ..
       rm -rf make-2.74
    
  6. Teraz można skompilować i zainstalować localedef:
       mkdir /usr/src/libc
       tar zxf libc-5.4.17.tar.gz -C /usr/src/libc
       cd /usr/src/libc
       cd include
       ln -s /usr/src/linux/include/asm .
       ln -s /usr/src/linux/include/linux .
       cd ../libc
       ./configure
       make clean ; make depend
       cd locale
       make programs
       mv localedef /usr/local/bin
       mv locale /usr/local/bin
    
  7. Umieść zestawy znaków tam, gdzie je znajdzie localedef. Ja użyłem zestawów znaków i locales z ftp.dkuug.dk (charmaps.tar i locales.tar). W Polsce dostępne są pod adresem: ftp.arch.pwr.wroc.pl w katalogu /mirror/linux/nls/locale/dkuug. Starsze "localedef" (5.2.18) szukało źródeł zestawów znaków w katalogu /usr/share/nls/charmap, ale teraz "localedef" szuka ich w katalogu /usr/share/i18n/charmaps oraz źródeł definicji lokalnych w /usr/share/i18n/locales
       mkdir /usr/share/i18n
       mkdir /usr/share/i18n/charmaps
       mkdir /usr/share/i18n/locales
       tar xf charmaps.tar -C /usr/share/i18n/charmaps
       tar xf locales.tar -C /usr/share/i18n/locales
    

    Nowsze "localedef" (5.4.17) są sprytniejsze i szukają zbiorów źródłowych definicji lokalnych podczas obsługi funkcji "copy". Podczas, gdy starsze "localedef" musiały mieć już utworzone pliki źródłowe definicji lokalnych, aby obsłużyć funkcję "copy". Poniższa lista poleceń ma wysortowane zależności i może być użyta, aby wygenerować wszystkie objekty lokalne w zaleźności od używanej wersji biblioteki libc, ale powinieneś móc teraz utworzyć tylko te, które chcesz.

       localedef -ci en_DK -f ISO_8859-1:1987 en_DK
       localedef -ci sv_SE -f ISO_8859-1:1987 sv_SE
       localedef -ci fi_FI -f ISO_8859-1:1987 fi_FI
       localedef -ci sv_FI -f ISO_8859-1:1987 sv_FI
       localedef -ci ro_RO -f ISO_8859-1:1987 ro_RO
       localedef -ci pt_PT -f ISO_8859-1:1987 pt_PT
       localedef -ci no_NO -f ISO_8859-1:1987 no_NO
       localedef -ci nl_NL -f ISO_8859-1:1987 nl_NL
       localedef -ci fr_BE -f ISO_8859-1:1987 fr_BE
       localedef -ci nl_BE -f ISO_8859-1:1987 nl_BE
       localedef -ci da_DK -f ISO_8859-1:1987 da_DK
       localedef -ci kl_GL -f ISO_8859-1:1987 kl_GL
       localedef -ci it_IT -f ISO_8859-1:1987 it_IT
       localedef -ci is_IS -f ISO_8859-1:1987 is_IS
       localedef -ci fr_LU -f ISO_8859-1:1987 fr_LU
       localedef -ci fr_FR -f ISO_8859-1:1987 fr_FR
       localedef -ci de_DE -f ISO_8859-1:1987 de_DE
       localedef -ci de_CH -f ISO_8859-1:1987 de_CH
       localedef -ci fr_CH -f ISO_8859-1:1987 fr_CH
       localedef -ci en_CA -f ISO_8859-1:1987 en_CA
       localedef -ci fr_CA -f ISO_8859-1:1987 fr_CA
       localedef -ci fo_FO -f ISO_8859-1:1987 fo_FO
       localedef -ci et_EE -f ISO_8859-1:1987 et_EE
       localedef -ci es_ES -f ISO_8859-1:1987 es_ES
       localedef -ci en_US -f ISO_8859-1:1987 en_US
       localedef -ci en_GB -f ISO_8859-1:1987 en_GB
       localedef -ci en_IE -f ISO_8859-1:1987 en_IE
       localedef -ci de_LU -f ISO_8859-1:1987 de_LU
       localedef -ci de_BE -f ISO_8859-1:1987 de_BE
       localedef -ci de_AT -f ISO_8859-1:1987 de_AT
       localedef -ci sl_SI -f ISO_8859-2:1987 sl_SI
       localedef -ci ru_RU -f ISO_8859-5:1988 ru_RU
       localedef -ci pl_PL -f ISO_8859-2:1987 pl_PL
       localedef -ci lv_LV -f BALTIC lv_LV
       localedef -ci lt_LT -f BALTIC lt_LT
       localedef -ci iw_IL -f ISO_8859-8:1988 iw_IL
       localedef -ci hu_HU -f ISO_8859-2:1987 hu_HU
       localedef -ci hr_HR -f ISO_8859-4:1988 hr_HR
       localedef -ci gr_GR -f ISO_8859-7:1987 gr_GR
    

6. I co teraz?

Po przejściu omówionych powyżej kroków powinieneś móc używać ustawień lokalnych na swoim komputerze. Oto prosty przykładowy program.

 
   /* test.c : prosty przykładowy program do sprawdzenia czy
   ustawienia lokalne działają
   */
    #include <locale.h>
    #include <stdio.h>
    #include <time.h>
    
    main(){
            time_t t;
            struct tm * _t;
            char buf[256];

            time(&t);
            _t = gmtime(&t);
                                            

            setlocale(LC_TIME,"");
            strftime(buf,256,"%c",_t);
           
            printf("%s\n",buf);
    }

Żeby sprawdzić jakie są bieżące ustawienia możesz użyć programu "locale". Skompiluj powyższy program i uruchom z różnymi ustawieniami. gcc -s -o Test test.c Zobacz jakie są bieżące ustawienia: locale

   LANG=POSIX
   LC_COLLATE="POSIX"
   LC_CTYPE="POSIX"
   LC_MONETARY="POSIX"
   LC_NUMERIC="POSIX"
   LC_TIME="POSIX" 
   LC_MESSAGES="POSIX"
   LC_ALL=

   Hmmm... ustawienia standardowe C...
   No to zmieńmy na inne:
   
   export LC_TIME=en_CA -- kanadyjski angielski
   Test
   Sat 23 Mar 1996 07:51:49 PM
   
   A teraz francuski kanadyjski:
   export LC_TIME=fr_CA
   Test
   sam 23 mar 1996 19:55:27

7. Naprawa błędu "catopen".

Instalacja obsługi ustawień lokalnych naprawia automatycznie błąd (a może zaletę) w poleceniu "catopen" w bibliotece libc. Powiedzmy, że napiszesz program, który używa komunikatów z katalogu /home/peeter/catalogs/de_DE.

Teraz - jeśli wykonasz następujące polecenia nie mając zainstalowanych ustawień lokalnych dla de_DE,

   export LC_MESSAGES=de_DE
   export NLSPATH=/home/peeter/catalogs/%L/%N.cat:$NLSPATH

katalog z niemieckimi komunikatami nie zostanie otwarty. Funkcja catgets pobierze komunikaty z katalogu standardowego.

Dzieje się tak ponieważ funkcja "catopen" wywołuje funkcję "setlocale", żeby pobrać odpowiednie komunikaty, a funkcja "setlocale" zwróci błąd pomimo tego, że została ustawiona zmienna środowiskowa. Następnie funkcja "catopen" próbuje załadować komunikaty zastępując wszystkie "L" literą "C" w zmiennej NLSPATH.

Możesz nadal używać swojego katalogu z komunikatami bez definiowania ustawień lokalnych, ale musiałbyś bezpośrednio ustawić część "L" zmiennej NLSPATH:

   export NLSPATH=/home/peeter/catalogs/de_DE/%N.cat:$NLSPATH

ale to mija się z celem zastosowania zmiennych ustawień lokalnych.

8. Pytania i odpowiedzi.

Sekcja ta mogłaby urosnąć i zmienić się w FAQ, ale jest jeszcze za mała.

8.1 msgcat

Używam Linux-a i napisałem taki program:

   --------------------------------------------------------------------
   #include <stdio.h>
   #include <locale.h>
   #include <features.h>
   #include <nl_types.h>
   
   main(int argc, char ** argv)
   {
           nl_catd catd;
           
           setlocale(LC_MESSAGES, "");
           catd = catopen("msg", MCLoadBySet);
           fprintf(stderr,catgets(catd, 1, 1, "otwarcie komunikatów lokalnych nie powiodło się\n"));
           catclose(catd);
   }

   --------------------------------------------------------------------
   $ msg.m
   $set 1
   
   1 locale message pass\n
   --------------------------------------------------------------------

Jeśli użyję bezwzględnej ścieżki dostępu w "catopen", np.:

catopen("/etc/locale/msg.cat", MCLoadBySet);

To jest dobrze. Ale jeśli używam poprzedniego przykładu "catopen" zwraca mi -1 (czyli, że się nie powiodło)

Częściowa odpowiedź na to pytanie jest w poprzedniej sekcji, ale podam jeszcze trochę dodatkowych informacji.

Jest wiele "odpowiednich miejsc", gdzie możesz umieścić katalog z komunikatami. Nawet gdybyś nie ustawił zmiennej środowiskowej NLSPATH, to jest ona następująco zdefiniowana w libc:

   $ strings /lib/libc.so.5.4.17 | grep locale | grep %L
   /etc/locale/%L/%N.cat:/usr/lib/locale/%L/%N.cat:/usr
   /lib/locale/%N/%L:/usr/share/locale/%L/%N.cat:/usr/
   local/share/locale/%L/%N.cat

Więc jeśli zrobiłeś jedno z poniższych:

   $ export LC_MESSAGES=en_CA
   $ export LC_ALL=en_CA
   $ export LANG=en_CA

to funkcja catopen("msg", MCLoadBySet); działałaby, gdyby twój katalog z komunikatami był jednym z:

   /etc/locale/en_CA/
   /usr/lib/locale/en_CA/
   /usr/lib/locale/msg/
   /usr/share/locale/en_CA/
   /usr/local/share/locale/en_CA/

Jednak to nie zadziała jeśli nie masz zainstalowanych ustawień lokalnych dla en_CA, ponieważ funkcja "setlocale" nie powiedzie się i w wywołaniu funkcji "catopen" w miejsce "L" zostanie podstawiona litera "C".

9. Zakończenie.

To tyle. Mam nadzieję, że ten "podręcznik" pomógł ci chociaż trochę. Jest zapewne dużo miejsc, gdzie możesz szukać dodatkowych informacji na temat pisania programów zgodnych z ustawieniami lokalnymi. Założę się, że jeśli poszukasz trochę po sieci (WWW), to znajdziesz dużo informacji. Ulrich Drepper, który zaimplementował większość kodu umiędzynarodowiającego, ma troche informacji na swojej stronie WWW; możesz tam zacząć. Jest także trochę informacji na stronach informacyjnych i w podręczniku systemowym "man" o libc.

9.1 Od tłumacza.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl/HOWTO/

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany wprowadzone przeze mnie do tego dokumentu to polskie odnośniki do serwerów ftp i WWW.
W wersji v1.31 została poprawiona nazwa pliku testowego z "test" na "Test", co jak zauważył jeden z czytelników ma podstawowe znaczenie ponieważ program "test" już istnieje w systemie. doc-linux-pl-2002.06.14.orig/mini/html/NFS-Root-Client.pl.html0100664000175000017500000004574407104371340022371 0ustar covencoven Stacja robocza z głównym systemem plików z sieci.

Stacja robocza z głównym systemem plików z sieci.

Autor: Ofer Maor, ofer@hadar.co.il
v3, 5 Grudnia 1996
Wersja polska: Bartosz Maruszewski B.Maruszewski@zsmeie.torun.pl
v1.02, 26 Lipca 1997


Celem tego dokumentu jest wyjaśnienie jak stworzyć główne katalogi na serwerze, który obsługuje klientów z montowanym głównym systemem plików. Najnowszą wersję oryginału możesz znaleźć pod adresem www.hadar.co.il. Dokument ten został napisany w standardzie ISO-8859-2. Odnośnie nowszych wersji tłumaczenia zobacz sekcję Od tłumacza.

1. Prawa autorskie.

Prawa autorskie należą do Ofera Maora < ofer@hadar.co.il>.

O ile nie stwierdza się inaczej, dokumenty HOWTO są chronione prawami autorskimi ich autorów. Mogą one być rozprowadzane w całości lub w części, w jakiejkolwiek postaci fizycznej czy elektronicznej tak długo, dopóki znajduje się w nich ta wzmianka. Dystrybucja komercyjna jest dozwolona, a nawet zachęca się do niej; chociaż autor chciałby być poinformowany o takowej.

Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem.

Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO.

Jeśli masz jakieś pytania, skontaktuj się z Oferem Maorem pod adresem <ofer@hadar.co.il> - autorem tego dokumentu, albo Gregiem Hankinsem - koordynatorem projektu Linux HOWTO pod adresem <gregh@sunsite.unc.edu>.

Jeśli masz coś do dodania, skontaktuj się proszę z autorem ( Ofer Maor <ofer@hadar.co.il>). Szczególnie mile widziane są informacje o pojawieniu się nowszych narzędzi.

1.1 Podziękowania.

Chciałbym wyrazić podziękowania autorowi NFS-Root Howto, Andreasowi Kostyrce (htmlurl url="mailto:andreas@medman.ag.or.at" name="andreas@medman.ag.or.at"). Jego dokument pomógł mi w pierwszych krokach przy tworzeniu stacji bezdyskowych. Moje mini-howto nie próbuje w żaden sposób zamienić jego pracy, ale rozszerzyć ją posługując się moimi doświadczeniami.

Chciałbym także podziękować Markowi Kushinsky (htmlurl url="mailto:mark026@ibm.net" name="mark026@ibm.net") za "wypolerowanie" stylu i sprawdzenie poprawności językowej tego Howto, co znacznie poprawiło jego czytelność.

2. Przedmowa.

Dokument ten został napisany, aby pomagać ludziom, którzy chcą używać montowania głównego systemu plików z sieci, żeby stworzyć katalogi klienta. Zauważ, że jest wiele sposobów na zrobienie tego, zależnie od twoich potrzeb i intencji. Jeśli klienci są indywidualni a każdy z nich ma własnych użytkowników i administratora konieczne będzie, aby znaczące katalogi klienta nie były współdzielone z innymi klientami. Z drugiej strony, jeśli klient jest przeznaczony dla wielu użytkowników i wszystkie są administrowane przez tę samą osobę (na przykład, klasa komputerowa), tyle plików ile się tylko da musi być wspołdzielone, aby uczynić zarządzanie prostszym. Dokument ten skupi się na tym drugim zagadnieniu.

2.1 Przegląd ogólny.

Podczas tworzenia katalogu głównego dla klienta oraz prób limitowania do minimum rozmiaru tego katalogu, głównie skupiamy się na tym, które pliki możemy współdzielić albo montować z serwera. W tym Howto będę zalecał konfigurację klienta na podstawie moich doświadczeń. Ale zanim zaczniemy zapamiętaj:

3. Tworzenie głównego katalogu klienta.

3.1 Tworzenie drzewa katalogów.

Przede wszystkim musisz stworzyć strukturę katalogów. Ja stworzyłem wszystkie katalogi w /clients/hostname i będę używał tego katalogu do przykładów. Chociaż jeśli chcesz, to możesz sobie zmienić ten katalog na inny. Pierwszym krokiem jest zrobienie odpowiednich katalogów. Powinny to być następujące:

    bin, dev, etc, home, lib, mnt, proc, sbin, server, tmp, usr, var

i wszelkie inne katalogi jakie chcesz mieć na stacji.

Katalogi local, proc i dev będą użyte oddzielnie dla każdej stacji, a reszta będzie współdzielona.

3.2 Tworzenie minimalnego systemu plików potrzebnego do startu.

Tworzenie katalogu dev.

Właściwie katalog dev może być współdzielony, ale lepiej jeśli nie jest. Zawartość tego katalogu możesz stworzyć odpowiednim skryptem, chcociaż prościej jest go po prostu skopiować z serwera:


     cp -a /dev /clients/hostname

Musisz pamiętać, że /dev/mouse, /dev/cdrom i /dev/modem są symbolicznymi dowiązaniami to właściwych urządzeń, i dlatego powinieneś się upewnić, że wskazują one na poprawne urządzenia zgodnie ze sprzętem w stacji.

Kopiowanie potrzebnych binariów.

Pomimo, iż montujemy wszystko z serwera jest pewna minimalna ilość plików, które musimy skopiować do każdego klienta. Przede wszystkim potrzebujemy init-a, nasz system nie będzie w stanie uruchomić czegokolwiek przed uruchomieniem init-a (czego autor doświadczył na własnej skórze ;) ). Tak więc najpierw skopiuj /sbin/init do katalogu sbin klienta, potem skopiuj /bin/sh do katalogu bin klienta, żeby skrypt rc.S mógł się wykonać. Żeby wszystko zamontować potrzebujesz także programu mount - skopiuj go do katalogu sbin klienta. To jest zupełne minimum zakładając, że pierwszą linijką w rc.S jest

      mount -av

Zalecam jednak skopiowanie jeszcze kilku plików: update, ls, rm, cp oraz umount, tak żebyś miał podstawowe narzędzia w razie gdyby klientowi nie powiodło się montowanie. Jeśli zostawisz linię właczającą swap przed linią montującą katalogi, to musisz także skopiować program swapon.

Ponieważ większość z tych programów jest dynamicznie łączona z bibliotekami, będziesz też potrzebował sporej części katalogu /lib:


    cp -a /lib/ld.* /lib/libc.* /lib/libcursses.* /client/hostname/lib

Rozważ też możliowość stałego dowiązania zamiast kopiowania. Przeczytaj mój komentarz na ten temat w sekcji Przegląd ogólny.

Zauważ, że powyższe informacje zakładają, że parametry sieciowe zostały przekazane do jądra podczas startu. Jeśli masz zamiar użyć RARP lub BOOTP, będziesz także potrzebował odpowiednich binariów.

Ogólnie potrzebujesz minimum te programy, które pozwolą ci skonfigurować sieć i uruchomić skrypt rc.S do momentu zamontowania wszystkich katalogów z serwera.

Katalog var.

W większości przypadków katalog var powinien być osobny dla każdego klienta. Chociaż wiele danych może być współdzielonych. Stwórz w katalogu głównym stacji katalog var. Zamontujemy tam katalog var z serwera. Aby stworzyć katalog var napisz:


    cp -a /var /clients/hostname/

Teraz możesz wybrać co chcesz współdzielić, a co chcesz mieć osobne dla każdego klienta. Każdy plik/katalog, który chcesz współdzielić usuń i stwórz symboliczne dołączenie do /serwer/var. Zauważ, że musisz dołączyć go albo do katalogu /serwer/var albo do ../serwer/var, ale NIE do /clients/hostname/serwer/var ponieważ nie będzie to działało kiedy zmieni się katalog główny.

Ogólnie polecałbym oddzielić katalogi /var/run, /var/lock, /var/spool, oraz /var/log.

Reszta katalogów.

3.3 Tworzenie katalogu etc oraz konfiguracja klienta.

Zapamiętaj - sekcja ta odnosi się do tworzenia katalogu etc, który w większości przypadków jest współdzielony między klientami. Jeśli twoi klienci mają osobnych administratorów, najlepiej zrobić osobne katalogi etc dla każdego klienta.

Tworzenie katalogu dla wszystkich klientów.

Pomimo, iż oddzielamy katalogi etc, to i tak większą część stamtąd chcemy współdzielić. Ogólnie sądzę, że współdzielenie katalogu etc z serwerem nie jest dobrym pomysłem, dlatego zalecam stworzenie katalogu /clients/etc, w którym będą przechowywane informacje dla klientów. Na początek po prostu skopiuj katalog etc serwera do katalogu dla klientów.

Powinieneś dodać do tego katalogu wszystkie pliki konfiguracyjne nie związane z konkretnym komputerem, np.: motd, issue itp., ale nie specyficzne dla komputera (fstab czy inittab).

Najważniejsze zmiany będą w katalogu rc.d. Najpierw powinieneś zmienić rc.inet1, tak aby odzwierciedlał twoją lokalną sytuację. Ja przekazuję parametry sieciowe do jądra podczas startu, dlatego wyrzuciłem prawie wszystko z tego pliku. Jedynymi poleceniami jakie tam zostawiłem, to ifconfig i route konfigurujące urządzenie loopback (localhost). Jeśli używasz RARP-a albo BOOTP, to będziesz musiał je stosowanie zrobić.

Po drugie powinieneś wyedytować swój plik rc.S. Najpierw wyrzuć stamtąd wszystko co dotyczy sprawdzania dysku (polecenia fsck) ponieważ będzie to robione przy starcie serwera. Potem powinieneś znaleźć linię, która montuje twoje katalogi; powinna wyglądać mniej więcej tak:

      mount -avt nonfs

Parametr -t nonfs jest dlatego, że normalne stacje robocze najpierw wykonują skrypt rc.S a potem rc.inet1, aby skonfigurować Ethernet. Ponieważ to spowodowałoby, że żaden system NFS nie zamontowałby sie linia ta powinna zostać usunięta. Zmień ją na:

     mount -av

Jeśli musisz uruchomić RARP/BOOTP, aby skonfigurować swoją sieć, zrób to w rc.S (albo wywołaj odpowiedni skrypt z rc.S) przed montowaniem i upewnij się, ze twoje fizyczne katalogu bin i sbin zawierają potrzebne programy.

Po poleceniu mount -av będziesz miał działający system plików. Stwórz ogólny plik fstab, tak żebyś mógł go skopiować dla każdego klienta. Powinien on wyglądać mniej więcej tak:

    server/nfs                                          default  1 1
    server:/bin                 /bin            nfs     default  1 1
    server:/usr                 /usr            nfs     default  1 1
    server:/sbin                /sbin           nfs     default  1 1
    server:/home                /home           nfs     default  1 1 
    server:/lib                 /lib            nfs     default  1 1
    server:/clients/etc         /server/etc     nfs     default  1 1
    server:/clients/var         /server/var     nfs     default  1 1
    none                        /proc           proc    default  1 1

Upewnij się także, że plik /etc/exports na serwerze wygląda tak:

    /clients/hostname   hostname.domainname(rw,no_root_squash)
    /clients/etc        hostname.domainname(ro,no_root_squash)
    /clients/var        hostname.domainname(ro,no_root_squash)
    /usr                hostname.domainname(ro,no_root_squash)
    /sbin               hostname.domainname(ro,no_root_squash)
    /bin                hostname.domainname(ro,no_root_squash)
    /lib                hostname.domainname(ro,no_root_squash)
    /home               hostname.domainname(rw,no_root_squash)

We wszystkich liniach oprócz pierwszej powinieneś wstawić jakąś maskę, do której pasują wszystkie komputery będące klientami (np. pc*.twoja.domena). Sugeruję, żeby większość katalogów była tylko-do-odczytu, ale to zależy od ciebie. Parametr no_root_squash spowoduje, że użytkownicy "root" na kliencie będą także mieli przywileje "root-a" na serwerze. Sprawdź man exports. Jeśli chcesz, żeby użytkownicy na klientach mogli uruchamiać passwd , to sprawdź czy katalog etc jest zamontowany z prawem zapisu, chociaż osobiście tego nie polecam.

Zauważ jeszcze jedno dotyczące skryptu rc.S. Domyślnie w Slackware pliki /etc/issue i /etc/motd są tworzone od nowa po każdym resetwoaniu serwera. Jeśli pliki te są montowane bez zapisu, to funkcja ta MUSI zostać wyłączona a ja zalecałbym wyłączyć ją na zapas.

I ostatnia sprawa. Jeśli chcesz mieć tę samą bazę użytkowników na kliencie i na serwerze, to musisz wybrać między:

  1. używaniem NIS-a (Yellow Pages, sprawdź NIS-HOWTO, a potem każdy klient będzie miał osobne pliki /etc/passwd i /etc/group jak je otrzyma od serwera.
  2. w większośći wypadków, proste symboliczne dołączenie wystarczy. Dlatego będziesz musiał, albo dołączyć na stałe /clients/etc/passwd do /etc/passwd, albo jeśli wolisz dołączenia symboliczne to dołączyć /etc/passwd do /clients/etc/passwd (nie w drugą stronę, ponieważ klienci nie montują katalogu etc serwera). To samo dla /etc/group.

Tworzenie katalogu etc dla klienta.

Ogólnie, większość plików w katalogu etc klienta powinna być dołączona symbolicznie do plików z katalogu etc serwera. Ale niektóre z nich są różne dla każdej maszyny, a niektóre po prostu muszą się tam znajdować kiedy ładuje się jądro. Oto minimalna zawartość katalogu etc:

    resolv.conf
    hosts
    inittab
    rc.d/rc.S
    fstab

Ponieważ te pięć plików może być identyczne dla każdego klienta, możesz je skopiować, albo dołączyć na stałe. Chociaż zaleca się żeby pliki rc.S i fstab były osobne dla każdego klienta. Będziesz także potrzebował osobnego pliku HOSTNAME dla każdego klienta. Osobiście uważam, że cały podkatalog rc.d powinien być osobny dla każdego klienta ponieważ konfiguracja i sprzęt mogą się różnić.

Dla każdego klienta dodaj do fstab odpowiednią linię dla swapa:

    /dev/swap_prttn                     swap    swap    default  1 1

Reszta plików z etc klienta może być albo dołączona na stałe do plików /clients/etc/* albo podłączona symbolicznie do /serwer/etc (który jest punktem do montowaina dla /clients/etc).

Upewnij się, że twój klient umie poprawnie rozwiązywać nazwy kanoniczne poprzez named albo etc/hosts. Nie jest złym pomysłem trzymanie IP serwera w pliku etc/hosts, zamiast liczyć na rozwiązywanie nazw. Jeśli będziesz liczyć tylko na to, to problem z named-em spowoduje, że twoi klienci nie będą mogli wystartować.

3.4 Startowanie.

Teraz wszystko, co musisz zrobić to zrestartować komputer, trzymać kciuki i mieć nadzieję, że wszystko pójdzie gładko. :)

4. Tworzenie większej ilości klientów.

Jeśli przestrzegałeś moich instrukcji, to powinno to być proste:

    cd /clients/
    cp -a hostname1 hostname2

a potem upewnij się, że sprawdziłeś to:

Powodzenia ...

4.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@zsmeie.torun.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/NFS-Root.pl.html0100664000175000017500000003611307104371340021143 0ustar covencoven Jak założyć główny system plików przez NFS.

Jak założyć główny system plików przez NFS.

Autor: Andreas Kostyrka, andreas@ag.or.at
v8, 8 Sierpnia 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@zsmeie.torun.pl
v1.1, 4 Listopada 1997


Dokument ten próbuje wyjaśnić jak ustawić bezdyskową stację roboczą, która montuje swój główny system plików poprzez NFS na Linux-ie. Dokument ten został napisany w standardzie ISO-8859-2. Najnowsza wersja oryginału jest dostępna na SUNSite Polska. Odnośnie nowszych wersji tłumaczenia zobacz sekcję Od tłumacza.

1. Prawa autorskie.

Prawa autorskie należą do Andreasa Kostyrki (e9207884@student.tu(-)wien.ac.at lub andreas@ag.or.at)

O ile nie stwierdza się inaczej, dokumenty HOWTO są chronione prawami autorskimi ich autorów. Mogą one być rozprowadzane w całości lub w części, w jakiejkolwiek postaci fizycznej czy elektronicznej tak długo, dopóki znajduje się w nich ta wzmianka. Dystrybucja komercyjna jest dozwolona, a nawet zachęca się do niej; chociaż autor chciałby być poinformowany o takowej.

Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem.

Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO.

Jeśli masz jakieś pytania, skontaktuj się z Andreasem Kostyrką pod adresem <andreas@ag.or.at> - autorem tego dokumentu, albo Gregiem Hankinsem - koordynatorem projektu Linux HOWTO pod adresem <gregh@sunsite.unc.edu>.

1.1 Współpracownicy.

2. Przegląd ogólny.

Ogólnie mówiąc są dwa następujące problemy dla stacji roboczych:

Bieżąca implementacja NFSROOT w jądrze Linux-a (dotyczy 1.3.7x) pozwala na następujące rozwiązania:

Przed rozpoczęciem ustawiania środowiska bezdyskowego, powinieneś zdecydować czy będziesz startował przez LILO, czy przez LOADLIN. Zaletą tego jest elastyczność, wadą natomiast prędkość. Startowanie przez LILO jest szybsze.

3. Ustawienia na serwerze.

3.1 Kompilacja jądra.

Dobrym pomysłem będzie wkompilowanie obsługi RARP w jądro. Musisz ją mieć jeśli będziesz startował bez parametrów. Z drugiej strony, nie pomoże ci to, jeśli serwer jest w innej podsieci niż klient.

Jądro na stację musi mieć następujące elemnty wkompilowane w jądro:

Jeśli stacja robocza będzie startowana bez parametrów, musisz także ustawić urządzenie głównego systemu plików na 0:255. Robi się to poprzez utworzenie urządzenia w katalogu /dev poleceniem


mknod /dev/nfsroot b 0 255

Po utworzeniu takiego urządzenia możesz ustawić urządzenie głównego systemu plików w jądrze poleceniem


rdev <jądro> /dev/nfsroot

3.2 Tworzenie głównego systemu plików.

Kopiowanie systemu plików.

UWAGA: instrukcja ta może działać u ciebie, ale wcale nie musi być sensowna w środowisku produkcyjnym. Lepszy sposób ustawienia głównego systemu plików na stacji znajduje się w NFS-Root-Client

Jak już zdecydowałeś, gdzie umieścisz główny system plików, stwórz go np. poleceniem


mkdir -p <katalog>
tar cClf / - | tar xpCf <katalog> -

Jeśli startujesz jądro bez LILO, wtedy katalogiem głównym musi być /tftpboot/<IP-adres>. Jeśli ci się to nie podoba, możesz go zmienić w pliku Makefile w żródłach jądra, poszukaj linii podobnej do tej:

NFS_ROOT = -DNFS_ROOT="\"/tftpboot/%s\""

Jeśli to zmienisz musisz przekompilować jądro.

Zmiany w głównym systemie plików

Teraz wyrzuć niepotrzebne pliki i sprawdź skrypty w /etc/rc.d. Kilka ważnych wskazówek:

Exportowanie systemu plików.

Wyeksportuj główny katalog dla stacji roboczej. Szczegóły są w podręczniku systemowym (man exports). Najprzypuszczalniej po zmianach będziesz musiał zrestartować nfsd i mountd. W dystrybucji RedHat można to łatwo zrobić:


/etc/rc.d/init.d/nfs stop
/etc/rc.d/init.d/nfs start

Ustawienie RARP.

Ustaw gdzieś na sieci RARP. Jeśli startujesz stację bez parametru nfsroot, to serwer RARP musi być serwerem NFS. Aby to zrobić potrzebujesz jądra z obsługą RARP.

Robi się to poleceniem


/sbin/rarp -s <adr_ip> <adr_sprzętowy>

gdzie

adr_ip

jest adresem IP stacji roboczej a

adr_sprzętowy

jest adresem ethernet-owym karty sieciowej stacji roboczej.

Przykład: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12

Możesz także użyć nazwy symbolicznej zamiast adresu IP, jeśli serwer może odszukać sobie adres IP. (/etc/hosts lub DNS).

Ustawianie BOOTP

Aby ustawić BOOTP musisz wyedytować plik /etc/bootptab. Przeczytaj strony podręcznika systemowego na temat bootpd oraz bootptab.

Odszukiwanie adresu sprzętowego.

Nie znam adresu sprzętowego !!! Jak mam go odszukać ?

4. Startowanie stacji roboczej.

4.1 Używanie "boot rom-u".

Ponieważ samemu jeszcze tego nie używałem mogę ci dać tylko nastepujące wskazówki (ukłony w stronę Christiana Leutloffa <leutloff@sundancer.tng.oche.de>):

4.2 Używanie dysku z surowym jądrem.

Jeśli wyeksportowałeś główny system plików z poprawną domyślną nazwą oraz twój serwer NFS jest także serwerem RARP (z czego wynika, że obie maszyny są w tej samej podsieci), wtedy możesz wystartować jądro przez proste "zrzucenie" go na dysk za pomocą polecenia cat. (Musisz ustawić urządzenie głównego systemu plików w jądrze na 0:255) Przy takich ustawieniach, katalog główny na serwerze jest w /tftpboot/adres-IP. (wartość ta może być zmieniona przy kompilacji jądra)

4.3 Używanie "bootloader-a" i RARP-a.

Przekaż do jądra podczas startu wszystkie potrzebne parametry oraz dodaj nfsroot=<serwer-IP>:</ścieżka/do/zamont.> gdzie serwer-IP jest adresem IP serwera NFS a /ścieżka/do/zamont. jest ścieżką do głównego katalogu.

Wskazówki:

4.4 Używanie "bootloader-a" bez RARP-a.

Dodatkowo oprócz parametru nfsroot użyj jeszcze parametru nfsaddrs=<st-IP>:<srw-IP>:<gw-IP>:<netm-IP>:<nazwa>. Jądro ustawi interfejs eth0 z podanymi parametrami:

st-IP

adres IP stacji roboczej

srw-IP

adres IP serwera NFS

gw-IP

wrota (gateway)

netm-IP

maska podsieci

nazwa

nazwa stacji

5. Znane problemy.

5.1 /sbin/init nie startuje.

Popularnym problemem jest fakt, że niektóre (przynajmniej) najnowsze dystrybucje mają program /sbin/init łączony dynamicznie. Musisz więc udostępnić odpowiednie biblioteki w katalogu /lib u klienta. Prostą rzeczą jaką można zrobić, to zamiana /sbin/init (u klienta) na statycznie łączony program typu ``Hello World''. W ten sposób można sprawdzić czy mamy do czynienia rzeczywiście z problemem z programem łączonym dynamicznie czy może z czymś prostszym.

5.2 Problemy z /dev.

Jeśli przy starcie pojawiają ci się jakieś pokręcone komunikaty o "tty", to powinieneś uruchomić skrypt MAKEDEV u klienta w katalogu /dev. Chodzą słuchy, że nie działa on na systemach serwerowych, które używają liczb 64-bitowych do numerowania urządzeń. Jeśli zdarzy ci się taki problem, to napisz do mnie proszę na jakim systemie ci się to stało. Potencjalnym rozwiązaniem powinno być utworzenie małego ramdysku z katalogiem /dev i każdorazowa reinstalacja plików urządzeń.

6. Inne tematy.

6.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@zsmeie.torun.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/PLIP.pl.html0100664000175000017500000011525007104371340020340 0ustar covencoven LINUX PLIP MINI-HOWTO

LINUX PLIP MINI-HOWTO

Autor: Andrea Controzzi controzz@cli.di.unipi.it
22 lipca 1996
Wersja polska: Bartek Papierski bartekp@dom.vr.pl

v1.0, 10 września 1997


Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem: ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO

Ten dokument HOWTO pozwoli Ci szczęśliwie zbudować i używać protokołu interfejsu równoległego (PLIP).

Wszelkie pytania, poprawki, komentarze lub sugestie proszę przesyłać na mój adres E-Mail: controzz@cli.di.unipi.it Pisz do mnie kiedy tylko potrzebujesz pomocy. Czasami nie będę mógł od razu odpowiedzieć, ale na pewno odpowiem. Jeśli się zdarzy, że nie dostaniesz odpowiedzi po dwóch tygodniach, to znaczy, że nasz system jest w kłopotach. Nie wahaj się wtedy napisać ponownie. Moim obowiązkiem jest dać Ci odpowiedź.

Po pierwsze, wiele technicznych informacji pochodzi z net-3-HOWTO autorstwa Terry'ego Dawson'a. To mini-HOWTO w żadnym stopniu nie pokrywa tamtego dokumentu. Moim celem jest pokazanie jak szybko zainstalować stałe połączenie PLIP, *TYLKO* to. Wszelkie pozostałe informacje pochodzą z moich własnych doświadczen i pomocy wielu użytkowników, którzy przesyłali mi komentarze i informacje.

Przeczytaj net-3-HOWTO i inne dokumenty dla generalnej wiedzy o sieciach i plikach konfiguracyjnych, które będę sugerował do zmian.

Poniżej jest spis treści. Możesz szybko odnaleźć paragraf szukając ciągu znaków nn, gdzie nn jest numerem paragrafu.

1. Wstęp: Co to jest PLIP i dlaczego powinienem go używać?

Jest wiele dróg prowadzących do utworzenia połączenia pomiędzy kilkoma hostami. PLIP, podobnie jak SLIP pozwala na lokalne połączenia pomiędzy dwoma maszynami poprzez porty równoległe.

Połączenie PLIP jest bardzo podobne do SLIP (z kablem dzierżawionym), ale używa portów równoległych zamiast szeregowych. Port równoległy przesyła więcej niż jeden bit na raz. To oznacza, że jest możliwe osiągnięcie większych prędkości niż przy użyciu interfejsu szeregowego.

Interfejs PLIP jest wystarczająco szybki, aby umożliwić takie funkcje funkcje tcp/ip jak NFS na satysfakcjonującym poziomie. Możesz więc mieć swój komputer z Linuxem oraz inny komputer z minimalnym systemem, gdzie możesz montować całą resztę z głównej maszyny.

Wadą jest to, że większość użutkowników ma tylko jeden port równoległy. Znaczy to, że nie będziesz mógł jednocześnie drukować i korzystać z PLIP. Do tej pory nawet posiadając dwa lub nawet trzy porty równoległe nie mogłeś używać drukarki i PLIP naraz. Rozwiązaniem było użycie modułów lub innych tricków.

Ta wada może być wyeliminowana poprzez zastosowanie wstawki do jądra systemowego. Proszę zobaczyć paragraf Wstawki umożliwiające jednoczesne działanie PLIP i LP.

W końcu mogę Ci podać sposób na ustawienie połączenia PLIP pomiędzy DOS a Linuxem.

2. Wymagania sprzętowe

Sprzętem wymaganym do zestawienia połączenia PLIP są dwa wolne porty (po jednym w każdej maszynie) i kabel.

Teraz trochę o kablu. To jest fragment pliku plip.c z źródeł kernela 1.2.13:

Kabel używany do połączeń jest de facto standardowym standardowym kablem równoległym typu 'null cable'. Jeśli chcesz go wykonać sam, będziesz potrzebował 12-żyłowy kabel. Połączenia wyglądają następująco:

    SLCTIN      17 - 17
    GROUND      25 - 25
    D0->ERROR   2 - 15        15 - 2
    D1->SLCT    3 - 13        13 - 3
    D2->PAPOUT  4 - 12        12 - 4
    D3->ACK     5 - 10        10 - 5
    D4->BUSY    6 - 11        11 - 6
Nie łącz pozostałych wtyków. Są to:
    D5,D6,D7 są 7,8,9
    STROBE jest 1, FEED jest 14, INIT jest 16
    ekstra uziemnienia to 18,19,20,21,22,23,24

Radzę Ci przeczytać /usr/src/linux/drivers/net/README1.PLIP aby dowiedzieć się więcej o kablu.

Według mnie powinieneś unikać budowania swego własnego kabla. Własnoręcznie wykonany kabel może zaoszczędzić niewiele pieniędzy, ale może spowodować wiele bólów głowy. Jeśli chcesz zbudować swój własny kabel, pamiętaj, że robisz to na swoją odpowiedzialność. Napisałem to co zostało umieszczone w plip.c ale nie daję żadnej gwarancji.

Ostatnie słowo o długości kabla. Długie kable (więcej niż 3 metry) mogą powodować problemy związane z zakłóceniami radiowymi. Jeśli potrzebujesz długi kabel to powinieneś użyć dobrze ekranowanych kabli. Bardzo długie kable nie są zalecane. Myślę, że maksymalną długością jest 15 metrów.

Kiedyś ktoś napisał mi, że używa 30 metrowego kabla. Jednak jeśli ktoś chce próbować połączeń PLIP między biurem a domem (200 metrów) i ma do wydania pieniądze to proszę spróbować. W najgorszym wypadku to nie będzie pracować.

3. Rekonfiguracja jądra systemowego

Powinieneś już wiedzieć jak konfigurować i kompilować jądro. W przeciwnym razie radzę pozytać dokumentację (Kernel-HOWTO lub inne). Dziękuję za wspaniałą pracę wykonaną przez guru od jądra. Kompilacja jądra jest teraz o wiele łatwiejsza. Poniżej możesz zobaczyć co masz do zrobienia:

UWAGA:Zakładam, że używasz serii 2.0.xx jądra.

Będę też zakładał, że do konfiguracji używasz polecenia menuconfig, ale inne narzędzia też są dozwolone. Pokażę Ci jak to zrobić używając menuconfig:

   #make menuconfig

Mocno polecam aby wybrać:

     Loadable module support  --->

i zaznaczyć:

         [*] Enable loadable module support

I jeśli to możliwe (jęsli masz modules.2.0.0):

         [*] Kernel daemon support (e.g. autoload of modules)

Potem powróć i wybierz:

       Networking options  --->

gdzie powinieneś zaznaczyć przynajmniej to:

         [*] Network firewalls
         [*] TCP/IP networking
         [*] IP: forwarding/gatewaying

potem powróc i wybierz:

         [*] Network device support
         <M> PLIP (parallel port) support

Jeśli używasz modułów to radzę Ci ustawić PLIP jako moduł. Jeśli to zrobisz i chcesz jeszcze używać drukarkę to powędruj do:

       Character devices  --->

i ustaw jako moduł

         <M> Parallel printer suppport

Teraz umożliwiłeś wspomaganie przez jądro dla PLIP. Jeśli będziesz teraz po raz pierwszy kompilował jądro to spójrz na inne opcje i opuść program konfiguracyjny.

W końcu dokonaj kompilacji:

   #make dep;   make clean
   #make zlilo

oraz jeśli używasz modułów:

   #make modules
   #make modules_install

4. Ustawianie plików konfiguracyjnych

Po pierwsze pamiętaj aby zrobić kopię bezpieczeństwa wszystkich plików, które będziesz zmieniał,

   #cp rc.inet1 rc.inet1.BACKUP

może być dobrym rozwiązaniem.

Jeśli jeszcze tego nie zrobiłeś to musisz wybrać adres IP dwóch maszyn. W moich przykładach będę używał kilka przykładowych IP, które ty wpiszesz w standardowym formacie xxx.xxx.xxx.xxx

W /etc/rc.d/inet1.rc na obydwu maszynach dodaj to (lepiej w końcowej części pliku):

/sbin/route add -net ${NETWORK} netmask ${NETMASK}

gdzie NETWORK i NETMASK powinny być ustawione wcześniej. Jeśli nie wiesz jak to zrobić, proszę przeczytaj NET-2-HOWTO.

Możesz bezpiecznie pominąć te zmienne tylko w tych przypadkach:

Jeśli jedynie chcesz połączyć dwa komputery w autonomicznej sieci to możesz wybrać dowolne adresy IP, powiedzmy 200.0.0.1 i odpowiednio 200.0.0.2. W tym przypadku ustawiasz NETWORK="200.0.0.0" i NETMASK="255.255.255.0". To są przykłady jakich będę używał w paragrafie Szybka instalacja PLIP (zobacz poniżej).

UWAGA: 200.0.0.1 i 2 to tylko przykładowe IP. Nie radzę Ci ich używać, bo mogą one być adresami prawdziwych hostów w Internecie!

Radzę wybrać adres z puli adresów zarezerwowanych:

      10.0.0.0         -    10.255.255.255
      172.16.0.0       -    172.31.255.255
      192.168.0.0      -    192.168.255.255

W pliku /etc/hosts na obydwu komputerach powinieneś dodać pozycje z adresem IP komputerów, które łączysz przez PLIP. W moim przykładzie, pozycjami tego pliku są:

200.0.0.1       one             #to jest adres pierwszego komputera
200.0.0.2       two             #to jest adres drugiego komputera

Gdzie one i two to nazwy, które wybrałeś dla tych dwóch hostów.

Jeśli chcesz aktywować NFS, to poza zaznaczeniem odpowiednich pól w konfiguracji jądra, musisz dodać w pliku /etc/exports pozycje opisujące katalogi, które chcesz udostępniać. W moim przykładzie, aby możliwe było zamontowanie katalogu /usr powinieneś dodać:

 /usr                           two (ro)

5. Aktywacja połączenia PLIP

Wreszcie, oto komendy, które muszą być wykonane z prawami root'a, które aktywują interfejs PLIP (oczywiście wcześniej musi być poprawnie podłączony kabel).

Po pierwsze należy potwierdzić, że urządzenie lp nie jest aktywne:

   #cat /proc/devices

Nie może się pojawić następująca rzecz:

6 lp

Ponownie używam nazw one i two jako przykład. Na "one" musisz wydać polecenie:

   #ifconfig plip1 one pointopoint two up

Sprawdź czy to pracuje...

   #ifconfig



 .....
 .....
 plip1     Link encap:10Mbps Ethernet  HWaddr FC:FC:C8:00:00:01
           inet addr:200.0.0.1  P-t-P:200.0.0.2  Mask:255.255.255.0
           UP POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0
           TX packets:0 errors:0 dropped:0 overruns:0
           Interrupt:7 Base address:0x378

UWAGA: jeśli używasz modułów bez demona kerneld, który automatycznie ładuje odpowiedni moduł na żądanie, to pamiętaj o:

   #insmod plip

przed wydaniem polecenia ifconfig. Jeśli jesteś paranoikiem, sprawdź, czy moduł został załadowany używając polecenia:

   #lsmod

Module:       #pages:    Used by:
plip              3              0

Dodaj routing do two:

   #route add two

I jeżeli chcesz NFS dla drugiego:

   #rpc.portmap
   #rpc.mountd
   #rpc.nfsd

Na komputerze "two" komendy wyglądają tak samo, tylko że musisz wpisać one zamiast two.

Jeden z Twoich komputerów będzie miał prawdopodobnie tylko połączenie typu PLIP. Jeśli to prawda, możesz także wydać polecenie:

   #route add default gw one

na tym komputerze. W moim poniższym przykładzie, two jest laptopem, który jako jedyne używa połączenia PLIP z one, więc wydałem powyższe polecenie na komputerze two.

Wreszcie przetestuj połączenie za pomocą

   #ping two

z one oraz

   #ping one

z two i zobacz czy wszystko pracuje.

Oczywiście komendy te mogą być wykonywane automatycznie przez skrypt lub podczas startu systemu. Musisz jedynie napisać skrypt, który wykonywałby te komendy. Możesz je wywołać z prawami root-a lub możesz dodać komendę do skryptu /etc/rc.d/rc.inet2 który jest uruchamiany podczas startu. Jeśli chcesz używać mojej Szybkiej Instalacji PLIP, znajdziesz tam wszystkie pliki konfiguracyjne i skrypty.

6. Komunikaty jądra podczas startu

Po skonfigurowaniu i kompilacji jądra systemowego z obsługą PLIP, zbadaj komunikaty za pomocą komendy dmesg (8).

Powinieneś zobaczyć coś takiego:

NET3 PLIP version 2.0 gniibe@mri.co.jp
plip1: Parallel port at 0x378, using assigned IRQ 7.

Oczywiście, jeżeli używasz modułów to ujrzysz ten komunikat kiedy zostanie zainstalowany moduł plip.c (#insmod plip.c) (przez Ciebie lub przez kerneld). W zależności od konfiguracji klogd i syslogd komunikaty plip-a mogą być rejestrowane w logach systemowych. Nie wpadaj w panikę jeżeli nie ujrzysz tych komunikatów. Jeśli lsmod pokazuje, że moduł jest załadowany to w zupełności wystarczy.

7. Często Zadawane Pytania

Ten paragraf (mam nadzieję) rozwiążę Twoje problemy. Jeśli masz inne pytania, zawsze możesz do mnie napisać.

  1. Q: Otrzymuję następujące komunikaty podczas startu systemu:
       SIOCSIFADDR: No such device
       SIOCADDR: Network is unreachable
    
    a kiedy próbuję zestawić połączenie jak to zostało opisane powyżej, otrzymuję ponownie komunikaty o błędach:
       SIOCSIFADDR: No such device
       SIOCSIDDSTADDR: No such device
       SIOCADDRT: Network is unreachable
       mount clntudp_create: RPC: Port Mapper failure - RPC: Unable to send
    
       A: Jądro z różnych przyczyn nie obsługuje PLIP. Przyczyną może być:
    
    • Nie zaznaczyłeś obsługi PLIP podczas konfiguracji jądra.
    • Zaznaczyłeś obsługę drukarki podczas konfiguracji jądra.
    • Skompilowałeś PLIP jako moduł i go nie załadowałeś.
  2. Q: Czy istnieje możliwość ogsługi PLIP i LP jednocześnie, wykluczając użycie modułów, na przykład przy dwóch portach równoległych? A: Tak. Są na to dwa sposoby opisane w paragrafie Wstawki umożliwiające jednoczesne działanie PLIP i LP:
    • Możesz założyć wstawkę aby umożliwić jednoczesne działanie PLIP i LP.
    • Możesz założyć inną wstawkę do jądra aby obsługiwało ono PLIP i LP na osobnych portach.
  3. Q: Napisałem skrypt, który łączy oba moje komputery. Zestawiłem połączenie automatycznie w rc.inet2, gdzie wywołuję skrypt uruchamiający łącze i uruchamiający VFS. Mój komputer two montuje zasoby komputeraone. Dodałem pozycje do /etc/fstab na komputerze two. Jeśli uruchamiam two gdy one jest wyłączony, two zawiesza się na kilka minut w momencie "mounting remote file systems...".
    A: Tak się dzieje, ponieważ two czeka aby zamontować zasoby
    one, lecz jeśli one jest wyłączony to musisz poczekać aż two znudzi się
    czekaniem. Aby tego uniknąć, możesz:
    
    • Zakomentować w rc.inet2 komendę, za pomocą której montowane są zdalne systemy plików.
    • Wyrzucić wpisy w /etc/fstab na two i podmontować zdalny system plików ręcznie jeśli będziesz tego potrzebował.
  4. Q: Połączenie jest zestawione, ale ping zawodzi. Otrzymuję takie komunikaty od jądra:
    plip1: timed out (1, 89)
    A: To oznacza, że twoja strona połączenia pracuje, twój komputer wysyła
    sygnał, ale druga strona nie odpowiada z następujących powodów:
    
    • Kabel nie jest odpowiednio podłączony lub jest popsuty.
    • Druga strona nie ma uruchomionego PLIP.
    • Jesteś połączony z laptopem, który nie ma odpowiedniego portu równoległego, zobacz następne pytanie.
  5. Q: Zainstalowałem PLIP, lecz jeśli używam ping to otrzymuję 100% strat w pakietach. Łączę mój komputer biurkowy z notebookiem.
    A: Niektóre porty równoległe w notebookach nie są odpowiednie do
    połączeń typu PLIP, ponieważ są tylko portami drukarkowymi. Mogą tylko
    wysyłać dane. Niemożliwy jest ich odbiór. Niestety nie wiem co sprawić,
    aby one pracowały. Jedyną nadzieją jest:
    
    • Popatrz na setup w swoim notebook-u. Może jest tam jakiś sposób konfigurowania portu równoległego jako port równoległy, a nie jako port drukarki.
    • Spróbuj plip w trybie 0. Niestety, nie wiem jak to zrobić i czy jest to możliwe w najnowszych wersjach jądra.
  6. Q: Jakie prędkości mogę osiągnąć używając PLIP?
    A: To jest trudne pytanie, ponieważ jest wiele czynników wpływających
    na wydajność takiego połączenia:
    
    • Typ procesora na obydwu komputerach.
    • Typ portu równoległego i jego konfiguracja.
    • Obciążenie systemu.
    • Do czego używasz PLIP.
    Dla przykładu mogę podać, że powinieneś osiągnąć około 40Kb/sek, o wiele szybciej niż dla połączeń szeregowych i porównywalnie ze słabymi kartami ethernet.
  7. Q: Czy coś się stanie, kiedy bedę wiele razy kładł ifconfig down i zetawiał ifconfig up połączenie na interfejsie plip1?
    A: Wygląda na to, że będziesz musiał dodać <tt/-arp/ do komendy
    <tt/ifconfig/, za wyjątkiem pierwszego razu podczas startu systemu.
    Ja tego nie potrzebuje, ale ktoś może.
    
  8. Q: Przeglądałem zarezerwowane adresy IP i podane przez Ciebie adresy 200.0.0.1 i 200.0.0.2 nie należą do nich. Czy nie powinny one być zmienione?
    A: Tak, powinny. Tak jak podkreśliłem na początku, wybrałem te
    adresy tylko ze względu na ich prostotę. Możesz je dowolnie zmieniać. Oto
    wycinek z net-3-howto:
    
    RFC1597 zarezerwował kilka adresów IP dla prywatnych sieci. Powinieneś
    ich używać, gdyż nie powodują nieprzyjemnych zdarzeń gdy przypadkowo
    połączysz się z Internet. Zarezerwowane adresy to:
    
          10.0.0.0         -    10.255.255.255
          172.16.0.0       -    172.31.255.255
          192.168.0.0      -    192.168.255.255
    
  9. Q: Czy jest sposób aby dokładnie dostrić parametry PLIP bez ingerencji w źródła?
    A: Tak! Spróbuj /usr/sbin/plipconfig. Poczytaj podręcznik
    systemowy dotyczący tej komendy.
    
  10. Q: Mam problemy z połączeniem dwóch hostów za pomocą PLIP. Pierwszy ma najnowsze jądro, a drugi wciąż używa starej serii 1.0.x PLIP. Czy to jest moim problemem?
    A: Tak, najlepiej jest używać tej samej wersji PLIP na obu końcach
    połączenia.
    
  11. Q: Obsługa PLIP w niektórych wersjach jądra 1.3.x nie pracuje. Co się dzieje?
    A: Pamiętaj, że jądra o numerach wersji 1.nieparzysty.x są wersjami
    rozwojowymi. "Bogowie", którzy codziennie ciężko pracują nad ulepszaniem
    Linuxa często wypuszczają niestabilne wersje. Teraz wersje 2.0.x powinny
    być stabilne.
    

8. Szybka instalacja PLIP

Przed napisaniem tego mini-HOWTO, stworzyłem zestaw plików potrzebny do szybkiej instalacji PLIP. W kilka minut, nie licząc kompilacji jądra powinieneś zestawić połączenie PLIP. Zarchiwizowane pliki możesz znaleźć na mojej stronie domowej: http://www.cli.di.unipi.it/~controzz/intro.html. Może ktoś w koncu udostępni moje pliki na publicznym serwerze ftp.

9. Wstawki umożliwiające jednoczesne dziłanie PLIP i LP

Najlepszą drogą do jednoczesnego dziłania PLIP i LP jest użycie modułów. Możesz załadować moduł plip.o i wyrzucić go kiedy będziesz chciał drukować, lub na odwrót. Jeśli na prawdę potrzebujesz używać PLIP i LP naraz, wypróbuj poniższe wstawki.

9.1 PLIP i LP na tym samym porcie

W tej sytuacji możesz spróbować następujących wstawek do jądra.

Musisz zmodyfikować następujące fragmenty kodu, lecz pamiętaj wykonać kopię bezpieczeństwa:


--- begin ---

******** modifications to linux/drivers/char/lp.c ***********************
struct lp_struct lp_table[] = {
        { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL,
NULL, },
/*      { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL,
NULL, },
        { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL,
NULL, },
*/
};
#define LP_NO 1

******** modifications to linux/drivers/net/Space.c ********************
#if defined(PLIP) || defined(CONFIG_PLIP)
    extern int plip_init(struct device *);
    static struct device plip2_dev = {
        "plip2", 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, };
    static struct device plip1_dev = {
        "plip1", 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &plip2_dev, plip_init, };
/*    static struct device plip0_dev = {
        "plip0", 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &plip1_dev, plip_init, };
*/
#   undef NEXT_DEV
#   define NEXT_DEV     (&plip1_dev)
#endif  /* PLIP */

---end---

Zrzeczenie: Otrzymałem te wstawki i opublikowałem je w niezmienionej postaci. Oznacza to, że używasz ich na własną odpowiedzialność. W najgorszym wypadku, skompilujesz jeszcze raz jądro używając starych plików.

9.2 PLIP i LP na osobnych portach

Jeśli masz przynajmniej dwa porty równoległe, możesz wypróbować następujące wstawki, które umożliwią pracę PLIP na jednym porcie, a LP na drugim.


--- begin ---

1. Comment out one line in kernel source file, drivers/char/lp.c.

struct lp_struct lp_table[] = {
{ 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, },
{ 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, },
/* { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, */
}; 
    3 -> 2

2. Kernel configuration

    PLIP (parallel port) support (CONFIG_PLIP) [n] y

    Parallel Printer support [y] y

3. Kernel message at startup

    lp1 at 0x0378, using polling driver
    .....
    NET3 PLIP version 2.0 gniibe@mri.co.jp
    plip2: Parallel port at 0x278, using assigned IRQ 5.

---end---

Zrzeczenie jak w sekcji 8.1

10. Połączenie PLIP między DOS-em a Linux-em

Po pierwszym wydaniu tego mini-HOWTO wiele ludzi pisało z prośbą o inforamcję o połączeniu pomiędzy Dos-em a Linux-em. To doprowadziło mnie do dodania tego paragrafu.

Ten fragment pochodzi z artykułu James'a McDuffie'go mcduffie@scsn.net, który znalazłem w Linux Gazette. Traktuje on o szybkiej instalacji polączenia PLIP między Linuxem i DOS-em przy użyciu Windows i Trumpet Winsock i podaje adreswspaniałego programu umożliwiającego uruchamianie programów pracujących pod X-Windows na MS-Windows.

Następna sekcja jest dodatkiem przysłanym przez James'a Vahn'a jvahn@short.circuit.com, gdzie opisuje on jak zestawić połączenie i jak rozwiązać niektóre problemy.

Zakładam, że już zestawiłeś poprawnie połączenie PLIP po stronie Linuxa i masz odpowiedni kabel. W przeciwnym razie powróc do poprzednich paragrafów.

Teraz po stronie DOS-a potrzebujesz po pierwsze potrzebujesz sterownika pakietów. Możesz go znaleźć tutaj: ftp.crynwr.com/drivers/plip.zip

Program pracuje po DOS-em jako standardowy sterownik pakietów Ethernet. Jeśli chcesz używać PLIP z Windows potrzebujesz także Trumpet Winsock. Jest to interfejs TCP/IP. Możesz znaleźć też takie oprogramowanie pod DOS-a.

Powróćmy teraz do komputera z Linuxem i dodajmy na nim adres komputera pracującego pod DOS do /etc/hosts. Jeśli Twój DOS-owy komputer nie ma zarejestrowanego adresu IP, możesz wybrać jakikolwiek adres (pamiętaj o zarezerwowanych adresach podanych w paragrafie 3).

Teraz załóżmy, że wybrałeś nazwę linux dla komputera pracującego pod Linux i dos dla komputera DOS-owego. Musisz napisać:

ifconfig plip1 linux pointopoint arp up route add dos

Oczywiście jeśli chcesz to zautomatyzować dodaj następujące polecenia do /etc/rc.d/rc.inet1:

/sbin/ifconfig plip1 linux pointopoint arp up /sbin/routte add dos

To ustanawia interfejs i dołącza do niego rutowanie. Oczywiście, jeżeli używasz drugiego portu równoległego musisz jako interfejs wpisać plip2 zamiast plip1.

Wróć do komputera z DOS/Windows i edytuj autoexec.bat. Musisz dodać następujące linie:

c:\plip\plip.com 0x60
c:\tcpip\winsock\winpkt.com 0x60

Oczywiście, zakładam, że umieściłeś plik plip.com w katalogu c:\plip a plik winpkt.com w c:\tcpip, w przeciwnym razie powinieneś dodać odpowiednie ścieżki dostępu.

To ustawiam program plip.com na wektorze pakietów 0x60 i ładuje winpkt.com na tym samym wektorze. Jeśli używasz innego portu niż lpt1 to będziesz musiał dodać numer przerwania i adres i/o jako parametry przy wywołaniu plip.com. Teraz przejdziemy do konfiguracji Trumpet Winsock. Musisz wyłączyć obsługę SLIP i PPP i wpisać 60 do okienka zatytułowanego Packet vector. Następnie wpisz adres IP komputera, jako domyślną bramkę adres IP komputera Linux-owego oraz adres serwera nazw, którym może być Twój komputer lub komputer u twojego dostawcy internetowego. Zamknij setup i zrestartuj Winsock, a wszystko powinno już działać. Umieść Winsock w grupie startup i masz wszystko zautomatyzowane.

Jeśli chcesz korzystać z Internetu pod Windows poprzez komputer Linux-owy, musisz ustawić IP Masquerading. Więcej informacji zobaczysz w NET-3-HOWTO.

Znalazłem także program, który pozwala uruchamiać programy X-Windows pod Windows! Możesz go znaleźć pod adresem www.tucows.com

Skonfiguruj go zgodnie z zaleceniami i zatelnetuj się z komputera pracującego pod Windows i ustaw zmienną DISPLAY na ten komputer (na przykład DISPLAY=duncan:0.0) i uruchom żądany program. Nie ma nic lepszego jak uruchamianie xv pod Windows!

10.1 Doświadczenia z połąćzeniem PLIP między DOS-em a Linux-em.

UWAGA: Otrzymałem ten domkument od James'a Vahn'a jvahn@short.circuit.com i umieściłem go tutaj w niezmienionej postaci. Oznacza to, że wszelkie pytania należy kierować do niego, a nie do mnie. Jego doświadczenia z połączeniem PLIP z komputerem z DOS-em wyposażonym tylko w stacje dysków elastycznych są doskonałym przykładem na to jak poradzić sobie z różnymi problemami.

Ostatnia aktualizacja: 11/07/1996

Mój komputer wyposażony jedynie w stację dysków elastycznych pracujący pod DOS-em jest połączony z komputerem Linuxowym. Pierwszy port na komputerze z Linuxem jest wykorzystywany przez drukarkę. Oba komputery są stale podłączone i telnetuję się z komputera DOS-owego na Linux-owy. To moje uwagi i spostrzeżenia.

Kiedy jądro wykrywa ilość portów równoległych w komputerze i uruchamia wszystkie z nich, chyba, że wykluczysz niektóre z nich z przeszukiwania. Jedną z metod jest ładowanie sterowników jako modułów.

gniibe@mri.co.jp napisał:

===========================
Cały czas polecam używanie PLIP/LP jako modułów z tego względu, że:

Mając zainstalowaną w modułach obsługę PLIP i LP, możesz podać, który port jest używany przez PLIP, a który przez LP. Oto przykład:

     # insmod lp.o io=0x378
     # insmod plip.o io=0x278 irq=2

Możesz nawet używać obu portów równoległych:

     # insmod plip.o io=0x278,0x3bc irq=2,5

W powyższym przykładzie, plip0 jest przydzielony adres 0x278, a numer przerwania to 2, plip1 jest przydzielony adres 0x3bc, a numer przerwania to 5.

============================

Używanie modułów jest chyba najlepszym rozwiązaniem. Kolejna metoda pokazuje jak zmienić kod źródłowy jądra, aby umożliwić jednoczesne działanie PLIP i LP na różnych portach bez użycia modułów. Jeśli nie jesteś na ty z modułami, ten sposób może być szybszy w realizacji.

Będziesz musiał zmodyfikować dwa pliki źródłowe jądra. Ja używam jądra 1.2.13 i wniosłem kilka poprawek do ../linux/drivers/net/Space.c. Spójrz na fragment około 205 lini, gdzie znajdują się definicje PLIP i upewnij się, czy porty i numery przerwań odpowiadają Twoim. Sprawdź także jakim driverom one odpowiadają (plip0, plip1, plip2). W moim przypadku port 0x278 używa przerwania 5 (zworki na karcie są tak ustawione), ale Space.c definiuje go tak aby używał przerwania 2. Wolałem dokonać zmian w tym miejscu niż otwierać obudowę i przestawiać zworki. Alternatywą jest ustawienie przerwania później jako parametr ifconfig, ale jądro będzie startowało ze złym numerem przerwania dla PLIP, a to może być dla Ciebie dokuczliwe. Zmiana jest niewielka.

Następny, trudniejszy krok to: W pliku ../drivers/char/lp.c znajdziesz taki fragment w okolicach 38 lini:


struct lp_struct lp_table[] = {
    { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, },
    { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, 
/*  { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, 
 * 0x278 reserved for plip1
 *
 * }; 
 * #define LP_NO 3 
 */
}; 
#define LP_NO 2 

Zauważ zmiany: jeden port jest zakomentowany, więc tylko dwa porty są zdefiniowane. Port 0x3bc nie będzie prawdopodobnie pracował dla PLIP, ponieważ przerwanie dla tego portu jest wadliwe. Zostało to zauważone na przykładzie starych adapterów monochromatycznych MDA.

Wykonałeś kopie zapasowe przed modyfikacjami, prawda? Teraz skompiluj nowe jądro z obsługą drukarki, sieci, fikcyjnego interfejsu oraz plip.

Skonfiguruj system. To jest mój plik /etc/rc.d/rd.inet1:

#!/bin/bash
#
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0

/sbin/ifconfig dummy 200.0.0.1
/sbin/route add -net 200.0.0.0 netmask 255.255.255.0
/sbin/ifconfig plip1 arp 200.0.0.1 pointopoint 200.0.0.2 up
/sbin/route add 200.0.0.2
/sbin/ifconfig dummy down

Zauważ, że arp jest używany przy połączeniach Linux-DOS. Nie jest używany przy połączeniach Linu-Linux.

Do pliku /etc/hosts możesz dodać:

200.0.0.1       console1
200.0.0.2       console2

Komputer z DOS-em nazywa się console2. Zwróc uwagę na ostrzeżenia Andre'a dotyczące tych adresów. Lepiej używać oficjalne schematy adresowania.

Przeładuj system, aby zmiany zadziałały. Podczas startu powinieneś zobaczyć następującą sekwencję:

lp0 at 0x03bc, using polling driver
lp1 at 0x0378, using polling driver
[....]
NET3 PLIP version 2.0 gniibe@mri.co.jp
plip1: Parallel port at 0x278, using assigned IRQ 5.

Komenda route powinna pokazać coś takiego:

Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
console2        *               255.255.255.255 UH    1436   0      136 plip1
loopback        *               255.0.0.0       U     1936   0      109 lo

a ifconfig plip1 powinien pokazać:

plip1     Link encap:10Mbps Ethernet  HWaddr FC:FC:C8:00:00:01
          inet addr:200.0.0.1  P-t-P:200.0.0.2  Mask:255.255.255.0
          UP POINTOPOINT RUNNING  MTU:1500  Metric:1
          RX packets:132 errors:0 dropped:0 overruns:0
          TX packets:136 errors:0 dropped:0 overruns:0
          Interrupt:5 Base address:0x278 

Spójrz na /etc/inetd.conf i zobacz, czy telnet jest odkomentowany. Możesz przeczytać podręcznik systemowy "man" dla tcpd, oraz o używaniu /etc/hosts.allow (ALL: LOCAL) i /etc/hosts.deny (ALL: ALL). Powinieneś mieć także możliwość wykonania "telnet localhost"

Teraz strona DOS-a. Jeszcze raz, bądź nieufny w stosunku do portu 0x3bc jeśli taki u Ciebie istnieje.

Ja używam programu telnet dostarczanego przez NCSA i sterownik PLIP dostarczany przez Crynwr. To wszystko możesz znaleźć na następujących serwerach:

ftp.ncsa.uiuc.edu/Telnet/DOS/ncsa/tel2308b.zip ftp.crynwr.com/drivers/plip.zip

Upewnij się, czy używasz wersji 2.3.08 klienta telnetu i wersji 11.1 sterownika PLIP. Znajdź i przeczytaj SUPPORT.DOC.

PLik CONFIG.TEL. Większość tego pliku pozostaje nie zmieniona. Aby zaoszczędzić miejsce wyciąłem linie, które pozostawiłem niezmienione. Drugi port na tym komputerze jest ustawiony jako 0x278 na 5 przerwaniu.

myip=200.0.0.2 
netmask=255.255.255.0       # subnetting mask
hardware=packet             # network adapter board (packet driver interface)
interrupt=5                 # IRQ which adapter is set to
ioaddr=60                   # software interrupt vector driver is using
#
#[...lots unchanged...]
#
# at the end of the file, put this line:
name=console1 ; hostip=200.0.0.1 ; nameserver=1 ; gateway=1 

(console1 jest nazwą komputera z Linuxem, możesz użyć jakiejkolwiek nazwy).

Złożyłem kabel długości 12 stóp łączący oba komputery. Standardowy 11-kontaktowy kabel drukarkowy powinien także pracować. Plik plip.c pokazuje schemat połączenia. Mimo, że mój kabel posiada połączenie 17-17, myślę, że nie jest on do niczego używany i nie było go na gotowym (kupionym) kablu.

@echo off
plip.com 0x60 5 0x278
telbin -s console1

Te komendy powinny Cię połączyć z komputerem Linux-owym na /dev/ttyp. Klient telnetu NCSA posiada 8 wirtualnych ekranów, a także może działać jako serwer ftp. Interfejs PLIP umożliwia dobrą przpustowość. Osiągam prędkości rzędu 6.5K/s na moich antykach. Mam nadzieję, że będziesz miał większe osiągi. :-)

11. Pytania? Komentarze? Napisz do mnie.

Jeśli masz jakieś pytania to możesz się ze mną skontaktować pod adresem controzz@cli.di.unipi.it

Wszelkie komentarze, raporty o błędach są mile widziane. Nastepna wersja będzie zawierała dłuższe FAQ, oczywiście jeżeli będziecie przysyłali pytania.

12. Gdzie można znaleźć najnowsze wersje tego mini-HOWTO.

Tym mini-HOWTO opiekują się koordynatorzy HOWTO. Jest on wysyłany co miesiąc na grupę news comp.os.linux.answers i możesz go znaleźć w katalogu HOWTO na sunsite i jego mirrorach.

Inną drogą do odnalezienia tego HOWTO (w wersji oryginalnej) jest moja strona domowa: www.cli.di.unipi.it/~controzz/intro.html

13. Podziękowania

Wielkie podziękowania dla:

14. Prawa autorskie

Prawa autorskie do dokumentów Linux HOWTO posiadają ich autorzy. Dokumenty te mogą być reprodukowane i dystrybuowane w całości lub części, w mediach fizycznych lub elektronicznych, tak długo jak tak notka będzie załączona do dokumentu. Komercyjna dystrybucja jest dozwolona. Jednakże autor chciałby zostać poinformowany o takowej.

Wszystkie tłumaczenia, prace pochodne lub prace zebrane muszą zawierać notę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodnej z tego dokumentu i obłożyć ją dodatkowymi restrykcjami dotyczącymi dystrybucji. Wyjątki od tej reguły, mogą być rozpatrzone w określonych warunkach. Proszę skontaktować się z koordynatorem HOWTO na adres podany poniżej.

Ogólnie biorąc, chcemy promować i szerzyć te informacje na wiele sposobów. Jednakże chcemy zachować prawa autorskie tych dokumentów i pragniemy być poinformowani o każdym sposobie ich dystrybucji.

Jeśli masz jakieś pytania, skontaktuj się z Greg'iem Hankins'em, koordynatorem HOWTO - gregh@sunsite.unc.edu

15. Od tłumacza

Tłumaczenie to chronione jest prawami autorskimi Bartka Papierskiego. Ogólne zasady dystrybucji są takie same jak w oryginalnym dokumencie.

Jeśli znajdziesz w tym dokumencie jakieś rażące Twoje oko błędy ortograficzne, gramatyczne, lub błędy w tłumaczeniu to skontaktuj się ze mną, a ja postaram się to naprawić: bartekp@dom.vr.pl

Najnowszą wersję tego dokumentu możesz znaleźć na oficjalnej stronie tłumaczeniowej http://www.jtz.org.pl. Najnowsze wersje przetłumaczonych przeze mnie dokumentów znajdziesz także na mojej stronie http://www.dom.vr.pl/~bartekp/howto/tlumaczenia.html

Oto zmiany jakie wprowadziłem w tym dokumencie:

doc-linux-pl-2002.06.14.orig/mini/html/PPP-over-minicom.pl.html0100664000175000017500000002701107104371340022632 0ustar covencoven Połączenie PPP przez minicom-a.

Połączenie PPP przez minicom-a.

Autor: Winfried Trümper, winni@xpilot.org
v0.0, 9 Grudnia 1996
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.01, 26 Lipca 1997


Chcesz mieć ładne narzędzie z menu do obsługi PPP? Łatwą w obsłudze i zarazem bardzo zaawansowaną książkę telefoniczną z numerami telefonów twoich dostawców Internet-u? Chcesz widzieć co się dzieje jak się logujesz? Jeśli tak, to ten dokument jest dla ciebie! Dokument ten został napisany w standarcie ISO-8859-2. Oryginał znajduje się pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO/mini.

1. Wprowadzenie.

PPP stał się standardowym protokołem sieciowym jeśli chodzi o połączenia z Internet-em realizowane poprzez telefon. Odpowiedni demon "pppd" dostarczany jest razem z bardzo prymitywnym narzędziem do dzwonienia, które obsługuje dobrze tylko bardzo proste ustawienia.
Opiszę tutaj alternatywne rozwiązanie na podstawie "minicom-a".

Dokument ten jest krótszą wersją niemieckiego "Internetanbindung mit PPP" www.uni-koeln.de. (Może kiedyś to przetłumaczę - tłumacz).

1.1 Program emulujący terminal - "minicom".

"minicom" jest bardzo wyrafinownym narzędziem służącym do dzwonienia do innych komputerów (dostawców internet-u lub BBS-ów). Ma fajne kolorowe menu, książkę telefoniczną i bardzo rozwinięty język skryptowy. Dlatego też idealnie nadaje się do użycia w połączeniu z "pppd".

Tak przy okazji: Jeśli użyjesz polecenia

/sbin/mgetty /dev/modem

to każdy, kto posiada konto na twoim komputerze może zadzwonić do ciebie (np. używając "minicom-a"). Ale to już inna historia. Przeczytaj dokumentację na temat "mgetty".

1.2 Komentarze.

Jestem zainteresowany tylko tymi komentarzami, które wnoszą coś nowego do tego dokumentu. Nie będę odpowiadał na pytania ogólne dotyczące Linux-a, PPP, SLIP-a czy sieci.

1.3 Znane błędy.

W czasie pisania tego dokumentu, w programach "minicom" i "runscript" oraz w podanej niżej metodzie były błędy.

Wyglada na to, że Miquel van Smoorenburg (autor "minicom-a") jest zbyt zajęty, żeby naprawić te błędy. Tak więc ochotnicy są mile widziani.

2. Dzwonienie przy pomocy minicom-a.

Wiele podręczników dotyczących PPP zaleca wyjść z minicom-a po dodzwonieniu się. Ale naprawdę nie ma potrzeby wychodzenia z tego wygodnego programu.

2.1 Konfiguracja minicom-a.

Wykonaj "minicom -s" i wybierz z menu "Serial port setup". Pierwszą pozycją powinno być "Serial Device" - jest to najważniejsze z ustawień: urządzenie szeregowe, do którego podłączony jest twój modem. (Czy są jacyś ochotnicy, do przeróbki minicom-a tak, żeby obsługiwał kilka urządzeń szeregowych na raz?) Wciśnij <ENTER>, aby potwierdzić i <ESC>, aby wyjść do pierwszego menu. Wybierz "Exit to minicom" i wpisz "atdt99999". Twój modem od razu powinien zacząć wybierać numer i powinieneś usłyszeć "kliknięcie" kiedy modem się dodzwoni. Oczywiście "99999" to nie jest prawidłowy numer telefonu.

2.2 Ręczne startowanie PPP.

Może już próbowałeś zadzwonić do swojego dostawcy Internet-u. Widziałeś takie dziwne znaczki na ekranie po zalogowaniu się (jeśli nie, to wpisz "ppp")? Są one wynikiem programu "ppp" (albo jakiegoś odpowiednika) uruchomionego na drugim końcu linii. Jeśli tak, to możesz uruchomić u siebie demon "pppd" i przeanalizować potem logi systemowe.

Aby uruchomić "pppd" w minicom-ie, możesz zdefiniować nową metodę ładującą (zobacz samemu jak to się robi) albo przedefiniować ustawienie "kermit program" z menu konfiguracyjnego "Filename and paths":

                A - Download directory :
                B -   Upload directory :
                C -   Script directory :
                D -     Script program : /usr/bin/runscript
                E -     Kermit program : /usr/sbin/pppd file /etc/ppp/mini_options

Teraz jak zobaczysz te dziwne znaczki możesz wcisnąć <Alt-K>, aby uruchomić "pppd".

Reszta tego dokumentu zajmuje się automatyzacją logowania i uruchamiania "pppd".

2.3 Analizowanie logów.

Chociaż nie chcę wyjasniać jak ma być konfigurowane PPP, to pokażę małą sztuczkę jak czytać logi. Aby wyciągnąć ważne dla nas informacje z pliku "/var/log/debug" (albo alternatywnego "/var/log/daemon.log") wykonaj polecenie:

                tail -n 40  /var/log/debug |\
                        grep -E " pppd\[[0-9]*\]:" |\
                        sed -e "s/^.*pppd\[/[/" 

Powinieneś zobaczyć coś takiego:

                sent [LCP ConfReq id=0x1 <mru 296>]
                rcvd [LCP ConfRej id=0x1 <mru 296>]

co pokazuje, że wysłaliśmy prośbę o konfigurację, aby ustawić maksymalną jednostę do otrzymania (mru) na 296. Druga strona odrzuciła naszą prośbę ("configuration rejected"). W tym przypadku po prostu usunąłem opcję "mru" z pliku "/etc/ppp/options".

2.4 Skonfiguruj numer telefonu.

Jeśli powyższe się udało, to może chcesz zapisać numer telefonu w książce telefonicznej "minicom-a". Wciśnij <Alt-D>, aby wybrać menu dzwonienia i wybierz "Edit":

                A -  Name                : Xeno
                B -  Number              : 022039697303
                C -  Dial string #       : 1
                D -  Local echo          : No
                E -  Script              : /etc/ppp/login.script
                F -  Username            : ppp-382
                G -  Password            : top-secret
                H -  Terminal Emulation  : VT102
                I -  Backspace key sends : Delete
                J -  Linewrap            : Off
                K -  Line Settings       : Curr 8N1

To jest przykładowa pozycja, której używam do dzwonienia do swojego dostawcy Internet-u. Skrypt /etc/ppp/login.script jest pokazany niżej. Dwie specjalne zmienne są przekazywane do tego skryptu: $(LOGIN) i $(PASS), które są ustawione na identyfikator użytkownika (F) i hasło (G). Ta cecha czyni minicom-a trochę bardziej elastycznym, ponieważ potrzebujesz tylko jednego skryptu, żeby zautomatyzować logowanie się do kilku dostawców.

2.5 Skrypt logujący.

"minicom" uruchamia skrypt logujący, po tym jak otrzyma łańcuch "CONNECT". A dokładniej, "minicom" nie wykonuje tego skryptu samemu, tylko woła do tego zadania narzędzie "runscript" jako podproces.

Poniżej znajduje się przykład jakiego używam dla swojego dostawcy.

                # v1.0, 20.08.96 Winfried Trümper <winni@xpilot.org>
                print ""
                print "Automatic login via /etc/ppp/login.script"
        
                ## odkomentuj jeśli musisz wcisnąć <ENTER>, aby otrzymać prompt
                #send ""
        
                expect {
                        "ogin:"
                        "ogin>"
                        "sername:"
                        "sername>"
                        "NO CARRIER" exit 1
                }
                send "$(LOGIN)"
                expect {
                        "assword:"
                        "assword>"
                        timeout 20
                }
                send "$(PASS)"
                expect {
                        "port"  send "ppp"
                        "Start your PPP now"
                        "}!}!}"
                        timeout 10
                }
                print ""
                print "Now switching into ppp-mode ..."
                print ""

                ! /usr/sbin/pppd  file /etc/ppp/mini_options

                print ""
                print "the command   killall -TERM pppd   terminates pppd"

Możliwość wykonywania programów zewnętrznych przez "runscript" używana jest do uruchamiania "pppd". Skopiuj swój oryginalny plik z opcjami dla ppp do "/etc/ppp/options.ttyS1" (gdzie "ttyS1" musisz zamienić na urządzenie, do którego dołączony jest twój modem) i skasuj wszystkie linie, które są specyficzne dla twojego modemu (takie jak: "connect", "crtscts" albo "modem") z /etc/ppp/options.
Umieść opcje, które powinny być specyficzne dla połączenia ppp przez minicom-a w pliku "/etc/ppp/mini_options". Jedną z tych opcji powinno być

                disconnect "chat '' '\d\d+++\d\dATH\r\c'"

Ta opcja MUSI być ponieważ "pppd" pobiera dane z "stdin" i nie może zawiesić modemu poleceniem "crtscts".

2.6 Zautomatyzowane dzwonienie przy starcie.

Użyj opcji "-d", aby dzwownić pod wskazany numer od razu po uruchomieniu minicom-a.
Możesz też spróbować

                open -sl -- minicom -d 1

Aby wrzucić minicom-a na inną konsolę - zobacz mini-HOWTO Consoles-Many.

2.7 Przyszłe rozszerzenia.

Ponieważ "pppd" jest demonem, więc nie jest on przeznaczony do działania w interakcji czy obserwacji. I to jest w porządku. Przecież używamy systemy "unixowego", nie ?

Standardowym rozwiązaniem jest jakiś "front-end". Są jacyś chętni, do grzebania się z minicom-em?

Fajnymi rozszerzeniami byłyby:

Koniec.

2.8 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/Programming-Languages.pl.html0100664000175000017500000003645207457640740024006 0ustar covencoven Języki programowania (małe JTZ)

Języki programowania (małe JTZ)

Autor: Risto S. Varanka
v?, 22 lipca 2000
Wersja polska: Tomasz 'tsca' Sienicki, tsca@edb.dk
v1.0, 10 grudnia 2001


Krótkie porównanie najważniejszych języków programowania oraz bibliotek służących do tworzenia graficznego interfejsu użytkownika (GUI) pod Linuksem.

1. Formalności

1.1 Najnowsza wersja tego dokumentu

Najnowsza wersja tego dokumentu dostępna jest pod adresem http://www.helsinki.fi/~rvaranka/Computer/Linux/HOWTO/.

1.2 Prawa autorskie

Copyright (c) 2000 Risto Varanka.

1.3 Licencja

Omówione tu warunki używania dotyczą wszystkich dokumentów LDP, o ile w danym dokumencie nie stwierdzono inaczej. Dokumenty LDP można kopiować i rozpowszechniać w całości lub w części za pomocą dowolnego fizycznego lub elektronicznego medium pod warunkiem, że niniejsza licencja nie jest usunięta. Rozpowszechnianie komercyjne jest dozwolone. W przypadku rozpowszechniania proszę miesiąc wcześniej skontaktować się pocztą elektroniczną z autorami w celu uzyskania najnowszej wersji tekstu.

Warunki modyfikacji tekstu

Wszelkie zmodyfikowane wersje dokumentów, w tym tłumaczenia, antologie oraz dokumenty rozpowszechniane w części muszą spełniać następujące warunki:

  1. Wersja musi być oznaczona jako zmodyfikowana
  2. Osoba wprowadzająca modyfikacje nie może być anonimowa
  3. Należy pozostawić nazwisko pierwotnego autora
  4. Należy podać informację o lokalizacji oryginalnej wersji tekstu
  5. Bez zgody pierwotnego autora/autorów nie wolno ich/jego nazwiskiem/nazwiskami potwierdzać ani sugerować ważności zmodyfikowanego dokumentu.

Dodatkowe wymagania:

  1. Zmiany (w tym cięcia) muszą być zaznaczone
  2. Przed rozpoczęciem dystrybucji należy autora o tym powiadomić pocztą elektroniczną (jeśli w dokumencie podany został adres)

Antologie dokumentów LPD mogą wyjątkowo zawierać w widocznym miejscu pojedynczą kopię tej licencji. W takich przypadkach treść licencji zawartej w dokumentach można zastąpić informacją o jej lokalizacji w antologii; wówczas zmiany w niniejszej sekcji nie nadają dokumentowi statusu tekstu zmodyfikowanego.

Umieszczenie dokumentów LPD na wspólnym nośniku z innymi dokumentami bądź programami nie powoduje objęcia owych innych prac niniejszą licencją.

Wszelkie tłumaczenia, modyfikacje i teksty wywodzące się z dokumentów LDP nie mogą mieć bardziej restrykcyjnej licencji niż niniejsza. Wyjątkiem jest możliwość wymagania od dystrybutorów udostępniania wersji źródłowych dokumentów.

1.4 Zastrzeżenie

DOKUMENT NINIEJSZY OPISUJE SZEROKĄ I STALE ZMIENIAJĄCĄ SIĘ DZIEDZINĘ WIEDZY. DLATEGO INFORMACJE ZAWARTE W TYM TEKŚCIE MOGĄ BYĆ BŁĘDNE LUB NIEAKTUALNE. JAKIEKOLWIEK UŻYCIE TEGO DOKUMENTU I ZAWARTYCH W NIM INFORMACJI MOŻE ODBYWAĆ SIĘ WYŁĄCZNIE NA WŁASNE RYZYKO UŻYTKOWNIKA. AUTOR NIE DAJE ANI NIE SUGERUJE ŻADNYCH GWARANCJI.

1.5 Informacje o autorze

Adres poczty elektronicznej: mailto:risto.varanka@helsinki.fi
Strona domowa: http://www.helsinki.fi/~rvaranka/.

1.6 Podziękowania

Chciałbym podziękować osobom, które wypowiedziały się na temat języków programowania. Rozmowy te dały mi lepszą orientację w temacie, mam też nadzieję, że reakcje czytelników w przyszłości przyczynią się do rozwoju niniejszego dokumentu. Podziękowania swoje kieruję szczególnie do użytkowników kanału #linux: Morphiego, Bluesmurfa, Vadima, Zonk^a, Rikkusa i wielu innych, których nicki zapomniałem. Dziękuję też Stigowi Erikowi Sandoe za pomocne uwagi.

2. Wstęp

2.1 Tematyka dokumentu

Linux jest fascynującym systemem, ponieważ każdy może uczestniczyć w jego rozwijaniu. Czasem jednak różnorodność dostępnych języków programowania może powodować zagubienie początkującego programisty. Niniejszy dokument opisuje najbardziej typowe z tych języków. Nie jest moim celem pisanie recenzji ani układanie ich rankingu. Każdy język na swoje zastosowania i zwolenników. Jeśli interesujesz się tematem, łatwo możesz natrafić na sprzeczne informacje. Znajdujące się w tym dokumencie odnośniki skierują cię do źródeł, dzięki którym będziesz mógł wyrobić sobie własną opinię.

Języków programowania i bibliotek do tworzenia GUI pod Linuksem jest zatrzęsienie. Dokument ten ogranicza się tylko do aktualnie najpopularniejszych z nich. Starałem się być neutralny, ale nie byłem w stanie wspomnieć tu o wszystkich dostępnych językach. Ponieważ moje opinie z pewnością są w taki czy inny sposób stronnicze, osobom poważnie podchodzącym do tematu proponuję zajrzenie na strony bardziej kompletnie go wyczerpujące. Pamiętaj też, że w niniejszym tekście omówione są tylko linuksowe wersje danych języków i narzędzi; nie wspominam o ich możliwościach dostępnych w wersjach na inne platformy.

Dokument niniejszy dopiero niedawno trafił do zasobów Linux Documentation Project, czytelnicy nie mieli więc póki co wiele czasu na wyrażenie swoich opinii. Mam jednak nadzieję, że tekst ten przyda się osobom (szczególnie początkującym) interesującym się programowaniem pod Linuksem.

Znak zapytania w tabelach oznacza brak informacji. Skontaktuj się z autorem, jeśli je posiadasz.

2.2 Odnośniki

Wyczerpujące listy języków i narzędzi programistycznych dla Linuksa:

Interesującym, szczególnie dla początkujących programistów, tekstem jest Hacker FAQ napisane przez Erica S. Raymonda. Dokument ten traktuje o kulturowych i psychologicznych aspektach pracy nad rozwojem oprogramowania wolnodostępnego.

Innymi zajmującymi się tematem programowania dokumentami LDP są "Reading List HOWTO" oraz "Linux Programmer's Guide". Oprócz nich dostępny jest szereg tekstów poświęconych bardziej szczegółowym zagadnieniom.

3. Języki programowania

Tradycyjnie w GNU/Linuksie używanymi językami są C, Lisp i Perl. Ostatnio do grupy tej dołączyły Python, PHP, Java i C++.

3.1 Pojęcia użyte w tabeli

Język

Powszechnie używana nazwa języka.

Początkujący

Czy język jest dobrym wyborem dla początkującego programisty?

Szybkość

Jak szybko aplikacje będą w praktyce działać. W zasadzie zależy to bardziej od jakości ułożonego przez programistę algorytmu, niż od samego języka. Generalnie przyjmuje się, że języki C, C++ i Fortran oferują większą szybkość niż ich alternatywy. Wszystko zależy jednak od celu, jaki chcemy osiągnąć: czasem języki te mogą okazać się bardziej nieporęczne od innych. (Mam pomysł na mało naukowe porównanie języków: należy napisać w każdym z nich prosty algorytm sortujący i porównać czas jego wykonania. To oczywiście nie zmierzy szybkości samych języków -- taki pomysł byłby bez sensu -- a jedynie ich implementacji. Nie jest to również szczególnie niezawodna ani dokładna metoda, pozwala jednak porównać szybkość wykonania zadania. Ktoś chce spróbować?)

OOP, programowanie obiektowe kontra inne metody

Programowanie obiektowe jest ważną i coraz bardziej popularną metodą tworzenia aplikacji. W tym modelu struktury danych i algorytmy połączone są w jednostki zwane klasami. OOP przeciwstawia się często programowaniu proceduralnemu (w którym używa się oddzielnych algorytmów i struktur danych). Nie jest to wyłącznie kwestia języka; można programować obiektowo w językach nie opisanych jako obiektowe, i odwrotnie: proceduralnie w językach obiektowych. Jako języki obiektowe wymieniłem te, które takie programowanie ułatwiają różnymi dodatkami. Języki funkcjonalne (np. Lisp) to jeszcze inna sprawa, bowiem programowanie funkcjonalne jest nadzbiorem obiektowego. Z drugiej strony programowania logicznego (np. Prolog), zwanego także programowaniem deklaratywnym, nie można w podobny sposób odnieść do innych modeli programowania.

RAD (błyskawiczne programowanie aplikacji)

Zależy bardziej od używanych narzędzi niż języka. Istnieje dokument HOWTO omawiający narzędzia ułatwiające tworzenie GUI pod Linuksem, jest jednak przestarzały. Dobre narzędzie znacznie przyspiesza prace nad graficznym interfejsem użytkownika, umożliwia także prace nad istniejącym już kodem; wolnodostępne oprogramowanie jest tu więc doskonałym punktem wyjścia.

Zastosowania

Domeny programowania, w których dany język jest najczęściej używany. Istnieją także inne, mniej lub bardziej sensowne zastosowania języka, są jednak mniej typowe.

Uwagi

Dodatkowe informacje o języku, np. jego możliwości lub odmiany.

3.2 Najważniejsze języki

Perl
Początkujący: tak - OOP: tak
Zastosowania: Skrypty, administracja systemem, WWW
Uwagi: Doskonały do przetwarzania tekstów

Python
Początkujący: tak - OOP: tak
Zastosowania: Skrypty, skrypty do aplikacji, WWW
Uwagi: 

TCL
Początkujący: tak - OOP: nie
Zastosowania: Skrypty, administracja systemem, aplikacje
Uwagi: 

PHP
Początkujący: tak - OOP: tak
Zastosowania: WWW
Uwagi: Używany przy tworzeniu sieciowych baz danych

Java
Początkujący: tak - OOP: tak
Zastosowania: Programy działające na wielu platformach systemowych, WWW
Uwagi: Zakres zastosowań rozszerza się (np. handel elektroniczny)

Lisp
Początkujący: tak - OOP: funkcjonalny
Zastosowania: Tryby Emacsa (Elisp), AI (Sztuczna inteligencja)
Uwagi: Odmiany: Elisp, Clisp i Scheme

Fortran
Początkujący: nie  - OOP: nie
Zastosowania: Aplikacje matematyczne (naukowe)
Uwagi: Odmiany: f77 i f90/95

C
Początkujący: nie  - OOP: nie
Zastosowania: Oprogramowanie systemowe, aplikacje
Uwagi: 

C++
Początkujący: nie  - OOP: tak
Zastosowania: aplikacje
Uwagi:

3.3 Programowanie w powłoce (szelu)

Powłoki są również ważnym środowiskiem programistycznym. Nie omawiam ich, ponieważ nie zrozumiałem jeszcze dokładnie całości tematu. Znajomość powłok jest istotna dla wszystkich używających regularnie Linuksa, szczególnie administratorów. Istnieje wiele podobieństw między programowaniem w szelu i pisaniem skryptów w innych językach -- często osiągnąć można identyczne rezultaty, wybór jest więc wolny. Do najpopularniejszych powłok należą bash, tcsh, csh, ksh i zsh. Podstawowe informacje o nich znajdują się w podręczniku systemowym (użyj polecenia man, np. man bash).

3.4 Inne języki

Inne warte zauważenia języki to: AWK, SED, Smalltalk, Eiffel, Ada, Prolog, asembler, Objective C, Logo, Pascal (konwerter p2c).

3.5 Odnośniki

4. Narzędzia do tworzenia GUI

Standardowym środowiskiem graficznym w systemach Unix i Linux jest posiadający swoje własne biblioteki GUI X Window System. Biblioteki te umożliwiają niskopoziomowe tworzenie graficznych aplikacji dla X, bywają jednak trudne w użyciu. Wykorzystuje je głównie starsze oprogramowanie, dziś graficzne aplikacje tworzy się raczej w oparciu o biblioteki GTK+ i Ot -- to na nich oparte są dwa najpopularniejsze duże środowiska graficzne dla Linuksa: GNOME i KDE.

4.1 Pojęcia użyte w tabeli

Biblioteka

Powszechnie używana nazwa biblioteki

Początkujący

Czy biblioteka nadaje się dla początkującego programisty?

Licencja

Poszczególne narzędzia opatrzone są różnymi licencjami. Licencje GTK+, TK i GNUstep pozwalają na bezpłatne tworzenie zarówno wolnodostępnego, jak i zamkniętego oprogramowania. Licencja Motifa jest płatna, a licencja Qt jest płatna tylko w przypadku tworzenia oprogramowania zamkniętego.

Język

Język najczęściej używany z daną biblioteką.

Inne języki

Inne języki, których również można używać z daną biblioteką.

Zastosowania

Programy korzystające z biblioteki.

Uwagi

Dodatkowe informacje.

4.2 Najważniejsze biblioteki do tworzenia GUI

Biblioteka:     TK
Początkujący:   tak
Licencja:       darmowa
Język:          TCL
Inne jęz:       Perl, Python, inne
Zastosowania:   make xconfig, TKDesk
Uwagi:

Biblioteka:     GTK+
Początkujący:   nie
Licencja:       darmowa (LGPL)
Język:          C
Inne jęz:       Perl, C++, Python, wiele innych
Zastosowania:   GNOME, Gimp
Uwagi:          Bardzo popularna

Biblioteka:     QT
Początkujący:   nie
Licencja:       darmowa przy rozwijaniu oprogramowania wolnodostępnego
Język:          C++
Inne jęz:       Python, Perl, C, inne?
Zastosowania:   KDE
Uwagi:          Bardzo popularna

Biblioteka:     Motif
Początkujący:   nie
Licencja:       płatna
Język:          C/C++
Inne jęz:       Python, inne?
Zastosowania:   Netscape, Wordperfect
Uwagi:          Darmowy odpowiednik: Lestiff (http://www.lesstif.org/)

Biblioteka:     GNUstep
Początkujący:   nie
Licencja:       darmowa (LGPL)
Język:          Objective C
Inne jęz:       Guile, Java?
Zastosowania:   Żadna z popularnych aplikacji
                Lista aplikacji: http://www.gnustep.org/resources/apps.html
Uwagi:          Wciąż w trakcie rozwoju

4.3 Odnośniki

5. Od tłumacza

Zmiany w stosunku do oryginału: Podział pierwszego rozdziału na dwie tematyczne sekcje ("Formalności" i "Wstęp") oraz przeformatowanie spisu najważniejszych bibliotek.

Wersja oryginalna dokumentu: http://sunsite.unc.edu/LDP/.
Tłumaczenia pozostałych dokumentów HOWTO na język polski:
http://www.jtz.org.pl/.

Copyright for the translation:
(c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk
doc-linux-pl-2002.06.14.orig/mini/html/Quota.pl.html0100664000175000017500000002757607104371340020702 0ustar covencoven Jak używać Quoty na Linux-ie.

Jak używać Quoty na Linux-ie.

Autor: Albert M.C. Tam, bertie@scn.org
8 Sierpnia 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl.
v1.2, 27 Listopada 1997


Dokument ten jest chroniony prawami autorskimi Alberta M. C. Tama (bertie@scn.org). Dozwolone jest użycie, kopiowanie i dystrybuowanie tego dokumentu do celów niekomercyjnych, zakładając, że we wszystkich kopiach pojawi się nazwisko autora oraz ta wzmianka o prawach autorskich; oraz że dokument ten nie jest modyfikowany. Dokument ten jest dystrybuowany w nadziei, że będzie on użyteczny, ale BEZ ŻADNEJ GWARANCJI, ani wyrażonej ani wynikającej. Autor czynił jak największy wysiłek, żeby informacje zawarte w tym dokumencie były poprawne i NIE BIERZE ODPOWIEDZIALNOŚCI za błędy, czy zniszczenia powstałe na skutek użycia zawartych tu informacji. Tłumacz także NIE BIERZE ŻADNEJ ODPOWIEDZIALNOŚCI. Dokument ten opisuje jak uruchomić Quotę systemu plików na Linux-ie, jak i różne polecenia zawarte w dystrybucji pakietu. Przeznaczony jest on dla użytkowników jądra w wersji 2.x (przetestowano na 2.0.7). Użytkownikom ze starszymi wersjami zaleca się uaktualnienie. Jeśli znajdziesz jakieś błędy, albo sądzisz, że czegoś brakuje, czy po prostu masz jakiś komentarz odnośnie tego co napisałem to pisz śmiało na mój adres. Nowsza wersja zawiera uaktualnione wskazania na katalog zawierający jądra na ftp.icm.edu.pl. Dokument ten napisany został w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl.

1. Co to jest Quota?

Jest to pakiet umożliwiający limitowanie zużycia dysków na dwa sposoby: ilość węzłów jaką można przydzielić użytkownikowi; ilość bloków dysku jaką można przydzielić użytkownikowi.

Podstawową ideą Quoty jest to, że użytkownicy zmuszani są do ograniczenia swoich zasobów i co za tym idzie odebranie im ich zdolności do zabierania nieskończonej ilości pamięci dyskowej.

1.1 Bieżąca wersja Quoty na Linux-a.

Obsługa Quoty została zintegrowana z jądrem od wersji 1.3.8x i jest także w wersji 2.0. Jeśli twój system nie obsługuje Quoty, to proponuje go uaktualnić.

Obecnie Quota działa tylko dla systemu plików ext2.

1.2 Wymagania Quoty na Linux-ie.

2. Ustawianie Quoty na Linux-ie.

2.1 Konfiguracja.

  1. Przekonfiguruj swoje jądro odpowiadając "y" na pytanie: Quota support (CONFIG_QUOTA) [n]
  2. Skompiluj i zainstaluj oprogramowanie Quoty.
    Źródła oprogramowania Quoty są dostępne pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/system/admin/.
  3. Zmodyfikuj skrypty inicjalizujące twój system, aby sprawdzały quotę i włączały ją podczas startu systemu. Oto przykład:
            # Sprawdź quotę i włącz ją
            if [ -x /usr/sbin/quotacheck ]
            then
                    echo "Checking quotas. This may take some time."
                    /usr/sbin/quotacheck -avug
                    echo " Done."
            fi
    
            if [ -x /usr/sbin/quotaon ]
            then
                    echo "Turning on quota."
                    /usr/sbin/quotaon -avug
            fi
    

    Złota zasada brzmi: zawsze włączaj quotę po tym jak twoje systemy plików z /etc/fstab zostały zamontowane, bo inaczej quota nie będzie działać. Zalecam włączanie quoty na końcu pliku inicjalizującego twój system, albo jeśli wolisz, zaraz po fragmencie kiedy twoje systemy plików są montowane.
  4. Zmodyfikuj /etc/fstab
    Partycje, na których jeszcze nie włączyłeś quoty wyglądają mniej więcej tak:
            /dev/hda1       /       ext2    defaults        1       1
            /dev/hda2       /usr    ext2    defaults        1       1
    
    Aby dodać quotę do systemu plików, dodaj usrquota do czwartego pola zawierającego default: (szczegóły w man fstab)
            /dev/hda1       /       ext2    defaults        1       1
            /dev/hda2       /usr    ext2    defaults,usrquota       1       1
    
    Zamień usrquota na grpquota jeśli potrzebujesz ograniczenia dla grup.
            /dev/hda1       /       ext2    defaults        1       1
            /dev/hda2       /usr    ext2    defaults,grpquota       1       1
    
    A może potrzebujesz ograniczeń i dla użytkowników i dla grup?
            /dev/hda1       /       ext2    defaults        1       1
            /dev/hda2       /usr    ext2    defaults,usrquota,grpquota       1      1
    
  5. Stwórz zapis odnośnie quoty - quota.user
    Plik z danymi o quocie - quota.user, powinien należeć do "root-a" oraz zapis i odczyt do niego powinien mieć także tylko "root". Zaloguj się jako "root". Przejdź do podstawowego katalogu na partycji, którą chcesz objąć quotą i stwórz plik quota.user:
            touch /partycja/quota.user
            touch /partycja/quota.group
            chmod 600 /partycja/quota.user
            chmod 600 /partycja/quota.group
    

  6. Restart.
    Teraz zrestartuj system, żeby wprowadzić zmiany, które naniosłeś. Zauważ też, że kolejne partycje, dla których chcesz włączyć quotę wymagają tylko kroków 4, 5 i 6.

2.2 Przypisywanie limitów użytkownikom.

Operację tę wykonuje się poleceniem edquota (szczegóły man edquota).

Normalnie uruchomiłbym quotacheck z opcjami -avug, aby zyskać jak najaktualniejszy obraz systemu plików, przed edycją plików quoty. Jest to jednak tylko moje przyzwyczjenie a nie wymagany krok.

Przypisywanie limitów konkretnemu użytkownikowi.

Oto przykład. Mam użytkownika, którego login to bob. Polecenie edquota bob uruchomi edytor vi (lub ten podany w zmiennej $EDITOR), w którym będzie można edytować limit dla użytkownika bob dla każdej partycji, na której jest włączona quota:

       Quotas for user bob:
       /dev/hda2: blocks in use: 2594, limits (soft = 5120, hard = 6400)
                inodes in use: 356, limits (soft = 1000, hard = 1500)

"blocks in use" - jest całkowitą ilością bloków (w kilobajtach) jaką zużył dany użytkownik.
"inodes in use" - jest całkowitą liczbą plików jaką użytkownik ma na dysku.

Przypisywanie limitów konkretnej grupie.

Teraz mam grupę games. Polecenie edquota -g games znowu uruchamia edytor vi, aby edytować limity dla tej grupy:

        Quotas for group games:
        /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
                inodes in use: 1454, limits (soft = 3000, hard = 4000)

Przypisywanie takich samych limitów dla większej ilości użytkowników.

Aby za jednym zamachem ustawić limit dla, powiedzmy 100 użytkowników, taki sam jak dla boba, najpierw trzeba ustawić ręcznie limity dla boba, a potem wykonać polecenie:

        edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`

zakładając, że używasz powłoki csh i że twoi użytkownicy mają numery UID zaczynające się od 500.

Dodatkowo są jeszcze trzy inne terminy, z którymi powinieneś się zapoznać: Soft Limit, Hard Limit i Grace Period.

3. Różne polecenia z pakietu Quota.

3.1 Quotacheck

Program ten jest używany do analizowania systemu plików ze względu na bieżące zużycie i uaktulaniania zapisu w pliku quota.user. Zalecam uruchamianie tego programu co jakiś okres czasu poprzez crontab oraz podczas startu systemu.

3.2 Repquota

Program ten podaje sumaryczne wiadomości dotyczące aktualnego zużycia systemu plików. Przykładowe wyjście tego polecenia może wyglądać tak:


        # repquota -a
                                Block limits               File limits
        User            used    soft    hard  grace    used  soft  hard  grace
        root      --  175419       0       0          14679     0     0
        bin       --   18000       0       0            735     0     0
        uucp      --     729       0       0             23     0     0
        man       --      57       0       0             10     0     0
        user1     --   13046   15360   19200            806  1500  2250
        user2     --    2838    5120    6400            377  1000  1500

3.3 Quotaon i Quotaoff

Pierwszy z tych dwóch programów służy do włączania quoty, a drugi do wyłączania. Właściwie oba pliki są podobne. Są wykonywane podczas startu systemu i jego zamknięcia.

4. Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Napewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać.

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /pub/Linux/JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/Saving-Space.pl.html0100664000175000017500000003041307457640740022067 0ustar covencoven Oszczędzanie miejsca na dysku twardym (małe JTZ)

Oszczędzanie miejsca na dysku twardym (małe JTZ)

Guido Gonzato, guido@ibogeo.df.unibo.it
v1.0.1, 07 kwietnia 1999
Wersja polska: Tomasz 'tsca' Sienicki, tsca@edb.dk
v1.01, 14 grudnia 2001


Dokument zawiera informacje pomagające w największym możliwym stopniu ograniczyć miejsce zajmowane przez Linuksa na twardym dysku. Przyda się szczególnie użytkownikom laptopów.

1. Wstęp

Posiadam laptopa, na którym obok fabrycznie dołączonego Windows 95 zainstalowałem Linuksa. Zajmowaną przez Windows przestrzeń dyskową ograniczyłem do 500 MB, co dało mi 240 MB wolnego miejsca. Niby niewiele, a jednak dzięki rozsądnej gospodarce wolną przestrzenią zmieściłem tam w pełni funkcjonalną instalację Linuksa (Red Hat 4.1).

Jeśli brakuje ci wolnej przestrzeni na twardym dysku, wykorzystaj informacje zawarte w niniejszym dokumencie -- pomogą ci one znacznie zwiększyć jej ilość. Zanim jednak przejdziemy do rzeczy, muszę cię ostrzec: nie obwiniaj mnie, jeśli coś pójdzie nie tak. Niektóre z wykorzystywanych w procedurze odzyskiwania wolnego miejsca programów mogą być niebezpieczne pomimo, iż sprawdziły się u mnie.

2. Potrzebne oprogramowanie

Potrzebować będziesz:

Istnieją też inne programy do kompresji plików wykonywalnych. Jednym z nich jest gzexe -- najlepiej od razu o nim zapomnij. tcx był niezły, został jednak zdetronizowany przez upx. Kolejny program, tzx, teoretycznie powinien sprawować się nawet lepiej, niż tcx. Niestety, kompletnie zawiódł podczas prób, które przeprowadziłem na zapasowym komputerze; być może z mojej winy. Najlepiej użyj więc upx -- jest to program sprawdzony, wydajny i wygodny.

Istnieją łatki umożliwiające jądru obsługę skompresowanych systemów plików "w locie", jednak w momencie pisania tego tekstu żadna z nich nie cieszy się opinią stabilnej i bezpiecznej. Najbezpieczniej jest trzymać się od nich z daleka.

3. Procedura odzyskiwania miejsca

3.1 Usuwanie źródeł jądra

Źródła jądra zajmują ponad 20 MB, możesz więc rozważyć ich usunięcie. Jeśli się na to zdecydujesz, proponuję, żebyś najpierw raz a dobrze skompilował jądro odpowiednie dla twojego komputera; potem możesz źródła skasować. Ale uważaj:

Nie kasuj źródeł jądra dopóki nie jesteś pewien, że twój system jest prawidłowo skonfigurowany. Pamiętaj również, że kompilacja programów napisanych w C wymaga plików nagłówkowych (#include) jądra. Przemyśl to!

Kasując źródła jądra oszczędź katalog include/linux/, chyba, że jesteś pewien, że nigdy niczego nie będziesz na swoim komputerze kompilował.

3.2 Usuwanie zbędnych aplikacji

Teraz musisz zadecydować, których programów naprawdę potrzebujesz. Niektóre aplikacje mogą okazać się w twoim przypadku zbędne; na przykład zastanów się, czy naprawdę musisz mieć na dysku emacsa? Zamiast niego możesz używać jeda.

Decyzja należy do Ciebie; przed jej podjęciem rozważ następujące fakty:

3.3 Usuwanie symboli z plików binarnych ("strip")

Rozpoczynamy proces zmniejszania wielkości plików binarnych. Wejdź do katalogu /usr/bin i wydaj w nim polecenie:

/usr/bin# strip *

Usunie to symbole z plików binarnych. Powtórz ten krok w /usr/X11R6/bin/ i pozostałych zawierających binarne pliki wykonywalne katalogach (nie zapomnij też odnaleźć binariów pakietów TeX i gcc).

Jeśli cenisz sobie swój system, nie wykonuj tego polecenia w katalogach /sbin, /bin ani /usr/sbin/ !

3.4 Kompresowanie plików wykonywalnych

Rozpocznij od zainstalowania pakietu upx i przeczytania jego dokumentacji. Następnie wejdź do katalogu /usr/bin i wykonaj w nim polecenie

/usr/bin# upx *

Skompresuje to wszystkie pliki wykonywalne, w tym te z suid (txc nie poradziłby sobie z tym). Powtórz ten krok w kolejnych katalogach według opisu zawartego w poprzednim podrozdziale.

Pamiętaj o kompresowaniu plików wykonywalnych pojawiających się po instalacji nowego oprogramowania!

3.5 Kompresowanie pozostałych plików

W systemie znajduje się mnóstwo plików, które możesz raz na zawsze skompresować. Rozpocznij od wejścia do katalogu /usr/doc/ (od tłumacza: w nowszych dystrybucjach jest to /usr/share/doc/) i wydaj w nim polecenie:

/usr/doc# find . -type f -exec gzip -9 {} \; 2> /dev/null

Pamiętaj o kompresowaniu dokumentów dołączanych do później instalowanych programów!

Powtórz ten krok w katalogu zawierających dokumentację systemu TeX (u mnie jest to /usr/lib/texmf/texmf/doc/).

Jeśli naprawdę wiesz, co robisz, możesz katalogi z dokumentacją całkowicie skasować.

Zainstaluj teraz program zlibc i skompiluj go. Jeśli twój system przypomina mój, podczas kompilacji zobaczysz komunikaty o braku statycznej biblioteki libc. Nie przejmuj się: jest to kwestia odnalezienia pliku uncompress.o, przeniesienia go do /usr/local/lib/ i dodania następującej linii do pliku /etc/profile:

export LD_ELF_PRELOAD=/usr/local/lib/uncompress.o

Dzięki powyższemu będziesz teraz mógł kompresować gzipem nie tylko dokumentację, ale również pliki z wykorzystywanymi przez różne programy danymi; programy będą nadal mogły ich używać. Teoretycznie sztuczka ta powinna działać z większością aplikacji, praktycznie nie zawsze tak jest -- w moim przypadku sukces nie był oszałamiający.

4. Przykład z życia wzięty

Oto co ja osiągnąłem zastosowawszy wyżej opisaną procedurę. Przed rozpoczęciem operacji system wg df zajmował 398.798 bloków 1024.

Liczba zajętych bloków przed rozpoczęciem operacji: 398.798, po jej zakończeniu: 198.745. Uzyskałem 200.000 wolnych bloków! A gdybym użył bzip2 zamiast gzipa, wolnych bloków byłoby jeszcze więcej.

Jeśli od samego początku działasz świadomie, instalując wyłącznie niezbędne aplikacje i kompresując pliki wykonywalne i dokumentację, oszczędzisz około 20 MB. W przypadku laptopów jest to znacząca liczba.

5. Formalności

5.1 Prawa autorskie

O ile nie zaznaczono inaczej dokumenty HOWTO chronione są prawami autorskimi należącymi odpowiednio do ich autorów. Zezwala się na powielanie i dystrybucję tych dokumentów w całości lub w części na jakimkolwiek fizycznym bądź elektronicznym nośniku pod warunkiem pozostawienia na wszystkich kopiach niniejszej informacji o prawach autorskich. Zezwala się i zachęca do redystrybucji komercjalnej; autor jednak życzy sobie być powiadamiany o każdej z takiej dystrybucji.

Niniejsze prawa autorskie dotyczą również wszelkich tłumaczeń, prac pochodnych, składających się z, lub zawierających jakiekolwiek dokumenty HOWTO. Oznacza to, że niedozwolone jest stworzenie pracy pochodnej od dokumentu HOWTO i nałożenie dodatkowych ograniczeń na jej dystrybucję. W pewnych szczególnych okolicznościach możliwe są odstąpienia od tych zasad. Po bliższe informacje należy skontaktować się z koordynatorem projektu Linux HOWTO pod adresem podanym poniżej.

W skrócie: chcemy promować rozprzestrzenianie się podanych tu informacji poprzez możliwie wiele kanałów. Zatrzymujemy jednak prawa autorskie do dokumentów HOWTO i chcielibyśmy być informowani o jakichkolwiek planach redystrybucji tych dokumentów.

W przypadku pytań skontaktuj się z koordynatorem projektu Linux HOWTO Timem Bynymem, tjbinum@sunsite.unc.edu.

5.2 Zastrzeżenia

Autorem niniejszego dokumentu jest Guido Gonzato, REMOVE_MEguido@ibogeo.df.unibo.it.

Dokument ten jest udostępniony 'jak jest'. Starałem się napisać go jak najlepiej, jednak wszelkich zawartych tu informacji możesz użyć tylko na własne ryzyko. Nie ponoszę odpowiedzialności za żadne szkody wynikłe z zastosowania tych informacji.

Ucieszą mnie wszelkie reakcje: prośby, sugestie, wyzwiska, itd.

Ciesz się Linuksem i życiem,

Guido =8-)

6. Od tłumacza

Wersja oryginalna niniejszego dokumentu znajduje się pod adresem http://sunsite.unc.edu/LDP/.

Tłumaczenia pozostałych dokumentów HOWTO na język polski:
http://www.jtz.org.pl.

Copyright for the translation
(c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk

doc-linux-pl-2002.06.14.orig/mini/html/Sendmail+UUCP.pl.html0100664000175000017500000004132207104371340022076 0ustar covencoven Jak skonfigurować sendmail przez UUCP.

Jak skonfigurować sendmail przez UUCP.

Autor: Jamal Hadi Salim, jamal@glcom.com
v1.2, 15 Marca 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.3, 13 Listopada 1997


Historia: -------- Pierwsza wersja tego dokumentu: Lipiec/96: tylko dla sendmail-a bez bind-a Aktualizacja: 1 Paźdz./96: dla binariów dostarczanych z RedHat-em Aktualizacja: 7 Paźdz./96: dodane wskazówki jak skompilować sendmail-a bez bind-a Aktualizacja: 25 Paźdz./96: dodana wskazówka jak uszczęśliwić funkcję sendmail-a getHostbyAddr() poprzez nieprawdziwy /etc/hosts Aktualizacja: 15 Marca/97: Jestem zdumiony ilością komentarzy, którą dostaję więc postanowiłem kontynuować moje dzieło. Poprawiłem kilka małych błędów: dodałem diagram + referencje. Po ustatkowaniu się i dokładnym przeczytaniu TFM (dokładnie mówiąc "the Bat Book") odkryłem tajemnicę Caramilki ! :) Kroki opisane poniżej będą działać z binariami dostarczanymi wraz z dystrybucją RedHat. Może powinienem też wysłać informację o tym dokumencie do opiekuna Sendmail-FAQ, bo nie ma tam ani słowa o nim.

1. Wprowadzenie.

1.1 Co ten dokument stara się wyjaśnić?

Jak ustawić pojedynczy komputer zwany tutaj ja.pl bez bezpośredniego dostępu do Internetu, aby przesyłał pocztę przy pomocy sendmail-a do "sprytniejszego hosta" np. twojego dostawcy Internetu. Opcjonalnie możesz skonfigurować swój komputer, aby obsługiwał pocztę dla innych, czyli ty będziesz "sprytnijeszym hostem" czy gateway-em".

1.2 Czego ten dokument nie wyjaśnia.

Dostawałem niewiarygodną ilość pytań dotyczących następujących tematów. Celem tego dokumentu nie jest ich opis, więc postarajcie się proszę nie przsyłać mi takich pytań:

Możesz także znaleźć pomoc na tych grupach dyskusyjnych:

Na IRC-u też. Kanały: #linux, #unix, #plug [po polsku].

1.3 Ustawienia.

Dokument ten dotyczy systemów, które przesyłają pocztę poprzez UUCP. "mysmarthost" jest nazwą hosta ISP, tak jak jest to ustawione w pliku konfiguracyjnym (sys file) uucp a "ja.pl" to nazwa hosta, którego używamy. "mysmarthost" ma dostęp do Internet-u. Tak naprawdę nie obchodzi nas jak - po prostu wiemy, że ma i już.
ja.pl, którego ustawienia opiszemy w przykładzie, obsługuje pocztę dla down.pl i system1.org.pl i ich poddomen.
ja.pl łączy się z down.pl poprzez TCP/IP a z system1.org.pl czystym UUCP poprzez linię telefoniczną.

Sytuacja pokazana jest na poniższym obrazku:

         -----------------------
        |                       |
        |     Internet          |
        |                       |
         -----------------------
                    |   
                    | Linia dedykowana/PPP z protokołem TCP/IP
                    |
                 -------------
                |             |
                | mysmarthost | Autorytatywny nameserver dla
                |             | *.ja.pl, *.down.pl, *.system1.org.pl
                 -------------
                    |
                    | UUCP otrzymuje pocztę przez linię telefoniczną dla
                    | system1.org.pl, *.system1.org.pl,*.down.pl, down.pl
                    | jak również dla ja.pl and *.ja.pl
                 ------------
                | * ***** *  |
   ------------ | * ja.pl *  | ------
   |            | * ***** *  |      |
   |             ------------       | 
   |UUCP poprzez linię tel.         | UUCP poprzez TCP/IP
   |                                |
 --------------                  -------------
|              |                |         |
|system1.org.pl|                | down.pl |-----
|              |                |         |    |
 -------------                   ---------     |
     |                                         |
     |                                         |
     |                                         | LAN: smtp dla poszczególnych odbiorców
     | Linia tel UUCP                          |
     |                                         |
 ----------------                         -----------
| LAN            |                       | LAN       |
| system1.org.pl |                       | down.pl   |
|                |                        -----------
 ----------------

2. Wymagania.

Jeśli masz system używający uucp dla poczty, to właściwie nie musisz wkompilowywać bind-a/resolvera do sendmail-a.

Upewnij się, że masz makemap-a, i że obsługuje on "hash" i bardziej popularne formaty "dbm" czy nawet format "btree" (Wersja na RedHat-a nie obsługuje dbm). Makemap jest normalnie dystrybuowany z sendmail-em.

2.1 Jak przeżyć kanonizację nazw na samotnie stojącej maszynie bez DNS-u?

Część I:

Jeśli dostaniesz pre-kompilowanego sendmail-a z dołączonym bind-em, to możesz z nim dalej żyć (Tak jak to jest w RedHat-cie).

Część II:

Normalnie sendmail będzie koniecznie chciał sprawdzić nazwę, aby rozwinąć część dotyczącą host-u przy pomocy gethostbyaddr() dla każdego listu, który wysyła (nawet jeśli go poinformujesz żeby nie kanonifikował nazw).

UWAGA: W obu przypadkach ważne jes, aby podać pełny adres w pliku /etc/hosts. Czyli linia powinna wyglądać tak:

        10.0.0.1   myhost.ja.pl   myhost

a nie tak

        10.0.0.1   myhost

Będziesz musiał także zdefiniować makro sendmail-a - $w, aby zawierało myhost.ja.pl. Dodaj następującą linijkę do swojego pliku /etc/sendmail.cf jak już zostanie wygenerowany:

Dwmyhost.ja.pl

(albo możesz użyć użyć MASQUAREADE_AS(myhost.me.com) w poniższym pliku .mc)

UWAGA !!! myhost jako nazwa domeny jest podane tylko przykładowo; nie musisz używać takiej samej nazwy. Wybierz sobie jakąś swoją nazwę host-a jeśli jej jeszcze nie masz.

3. Ustawianie.

To wszystko.

4. Do zrobienia.

  1. Zhtml-izować ?
  2. Dodać informacje na temat ustawiania systemu down.pl (żeby pokazać jak się zająć tymi "poszczególnymi odbiorcami").
  3. Dodać informacje na temat dostarczania news-ów poprzez UUCP (preferowany będzie INN). To może wymagać zmiany tytułu tego dokumentu.

5. Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Napewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać.

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/Soundblaster-AWE.pl.html0100664000175000017500000010255607104371340022660 0ustar covencoven Sound Blaster AWE 32/64 HOWTO

Sound Blaster AWE 32/64 HOWTO

Autor: Marcus Brinkman Marcus.Brinkmann@ruhr-uni-bochum.de
v1.2, 11 Stycznia 1998
Wersja polska: Leszek Urbański tygrys@gdansk.sprint.pl
v1.0, 23 Lutego 1998


Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://homepage.ruhr-uni-bochum.de/Marcus.Brinkmann/soundblaster.html Ten dokument opisuje jak zainstalować i skonfigurować kartę Sound Blaster 32 (SB AWE 32, SB AWE 64) firmy Creative Labs w systemie Linux używając sterownika "AWE Sound Driver Extention" napisanego przez Takashi-ego Iwai. Opisuje także specjalne narzędzia i odgrywarki dla SB AWE. Przyjętym systemem będzie Debian GNU Linux, ale opisany sposób powinien działać w każdej innej dystrybucji.

1. Wprowadzenie

To jest JTZ o Sound Blaster-rze AWE. Podaje ono dokładne informacje o maksymalnym wykorzystaniu Twojego Sound Blaster'a 32 (lub lepszego), włączając w to syntezę Wave Table. Ten dokument opisuje wszystkie karty SB od SB 32.

Karty Sound Blaster są dobrze znane w środowisku DOS i Windows, a wiele osób chce też używać swoje karty pod Linux'em. Niestety, Creative Labs dostarcza tylko sterowniki pod Windows i DOS'a, więc zainstalowanie karty SB pod Linuxem nie jest proste. [oj, chyba jest :-) - przyp. tłum.] Ten dokument próbuje opisać jak można używać właściwości kart SB AWE w środowisku Linuxa.

1.1 Podziękowania

Dokument zawiera informacje, które wziąłem z FAQ Sterownika AWE i FAQ ISA PnP. Zobacz sekcję Źródła dla poznania autorów i miejsca tych dokumentów. Dzięki nim, obsługa dźwięku SB AWE jest możliwa. Mnóstwo ważnej pracy było zrobione przez Hannu Savolainen'a, który napisał sterownik dostarczany z jądrem Linuxa. Dziękuję!

Chcę podziękować Nicoli Bernardelli za testowanie AWE64. Bez niego wiele błędów pozostałoby niewykrytych.

Dziękuję za SGML Tools, to HOWTO jest dostępne w kilku formatach, wszystkie wygenerowane z jednego pliku źródłowego.

1.2 Poprawki w stosunku do poprzednich wersji

Wersja 1.0

Pierwsza wersja

Wersja 1.1

Poprawiona pisownia (dzięki Curt!), dodana potrzebna wersja isapnp, teraz dostępna na sunsite i mnóstwie kopii.

Wersja 1.2

Wersja francuska jest już dostępna, małe poprawki, dużo poprawionej pisowni (dzięki programowi ispell)

1.3 Nowe wersje tego dokumentu

Najświeższe wersje są na mojej stronie domowej - Sound Blaster AWE HOWTO

Nowe wersje tego dokumentu będą przesyłane na wiele anonimowych serwerów FTP składujących tego typu informacje, jak np. ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini

Hypertekstowe wersje tego i innych Linuxowych HOWTO są dostępne na wielu serwerach WWW, np. http://sunsite.unc.edu/LDP. Większość dystrybucji Linuxa na CD-ROM'ach zawiera dokumenty HOWTO, często w katalogu /usr/doc.

Dzięki Arnaudowi Launay zoro@lsol.tm.fr jest dostępna francuska wersja tego dokumentu! Najświeższa wersja jest dostępna przez HTTP albo anonimowe FTP.

Jeżeli przetłumaczysz ten dokument na inny język, daj mi znać, a dołączę odnośnik do niego tutaj.

1.4 Kontakt z autorem

Polegam na tobie, Czytelniku, w zrobieniu tego HOWTO użytecznym. Jeżeli masz jakiekolwiek sugestie, poprawki, albo komentarze, proszę, żebyś przysłał je do mnie, Marcus.Brinkmann@ruhr-uni-bochum.de, a ja postaram się wziąć je pod uwagę w następnej edycji.

Byłbym szczególnie wdzięczny za informacje o procedurze startowej (skrtypty inicjalizujące itp.) innych popularnych dystrybucji Linuxa, np. RedHat lub SuSE Linux.

Jeżeli opublikujesz ten dokument na CD-ROM'ie lub na papierze, kopia była by mile widziana. (Przez e-mail możesz zapytać się o mój adres pocztowy) Pomyśl także o złożeniu dotacji dla LDP (Linux Documentation Project), żeby wspomóc tworzenie darmowej dokumentacji Linux'a. Skontaktuj się z koordynatorem Linux HOWTO, Gregiem Hankins'em gregh@sunsite.unc.edu, żeby zdobyć więcej informacjii.

1.5 Zasady dystrybucji

Prawa autorskie - (C)1997 Marcus Brinkmann.

To HOWTO jest dokumentacją darmową; możesz ją udostępniać i/lub modyfikować na zasadach Licencji Publicznej GNU (GNU General Public License) publikowanej przez FSF (Free Software Foundation); albo wersji 2, albo jakiejkolwiek późniejszej wersji.

Ten dokument jest udostępniany z nadzieją, że będzie on użyteczny, ale bez żadnej gwarancji; nawet bez gwarancji dostępności ani przydatności w określonym przypadku. Przestudiuj Licencję Publiczną GNU, dla uzyskania dokładnych informacji.

Możesz uzyskać kopię Licencji pisząc do FSF - Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

2. Zanim zaczniesz

2.1 Wprowadzenie

Ten dokument próbuje pomóc Ci w instalacji i użytkowaniu karty Sound Blaster AWE 32 lub Sound Blaster AWE 64 firmy Creative Labs w Twoim Linuxie. Odnośnym systemem jest Debian GNU Linux na platformie Intel i586, ale metoda tu przedstawiona powinna działać z każdą inną dystrybucją Linuxa, jak i na każdej innej platformie sprzętowej obsługiwanej prze Linuxowy sterownik dźwięku (różnice będą opisane).

Pamiętaj, żeby dokładnie przeczytać "Linux Sound HOWTO" (zobacz sekcję Dodatkowe informacje. Traktuję swój dokument jako dodatek do Sound HOWTO, często możesz tam znaleźć informacje o rzeczach, których tu nie opisałem.

2.2 Kilka uwag o kartach SB AWE

SB AWE 32 zawiera urządzenie dźwięku RAW, standardową syntezę OPL-2/OPL-3, port MIDI MPU-401 i syntezę Wave Table EMU 8000 o 32-głosowej polifonii (przestudiuj Sound HOWTO dla wyjaśnienia tych terminów).

SB AWE 64 ma wszystkie możliwości AWE 32 i dodatkowo syntezę Wave Guide, z której Creative Labs jest szczególnie dumny. Problemem dla użytkowników Linuxa jest fakt, że dodatkowe 32 głosy są generowane programowo i wysyłane przez urządzenia dźwięku RAW. Ponieważ Creative Labs nie widzi rynku dla sterowników pod Linuxa, sterownik syntezy Wave Guide jest dostępny tylko pod Windows 3.1 i Windows 95.

Znaczy to, że z punktu widzenia użytkownika Linuxa SB AWE 32 i AWE 64 są prawie identyczne. [AWE 64 ma troszeczkę lepsze przetworniki A/C i C/A -- przyp. tłum.] Od tej chwili będę się odnosił do SB AWE wogóle i wsponę o różnicach, jeżeli wystąpią.

2.3 Kilka uwag o kartach Plug and Play

Większość nowoczesnych kart na platformę Intela są kartami ISA PnP, co jest skrótem dla ,,Plug and Play''. Znaczy to, że karta musi być skonfigurowana przez system operacyjny, a to musi być wykonane przez skrypt inicjaliacyjny (initialization routine) w czasie ładowania systemu. Są co najmniej trzy możliwe sposoby na wykonanie tego, jeżeli:

Najczęściej używanym oprogramowaniem dla inicjalizacji kart PnP pod Linuxem jest ,,isapnptools'' (zobacz sekcję Źródła i sekcję Zaczynamy). Opisują one właściwie jak skonfigurować wszystkie karty ISA PnP, nie tylko kartę dzwiękową.

2.4 Kilka uwag o ładowalnych modułach jądra

Niektóre sterowniki urządzeń mogą być budowane jako moduły zamiast wkompilowywania ich w jądro. Możesz znaleźć więcej informacji o modułach w ,,Kernel-HOWTO'' i ,,Module HOWTO'' (zobacz sekcję Dodatkowe informacje).

Jeżeli posiadasz kartę PnP, musisz zainstalować obsługę dźwięku jako ładowalny moduł jądra. Znaczy to, że nie możesz wbudować sterownika dźwięku w jądro, będziesz musiał zbudować go jako moduł, który może być władowany w jądro w czasie rzeczywistym. Jest to potrzebne dlatego, że jądro będzie zainstalowane przed skonfigurowaniem karty ISA PnP, a sterownik dźwięku musi być załadowany po skonfigurowaniu karty ISA PnP.

Moduł dźwięku jądra może być załadowany ręcznie - insmod sound albo modprobe -a sound albo w poprawnej linii skryptu ładującego twojego Linuxa (w Debianie jest wymagane aby dodać linię zawierającą sound do /etc/modules). Inne podejście, to odpalenie kerneld, demona instalującego i deinstalującego moduły.

Zauważ, że kerneld może nie być najlepszym rozwiązaniem dla sterownika AWE, ponieważ zabiera to dużo czasu, aby załadować moduł do jądra, szczególnie jeżeli chcesz używać syntezy Wave Table i ładować duże banki Sound Font, co musisz zrobić za każdym razem po załadowaniu modułu. Ponieważ kerneld usuwa nieużywane moduły po jednej minucie (standardowo), lepiej jest ładować moduł dźwięku ręcznie lub w czasie ładowania systemu. Zauważ, że samodzielne ładowanie modułu zapobiega usuwaniu go przez kerneld. Przy okazji: Możesz ręcznie ładować moduł i używać kerneld w tym samym czasie. Te dwie metody nie kolidują ze sobą, ale kerneld nie zajmuje się już modułem dźwięku.

Jest to użyteczne, gdy Twoje ustawienia miksera zostają skasowane po usunięciu i ponownym załadowaniu modułu. Rozwiązanie tego problemu zostanie podane w sekcji Mikser (jest tam opis jak można uruchomić mikser automatycznie kiedy moduł dźwięku zostaje załadowany). Jednakże zajmuje to trochę czasu dla kerneld do zainstalowania modułu, załadowania banku dźwięków i uruchomienia miksera. Z tego powodu lepiej jest instalować moduł dźwięku w czasie ładowania systemu i nie pozwalać kerneld go deinstalować.

2.5 Kilka uwag o sterowniku dźwięku w jądrze

Możesz zainstalować obsługę dźwieku bezpośrednio w jądrze lub jako ładowalny moduł. Jeżeli masz kartę PnP, musisz zainstalować obsługę dźwięku jako moduł, ponieważ karta PnP musi być zainicjalizowana przez isapnptools zanim moduł zostanie zainstalowany.

Jak możesz sobie wyobrazić, będziesz musiał zrekompilować jądro. Podam ci poniżej kilka podpowiedzi. Na razie pomówmy o obsłudze dźwięku w źródłach jądra. Jądro jest dystrybuowane z darmową (Lite) wersją OSS (USS) - sterownika dźwięku. Obecna wersja tego sterownika (3.5.4) nie obsługuje SB AWE w całości, a tylko jego część podobną do SB 16. Tak więc możesz odgrywać dźwięki RAW i używać syntezy OPL-2/OPL-3, ale nie będziesz mógł odgrywać muzyki MIDI z syntezą Wave Table.

Jeżeli chcesz używać syntezy Wave Table możesz kupić komercyjny sterownik firmy 4Front Technologies (proszę, niech mnie ktoś poinformuje, jeżeli to wystarczy) albo używać [darmowej] łaty na jądro "AWE 32 Sound Driver Extension" autorstwa Takashiego Iwai. Ten pierwszy nie jest opisany przez ten dokument, przyjmuję, że chcesz używać tego ostatniego.

Sterownik ten (zobacz sekcję Źródła ) jest publikowany na licencji GNU i jest dystrybuowany z kilkoma programami użytkowymi do syntezy EMU 8000 kart SB AWE.

Awedrv jest już dołączony do testowych wersji jądra (2.1.x), ale prawdopodobnie chcesz rozszerzać stabline wersje.

3. Jak zainstalować dźwięk z SB AWE

3.1 Rzeczy, które będą Ci potrzebne

Oto wymagania obsługi SB AWE pod Linuxem:

Jeżeli masz kartę PnP, będziesz także potrzebował:

Zobacz sekcję Źródła dla informacji skąd można zdobyć te programy.

3.2 Zaczynamy

Przyjmijmy, że masz poprawnie zainstalowaną kartę i prawdopodobnie już ją testowałeś pod DOS'em lub Windows.

Następnym krokiem będzie inicjalizacja karty w czasie ładowania systemu wtedy, i tylko wtedy, gdy jest to karta PnP. Postępuj zgodnie z dokumentacją pakietu źródłowego żeby skompilować i zainstalować isapnptools (albo po prostu użyj binarnego pakietu) i wykonaj polecenie:


# pnpdump > /etc/isapnp.conf


jako root. To wygeneruje, mam nadzieję, że odpowiedni, plik konfiguracyjny dla Twoich kart PnP, ale ze wszystkimi urządzeniami odkomentowanymi. Edytuj plik ostrożnie i porównuj wartości kanałów DMA, adresów IO i przerwań z konfiguracją pod DOS'em lub Windows, jeśli to możliwe. (pod Win95 zobacz zasoby wykorzystywane przez kartę w opcji zasoby w menedżerze urządzeń). Jeżeli masz problemy, przeczytaj dokumentację dostarczaną z isapnptools.

UWAGA: isapnptools często nie wykrywa wszystkich trzech portów I/O syntezy AWE Wave Table. Sprawdź dokładnie pozycję WaveTable w pliku isapnp.conf z przykładem podanym na końcu tego HOWTO. Ustaw adres I/O jeżeli to potrzebne.

UWAGA: Zgodnie z isapnp-faq, isapnp czasami nie zaprogramowywuje numeru urządzenia logicznego. Jeżeli napotkasz np. taką wiadomość o błędzie:

Error occured executing request 'LD 2' on or around line...

spróbuj dodać linię (VERIFYLD N) na początku pliku isapnp.conf. Musisz używać wersji co najmniej 1.10, żeby ta medoda zadziałała. Jeżeli nie możesz używać wersji 1.10 lub nowszej możesz także wprowadzić numery urządzeń logicznych bezpośrednio. Zobacz isapnp-faq, żeby usyskać więcej informacji o tej metodzie. Jeżeli to nie będzie działać skontaktuj się ze mną (i ludzi tworzących isapnp, oni też powinni być zainteresowani).

UWAGA: Upewnij się, że ostatnią linią jest (WAITFORKEY), to czasami bywa ominięte przez starsze wersje pnpdump.

Przykładowy isapnp.conf możesz znaleźć na końcu tego dokumentu (zobacz sekcję Przykładowy isapnp.conf.

Jeżeli używasz Debiana nie są potrzebne żadne dalsze ustawienia, isapnp zostanie uruchomiony w czasie ładowania w pliku /etc/init.d/boot po dodaniu tego kawałka kodu:


# Skonfiguruj karty isa plug and play przed ładowaniem
# modułów. Musisz to zrobić przed ładowaniem modułów, żeby mieć
# szansę skonfigurowania i zainicjalizowania kart PnP zanim
# sterowniki narobią bałaganu.
#
if [ -x /etc/init.d/isapnp ]
then
  /etc/init.d/isapnp start
fi

gdzie /etc/init.d/isapnp musi zawierać linie:


#! /bin/sh
# /etc/init.d/isapnp: skonfiguruj karty Plug ang Play
test -x /sbin/isapnp || exit 0
/sbin/isapnp /etc/isapnp.conf
exit 0

Jeżeli masz inną dystrybucję Linuxa, jesteś zdany na siebie. Nie wiem co robić (czy ktoś podałby mi te informacje?). Upewnij się tylko, że isapnp będzie uruchomiona zanim moduły będą załadowane (zobacz poniżej).

3.3 Kompilacja jądra

Przed rekompilacją jądra musisz "załatać" je Sterownikiem AWE. Nawet jeżeli źródła twojego jądra już zawierają awedrv (sprawdź /drivers/sound/lowlevel/), możesz chcieć rozszerzyć istniejący sterownik. Postępuj zgodnie z instrukcjami w katalogu ze źródłami awedrv. Musisz odpalić skrypt który zainstaluje łatę w jądrze.

Sprawdź, czy na pewno rozszerzyłeś źródła. Skrypt tylko sprawdza, czy dany plik instnieje - jeżeli tak, nie instaluje łaty. Powinieneś skasować plik drivers/sound/lowlevel/awe_wav.c przed uruchomieniem skryptu po rozszerzeniu źródeł jądra.

Następnie musisz skonfigurować jądro, włączając obsługę dźwięku. Mam nadzieję, że wiesz trochę o kompilowaniu jądra; zobacz Sound HOWTO i Kernel HOWTO, żeby uzyskać więcej informacji. Przejdź do katalogu z źródłami jądra (np. /usr/src/linux) i wykonaj polecenie


# make config

lub


make menuconfig

albo
make xconfig

. Teraz musisz skonfigurować jądro. Użyj tej okazji, żeby zbudować małe i mocne jądro, dostosowane do twojego komputera. Pamiętaj, żeby odpowiedzieć Y na pytanie Enable loadable module support, jeżeli chcesz zainstalować sterownik dźwięku jako ładowalny moduł (musisz, jeżeli masz kartę PnP), ale jestem pewien, że będziesz chciał i tak to zrobić.

W pewnym momencie zostaniesz zapytany o obsługę karty dźwiękowej. Możesz odpowiedzieć zarówno Y albo M jeżeli nie masz karty PnP. Musisz odpowiedzieć M (moduł), jeżeli posiadasz kartę PnP. Musisz skompilować obsługę karty dźwiękowj jako moduł (jeżeli masz kartę PnP), ponieważ taka karta musi być zainicjalizowana przed załadowaniem modułu. Na następujące pytania powinieneś odpowiedzieć Y, na wszystkie inne N:


Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?]
Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?]
/dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?]
MIDI interface support (CONFIG_MIDI) [Y/n/?]
FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?]
lowlevel sound driver support [Y/n/?]
AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?]

Tylko ostatnia opcja ma wpływ na syntezę Wave Table. Inne wykorzystują opcje SB16 sterownika OSS/Free.

Dodatkowo, musisz skonfigurować port I/O karty dźwiękowej. Spójrz na plik isapnp.conf dla wskazówek, jeżeli masz takowy. U mnie wystarczają stantardowe wartości. Zauważ, że standardowe wartości ze skryptu konfiguracyjnego jądra mogą być nieprawidłowe (zwłaszcza wartości SBC_IRQ i SB_MPU_BASE są złe dla większości kart).


I/O base for SB Check from manual of the card (SBC_BASE) [220]
Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5]
Sound Blaster DMA 0, 1 or 3 (SBC_DMA) [1]
Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7
(use 1 for 8 bit cards) (SB_DMA2) [5]
MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card
(SB_MPU_BASE) [330]
SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1]

Teraz zrekompiluj jądro. Użytkownicy Debiana powinni użyć kernel-package. To robi kompilację jądra czynnością tak prostą jak zainstalowanie paczki Debiana. Zobacz dokumentację w katalogu /usr/doc/kernel-package/. Oto podpowiedź:


# make-kpkg clean
# make-kpkg -revision custom.1.0 kernel_image

i wtedy


dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.deb

Jeżeli masz inną dystrybucję Linuxa, postępuj zgodnie ze standardowym sposobem kompilacji nowego jądra. Nie zapomnij o wydaniu poleceń make modules i make modules_install. Zobacz Sound HOWTO i (może) Kernel HOWTO, żeby uzyskać więcej informacji.

3.4 Przeładowanie systemu

Po zainstalowaniu nowego jądra powinieneś przeładować system (pamiętaj, żeby mieć funkcjonującą dyskietkę startową). Zaciśnij kciuki.

Jeżeli masz kartę PnP, pamiętaj, żeby odpalić isapnp bądź to w skrypcie ładującym (tak jak było to opisane wcześniej), bądź to ręcznie:


# /sbin/isapnp /etc/isapnp.conf
Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e:  CTL0048 Serial No 58128
[checksum 74]

Teraz możesz zainstalować sterownik dźwięku, jeżeli skompilowałeś go jako moduł:


# modprobe -a sound
AWE32 Sound Driver v0.3.3e (DRAM 2048k)

Jeżeli sądzisz, że wykrycie pamięci nie było poprawne (znam przypadek człowieka mającego AWE 64 z 4096k, a ,,wykryta'' ilość wynosiła 28672k), spróbuj rozszerżyć awedrv albo podaj ilość pamięci w pliku /usr/src/linux/drivers/sound/lowlevel/awe_config.h, np.


# define AWE_DEFAULT_MEM_SIZE 4096 /* kilobajtów */

Przykro mi, ale musisz wtedy zrekompilować jądro (może kompilacja modułów będzie wystarczająca, ale nie wiem na pewno).

Jeżeli działa, możesz chcieć, żeby moduł dźwięku był ładowany automatycznie. Możesz użyć kerneld (dlaczego to nie jest najlepszy pomysł zobacz w sekcji 1.4) lub dodaj linię zawierającą sound do /etc/modules (w Debianie) lub dodaj linię /sbin/modprobe -a sound do skryptu ładującego.

4. Testowanie sterownika dźwięku

4.1 /proc/devices, /dev/sndstat

Jeżeli masz obsługę dźwięku wbudowaną w jądro, dostaniesz trochę pożytecznych informacji w czasie ładowania systemu. Jeżeli obsługę dźwięku masz zainstalowaną jako ładowalny moduł, możesz otrzymać te same informacje (prawdopodobnie po deinstalacji modułu dźwięku najpierw (modprobe -r sound)) wydając polecenie


# modprobe -a sound trace_init=1
Sound initialization started

<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5
<Sound Blaster 16> at 0x330 irq 5 dma 0
<Yamaha OPL3 FM> at 0x388
Sound initialization complete
AWE32 Sound Driver v0.3.3e (DRAM 2048k)

Jeżeli masz wirtualny system plików /proc, możesz poszukać urządzenia dźwięku komendą


# cat /proc/devices
Character devices:
[...]
14 sound
[...]

Następnie upewnij się, że masz zainstalowane odpowiednie urządzenia w katalogu /dev/. Zobacz Sound HOWTO, żeby uzyskać więcej informacji. Teraz zapytaj /dev/sndstat o status modułu dźwięku:


# cat /dev/sndstat
Sound Driver:3.5.4-960630 (Sat Oct 11 19:35:14 CEST 1997 root,
Linux flora 2.0.29 #1 Sat Oct 11 19:12:56 CEST 1997 i586 unknown)
Kernel: Linux flora 2.0.29 #1 Sat Oct 11 19:36:23 CEST 1997 i586
Config options: 0

Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401

Card config:
Sound Blaster at 0x220 irq 5 drq 1,5
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0

Audio devices:
0: Sound Blaster 16 (4.13)

Synth devices:
0: Yamaha OPL-3
1: AWE32 Driver v0.3.3e (DRAM 2048k)

Midi devices:
0: Sound Blaster 16

Timers:
0: System clock

Mixers:
0: Sound Blaster
1: AWE32 Equalizer

Jeżeli nie widzisz takich informacji, to prawdopodobnie jest błąd w konfiguracji. Zobacz co nie działa, a wtedy wróć do kroku Zaczynamy, sprawdzając wszystko.

4.2 Wyjście - Urządzenie dźwięku typu "RAW"

Spróbuj zdobyć plik .au (Sun Workstation) albo plik RAW i wykonaj komendę


# cat bell.au > /dev/audio

lub


# cat sample > /dev/dsp

Powinieneś usłyszeć zawartość pliku przez Audio Device 0: Sound Blaster 16 (4.3)

4.3 Wyjście - Synteza OPL-2/OPL-3

Jeżeli chcesz używać syntezy FM OPL-2/OPL-3 do odgrywania plików MIDI, wypróbuj program playmidi (zobacz Dodatek B). Uruchom go komendą


# playmidi -f dance.mid

lub


# playmidi -4 dance.mid

Pierwsza komenda uruchomi OPL-2, druga OPL-3. Jeżeli dźwięk cię denerwuje nie wiń playmidi: To synteza FM brzmi tak źle.

Wyobraź sobie, że miałbyś tylko sterownik OSS/Free: To byłaby jakość dźwięku jaką mógłbyś uzyskać (nie biorąc pod uwagę syntezy programowej). Na szczęście masz SB AWE i możesz używać możliwości Wave Table ze Sterownikiem AWE.

4.4 Wyjście - Synteza Wave Table

Sterownik AWE jest dystrybuowany ze specjalnymi narzędziami (awesfx), żeby wykorzystać syntezę EMU 8000. Najpierw musisz załadować bank Sound Font do karty - nawet jeżeli chcesz używać sampli ROM! Możesz wziąć te pliki z instalacji Windows - szukaj plików z rozszerzeniem *.sfb lub *.sf2

Sample ROM są w pliku SYNTHGM.SBK, prawdziwe sample są w plikach SYNTHGS.SBK i SYNTHMT.SBK, oraz w SAMPLE.SBK. Możesz wziąć inne banki Sound Font przez ftp albo www, spróbuj na stronie EMU, stronie Creative Labs, albo na stronie z samplami Chaos, które są naprawdę dobre (pamiętaj, żeby przejrzeć stronę Sterownika AWE).

Spróbuj załadować standardowy zestaw GM (ROM) używając komendy


# sfxload -i synthgm.sbk

i wtedy odtwórz plik midi dostarczany z SB AWE:


# drvmidi dance.mid

4.5 Mikser

Uruchom swój ulubiony program miksera i uruchom go. Odegraj plik RAW i dwa pliki MIDI jednocześnie, wypróbowując ustawienia miksera. Pobaw się trochę, to powinno być bardzo łatwe. Oto lista urządzeń, oraz wyjaśnienie:

Inne ustawienia miksera odnoszą się do CD-ROMu, możliwie podłączonego do karty dźwiękowej, do głównej głośności, basów, tonów wysokich i poziomu nagrywania na różnych liniach wejściowych. Możesz określić, które linie powinny być nagrywane.

4.6 Wejście - Samplowanie z urządzeniem dźwięku typu "RAW"

Możesz nagrywać z różnych źródeł: z podłączonego CD ROMu, z mikrofonu podłączonego do wejścia MIC i z każdego źródła, które można podłączyć do wejścia LINE IN. Ustaw mikser w poprawnej pozycji. Odegraj dźwięk i nagrywaj do pliku, czytając z urządzenia dźwięku RAW, np.


# cdplay
# dd bs=8k count=5 </dev/dsp >music.au
5+0 records in
5+0 records out
# cat music.au >/dev/dsp

nagrywa i odtwarza pięć sekund dźwięku z urządzenia wejściowego.

4.7 Port MIDI

Przykro mi, nie ma jeszcze informacji o porcie MIDI!

5. Oprogramowanie Sterownika AWE

5.1 sfxload

Możesz ładować próbki do DRAM'u na karcie dźwiękowej programem sfxload. Zauważ, że możesz ładować tylko jeden plik z próbkami na bank, z bankiem 0 jako standardowym. A więc po komendzie sfxload synthgs.sbk jedyne sample w twojej karcie są samplami GS. Jeżeli chcesz załadować dodatkowe banki Sound Font musisz użyć opcji -b, np.


# sfxload synthgs.sbk
# sfxload -b1 sample.sbk
# drvmidi sfx.mid

Możesz załadować standardowy bank Sound Font automatycznie, razem z instalacją modułu. Dodaj taką linię:


post-install sound /usr/bin/sfxload synthgm.sbk

do pliku /etc/conf.modules.

Zobacz dokumentację, żeby uzyskać więcej detali o sfxload.

5.2 drvmidi

Z programem drvmidi możesz używać Sterownika AWE do odgrywania plików MIDI. Po prostu podaj nazwę pliku midi po komendzie:


# drvmidi waltz.mid

Zobacz dokumentację, żeby uzyskać więcej szczegółów o drvmidi.

6. Dodatek

6.1 Dodatkowe informacje

6.2 Źródła

6.3 Przykładowy isapnp.conf

W pliku konfiguracyjnym ISA PnP wygenerowanym przez pnpdump numery urządzeń twoich kart PnP pojawiają się jako sekcje. W pliku poniżej była wykryta jedna karta (dźwiękowa), z czterema urządzeniami logicznymi:

Zostawiłem LD 1 nieskonfigurowane, ponieważ nie mam CD ROMu podłączonego do portu IDE w mojej karcie dźwiękowej. Jeżeli nie masz portów IDE w twoim SB, LD 1 będzie urządeniem portu gier, a LD 3 się nie pojawi.

Zobacz sekcję Zaczynamy, żeby uzyskać dokładne (ważne!) informacje o tym pliku.


# $Id: pnpdump.c,v 1.9 1997/06/10 21:37:32 fox Exp $
# This is free software, see the sources for details.
# This software has NO WARRANTY, use at your OWN RISK
#
# For details of this file format, see isapnp.conf(5)
#
# For latest information on isapnp and pnpdump see:
# http://www.roestock.demon.co.uk/isapnptools/
#
# Compiler flags: -DREALTIME -DNEEDSETSCHEDULER

(READPORT 0x0203)
(ISOLATE)
(IDENTIFY *)

# Try the following if you get error messages like
# Error occurred executing request 'LD 2' on or around line...

#(VERIFYLD N)

# ANSI string -->Creative SB32 PnP<--

(CONFIGURE CTL0048/58128 (LD 0
#     ANSI string -->Audio<--

  (INT 0 (IRQ 5 (MODE +E)))
  (DMA 0 (CHANNEL 1))
  (DMA 1 (CHANNEL 5))
  (IO 0 (BASE 0x0220))
  (IO 1 (BASE 0x0330))
  (IO 2 (BASE 0x0388))

  (ACT Y)
))

(CONFIGURE CTL0048/58128 (LD 1
#     ANSI string -->IDE<--

# (INT 0 (IRQ 10 (MODE +E)))
# (IO 0 (BASE 0x0168))
# (IO 1 (BASE 0x036e))

# (ACT Y)
))

(CONFIGURE CTL0048/58128 (LD 2
#     ANSI string -->WaveTable<--

  (IO 0 (BASE 0x0620))
  (IO 1 (BASE 0x0A20))
  (IO 2 (BASE 0x0E20))

  (ACT Y)
))

(CONFIGURE CTL0048/58128 (LD 3
#     ANSI string -->Game<--

  (IO 0 (BASE 0x0200))
  (ACT Y)
))

# Returns all cards to the "Wait for Key" state
(WAITFORKEY)

7. Od tłumacza

Oto pierwsza wersja polskiego AWE HOWTO. Jeżeli zauważysz jakiś błąd, daj mi znać.

doc-linux-pl-2002.06.14.orig/mini/html/Tiny-News.pl.html0100664000175000017500000002606007457640740021447 0ustar covencoven Newsy-Minimum

Newsy-Minimum

Kenneth M. Lewis, Jr., <kent@fiona.umsmed.edu>
v?, 25 maja 1995
Wersja polska: Tomasz 'tsca' Sienicki, <tsca@edb.dk>
v1.02, 13 grudnia 2001


Dokument opisuje użycie serwera INN do obsługi niewielkiej ilości grup dyskusyjnych off-line.

1. O dokumencie

1.1 Aktualny status dokumentu

(Stan na dzień 14.10.1997)
Dokument Newsy-Minimum nie jest już aktualizowany przez autora. Jeśli chciałbyś podjąć się opieki nad tym dokumentem, skontaktuj się z <tjbynum@metalab.unc.edu>.

1.2 Prawa autorskie

Copyright (c) May 25, 1995 Kent Lewis (Kenneth M. Lewis, Jr.)

Jeśli dokument ten zostanie zaakceptowany przez Linux Documentation Project, wolno będzie rozpowszechniać go zgodnie z zasadami opisanymi w LDP HOWTO z zastrzeżeniem, że autor chciałby przejrzeć ostateczną formę niniejszego dokumentu przed włączeniem go do ww. zasobów.

2. Wstęp

Używam Linuksa, a z siecią łączę się za pomocą modemu. Do niedawna musiałem utrzymywać stałe połączenie z siecią aby móc czytać grupy dyskusyjne. Nie mogę jednak zbyt długo pozostawać on-line -- korzystam z usług odległego dostawcy łącza, za czas on-line płacę więc stawki międzymiastowe; oznacza to wysokie rachunki telefoniczne. Dlatego zacząłem się zastanawiać nad zminimalizowaniem kosztów dostępu do sieci bez utraty korzyści z tego dostępu płynących. Sposób taki znalazłem; mam nadzieję, że przyda się on również innym.

Dokument niniejszy opisuje jak używać INNa z niewielkim tylko zestawem grup. Za pomocą prostego skryptu perlowego artykuły są jednocześnie ściągane i wysyłane podczas krótko trwającego połączenia z siecią. Całość jest w wersji ,,alfa'' -- jeśli pojawią się nie opisane tu problemy, będziesz musiał sam sobie z nimi poradzić.

3. Opis sytemu ,,Newsy-Minimum''

3.1 Wymagania

Musisz mieć dostęp do serwera news (NNTP). Żeby sprawdzić, czy możesz z danego serwera czytać grupy i na nie pisać, sprawdź programem telnet port 119 tego serwera -- pojawi się informacja na temat Twoich uprawnień. Jeśli już używasz danego serwera, to wiesz, że dostęp masz -- w takim wypadku nie ma co sprawdzać. :-) Natomiast jeśli dostępu nie masz, postaraj się o niego przed przeczytaniem reszty niniejszego dokumentu.

Musisz mieć wystarczającą ilość miejsca na twardym dysku na składowanie artykułów. Moja linuksowa partycja ma 300 MB, a dwudniowy urobek około piętnastu grup zajmuje wg. df zaledwie od 1 do 2% pojemności dysku. Na wszelki jednak wypadek najlepiej zacząć od niewielkiej ilości grup i sukcesywnie dodawać kolejne.

Potrzebujesz Perla i INNa. Jeśli ich nie masz, ściągnij je z ftp://sunsite.unc.edu (lub któregoś z mirrorów). Perla prawdopodobnie znajdziesz w katalogu /pub/Linux/devel/perl, a INNa w /pub/Linux/system/Mail/news.

Jeśli jeszcze tego nie zrobiłeś, zainstaluj te dwa programy. Ja swojego INNa wziąłem z dystrybucji Slackware 2.2. Dołączona dokumentacja była bardzo dobra, po zapoznaniu się z nią nie powinieneś mieć problemu z instalacją. Perl, już skompilowany, również dołączony jest do Slackware 2.2 -- postaraj się zdobyć wersję skompilowaną, dokument niniejszy nie zawiera pomocy w instalacji i konfiguracji Perla.

3.2 Instalacja i rozruch

Nie zapomnij o założeniu grup ,,junk'' i ,,control'' -- bez nich program innd nie ruszy. Będziesz musiał założyć je ręcznie, ponieważ polecenie ctlinnd zakłada, że demon innd jest już uruchomiony. Po wystartowaniu tego demona utwórz poleceniem ctlinnd newgroup ... ... katalog do składowania newsów. Szczegółów szukaj w podręczniku systemowym (man ctlinnd).

Teraz musisz zmodyfikować plik /etc/news/newsfeeds -- dzięki temu INN utworzy plik w katalogu /usr/spool/news/out.going/; plik ten wykorzystywany będzie przez zamieszczony poniżej skrypt perlowy do publikowania napisanych off-line artykułów. Informacje na temat zawartości /etc/news/newsfeeds znajdziesz w dokumentacji INNa; przeczytaj też odpowiednią stronę podręcznika systemowego (man newsfeeds). WAŻNE: wpisy w /etc/news/newsfeeds powinny być umieszczone w takiej kolejności, aby pierwszym polem w pliku /usr/spool/news/out.going/$NEWSFEED były pełne ścieżki do artykułów, które chcesz wysłać. Jeśli pierwsze pole będzie zawierało co innego, skrypt będzie próbował wysłać na newsy owo ,,co innego'' zamiast Twoich artykułów, co z pewnością wywoła niepożądane efekty.

Nie zapomnij o zablokowaniu w pliku control.ctl możliwości automatycznego zakładania nowych grup. Jeśli tego nie zrobisz, to w miarę napływania z nadrzędnego serwera wiadomości kontrolnych liczba ściąganych grup będzie się powiększała, co spowoduje zwiększenie obciążenia i spowolnienie twojego systemu -- a w niniejszym HOWTO chodzi przecież o coś zupełnie przeciwnego.

Wejdź do wybranego przez siebie katalogu i wykonaj w nim polecenie
touch -t $WCZORAJ lastget
Zamiast $WCZORAJ użyj ciągu oznaczającego dzień wczorajszy (w formacie opisanym w podręczniku systemowym (man touch)).

Umieść poniższy skrypt w tym katalogu i nadaj mu prawa wykonywania. Zmień $NEWSPATH na katalog, w którym zainstalowałeś INNa (u mnie jest to /usr/lib/news). Zmień $SCRIPTPATH na ścieżkę do katalogu, w którym umieściłeś skrypt (u mnie /usr/lib/news). W tym samym katalogu znajdować się musi wspomniany wyżej plik lastget. Zmień $PROVIDER na adres serwera news, z którego będziesz korzystać. Zmień $NEWSFEED na nazwę feedu, której użyłeś w /etc/news/newsfeeds.

Przeczytaj strony ,,inews'' i ,,nntpsend'' podręcznika systemowego, aby zorientować się w działaniu poniższego skryptu.

-----------------------------------------------------------------------------

#!/usr/bin/perl

##
## pobierz nowe artykuly
##

open(LIST, "$NEWSPATH/active")
        || die "nie moglem otworzyc listy grup do pobrania!";

while (<LIST>) {
 @newsgroup = split(' ', $_); ## dzieli kolejne linie pliku active wg spacji,
                              ## umieszcza dane w tablicy @newsgroup
                              ## @newsgroup[0] zawiera teraz nazwę grupy

  system "$NEWSPATH/bin/nntpget -f $SCRIPTPATH/lastget -n @newsgroup[0] -o -v $PROVIDER"
        || print "nie moglem sciagnac postow z grupy @newsgroup[0]\n";
  }

close(LIST);

system "touch $SCRIPTPATH/lastget";


##
## usun naglowek "NNTP-Posting-Host: " z postow do wyslania
##

open(LIST, "/usr/spool/news/out.going/$NEWSFEED")
      || die "nie moglem otworzyc listy postow do przygotowania do wyslania";

while (<LIST>) {
  if (@article = split(' ', $_)) {
    $article = @article[0];     
    rename("$article", "$article" . '.bak');
    $backup = "$article.bak";
    open(OUTPUT, ">> $article");
    open(INPUT, "$backup");
    select(OUTPUT);
    while (<INPUT>) {
      print unless ?^NNTP-Posting-Host.*\n?
      }
    close(OUTPUT);
    close(INPUT);
    unlink("$backup");
    reset;
  }
}
select(STDOUT);

close(LIST);

##
## wyslij posty
##

$ENV{'NNTPSERVER'} = "$PROVIDER";

open(LIST, '/usr/spool/news/out.going/$NEWSFEED')
        || die "nie moglem otworzyc listy postow do wyslania";

while (<LIST>) {
  if (@article = split(' ', $_)) {
    $article = @article[0];
    system "inews -h $article";
    }
  }

close(LIST);

------------------------------------------------------------------------------

3.3 Sposób użycia

Powiedzmy, że nazwałeś powyższy skrypt ,,foonews''. Przy następnym połączeniu z siecią wykonaj polecenie $SCRIPTPATH/foonews. Jeśli przez ekran zaczną przewijać się identyfikatory wiadomości (Message-ID), to znaczy, że wszystko działa jak powinno. Być może będziesz musiał poczekać kilka sekund na pojawienie się pierwszych Message-ID. Po zakończeniu tej operacji powinieneś mieć na dysku wszystkie wiadomości wysłane na newsy od czasu ostatniej modyfikacji pliku $SCRIPTPATH/lastget, a wszystkie napisane przez Ciebie posty powinny być wysłane do serwera, z którym się łączyłeś; serwer rozpropaguje te wiadomości dalej. Po wszystkim plik $SCRIPTPATH/lastget będzie miał dzisiejszą datę ostatniej modyfikacji; jutro, kiedy ponownie uruchomisz ,,foonews'', skrypt ściągnie newsy wysłane na newsy między tą datą, a momentem uruchomienia skryptu.

Będziesz musiał ręcznie usuwać zawartość pliku /usr/local/news/out.going/$NEWSFEED. Umyślnie nie dopisałem tej funkcji do skryptu, żeby móc sprawdzić, czy moje artykuły rzeczywiście zostały wysłane... i jakoś nie zabrałem się jeszcze do zautomatyzowania tego zadania. Po pierwszym uruchomieniu skryptu najpierw sprawdziłem, czy artykuły zostały wysłane, a dopiero potem usunąłem zawartość tego pliku; możesz zrobić tak samo.

Jeśli poprawnie skonfigurowałeś INNa, to skrypt $NEWSPATH/bin/news.daily zajmie się poprawnym działaniem całej konstrukcji.

W tej chwili wszystko robię ręcznie, jednak nic nie szkodzi na przeszkodzie, aby proces ten zautomatyzować. Kilka wpisów w cronie powinno załatwić sprawę.

I ostatnia uwaga: wcale nie uważam, że mój skrypt jest elegancko napisany, ani że sposób jest idiotoodporny i niezawodny. Ale SOA#1 -- u mnie działa -- więc postanowiłem się nim podzielić.

4. Podziękowania...

...dla wszystkich, dzięki którym Linux jest taki fajny!

Kent Lewis
kent@fiona.umsmed.edu

5. Od tłumacza

5.1 Inne źródła informacji

Polskie tłumaczenia pozostałych dokumentów HOWTO znajdują się pod adresem http://www.jtz.org.pl/. Z pewnością szczególnie zainteresuje Cię INN+SUCK mini HOWTO, które znacznie poszerza informacje zawarte w niniejszym dokumencie. Problem czytania newsów off-line rozwiązać możesz też za pomocą odpowiedniego czytnika, więcej na ten temat znajdziesz w FAQ grupy pl.news.czytniki.

5.2 O tłumaczeniu

Dokument oryginalny dostępny jest wyłącznie w formacie txt (patrz http://sunsite.unc.edu/LDP/); znaczniki sgml i podział na rozdziały pochodzą ode mnie.

Copyright for the translation:
(c) 2001 by Tomasz `tsca' Sienicki, tsca@edb.dk doc-linux-pl-2002.06.14.orig/mini/html/Ultra-DMA.pl.html0100644000175000017500000007777207247552160021311 0ustar covencoven Ultra-DMA mini HOWTO

Ultra-DMA mini HOWTO

Autor: Brion Vibber, brion@pobox.com
v3.0, 9 Listopada 1999
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl.
v1.0, 2 Marca 2001


Celem tego dokumentu jest wyjaśnienie sposobu użytkowania dysków UltraDMA/UltraATA/Ultra33/Ultra66 w Linuksie. Najnowsza wersja oryginału znajduje się pod adresem http://pobox.com/~brion/linux/Ultra-DMA.html. Dokument ten napisany został w standardzie ISO-8859-2.

1. Wprowadzenie.

Celem tego dokumentu jest wyjaśnienie sposobu użytkowania dysków UltraDMA/UltraATA/Ultra33/Ultra66 w Linuksie. W wielu przypadkach nie ma trudności w użytkowaniu tych urządzeń, a drobne ,,poprawki'' mogą wpłynąć pozytywnie na lepsze działanie. Z kolei w innych przypadkach wymagane są dodatkowe działania tylko po to, żeby dostać się do dysku.

1.1 Zastrzeżenie

Informacje zawarte w tym dokumencie są, wg. mojej wiedzy, poprawne. Jednak mogą pojawić się literówki, jakieś tajemnicze błędy podczas transmisji jak również dziwne niekompatybilności w systemie, które będą powodowały niepoprawne działanie opisanych tutaj sposbów. Tak więc... przed rozpoczęciem grzebania w konfiguracji dysku NALEŻY ZROBIĆ KOPIĘ ZAPASOWĄ DANYCH, KTÓRYCH NIE CHCEMY STRACIĆ. Jeśli jeszcze nie robisz tego regularnie, to dla własnego dobra - zacznij.

1.2 Wyrazy uznania

Michel Aubry - łata do VIA do włączania UDMA dla jądra 2.0.33 i inne; zunifikowana łata UDMA dla 2.0.34+.

Andrew Balsa - dostarczył ogólnych informacji na temat UDMA oraz łatę UDMA do Intel TX, SiS i VP1 dla jądra 2.0.33 oraz zunifikowaną łatę dla 2.0.34+.

Maxime Baudin - tłumaczenie francuskie

Bokonon - ``Controller'' vs. ``interface''

John G. - łata do VIA VP2 dla jądra 2.0.33 i różne informacje

Martin Gaitan - obejście instalacji dla Ultra33 ide0/ide1

Andre M. Hedrick - aktualny opiekun systemu IDE w Linuksie

Hĺvard Tautra Knutsen - tłumaczenie norweskie

Norman Jacobowitz - nakłonił mnie do dodania informacji o VP3

John Levon - informacja o TX Pro

Peter Monta - informacja o używaniu dwóch sterowników Ultra33

Masayoshi Nakano - tłumaczenie japońskie

Gadi Oxman - łata do Ultra33 dla jądra 2.0.34 i znalazł tajemnicze numerki do zastosowania w obejściu

Andy Pearce - zasugerował dodanie informacji o dodatkowych plikach urządzeń hde, hdh

Andrei Pitis - łata dla LILO

Brion Vibber - ten dokument

1.3 Prawa autorskie

Dokument ten można kopiować i dystrybuować w celach informacyjnych bez ograniczeń. Nie wolno go modyfikować bez zgody autora z wyjątkiem zmiany wyglądu. Tumaczenie tego dokumentu jest dozwolone. Jednak zalecany jest kontakt z autorem, aby otrzymać najnowszą wersję.

2. Co to jest Ultra-DMA i dlaczego tego chcę?

Oto krótki przegląd technologii opartych na IDE:

2.1 IDE, EIDE, ATAPI

Są to starsze technologie dyskowe. Większość interfejsów nie-SCSI i dyskowych, które można dzisiaj kupić, to EIDE chociaż wiele dużych dysków umie obsługiwać UDMA. [Od tłumacza: ponieważ dokument jest z XI.1999, więc warto dopowiedzieć, że w tej chwili II.2001 praktycznie wszystkie szanujące się firmy wypuszczają dyski z obsługą UDMA (najlepiej ATA100)].

2.2 Bus Master DMA

Bus master DMA to technologia zwiększająca prędkość transferu danych z/do dysku twardego, która wymaga obslugi przez płytę główną i BIOS i chociaż najmniejszej obsługi ze strony dysku.

Więcej możesz się dowiedzieć pod adresem http://developer.intel.com/design/pcisets/busmastr/FAQs.htm.

2.3 Ultra-DMA/Ultra-ATA/Ultra33/...

Ultra-DMA ma wiele nazw - tutaj będziemy je nazywać UDMA.

UDMA jest bardziej zaawwansowaną technologią, która umożliwia o wiele większe transfery (do 33,3 MB/s w UDMA 2 i 66,7 w UDMA 4) od dwóch do czterech razy szybciej niż EIDE i po znacznie niższej cenie niż SCSI. Wiele nowych komputerów dostarczanych jest z dużymi dyskami UDMA i interfejsami UDMA. Możliwe jest też dodanie interfejsów UDMA (jak np. Promise Ultra33/66) do komputera, aby zwiększyć transfery dysków bez obsługi UDMA.

Dużo szczegółów na temat UDMA można się dowiedzieć ze strony http://www.quantum.com/src/whitepapers/ultraata/

Należy zauważyć, że długość taśmy łączącej urządzenie z kontrolerem UDMA musi być mniejsza od zwykłego DMA - najlepiej mniej niż 30 cm, maksymalnie 45 cm. Jeśli chcemy mieć 66 MB/s, to wymagana jest taśma 80-pinowa i na pewno nie dłuższa niż ww. Jeśli pojawia się dużo błędów CRC, to należy użyć krótszej taśmy.

2.4 Właściwie to jak ,,ultra'' to jest?

Zanim zaczniemy, pozwolę sobie wyjaśnić drobne nieporozumienie. Te transfery 33 MB/s i 66 MB/s to transfery maksymalne (burst transfer rate) i nie doświadcza się ich zbyt często. Oto mały wyciąg z ,,generic UDMA.txt'':

Transfery chwilowe/maksymalne (burst) powinny osiągać wartości od 16,6 MB/s (dla PIO 4 i DMA
2) do 33 MB/s dla UDMA. W swojej łacie do jądra 2.1.55 Kim-Hoe Pang
wyliczył te transfery z zależności 60 ns/słowo co daje 33 MB/s.

Jednak transfery takie dotyczą tylko danych przesyłanych z/do cache'u
(476 kB dla dysku IBM 6,4 GB) i nie są zbyt odpowiednie dla
większości użytkowników Linuksa.

Jądro Linuksa używa tyle RAMu ile się tylko da, aby cache'ować dane z
dysku. Tak więc jeśli czegoś nie ma w tej podręcznej pamięci jądra, to
jest bardzo małe prawdopodobieństwo, że będzie w o wiele mniejszym cache'u
dysku.

O wiele bardziej odpowiedni będzie sustained transfer rate, czyli prędkość z jaką dane są transportowane z dysku do głównej pamięci, gdzię mogą być użyte. Prostym sposobem na zmierzenie tego transferu jest użycie polecenia hdparm - np hdparm -Tt /dev/hda, aby zmierzyć transfer pierwszego dysku IDE.

Oto trochę danych zebranych po intesnywnym testowaniu hdparmem:
[od tłumacza: W tej chwili (II.2001) te transfery wyglądają znacznie
lepiej]

PIO tryb 4:     +/- 5,2 MB/s
DMA tryb 2:     +/- 7,2 MB/s
UDMA tryb2:     +/- 9,8 MB/s

Jak widać, UDMA jest prawie dwa razy szybsze od EIDE i znacząco szybsze niż zwykłe ,,bus mastering DMA''. Większość obecnych dysków UDMA potrafi osiągnąć tranfery między 10 a 15 MB/s w UDMA 2 (33 MB/s) i UDMA 4 (66 MB/s).

2.5 Jak się ma UDMA do SCSI?

Nie mam żadnych konkretnych liczb, abym mógł je podać, ale ogólnie dyski SCSI są szybsze od UDMA. Jednak jeśli spojrzeć na cenę, to można zauważyć, że dyski UDMA są o wiele tańsze. Stosunek wydajność/cena jest znacznie lepszy dla UDMA.

3. Używanie dysku UDMA z interfejsem EIDE.

To jest akurat łatwe do zrobienia. Ponieważ wszystkie dyski UDMA są kompatybilne z EIDE, należy po prostu podpiąć dysk UDMA do interfejsu EIDE i Linux nie powinien mieć najmniejszych problemów z wykryciem go. Należy pamiętać, że transfery będą takie jak na zwykłym EIDE.

4. Używanie dysku UDMA z interfejsem UDMA

Mam dwie wiadomości: dobrą i złą. Dobra, to ta, że interfejs UDMA można używać zarówno dla dysków UDMA i ,,legacy EIDE''. Będzie o wiele szybciej niż w interfejsie EIDE.

Zła wiadomość to ta, że stare jądra (2.0.x) nie obsługują UDMA zbyt dobrze. Nowsze jądra 2.2.x obsługują UDMA33, a do tych, które nie obsługują, są dostępne łaty.

Dodatkowo należy zaznaczyć, że niektóre interfejsy UDMA, które są dodawanymi kartami a nie są wbudowane w płytę główną, wymagają jakiejś łaty lub kilku sztuczek, żeby używać ich ze starym jądrem. Oto po co w ogóle ten dokument istnieje - aby wyjaśnić jak zdobyć łaty i jakie to są sztuczki.

5. Interfejsy UDMA PCI nie zintegrowane z płytą główną

Istnieją interfejsy UDMA jako karty PCI, przy pomocy których można dodać obsługę UDMA bez wymiany płyty głównej lub dodać kolejny kontroler jeśli istniejące zostały już zapełnione. Są one także czasami instalowane w nowych komputerach: Gateway 2000 i Dell.

Większość z nich nie jest obsługiwana przez stare jądra serii 2.0.x, ale wiele powinno być obsługiwanych przez jądra 2.2.x. Jednak niektóre z najnowszych takich kart (np. Promise Ultra66) nie są obsługiwane nawet przez najnowsze jądra [od tłumacza: teraz (II.2001) jednak chyba już większość jest obsługiwana]. Jeśli posiadasz taką kartę, to musisz zainstalować łatę na jądro albo znaleźć nowsze z obsługą twojej karty. Jeśli musisz zainstalować Linuksa na dysku na takim interfejsie, to trzeba będzie trochę pokombinować.

5.1 Promise Ultra33

Jest to karta PCI z dwoma kanałami UDMA, obsługująca do 4 dysków. Specyfikacje i ceny można znaleźć pod adresem http://www.promise.com. Karta ta jest we wczesnych modelach Gateway 2000 Pentium II.

Jądra 2.0.35 i nowsze oraz wszystkie 2.2.x obsługują Ultra33 i nie powinno być problemów z zainstalowaniem dystrybucji opartej na tych jądrach. Starsze jądra nie obsługują tego standardu i z instalacją Linuksa starszej wersji możgą być kłopoty jeśli nie można lub nie chce się przejść na nowsze jądro.

Instalacja Linuksa z obsługą Ultra33

Pomimo iż jest łata do interfejsu Ultra 33, to zainstalowanie jej i kompilacja jądra nie jest prostą sprawą jeśli nigdy nie instalowałeś Linuksa. Jest więc pewne obejście, które pozwala zainstalować system na takim interfejsie. Podziękowania dla Gadi Oxmana za poniższe informacje na temat ustawień interfejsu:

Jeśli jest dostęp do konsoli z dysku instalacyjnego, to można
wyświetlić ustawienia karty Promise poleceniem "cat /proc/pci":

    RAID bus interface: Promise Technology Unknown device (rev 1).
      Vendor id=105a. Device id=4d33.
      Medium devsel.  IRQ 12.  Master Capable.  Latency=32.
      I/O at 0xe000.   (a)
      I/O at 0xd804.   (b)
      I/O at 0xd400.   (c)
      I/O at 0xd004.   (d)
      I/O at 0xc800.   (e)

i przekazać do jądra parametry "ide2=a,b+2 ide3=c,d+2".

Uwaga: Liczby podane tutaj będą się różnić od Twoich. Przykładowymi parametrami w tym przypadku będą: ``ide2=0xe000,0xd806 ide3=0xd400,0xd006''. Jeśli używany jest tylko pierwszy kanał Ultra33 (np. jeśli jest tylko jeden dysk czy dwa jeśli są to master i slave na jednym kanale) wtedy nie trzeba podawać ide3.

Red Hat 5.1:Należy wystartować z dyskietki startowej i wcisnąć ENTER po pojawieniu się zachęty. Jądro wystartuje i pojawi się zapytanie o język, klawiaturę i metodę instalacji. Źródło instalacji nie ma znaczenia, ważny jest kolejny krok: powinno się pojawić okienko zatytułowane ``Select Installation Path'', wciskamy Alt-F2, aby przejść do linii poleceń. Wpisujemy ``cat /proc/pci'', zapisujemy liczby, które się pojawią i startujemy ponownie z dyskietki startowej. Tym razem, gdy pojawi się zachęta wpisujemy ``linux ide2= (tutaj te numerki spisane wcześniej jak na przykładzie wyżej) ide3=(i kolejne numerki)''. Teraz instalacja na dysk twardy powinna odbyć się już bez problemów, chociaż LILO będzie pewnie miało problemy z zainstalowaniem się. Zamiast instalować LILO trzeba zrobić dyskietkę startową i startować z niej z parametrami jw. dopóki nie będzie można załatać jądra i LILO.

Red Hat 5.0 i Slackware 3.4:Tutaj sytuacja jest podobna, z małym wyjątkiem: programy instalacyjne ignorują /dev/hde-h (dyski na ide2 i ide3). Aby zainstalować Linuksa na lub z takiego dysku trzeba nadpisać jeden lub oba kanały z płyty głównej. Jednak uwaga na nadpisanie kanału, z którego odbywać się będzie instalacja. Np. jeśli instalacja odbędzie się z CD-ROMu na /dev/hdd (ide1 - kontroler na płycie głównej) na dysk /dev/hde (ide2 - Ultra33), trzeba nadpisać ide0 przez ide2 a zostawić ide1. Przy starcie z dyskietki ratunkowej pojawi się zachęta w RH 5.0 natomiast Slackware udostępnia powłokę w trybie instalacyjnym. Jednak RH 5.0 stwarza problemy z wystartowaniem po instalacji. Jeśli takie problemy pojawią się można sciągnąć dyskietkę startową Slackware'a z ftp://ftp.icm.edu.pl/pub/linux/slackware/slackware-current/bootdsks.144/ i użyć tej dyskietki.

W wypadku innych dystrybucji trzeba trochę poimprowizować, ale proces powinien być podobny.

WAŻNE: Bez łaty (omawianej w punkcie Zunifikowane IDE) jądro potrzebuje parametrów startowych, aby dostać się do dysku! Z tego powodu bardzo ważnym jest podczas konfiguracji LILO (na dysku lub dyskietce), aby podać dokładnie te same parametry jak podczas instalacji. W przeciwnym wypadku system nie wystartuje! Można te parametry przekazać podczas startu systemu (tak samo jak podczas instalacji) w zachęcie LILO wciskając SHIFT i wpisując ``linux ide2=.....'' za każdym razem. Polecam jednak czym prędzej załatać jądro i zapomnieć o wpisywaniu tych parametrów. Z tego co się orientuję, to nie ma sposobu przekazania parametrów do jądra startującego z dyskietki, TRZEBA używać LILO lub innego programu ładującego system, który pozwala na przekazywanie parametrów.

Niełatane jądra i programy instalacyjne często mają problemy z używaniem ide2 czy ide3 nawet jeśli napędy zostały poprawnie wykryte. Jeśli nie można użyć tych interfejsów przy pomocy powyższej techniki, to można spróbować podać ide0 lub ide1 zamiast ide2 czy ide3 (podziękowania dla Martina Gaitana). To podmienia interfejsy na płycie głównej na Promise Ultra33 i można kierować się wskazówkami z następnego punktu tak jak po fizycznej zamianie tych interfejsów. Jeśli do instalacji użyty zostanie CD-ROM, to należy uważać, żeby nie podmienić interfejsu, do którego jest on podpięty, bo instalacja będzie nie możliwa! Jeśli jest to hda lub hdb, to dysk należy podpiąć do ide1 w przeciwnym razie (hdc, hdd) - do ide0.

Instalacja Linuksa omijająca Ultra33

Jeśli nie można zastosować takiego obejścia jw., to trzeba spróbować czegoś innego. Oto alternatywna metoda, która gwarantuje działanie, ale wymaga otwarcia komputera i pogrzebania w nim. UWAGA: Jeśli nie bardzo wiesz jak podłączać i odłączać dyski, to radzę zapoznać się z podręcznikiem, który otrzymałeś z dyskiem czy sterownikiem! Jeśli coś pochrzanisz i nie będziesz wiedział jak to złożyć spowrotem, to będziesz żałować!

Skoro już to napisałem, to reszta jest już prosta. Większość płyt głównych z czasów obecnych ma wbudowane interfejsy EIDE. Należy odłączyć dysk od Ultra33 i podłączyć go do EIDE. Jeśli są jakieś inne urządzenia IDE, to należy albo podłączyć dysk na nie używanym kanale, albo chwilo odłączyć urządzenie, które nie jest teraz potrzebne. Potem: zainstaluj Linuksa, ściągnąć łatę, zainstalować ją na jądro (następny punkt).

Teraz można już przełączyć dysk spowrotem do interfejsu Promise... no prawie. Na wszelki wypadek należy zrobić dyskietkę startową (cd /usr/src/linux ; make zdisk), którą będzie można użyć do startu systemu jeśli LILO nie będzie działać. A żeby być jeszcze bardziej pewnym można zrobić dwie i jedną odłożyć na bok.

Dobra, to teraz czas trochę pomyśleć. Jeśli na interfejsie Promise jest tylko jeden dysk, to będzie to /dev/hde (a i b to pierwszy kontroler IDE, c i d - drugi). Ewentualne dodatkowo umieszczane tam napędy będą przyjmować kolejne litery od e tak jak dyski IDE.

Teraz trzeba zmodyfikować plik /etc/fstab i podmienić wpisy hda, hdb, ... na odpowiednie hde, hdf, .... Jeśli zmieniona została lokalizacja (z master na slave) jakiegoś innego urządzenia (CD-ROM, ZIP) lub jakieś wyjęte, które mają zostać w komputerze, to także trzeba je dopisać do tego pliku.

W przypadku użycia LILO, trzeba także skonfigurować i je, aby używało nowych plików urządzeń (omawianie konfiguracji LILO jest poza zakresem tego dokumentu. Aby dowiedzieć się jak to się robi zajrzyj do LILO mini-HOWTO. W przeciwnym wypadku trzeba będzie użyć dyskietki, która została zrobinoa wcześniej, którą i tak trzeba teraz skonfigurować, aby widziała dysk na hde. Robi się to poleceniem rdev. Wkładamy dyskietkę do stacji i wpisujemy ``rdev /dev/fd0 /dev/hde1''. Oczywiście zakładam tutaj, że Twoja główna partycja jest pierwszą na dysku pierwszym. Jeśli nie, to użyj poprawnego numeru partycji!

Reboot. Teraz system powinien działać poprawnie.

Instalowanie łaty do Ultra33

Jądra w wersji 2.0.35 i nowsze mają wbudowaną obsługę Promise Ultra33. Trzeba tylko ściągnąć takie jądro z ftp.icm.edu.pl i je skompilować.

Instrukcji jak to zrobić należy szukać w Kernel HOWTO.

Używanie dwóch kart Ultra33 w jednym komputerze

W tej chwili nie działa... Nie radzę próbować o ile oczywiście nie masz ochoty na kompilacje jądra i kombinowanie z różnymi konfiguracjami.

5.2 Promise Ultra66

Jest to mnie więcej to samo urządzenie co Ultra33, tyle że obsługuje UDMA 4 66 MB/s. Niestety nie ma jeszcze obsługi w jądrach 2.2.x

Obsługa jest zawarta w dostępnej łacie dla jąder 2.0.x i 2.2.x pod adresem ftp.icm.edu.pl oraz w jądrach rozwojowych 2.3.x od 2.3.3 w górę.

Jednak zanim będzie można załatać jadro lub uaktualnić je, to trzeba zastosować te same sztuczki co dla Promise Ultra33. Albo można użyć dystkietki startowej udostępnionej przez Promise.

5.3 Artop ATP850UF

Ta karta jest obsługiwana przez zunifikowany kod IDE. Instalacja Linuksa na niej może być podobna do instalacji na Promise Ultra33.

5.4 Dodawanie plików urządzeń.

Trzeci i czwarty interfejs IDE (ide2 i ide3) używają plików urządzeń /dev/hde* do /dev/hdh*. W przypadku starszych jąder pliki te nie były tworzone automamtycznie i trzeba je dodać ręcznie, aby dysk działał.

W źródłach któregoś z nowszych jąder, znajduje się skrypt /usr/src/linux/scripts/MAKEDEV.ide, który wystarczy uruchomić.

6. Interfejsy UDMA na płycie głównej

Używają one standardowych portów I/O IDE i są w pełni kompatybilne z wolniejszymi transferami na niełatanym jądrze 2.0.x. Przez to nie powinny sprawiać żadnych problemów podczas instalacji a instalacja łaty to tylko polepszenie szybkości a nie wymagany krok. Trochę obsługi UDMA jest w najnowszych jądrach 2.0.x a obsługa chipsetów Intela znajduje się w jądrach 2.2.x.

6.1 Intel FX, HX, VX, TX, LX i BX

Jeszcze raz dziękuje Gadiemu za tę informację:

Obsługa <it/bus mastering DMA/ dla chipsetu TX jest w jądrach 2.0.31+

W starszych jądrach interfejs ten będzie używany w wolniejszym trybie EIDE. W każdym razie interfejs ten zostanie automatycznie wykryty i nie powinien sprawiać żadnych kłopotów.

Pełna obsługa UDMA 2 dla tych chipsetów jest zawarta w jądrach 2.2.x i zunifikowanej łacie IDE; zobacz Zunifikowane IDE.

6.2 VIA VP2 i podobne chipsety

Interfejs ten także jest automatycznie wykrywany i może być używany przez niełatane jądro. Ale skoro masz już taki interfejs, to warto ściągnąć i zainstalować łatę, żeby mieć szybsze transfery i pozbyć się dość denerwującego komunikatu "unkown PCI device".

Jedna łata jest dostępna pod adresem www.ipass.net. Przeznaczona jest dla VIA VP2/97 znajdującego się na płytach głównych FIC PA-2007 i PA-2011. Ale może też działać na podobnych chipsetach. Zgłaszano też, że łata ta działa z VIA VP3; niekoniecznie musi być to prawdą w każdym przypadku.

Należy zauważyć, że ta łata obsługuje tylko tryb Bus Mastering, a nie pełną tryb UDMA, ale i tak lepsze to niż zwykłe EIDE. Aby uruchomić tryb BMDMA należy postępować zgodnie ze wskazówkami na stronie z łatą.

Jest jeszcze inna łata, która w pełni obsługuje UDMA - www.pyreneesweb.com. Przeznaczona jest dla VIA VT82C586B i powinna także działać z VP2, VP3, VPX, P6 i AGP Apollo. Aby ją zainstalować należy postępować zgodnie z zawartymi tam wskazówkami. Zalecane jest jednak zrobienie kopii zapasowej najważniejszych danych ponieważ istnieje możliwość wystąpienia problemów z niekompatybilnymi płytami głównymi. Jeśli jednak łata zadziała, to będzie już działać bez problemów.

Chipset VP1 nie działa z tymi łatami, ale jest obsługiwany przez łatę dla zunifikowanego IDE.

6.3 TX Pro i inne płyty główne ,,Pro''

UDMA nie jest poprawnie obsługiwane przez te płyty. Nie są takie same jak TX mobo i najwidoczniej źlę raportują informacje o DMA - stąd problemy. Słyszałem, że ktoś nad tym pracuje więc pewnie łata pojawi się w przyszłości.

6.4 HPT 366

Ten chipset jest na popularnych płytach Abit BP-6 oraz innych i dotarcza UDMA 4 66 MB/s jako doatek do dwóch innych kanałow w trybie 2 33 MB/s. Obsługa jest poprzez zunifikowany kod IDE, ale nie ma jej w żadnym z obecnych jąder. Tak więc instalacja może być podobna do tej z kartą Promise Ultra33.
[Od tłumacza: obsługa jest w jądrach 2.3.99+ oraz 2.4.x]

7. Zunifikowana łata IDE

Zunifikowana łata do IDE dostarcza obsługę wielu chipsetów i kart rozszerzeń. Łaty takie są dostępne dla jąder, 2.0, 2.2 i 2.3. Jeśli obecnie użytkowane jądro nie obsługuje posiadanego chipsetu, to należy je załatać.

Łatami tymi opiekuje się Andre Hedrick, można je ściągnąć z najbliższej kopii serwera ftp.kernel.org.

UDMA jest obsługiwane w poniższych chipsetach i prawdopodobnie w wielu innych, których nie znam:

Kod jest napisany tak, aby było go łatwo rozszerzyć o obsługę kolejnego chipsetu.

Oto kilka uwag od Andre Balsa'y, autora wcześniejszej łaty:

Na dobrej płycie głównej z dyskiem IBM UDMA można osiągnąć prawie
maksymalny transfer: 10 Mb/s (zmierzone 'hdparm -t -T').

Chipset Intela TX ma pojedynczą kolejkę FIFO dla dysków i jest ona
dzielona przez dwa interfejsy IDE, tak więc używanie dwóch dysków UDMA
spowolni ich działanie.
Jednak, SiS5598 ma dwa oddzielne interfejsy, każdy z własną kolejką
FIFO. Teoretycznie można się zbliżyć do 66 Mb/s na płytach głównych
z chipem SiS5598 używając software'owego RAID0. SiS5571 ma chyba tę
samą strukturę interfejsu. Nie mam żadnych danych na temat VIA, więc
nie mogę nic na ten temat powiedzieć.

Sterownik IDE (U)DMA napisany przez Marka Lorda ma szczególnie krótki
czas konfiguracji (a stąd opóżnienia w transferach). Jest on idealny
do częstych transferów
małych paczek danych (takich jak serwery news) i może być lepszy od
technologii SCSI.

8. Włączanie i wyłączanie UDMA

Jądro z wkompilowaną obsługą UDMA włączy je automatycznie jeśli wykryje napęd UDMA. W większości przypadków, kiedy obsługa taka się nie włączy to albo jądro nie umie obsłużyć chipsetu (zdobądź łatę, patrz wyżej) albo włączenie obsługi nie jest uważane za bezpieczne.

Jednak czasami napęd umie obsługiwać UDMA, ale BIOS tego nie podaje. W takich przypadkach należy włączyć obsługę ręcznie.

8.1 Parametry jądra podczas startu

W jądrach 2.1.113+ można włączyć obsługę DMA dla obu napędów na podanym interfejsie IDE przy pomocy parametru jądra ideX=dma, gdzie X jest numerem interfejsu (pierwszy to '0'). Jednak podanie tego parametru wcale nie musi uaktywnić UDMA.

Parametry do jądra można przekazać przez LILO, LOADLINa czy większości popularnych programów ładujących system. Więcej informacji można znaleźć w Bootdisk HOWTO.

8.2 Używanie hdparm

Jest to program służący do ustawiania różnych parametrów dysku twardego. Jedną z możliwości jest włączenie obsługi UDMA i pomiar szybkości stałego przesyłu danych.

Bieżąca wersja hdparmu to 3.6 (w czasie pisania) [Od tłumacza: w tej chwili jest wersja 3.9]]. Starsze, niełatane wersje nie będą poprawnie raportowały ani ustawiały parametrów związanych z UDMA, tak więc należy zdobyć aktualną wersję. Źródło znajduje się pod adresem ftp.icm.edu.pl.

Program po ściągnięciu należy skompilować mniej więcej tak:

tar zxvf /tmp/download/hdparm-3.6.tar.gz
cd hdparm-3.5
make
su root
(podaj hasło)
make install
cp /usr/local/sbin/hdparm /sbin/hdparm
exit

Aby włączyć DMA: hdparm -d1 /dev/hda

Aby wyłączyć DMA: hdparm -d0 /dev/hda

Aby zmierzyć szybkość dysku: hdparm -Tt /dev/hda

Aby zobaczyć jakie są ustawienia dysku: hdparm /dev/hda

Aby zobaczyć więcej danych dot. dysku niż kiedykolwiek chciałeś: (np. które tryby UDMA są włączone) hdparm -i /dev/hda

Więcej informacji (np. jakich trybów UDMA użyć) można znaleźć w stronie podręcznika systemowego (``man 8 hdparm'').

9. Problemy

9.1 ,,Czarna Lista'' UDMA

Napędy wymienione poniżej znajdują się na liście nie działających. Nie wolno ich używać w trybie UDMA ponieważ może to spowodować utratę danych. Aby tego uniknąć sterownik powinien automatycznie wyłączyć obsługę DMA dla tych napędów.

9.2 Czy masz przetaktowane PCI?

Jeśli tak, to ostrożnie! Oto cytat z poprzedniej dokumentacji do UDMA:

Nie wolno przetaktowywać szyny PCI. 37,5 MHz, to maksymalna
częstotliwość. Niektóre (prawdopodobnie obsługiwane) napędy UDMA nie
zadziałają nawet przy częstotliwości 37,5 MHz, ale 33 MHz powinno
działać.

W każdym bądź razie NIGDY _NIGDY_ ! nie wolno ustawiać szyny PCI na
41,5 MHz.

ZALECANYM bezpiecznym ustawieniem jest 33 MHz.

9.3 Czy BIOS na płycie głównej jest aktualny?

Oto kolejny cytat z dokumentacji do UDMA:

Tak naprawdę BIOS każdej płyty głównej przestawia napędy dyskowe na
tryb UDMA. Oczywiście trzeba mieć nadzieję, że taki BIOS
został zaprogramowany poprawnie...

Np. płyta główna ASUS SP-97V z oryginalnym BIOSem (rev. 1.03) będzie
działać niepoprawnie w trybach DMA 2 i UDMA ze zmodyfikowanym
sterownikiem linuksowym. Będzie natomiast działać poprawnie w trybie
PIO 4 oraz w Windows 95 we wszystkich trybach. Ściągnąłem najnowszy
BIOS (rev. 1.06) ze strony ASUSa i uaktualniłem na swojej płycie. Od
tego momentu działa idealnie (przy częstotliwości szyny 66 MHz).

Mówi nam to o fakcie, że BIOS ustawia w kontrolerze DMA pewne
specyficzne parametry (active pulse i recovery clock cycles) [od
tłumacza: jak mi ktoś zaproponuje kiedyś tłumaczenie, to przetłumaczę,
bo ja nie mam pojęcia o czym mowa...] Moja poprzednia wersja
BIOSu prawdopodobnie miała te ustawienia niepoprawne. Ponieważ
sterownik Windows 95 ustawia te wartości samemu (nie zależnie od
BIOSu) miałem problemy tylko ze sterownikiem Linuksa a pod Windows 95
wszystko działało poprawnie.

Tak więc jeszcze raz: sterownik UDMA w Linuksie polega na ustawieniach
BIOSu. Jeśli pojawiają się problemy należy sprawdzić czy mamy
najnowszą wersję BIOSu dla naszej płyty głównej.

9.4 Jeśli nadal nie działa

Jeśli żadna ze wskazówek nie okazała się pomocna na tyle, żeby rozwiązać problemy z UDMA, najlepszym wyjście jest napisanie na grupę pl.comp.os.linux.sprzet. W wiadomości należy zawrzeć dokładny opis problemu: typ posiadanego interfejsu UDMA, czy jest na płycie głównej czy na karcie rozszerzeń, czy napęd jest w UDMA czy w zwykłym EIDE, dokładna konfiguracja napędów, wersja dystrybucji i jądra oraz wszystko inne co wydaje się być pomocne. Najprawdopodobniej znajdzie się tam ktoś pomocny.

9.5 Jeśli masz informacje na temat UDMA, których nie ma tutaj...

Wspaniale! Jeśli wiesz coś czego ja nie wiem, prześlij do mnie informację na ten temat ( brion@pobox.com) i ukaże się ona w kolejnej wersji.

10. Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Zmiany w tym dokumencie:

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Napewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać.

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /pub/Linux/JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/Update.pl.html0100664000175000017500000007362407457640740021044 0ustar covencoven Linux: Jak być na bieżąco

Linux: Jak być na bieżąco

Autorzy: Kjetil Bakkeskaug, Kjell Sundby i Stein Gjoen, sgjoen@nyx.net
v0.31, 29 października 2000
Wersja polska: Tomasz 'tsca' Sienicki, tsca@edb.dk
v1.71, 14 grudnia 2001


Dokument zawiera wskazówki na temat wyszukiwania nowinek i informacji o rozwoju Linuksa. Chociaż większa część tekstu dotyczy konkretnie tego systemu, znajduje się tu również mnóstwo bardziej ogólnych i użytecznych dla szerszego odbiorcy wiadomości na temat efektywnego wyszukiwania określonych informacji.

1. Wstęp

Linux rozwija się niezwykle szybko. Dlatego czasem trudno jest śledzić jego rozwój na bieżąco, czy zorientować się w stanie aktualnym. Ten dokument zawiera kilka wskazówek pomocnych w szybkim i efektywnym wyszukiwaniu żądanych informacji. Większość z Was zna i używa WWW i grup dyskusyjnych, ale -- jak dowiecie się z tego tekstu -- WWW i Usenet to jeszcze nie wszystko. Istnieje wiele innych, równie dobrych i lepszych, źródeł informacji.

Dostępne są tłumaczenia tego dokumentu; chciałbym tu podziękować tłumaczom za ich pracę i komentarze:

1.1 Prawa autorskie

Copyright (c) 1998 Kjell Sundby, Kjetil Bakkeskaug and Stein Gjoen.

Prawa autorskie do tego dokumentu należą do Kjella Sundby, Kjetila Bakkeskauga oraz Steina Gjoena.

O ile nie zaznaczono inaczej dokumenty HOWTO chronione są prawami autorskimi należącymi odpowiednio do ich autorów. Zezwala się na powielanie i dystrybucję tych dokumentów w całości lub w części na jakimkolwiek fizycznym bądź elektronicznym nośniku pod warunkiem pozostawienia na wszystkich kopiach niniejszej informacji o prawach autorskich. Zezwala się i zachęca do redystrybucji komercjalnej; autor jednak życzy sobie być powiadamiany o każdej z takiej dystrybucji.

Niniejsze prawa autorskie dotyczą również wszelkich tłumaczeń, prac pochodnych, składających się z, lub zawierających jakiekolwiek dokumenty HOWTO. Oznacza to, że niedozwolone jest stworzenie pracy pochodnej od dokumentu HOWTO i nałożenie dodatkowych ograniczeń na jej dystrybucję. W pewnych szczególnych okolicznościach możliwe są odstąpienia od tych zasad. Po bliższe informacje należy skontaktować się z koordynatorem projektu Linux HOWTO pod adresem podanym poniżej.

W skrócie: chcemy promować rozprzestrzenianie się podanych tu informacji poprzez możliwie wiele kanałów. Zatrzymujemy jednak prawa autorskie do dokumentów HOWTO i chcielibyśmy być informowani o jakichkolwiek planach redystrybucji tych dokumentów.

Jeśli masz jakiekolwiek pytania, skontaktuj się z koordynatorem projektu Linux HOWTO pod adresem linux-howto@sunsite.unc.edu

1.2 Zastrzeżenia

Pamiętaj: informacji zawartych w tym dokumencie używasz na własne ryzyko. Zrzekamy się jakiejkolwiek odpowiedzialności za jego zawartość. Pomysłów, przykładów i/lub jakichkolwiek innych pochodzących z tego dokumentu informacji używać możesz wyłącznie na własną odpowiedzialność.

O ile nie zaznaczono inaczej wszystkie prawa autorskie należą do ich właścicieli. Użycie w tym dokumencie danego terminu nie powinno być traktowane jako wpływające na ważność jakiegokolwiek znaku handlowego lub znaku usługi.

Użycie nazw określonych produktów lub marek nie oznacza polecania ich.

Poleca się sporządzanie kopii systemu przed poważnymi instalacjami, oraz robienie kopii bezpieczeństwa w regularnych odstępach czasu.

1.3 Zmiany

1.4 Podziękowania

2. Dokumentacja na twoim dysku

Po zainstalowaniu Linuksa zastajesz zazwyczaj całkiem dużo informacji -- nie tylko dołączoną broszurkę, ale również wiele dokumentów HOWTO (JTZ - JAK TO ZROBIĆ) oraz obszerne opracowania i pomoc dostępne w sieci. Z nawiązką wystarcza to na początek, jednak po pewnym czasie zorientujesz się, że chcesz wiedzieć więcej, być na bieżąco, móc aktualizować swój system... jednym słowem: wiedzieć, co dzieje się "w branży". Pomoże ci w tym ten dokument. Dla uproszczenia podzielono zawarte tu informacje na takie, które możesz zasubskrybować i odnaleźć. Skupimy się też na efektywnym uzyskiwaniu konkretnej specjalistycznej pomocy.

Nawet jeśli do Twojego Linuksa nie dołączono żadnego rodzaju wydrukowanej informacji to i tak każda szanująca się dystrybucja zawiera szereg katalogów zawierających różnego rodzaju dokumentację -- od konkretnych plików README (CZYTAJTO) zawierających informacje o danych programach, do bardziej kompleksowych opracowań HOWTO -- właśnie czytasz jedno z nich.

Zajrzyj do archiwum dokumentów w /usr/doc, gdzie większość pakietów składa swoją dokumentację, pliki README, itd. W katalogach /usr/doc/HOWTO oraz /usr/doc/HOWTO/mini znajdziesz cały zestaw gotowych do czytania plików HOWTO i mini-HOWTO.

Najważniejszym i najpełniejszym źródłem informacji są oczywiście źródła jądra w /usr/src/linux. Używaj ich! Zwróć też uwagę, że pakiet z jądrem to nie tylko kod źródłowy (co najmniej częściowo opatrzony komentarzami), ale również katalog /usr/src/linux/Documentation zawierający obszerną dokumentację. Przed zadaniem jakiegokolwiek pytania na temat jądra powinieneś zapoznać się z zawartością tego katalogu. Dzięki temu oszczędzisz sobie zakłopotania i nie zmarnujesz czasu innym.

Przeglądanie i przeszukiwanie dokumentacji na komputerze czy w sieci jest bardzo wygodne. Nie rezygnuj jednak całkowicie z informacji drukowanej. Czasem, gdy nie jesteś w stanie nawet uruchomić swojego komputera, dokumentacja wydrukowana może być jedynym sposobem dotarcia do rozwiązania problemu.

3. Subskrypcje

Subskrybowanie oznacza zamawianie danego rodzaju wiadomości napływających ciągłym strumieniem. Nie ugryź kawałka większego niż możesz przełknąć: przeładowanie informacją nie jest tylko hasłem encyklopedycznym. Często zdarzy się, że zamiast spodziewanych informacji otrzymasz jakieś śmieci. Bądź więc krytyczny i nie wahaj się przez unieważnieniem subskrypcji.

Istnieją dwa odrębne (choć w niektórych przypadkach ze sobą sprzężone) media dostarczające ciągłych informacji: są to grupy dyskusyjne (USENET) i listy dyskusyjne. Grupy dyskusyjne zazwyczaj charakteryzują się zwiększoną ilością wiadomości i szumu informacyjnego niż listy. Uważaj: czytanie zbyt wielu grup jest jak picie z węża strażackiego! :-)

3.1 Grupy dyskusyjne

Pomoc w uzyskaniu dostępu do grup dyskusyjnych leży poza zakresem tego dokumentu. Wskazówki na temat ściągania i uczestnictwa w tych grupach bezpośrednio z Linuksa znajdziesz w innych tekstach JTZ.

Jeśli jeszcze nigdy nie używałeś grup dyskusyjnych powinieneś szczególnie uważnie przeczytać informacje wprowadzające. USENET to cała odrębna kultura. Nawet jeśli na początku wyda ci się chaotyczny, istnieją rządzące nim reguły. Pamiętaj, żeby przed wysłaniem swojego pierwszego listu do danej grupy poprzyglądać się jej przez jakiś czas. Najważniejszą sprawą jest zwrócenie uwagi na listy zatytułowane Frequently Asked Questions, FAQ, czy Najczęściej Zadawane Pytania. FAQ pozwolą ci zapoznać się z charakterem grupy, oraz prawdopodobnie rozwiążą Twój problem. Czytaj je! Zadając po raz setny typowe pytanie wyrobisz sobie tylko negatywną opinię (i -- być może -- dostaniesz się do czyichś filtrów).

Dokumenty FAQ są zazwyczaj wysyłane regularnie, jeśli jednak nie możesz któregoś z nich odnaleźć, poszukaj go w głównym archiwum FAQ w MIT. FAQ dostępne są również w postaci stron WWW.

Obok użytecznych informacji w grupach dyskusyjnych napotkasz też szum informacyjny, spam i dyskusje nie na temat. Oznacza to, że będziesz potrzebował czytnika umożliwiającego odsianie niechcianych listów. Zapewniają to czytniki mające tzw. mordplik (killfile). Odpowiednio skonfigurowany czytnik odfiltruje niechciane wiadomości i zaznaczy interesujące. Poprawia to ogólny stosunek ilości informacji do ilości szumu i pozwala skoncentrować się na sprawach istotnych. Pamiętaj jednak, że działa to w obie strony: jeśli będziesz zaśmiecał USENET, zostaniesz odfiltrowany, i, gdy znajdziesz się w potrzebie, nikt nie zobaczy Twojego pytania.

Do rzeczy -- oto lista użytecznych grup dyskusyjnych:

Grupy związane z Linuksem znajdują się też w wielu hierarchiach narodowych. Przykładem może być jedna z polskich grup o Linuksie. Jeśli masz kłopoty z odnalezieniem swoich narodowych lub lokalnych grup, pomocy szukaj w Deja.

3.2 Listy dyskusyjne

W przeciwieństwie do grup dyskusyjnych listy dyskusyjne są scentralizowane. Oznacza to, że listy wysłane przez danego użytkownika na adres serwera rozsyłane są dalej do innych uczestników listy. Zazwyczaj nie otrzymuje się wielkiej ilości wiadomości, a poziom informacji niepożądanej jest niski. Wypowiedzi odbiegające od tematu zawsze budzą negatywne reakcje i, co jest równie poważną konsekwencją, mogą spowodować opóźnienie realizacji projektu, któremu poświęcona jest lista. Po zasubskrybowaniu danej listy zazwyczaj otrzymuje się powitalny list opisujący tematykę forum -- należy uważnie go przeczytać.

Istnieje wiele programów obsługujących listy dyskusyjne. Warto znać rozpoznawane przez nie polecenia. Najpopularniejszym z tych programów jest działający między innymi na serwerze vger.rutgers.edu Majordomo. Sprawdź, jak to działa: wyślij tam list o treści help. Jeśli wyślesz list z poleceniem, którego program nie zrozumie, również dostaniesz informacje o obsłudze. Jeśli zamiast help wyślesz polecenie lists, otrzymasz spis wszystkich list działających na serwerze (może być tego całkiem sporo!).

Listy dyskusyjne działają zazwyczaj pod kilkoma adresami. Jeden z nich służy do wysyłania poleceń takich jak subscribe czy unsubscribe, a inny do uczestnictwa w dyskusjach -- najczęściej z tego właśnie adresu otrzymujesz wiadomości, które ludzie wysyłają na listę. Na przykład wysłanie polecenia subscribe na adres corned-beef-requests@somelistserver.org zapisze Cię na listę o adresie corned-beef-list@somelistserver.org aż do chwili, kiedy zdecydujesz się wypisać. Jeszcze raz: wysłanie listu o treści help lub czymś niezrozumiałym dla serwera spowoduje otrzymanie listu z pomocą.

Korzystając z list dyskusyjnych pamiętaj o kilku zasadach:

Jak już wspomniano vger.rutgers.edu jest jednym z głównych serwerów list dyskusyjnych. Oto skrócony spis list dostępnych dla społeczności Linuksa:

Oczywiście na tym serwerze znajduje się również dużo innych list. Ponieważ ich ilość stale się zmienia, nie ma sensu wymieniać tu ich wszystkich. Można jednak zajrzeć na stronę zawierającą spis list dyskusyjnych o tematyce interesującej użytkowników Linuksa. Na stronie tej można również w prosty sposób bezpośrednio zapisać/wypisać się z różnych list.

Istnieje również strona z długim spisem list dyskusyjnych o tematyce nie ograniczającej się do Linuksa.

3.3 Magazyny

Wiele osób jest rozczarowanych brakiem informacji o Linuksie w prasie. Jest to prawdopodobnie spowodowane tym, że wiele komercyjnych produktów nie wytrzymałoby porównania z Linuksem, a takiej sytuacji nie wytrzymaliby z kolei reklamodawcy. Istnieje na szczęście Linux Journal -- magazyn poświęcony tylko Linuksowi. Spis treści aktualnego numeru i informacje na temat jego subskrypcji znajdują się na stronie domowej SSC.

Innym komercyjnym pismem jest Linux Magazine, również umieszczający w sieci spis treści i fragmenty tekstów. Także Unix Review (d. Performance Computing) poświęca sporo miejsca Linuksowi.

Istnieją również popularne magazyny elektroniczne:

oraz prawdopodobnie kilka innych; nowe pojawiają się dość często. W LinuxHQ sprawdzić można aktualną listę dostępnych serwisów informacyjnych.

Jak grzyby po deszczu pojawiają się strony WWW z dosłownie codziennie uaktualnianymi wiadomościami na temat Linuksa. Wiele z nich odznacza się całkiem profesjonalnym układem graficznym i doborem prezentowanego materiału. Jednym z najważniejszych tego typu serwisów jest oferujący codzienne wiadomości Freshmeat.

Dla osób nie mogących pozwolić sobie na śledzenie wydarzeń w sieci z godziny na godzinę, a chcących mimo wszystko trzymać rękę na pulsie, przeznaczony jest serwis Linux Weekly News (Linux - Wiadomości Cotygodniowe). Serwis ten podaje ważne wiadomości, włączając w to ostrzeżenia na temat bezpieczeńswa oraz ogłoszenia o nowym i uaktualnionym oprogramowaniu.

Pod adresem Linux.com znajdziesz odnośniki do kanałów IRC.

Istnieje również pewna ilość godnych polecenia stron poświęconych głównie sprzętowi. Są to m. in. Toms Hardware i Anandtech, w których znajdują się testy wszelakiego sprzętu, oraz Storage review, specjalizująca się w testach dysków, streamerów i innych pamięci masowych.

4. Spotkania

Linux stworzony został dzięki połączonym (głównie za pomocą Internetu) siłom ludzi na całym świecie. Istnieje jednak również możliwość spotkań twarzą w twarz w LUGach -- Grupach Użytkowników Linuksa. Przeszukaj ogłaszane regularnie listy tych grup -- jedna z nich może znajdować się całkiem niedaleko!

Konferencje, spotkania, copy-parties i tworzenie nowych grup ogłaszane są regularnie w grupach dyskusyjnych.

Tego typu wydarzenia są doskonałą okazją do zorientowania się, co się dzieje w świecie Linuksa, oraz uzyskania pomocy.

5. Poszukiwanie informacji

Konkretnej informacji szukać można na wiele sposobów. Pamiętaj, że zawsze możesz użyć wyszukiwarek internetowych, i że niektóre z nich, np.

przeszukują również grupy dyskusyjne.

Przeszukiwarek jest wiele, jednak różnią się one zarówno wielkością bazy, jak i metodami oceny związku zawartości stron z zapytaniem. Jeśli szukasz dużych, znanych stron, użyj Google, nadaje on bowiem stronom punkty na podstawie umieszczonych do nich odnośników na innych stronach. Ludzie często umieszczają odnośniki do stron, które uważają za wartościowe; Google opiera się na ich opinii.

Serwisowi Google wyczerpujące zindeksowanie strony zabiera trochę czasu, korzystanie więc z jego usług przy szukaniu najnowszych lub nieco nietypowych wiadomości trochę mija się z celem. W takich przypadkach polecam albo bardzo szybki i o szerokim zasięgu AllTheWeb, albo serwisy, które przesyłają twoje zapytanie do szeregu przeszukiwarek, zbierają, porównują, oceniają i przedstawiają ci wyniki poszukiwania. Mój ulubiony serwis tego typu to Go2Net (d. MetaCrawler).

Wymagania stawiane wyszukiwarkom są różne, a serwisy te nieustannie podnoszą swój poziom -- musisz więc trochę sam poeksperymentować. Żadna z wyszukiwarek nie jest idealna, i -- ponieważ mniej niż 10% istniejących stron jest w ogóle zindeksowanych -- próbuj kilku wyszukiwarek, jeśli praca z jedną nie przyniesie efektów.

Pamiętaj również o Deja -- serwisie wyszukiwawczym skupiającym się konkretnie na grupach dyskusyjnych. Zarchiwizowane są tam artykuły od roku 1995 wzwyż.

Coraz częściej używamy stron WWW. Pamiętaj jednak, że to nie wszystko. Całe mnóstwo informacji dostępnych jest na rozsianych po świecie serwerach ftp. Niektóre z wyszukiwarek internetowych indeksują te zasoby, ale narzędziem dedykowanym konkretnie temu zadaniu są serwery archie. Są to systemy regularnie przeszukujące główne serwery ftp i gromadzące nazwy znajdujących się na nich plików. Z serwerami archie połączyć się można na wiele sposobów, np. za pomocą znajdujących się w każdym dobrze utrzymanym systemie Linuksowym klientów archie lub, w wersji dla X11, xarchie. Jeśli jest to niemożliwe, zawsze można połączyć się z serwerem archie za pomocą telnetu do jednego z podanych niżej serwerów.

Naturalnie powinieneś używać najbliższego z serwerów. Aby przejrzeć ich aktualną listę należy uruchomić klienta archie bez podawania argumentów, albo, jeśli używasz telnetu, uzyskać tę informację z serwera. Zawsze dostępna jest pomoc. Niestety nie wszystkie serwery współpracują ze sobą, być może więc będziesz zmuszony poszukać kilkakrotnie zanim natrafisz na to, czego szukasz.

Ostatnio w sieci pojawił się prostszy w obsłudze serwer ftp. Dostępna jest możliwość wyszukiwania o wielu opcjach i interfejsie nawiązującym do najlepszych uniksowych tradycji.

Większość z powyższych serwisów oferuje informacje na temat technik wyszukiwania. Zawsze opłaci się zainwestować kilka chwil na zapoznanie się z instrukcjami -- może to znacznie skrócić czas zużyty na Twoje poszukiwania.

Jeżeli nie masz dostępu do WWW, ale możesz używać poczty elektronicznej, powinieneś przeczytać FAQ ,,Dostęp przez pocztę''. Aby uzyskać ten dokument należy wysłać do serwera dla USA, Kanady i Płd. Ameryki list o następującej treści:

send usenet/news.answers/internet-services/access-via-email

Można posłużyć się również serwerem dla Europy i Azji. W takim przypadku treść listu powinna wyglądać tak:

send lis-iis e-access-inet.txt

Innym rozwiązaniem jest przeszukanie lokalnego katalogu z zawartością grup dyskusyjnych ("spoola" -- jeśli go masz): zajrzyj do grupy news.answers.

Wreszcie jeśli chcesz skontaktować się z konkretną osobą, na przykład z autorem jakiegoś programu, zajrzyj do dokumentacji owego programu w katalogu /usr/doc/. W większości przypadków znajdziesz tam adres e-mail autora. Jeśli nie, zawsze możesz szukać pomocy w FAQ na temat znajdowania adresów e-mail.

6. Podsumowanie

Szybkie i skuteczne wyszukiwanie informacji jest bardziej sztuką niż nauką. Nie poruszyliśmy tu istotnego zagadnienia: jak ocenić rzeczywistą jakość uzyskanej informacji? Problem ten leży poza zakresem tematycznym tego dokumentu, co nie znaczy, że nie należy o nim pamiętać. Zawsze przynajmniej zwracaj uwagę, czy odpowiedź na Twoje zapytanie jest aktualna.

Podstawową sprawą jest ocena wiarygodności informacji; pozwoli to uniknąć sprowadzających na manowce lub złośliwych porad. Zadziwiająco wiele osób podaje "metody" takie jak rm -rf / jako rozwiązanie danego problemu. Niektórzy od razu zorientują się, że to głupi dowcip, ale inni mogą zniszczyć sobie system. Na wszelki więc wypadek, zanim zastosujesz znalezioną informację, sprawdź poniższe punkty:

Jeśli będziesz o tym pamiętał, nie powinieneś wpaść w jedną z wielu sieciowych pułapek, takich jak prośba o pocztówki dla chorego Craiga Shergolda, rozmaite łańcuszki i piramidy listowe, czy -- ostatnio -- konie trojańskie próbujące wmanewrować Cię w wysłanie w świat własnego hasła.

Istnieje pewna ilość dokumentów traktujących o bardziej poważnych metodach wyszukiwania informacji. Jeśli jesteś zainteresowany tematem, zacznij tutaj.

Nie zapominaj też o zawierających dokumentację do Linuksa stronach Linux Documentation Project (w polskiej wersji: JTZ -- przyp. tłum.). Regularnie, wraz z rozwojem systemu, pojawiają się tam nowe dokumenty i uaktualnienia istniejących.

Z czyjejś sygnaturki:

Be alert! The world needs more lerts.

7. Od tłumacza

Oryginał tego dokumentu:
How to stay updated.

Tłumaczenia pozostałych dokumentów HOWTO na język polski:
http://www.jtz.org.pl.

Copyright for the translation:
(c) 1999, 2000, 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk doc-linux-pl-2002.06.14.orig/mini/html/Upgrade.pl.html0100664000175000017500000004140707104371340021165 0ustar covencoven Jak uaktualnić/zmienić swoją dystrybucję Linux-a.

Jak uaktualnić/zmienić swoją dystrybucję Linux-a.

Greg Louis, glouis@dynamicro.on.ca
v1.11, 6 Czerwca 1996.
Wersja polska: Bartosz Maruszewski B.Maruszewski@zsmeie.torun.pl
v1.02, 26 Lipca 1997


Wskazówki jak przechodzić z jednej dystrybucji Linux-a na inną. Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl.

1. Prawa autorskie i zrzeczenie (disclaimer).

Procedura, którą dokument ten próbuje opisać jest wysoce niebezpieczna dla twoich programów i danych zapisanych na dysku. Wykonujesz to wszystko TYLKO I WYŁĄCZNIE na własne ryzyko. Opisane tutaj kroki działały u autora; nie ma żadnej gwarancji, że będą one działać u ciebie ani że postępując zgodnie z nimi nie uszkodzisz sobie programów czy danych zawartch na dysku. Jesteś zdany całkowicie na siebie podczas robienia użytku z podanych tu procedur i autor nie jest odpowiedzialny za jakiekolwiek uszkodzenia czy niewygody wynikłe z ich użycia.

Prawa autorskie do tego dokumentu należą do Dynamicro Consulting Limited i jest on wydany na podstawie licencji GNU. Ogólnie oznacza to, że możesz go kopiować i modyfikować, ale nie możesz zabraniać innym robienia tego samego.

Komentarze i pytania proszę kierować do autora. Szczególnie mile widziane są opisy udanych uaktualnień złożonych systemów, które zostaną wykorzystane do przyszłych wersji.

Zmiany od wersji 1.1

2. Wprowadzenie.

2.1 Jak uśmiercić i przywrócić do życia twojego Linux-a!

Celem tego dokumentu jest zaoferowanie wskazówek, które pomogą ci w niszczeniu i ponownej instalacji twojego Linux-a. Nie jest to żadna głupko-odporna książka kucharska; ale mam nadzieję, że posłuży jako pewnego rodzaju wykaz tego o czym musisz pomyśleć, i wykaz kolejności w jakiej musisz zrobić różne rzeczy. Jeśli ktoś napisałby takie coś zanim dokonałem swojego pierwszego uaktulanienia, byłoby to dla mnie bardzo pomocne. Tak więc mam nadzieję, że będzie to pomocne dla ciebie, jeśli masz jakiegoś Linux-a do przerobienia.

Ale nie bierz tego za świętą prawdę: twoja droga do przebycia będzie prawie na pewno się różniła od mojej. Nawet nazwy katalogów z tego dokumentu mogą być różne od tych, które ty będziesz musiał użyć; na przykład niektórzy mają /usr/home zamiast /home; inni nazywają to /u, a niektórzy (brrr) to nawet umieszczają swoich użytkowników bezpośrednio w /usr ! Nie można odnieść się dokładnie do twojego systemu także użyłem tu nazw, które wystepowały u mnie.

Zauważysz także, że używam dystrybucji Slackware oraz że zakładam, że masz wystarczająco dużo RAM-u i miejsca na dysku, żeby skopiować źródła do jądra na dysk i zrobić swoje jądro. Jeśli twój system jest inny, niektóre z moich zaleceń nie będą pasowały; ale mam nadzieję, że generalnie będziesz się mógł w dalszym ciągu opierać o ten dokument w swoim projekcie przebudowy.

2.2 Dlaczego ktoś chciałby w ogóle to robić ?

Dobre pytanie ! Jeśli można tego uniknąć, to nie rób tego ! (Jest to najprostsza najważniejsza rekomendacja w tym przewodniku !!!) Ale przychodzi taki czas, że po prostu musisz.

Na przykład: Zainstalowałem sobie dysk 4GB i okazało się, że mój Slackware 2.0 biedaczek nie wiedział, że dysk może mieć więcej jak 2GB i poczuł się bardzo zawstydzony. Tak więc musiałem uaktualnić go do wtedy-świeżej wersji 2.3. Operacja ta była dla mnie ciężkim przeżyciem, i jest jednym z powodów, dla których piszę te uwagi. Zrobiłem prawie wszystko źle i tylko szczęście i fakt, że miałem obok drugiego chodzącego Linux-a uratowało mnie od katastrofy.

Jako inny przykład mogę podać, że nie mogłem skompilować działającego jądra "a.out" z serii 1.3, używając Slackware 2.3 spoza komputera, który przedtem spartaczyłem. Wziąłem się w garść, kupiłem Slackware 3.0 na CD-ROM-ie i przeszedłem na ELF-a. Tym razem ponowna instalacja poszła lepiej, po części dzięki poprzedniemu gorzkiemu doświadczeniu, które posłużyło jako źródło większości pomysłów, które wam tutaj oferuję.

2.3 Czy musisz "niszczyć i ponownie instalować" ?

Jest bezpieczniej. Jeśli zainstalujesz nową wersję dystrybucji na starszą, to będziesz miał mieszaninę starych i nowych binariów, starych i nowych plików konfiguracyjnych i nie będzie to zbyt ciekawe miejsce do administrowania. Wyczyszczenie systemu i ponowna instalacją tego co rzeczywiście chcesz mieć, jest drastycznym lecz efektywnym sposobem na osiągnięcie przejrzystego i dobrze działającego systemu. (Oczywiście mówimy tu o instalacji kompletnie nowej dystrybucji a nie o uaktulanieniu dwóch pakietów ! Aby uniknąć całkowitej instalacji nowego systemu najlepiej w miarę pojawiania się nowych wersji konkretnych pakietów uaktualniać je -- szczególnie chodzi tu o gcc i jego biblioteki oraz binutils. Jeśli potrafisz w ten sposób utrzymać w miarę bieżące wersje pakietów, to nie potrzebujesz całkowitego uaktualnienia.)

Jak pisze Patrick Volkerding (on także zaleca procedurę z kompletnym wyczyszczeniem systemu), instalacja systemu ELF na systemie "a.out" jest przepisem na katastrofę; bo jeżeli wiedziałbyś dostatecznie duży, żeby spróbować, to nie czytałbyś tego dokumentu !

Chociaż nawet bez tych komplikacji lepiej, żebyś zaczął zupełnie od nowa.

2.4 Jak długo to będzie trwało ?

To oczywiście zależy od tego, jak złożony jest twój system. Ale oceniłem, że na udane uaktualnienie (to drugie - nie pytaj ! ;) ) poświęciłem około 10 godzin na robienie archiwów, 6 godzin na przebudowanie systemu spowrotem do momentu, w którym mogłem się zalogować a następne pół dnia czy coś koło tego na odtwarzanie niekrytycznych danych. Z biegiem czasu odkrywam jeszcze małe szczegóły, które nie są do końca takie jakie chciałem -- naprawiam je wraz z odkrywaniem ich -- ale generalnie 20 godzin powinno wystarczyć na sensowną odbudowę systemu. Może mniej jeśli instalujesz z dysku (ja używałem CD-ROM-u), albo więcej jeśli musisz instalować z dyskietek. Może mniej jeśli masz szybkie Pentium - więcej jeśli jest to 386. No, rozumiesz o co chodzi.

To tyle tytułem wstępu. Oto jak się przygotować jak już się zdecydowałeś, że to zrobisz. Uzbroj się w cierpliwość i:

3. Sam proces uaktualnienia.

3.1 Zapisuj wszystko co robisz.

Bardzo ważne jest to, żebyś zapisywał wszystko co robisz w czasie przygotowywania się i przeprowadzania uaktulanienia. Szczególnie ważna jest lista archiwów, które będziesz robił przed zniszczeniem swojego systemu.

3.2 Zrób pełne archiwum aktualnego systemu.

Ogólnie mówiąc archiwa są zapisywane na mediach, które mają dostęp sekwenycyjny. Przez to, nie będziesz chciał użyć tego całkowitego archiwum do odtworzenia znaczącej ilości plików; jest tam za dużo plików, których nie chcesz. Lepiej jest stworzyć mniejsze archiwa, fragmentów dysku, które będziesz chciał później odtworzyć. Później podam listę przykładów.

Dlaczego więc powinieneś zacząć od całkowitego archiwum ? Dwa podstawowe powody:

  1. w przypadku całkowitego niepowodzenia instalacji nowszej wersji systemu będziesz mógł bezboleśnie powrócić do sytuacji wyjściowej.
  2. niezależnie od tego jak dokładnie przygotujesz się do uaktulanienia, istnieje bardzo duża szansa, że jeden lub dwa ważne pliki zostaną przeoczone. W tym przypadku cała niewygoda w odtwarzaniu tych dwóch plików z całego archiwum będzie lepsza od obchodzenia się bez nich.

Aby zaoszczędzić czas i miejsce, jeśli ciągle masz nośnik ze swoją starą dystrybucją, możesz chcieć zarchiwizować tylko te pliki, których mtime czy ctime jest późniejszy niż oryginalnych z instalacji.

3.3 Zarchiwizuj /etc wraz z podkatalogami na jednej lub więcej dyskietkach.

To jest inna ekstremalna sytuacja: nie będziesz odtwarzał tych plików (przynajmniej w większości); będziesz je porównywał z tymi, które powstały po nowej instalacji. Dlaczego ? Ponieważ te nowe mogą zawierać dane, których nie ma w tych starych, albo mogą wyrażać stare dane w nowy sposób. Zmiany w protokołach, nowe narzędzia albo implementacje nowych właściwości w istniejących narzędziach mogą nieść za sobą zmianę formatów plików konfiguracyjnych i startować skrypty, które znajdują się w /etc i będziesz przypuszczalnie musiał edytować te pliki konfiguracyjne, tak żeby odpowiadały nowemu formatowi.

3.4 Utwórz osobne archiwa dla każdej grupy plików, które chcesz zachować.

To jest najbardziej zmienna część pracy i wszystko co mogę zrobić, żeby ci pomóc to opisanie tego co zrobiłem u siebie, w nadziei, że posłuży ci to jako przewodnik. Ogólnie powinieneś zajrzeć do każdego katalogu, który zawiera

i oddziel tylko te pliki, które chcesz przenieść.

(Inną możliwą strategią jest zarchiwizowanie plików z mtime lub ctime późniejszym niż dzień instalacji i potem odtworzenie ich. Jeśli to zrobisz, to musisz mieć na uwadze, że nowa dystrybucja może i tak zawierać nowsze wersje plików, które zarchiwizowałeś.). W moim przypadku, skończyło się na archiwach następujących katalogów:

Mój system był względnie łatwy ponieważ nie było żadnych plików spool, o które trzebaby się troszczyć. Nie mam katalogu do news-ów, a ponieważ jest tylko dwóch użytkowników, najprościej było przeczytać pocztę przed zamknięciem systemu. W innym przypadku katalog /var/spool musiałby zostać zarchiwizowany w ostatniej minucie. (No i oczywiście biblioteka news-ów i katalogi lokalne !)

3.5 Przygotuj dyskietki "root" i "boot" do nowej instalacji.

Szczegóły na ten temat znajdziesz w podręczniku do twojej nowej dystrybucji.

Od tłumacza: Możesz też zajrzeć do Bootdisk-HOWTO.

3.6 Sformatuj dyskietki na tymczasowe jądro i na końcową wersję.

Będziesz potrzebował dwóch - po jednej na każde.
Jak to wszystko jest już zrobione jesteś gotowy na Wielką Chwilę. Następny krok usuwa system z powierzchni ziemi.

3.7 Zablokuj logowanie się i zarchiwizuj katalogi /root i /home.

Jest to ostatnia rzecz jaką będziesz robił na starym systemie zanim go zniszczysz.

3.8 Zrestartuj komputer z nowych dyskietek "boot" i "root".

3.9 Skasuj partycje Linux-owe fdiskiem i stwórz je ponownie.

Podręcznik do instalacji wyjaśni jak to zrobić. W tym momencie niszczysz stary system i jesteś zależny od jakości archiwów, które zrobiłeś ! Zostałeś ostrzeżony !

3.10 Uruchom nową instalację.

Jest już kilka dokumentów, które opisują procedurę instalacji, tak więc nie będę się zagłębiał w szczegóły. Kontunuuj od tego miejsca jak już nowy system będzie startował z twardego dysku.

W czasie instalacji zrób także dyskietkę, z której będziesz mógł startować ponieważ zainstalowane jądro będzie musiało zostać podmienione a wypadki się zdarzają. Upewnij się, że zainstalowałeś pakiety do rozwoju (development) i źródła do jądra.

3.11 Wyedytuj /etc/fstab po wystartowaniu nowego systemu.

I dodaj swoją partycję swap. Potem wydaj polecenie swapon -a. Nie wiem dlaczego, ale program do instalacji Slackware'u nie daje możliowści zrobienia tego jeśli twoja partycja swap już istnieje. Potem jak próbujesz wystartować system, skrypt rc.S próbuje włączyć swap-owanie i nie znajduje partycji swap - ten krok naprawia ten błąd.

3.12 Odtwórz pliki konfiguracyjne do katalogu /etc i jego podkatalogów.

Jak to jest opisane powyżej, nie możesz po prostu skopiować wszystkich plików spowrotem do tego katalogu i oczekiwać, że wszystko będzie ładnie działać. Niektóre pliki, z którymi możesz tak postąpić, np. /etc/XF86Config (o ile używasz tej samej wersji XFree86 i tej samej karty graficznej). Chociaż w większej części najlepiej jest użyć programu diff do porównania plików przed rozpoczęciem kopiowania. Uważaj szczególnie na znaczące zmiany w /etc/rc.d, które mogą wymagać ręcznej restabilizacji twojego systemu, zamiast kopiowania zarchiwizowanych skryptów. Jak już wszystko jest gotowe - zrestartuj system.

3.13 Skonfiguruj i skompiluj jądro.

Nawet jeśli w ogóle nie musisz tego robić, żeby otrzymać jądro, które obsługuje twój sprzęt, opłaca się to zrobić, choćby dlatego, żeby pozbyć się kupy niepotrzebnych sterowników z jądra, które tylko je spowalniają. Szczegóły znajdziesz w Kernel-HOWTO. Najpierw zainstaluj nowe jądro na dyskietce - jeśli wszystko działa, to zainstaluj je na dysku twardym, uruchom LILO jeśli go używasz, i zrestartuj komputer.

3.14 Odtwórz archiwa, które wcześniej zrobiłeś.

Niektóre binaria będą musiały zostać zainstalowane z katalogów źródłowych; musiałem tak zrobić z lilo, na przykład, ponieważ miałem nowszą wersję niż w dystrybucji i nie zarchiwizowałem katalogu /sbin. Będziesz pewnie chciał sprawdzić programy z archwium czy wszystkie się poprawnie zainstalowały oraz czy wszystkie pliki konfiguracyjne i biblioteki są na miejscu. W niektórych przypadkach musisz odtworzyć programy w określonej kolejności; robiłeś notatki podczas archiwizacji, czyż nie ? ;)

3.15 Sprawdź bezpieczeństwo.

Sparwdź prawa dostępu do plików i katalogów, żeby dowiedzieć się czy dostęp nie jest zbyt mały lub zbyt szeroki. Dowiedziałem się np., że Slackware dąży do bardziej otwartego środowiska niż ja lubię, więc przechodzę przez katalogi i zmieniam 755 na 711 dla plików w .../bin i podobnych rzeczy. A nawet zmieniam na 700 dla plików w /sbin. Szczególna ostrożność jest potrzebna jeśli miałeś serwer ftp - ale jeśli już go miałeś, to na pewno o tym pomyślałeś wcześniej :)

3.16 Odblokuj logowanie się.

System już działa. Przez następną chwilę, będą pewnie jakieś szczegóły do dopracowania; ale większość roboty jest już zrobiona. Miłej zabawy !

3.17 Przepraszam, ale jeszcze raz:

UŻYWAJ INFORMACJI TU ZAWARTYCH NA WŁASNE RYZYKO !!! (Zobacz sekcję Prawa autorskie i zrzeczenie.)

3.18 Podziękowania.

Wielkie podziękowania za wkład wniesiony do tego mini-HOWTO dla Zoltána Hidvégi.

4. Od tłumacza.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@zsmeie.torun.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl/pub/Linux/JTZ/

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

Zmiany wprowadzone przeze mnie do tego dokumentu to polskie odnośniki do serwerów ftp i WWW oraz informacja o Bootdisk-HOWTO. doc-linux-pl-2002.06.14.orig/mini/html/Visual-Bell.pl.html0100664000175000017500000002725307457640740021736 0ustar covencoven Alarm wizualny (małe JTZ)

Alarm wizualny (małe JTZ)

Alessandro Rubini, rubini@linux.it
v2.3, 3 grudnia 2001
Wersja polska: Tomasz 'tsca' Sienicki, tsca@edb.dk
v1.01, 10 grudnia 2001


Jak uciszyć komputer: alarm wizualny zamiast dźwiękowego.

1. Licencja oraz prawa autorskie

Copyright (c) 1997, Alessandro Rubini

Niniejszy dokument rozpowszechniany jest na warunkach określonych w licencji GNU Free Documentation License. Jeśli nie otrzymałeś treści licencji FDL z tym dokumentem, zapoznać się z nią możesz pod adresem http://www.fsf.org/licenses/fdl.html.

2. Wstęp

Konsola Linuksa wydaje sygnał dźwiękowy (brzęczyk) po natrafieniu na znak BEL (kod ascii 7). Jest to rozsądnie wybrana standardowa reakcja, jednak wielu użytkowników nie lubi, kiedy ich komputer wydaje dźwięki. Niniejszy dokument opisuje sposób takiej konfiguracji programów, aby nie wysyłały one kodu BEL oraz takiej konfiguracji jądra i X, aby komputer milczał nawet wtedy, gdy kod BEL zostanie wysłany. Większość tekstu dotyczy konsoli, ponieważ konfiguracja serwera X w tym zakresie nie powinna powodować trudności.

Według mnie temperowanie niesfornej maszyny należy rozpocząć na poziomie sprzętowym; np. w moim komputerze głośniczka nie ma!

3. Głośniczkotomia

Głośniczkotomia jest najskuteczniejszym rozwiązaniem problemu alarmu dźwiękowego. Jak sama nazwa wskazuje, sposób polega na fizycznym odłączeniu lub usunięciu głośniczka. Operacja jest prosta -- można się nawet obyć bez znieczulenia.

Istnieją też sposoby nieco bardziej wyrafinowane. Pecety wyposażone są zwykle w przełącznik TURBO. Podczas pracy w środowisku wielozadaniowym guziczka tego nigdy się właściwie do spowalniania procesora nie używa; nie ma takiej potrzeby nawet w przypadku gier opartych na programowych pętlach. Niestety, przyspieszyć komputera tym guziczkiem się nie da; można go za to wykorzystać do włączania/wyłączania głośniczka. Głośniczek, choć generalnie irytujący, czasem jednak bywa przydatny np. do zaanonsowania zakończenia długiej kompilacji.
Aby zmienić funkcję przełącznika, po prostu odłącz go od płyty głównej i połącz szeregowo z głośniczkiem.

W przypadku komputerów przenośnych (laptopów), dostęp do brzęczyka jest niestety ograniczony; brak też przełącznika, któremu możnaby podporządkować nowe zadanie. Użytkownicy takich komputerów muszą ograniczyć się do rozwiązań programowych, o czym poniżej.

4. Konfiguracja dźwięku na poszczególnych konsolach

Od wersji jądra 1.3.43 wzwyż, dzięki łatce Martina Maresa na console.c, istnieje możliwość wyboru częstotliwości i długości trwania alarmu dźwiękowego. Wysyłając odpowiednie sekwencje znaków niedrukowalnych na poszczególne konsole można konsolom tym przypisać różne właściwości dźwięku (lub jego brak). Całość sprowadza się do umieszczenia poleceń konfigurujących dźwięk w pliku ~/.login lub ~/.profile. Odpowiedzialne za właściwości dźwięku kody to:

Przykład: Aby ustawić częstotliwość dźwięku na 50Hz a jego długość na 1 sek, wydaj w bashu polecenie 'echo -e "\\33[10;50]\\33[11;1000]"' (argument -e oznacza 'interpretuj znaki niedrukowalne'). Odpowiednikiem tej komendy dla tcsh jest 'echo "\\033[10;50]\\033[11;1000]"'.

Żadna ze znanych mi obecnie wersji polecenia setterm nie potrafi konfigurować dźwięku, niewykluczone jednak, że w przyszłości ta funkcjonalność zostanie dodana.

Jeśli używasz jądra 1.3.43 lub nowszego i satysfakcjonuje cię powyższe rozwiązanie, możesz tu zakończyć czytanie. Jeśli jednak używasz starszego jądra lub chciałbyć stosować alarm wizualny zamiast dźwiękowego, czytaj dalej.

5. Podstawowe wiadomości o plikach termcap i terminfo/*

Tekstowy plik /etc/termcap to baza danych o możliwościach terminali (ang. terminal capablilities -- stąd nazwa). Wiele programów (np. tcsh, bash, vi i wszystkie korzystające z curses) korzysta przy przesuwaniu kursora i innych operacjach związanych z ekranem z zawartych w tym pliku informacji.

Baza /etc/termcap opisuje poszczególne rodzaje terminali. Do odpowiedniej części tej bazy kieruje aplikacje zmienna środowiskowa TERM.

Poszczególne możliwości terminali opisane są w termcap dwuliterowymi kodami, po których następują sekwencje znaków wymaganych do osiągnięcia danego efektu. Kolejne wpisy przedzielone są dwukropkiem (":"). Na przykład alarm dźwiękowy (kod "bl") zazwyczaj opisany jest jako "bl=^G". Wpis taki oznacza, że brzęczyk uzyskuje się sekwencją control-G (ascii BEL).

Obok alarmu dźwiękowego ("bl") rozpoznawany jest również wizualny ("vb" -- visual bell), jednak zazwyczaj brakuje tego wpisu w poświęconej terminalowi "linux" części termcap.

Większość nowszych aplikacji i bibliotek zamiast z termcap korzysta z bazy danych terminfo. W przeciwieństwie do termcap, termifo nie jest jednym wielkim plikiem, a katalogiem, w którym opisy poszczególnych terminali umieszczone są w osobnych plikach, a te z kolei w podkatalogach o nazwach będących kolejnymi pierwszymi literami alfabetu. Na przykład opis terminala "linux" znajdzie się w pliku /usr/lib/terminfo/l/linux (lub /usr/share/terminfo/l/linux -- przyp. tłum). Opisy terminali w terminfo są plikami binarnymi, kompiluje je się programem tic (patrz man tic).

6. Definiowanie alarmu wizualnego

Dodanie brakującej definicji alarmu wizualnego "vb" do /etc/termcap nie jest trudne. Oto metoda Dennisa Henriksena (duke@diku.dk): należy odnaleźć sekcję "linux" (w starszych dystrybucjach sekcja ta nazywa się "console") i dodać w niej następującą linię:

:vb=\E7\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E8:\
Ostatni ukośnik zapobiega złamaniu linii.
Wg opisu Dennisa powyższa linia

7. Wyłączenie alarmu dźwiękowego na konsoli tekstowej

Jeśli chcesz zmusić konsolę do używania alarmu wizualnego zamiast dźwiękowego (błysk zamiast pisku) znajdź w pliku termcap w sekcji dla twojego terminala definicję efektu "bl" i zmień ją na definicję błysku (podaną w poprzednim rozdziale). To rozwiązanie jest najwygodniejsze, jeśli nie chcesz określać osobno zachowania różnych aplikacji. Ja stosuję ten sposób na wszystkich moich komputerach z Linuksem, w których nie mogę fizycznie odłączyć głośniczka.

8. Uciszanie aplikacji

Poniżej podaję niekompletny spis programów, które można przekonać do używania podanej w termcap lub terminfo definicji "vb" bieżącego terminala.

9. Ciemna strona zagadnienia

Niestety nie wszystkie aplikacje korzystają z informacji zawartych w bazach termcap lub terminfo. Większość małych programików ma na sztywno w kodzie C zaszyte "\a" (alarm). "\a" w ciągach znaków w plikach binarnych interpretowane jest jako ascii BEL. "Prawdziwych" aplikacji problem ten zazwyczaj nie dotyczy, ale uważaj na produkty początkujących programistów C -- najgorsi są tu studenci informatyki!
Jedynym sposobem uciszenia takich programów jest głośniczkotomia lub wykorzystanie sekwencji kodów podanej przez Martina Maresa.

10. Od tłumacza

Wersja oryginalna dokumentu: http://sunsite.unc.edu/LDP/.
Tłumaczenia pozostałych dokumentów HOWTO na język polski:
http://www.jtz.org.pl.

Copyright for the translation
(c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk

doc-linux-pl-2002.06.14.orig/mini/html/Win95+Win+Linux-mini-HOWTO.pl.html0100644000175000017500000004262707164466740024207 0ustar covencoven Windows 95 + Windows 3.x + Linux Howto

Windows 95 + Windows 3.x + Linux Howto

Robert Goodwin Robert.Goodwin@mcc.ac.uk
v?.?, Sierpień 1996
Wersja polska: Leszek Pietryka lesio@plearn.edu.pl
v1.0, 13 Września 2000


Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się np. pod adresem ftp.icm.edu.pl.

1. Uwaga

15 stycznia 1998
Autor nie zajmuje się już opieką nad dokumentem Win95+Win+Linux mini-HOWTO. Jeśli jesteś zainteresowany jego utrzymywaniem, skontaktuj się, proszę, ze mną, wysyłając e-mail na adres: tjbynum@metalab.unc.edu.

2. Wprowadzenie

Pierwsza wersja tego dokumentu powstała w styczniu 1996. Od tego czasu dodałem wiele komentarzy, informacji i pytań, otrzymanych od różnych osób. Istnieje japońska wersja tego dokumentu; zobacz zbiór japońskiej dokumentacji dotyczącej Linuksa pod adresem: http://epsenewsc.gee.kyoto-u.ac.jp/JF/JF.html. Polska wersja tego dokumentu jest dostępna pod adresem: http://sunsite.icm.edu.pl.

3. Ładowanie kilku systemów operacyjnych

Jeśli chcesz mieć możliwość ładowania kilku różnych systemów operacyjnych (bez potrzeby stosowania startowych dyskietek!), musisz używać czegoś takiego, jak MENEDŻER ŁADOWANIA.

Windows 95 nie ma tak naprawdę menedżera ładowania. Ma, co prawda, opcje ładowania, ale w moim podręczniku piszą, że menedżer ładowania można skonfigurować tak, aby ładował dowolny system.

LILO można skonfigurować tak, aby ładowało prawie każdy system. Podobnie można skonfigurować menedżery ładowania OS/2 i Windows NT. To, którego menedżera używasz, zależy od tego, czego chcesz od swojego komputera. Jeśli, na przykład, używasz menedżera ładowania OS/2, to ``ukrywa'' on ``inne'' dosowe partycje.

4. Inne źródła informacji na ten temat

Jeśli chcesz używać tylko Windows 95 i Linuksa, przeczytaj raczej Win95+Linux HOWTO. Najnowszą wersję możesz znaleźć pod adresem: http://www.in.net/~jkatz/win95/Linux-HOWTO.html. Wersja polska jest (albo wkrótce będzie :-)) dostępna pod adresem: http://sunsite.icm.edu.pl.

Windows 95 i Linux mogą być zainstalowane na jednym dysku. Reszta dokumentu opisuje, jak rozwiązać problemy z DOSem, który nie pozwala na istnienie więcej, niż JEDNEJ podstawowej partycji DOS na jednym dysku.

Jeśli chcesz używać menedżera ładowania NT, zajrzyj pod adres: http://www.bcpl.lib.md.us/~dbryan/directboot.html.

Żeby dodać Linuksa (albo inny system, w tym OS/2), potrzebny jest taki fajny programik, który tworzy pliki sektorów startowych tak, aby mógł z nich korzystać menedżer ładowania NT. Informacje na ten temat możesz znaleźć pod adresem: http://ourworld.compuserve.com/homepages/gvollant/othertl.htm.

Możesz też wypróbować program loadlin.exe, który umożliwia ``przeładowanie'' na Linuksa po uprzednim uruchomieniu DOSa.

5. Po co to HOWTO

Ten dokument opisuje następujące sprawy:

System plików Windows 95 istnieje wprawdzie na szczycie standardowego systemu DOS FAT, ale robi z nim paskudne rzeczy. Uruchom swój komputer z Windows 95 przy pomocy startowej dyskietki DOS i każ Nortonowi sprawdzić dysk, ale NIE pozwól mu na dokonanie żadnych napraw, bo popsujesz ``długie'' nazwy plików.

Chcą ostatnio ode mnie, żebym zajmował się obsługą aplikacji zarówno w środowisku Windows 95, jak w Windows 3.x (oba działające lokalnie lub ładowane z sieci). Opracowałem odpowiednie ustawienia opisane w tym dokumencie tak, żebym mógł robić to wszystko tylko na jednym PC.

Nie pytajcie mnie, jak człowiek używający Uniksa skończył w takiej sytuacji :-)

6. Wymagania

Jeśli umiesz grzebać się w źródłach LILO (wersja 17 albo nowsza, jak mi się zdaje), to możesz osiągnąć to wszystko z JEDNYM dyskiem. Działa to na zasadzie zmiany zawartości tablicy partycji podczas ładowania systemu. Jeśli nie czujesz się zbyt pewnie, to lepiej nie próbuj!

W przeciwnym wypadku będziesz potrzebował DWÓCH dysków twardych. Wynika to z ograniczeń DOS/Windows dotyczących ładowania systemu i przypisywania liter napędów. Wierz mi, próbowałem tego z jednym dyskiem (ale nie chciałem się grzebać w źródłach LILO).

7. Z czym skończysz

Parę słów o nazwach urządzeń. Widywałem systemy, w których /dev/hdc oznaczało trzeci dysk IDE (pierwszy dysk IDE na drugim kontrolerze), a /dev/hdd oznaczało czwarty dysk. Widywałem też systemy używające nazw /dev/hd1a i /dev/hd1b (nazwy partycji to /dev/hd1a3 itd.). Mój system stosuje ten drugi styl nazewnictwa, ale zmieniłem nazwy na /dev/hdc i /dev/hdd, żeby nie było niejasności.

Oto krótki opis tego, co sam teraz mam. Uważaj na litery dysków, bo się zmieniają...

Jeśli używasz drugiego kontrolera IDE, być może, że będziesz musiał sam utworzyć pliki w katalogu /dev. (/dev/hdc* i /dev/hdd*). Może tak być, gdy dodajesz drugi dysk twardy do komputera, w którym jest zainstalowany jeden dysk IDE i CD-ROM IDE; twój drugi dysk twardy otrzymałby nazwę /dev/hdc. Próbowałem takiego ustawienia i nie miałem żadnych problemów.

W swoim komputerze mam:

                        /dev/hda  - pierwszy dysk twardy
                        /dev/hdb  - napęd CD-ROM
                        /dev/hdc  - drugi dysk twardy

Opcja 1:

Po włączeniu komputera mogę pozwolić startowej pamięci ROM karty ethernetowej na zdalne załadowanie DOSu. Napęd ``C'' to pierwsza partycja DOS na PIERWSZYM dysku IDE (w moim przypadku /dev/hda1). Napęd ``D'' to pierwsza partycja DOS na DRUGIM dysku IDE (w moim przypadku /dev/hdc1), a napęd ``E'' to druga partycja DOS na DRUGIM dysku IDE (/dev/hdc2). Napęd CD-ROM ma literę F:

Opcja 2:

Pozwól LILO załadować domyślny system (Linuksa, ma się rozumieć)

Opcja 3:

Podczas uruchamiania LILO włącz opcję, która u mnie nazywa się DOS. Ładuje to DOS z /dev/hda1 i, tak samo, jak w przypadku opcji 1, napęd ``C'' to /dev/hda1, ``D'' to /dev/hdc1, a ``E'' to /dev/hdc2. CD-ROM to F:

Opcja 4:

Podczas uruchamiania LILO włącz opcję, która u mnie nazywa się Win95. Ładuje to Windows 95 z pierwszej partycji DOS DRUGIEGO dysku IDE (w moim przypadku /dev/hdc1). I teraz uwaga: napęd ``C'' to teraz pierwsza partycja DOS na DRUGIM dysku IDE (/dev/hdc1), napęd ``D'' to piersza partycja DOS na PIERWSZYM dysku IDE (/dev/hda1), napęd ``E'' to cały czas druga partycja DOS na DRUGIM dysku IDE (/dev/hdc2). CD-ROM to F:

Zwróć uwagę na to, że napęd C zmienia się w zależności od opcji ładowania. To znaczy, że gdy instalujesz Windows 95, to instalujesz go w katalogu C:\WINDOWS. Kiedy instalujesz Windows 3.x, to też instalujesz go w katalogu C:\WINDOWS, ale to są różne katalogi :-)

Zauważ też, że trzecia partycja DOS (na której trzymam dane) to E:, niezależnie od sposobu ładowania, i że litera CD-ROMu też się nie zmienia.

8. Jak to zrobić

Przede wszystkim zainstaluj Linuksa, nieważne, na którym dysku. Jednakże, ponieważ będziesz używać dwóch dysków, rozsądne będzie utworzenie na każdym z nich partycji wymiany.

Utwórz podstawową partycję DOS na drugim dysku. Dosowy FDISK nie pozwala, niestety, na coś takiego. Dlatego musisz użyć wersji linuksowej, żeby utworzyć partycję, ustawić jej typ (6 dla partycji DOS 16 BIT FAT > 32 MB) i ustawić ją jako aktywną. UWAŻNIE stosuj się do porad strony podręcznika man fdisk. Opisuje ona, co trzeba zrobić, aby DOS rozpoznawał partycję utworzoną w ten sposób. Trzeba zastosować polecenie dd do wyczyszczenia pierwszych 512 bajtów tej partycji. (Zasadniczo używa się polecenia ``dd if=/dev/zero of=/dev/XXXX bs=512 count=1'', gdzie XXXX to nazwa urządzenia. Musisz być jednak BARDZO ostrożny, ponieważ jest to doskonały sposób na zniszczenie dysku - na przykład przez wpisanie /dev/hda zamiast /dev/hda1!)

Prymarną partycję DOS na pierwszym dysku twardym możesz utworzyć przy pomocy dosowego FDISKa. W ten sposób możesz też utworzyć inne potrzebne partycje dosowe.

Obie partycje podstawowe musisz sformatować jako startowe partycje DOS. Użyj w tym celu poleceń FORMAT C: /S i FORMAT D: /S po załadowaniu DOSa z dyskietki. Żeby uniknąć niejasności, nadaj partycjom jednoznaczne etykiety woluminów!

Zmodyfikuj plik /etc/lilo.conf tak, aby było możliwe ładowanie systemu z obu podstawowych partycji DOS. Na końcu dokumentu zamieściłem przykładowy taki plik. Zwróć uwagę na znajdującą się w nim linię ``loader''. To od ciebie zależy, gdzie zainstalujesz Windows 95, a gdzie DOS/Windows 3.x. Ja używam drugiego dysku twardego dla Windows 95, ponieważ w przypadku ładowania z sieci normalny dysk DOS ma literę ``C''. Oprócz tego (i to się przydaje), instalacja Windows 95 na drugim dysku pozwala na uniknięcie konieczności ładowania Linuksa z dyskietki ratunkowej i ponownej instalacji LILO (poniżej wyjaśniam, dlaczego miałoby się tak stać). Pamiętaj, żeby wydać polecenie /sbin/lilo, aby wprowadzić zmiany w życie.

Jeśli planujesz (rozsądnie) instalację Windows 95 z CD-ROMu, będziesz musiał umieścić odpowiednie sterowniki na partycji przeznaczonej dla Windows 95, tak aby po załadowaniu z niej był dostępny napęd CD-ROM.

Następnie przy użyciu LILO uruchom komputer z napędu, na którym chcesz zainstalować DOS/Windows 3.x i zainstaluj resztę DOS i Windows 3.x. Windows powinien być zainstalowany w domyślnym katalogu C:\WINDOWS.

Kiedy już tak zrobisz, uruchom ponownie komputer i, używając LILO, załaduj partycję Windows 95. Przeprowadź instalację Windows 95. Instalator może zasugerować instalację Windows 95 w katalogu D:\WINDOWS, ponieważ sprawdza on komputer w poszukiwaniu istniejących wersji Windows. NIE akceptuj tego - zainstaluj Windows 95 w katalogu C:\WINDOWS.

A teraz najfajniejsze! Windows 95 jest raczej samolubnym systemem. Kiedy go instalujesz, zakłada on, że jest jedynym systemem operacyjnym w komputerze i zapisuje własny MBR (Master Boot Record - Główny Rekord Ładujący) na twardym dysku. To właśnie dlatego musisz ponownie instalować LILO. Jeśli natomiast zainstalowałeś Windows 95 na drugim dysku, zrobiłeś coś, czego programiści Microsoft™ nie przewidzieli. Na jednym komputerze, na którym przeprowadziłem taką operację, Windows 95 umieścił swój MBR na miejscu MBR DRUGIEGO dysku. Na innym komputerze w ogóle nie znalazłem na to dowodu. Praktyczny efekt jest taki, że ten ważny MBR, czyli ten na pierwszym dysku, pozostaje nienaruszony. Dzięki temu, kiedy ponownie uruchamiasz komputer, wita cię przyjazny i znajomy znak zachęty LILO.

Przykładowa lista partycji:


  /dev/hda1  *   partycja DOS (C: lub D: zależy od ładowania)
  /dev/hda2      partycja rozszerzona
  /dev/hda5      /
  /dev/hda6      swap
  /dev/hda7      /home

  /dev/hdc1  *   partycja Windows 95 (C: lub D: zależy od ładowania)
  /dev/hdc2      partycja DOS (E: zawsze)
  /dev/hdc3      swap

(Partycje oznaczone przy pomocy * są ustawione jako startowe (czyli ``aktywne'') przez FDISK)

Przykładowy plik /etc/lilo.conf:


  # /etc/LILO.conf
  install = /boot/boot.b
  compact
  delay = 20       # opcjonalne, dla systemów, które ładują się bardzo szybko
  #prompt          # użyj zamiast delay, by wymusić reakcję na linię
                   # zachęty ładowania
  #vga = normal    # wymuszenie rozsądnego stanu
  #ramdisk = 0     # opcja dla paranoików
  #root = current  # użyj "bieżącego" głównego systemu plików (root)
  boot = /dev/hda
  image = /boot/vmlinuz
    read-only
    label = linux
  other = /dev/hdc1
    label = win95
    loader= /boot/any_d.b
  other = /dev/hda1
    table = /dev/hda
    label = dos
  image = /boot/vmlinuz.old
    label = linux.old
    optional
    read-only

9. Kilka pytań i odpowiedzi

P: Czy ten schemat działa z dyskami SCSI?
O: Podobno tak, ale sam nigdy nie próbowałem

P: Czy ten schemat działa w przypadku, gdy Linux zajmuje cały jeden dysk, a DOS i Windows 95 znajdują się na partycjach drugiego dysku?
O: Nie. DOS i Windows 95 muszą znajdować się na podstawowych partycjach ``DOS''. Można to obejść przez rekompilację LILO

P: Ściągnąłem z sieci Windows 95 FAQ, w którym jest powiedziane, że można ładować zarówno DOS, jak i Windows 95. Jeśli zainstaluję Windows 3.11 w innym katalogu niż ``WINDOWS'', to podobno mogę bez problemów uruchamiać Windows 95 i Windows 3.11. Oba są na jednej partycji.
O: Tak, można tak zrobić. Może to jednak powodować problemy. Windows 95 robi paskudne rzeczy z napędem FAT i niektóre operacje, jakie wykonujesz z poziomu starej wersji DOS i starego Windows (3.x) mogą ławo zniszczyć informację dotyczącą długich nazw plików. Tak zrobi, na przykład, defragmentacja dysku przy pomocy programu DOS/Windows 3.x. Wpędzasz się też w kłopoty, jeśli coś nie działa, bo musisz zawracać sobie głowę plikami INI obu systemów *i* rejestrem Windows 95.

P: Czy LBA ma znaczenie?
O: Tak. Uff!
BIOSy mniej więcej od roku 1994 wspierają LBA, aby obejść ograniczenia DOSu, które uniemożliwają mu obsługę ilości cylindrów większej, niż 1024. (Jest to opisane o wiele bardziej wyczerpująco w dokumentach PC hardware FAQ). LBA oszukuje geometrię dysku, mnożąc liczbę głowic przez 2 lub 4 (itd.), aby podzielić liczbę cylindrów przez 2 lub 4 (itd.) tak, aby była ona mniejsza od 1024. To potrafi obejść ograniczenia DOSu.

Linux obsługuje liczbę cylindrów większą od 1024 (pod warunkiem, że partycja, z której ładujesz, leży w całości poniżej 1024 cylindra), potrafi też obsłużyć duże (>504MB) dyski nawet na starszych komputerach (z BIOSem sprzed 1994). Obsługuje także dyski na BIOSach wspierających LBA, niezależnie od tego, czy LBA jest włączone.

Niezbędne jest, aby dla WSZYSTKICH systemów operacyjnych każdy dysk miał tę samą geometrię. To dlatego, że liczby w tablicy partycji to ``dostrzegane'' liczby cylindrów, a nie rzeczywiste. Tak więc włączenie w BIOSie opcji LBA spowoduje, że istniejąca zawartość dysku będzie bezużyteczna.

Jeśli twój Linux nie widzi ``właściwej'' geometrii (to znaczy tej samej, którą ``widzi'' DOS), będziesz musiał do pliku /etc/lilo.conf dodać linię append=``hd=x.y.z'', gdzie x,y,z oznaczają geometrię dysku (przeczytaj odpowiednie strony man).

P: Mój BIOS ma informacje tylko o dwóch dyskach twardych, a nie o czterech. Czy to ma znaczenie?
O: Może! Używanie czterech dysków ze starym BIOSem pod DOSem wymaga stosowania dodatkowych sterowników. Nowsze BIOSy obsługują cztery dyski.

Linux bez kłopotu obsługuje cztery dyski nawet na większości starszych BIOSów, ale jeśli umieścisz partycję DOS na trzecim dysku, będziesz miał do niej dostęp wyłącznie z poziomu Linuksa.

Jest to ważne, ponieważ wiele komputerów ma dysk IDE i napęd CD-ROM IDE, a także, jeśli chcesz stosować rady z tego dokumentu, drugi dysk IDE.

Jeśli ten dokument na coś ci się przydał, proszę, daj mi znać.

10. Od tłumacza

Tłumaczenie to jest chronione prawami autorskimi © Leszka Pietryki. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Nie zmieniłem zasadniczej treści dokumentu. Dodałem tylko odnośniki do stron z polskimi wersjami tłumaczeń dokumentów HOWTO oraz wprowadziłem kilka nieznacznych zmian, jak na przykład tytuł pierwszej sekcji.

Nie znalazłem oryginału w formacie sgml, dlatego wszystkie znaczniki powstawiałem sam. W związku z tym winę za ewentualny niewłaściwy układ dokumentu ponoszę wyłącznie ja.

Jest to pierwsze HOWTO, które przetłumaczyłem, więc jest tu pewnie mnóstwo pomyłek. Będę wdzięczny za wszelkie komentarze i poprawki (no i oczywiście za pochwały ;-)).

doc-linux-pl-2002.06.14.orig/mini/html/XFree86-XInside.pl.html0100664000175000017500000003751407104371340022332 0ustar covencoven XFree-to-Xinside

XFree-to-Xinside

Autor: Marco Melgazzi, marco@techie.com
v1.2, Maj 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@zsmeie.torun.pl
v1.0, 13 Września 1997


Jak zamienić format opisu trybów video XFree86 na XInside/XiGraphics. Dokument ten został napisany w standardzie ISO-8859-2. Jego oryginalna wersja znajduje się pod adresem ftp.icm.edu.pl.

1. Wprowadzenie.

Wiosną 1996 widziałem wiele listów w grupie comp.os.linux.x z pytaniami o to jak przenieść tryby video z XFree86 do jednego z jego komercyjnych odpowiedników: XInside (teraz nazwanym XiGraphics, jednak w tym dokumencie używam starszej nazwy ponieważ będę się odwoływał głównie do tamtej wersji).

Zanim powstała nowa wersja tego programu grzebałem trochę w tej starszej i ciągle mam tę przerobioną wersję gdzieś na moim dysku: ponieważ lubię rozwiązywać problemy postanowiłem spróbować i po kilku godzinach grzebania i obliczania powstał w miarę sensowny artykuł, który natychmiast wysłałem.

Dyskusje na temat zamiany nagle zniknęły a ja otrzymałem 1 (jeden) list z podziękowaniami za artykuł, więc ponieważ może ktoś potrzebowałby tych informacji w przyszłości postanowiłem przekształcić ten artykuł w mini-HOWTO.

Pozwól mi jednak najpierw coś powiedzieć: NIE pracuję dla XInside i miałem dostęp tylko do wersji 1.2 dla Linux-a. Wiem, że w dzisiejszych czasach (Maj 97) AccelX osiągnął już wersję 3.1, ale myślę, że zawarte tutaj informacje, jeśli nie dosłownie, to i tak się przydadzą.

Ponieważ to HOWTO zostało napisane z pomocą dość starej wersji XInside, może się tak stać, że część zawartych tutaj informacji będzie niepełna: jak później przeczytasz, dzięki narodzinom XFree 3.2, nie kupiłem tego komercyjnego serwera. Tak więc jeśli zauważysz jakieś niepoprawne informacje w tym dokumencie proszę wyślij mi list.

Jednak zauważ, że manipulowanie częstotliwościami monitora może być cokolwiek niebezpieczne i dlatego nie daję absolutnie żadnych gwarancji. Jeśli będzie u ciebie działać, to dobrze, jeśli wysadzisz swój komputer, to nie wiń mnie za to.

Jak może zauważyłeś po moim nazwisku moim narodowym językiem nie jest angielski, więc przypuszczalnie zanjdziesz jakieś błędy tu i tam. Przepraszam za nie z góry i proszę nie zawalajcie mojej skrzynki listowej wiadomościami związanymi z tymi błędami. Dzięki!

2. Czy potrzebuję tego?

Sądze, że taktyka Xinside polegająca na nie dołączaniu narzędzia (jak xvidtune) do obróbki trybów video czy do przeniesienia tych z XFree do wersji rozwojowej (i o ile wiem komercyjnej) jest niezrozumałe. Spędziłem nad tym jakieś 3 godziny (wskazówka: porównałem pozycję dotyczącą VESy 1024x768@70Hz w tych dwóch formatach (i jestem już prawie elektronikiem ;-)) podczas gdy programista Xinside mógłby napisać artykuł porównawczy...

Nie ściągałem żadnej wersji rozwojowej od 1.3 i naprawdę mam nadzieję, że to naprawili. Jeśli tak, to ten dokument jest już bezużyeczny, ale jeśli go przeczytasz, to dowiesz się trochę więcej o tym jak to działa.

3. No to start.

Załóżmy, że masz jakiś tryb w XFree86 i chcesz z niego zrobić wersję dla Xinside z tymi samymi warunkami: postępuj zgodnie z opisanymi poniżej krokami, a powinno ci się udać. Użyjemy moich domyślnych trybów video jako przykładów z życia wziętych i wyjaśnię co musisz zrobić, żeby je zamienić.

Pozycja w XFree86 wygląda tak:

Modeline "blahblah" DOTCLK  A B C D  a b c d

Każdy z numerów A-D i 1-4 ma swoje znaczenie: jeśli chcesz, możesz ich poszukać w "The Hitchhiker's Guide to X386/XFree86 Video Timing" (/usr/lib/X11/doc/VideoModes.doc), ale nie musisz znać teorii, żeby je zamienić...

Moje tryby w /usr/lib/X11/XF86Config to:

Modeline "1168x876" 105  1168 1256 1544 1640  876 877 891 900
                     |     |    |    |    |    |   |   |   |
                  DOT_CLK  A    B    C    D    a   b   c   d

W Xinside, musisz dodać pozycję w pliku Xtimings, który powinien się znajdować w etc/ (od teraz zakładam, że jesteś w głównym katalogu Xaccel, którym powinien być /usr/X11/lib/X11/AcceleratedX).

!    Gdzieś w tym pliku, umieść nazwy które chcesz

[PREADJUSTED_TIMING]
    PreadjustedTimingName = "1168x876 @ 72Hz";

!
!    Te cztery są oczywiste
!
    HorPixel          = 1168;         // pixels
    VerPixel          = 876;          // lines
    PixelWidthRatio   = 4;
    PixelHeightRatio  = 3;

!
!   hsync: DOT_CLK / D * 1000 [KHz]
!
!   hsync = 105 / 1640 * 1000 = 64.024 KHz
!
!   vsync: ( 1 / (( D / DOT_CLK ) * d) ) * 1,000,000 [Hz]
!
!   vsync: ( 1 / (( 1640 / 105 ) * 900) ) * 1,000,000
!           ( 1 / 14057.1428571 ) * 1,000,000 = 71.138 Hz
!

    HorFrequency      = 64.180;        // kHz
    VerFrequency      = 71.138;        // Hz

!   Oczywiste

    ScanType          = NONINTERLACED;

!
!   Umieść tutaj opcje +/-hsync +/-vsync z XFree86
!
    HorSyncPolarity   = POSITIVE;
    VerSyncPolarity   = POSITIVE;

!   Nie powinno się zmieniać

    CharacterWidth    = 8;             // pixels

!   Tutaj jest DOT_CLK

    PixelClock        = 105.000;       // MHz
!
!
!   Sekcja częstotliwości poziomych: [usec]
!
    HorTotalTime  = D / DOT_CLK                  = 15.619;
    HorAddrTime   = A / DOT_CLK                  = 11.124;
    HorBlankStart = A / DOT_CLK                  = 11.124;
    HorBlankTime  = HorTotalTime - HorBlankStart =  4.495;
    HorSyncStart  = B / DOT_CLK                  = 11.962;
    HorSyncTime   = C / DOT_CLK - HorSyncStart   =  2.743;

 !
 !  Sekcja częstotliwości pionowych: [msec]
 !

    VerTotalTime  = ( HorTotalTime * d ) / 1000  = 14.057;
    VerAddrTime   = ( HorTotalTime * a ) / 1000  = 13.682;
    VerBlankStart = ( HorTotalTime * a ) / 1000  = 13.682;
    VerBlankTime  = VerTotalTime - VerBlankStart =  0.375;
    VerSyncStart  = ( HorTotalTime * b ) / 1000  = 13.698;
    VerSyncTime   = ( HorTotalTime * ( c - b ) ) / 1000
                                                 = 0.219

 ! Koniec!

Teraz tak nowo stworzone tryby musisz umieścić w plikach pokazanych poniżej w odpowiednich miejscach.

4. Ustawianie.

W wyjątkach pokazanych poniżej znak -> pokazuje co było zmieniane: nie wpisuj go do pliku!

Pozycja Monitor (moja to monitors/mfreq/mfreq64.vda)

    [ESTABLISHED_TIMINGS]
        "640x480 @ 60Hz",
        "640x480 @ 72Hz",
        "640x480 @ 75Hz",
        "800x600 @ 56Hz",
        "800x600 @ 60Hz",
        "800x600 @ 72Hz",
        "800x600 @ 75Hz",
        "1024x768 Interlaced",
        "1024x768 @ 60Hz",
        "1024x768 @ 70Hz",
        "1024x768 @ 75Hz",
    "1152x900 Interlaced",
        "1152x900 @ 60Hz",
        "1152x900 @ 67Hz",
->      "1168x876 @ 72Hz",
        "1280x1024 Interlaced",
        "1280x1024 @ 60Hz",
    "1600x1200 Interlaced";

Plik informacyjny na temat karty (mój to boards/s3/764-2.xqa, Zastanawiam się czemu mają prawie wszystkie karty Hercules, a mojej nie: Terminator 64/Dram)

[VISUAL]
    BitsPerPixel   = 8;
    MemoryModel    = Packed;
    ColorModel     = Indexed;
    BitsRGB        = 6;
    NumberOfColors = 256;

    [RESOLUTIONS]
    640x480,
    800x600,
    1024x768,
->  1168x876,
    1152x900,
    1280x1024

    [DESKTOPS]
    640x480,
    800x600,
    1024x768,
    1152x900,
->  1168x876,
    1280x1024,
    1600x1200

Jeśli częstotliwości zegara (dot clock) jest odpowiednio niski (NIE w tym przypadku dla mojej karty) możesz nawet tę pozycję umieścić w sekcji 16bpp i 32bpp.

Plik /etc/Xaccel.ini będzie wyglądał tak:

--------------------------------------------------------------
    Board   = "s3/764-2.xqa";
    Monitor = "mfreq/mfreq64.vda";
    Depth   = 8;
->  Desktop = 1168x876;

    [RESOLUTIONS]
->      1168x876,
        1024x768;

Właściwa pozycja odnośnie trybów w etc/Xtimings

--------------------------------------------------------------
[PREADJUSTED_TIMING]
    PreadjustedTimingName = "1168x876 @ 72Hz";

    HorPixel          = 1168;          // pixels
    VerPixel          = 876;           // lines
    PixelWidthRatio   = 4;
    PixelHeightRatio  = 3;
    HorFrequency      = 64.024;        // kHz
    VerFrequency      = 71.138;        // Hz
    ScanType          = NONINTERLACED;
    HorSyncPolarity   = POSITIVE;
    VerSyncPolarity   = POSITIVE;
    CharacterWidth    = 8;             // pixels
    PixelClock        = 105.000;       // MHz
    HorTotalTime      = 15.619;        // (usec) =  205 chars
    HorAddrTime       = 11.124;        // (usec) =  146 chars
    HorBlankStart     = 11.124;        // (usec) =  146 chars
    HorBlankTime      =  4.495;        // (usec) =   59 chars
    HorSyncStart      = 11.962;        // (usec) =  157 chars
    HorSyncTime       =  2.743;        // (usec) =   36 chars
    VerTotalTime      = 14.057;        // (msec) =  900 lines
    VerAddrTime       = 13.682;        // (msec) =  876 lines
    VerBlankStart     = 13.682;        // (msec) =  876 lines
    VerBlankTime      =  0.375;        // (msec) =   24 lines
    VerSyncStart      = 13.698;        // (msec) =  877 lines
    VerSyncTime       =  0.219;        // (msec) =   14 lines

Możesz sprawdzić czy wszystko sie udało uruchamiając program vgaset bez parametrów podczas gdy uruchomiony jest serwer Xinside: na ekranie będzie pokazana linia na podobieństwo XFree86 i, jeśli wszytko jest dobrze, linia ta będzie taka sama jak ta, od której zacząłeś (za wyjatkiem jeśli b i c są takie same, nie byłem w stanie powtórzyć tej sytuacji w Xinside: najlepszym przypadkiem było c=b+1).

5. Koniec...

To wszystko! Mam nadzieję, że przyda ci się to. Nie sądzę, żebym kupił serwer XiGraphics w bliższej przyszłości z jednego prostego powodu: wersja 3.2 XFree86 rozwiązała wszystkie problemy związane z prędkością tekstu, jakie miałem na swojej skromnej karcie Trio 64 ;)

Jednak wygląda na to, że serwer XiGraphics obsługuje o wiele szerszy zestaw chip-ów i kart graficznych niż XFree, więc może się zdarzyć, że komercyjna alternatywa będzie jedyną dla ciebie. Jeśli tak jest i kupiłeś serwer XiGrpahics, z chęcia usłyszałbym czy zaprezentowane tu informacje przydały ci się czy były zbyt skomplikowane, czy cokolwiek.

6. Automatyzacja procesu.

Ten mały skrypt automatyzuje cała pracę. Bądź bardzo ostrożny z ScanType i z dwoma liniami Polarity: skrypt ich nie ustawia i jeśli jesteś zbyt leniwy, żeby je poprawić, to szansa na spalenie twojego monitora wzrasta znacznie.

Zauważ, że nie wiem czy parametr "Doublescan" ma jakieś znaczenie w XInside: jeśli spróbujesz zamienić jakiś tryb o małej rozdzielczości BĄDŹ OSTROŻNY, łatwo możesz załatwić swój monitor ponieważ częstotliwość odświeżania, jaką uzyskasz jest podwojona (a naprawdę moje 400x300@72Hz stało się 400x300@144Hz !).

#!/bin/sh
##########################################################################
# XF2XInside
#
# Skrypt ten zamienia opisy trybów z formatu XF86Config na format XInside
# tak jak tego wymaga plik etc/Xtimings.
#
# To jest tylko taki hacker-ski skrypt więc nie spodziewaj się zbyt 
# zaawansowanego sprawdzania błędów (nie mówiąc już o przyjazności dla
# użytkownika).
#
# Jeśli wywołasz go bez argumentów powinien ci on powiedzieć co zrobić.
#
#                               ( Lipec 1996, hcz@tazlwurm.bb.bawue.de)
#
# Przy okazji: Nowe tryby stworzone tak jak to opisuje to HOWTO działają,
# ale nie pokazują się w menu Xsetup-u. Ktoś wie dlaczego?
#
##########################################################################
#----------------------------------------------- No to lecimy:
# Zmień to jeśli twój plik konfiguracyjny jest gdzieś indziej
XF=/usr/X11/lib/X11/XF86Config
if [ $# -ne 1 ] ; then
  echo "usage: ${0##*/} <mode>"
  echo " example: ${0##*/} 1024x764"
  echo -e " function: converts $XF modeline entry into\n Xinside Format (stdout)"
  exit 1
fi
egrep -i "^[\t ]*modeline.+\"$1\""  /usr/X11/lib/X11/XF86Config |
gawk '
NF < 11  { print "! invalid Modeline:\n! " $0 "\n!"; next }
{
  print "//", $0  ":"
  name = $2
  DOT_CLK = $3;
  A = $4;
  B = $5;
  C = $6;
  D = $7;
  a = $8;
  b = $9;
  c = $10;
  d = $11;
  VerFrequency =  1000000 / ((D / DOT_CLK) * d)
  print "[PREADJUSTED_TIMING]"
  printf "  PreadjustedTimingName = \"%dx%d @ %.0dHz\";\n", A, a, VerFrequency
  print "  HorPixel\t\t= " A ";"
  print "  VerPixel\t\t= " a ";"
  print "  PixelWidthRatio\t= 4;\n  PixelHeightRatio\t= 3;"
  print "  HorFrequency\t\t= " DOT_CLK / D * 1000 ";\t// kHz"
  print "  VerFrequency\t\t= " VerFrequency  ";\t// Hz"
  print "  ScanType\t\t= NONINTERLACED;\t\t// *CHECK*"
  print "  HorSyncPolarity\t= NEGATIVE;\t\t\t// *CHECK*"
  print "  VerSyncPolarity\t= NEGATIVE;\t\t\t// *CHECK*"
  print "  CharacterWidth\t= 8;"
  print "  PixelClock\t\t= " DOT_CLK ";"
  HorTotalTime = D / DOT_CLK
  print "  HorTotalTime\t\t= " HorTotalTime ";"
  print "  HorAddrTime \t\t= " A / DOT_CLK ";"
  print "  HorBlankStart\t\t= " A / DOT_CLK ";"
  print "  HorBlankTime\t\t= " D / DOT_CLK - A / DOT_CLK ";"
  print "  HorSyncStart\t\t= " B / DOT_CLK ";"
  print "  HorSyncTime\t\t= " C / DOT_CLK - B / DOT_CLK ";"
  VerTotalTime  = ( HorTotalTime * d ) / 1000
  print "  VerTotalTime\t\t= " VerTotalTime ";"
  print "  VerAddrTime\t\t= " ( HorTotalTime * a ) / 1000 ";"
  VerBlankStart = ( HorTotalTime * a ) / 1000
  print "  VerBlankStart\t\t= " VerBlankStart ";"
  print "  VerBlankTime\t\t= " VerTotalTime - VerBlankStart ";"
  print "  VerSyncStart\t\t= " ( HorTotalTime * b ) / 1000 ";"
  print "  VerSyncTime\t\t= " ( HorTotalTime * ( c - b ) ) / 1000
  print ""
}'

7. Podziękowania.

8. Prawa autorskie/legalność.

Prawa autorskie należą do © Marco Melgazzi (marco@techie.com) - dokument ten jest rozpowszechniany na podstawie GPL (Gnu Public License). Aby otrzymać kopię GPL, napisz do Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Znaki towarowe należą do ich właścicieli. Nie ma żadnych gwarancji co do dokładności czy przydatności informacji zawartych w tym dokumencie.

8.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne (tych może trochę być, bo co do nazewnictwa w sprawach monitorów i kart graficznych jestem ignorantem) to pisz do mnie:

B.Maruszewski@zsmeie.torun.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

doc-linux-pl-2002.06.14.orig/mini/html/Xterminal.pl.html0100664000175000017500000007574607104371340021556 0ustar covencoven Jak podłączyć XTerminal do Linux-a na PC-cie.

Jak podłączyć XTerminal do Linux-a na PC-cie.

Scot W. Stevenson, scot@catzen.gun.de
v1.0 BETA, Lipiec 1995
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.02, 26 Lipca 1997


Dokument ten zawiera krótkie wprowadzenie do tego jak podłączyć XTerminal do Linux-a na PC-cie. Zakłada się tu, że masz już podstawowe informacje o X Window System, adresowaniu TCP/IP i kartach Ethernet. Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl.

1. Wprowadzenie.

Jest to pierwsza wersja tego dokumentu i powinna być uważana za wersję BETA. Jest to bardziej opis mojego postępowania niż wyczerpujący przewodnik. Dyskusje o mechanizmach kontroli dostępu (np. xaccess, xhost, MIT-COOKIEs), oraz użycie NFS-u, nie są jeszcze zawarte.

Większość XTerminali ma teraz całą gamę zaawansowanych właściwości, które pozwalają im być czymś więcej niż zwykłym X serverem. W większej części właściwości te będą ignorowane.

1.1 Zmiany względem wersji poprzedniej.

(Nie ma poprzednich wersji, więc wszystko było zmienione.)

1.2 Zrzeczenia. (Disclaimers)

Ani autor, ani dystrybutorzy, ani tłumacz tego dokumentu nie są w żaden sposób odpowiedzialni za fizyczne, finansowe czy moralne szkody spowodowane sugestiami zawartymi w tym dokumencie.

1.3 Prawa autorskie.

Prawa autorskie należą do Scota W. Stevensona.

O ile nie stwierdza się inaczej, dokumenty HOWTO są chronione prawami autorskimi ich autorów. Mogą one być rozprowadzane w całości lub w części, w jakiejkolwiek postaci fizycznej czy elektronicznej tak długo, dopóki znajduje się w nich ta wzmianka. Dystrybucja komercyjna jest dozwolona, a nawet zachęca się do niej; chociaż autor chciałby być poinformowany o takowej.

Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem.

Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO.

Jeśli masz jakieś pytania, skontaktuj się proszę z Gregiem Hankinsem, koordynatorem projektu Linux HOWTO pod adresem gregh@sunsite.unc.edu. Możesz użyc programu finger, żeby poznać jego numer telefonu czy dalsze informacje.

1.4 Nowe wersje i komentarze.

Nowe wersje oryginału tego dokumentu można znaleźć na ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO/. Odnośnie nowych wersji tłumaczenia zobacz sekcję Od tłumacza. Jeśli nie masz dostępu do ftp, możesz spróbować zdobyć pliki pomocy dotyczące Linux-a u Billa Riemersa. Wyślij list na adres bcr@physics.purdue.edu z tematem help, aby uzyskać więcej informacji.

Wszelkie dodatki, komenatarze i poprawki dotyczące tego dokumentu są mile widziane. Wysyłaj je na adres scot@catzen.gun.de.

Szczególnie chciałbym otrzymać listy od ludzi, którym udało się już podłączyć XTerminal z Linux-em, nawet jeśli jest to coś w stylu "działało na takim komputerze z takim terminalem".

W następnej wersji pojawią się: mechanizm kontroli dostępu i użycie systemu plików NFS do startowania.

2. Trochę historii.

Sekcja ta podaje trochę bardzo podstawowych informacji dla tych, którzy nie są jeszcze zapoznani z X Window System i jego terminal-ologią. Jeśli masz jakiekolwiek doświadzczenia związane z X i XTerminalami możesz przeskoczyć tę sekcję bez żadnych skutków ubocznych.

2.1 Co to jest X?

X Window System, albo po prostu X-y (nigdy X Windows), jest przenośnym, niezależnym od sieci systemem okienek jak to określa strona podręcznika systemowego. Udostępnia środowisko graficzne, które jest niezależne od systemu operacyjnego, sprzedawców i sprzętu. Kiedy ludzie mówią o systemie okienkowym w połączeniu z Unix-em, prawie zawsze maja na myśli X-y.

Najważniejszą cechą X-ów w naszym przypadku jest ścisłe oddzielenie od siebie programów, które kontrolują lokalny sprzęt, z którym komunikuje się użytkownik (ekran, klawiatura, mysz itp.) i tych programów, które użytkownik chce uruchamiać (edytory, arkusze, DOOM). Oznacza to, że komunikujący te dwie rzeczy program nazywany X serwerem, może być na jednej maszynie, podczas gdy właściwe programy, albo X klienty, mogą być na jednej a nawet większej ilości maszyn w zupełnie różnych miejscach. Zauważ, że terminy "serwer" i "klient" używane są w odwrotnym znaczeniu niż normalnie.

Linux posiada kolekcję Xserwerów z projektu XFree86, to znaczy, serwerów dla kart graficznych SVGA, jak również całą kolekcję Xklientów takich jak: xv, maze czy xterm. Jeśli dopiero zapoznajesz się z X-ami, możesz chcieć trochę poeksperymentować z X-ami na maszynie Linux-owej zanim będziesz ustawiał XTerminal.

2.2 Co to jest XTerminal ?

XTerminal (odtąd zwany XT) jest wyspecjalizowaną częścią sprzętu i oprogramowania, która łączy się w Xserwer, to jest, tę część X-ów, która zarządza wejściem/wyjściem do i od użytkownika. W najbardziej prymitywnym przypadku, zawarte są tylko program Xserwera i oprogramowanie komunikacyjne. Nawer menedżer okienek pochodzi od serwera, do którego poprzez ethernet połączony jest XT (albo rzadziej poprzez port szeregowy) używając protokołu TCP/IP.

Sprzęt XT będzie zawierał (duży) monitor, klawiaturę, myszkę, trochę RAM-u oraz gniazdka do ethernetu. Większość XT nie ma dysków twardych, stacji dyskietek ani żadnych innych urządzeń zapisu danych. Oznacza to, że XT mają swój system operacyjny albo w ROM-ie (rzadkość) albo ściągają go z hosta w sieci, do którego są podłączone.

Aby XT dostał się do swojego systemu operacyjnego na Linux-a podczas startu przeważnie robi on coś takiego: wysyła zawołanie o pomoc poprzez sieć ze swoim adresem ethernet. "Rzeczywisty" komputer w sieci porównuje ten adres z listą, którą posiada i jeśli znalazł jakiś identyczny, to wysyła do XT adres IP, który został mu przypisany (poprzez demona bootpd). Pozwala to XT na ściągnięcie systemu operacyjnego i ewentualnie innych danych, kórych potrzebuje z hosta (zwykle poprzez tftp). To jest cała procedura opisana w szczegółach.

Wtedy XT jest już w pełni wyposażonym komputerem z własnym numerem IP, RAM-em, programem i niezależnym sprzętem, chociaż bardziej jako uczony idiota. Jest najlepszy w tym co robi, czyli w zarządzaniu grafiką w X-ach, ale nieprzydatny do niczego innego.

2.3 Zalety i wady.

W idealnym przypadku XT jest cichy, szybki i martwy. Zwykle bez wiatraczka, stacji dyskietek czy dysku twardego, nie robi żadnego hałasu. Z kilkoma metrami kabla ethernet możesz wystawić swój hałaśliwy komputer do innego pokoju a u siebie na biurku postawić cichy XT. Ponieważ XT jest stworzony do X-ów i grafiki, jest szybszy niż, powiedzmy, program X-owy pod MS Windows czy DOS-a.

Jeśli serwer jest na jednym komputerze i klient na drugim, to procesor nie musi się zajmowac jednym i drugim na raz. Chociaż, można tego nie zauważyć w szybkości przekazywania danych (ponieważ poruszają się one poprzez ethernet) zredukuje to zużycie CPU i zaoszczędzi trochę pamięci na maszynie Linux-owej, która w innym przypadku byłaby załadowana Xserwerem.

Jednak z drugiej strony będziesz potrzebował karty ethernet, co zwykle oznacza jeden port i IRQ. W zależności od producenta, oprogramowanie dla XT może zabrać około 20 MB na Linux-ie. Prawie zawsze możesz skasować dużo niepotrzebnych rzeczy jak już się zorientujesz co jest rzeczywiście niezbędne. Większość XT wymaga na hoście zainstalowania demonów bootpd oraz tftpd - oba są potencjalnymi dziurami w bezpieczeństwie. Będziesz przypuszczalnie chciał mieć jeszcze jednego demona - xdm - uruchomionego w tle. I tak - ten wielki monitor do XT zabierze dużo miejsca na biurku.

2.4 Czego potrzebuję ?

Miło, że pytasz ! Ale bardziej odpowiednie będzie czego ty potrzebujesz ?

Po pierwsze potrzebujesz XT. Jeśli masz dużo pieniędzy i to naprawdę dużo, możesz iść i kupić. Jim Morton < jim@applix.com> wysyła regularnie listę XT na comp.windows.x. Albo może się do ciebie uśmiechnąć szczęście. Ponieważ starych XT nie można używać z DOS-em, MS Windows czy OS/2, niektóre firmy rozwiązują ten problem przez wyrzucenie ich.

Ze strony komputera Linux-owego będziesz potrzebował karty ethernet. Pomimo, iż teoretycznie podłączenie XT poprzez port szeregowy czy SLIP jest możliwe nie jest to zalecane o ile nie masz tendecji masochistycznych. Opis jak zainstalować i posługiwać się kartą ethernet znajdziesz w Ethernet-HOWTO, którego opiekunem jest Paul Gortmaker < Paul.Gortmaker@anu.edu.au>. Jeśli nie masz już innego wyboru to SLIP i CLSIP są opisane w tym samym dokumencie. W tym przypadku będziesz też chciał zajrzeć do Serial-HOWTO, którego opiekunem jest Greg Hankins < gregh@cc.gatech.edu>, żeby dowiedzieć się jak uzyskać najlepszą wydajność.

Będziesz także potrzebował obsługi TCP/IP wkompilowanej w jądro, tak samo jak przynajmniej dwóch numerów IP dla Linux-a i XT. Informacje o numerach IP znajdziesz w NET-3-HOWTO, którego opiekunem jest Terry Dawson < terryd@extro.ucc.su.oz.au>.

No i oczywiście będziesz musiał mieć zainstalowane X-y na Linux-ie. Teoretycznie potrzebujesz tylko Xklientów i programy takie jak xdm, bez Xserwerów. Ale przypuszczalnie nie jest to warte zabawy w wybieranie co instalować co nie. W XFree86-HOWTO, którym opiekuje się Helmut Geyer < Helmut.Geyer@iwr.uni-heidelberg.de> znajdziesz informacje jak ustawić X-y.

3. Kable, sieci i demony.

Sekcja ta opisuje zmiany jakie trzeba wprowadzić do sprzętu i oprogramowania, aby podłączyć XT do Linux-a. Przyjąłem tutaj takie nazewnictwo:

Zauważ, że są to adresy komputerów niepodłączonych do Internet-u i z tego co się orientuję to w Niemczech nie ma domeny frog.de. Załóżymy, że nie ma innych maszyn w sieci i że NFS nie jest zainstalowany.

[Jeśli ktoś używał NFS-u do podłączenia swojego XT, bardzo proszę o kontakt ze mną.]

3.1 Fizyczne podłączenie.

Powinno być to tak łatwe jak włożenie dwóch kabli do dwóch komputerów. Zauważ, że niektóre XT mają dwa porty szeregowe, które mogą działać tylko przy konkretnych szybkościach jeśli są używane oba na raz. Sprawdź podręcznik do swojego Xterminala. Później będziesz potrzebował adresu ethernet swojego XT. Jest on wyświetlany podczas startu XT nawet jeśli nie ma żadnych połączeń.

Jak tylko włożysz kable w odpowiednie miejsca będziesz mógł przetestować połączenie ethernet. Po wystartowaniu, XT powinien narzekać, że jego zapytania o bootpd i tftpd nie są obsługiwane i powinien zacząć startować swój system operacyjny z ROM-u. Powinno zawierać się tam prymitywne polecenie ping, które pozwoli ci na przetestowanie połączenia ethernet-owego z Linux-em. Nie panikuj jeśli to nie działa. XT przypuszczalnie potrzebuje całego swojego systemu operacyjnego, aby odpowiedzieć.

3.2 Konfiguracja sieci.

Informacje na temat konfiguracji TCP/IP powinieneś znaleźć w NET-3-HOWTO, tak jak zostało to już wspomniane wyżej. Założymy, że masz już skonfigurowaną sieć TCP/IP. Ponieważ XT to tylko następny komputer w sieci, będziesz musiał się upewnić, że oba komputery - Linux i XT - znają swoje numery IP i że są podłączone do sieci.

Konfiguracja maszyny Linux-owej.

Informacje na temat XT będą musiały zostać zawarte w co najmniej tych plikach:


    /etc/hosts    Add a line with the IP number of the XT, such as

                  # /etc/hosts line for Linux machine. lprhost oraz loghost 
                  #            są opcjonalne
                  192.168.13.1    imlinux imlinux.frog.de lprhost loghost
                  # Nastepna linia jest nową linią dla XT.
                  192.168.13.41   whisper whisper.frog.de


    /etc/ethers   This file provides a list of ethernet numbers and the
                  corresponding host names. This does not seem to be needed
                  in all distributions and setups, but in case it is, you
                  will need to include the ethernet number of the 
                  XT and its hostname. This would be something like
                  
                  04:03:e8:cc:0d:24     imlinux
                  0f:03:11:31:45:f1     whisper

[Możliwe, że musisz zmienić także inne pliki jeśli masz takie programy jak named, routed czy gated. Ponieważ ja tego nie stosuję byłbym bardzo wdzięczny jeśli ktoś kto używa tych programów powiedziałby mi jakie pliki trzeba jeszcze zmienić.]

Zrestartuj komputer, żeby się upewnić, że wszystkie dokonane zmiany działają.

Konfiguracja XTerminala.

Sprawdź w podręczniku jakie pliki musisz zmienić, żeby podać te informacje. W moim przypadku był to jeden ogólny plik, w którym musiały się znaleźć poniższe informacje:


        ip_host_table            192.168.13.1    imlinux
        ip_host_table            192.168.13.1    imlinux.frog.de
        ip_host_table            192.168.13.41   whisper
        ip_host_table            192.168.13.41   whisper.frog.de

        file_access_1            TFTP
        file_host_name_1         imlinux.frog.de
        file_path_1              /usr/local/xterm/liveshere

        display_access_table     whisper
        display_access_table     imlinux
        enable_access_control    YES

        xdmcp_server             imlinux
        broadcast_address        192.168.13.255
        default_telnet_host      imlinux

Zauważ, że XT pobiera swoje pliki poprzez tftp z katalogu /usr/local/xterm/liveshere, i że terminal jest w stanie wykonać XDMCP (ważne do konfiguracji xdm-a).

Będą jeszcze inne pliki konfiguracyjne na takie rzeczy jak np. czcionki. Powinieneś móc używać czcionek zainstalowanych już na Linux-ie. W moim przypadku plik dotyczący czcionek wyglądał mniej więcej tak:


        /usr/lib/X11/fonts/75dpi
        /usr/lib/X11/fonts/100dpi
        ...
        /usr/local/xterm/misc
        /usr/local/xterm/openlook

i jeszcze kilka linii, z tym samym efektem. Później jak już twój XT startuje z Linux-a, powinieneś zobaczyć listę plików, które udało mu się załadować.

Inną rzeczą, którą będziesz chciał mieć to tzw. "backing store". Oznacza to, że części okienek, które są przykrywane przez następne okienka zapisywane są w RAM-ie w XT a nie w Linux-ie. Sprawdź podręcznik do swojego XT.

3.3 bootpd

Bootpd jest demonem odpowiedzialnym za komunikację z XT podczas startu. Informuje go o tym kim jest i skąd ma pobrać oprogramowanie do załadowania. Z jakichś dziwnych powodów demon ten nie znajduje się w nowszych dystrybucjach, przynajmniej w Slackware 2.2.0.1 go nie było. Tak więc będziesz go musiał zdobyć poprzez ftp albo jakoś inaczej. Powinien zostać umieszczony w /usr/sbin, a nie (jak informuje strona podręcznika systemowego) w /etc pod nazwą in.bootpd. Dodaj następującą linię lub usuń znak komentarza z pliku /etc/inetd.conf w linii:

       bootps dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.bootpd

Spowoduje to uruchomienie bootpd przez inetd kiedy pojawi się jakieś żadanie skierowane do bootpd.

Plikiem konfiguracyjnym dla bootpd jest plik /etc/bootpd. Składnia tego pliku jest wyjaśniona na stronie podręcznika systemowego. W naszym przykładzie plik ten powinien wyglądać mniej więcej tak: (serwer jest tutaj użyty znowu w swoim normalnym znaczeniu)


       # Sample /etc/bootpd file
       # Najpierw ustawienia globalne dla tego, co jest używane przez
       # wszystkie maszyny.
       allhost:hd=/usr/local/xterm/liveshere:\ # Katalog domowy dla XT.
             :ds=192.168.13.1:\                # Serwer nazw domeny (imlinux)
             :sm=255.255.255.0:\               # Maska podsieci
             :gw=192.168.13.1:\                # Wrota (gateway)
             :ts=192.168.13.1:\                # Serwer czasowy
             :lp=192.168.13.1:\                # Serwer drukarki
             :to=-7200:                        # Offset czasu w sekundach
       # Następnie pozycje dla poszczególnych XT.
       # Kolejne XT miały by swoje odrębne pozycje.
       whisper:ht=ethernet:\         # Rodzaj połączenia sprzętowego
              :ha=0f03113145f1:\     # Adres ethernet-owy XT
              :ip=192.168.13.41:\    # Numer IP XT (whisper)
              :tc=allhost:\          # Dołącz ustawienia globalne
              :bf=xtermOS:           # Nazwa pliku startowego - OS XT

Nazwa systemu operacyjnego (OS) dla XT nie może byc częścią nazwy katalogu domowego (hd). W naszym przykładzie plik, w którym znajduje się system operacyjny to /usr/local/xterm/liveshere/xtermOS, ale pozycja hd to /usr/local/xterm/liveshere/.

bootpd zapisze informacje do obu plików /var/adm/syslog oraz /var/adm/messages, która po udanym starcie powinna wyglądać mniej więcej tak:

       Jul 17 05:19:42 imlinux in.bootpd[110]: connect from 0.0.0.0
       Jul 17 05:19:42 imlinux bootpd[110]: reading "/etc/bootptab"
       Jul 17 05:19:42 imlinux bootpd[110]: read 2 entries from "/etc/bootptab"
       Jul 17 05:19:43 imlinux bootpd[110]: request from hardware address 
       0F03113145F1 Type 1
       Jul 17 05:19:43 imlinux bootpd[110]: found 192.168.13.41 whisper

Po tym, jak bootpd pomoże wystartować XT będzie on jeszcze siedział w pamięci przez ok. 15 minut, po czym jeśli nie ma już nic do roboty usunie się.

3.4 tftpd

Trivial File Transfer Program jest używany przez XT do załadowania systemu operacyjnego z dysku twardego z Linux-a. Powinien być zawarty w każdej dystrybucji i nie posiada pliku konfiguracyjnego. Możesz przetestować ten program wpisując w wierszu poleceń tftp.

Tak jak to zrobiłeś w przypadku bootpd będziesz musiał dodać lub usunąć znak komentarza z pliku /etc/inetd.conf w linii:

       tftp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.tftpd

Zauważ, że tftp ma dostep tylko do tych plików, które mają odczyt dla świata. Pamiętaj też, że tftp jest potencjalną dziurą w bezpieczeństwie i że wersja tego programu zawarta w niektórych dystrybucjach Linux-a nie posiada opcji -r lub -s, które czynią ten program bardziej bezpiecznym.

tftp także czyni zapis w /var/adm/messages. Jeśli bootpd dobrze wykonał swoją robotę, to następne linie powinny wyglądać mniej więcej tak:

       Jul 17 05:19:43 imlinux in.tftpd[111]: connect from whisper
       Jul 17 05:19:58 imlinux in.tftpd[113]: connect from whisper
       Jul 17 05:19:59 imlinux in.tftpd[115]: connect from whisper
       Jul 17 05:20:00 imlinux in.tftpd[117]: connect from whisper
       Jul 17 05:20:03 imlinux in.tftpd[125]: connect from whisper
       Jul 17 05:20:05 imlinux in.tftpd[127]: connect from whisper

i tak dalej przez pewną chwilę. Są to pliki, o które prosi XT ze swojego katalogu domowego. Powinieneś zobaczyć także informacje na ekranie XT podczas ich przenoszenia.

3.5 Testowanie połączenia.

Jak już zmodyfikowałeś pliki wymienione wyżej, powinieneś móc wystartować XT. W zależności od producenta na ekranie pojawią się mniej lub więcej mówiące komunikaty o tym co się dzieje. Sprawdź uważnie czy nie ma jakichś informacji o plikach, które nie mogły zostać odnalezione.

Jeśli wszystko jest w porządku, to na XT powinna się uruchomić osobna wersja X-ów. To znaczy szare tło i kursor X. Jeśli na Linux-ie jest już uruchomiony xdm, to może się nawet pojawić zachęta graficzna. Chociaż może się też zdarzyć, że będą się działy dziwne rzeczy ponieważ nie wszystko jest jeszcze ustawione. W ostateczności przygotuj się na zabicie xdm-a.

Większość XT ma wbudowane funkcje, takie jak klient telnet-a, jako część ich startującego systemu operacyjnego. Możesz przetestować dokładniej połączenie przez "zatelnetowanie" się na Linux-a.

W tym momencie, w zleżności od ustawionego dostępu, możesz być już w stanie uruchomić programy pod X-y używając opcji wyświetlania. Spróbuj napisać na komputerze z Linux-em:

                      xclock -display whisper:0 &

Na XT powinien pojawić się zegar. Możesz nawet w ten sposób uruchomić menedżera okienek.

4. X-y w działaniu.

Sekcja ta opisuje ustawienie xdm-a tak, żeby na XT pojawiła się graficzna zachęta i żeby powracała po wylogowaniu się użytkownika. Program xdm jest menedżerem wyświetlania. Jest to (bardzo) surowy ekwiwalent programów rejestrujących użytkownika na zwykłym terminalu. Powinien być zawarty w każdym pakiecie X na Linux-a.

4.1 Konfiguracja xdm-a.

Pliki konfiguracyjne tego programu znajdują się w /usr/X11R6/lib/X11/xdm (/usr/X11R6 może być symbolicznym dołączeniem do /usr/X11). Głównym plikiem konfiguracyjnym jest xdm-config. Powinieneś znaleźć wśród innych także takie linie:


       DisplayManager._0.authorize:    true
       DisplayManager._0.setup:        /usr/X11R6/lib/X11/xdm/Xsetup_0
       DisplayManager._0.startup:      /usr/X11R6/lib/X11/xdm/GiveConsole
       DisplayManager._0.reset:        /usr/X11R6/lib/X11/xdm/TakeConsole

To są pliki, które kontrolują ekran podczas gdy X-y są uruchamiane na Linux-ie. Dla XT dodajemy cztery linie tego samego typu:


       DisplayManager.whisper_0.authorize:     true
       DisplayManager.whisper_0.setup:   /usr/X11R6/lib/X11/xdm/Xsetup_whisper
       DisplayManager.whisper_0.startup: /usr/X11R6/lib/X11/xdm/Xstartup
       DisplayManager.whisper_0.reset:   /usr/X11R6/lib/X11/xdm/Xreset

Zauważ, że zamiast whisper:0 pojawia się whisper_0. Zauważ też, że GiveConsole zostało zamienione na Xstartup, który w moim przypadku jest plikiem pustym oraz TakeConsole zostało zamienione na Xreset, który także jest pustym plikiem. Oba pliki kontrolują właściciela konsoli graficznej kiedy X-y są uruchamiane na Linux-ie, ale ponieważ my uruchamiamy je na XT, więc nie ma sensu mieszać z konsolą Linux-a.

Pliki ustawiające (setup) uruchamiają pewne programy zanim na ekranie pojawi się zachęta. To jest miejsce, w którym możemy użyć, powiedzmy, xv, żeby wyświetlić sobie w tle obrazek. Powinieneś móc po prostu skopiować plik Xsetup_0 na Xsetup_whisper.

[Pytanie to ciągle powraca: Jednym ze sposobów umieszczenia obrazka w tle jest umieszczenie linii

         nice xv -root -quit -rmode 5 <obrazek> &

czy podobnej w pliku ustawiającym. <obrazek> zostanie wyświetlony w tle pod zachętą xdm-a. Zauważ, że niektóre XT będą zgłaszać błąd jeśli obrazek jest za duży albo zbyt skomplikowany.]

Xaccess kontroluje kto może mieć dostęp do maszyny. Powinieneś móc zostawić wartości domyślne takimi jakie są. Zauważ, że Xaccess pozwoli ci na powitanie użytkownika programem chooser w razie gdybyś miał w sieci więcej komputerów, które służą za XT.

Xresources kontroluje wygląd i rozmiar graficznej zachęty. Możesz mieć różne zachęty dla Linux-a i dla XT poprzez zamianę linii:

       DisplayManager*resources:       /usr/X11R6/lib/X11/xdm/Xresources

na dwie linie:

       DisplayManager._0.resources:        /usr/X11R6/lib/X11/xdm/Xres_0
       DisplayManager.whisper_0.resources: /usr/X11R6/lib/X11/xdm/Xres_wh_0

gdzie Xres_wh_0 jest nazwą pliku zasobowego dla whisper.

Powinieneś móc także zostawić plik Xservers z wartościami domyślnymi.

Konfiguracja w pliku Xservers jest nieco bardziej złożona. Przypuszczalnie jest tam tylko jedna linie bez komentarza:

                    :0 local /usr/X11R6/bin/X

albo coś podobnego. Powoduje ona wystartowanie X serwera na Linux-ie podczas uruchomienia programu xdm. Zamiana tej linii w komentarz oznacza, że podczas uruchomienia programu xdm nie będą startowane X-y na Linux-ie. To jest to co musisz zrobić, jeśli chcesz żeby xdm obsługiwał tylko XT a nie X-y na Linux-ie. W tym wypadku, X-y można w każdej chwili uruchomić na Linux-ie poleceniem startx jak dotąd bez znanych skutków ubocznych.

Jeśli twój XT nie posiada XDMCP, musisz także dołączyć taką linię dla XT:

                         whisper:0 foreign

XDMCP jest standardem pozwalającym na przykład rozmawiać XT ze swoimi hostami. Jeśli twój XT posiada XDMCP nie dołączaj tej linii tutaj. Jeśli linia ta znalazłaby się tutaj, a XT posiadałby XDMCP, to na lini połączeniowej pojawiłby się konflikt, ponieważ zarówno xdm jak i XT próbowałyby się równocześnie porozumieć. Może to prowadzić do różnych przedziwnych efektów, jak np. walka dwóch xdm o dominację :).

Zauważ, że możesz użyć pozycji w xdm-config nawet jeśli w Xservers nie ma linii dotyczącej XT, to znaczy, że możesz w dalszym ciągu ustawiać zachętę graficzną itp. dla XT, który posiada XDMCP.

Aby xdm startował za każdym startem Linux-a możesz dołączyć taką linię

        /usr/bin/X11/xdm

do pliku /etc/rc.d/rc.local. Inni startują xdm-a poprzez /etc/inittab. W każdym razie xdm powinien pojawić się jako jeden z procesów po starcie Linux-a.

4.2 Pytania o dostęp.

[Jest to dość ważne i pracujemy nad tym.]

Aby zobaczyć czy użytkownik może używać ekranu danego XT z maszyny Linux-owej zaloguj się jako użytkownik inny niż "root" i napisz jedno z:


           xsetroot -solid white -display whisper:0 &
           xterm -display whisper:0 &

Użyj tego kiedy ktoś jest zalogowany na XT oraz kiedy jest tam tylko graficzna zachęta.

5. Błędy, nieznane i podziękowania.

5.1 Znane problemy.

Oto problemy, które się pojawiły oraz ineteresujące właściwości, które mogą być rozważane jako błędy. Jeśli pojawiły się u ciebie jakieś interesujące właściwości czy nawet rozwiązania skontaktuj się ze mną proszę.

5.2 Przetestowane terminale.

Procedury opisane w tym tekście były jak dotąd poważnie testowane na Tektonix-ie XP23 w połączeniu z 386DX-33MHz, 16 MB RAM-u z Linux-em 1.2.3 oraz XFree86 w wersji 3.1.1 z dystrybucji Slackware 2.2.0.1.

5.3 Dalsze czytanie.

Więcej informacji na temat X-ów można znaleźć w sieci:

5.4 Podziękowania.

Najpierw podziękowania dla Linusa B. Torvaldsa < torvalds@kruuna.helsinki.fi>; następnie dla

Klausa ter Fehna < ktf@bc3.gun.de> oraz dla

Douglasa K. Stevensona < duck@catzen.gun.de>

5.5 Od tłumacza.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl/HOWTO/

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany wprowadzone przez tłumacza: polskie adresy ftp i zmiana Net-2-HOWTO na NET-3-HOWTO. doc-linux-pl-2002.06.14.orig/mini/html/krypto.pl.html0100664000175000017500000003416507104371340021131 0ustar covencoven Kryptograficzny System Plików pod Linuxem - Jak To Zrobić

Kryptograficzny System Plików pod Linuxem - Jak To Zrobić

Autor: Alexander O. Yuriev, alex@bach.cis.temple.edu
Wersja polska: Krzysztof G. Baranowski KGB@rubikon.net.pl
v1.1 12 Maja 1997


W dokumencie opisano jak skompilować, zainstalować i ustawić Kryptograficzny System Plików (zwany dalej CFS - przyp. tłumacza), który został napisany przez Matta Blaze z AT&T, pod Linuxa.

1. Wprowadzenie

Następujące oświadczenie skopiowane zostało bezpośrednio z CFS 1.12 i opisuje zastrzeżenia co do używania CFS.

2. O CFS

CFS umożliwia niezależne od aplikacji szyfrowanie/deszyfrowanie danych na powłoce struktury plików i nie wymaga modyfikacji kodu istniejącego już systemu plików, ani żadnych modyfikacji jądra systemu. Symetryczne szyfrowanie zawarte w głównym strumieniu CFS bazuje na zmodyfikowanym standardzie DES pracującym w trybie CBC, który czyni brutalny atak przeciwko 56-bitowemu kluczowi DES prawie niemożliwym. Struktura CFS zastępuje główny strumień DES, szyfrem Fast-DES albo jakimkolwiek innym szyfrem, w doskonały, bezpośredni sposób. Gdybyś był zainteresowany przeczytaj Białą stronę o CFS.

3. KOMPILACJA I INSTALACJA CFS.

CFS nie skompiluje się "samo" pod Linuxem. Podążaj za niniejszymi instrukcjami, jeśli chcesz uruchomić CFS na swoim Linuxie. Jest kilka metod osiągnięcia tego celu, ale najprostsza bazuje na modyfikacjach przeprowadzonych przez Olafa Kircha. Jego wersja CFS jest dostępna z: ftp.mathematic.th-darmstadt.de.

Olaf podpisał zmodyfikowane archiwum. Podpis PGP dla zmodyfikowanej wersji cfs-1.1.2 można otrzymać z: ftp.mathematic.th-darmstadt.de.

W trybie jednego użytkownika, skompiluj cfs za pomoca komendy "make". (przeczytaj najpierw odpowiednie pliki, tzn. README, Changes itp. - przyp. autora). Po kompilacji, zainstaluj: cfsd, cdetach, ccat, cmkdir, cname i cattach do katalogu /usr/local/sbin - właścicielem tych plikow niech będzie root, a grupa, do której muszą one należeć to wheel. Nadaj plikom atrybuty 551.

Dla bezpieczeństwa można wygenerować sumy kontrolne MD5, na czystych binariach. Następnie skopiuj te pliki razem z "md5sum", na media takie jak płyta CD, albo dyskietka i zabezpiecz ją przed zapisem.

Utwórz katalog /.cfsfs, który będzie używany przez serwer CFS. Niech właścicielem katalogu będzie root, grupa root, a jego atrybuty niech wynoszą: 000. Utwórz katalog /securefs, ktory stanie się korzeniem drzewa Kryptograficznego Systemu Plików.

Dodaj nastepującą linię do /etc/rc.d/rc.local:

echo -n "Inicjacja Kryptograficznego Systemu Plików: "
if [ -x /usr/local/sbin/cfsd ]; then
/usr/local/sbin/cfsd > /dev/null
echo -n "cfsd "
/bin/mount -o
port=3049,intr localhost:/.cfsfs /securefs
echo -n "loopback"
echo "done"
else
echo "Nie zainstalowano poprawnie Kryptograficznego System Plików"
fi

Użytkownicy Red Hata powinni dodać plik "cfsfs", który znajduje się na końcu tego dokumentu do katalogu /etc/rc.d/init.d. Następnie utworzyć dołączenie symboliczne "S65cfsfs" i umieścić go w odpowiednim katalogu startowym, np. rc3.d używając komendy:

ln -s /etc/rc.d/init.d/cfsfs S65cfsfs

we właściwym katalogu startowym. Następnie należy dodać linię:

/.cfsfs localhost

w pliku /etc/exports. Na końcu dodaj linię:

portmap: 127.0.0.1

do pliku /etc/hosts.allow.

Teraz powinieneś zrestartować komputer. Po jego uruchomieniu, użyj komendy mount żeby sprawdzić, czy CFS pracuje. Jeśli wszystko zadziałało, powinieneś zobaczyć nową następującą linię po wykonaniu komendy mount.

localhost:/.cfsfs on /securefs type nfs(rw,port=3049,intr,addr=127.0.0.1)

4. TWORZENIE KATALOGU CFS

Żeby utworzyć szyfrowany katalog o nazwie "sekret" użyj komendy:

cmkdir sekret

Zostaniesz poproszony o podanie i zweryfikowanie hasła. Jeżeli to sie uda, utworzony zostanie katalog "sekret", który pojawi sie w bieżącym katalogu. Katalog ten będzie zawierał zaszyfrowane dane, które będzie można normalnie przeglądać pod warunkiem, że dołączymy ten katalog do drzewa CFS.

Żeby można było swobodnie korzystać z informacji zawartych w katalogu, trzeba dołączyć go do drzewa katalogów zarządzanych przez CFS za pomoca komendy:

cattach sekret Tajne

CFS poprosi Cię o podanie hasła dostępu. Jeżeli będzie się ono zgadzało z hasłem podanym przy tworzeniu katalogu "sekret", dane zawarte w tym katalogu będą dostępne w niezakodowanej formie w /securefs/Tajne, TYLKO dla użytkownika, który podał właściwe hasło dostępu. (nawet root nie może odczytać tych plików ;-) - przyp. tłumacza)

Zauważ, że dołączenie katalogu do drzewa CFS, może zająć nawet minutę. (u mnie na P133/16MB RAM zajmuje nie więcej niż 5 sekund). Od tej pory możemy korzystać z katalogu /securefs/Tajne jak z każdego innego katalogu.

Kiedy skończymy pracę powinniśmy użyć komendy:

cdetach Tajne

żeby uniemożliwić dostęp do danych. Komenda ta usuwa katalog "sekret" z listy katalogów zarządzanych przez CFS, co uniemożliwia odczytanie informacji w tym katalogu, gdyż są one zakodowane. Aby znowu umożliwić sobie dostęp do danych należy użyć komendy "cattach".

5. OCHRONA CFS

Aby umożliwić użytkownikom dostęp do zaszyfrowanych danych, CFS wymaga od użytkownika hasła, które jest używane do wygenerowania zestawów kluczy.

Zdobycie hasła przez niepowołane osoby pozwala intruzom odczytać zaszyfrowane dane, dlatego jest niezwykle ważne, aby użytkownik we własnym interesie chronił hasło dostępu. Istnieją dwie możliwości zdobycia Twojego hasła przez intruzów:

  1. Sniffing
  2. Atak przeciwko protokołowi.

Informacje zawarte poniżej mogą zostać użyte, aby zmniejszyć prawdopodobieństwo skutecznego ataku przeciwko CFS.

  1. Upewnij się, że binaria CFS są oryginalne:
    1. upewnij się, że: cattach, ccat, cmkdir, cname, cfsd i cdetach nie zostały zastąpione "koniami trojańskimi", które zapisują hasła dostępu,
    2. upewnij się, że CFS serwer (cfsd), nie został w jakiś sposób zmodyfikowany i że szyfruje dane poprawnie,
    3. atak przeciwko "cdetach" zazwyczaj wymaga małej modyfikacji kodu, która chroni klucze dostępu przed zniszczeniem i pozwala intruzowi uzyskać kontrolę nad zakodowanymi danymi. Najprostszym sposobem na upewnienie się, ze binaria nie zostały podmienione, jest zlinkowanie ich statycznie i umieszczenie na płycie CD. Inny sposób, to zlinkowanie statyczne, wygenerowanie sum kontrolnych za pomocą programu MD5 i umieszczenie ich na dyskietce zabezpieczonej przed zapisem. Przed użyciem CFS w systemie, zamountuj dyskietkę i sprawdź czy sumy kontrolne zgadzają się; w razie potrzeby zastępując podmienione programy ich oryginalnymi wersjami.
  2. Uważaj na programy zapisujące do pliku dane wpisywane z klawiatury, tzw. keyboard grabbers i zawsze stosuj się do poniższych zasad:
    1. kiedy wpisujesz hasło w oknie xterm-a, upewnij się, że xterm jest oryginalny i używaj bezpiecznej klawiatury "Secure keyboard". To uniemożliwi przechwycenie hasła przez wyżej opisane programy,
    2. wpisuj hasła do terminali przyłączonych bezpośrednio do portów szeregowych systemu, gdy są one dostępne,
    3. upewnij się, że konsole (pty i tty) są ustawione tak, aby uniemożliwić innym odczytanie twojego hasła.
  3. Nigdy nie wpisuj hasła poprzez sieć, nawet jeśli znajduje się ona za firewallem i wiesz, że nikt podłączony do sieci nie używa sniffera. Tyczy się to także sieci używających, tzw. scramble routers, ponieważ nie masz pewności, ze routery używają odpowiednio silnej enkrypcji, nie mają "tylnych drzwi" albo innych dziur, które pozwoliłyby intruzowi pokonać enkrypcję routera. Jeżeli jednak musisz podać hasło poprzez sieć, rób to tylko zaszyfrowanym kanałem pomiędzy hostami. (najbardziej znany i popularny jest (ssh) secure shell - przyp. autora)
  4. Zawsze używaj komendy cdetach, kiedy nie pracujesz z danymi. Nawet kiedy przerywasz pracę na kilka minut.

5.1 ZNANE PROBLEMY Z CFS

W tym momencie jedyny znany problem, to komunikat "Permission denied", kiedy próbujesz dostać się do plików na płycie CD.

6. PODZIĘKOWANIA

Niżej wymienieni ludzie przyczynili się do powstania tego dokumentu: Topher Hughes z Dickinson College, Elie Rosenblum z Montgomery Blair High School, Mario D. Santana z Florida State University, Daniel P Zepeda i Olaf Kirch.

====================[początek pliku cfsfs]======================
#!/bin/sh
#
# $Header: /Secure/secure-doc/linux/CFS/RCS/CFS-Doc,v 1.
4 1996/03/15 04:49:37 alex Exp alex $
#
# cfsfs Kryptograficzny System Plików
#
# Autor: Alexander O. Yuriev <alex@bach.cis.temple.edu>
#
# Derived from cron
# Source function library.

. /etc/rc.d/init.d/functions

# See how we were called.

case "$1" in
 start)
        echo -n "Uruchamianie Kryptograficznego Systemu Plików: "
        if [ -x /usr/local/sbin/cfsd ]; then
                /usr/local/sbin/cfsd > /dev/null
                /bin/mount -o port=3049,intr localhost:/.cfsfs /securefs
                echo "done"
        else 
         echo -n "Nie zainstalowano poprawnie Kryptograficznego Systemu Plików"
        fi
        touch /var/lock/subsys/cfsfs
        ;;
 stop)
        echo -n "Zamykanie Kryptograficznego Systemu Plików: "
        umount /securefs
        killproc cfsd
        echo
        rm -f /var/lock/subsys/cfsfs
        ;;
 *)
        echo "Użycie: cfsfs {start|stop}"
        exit 1
esac

exit 0

====================[koniec pliku cfsfs]======================

7. DODATEK A

Jak najwygodniej posługiwać się CFS...

Copyright (C) 1997 by Krzysztof G. Baranowski (KGB@rubikon.net.pl)

Ponieważ ciągłe używanie komend "cattach","cdetach" i przechodzenie pomiędzy wieloma odległymi od siebie katalogami może być na dłuższą metę męczące i może zniechęcić użytkownika od używania CFS, postanowiłem napisać ten dodatek, w którym przedstawię naprawdę bardzo proste porady, dzięki którym będzie można zhumanizować pracę z CFS.

A zatem zacznijmy od początku. Najwygodniej jest utworzyć w domowym katalogu użytkownika ukryty katalog, w którym będziemy trzymać wszystkie zakodowane pliki. Wiąże się to jednak z ryzykiem. Bo jeżeli ktoś pozna nasze hasło dostępu to będzie mógł swobodnie manipulować naszymi plikami.

Z drugiej strony posiadanie wielu katalogów może przyprawić użytkownika o ból głowy, gdyż będzie on musiał zapamiętać ogromną ilość haseł. A minimalna długość hasła dostępu do każdego katalogu wynosi 16 (szesnaście) znaków. ;-)

Pozostańmy więc przy jednym katalogu. Zatem piszemy:

/home/kris$ cmkdir .xfiles

Zakładam, że użytkownik ma login: kris, a jego katalog domowy to /home/kris i używa bash'a jako domyślnego shella. Następnie CFS poprosi nas o hasło, które musi składać się przynajmniej z 16 znaków. Po weryfikacji hasła nasz tajny katalog ".xfiles" zostanie utworzony:

Następnie dopiszmy dwa aliasy do pliku ".bashrc":

alias dekoduj='cattach /home/kris/.xfiles tajne'
alias koduj='cdetach tajne'

W tym przypadku katalog, w którym będziemy mogli przeglądać odkodowane pliki posiada nazwę "tajne", a jego scieżka dostępu to: /securefs/tajne.

Oczywiście nazwę możemy sobie wybrać dowolną. :-)

Następnie w naszym domowym katalogu utwórzmy dołączenie symboliczne do katalogu /securefs/tajne za pomocą komendy:

/home/kris$ ln -s /securefs/tajne tajne

Wybór nazwy dołączenia także zależy od użytkownika. I to wszystko. Od tej pory używanie CFS staje się dziecinnie proste.

Jeśli chcemy dostać się do naszego zakodowanego katalogu wpisujemy:

/home/kris$ dekoduj

i podajemy hasło. Komenda "cd tajne" od razu przenosi nas tam gdzie trzeba, gdzie możemy buszować sobie do woli :-), a "cd .." przenosi nas z powrotem do katalogu domowego. Proste i praktyczne. Po zakończeniu pracy wpisujemy:

/home/kris$ koduj

I już nikt nie odczyta naszych danych, włącznie z nami, chyba że użyjemy jeszcze raz komendy "dekoduj".

Na koniec mała uwaga. Kopiowanie, przenoszenie plików, przechodzenie do katalogów będących pod kontrolą CFS może być trochę opóźnione. Związane jest to z enkrypcją/dekrypcją dokonywaną w czasie rzeczywistym. No to bawcie się dobrze.

doc-linux-pl-2002.06.14.orig/mini/3-Button-Mouse.pl.txt0100664000175000017500000007570007104371340021211 0ustar covencoven Jak zainstalować trójprzyciskową mysz szeregową (mini-JTZ) Autor: Geoff Short, geoff@kipper.york.ac.uk v1.32, 4 listopdada 1997 WWeerrssjjaa ppoollsskkaa:: KKrrzzyysszzttooff PP.. JJaassiiuuttoowwiicczz kkppjjaass@@pprriivv..oonneett..ppll v1.0 beta, 30 marca 1998 roku Co zrobić aby 3 przyciskowa mysz szeregowa działała pod Linux-em. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem : ftp.icm.edu.pl . ______________________________________________________________________ Spis treści 1. Disclaimer 2. Wprowadzenie 3. Porty szeregowe 4. Myszy z przełącznikiem 5. Normalne myszy 6. Przełączanie myszy w tryb trójprzyciskowy 7. Używanie gpm do przełączania trybów myszy 8. Używanie dwóch myszy 9. Przykłady plików XF86Config i Xconfig 10. Kable, przedłużki i przelotki 11. Różne kłopoty i ustawienia 12. Przetestowane modele 13. Dalsze informacje 14. Ogon myszy ______________________________________________________________________ 11.. DDiissccllaaiimmeerr Ten dokument jest oddany do użytkowania w dobrej wierze, jako zawierający w sobie tylko bezpieczne programowanie i operacje. Autor nie bierze odpowiedzialności za żadne szkody i uszkodzenia powstałe w jakikolwiek sposób u jakichkolwiek osób i sprzętu, jako bezpośrednie lub niebezpośrednie następstwo wypełniania podanych zaleceń. 22.. WWpprroowwaaddzzeenniiee Najnowsza wersja tego dokumentu (w oryginale ) jest zawsze dostępna : http://kipper.york.ac.uk/mouse.html Istnieje japońska wersja tego dokumentu : http://jf.gee.kyoto- u.ac.jp/JF/JF-ftp/euc/3-Button-Mouse.euc Od tłumacza : moja wiedza dotycząca myszy jest ograniczona. Jeśli zauawżyłeś jakieś błędy lub niedociągnięcia poinformuj mnie o tym. Pod adresem kpjas@priv.onet.pl. Większość aplikacji X Window jest pisana z założeniem, że użytkownik będzie używał trzyprzciskowej myszy. Myszy szeregowe są zazwyczaj stosowane w zestawach komputerowych i są tanie. Wiele z tych myszy ma trzy klawisze i opisane są, iż używają protokołu Microsoft, co teoretycznie znaczy, że idealnie nadają się do systemu X Window. ( Obecnie rekord najniższej ceny za działającą trzyprzyciskową mysz szeregową wynosi $1.14!) Większość myszy o podwójnym protokole będzie działać w dwóch trybach: ˇ trybie dwuprzyciskowej myszy Microsoft. ˇ trybie trzyprzyciskowej myszy MouseSystems. Ten dokument poprowadzi cię krok po kroku przez konfigurację myszy w tych dwóch różnych trybach, w szczególności przez to co konieczne do używania bardziej przydatnej myszy trzyprzyciskowej. 33.. PPoorrttyy sszzeerreeggoowwee Pierwszą rzecz, którą trzeba sprawdzić to czy oprogramowanie może odnaleźć myszkę. Dowiedz się, do którego portu szeregowego twoja mysz jest podłączona - zazwyczaj będzie to /dev/ttyS0 ( COM1 w DOS-ie ) lub dev/ttyS1 (COM2). ( ttyS0 jest zwykle 9-pinowym gniazdem, ttyS1 25-pinowym, ale oczywiście nie ma w tej sprawie sztywno ustalownych reguł). Istnieje też odpowiadająca liczba urządzeń /dev/cua, które są prawie identyczne z /dev/ttyS ale ich odradza się ich używania. Dla wygody należy wykonać nowe powiązanie /dev/mouse z tym portem. Na przykład dla ttyS0: ln -s /dev/ttyS0 /dev/mouse 44.. MMyysszzyy zz pprrzzeełłąącczznniikkiieemm Niektóre myszy, zazwyczaj nie te najtańsze, mają przełącznik na spodzie oznaczony `2/3'. Czasem może to być `PC/MS'. W tym wypadku oznaczenie `2' dotyczy trybu dwuprzyciskowego Microsoft-u, a `3' trzyprzyciskowego trybu MouseSystems. Przełącznik `PC/MS' jest nieco bardziej skomplikowany. Prawdopodobnie stwierdzisz, że ustawienie `MS' oznacza tryb Microsoft, a `PC' oznacza tryb MouseSystems. Możliwe, że ustawienie `PC' będzie opisane jako ps/2, ale powinno ono działać także jako tryb MouseSystems. Jeśli posiadasz taką mysz, możesz przełączyć ją w ustawienie `3' lub `PC', wstawić ustawienie dla MouseSystems w Xconfigs (patrz poniżej) i mysz powinna doskonale działać w trybie trzyprzyciskowym. 55.. NNoorrmmaallnnee mmyysszzyy Jeżeli nie masz żadnych przełączników i nie masz instrukcji, to trzeba trochę eksperymentować. Po pierwsze spróbuj założyć, że producent myszy mówi prawdę, i mysz obsługuje w pełni tryb Microsoft. Ustaw w Xconfig tak żeby spodziewał się myszy Microsoft (zobacz Xconfig section) i wypróbuj to. Jeśli mysz w ogóle nie działa, wtedy nie jest to mysz Microsoft, lub jest jakiś inny problem. Wypróbuj inne ustawienia w konfiguracji, najlepiej zacząć od dokumenatacji systemowej dla pliku konfiguracyjnego. Także zajrzyj do Różne problemy w rozdziale poniżej. Zauważysz prawdopodobnie, że kiedy uruchomisz X-y, mysz działa doskonale, ale tylko zewnętrzne przyciski coś robią. Możesz to oczywiście zaakceptować i emulować trzeci przycisk ( naciśnij oba przyciski jednocześnie, aby kliknąć środkowy ), tak jak to się robi z myszą dwuprzciskową. Aby to zrobić, zmień swój plik Xconfig jak to pokazano w Xconfig example poniżej. Może to oznaczać, że niepotrzebnie kupiłeś mysz trzyprzyciskową i nie posuwasz się do przodu. A więc, teraz musisz przyjrzeć się swojemu sprzętowi. 66.. PPrrzzeełłąącczzaanniiee mmyysszzyy ww ttrryybb ttrróójjpprrzzyycciisskkoowwyy Nawet tanie myszy mogą pracować w protokole MouseSystems, z wszystkimi trzema przyciskami działającymi. Sztuczka polega na tym, aby mysz myślała, że jest myszą Mouse System, coś co rzadko znajduje się w instrukcjach. ˇ Zanim włączysz zasialanie, przytrzymaj lewy przycisk myszy ( i trzymaj go wciśnięty aż do momentu załadowania systemu, tak dla pewności). Kiedy mysz otrzymuje zasilanie i jeżeli lewy przycisk jest wciśnięty, mysz przełączaa się w tryb MouseSystems. To proste, ale nie zawsze opisywane zjawisko. Zwróć uwagę, że soft reboot komputera może nie odciąć zasialnia myszy i dlatego może nie działać. Jest kilka sposobów przełączania trybu, które mogą działać lub nie z twoim rodzajem myszy. Niektóre z nich są mniej drastyczne niż rebootowanie komputera, a dwa są bardziej ! ˇ Jeśli twój komputer jest dostępny możesz wyciągnąć mysz z gniazda i włożyć ją z powrotem z wciśniętym przyciskiem ( chociaż nie powinno się podłączać urządzeń do włączonego komputera, dokumentacja RS232 powiada, że to jest OK). ˇ Można zresetować mysz wpisując echo "*n" > /dev/mouse, co powinno mieć ten sam efekt co odłączenie jej od komputera. Wciśnij lewy przycisk myszy dla MouseSystems, a nie wciskaj go dla Microsoft. Można to wstawić do któregokolwiek skryptu który używasz do uruchamiania X Window.) ˇ Bob Nichols (rnichols@interaccess.com) napisał mały program w C który robi to samo, i może zadziałać gdy echo "*n" nie działa ( i vice versa ). Możesz znaleźć źródła tego programu w http://kipper.york.ac.uk/src/fix-mouse.c ˇ Ktoś nadesłał wiadomość, że `ClearDTR' w Xconfig jest wystarczające do przełączenia myszy w tryb MouseSystems. ˇ Jeśli jesteś na tyle odważny, otwórz mysz ( pamietaj, że tracisz w ten sposób gwarancję ) i zajrzyj do środka. Niekiedy, mysz moze mieć w środku przełącznik, dla powodu, który jest znany tylko producentowi. W tych tańszych myszach bardziej przwdopodobny jest jumper który można przestawiać. Ten jumper lub przełącznik może mieć identyczną funkcję jak przełącznik `MS/PC' opisywany w ``Switched Mice section'' powyżej. Można stwierdzić, że płytka jest skonstruowana do przełączania między 2 & 3 przyciskami, ale nie została zamocowana. Będzie ona wyglądać jak : ----------- | o | o | o | SW1 ----------- 1 2 3 Spróbuj połączyć piny 1-2 lub 2-3 i sprawdź czy to zmieni zachowanie myszy. Jeżeli tak, to albo możesz zainstalować mały przełącznik albo zalutować to połączenie by uzyskać szybkie i trwałe rozwiązanie. ˇ Inne rozwiązanie z lutowaniem, które może być ostatnią deską ratunku dla myszy, które w ogóle nie rozpoznają MouseSystems, dotępne od : Petera Benie (pjb1008@chiark.chu.cam.ac.uk). Jeśli przełącznik środkowego przycisku jest dwubiegunowy, połącz jedną stronę przełącznika do przełącznika lewego przycisku, a drugą stronę do przełącznika prawego przycisku. Jeśli to nie jest przełącznik dwubiegunowy, wtedy użyj raczej diod niż przewodu. I teraz środkowy przycisk powoduje włączenie lewego i prawego przycisku równocześnie. Wybierz ChordMiddle w XF86Config i już środkowy przycisk działa. ˇ Ostateczne wyjście z użyciem lutownicy zostało mi po raz pierwszy opisane przez Briana Crafta (bcboy@pyramid.bio.brandeis.edu). Dwa typowe układy scalone w myszach to 16-pinowy ZZ88335500 i 18-pinowy HHMM88335500AA. W obu tych układach scalonych, jeden pin ma pod kontrolą tryb pracy myszy w następujący sposób. Pin 3 Mode ----- ---- Open Default Microsoft. MouseSystems jeśli przycisk jest wciśnięty przy włączeniu zasilania. GND Zawsze MouseSystems. Vdd Zawsze Microsoft. ( Piny są ponumerowane w następujący sposób: ) ____ pin1 -| \/ |- pin2 -| |- pin3 -| |- -| |- -| |- -| |- -| |- pin8 -|____|- (Ta informacja prezentowana dzięki uprzejmości Hans-Christopha Wirtha i Juergena Exnera, którzy przysłali ją do de.comp.os.linux.hardware. Możesz przylutować połączenie między pinem 3 i gnd, co spowoduje że mysz będzie działać w trybie MouseSystems. ˇ Peter Fredriksson (peterf@lysator.liu.se) sprawdził chip SYSGRATION SSYYSS22000055, i stwierdził, żę połączenie pinu 3 do Gnd wymusza tryb MouseSystems. ˇ Uli Drescher (ud@digi.ruhr.de) potwierdza, że to działa z chipem HHNN88334488AA. ˇ Urban Widmark (ubbe@ts.umu.se) podaje, że to samo odnosi się do chipa EECC33556677AA11, gdzie pin 8 jest ground. Ja też to sprawdziłem i działa dobrze. ˇ Timo T Metsala (metsala@cc.helsinki.fi) stwierdził z chipem HHTT66551100AA, że pin 3 to mode select, pin 9 jest Gnd. Tak samo działa to z chipem HHTT66551133AA. Holtek także wytwarza chipy HHTT66551133BB i HHTT66551133FF - w nich , pin 8 jest Gnd. ˇ Robert Romanowski (robin@cs.tu-berlin.de) podaje, że pin 3 - pin 8 (Gnd) działa także z chipemEEMM8833770011BBPP. ˇ Robert Kaiser (rkaiser@sysgo.de) potwierdza, że pin 3 - ( Gnd ) działa także z chipem EECC33557766AA11. ˇ Jako alternatywa dla powyższych metod z lutowaniem, można sprawić by mysz sama powodowała wciśnięcie przycisk podczas bootowania : schemat od : Mathias Katzer. ----- --- R ---------O------ + Supply | ----- | | C = 100nF capacitor | | E | R = 100kOhm | __ / | T = BC557 transistor | / \ O | B | #V | T / |-----|-# | / Przełącznik lewego przycisku myszy | | #\ | O | \__/ | --- \ C | --- C ------O----------> (gdzieś głęboko wewnątrz myszy) | ### Ground Testowanym modelem myszy była mysz no-name model MUS2S - czy to działa z innymi modelami myszy zależy od budowy myszy jeżeli, przełącznik jest połączony do ground a nie do +Supply, npn-transistor taki jak BC547 powinien działać, R i C muszą być wtedy także zamienione. To już wszystko, wybór należy do was. Pozostańcie przy dwóch klawiszach trybu Microsoft, albo znajdźcie sposób, aby przełączyć tryb i ustawić tak X-y, aby z tego korzystały. 77.. UUżżyywwaanniiee ggppmm ddoo pprrzzeełłąącczzaanniiaa ttrryybbóóww mmyysszzyy gpm jest programem, który pozwala używac myszy w konsoli. Jest on zazwyczaj dołączany do dystrybucji Linux-owych i można go uruchomić z linii poleceń lub w skrypcie startowym /etc/rc.d/rc.local. gpm stanowi problem dla ludzi używających myszy typu bus, ponieważ blokuje mysz i powoduje, że X-y nie mogą jej używać - ci z nas którzy używają myszy szeregowych nie mają tego problemu. Podstawowe tryby dla myszy szeregowych z gpm to: gpm -t ms gpm -t msc gpm -t help dla trybu Microsoft lub MouseSystems, lub aby przetestować mysz i wyświetlić wyniki. Aby uruchomić mysz w trybie MouseSystems, może byc potrzebna flaga -3 oraz bu\yć może opcja DTR za pomocą flagi -o dtr : gpm -3 -o dtr -t msc gpm często potrafi rozpoznać trzy przyciski myszy nawet w trybie Microsoft. A nowsze wersje ( wersja 1.0 i poźniejsze (?)) potrafią udostępnić tą informację innym programom. By to działało musisz uru­ chomić gpm z flagą -R w ten sposób : gpm -R -t ms To spowoduje reeksport danych myszy do nowego urządzenia, nazywanego /dev/gpmdata, które przypomina mouse dla innych programów. Zwróć uwagę, że to urządzenie zzaawwsszzee korzysta z protokołu Mouse Systems. Można, tak zapisać Xconfig, aby używała tego zamiast /dev/mouse tak jak to pokazano poniżej, ale oczywiście miej na uwadze, aby gpm zawsze działało, kiedy używasz X-ów. Niektórzy pisali, że niektóre event-y X-ów nie są poprawnie interpretowane przez X-y przy użyciu tego sposobu, co może być związane z indywidualnym ustwieniem myszy. ZZmmiiaannaa mmaappoowwaanniiaa pprrzzyycciisskkuu ddllaa ggppmm ii XX (gustafso@math.utah.edu) Można stwierdzić, że gpm używa różne defaultowe mapowanie przycisków dla X, więc używanie obu systemów na tej samej maszynie może być frustrujące. Aby X-y używały tych samych przycisków jak gpm dla operacji wyboru i wklejania zastosuj polecenie X-ów : xmodmap -e "pointer = 1 3 2" co powoduje, że lewy przycisk wybiera, a prawy przycisk wkleja, zarówno w myszach dwu i trzyprzyciskowch. Aby wymusić na gpm użycie standardowego mapowania przycisków, uruchom go z poleceniem -B, np: gpm -t msc -B 132 88.. UUżżyywwaanniiee ddwwóócchh mmyysszzyy W niektórych przypadkach, na przykład w laptopie z wbudowanym urządzeniem wskazującym, ktoś może chcieć używać jako drugiego urządzenia myszy szeregowej. W większości przypadków, wbudowane urządzenie używa protokołu PS/2 i można go pominąć jeśli nie chce się go używać. Po prostu skonfiguruj gpm lub X-y do używania /dev/ttyS0 ( lub innego) w sposób typowy. Aby używać obu jednocześnie, można użyć gpm -M do reeksportu urządzeń. Więcej szczegółów w podręczniku systemowym w rodziale dotyczącym gpm. 99.. PPrrzzyykkłłaaddyy pplliikkóóww XXFF8866CCoonnffiigg ii XXccoonnffiigg Lokalizacja pliku konfiguracyjnego dla X-ów zależy od konkretnej wersji i rodzaju dystrybucji. Prawdopodobnie będzie to albo /etc/Xconfig, /etc/XF86Config albo /usr/X11/lib/X11/XF86Config. Powinieneś zobaczyć, który to jest kiedy uruchomisz X - będzie wypisana na ekranie zanim wszystkie opcje będą wyświetlone. Składnia nieco się różni pomiędzy poszczególnymi plikami XF86Config i Xconfig, więc oba będą tu podane. MMyysszz sszzaarreeggoowwaa MMiiccrroossoofftt ˇ XF86config: Section "Pointer" Protocol "microsoft" Device "/dev/mouse" EndSection ˇ Xconfig: # # Definicja myszy i powiązanych parametrów # Microsoft "/dev/mouse" MMyysszz sszzeerreeggoowwaa MMiiccrroossoofftt zz eemmuullaaccjjąą mmyysszzyy ttrróójjpprrzzyycciisskkoowweejj ˇ XF86config: Section "Pointer" Protocol "microsoft" Device "/dev/mouse" Emulate3Buttons EndSection ˇ Xconfig: # # Definicja myszy i powiązanych parametrów # Microsoft "/dev/mouse" Emulate3Buttons TTrróójjpprrzzyycciisskkoowwaa mmyysszz MMoouusseeSSyysstteemmss ˇ XF86config: Section "Pointer" Protocol "mousesystems" Device "/dev/mouse" ClearDTR # Te dwie linie nie będą prawdopodobnie ClearRTS # potrzebne spróbuj bez, a potem po prostu DTR EndSection ˇ Xconfig: # # Definicja myszy i związane z tym parametry # MouseSystems "/dev/mouse" ClearDTR # Te dwie linie nie będą prawdopodobnie ClearRTS # spróbuj bez a potem po prostu DTR MMiiccrroossoofftt SSeerriiaall MMoouussee zz ggppmm --RR ˇ XF86config: Section "Pointer" Protocol "MouseSystems" Device "/dev/gpmdata" EndSection ˇ Xconfig: # # Definicja myszy i powiązanych parametrów # MouseSystems "/dev/gpmdata" 1100.. KKaabbllee,, pprrzzeeddłłuużżkkii ii pprrzzeelloottkkii Jedyne przewody potrzebne w kablu myszy to: TxD and RxD do przesyłu danych, RTS i/lub DTR dla zasilania i ground. Co przekłada się na numery pinów, w ten sposób: port 9-pinowy port 25-pinowy TxD 3 2 RxD 2 3 RTS 7 4 DTR 4 20 Gnd 5 7 Powyższa tabela może być użyteczna jeśli chcesz robić przelotki między 9- i 25-pinowymi wtyczkami, lub kable przedłużające. 1111.. RRóóżżnnee kkłłooppoottyy ii uussttaawwiieenniiaa ˇ Jeśli masz kłopoty z myszą w X-ach lub konsoli, sprawdź czy nie masz uruchomionego getty na lini szeregowej, albo czegoś innego na przykład modemu. Sprawdź także, konflikty IRQ. ˇ Możliwe że musisz trzymać przyciśnięty lewy przycisk myszy przy starcie X windows. Niektóre systemy moga wysyłać pewien rodzaj sygnału lub piku do myszy, gdy X-y startują. ˇ Kłopoty z urządzeniami szeregowymi mogą zależeć od niewłaściwej inicjalizacji portów szeregowych przy bootowaniu. Jest to wykonywane przez polecenie setserial, uruchamiane z pliku startowego /etc/rc.d/rc.serial. Sprawdź w podręczniku systemowym hasło setserial i /etc/rc.d/rc.serial. aby uzyskać więcej szczegółów. Warto trochę poeksperymentować z typami, na przykład spróbuj setserial /dev/mouse uart 16550 or 16550a niezależnie od rodzaju portu, który naprawdę posiadasz. (Na przykład, myszy nie lubią 16c550AF.) ˇ Flaga ClearDTR może nie działać prawidłowo w niektórych systemach, chyba że wyłączysz RTS/CTS handshaking za pomocą polecenia: stty -crtscts < /dev/mouse (Sprawdzone na UART 16450/Pentium przez Vladimira Geogjaeva geog­ jaev@wave.sio.rssi.ru) ˇ Myszy Logitech mogą wymagać dodania ChordMiddle aby włączyć funkcjonowanie środkowego z trzech przycisków. Ten wiersz zastępuje Emulate3Buttons lub ma być umieszczony za wierszem /dev/mouse w pliku konfigracyjnym. Prawdopodobnie możesz potrzebować linii ClearDTR i ClearRTS w swoim Xconfig. Niektóre myszy Logitech zdecydowanie nie wymagają linii ChordMiddle - objawem tego problemu jest to że menu wydają się poruszać z myszą zamiast skrolowac się w dół. (Od: chang@platform.com) ˇ Zamiana przycisków: użyj polecenia xmodmap do zmiany który rzeczywisty rejestr przycisku jest stosowany przy kliknięciu myszy. np.: xmodmap -e "pointer = 3 2 1" odwróci kolejność przycisków dla lewej ręki. Jeśli masz tylko mysz dwuprzyciskową to są to numery 1 & 2. ˇ Przyśpieszenie: skorzystaj z polecenia xset m aby zmienić ustawienia myszy. np.: xset m 2 ustawi przyśpieszenie na 2. Szczegóły w podręczniku systemowym. ˇ Przesunięcie kursora: jeśli kliknięcie wydaje się znajdować na prawo lub lewo od miejsca gdzie jest kursor, może to zależeć od tego, że ekran jest nieustawiony. Problem ten występuje ze sterownikiem S3, który można naprawić za pomocą xvidtune. Spróbuj Invert_VCLK/InvertVCLK, or EarlySC. Ta informacja pochodzi od Billa Lavendera (lavender@MCS.COM) and Simon Hargrave'a. W XF86Config, może to wyglądać następująco: Subsection "Display" Modes "1024x768" "800x600" "640x480" "1280x1024" Invert_VCLK "*" 1 ... ˇ Jeśli kliknięcia myszy `odbijają się', tj. dwa kliknięcia wtedy kiedy chciałeś kliknąć raz, może coś być nie tak z myszą. Ten problem w wypadku myszy Logitech rozwiązał Bob Nichols (rnichols@interaccess.com) i wymaga lutowania pewnych oporników i ukłdu scalonego aby zapobiec odbijaniu microstyków. ˇ Jeśli niektórzy użytkownicy nie mogą używać myszy, a niektórzy tak (np. administrator) - możliwe jest że użytkownicy nie uruchamiają tego samego - np. różne wersje X-ów lub różne Xconfig. Sprawdź dokładnie komunikaty przy startcie X-ów. ˇ Jeśli stwierdzisz, że wskaźnik myszy wymazuje pewne elementy z ekranu, masz problem z konfiguracją X serwera. Spróbuj dodać opcję linear, lub może nolinear do sekcji karty graficznej lub jeśl ijest to karta PCI opcje tgui_pci_write_off i tgui_pci_read_off. (Wydaje się, że jest to problem z kartami Trident.) ˇ Jeśli kursor myszy nie pojawia się na ekranie, ale poza tym wydaje się działać, spróbuj opcji "sw_cursor" w sekcji Device pliku konfiguracyjnego. ˇ Jeśli mysz przestaje działać wtedy kiedy jest słonecznie lub kiedy włączysz światło, być może czujniki są blokowane przez światło dostające się przez obudowanie. Możesz spróbować pomalowć na czarno wnętrze obudowy, albo włożyć kartonik na jej górę. ˇ Myszy Microsoft są czasem przyczyną kłopotów. O najnowszej ``Microsoft Serial Mouse 2.1A''pisano, że może nie funkcjonować w niektórych systemach, chociaż wyjmownanie z gniazdka i wkładanie znowu może pomóc. Także mysz ``Microsoft Intellimouse''powoduje kłopoty, lecz powinna być wspierana przez XFree w wersji 3.3 lub późniejszej. 1122.. PPrrzzeetteessttoowwaannee mmooddeellee Jest wiele różnych myszy na świecie i nie mogę z czystym sercem powiedzieć, że powinieneś iść i kupić raczej tą mysz, a nie tamtą. To co mogę zrobić to wyliczyć co te myszy potrafią, oparte na doświadczeniu i pogłoskach. Nawet z tymi informacjami ostrożność jest wskazana - mieliśmy w biurze dwie identyczne myszy przy dwóch komputerach i niektóre rzeczy działały z jedną myszą i nie działały z drugą. Wszelkie dodatki do tego wyliczenia będą mile widziane. OOppttyycczznnaa mmyysszz MMoouusseeSSyysstteemmss,, wweerrssjjaa sszzeerreeggoowwaa Działa dobrze (jak możnaby się spodziewać po nazwie!) bez ClearDTR lub ClearRTS w konfiguracji. WWiiNN mmoouussee,, sspprrzzeeddaawwaannaa pprrzzeezz OOffffiiccee WWoorrlldd zzaa oossiieemm ffuunnttóóww.. Standardowa dwutrybowa mysz Microsoft/MouseSystems. AAggiilleerr MMoouussee 22990000 Standardowa dwutrybowa mysz Microsoft/MouseSystems. SYSGRATION SYS2005i układ scalony nadaje się do lutowania. SSiiccooss mmoouussee,, Działa ok, wymaga ClearDTR & Clear RTS w konfiguracji. IInnddeexx sspprrzzeeddaajjąą mmyysszz zzaa 1100 ffuunnttóóww,, Nie działa w trybie 3 przyciskowym, ale ma fajną instrukcję :-) AArrtteecc mmoouussee Zwyczajna mysz o podwójnym protokole, wymaga `ClearDTR' ustawionego w konfiguracji, NIE `ClearRTS' DDyynnaaPPooiinntt 33 pprrzzyycciisskkoowwaa mmyysszz sszzeerreeggoowwaa.. Zwyczajna mysz o podwójnym protokole, wymaga `ClearDTR' I `ClearRTS' w konfiguracji X-ów. GGeenniiuuss EEaassyymmoouussee mmyysszz 33--pprrzzyycciisskkoowwaa Doskonale działa w protokole Mouseman bez ustawiania parametru ChordMiddle. Od Roderick Johnstone (rmj@ast.cam.ac.uk) TTrruueemmoouussee,, mmaaddee iinn TTaaiiwwaann Działa OK, wymaga `ClearDTR' w konfiguracji. (Od Tim MacEachern) MMyysszz mmaarrkkii CChhaammpp Wymaga przełączenia w tryb PC, co uaktywnia także protokół MouseSystems. (Od tnugent@gucis.cit.gu.edu.au) MMyysszz MMiiccrrooSSppeeeedd Zwykła mysz o podwójnym protokole. MMyysszz mmaarrkkii VVeennuuss (($$77)) Ma w śrokdu przełącznik między trybem 2 i 3 przyciskowym. (Od mhoward@mth.com ) SSaattuurrnn Mysz z przełącznikiem, działa OK jako mysz MouseSystems w pozycji 3-przyciskowej. (Od grant@oj.rsmas.miami.edu .) MMaannhhaattttaann mmoouussee.. Jest przełącznik trybów `MS AM' / `PC AT', tryb MS działa doskonale z rozwiązaniem z gpm -R. (Od komanec@umel.fee.vutbr.cz). MMyysszz IInnllaanndd.. Przełącznik dla trybów `PC/MS', działa doskonale. (Od http://ptsg.eecs.berkeley.edu/~venkates). qqMMoouussee ((33--pprrzzyycciisskkoowwaa)),, FFCCCC IIDD EE66qqmmoouussee XX3311.. Sprzedawana w USA za około $10. działa z `gpm -t msc -r 20'. Nie ma jumper-ów lub przełączników do 3-przyciskowego trybu MouseSystems. Nie jest godna polecenia w X. Nie reaguje na echo "*n" > /dev/mouse. MMiittssuummii MMoouussee ((22--pprrzzyycciisskkoowwaa)),, FFCCCC IIDD EEWW44EECCMM--SS33110011.. Sprzedawana w USA za około $12. Godna polecenia w X i w gpm, łagodny klik. (Te dwa od gustafso@math.utah.edu) MMyysszzyy PPCC AAcccceessssoorriieess kkttóórree kkuuppiiłłeemm ww CCoommppUUSSAA ppoonniiżżeejj $$1100.. Ma przełącznik PC/MS na spodzie. Działa OK. (Od steveb@communique.net) FFiirrsstt MMoouussee -- nnaapprraawwddęę ttaanniioo zzaa 77..7799 ffuunnttóóww ww TTeemmppoo.. Dwutrybowa mysz Microsoft/MouseSystems, tryb ustawiany przez wciśnięcie przycisku przy włączeniu zasilania. Nie ma przełączników, ani połączeń. Cztero kablowe połącznie, echo '*n' nie działa. `gpm -R' działa wspaniale. (Od peterk@henhouse.demon.co.uk) MMyysszz 33--pprrzzyycciisskkoowwaa TTrruusstt.. O dwóch trybach z przełącznikiem, działa dobrze jako MouseSystems w trybie `PC'. gpm gryzie się z trybem Microsoft. CChhiicc 441100 działa doskonale w ustawionym trybie ms i przy użyciu polecenia gpm -R Od Stephena M. Weissa (steve@esc.ie.lehigh.edu) TTrrzzyypprrzzyycciikkoowwaa mmyysszz KKeeyyMMoouussee.. działa prawidłowo z ClearDTR i ClearRTS w Xconfig; w gpm konieczne `-o dtr' . (Od EZ4PHIL@aol.com) KKllaawwiiaattuurraa QQttrroonniixx ``SSccoorrppiioo 6600'' Wszystkie trzy przyciski działają w protokole MouseSystems. (Od hwe@uebemc.siemens.de) LLaappttoopp TTeeccrraa 772200 Glidepoint jest na /dev/cua0; rysik na /dev/psaux. (Od apollo@anl.gov) MMyysszz AAnnuubbiiss Działa doskonale, wymaga przytrzymywania lewego przycisku przy przełączaniu do wirtualnej konsoli X. (Od Joel Crisp) YYaakkuummoo NNoo..11990000 mmoouussee Działa z eksportem do X-ów gpm -R -t ms. (Od Oliver Schwank) GGeenniiuuss ``EEaassyy TTrraakk'' TTrraacckkbbaallll NNiiee jest zgodna z trybem Microsoft, użyj Mouseman w konfiguracji X-ów i będzie działać doskonale. (Od VTanger@aol.com.) HHiigghhssccrreeeenn MMoouussee PPrroo `Działa doskonale' twierdzi alfonso@univaq.it. LLooggiitteecchh CCAA sseerriieess Działa w X-ach używając protokołu MMseries, przy 2400 Baud, 150 SampleRate. (Powinno też odnosić się do myszy Logitech CC, CE, C7 & C9). (Od vkochend@nyx.net.) MMyysszz AA44--TTeecchh Działa OK, wymaga wiersza DTR pod X-ami i gpm. (Od deane@gooroos.com) MMyysszz VVeerrtteecchh Prawidłowe zachowanie Microsoft/Mousesystems, można zalutować do ustawienia na stałe. (Od duncan@fs3.ph.man.ac.uk.) BBooeeddeerr MM--77 ````BBiitt SSttaarr'''' ((ii iinnnnee zz sseerriiii MM oopprróócczz MM1133)) Przełącza się w tryb Mousesystems trzymając lewy przycisk przy włączaniu zasilania. (Od mailto:sjt@tappin.force9.co.uk.) MMoouussee SSyysstteemmss ````SSccrroollll'''' MMoouussee ((cczztteerryy pprrzzyycciisskkii ii rroolllleerr//pprrzzyycciisskk)) Ma przełącznik 2/3 - w trybie 3 działa jako trzyprzyciskowa mysz MouseSystems, bez działającego dodatkowego przycisku & kółka. Nie wymaga ClearDTS/DTR. (Od parker1@airmail.net.) MMyysszz SSzzeerreeggoowwaa 33--pprrzzyycciisskkoowwaa RRaaddiioo SShhaacckk Model 26-8432, dostępny w Tandy za około 20 funtów. Działa jako Mousesystems z ClearDTR. (Od Sherilyn@sidaway.demon.co.uk.) 1133.. DDaallsszzee iinnffoorrmmaaccjjee ˇ MouseSystems ma serwer internetowy http://www.mousesystems.com/. Mają tam sterownik do Windows, jeżeli takiego potrzebujesz. ˇ The Linux Serial HOWTO jest dostępne na serwerach sunsite na całym świecie. Jeśli nie wiesz gdzie jest twój najbliższy mirror, zacznij od http://sunsite.unc.edu/mdw/linux.html ˇ Istnieje bardzo dobry opis jak działają myszy w http://box.argonet.co.uk/users/4qd/faq/meece.html. ˇ Więcej szczegółów o plikach Xconfig i X86Config, dostępnych jest w podręczniku systemowym, i w dokumentacji o instalacji X window takiej jak XFree86 HOWTO. Zobacz także XFree86 FAQ na serwerze lustrzanym http://www.XFree86.org/. ˇ Informacje o gpm można znaleźć w podręczniku systemowym, spróbuj także na stronie internetowej Darina Ernsta http://www.castle.net/X-notebook/mouse.txt. ˇ Dużo informacji o oprogramowaniu i sprzęcie związanym z myszami można znaleźć w http://www.hut.fi/Misc/Electronics/pc/interface.html#mouse 1144.. OOggoonn mmyysszzyy Większość informacji w tym dokumencie została zaczerpnięta z różnych linuksowych grup dyskusyjnych. Przepraszam, że nie umieściłem informacji o wszystkich, którzy pośrednio przyczynili się w ten sposób, dziękuję bardzo wam wszystkim. Podsumowując : ˇ Można używać nawet tanich trzyprzciskowych myszy typu Microsoft. ˇ Skonfiguruj X Window, tak aby spodziewała się myszy Mouse Systems. ˇ Trzymaj wciśnięty lewy przycisk przy starcie systemu, aby przełączyć mysz w tryb MouseSystems. ˇ może być konieczne wciśnięcie lewego przycisku przy starcie X-ów. ˇ Myszy są bardziej inteligentne niż sądzisz. doc-linux-pl-2002.06.14.orig/mini/Advocacy.pl.txt0100664000175000017500000004623307104371340020240 0ustar covencoven Linux Advocacy mini-HOWTO autor: Paul L. Rogers, Paul.L.Rogers@li.org v0.4, 6 Luty 1997 WWeerrssjjaa ppoollsskkaa:: JJaannuusszz BBaattkkoo,, JJaannuusszz..BBaattkkoo@@kkrraakkooww..lliinnuuxx..oorrgg..ppll vv00..11,, 2211 KKwwiieecciieeńń 11999988 Dokument ten jest zbiorem wielu rad i sugestii dotyczących tego jak efektywnie może promować i rozpowszechniać Linuxa jego społeczność (czyli każdy dotychczasowy użytkownik Linuxa, chcacy zrobić coć kon­ struktywnego dla idei popularyzowania tego systemu - przypis tłumacza) ______________________________________________________________________ Spis treści 1. Informacje o tym dokumencie 2. Prawa autorskie - informacje. 3. Wprowadzenie. 4. Pomocne Informacje. 5. Promowanie Linuxa 6. Kanony Zachowania 7. Grupy Użytkownikow 8. Kontakty ze Sprzedawacami 9. Kontakty z Mediami 10. Podziękowania. 11. Od tłumacza. ______________________________________________________________________ 11.. IInnffoorrmmaaccjjee oo ttyymm ddookkuummeenncciiee Dokument ten to Linux Advocacy mini-HOWTO. Jego intencją jest dostarczenie ogólnych zaleceń i wytycznych jakie powinny towarzyszyć twoim staraniom slużącym promowaniu Linuxa. To mini-HOWTO zostało zainspirowane przez Jona ``maddog'' Halla w momencie gdy zareagował on na potrzebę opracowania wytycznych slużących promowaniu Linuxa podczas Netday96 . Pozytywnie przyjął on plan wytycznych i spostrzegł, że były one podstawą ``kanonow zachowania'', mogących przynieść pożytek społeczności linuxowej. Dokument ten jest dostępny w formacie HTML pod adresem http://www.datasync.com/~rogerspl/Advocacy-HOWTO.html . Net Makarevitch tłumaczy obecnie ten dokument na język francuski. Chie Nakatani przetłumaczył ten dokument na język japoński . Janusz Batko przetłumaczył ten dokument na język polski . Autorem i pomyslodawca Linux Advocacy mini-HOWOT jest Paul. L. Rogers . Wszelkie komentarze i propozycje odnosnie tego dokumentu sa mile widziane. Jesli potrzebujesz wiedziec wiedzej na temat Linux Documantion Project (LDP) lub Linux HOWTO's, skontatkuj sie z administratorem - Gregiem Hankinsem gregh@sunsite.unc.edu. Greg Hankins wysyła ten dokument na poszczególne narodowe i międzynarodowe grupy newsowe przeważnie raz w miesiącu. 22.. PPrraawwaa aauuttoorrsskkiiee -- iinnffoorrmmaaccjjee.. To mini-HOWTO jest własnością Paula L. Rogersa. Copyright (c) 1996 by Paul. L. Rogers. Wszelkie prawa zastrzezone. Oryginalna kopia może być odtworzana lub rozpowszechniana na dowolnym nośniku fizycznym lub elektronicznym bez zgody autora. Tłumaczenia są dozwolone bez wyrażenia przyzwolenia, jeśli tylko zawierają informacje kto dokonał tłumaczenia. Krótkie cytaty mogą być użyte bez uprzedniej zgody autora. Prace oparte na lub cześciowe dystrybucje Advocay mini-HOWTO muszą być załączone albo z orygialna kopią tego pliku albo ze wskazaniem na taką kopię. Komercyjne rozpowszechanienie jest dozwolone i wręcz zalecane, jednakże autor życzy sobie być poinformowany o tym. Innymi słowy, pragniemy rozpowszechniać zawarte tu informacje na wszystkie możliwe sposoby i wszelkimi możliwymi drogami, jednakże, chcemy przy tym zachować prawa autorskie. Chcielibyśmy także być informowani o wszelkich planach rozpowszechniania HOWTOs. Pragniemy także by wszystkie informacje zawarte w HOWTOs były poszerzone. Jeśli masz pytania, skontaktuj się proszę z Gregiem Hankinsem, koordynatorem HOWTO, pod adresem gregh@sunsite.unc.edu. 33.. WWpprroowwaaddzzeenniiee.. Społeczność Linuxa ma świadomosc tego, że dla całego mnóstwa aplikacji Linux jest stabilnym, solidnym, pewnym i niezawodnym produktem. Niestety, jest wciąż wielu ludzi, również tych będących na kierowniczych stanowiskach, którzy nie zdają sobie sprawy z istnienia Linuxa i jego zalet. Jeśli Linux i wiele innych elementów, które tworzą dystrubucję Linuxa mają osiagnąć swój pełny potencjał, jest bardzo ważne abyśmy zdobyli przyszłych klientow i zalecali (będąc ostrożnym by nie obiecywać za dużo) używanie Linuxa dla konkretnych, właściwych aplikacji. Należy pamiętać, że przyczyną, dla której wiele firmowych produktów sprzedaje się dobrze na rynku, nie jest wcale ich wyższość techniczna, lecz zdolności marketingowe firmy wypuszczajacej ten produkt. Jeśli jesteś zadowolony używajac Linuxa i chciałbyś się przyczynić w jakiś sposób dla społeczności linuxowej, weź proszę pod uwagę działania w jednej lub wielu kwestiach zawartych w tym mini-HOWTO i pomoc innym nauczyć się czegoś wiecej o Linuxie. 44.. PPoommooccnnee IInnffoorrmmaaccjjee.. Lars Wirzenius, moderator comp.os.linux.announce, ma równiez pewne spostrzeżenia na temat skutecznego promowania Linuxa. Celem Linux International jest promocja i rozwój Linuxa. The Linux Documentation Project to nieocenione, bardzo bogate i cenne źródło informacji pomocne w promowaniu Linuxa. The Linux Business Applications to forum organizacji zajmujących się Linuxem w codziennych działaniach biznesowych, służące dzieleniu się doświadczeniami związanymi z używaniem i promocją Linuxa w zastosowaniach komercyjnych. Celem The Linux Advocacy Project's jest zachęcanie twórcow aplikacji komercyjnych by swoje oprogramowanie dostarczali także w wersjach dedykowanych dla Linuxa. Program The Linux CD and Support Giveaway pomaga w szerokim udostępnianiu Linuxa poprzez zachęcanie do wielokrotnego używania CD- ROMow z Linuxem. Specialized Systems Consultants, Inc. (SSC) jest wydawcą Linux Journal jak również Linux Gazette - pisma online, dostępnego tylko w postaci elektronicznej. 55.. PPrroommoowwaanniiee LLiinnuuxxaa ˇ Dziel się twoimi osobistymi doświadczeniami (dobrymi i złymi) dotyczacycymi Linuxa. Każdy wie, że oprogramowanie posiada rozmaite drobne błedy i ograniczenia, jeśli więc będziemy przedstawiać Linuxa wyłącznie w superlatywach, nie zachowamy się do końca uczciwie. Uwielbiam mówic ludziom, że musiałem resetowac moją maszynę cztery razy (w tym trzech przypadkach był to przewidziany i zaplanowany restart systemu) w czasie trzech lat. ˇ Jeśli ktoś ma problem, dla którego zastosowanie Linuxa może być rozwiązaniem zaproponuj dostarczenie wskazań na konkretne i właściwe informacje (strony WWW, artykuly prasowe, książki, konsultantow, itd.). Jeśli nie sprawdziłeś zaproponowanego rozwiązania w praktyce, powiedz o tym. ˇ Oferuj swą pomoc tym, którzy właśnie zaczynają używanie Linuxa. ˇ Próbuj odpowiadać na jeden list tygodniowo od początkujących użytkowników. Szukaj trudnych pytań, może być tak, że będziesz jedyną osobą, która jest w stanie odpowiedzieć na dane pytanie Staraj się więc w takich sytuacjach udzialać właściwej odpowiedzi - masz przy tym szanse sam się czegoś nauczyć. Jednakże, jeśli nie jesteś pewien czy możesz udzielić poprawej odpowiedzi, postaraj się znaleźć kogoś kto to potrafi. ˇ Szukaj małych firm tworzących oprogramowanie i zaoferuj im prezentację Linuxa. ˇ Jeśli pojawi się możliwość, dokonaj prezentacji u twojego pracodawcy dla dzialu Informacji Technologicznej. (W polskich warunkach punkt ten może być trochę niejasny, w niewielu bowiem naszych firmach istnieje osobny dział, który zajmuje się wyszukiwaniem nowinek technologicznych dostępnych na rynku a atrakcyjnych z punktu widzenia firmy. Autor tutaj miał na myśli sytuację, w której przy nadażającej się okazji powinieneś zorganizować prezentację możliwości Linuxa w firmie, w której pracujesz, przed ludźmi odpowiedzialnymi za wyszukiwanie na rynku nowych technologii i decydującymi o ich wprowadzeniu w firmie. - przypis tłumacza). ˇ Bierz udział w wydarzeniach społecznosci linuxowej takich jak NetDay96 - . Dopóki twoim głównym zadaniem jest współudzial w sukcesie wydarzenia, korzystaj z okazji by zapoznać innych z tym, co Linux może zrobić dla nich. (Także w Polsce odbywają się takie wydarzenia, np.: LinuxPro odbywający się w grudniu każdego roku, czy chociażby spotkania PLUG. Informacje o LinuxPro są dostepne u organizatora - w firmie Software , natomiast o PLUG pod adresem http://www.linux.org.pl - przypis. tłumacza). ˇ Zawsze weź pod uwagę punkt widzenia osób, którym ``sprzedajesz'' Linuxa. Wsparcie, stabilność, przenośność i cena to czynniki, które ludzie podejmujący ważne decyzje muszą wziąć pod uwagę. Jednak z tego wszystkiego cena jest często najmniej istotną składową całego rachunku za i przeciw. ˇ Podkreślaj fakt, że powstawanie wolno dostępnego oprogramowania odbywa się w środowisku otwartej współpracy pomiędzy projektantami systemów, programistami, twórcami dokumentacji, testarami alfa/beta i końcowymi użytkownikami. Ten stan rzeczy owocuje znakomicie udokumententowanymi i wręcz perfekcyjnymi produktami jak Emacs, Perl i jądro Linuxa. ˇ Informuj o sukcesach w promocji Linuxa Linux International (li@li.org) i podobne organizacje. ˇ Znajduj nowe miejsca dla CD-ROMow z Linuxem i książek, których ty sam już nie potrzebujesz. Przekaż je komuś zainteresowanemu Linuxem, bibliotece publicznej lub szkolnemu klubowi komputerowemu. Książki i dołączane do nich CD-ROMy będa bardzo odpowiednie dla bibiotek. Jednakże, bądź przy tym pewny, że przekazane przez ciebie oprogramowanie na CD-ROMach i ich publiczne udostępnianie jest zgodne z postanowieniami licencji lub z prawem autorskim. Poinformuj również personel biblioteki, że materiały na CD-ROMach są wolno dostępne i upewnij się czy rzeczywiście znajdują się one na półkach i każdy ma do nich dostęp. ˇ Kiedy kupujesz książki o oprogramowaniu rozpowszechnianym z Linuxem, staraj się preferować te pozycje, które są napisane przez autorow danego oprogramowania. To swoista lojalność przynosi autorom ze sprzedaży książki pienieżne wynagrodzenie za ich wysiłek i zachęca oraz inspiruje do dalszej pracy. 66.. KKaannoonnyy ZZaacchhoowwaanniiaa ˇ Jako reprezenant społeczności linuxowej, bierz udział w listach (mail list) i grupach dyskusyjnych (newsgroup) w profesjonalny sposób. Wstrzymuj sie od używania slangu i wulgarnego języka. Popatrz na siebie, jako członka wirtualnej koporacji z panem Torvaldsem jako szefem. Twoje słowa będą albo wywyższać albo degradować wizerunek społeczności linuxowej wśród uczestników dyskusji. ˇ Unikaj wyolbrzymiania i nieskonkretyzowanych pretensji. Jest to bardzo nieprofesjonalne i obniża poziom dyskusji. ˇ Przemysłane, dobrze umotywowane odpowiedzi w twoich listach będą dostarczać nie tylko wnikliwości twoim czytelnikom, ale bądą także zwiększać ich respekt dla twojej wiedzy i zdolności. ˇ Nie ulegaj emocjom, jeśli cię ktoś prowokuje. Unikaj kłótni i sprzeczek. Zbyt wiele wątków dyskusyjnych degeneruje się do poziomu argumentów typu: ``Moj system oparacyjny jest lepszy niż twój''. Opisz jedynie możliwości Linuxa i poprzestań na tym. ˇ Zawsze pamiętaj, że jeśli obraziłeś lub poniżyłeś kogoś, jego negatywne doświadczenia moga się przenieść innych. Jeśli znieważyłeś kogoś, spróbuj to naprawić swój błąd i zadośćuczynić. ˇ Skupiaj się na tym co Linux ma do zaoferowania. Nie potrzeba tu mówic o kompetencjach. Mamy dobry, solidny produkt, który świadczy sam za siebie. ˇ Miej respekt dla innych systemow operacyjnych. Mimo, iż Linux jest wspaniałą platformą, nie zaspakaja potrzeb każdego. ˇ Odwołuj się do innych produktów poprzez ich właściwą nazwę. Nie ma nic do zyskania w próbach ośmieszenia firmy lub jej produktu przez używanie tzw. `tworczej mowy''. Jeśli oczekujemy respektu dla Linuxa, musimy mieć respekt w stosunku do pozostałych produktów. ˇ Doceniaj to co jest tego warte (a co często jest także niedoceniane). Linux to tylko jądro. Bez wysiłków ludzi biorących udział w projektach GNU, MIT, Berkeley i w innych - zbyt licznych by je tu wymianiać, jądro Linuxa nie byłoby specjalnie użyteczne dla tak wielu ludzi jak ma to miejsce obecnie. ˇ Nie upieraj się przy tym, że Linux jest jedyną odpowiedzią dla wymagających aplikacji. Właśnie tak jak społeczność linuxowa miłuje sobie wolność, którą Linux im dostarcza, tak rozwiązania powiązane koniecznie tylko z Linuxem pozbawiają innych tej wolności. ˇ Sa powody, dla których Linux nie jest w każdym przypadku odpowiedni. Najpierw rozpoznaj problem i zaproponuj inne rozwiązanie. 77.. GGrruuppyy UUżżyyttkkoowwnniikkooww ˇ Bierz udział w działaniach lokalnych grup użytkowników. Jeśli nie ma takiej w twojej okolicy, zaloż sam taką grupę. Informacje na stronach The Groups of Linux Users pozwolą ci poszukać grupę użytkowników z twojej okolicy, zawierają także sugestie jak założyć nową grupę użytkowników. (W Polsce istnieje grupa użytkowników Linuxa pod nazwa PLUG (oraz jej lokalne oddziały, np. CLUG, SLUG: ˇ PLUG - Polish Linux Users Group - http://www.linux.org.pl ˇ CLUG - Cracow Linux Users Group - http://www.krakow.linux.org.pl ˇ SLUG - Silesia Linux Users Group - http://www.silesia.linux.org.pl - przypis tłumacza). ˇ Zapewnij ludzi gotowych udzielać informacji, porad, itp. dla organizacji zainteresowanych Linuxem. ˇ Wydawaj oświadczenia prasowe o twoich działaniach dla lokalnych mediow. ˇ Z własnej inicjatywy, bezinteresownie podejmuj wysiłki w celu jak najlepszego wykorzystania Linuxa dla spełnienia potrzeb organiazacji działajacych w pobliskich społecznosciach. Pamietaj, by zapewnic przy tym przeszkolenie w korzystaniu z systemu i właściwą dokumentację niezbędną na bierzącą opiekę nad system. ˇ Dyskutuj o Linux Advocacy mini-HOWTO na spotkaniach. Dokładaj starań zarazem, by spotkania takie przeradzały się w burze mozgów i kuźnie nowych pomyslow. 88.. KKoonnttaakkttyy zzee SSpprrzzeeddaawwaaccaammii ˇ Kiedy rozważasz zakup sprzętu, zapytaj sprzedawcę o obsługę dla Linuxa i o doświadczenia innych użytkownikow oferowanego przez niego produktu w środowisku Linuxa. ˇ Weź pod uwagę pomoc dla sprzedawców, którzy sprzedają oparte na Linuxie produkty i usługi. ˇ Wspieraj sprzedawców, którzy przeznaczaja cześć swoich dochodów na organizacje takie jak ˇ Free Software Foundation ˇ Linux Development Grant Fund ˇ XFree86 Project ˇ Software in the Public Interest. Jeśli możesz, przeznacz od siebie jakąś pomoc dla organizcji, które wspierają wolno dostępne oprogramowanie. ˇ Jeśli potrzebujesz aplikacji, która nie ma obsługi pod Linuxem, skontaktuj się ze sprzedawcą i zażądaj wersji przeznaczonej dla Linuxa. 99.. KKoonnttaakkttyy zz MMeeddiiaammii ˇ Linux International kolekcjonuje materiały prasowe , dotyczące Linuxa, GNU lub wolno redystrybułowanego oprogramowania. Jeśli zobaczysz gdzieś takie materiały, napisz proszę informacje zawierającą poniższe dane na adres clipping@li.org: ˇ Nazwa publikacji ˇ Kontaktowy adres wydawcy ˇ Dane o autorze ˇ Kontaktowy adres autora ˇ Tytuł artykułu ˇ Numer strony, na której zaczyna sie artykuł ˇ Adres URL jeśli publikacja jest dostępna online (w sieci) ˇ Streszczenie artykułu, wraz z twoją opinia Jeśli uważasz, że Linux nie jest dobrze potraktowany w tym artykule, wyślij dokładniejsze informacje, załączajac powyższe na adres li@li.org. Właściwa odpowiedź będzie przesłana wydawcy. Jeśli sam bezpośrednio skontaktujesz się z wydawcą, staraj się zachować jak profesjonalista. Bądź pewny przy tym, że twoje zastrzeżenia są dobrze umotywowane. 1100.. PPooddzziięękkoowwaanniiaa.. Duże podziękowanią nalezą się wszystkim, w tym: Jon "maddog" Hall Greg Hankins Eric Ladner Chie Nakatani Nat Makarevitch Martin Michlmayr Idan Shoham Adam Spiers C. J. Suire Lars Wirzenius 1111.. OOdd ttłłuummaacczzaa.. Copyright (c) by Janusz Batko (1997) Autorem powyższego tłumaczenia jest Janusz Batko: Autor zastrzega sobie wszelkie prawa do powyższego tłumaczenia. W ramach tych praw dozwolone jest dowolne kopiowanie i rozpowszechnianie tego dokumentu, także w celach komeryjnych (tutaj jednak autor pragnałby być o tym poinformowany). Autor tłumaczenia nie ponosi żadnej odpowiedzialoności za wszelkie szkody powstałe w wyniku korzystania z tego tłumaczenia. Jeśli znajdziesz w moim tłumaczeniu jakiekolwiek błedy (np. ortograficzne, techniczne, rzeczowe, gramatycze, składniowe itd.) to proszę napisz do mnie: Janusz.Batko@krakow.linux.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu _p_u_b_/_L_i_n_u_x_/_J_T_Z_/_. Kontakt z naszą grupą, grupą tłumaczy možesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl _(_w_. _0_._0_1 _* _S_o_b_o_t_a _* _2_5 _c_z_e_r_w_i_e_c _* _1_6_:_3_4_:_4_4 _* _1_9_9_7 _* _K_r_a_k_ó_w _* _W_e_r_s_j_a _p_o_l_s_k_a_) doc-linux-pl-2002.06.14.orig/mini/ApplePrint.pl.txt0100664000175000017500000010437707104371340020571 0ustar covencoven Jak ustawić drukarkę używającą AppleTalk Autor: Werner Eugster, eugster@giub.unibe.ch WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.01, 26 Lipca 1997 Jako użytkownik Linux-a chcesz mieć dostęp do drukarek Mac-a takich jak LaserWriter siedzących na sieci z kontrolerem EtherTalk. Jako użytkownik Mac-a chcesz mieć dostęp do wszystkich drukarek na Linux- ie. Aby ustawić taki serwis na Linux-ie musisz postępować według tej samej procedury w obu przypadkach. Po skompilowaniu i zainstalowaniu oprogramowania AppleTalk nneettaattaallkk (jeśli tego nie zrobiłeś, to przeczytaj najpierw Podręcznik instalacji atalk napisany przez AAnnddeerrssaa BBrroowwnnwwoorrtthhaa) pewnie już uruchomiłeś wszystkie demony poprzez rc.atalk w swoim katalogu /etc. Ale najpierw upewnij się, że serwis AppleTalk rzeczywiście działa zanim zaczniesz konfigurować drukarki. Ja używam netatalk w wersji 1.3.3 z łatami opisanymi w Przewodniku instalacyjnym Andersa Brownwortha. Powiedziano mi, że ścieżka do filtrów netatalk zmieniła się w nowszych wersjach. 11.. MMoojjaa ssttrreeffaa AApppplleeTTaallkk.. Napisz /usr/local/atalk/bin/getzones, aby sprawdzić czy wszystkie strefy AppleTalk są widziane przez Linux-a. Powinieneś widzieć przynajmniej jedną nazwę, która jest twoją strefą lokalną, w innym przypadku bardzo prawdopodobne jest, że twój serwis AppleTalk nie działa poprawnie. Ja dostaję coś takiego (tylko kilka pierwszych linii): Pingo$ /usr/local/atalk/bin/getzones | more VLSB LSB-Integrative Biology LSB-Biology Library LSB-Herbaria LSB-UCMP LSB-MVZ Vanishing Packets MIP Barker Hall Przy pomocy opcji dowiesz się która jest twoją strefą: Pingo$ /usr/local/atalk/bin/getzones -m VLSB Pingo$ Tak więc moją strefą lokalną jest VLSB, kompletną listę wszystkich lokalnych stref można uzyskać przy pomocy opcji -l (w razie gdy twoja drukarka nie jest w twojej strefie musisz znać dokładną nazwę strefy). 22.. DDoowwiieeddzz ssiięę jjaakkaa jjeesstt nnaazzwwaa ddrruukkaarrkkii.. Jeśli chcesz tylko, aby lokalna drukarka UNIX-owa była dostępna dla klientów AppleShare, to przeskocz tę sekcję i idź do ``sekcji nr 3''. Najpierw musimy się dowiedzieć jak są zdefiniowane nazwy Internetowe w AppleTalk. Jest to bardzo podobne do tego co znasz ze swojego Linux-a. Nazwy występują w formie: objekt:typ@strefa. Jeśli nie zależy ci na nazwie strefy lokalnej to użyj @*. Tak więc, aby znaleźć wszystkie objekty w twojej strefie, napisz /usr/local/atalk/bin/nbplkup, co wypluje wielką listę, z elementami jak ten: Pingo$ /usr/local/atalk/bin/nbplkup |more Sun ValleyUs Macintosh:Macintosh IIsi 12398.245:253 Sun ValleyUs Macintosh:Workstation 12398.245:4 IB Instructional Support: Power Macintosh 12398.196:253 IB Instructional Support:Workstation 12398.196:4 centris 660AV: Macintosh 12398.51:253 centris 660AV:Workstation 12398.51:4 Chapin Lab vx - JoeC:Macintosh IIvx 12398.101:253 Chapin Lab vx - JoeC:Workstation 12398.101:4 Pingo Mac Printer:LaserWriter 12398.164:129 Pingo Default Printer:LaserWriter 12398.164:128 Pingo:AFPServer 12398.164:130 Pingo:netatalk 12398.164:4 Pingo:Workstation 12398.164:4 Lucicutia:AFPServer 12398.123:248 Theobald Chapin, III:LaserWriter 12398.73:191 Jeśli chcesz znać tylko objekty konkretnego typu jak LaserWriter, musisz użyć /usr/local/atalk/bin/nbplkup :LaserWriter. Upewnij się, że wstawiłeś dwukropek, który oznacza, że chcesz znać tylko objekty typu LaserWriter. Słowo nie może zawierać dużych liter, ale nie możesz ominąć spacji. Tak więc, żeby zobaczyć Macintosh IIvx musisz wstawić nazwę typu w cudzysłowia: Pingo$ /usr/local/atalk/bin/nbplkup :"Macintosh IIvx" Chapin Lab vx - JoeC:Macintosh IIvx 12398.101:253 Pingo$ Dobra. Krótko: Chcę móc drukować z mojego Linux-a na LaserWriter o nazwie Theobald Chapin, III. Zanim spróbujesz ustawić printcap dla kolejki tej drukarki, upewnij się czy masz dostęp do tej drukarki. Napisz /usr/local/atalk/bin/papstatus -p "Theobald Chapin, III" (zauważ, że cudzysłowia służą tylko temu, aby poinformować twoją powłokę, iż Theobald Chaplin, III to jeden argument a nie trzy) i powinieneś otrzymać coś takiego: status: idle Jeśli nie, to sprawdź czy AppleTalk rzeczywiście działa (może demon nie jest uruchomiony ? Sprawdź tak: ps -xa | grep atalkd i ps -xa | grep afpd). Ponieważ LaserWriter spodziewa się PostScriptu, powinieneś mieć pod ręką krótki plik testowy w PostScripcie. Nazwa mojego pliku to: test.eps i mogę go wysłać bezpośrednio do Theobald Chaplin, III uruchamiając klienta drukowania AppleShare: /usr/local/atalk/bin/pap -p "Theobald Chapin, III":LaserWriter@VLSB test.eps Zauważ, że dołaczyłem nazwę strefy tylko po to, żeby się upewnić, że wszystko działa dobrze. Jeśli twoje zadanie drukowania się pojawi (co sekundę - czy jakoś tak - otrzymasz komunikat jeśli ktoś inny używa drukarki w tym samym momencie. Obserwuj odpowiedź twojej drukarki i co robi kiedy zacznie drukować twój plik). Jeśli będziesz miał jakieś kłopoty, użyj aecho, aby sprawdzić objekty AppleTalk w ten sam sposób jakbyś używał ping-a przez TCP/IP (Ctrl-C zatrzymuje aecho): /usr/local/atalk/bin/aecho "Theobald Chapin, III":LaserWriter@VLSB 14 bytes from 12398.73: aep_seq=0. time=15. ms 14 bytes from 12398.73: aep_seq=1. time=14. ms 14 bytes from 12398.73: aep_seq=2. time=14. ms 14 bytes from 12398.73: aep_seq=3. time=14. ms ----12398.73 AEP Statistics---- 5 packets sent, 4 packets received, 20% packet loss round-trip (ms) min/avg/max = 14/14/15 Pingo$ Powinieneś stracić tylko ostatni pakiet przy przerwaniu Ctrl-C, w innym wypadku coś jest nie talk z twoim połączeniem. 33.. UUssttaawwiiaanniiee sseerrwwiissuu ddrruukkoowwaanniiaa nnaa LLiinnuuxx--iiee.. Będą dwa kroki. Najpierw upewnisz się, że możesz drukować na Linux-ie potem upewnisz się, że ta drukarka jest dostępna dla klientów AppleShare. Mówiąc jaśniej: najpierw ustawisz swoją drukarkę, żeby była dostępna dla UNIX-a (lpd - demona drukowania) (sekcja 3.1 do 3.2), a potem udostępnisz ją innym użytkownikom w strefie AppleTalk (sekcja 3.3) co jest oczywiście opcjonalne. Wielu ludzi nie lubi ustawiania z dwóch powodów: drukarka AppleTalk jest już dostepna w strefie AppleTalk, to użytkownicy Mac-ów mogą się do niej bezpośrednio dołączyć. Więc nie ma potrzeby istnienia kolejki na Linux-ie. Jednak ja jestem użytkownikiem Linux-a i chcę mieć dostęp do tej drukarki i dlatego mój poniższy opis robi dokładnie to: pozwala użytkownikowi Linux-a na drukowanie na drukarce AplleTalk. jest drukarką lokalną podłączoną do równoległego portu Linux-a (np. /dev/lp1), to jest kilka zmian w pliku /etc/printcap. Ja pokażę przykład ustawienia z drukarką lokalną, którego nie testowałem, ale dostałem od innego użytkownika. Przeczytaj ``sekcję 3.4'' na ten temat i sprawdź szczegółowe informacje na temat używania Ghostscript-u razem z Netatalk napisane przez Mike'a Pearsona i Billa McGonigle'a. 33..11.. KKoonnffiigguurraaccjjaa ttwwoojjeeggoo //eettcc//pprriinnttccaapp.. Jeśli twoja drukarka może już drukować przy pomocy polecenia Pingo$ lpr -P lp test.eps to możesz przeskoczyć ten pierwszy krok. W innym przypadku stań się "root-em" i idź do katalogu /etc, żeby wyedytować plik printcap. Szczegóły znajdziesz na stronie podręcznika systemowego "man". Ja opiszę tylko jak ustawić LaseWriter, tak żeby działał z poleceniem lpr z Linux-a. Dodaj pozycję dla swojej drukarki do pliku printcap. Ja mam zdefiniowaną tylko LaserWriter i mój plik wygląda tak: lp|Pingo LaserWriter|Theobald Chapin, III:\ :sd=/usr/spool/theobald:\ :lp=/dev/null:\ :pl#63:pw#85:\ :mx#0:\ :sh:sf:\ :lf=/usr/adm/lpd-errs:\ :if=/usr/local/bin/myif:\ :of=/usr/local/atalk/etc/ofpap: 33..11..11.. nnaazzwwaa ddrruukkaarrkkii ddllaa uużżyyttkkoowwnniikkóóww LLiinnuuxx--aa Pierwsza linia definiuje trzy logiczne nazwy, które nie muszą mieć żadnego podobieństwa do nazw, jakie chcesz nadać tej drukarce w kliencie AppleShare. Dlatego nazwałem ją lp, ponieważ jest to nazwa stosowana w większości UNIX-ów. Inne nazwy stosuję tylko po to, żeby wiedzieć co to właściwie za drukarka. 33..11..22.. kkaattaalloogg zzaaddaańń Potem musisz mieć katalog zadań, gdzie demon będzie składował zadania. Ja nazwałem swój katalog zadań /usr/spool/theobald w tej samej hierarchii co katalog poczty. Pingo$ ls -l drwxrwxr-x 2 root mail 1024 Feb 8 08:46 mail drwxr-xr-x 2 root mail 2048 Feb 8 17:23 mqueue drwxrwxr-x 5 news news 1024 Sep 1 1994 news drwxrwxr-x 2 root lp 1024 Feb 9 13:15 theobald Stwórz go używając mkdir a potem ustaw właściciela (root), grupę (lp) Pingo$ chown root.lp theobald i prawa dostępu Pingo$ chmod 775 theobald Potem stworzyłem dwa pliki: lock i status w tym katalogu: Pingo$ cd theobald Pingo$ touch lock; chown root.root lock; chmod 004 lock Pingo$ touch status; chown root.root status; chmod 664 status teraz możesz zdefiniować ten katalog jako katalog zadań jak ja to zrobiłem w linii 2. 33..11..33.. uurrzząąddzzeenniiee ddrruukkaarrkkii Jeśli twoja drukarka jest lokalną drukarką dołączoną do urządzenia takiego jak/dev/lp1, to to jest urządzenie, którego potrzebujesz. Użyjesz mknod, aby utworzyć to urządzenie jeśli go jeszcze nie ma. Dla drukarki w AppleTalk nie chcesz właściwie drukować do żadnego urządzenia, ale wysłać zadanie do tej drukarki używając programu pap z katalogu /usr/local/atalk/bin. Zrobi się to przy pomocy filtra psf, który uruchomi program pap, aby mieć dostęp do drukarki. Dlatego, po tym jak zadanie zostało wysłane do LaserWriter, jest ono ciągle w Linux-ie, ponieważ demon drukowania lpd ma na samym końcu wysłać to zadania na urządzenie. Dlatego zdefiniujemy urządzenie /dev/null jako urządzenie drukarki, które wyśle twoje zadanie w próżnię (bo chcesz mieć tylko to co się pojawiło na drukarce AppleTalk, prawda?). Dlatego w trzeciej linii wpiszemy :lp=/dev/null:\. Przeczytaj stronę podręcznika systemowego na temat psf, jeśli masz więcej niż jedną drukarkę AppleTalk i jeśli masz problemy z używaniem urządzenia /dev/null jako urządzenia drukarki. 33..11..44.. rroozzmmiiaarr ssttrroonnyy,, mmaakkssyymmaallnnyy rroozzmmiiaarr pplliikkuu ii nnaaggłłóówweekk Użyj pól pl i pw dla określenia długości strony (linie) i szerokości (znaki). Polem mx możesz zdefiniować maksymalny rozmiar pliku drukowanego. Jeśli plik jest większy, demon drukarki obetnie go, albo odmówi drukowania. Jeśli ustawisz tę wartość na 0 (mx#0), oznacza to, iż można drukować pliki o nieograniczonych rozmiarach. Uważaj, bo przypadkowo papier może się skończyć jeśli nikt się nie będzie o to troszczyć. A twoja głodna drukarka będzie wołać o papier ! Tak więc radzę nie ustawiać pola mx na 0 jeśli skończyłeś już testować i wszystko jest w porządku. Polem sh możemy zabronić drukowania strony początkowej (z identyfikatorem właściciela itp.) Polem sf możemy zabronić drukowania feed forms. 33..11..55.. zzaappiissyywwaanniiee bbłłęęddóóww Ja zdefiniowałem do tego celu plik /usr/adm/lpd-errs. Będziesz musiał stworzyć ten plik samemu (np. poleceniem touch /usr/adm/lpd-errs) 33..11..66.. ffiillttrryy TToo jjeesstt wwaażżnnee !! Jak już to opisałem, twoje zadanie zostanie wysłane do drukarki AppleTalk tylko jeśli zainstalujesz odpowiedni filtr, który uruchomi program, pap. Pakiet netatalk używa konceptu hackerskiego, używając filtru psf, ale z różnymi dołączeniami do niego. psf analizuje nazwę tego dołączenia, aby dowiedzieć się, czy ma uruchomić pap jeśli podłańcuch jest w nazwie dołączenia, i odwrócić kolejność drukowania jeśli w nazwie jest rev. Spójrz na to wydając polecenie: Pingo$ ls -l /usr/local/atalk/etc lrwxrwxrwx 1 root root 3 Feb 8 14:44 ifpap -> psf lrwxrwxrwx 1 root root 3 Feb 8 14:44 ifpaprev -> psf lrwxrwxrwx 1 root root 3 Feb 8 14:44 ofpap -> psf -rwxr-xr-x 1 root root 49299 Feb 8 14:44 papd -rw-r--r-- 1 root root 35 Feb 9 13:48 papd.conf -rwxr-xr-x 1 root root 11395 Feb 8 14:44 psf lrwxrwxrwx 1 root root 3 Feb 8 14:44 tfpap -> psf lrwxrwxrwx 1 root root 3 Feb 8 14:44 tfpaprev -> psf Pingo$ Tak więc filtr o nazwie ifpap uruchomi pap, ifpaprev odwróci kolejność stron i uruchomi pap. Zamienia on zwykły tekst na PostScript, tak żebyś nie skończył na komunikacie z błędem. Jedyny filtr jaki musisz zainstalować to of: :of=/usr/local/atalk/etc/ofpap: gdzie /usr/local/bin/myif jest prostym skryptem powłoki, który pozwala mi na przerywanie linii w tekście, które zostały zapisane programem, który automatycznie łamie linie (bp. textedit). Niestety filtr psf nie robi nic takiego i ignoruje ustawienia szerokości papieru. Ja napisałem swój własny filtr linebreak.c , który robi to dla mnie i umieść następujące linie w "myif": #!/bin/sh /usr/local/bin/linebreak $* | /usr/local/atalk/etc/ifpap $* Jeśli w ten sposób ustawisz filtr tekstowy, to linbreak będzie uważał tylko na szerokość strony (ustawioną pw), podczas gdy ifpap (psf) sprawdza tylko długość. Wygląda na to, że psf zakłada, że pierwsza linia to 0, tak więc ustaw pl#63 jeśli chcesz mieć 64 linii na stronie. Jeśli nie chcesz łamania linii, to po prostu umieść linię: :if=/usr/local/atalk/etc/ifpap:\ Teraz zapisz swój nowy printcap. Jeśli spróbujesz teraz coś wydrukować, dowiesz się, że jeszcze nie działa, więc czytaj następny paragraf. Jak wspomniałem wcześniej, UNIX-owa nazwa drukarki w printcapie nie ma odpowiednika dla nazwy drukarki w AppleTalk. Musisz stworzyć plik .paprc w swoim katalogu zadań, który będzie zawierał adres drukarki w AppleTalk. Jest to tylko jedna linia. Zauważ, że nie musiałem umieszczać nazwy drukarki w cudzysłowia w tym pliku, ale inni piszą mi, że u nich to działało tylko z cydzysłowami. To spróbuj najpierw bez cydzysłowów: Pingo$ cat /usr/spool/theobald/.paprc Theobald Chapin, III:LaserWriter@VLSB To teraz możesz zaczynać. Jeśli dostaniesz komunikat o błędzie jak np. "Turing:LaserWriter@Tech Support": NBP wtedy spróbuj z cudzysłowami. Może być też tak, że musisz wstawić tylko nazwe przed dwukropkiem w cudzysłowa, tak: "Theobald Chapin, III":LaserWriter@VLSB. Jeśli masz jeszcze jakieś problemy, to myśl i kombinuj ;) NIe znam żadnego uniwersalnego sposobu na rozwiązanie tego problemu. Więcej na temat hackowania i różnych obejść z filtrami znajdziesz w sekcji ``Znane problemy''. 33..22.. PPrrzzeetteessttuujj ddrruukkaarrkkęę.. Najpierw sprawdź czy demon drukarki jest rzeczywiście uruchomiony: Pingo$ ps -xa | grep lpd 45 ? SW 0:00 (lpd) 346 pp0 D 0:00 grep lpd Pingo$ Spróbuj wydrukować plik w PostScripcie i plik tekstowy, żeby się przekonać, że wszystko działa. Przypuszczalnie musisz zrestartować demona poleceniem lpc. Uruchom lpc i napisz restart lp, down lp i up lp. Potem sprawdź status: lpc> status lp: queuing is enabled printing is enabled no entries no daemon present lpc> lpc> quit Teraz wydrukuj swój plik poleceniem Pingo$ lpr -P lp filename Jeśli wszystko jest w porządku, to plik status w katalogu zadań powienien teraz zawierać najświeższe informacje na temat twojej drukarki: Pingo$ cat /usr/spool/theobald/status job: Paul; status: busy; source: LocalTalk Pingo$ 33..33.. SSkkoojjaarrzz ttęę ddrruukkaarrkkęę zz jjaakkąąśś nnaazzwwąą ddllaa AApppplleeTTaallkk.. Jeśli teraz pójdziesz do Mac-a i spróbujesz wybrac swoją nową drukarkę dowiesz się, że pokaże się ona z nazwą twojego serwera Linux-owego. To może nie być zbyt zadowalające, dlatego musisz stworzyć, albo wyedytować plik papd.conf w katalogu etc AppleTalk, /usr/local/atalk/etc/papd.conf (przeczytaj "man papd" jeśli chcesz znać więcej szczegółów). Minimum tego co musisz zrobić to umieszczenie w tym pliku nazwy jaką chcesz nadać drukarce, a na końcu dopisz :\ tak jak w printcap-ie. W drugiej linii podajesz nazwę jaką ta drukarka ma w Linux-ie opcją pr. Mój plik wygląda tak: Pingo$ cat /usr/local/atalk/etc/papd.conf Pingo Mac LaserWriter:\ :pr=lp: Pingo$ Oznacza to, że (domyślna) zmienna lp zawiera nazwę: Pingo Mac LaserWriter dla klienta AppleShare. Dowiesz się również, że teraz użytkownik na Mac-u może drukować bezpośrednio na drukarce Theobald Chaplin III jak i poprzez Linux-a, gdzie nazwa drukarki to Pingo Mac LaserWriter. Dla mnie jest ważne, aby móc drukować bezpośrenio na tej drukarce, a podczas pracy na Mac-u drukowanie poprzez Linux-a wydaje się o wiele szybsze, ponieważ Linux zkolejkuje zadanie i zniknie ono natychmiast z mojego desktopu. Jeśli chcesz zarejestrować swoją drukarkę w jakiejś strefie AppleTalk (nie w domyślnej strefie), po prostu podajesz tę strefę wraz z rozszerzeniem @nazwa_strefy w pliku papd.conf: MotorsLab@EEAP:\ :pr=ee3rd: 33..44.. JJaakkaa jjeesstt rróóżżnniiccaa mmiięęddzzyy llookkaallnnąą ddrruukkaarrkkąą ppooddłłąącczzoonnąą ddoo kkoommppuutt­­ eerraa LLiinnuuxx--oowweeggoo?? Ta sekcja nie jest jeszcze całkiem gotowa !!! /etc/princap: lp:lp=/dev/lp1:sd=/usr/spool/lp1:sh /usr/local/atalk/etc/papd.conf: HP LJIIIp:\ :pr=lp:\ :pd=/usr/local/atalk/etc/HP_LaserJet_IIIP.ppd: Sprawdź szczegóły na stronie Używanie ghostscript-a wraz z Netatalk . 44.. RRoozzwwiiąązzyywwaanniiee pprroobblleemmóóww.. 44..11.. OOggóóllnnaa ssttrraatteeggiiaa.. Jeśli masz jakieś problemy podczas drukowania, nawet jeśli działało kiedy wszystko ustawiałeś tak jak opisałem, to spójrz do /usr/adm/mesaages (albo do /usr/log/messages albo /var/log/messages - przyp. tłum.) oraz do /usr/adm/syslog (patrz poprzednia uwaga). Jeśli tylko spróbujesz coś wydrukować używając filtru psf, to znajdziesz podobne linie w wymienionych wyżej plikach: Feb 12 17:47:52 Pingo ofpap[1443]: starting for ? Feb 12 17:47:52 Pingo ofpap[1443]: sending to pap[1444] Feb 12 17:47:52 Pingo ofpap[1443]: straight text Feb 12 17:47:59 Pingo ofpap[1443]: 1444 done Feb 12 17:47:59 Pingo ofpap[1443]: pausing Feb 12 17:48:01 Pingo ifpap[1447]: starting for ? Feb 12 17:48:01 Pingo ifpap[1447]: sending to pap[1448] Feb 12 17:48:01 Pingo ifpap[1447]: straight text Feb 12 17:48:09 Pingo ifpap[1447]: 1448 done Feb 12 17:48:09 Pingo ofpap[1443]: restarting Feb 12 17:48:09 Pingo ifpap[1447]: done Feb 12 17:48:09 Pingo ofpap[1443]: done Feb 12 18:00:46 Pingo ofpap[1481]: starting for ? Feb 12 18:00:46 Pingo ofpap[1481]: sending to pap[1482] Feb 12 18:00:46 Pingo ofpap[1481]: straight text Feb 12 18:00:51 Pingo ofpap[1481]: 1482 done Feb 12 18:00:51 Pingo ofpap[1481]: pausing Feb 12 18:00:52 Pingo ifpap[1485]: starting for ? Feb 12 18:00:52 Pingo ifpap[1485]: sending to pap[1486] Feb 12 18:00:52 Pingo ifpap[1485]: straight text Feb 12 18:00:57 Pingo ifpap[1485]: 1486 done Feb 12 18:00:57 Pingo ofpap[1481]: restarting Feb 12 18:00:57 Pingo ofpap[1481]: done Feb 12 18:00:57 Pingo ifpap[1485]: done Jeśli coś nie działa, otrzymasz komunikat w /usr/adm/syslog jak ten: Feb 12 10:04:59 Pingo papd[70]: No such printer: "lp" Feb 12 10:04:59 Pingo papd[70]: printcap problem: "lp" (twoja domyślna zmienna lp nie jest zdefiniowana) Feb 12 17:02:21 Pingo ofpap[1149]: 1150 died with 1 Feb 12 17:02:21 Pingo lpd[1148]: lp: output filter died (1) Feb 12 17:02:26 Pingo lpd[1148]: lp: Daemon filter 'f' terminated (11) Feb 12 17:04:48 Pingo lpd[1195]: lp: Daemon filter 'f' terminated (11) Feb 12 17:08:03 Pingo lpd[1216]: lp: Daemon filter 'f' terminated (11) Feb 12 17:10:00 Pingo lpd[1228]: cannot execv /usr/local/bin/linebreak|/usr/local/atalk/ifpap Feb 12 17:11:51 Pingo lpd[1244]: /usr/adm/lpd-errs: No such file or directory (/etc/printcap nie akceptuje strumieni w definicji if; oto dlaczego używałem skryptu /usr/local/bin/myif. Zapomniałem także stworzyć pliku /usr/adm/lpd-errs, który zdefiniowałem w /etc/printcap) 44..22.. NNiieezznnaannee pprroobblleemmyy Najpierw przeczytaj sekcję o ``Znanych problemach''. Jeśli nie będzie tam nic pomocnego dla ciebie, to wyślij do mnie list i dołącz do niego pliki /etc/printcap oraz /usr/local/atalk/etc/papd.conf. nnbbppllkkuupp ppookkaazzuujjee nnaazzwwęę ddrruukkaarrkkii ii jjeejj aaddrreess,, aallee jjaa nniiee ddoossttaajjęę żżaaddnneejj ooddppoowwiieeddzzii zz pprrooggrraammuu ppaappssttaattuuss oodd tteejj ddrruukkaarrkkii.. 44..33.. ZZnnaannee pprroobblleemmyy.. Dostaję dużo listów od ludzi, którzy mają problemy, więc umieszczę tutaj rozwiązania dla wszystkich. Będzie to rosnąca, nieposortowana lista. Po prostu sprawdź czy twój problem jest tu opisany. 44..33..11.. nniiee mmaa wwyyddrruukkuu zzwwyykkłłeeggoo pplliikkuu tteekkssttoowweeggoo Sprawdź czy nie masz w pliku /usr/adm/lpd-errs czegoś takiego: unprintable character (0x9a)! Jest to problem dotyczący psf, filtru użytego do drukowania. Zlokalizuj plik psf.c w swojej dystrybucji netatalk i uczyń go zapisywalnym chmod 644 psf.c Zlokalizuj drugą linię, w której jest łańcuch unprintable character. Pierwsze wystapienie (z dwóch) powino być w linii 402 a drugie - w 496 lub podobnie. Druga linia to jest przypuszczalnie ta, która ci sprawia kłopoty. Zamień if ( !isascii( *p ) || !isprint( *p )) { if ( !literal ) { fprintf( stderr, "unprintable character (0x%x)!\n", (unsigned char)*p ); return( 2 ); /* Toss job */ } printf( "\\%o", (unsigned)*p ); na if ( !isascii( *p ) || !isprint( *p )) { if ( !literal ) { fprintf( stderr, "unprintable character (0x%x) converted to ?!\n", (unsigned char)*p ); /* return( 2 );*/ /* Toss job */ putchar( '?' ); /* Don't toss job! */ } else{ printf( "\\%o", (unsigned)*p ); } Teraz napisz "make" w wierszu poleceń w katalogu netatalk (nie w tym, w którym jest psf.c, bo make nie będzie w tym przypadku znało ścieżki do pap !). Potem skopiuj nowe psf do odpowiedniego katalogu (/usr/local/atalk/etc). To co się dzieje to: program zamienia niedrukowalny znak na znak "?" i nie przerywa pracy. Może ktoś ma lepszy pomysł na to jak przekonwertować niedrukowalny znak na jego odpowiednik w PostScripcie ? Ale jeśli to będziesz robił, to uważaj na prawa autorskie w psf ! 44..33..22.. nniiee mmaa uummllaauuttóóww,, aannii zznnaakkóóww nnaarrooddoowwyycchh Jak właśnie wyżej wspomniałem, psf nie obsługuje rozszerzonych zbiorów znaków. Ale nenscript to potrafi. Ale ponieważ nie jest to filtr, który mógłby zostać użyty bezpośrednio w printcap-ie, będziesz musiał to obejść. Ja mam zdefiniowaną dodatkową drukarkę, która obsługuje zwykły tekst używając nenscriptu. /etc/printcap wygląda tak: # # Apple LaserPrinter Select 360 on AppleTalk: # lp|Pingo LaserWriter|Theobald Chapin, III:\ :sd=/usr/spool/theobald:\ :lp=/dev/null:\ :pl#61:\ :pw#80:\ :mx#0:\ :sh:\ :sf:\ :lf=/var/adm/lpd-errs:\ :if=/usr/local/bin/myif:\ :of=/usr/local/atalk/etc/ofpap: # # Special setup for plain text files, to convert to PostScript using nenscript # instead of psf (which doesn't process the whole ISO characterset) # text:\ :sd=/usr/spool/textprinter:\ :lp=/dev/null:\ :mx#0:\ :sh:\ :sf:\ :lf=/var/adm/lpd-errs:\ :of=/usr/local/bin/textfilter: /usr/local/bin/textfilter jest skryptem w powłoce: #!/bin/sh /usr/bin/nenscript -P lp -2 -r -T US -i "Werner Eugster" Niestety nie znalazłem sposobu na zachowanie nazwy pliku do drukowania i dlatego używam opcji -i z moim nazwiskiem, żeby oznaczyć wydruk. Może znajdziesz jakiś lepszy sposób używając np. Unix-owej zmiennej środowiskowej z loginem. W tym ustawieniu otrzymuję tekst na papierze w układzie poziomym (opcja -r) w dwóch kolumnach (-2) wysłany na standardową drukarkę lp. Aby wydrukować zwykły plik tekstowy używam polecenia lpr -P text plain.txt Tak więc przede wszystkim, drukarka zdefiniowana jako text zamienia zwykły tekstowy plik na PostScript używając nenscript (który obsługuje pełen zestaw znaków ISO), ktory przekazuje go dalej do drukarki zdefiniowanej jako lp. Przez to, używając polecenia lpq zobaczysz, że zadanie drukowania pojawi się przy drukarce lp i przychodzącego ze standardowego wejścia, co jest poprawne. Jeśli ktoś zna jakiś sposób, żeby umieścić na wydruku nazwę pliku, to będę bardzo wdzięczny za tę informację ! 44..33..33.. mmoojjee uussttaawwiieenniiaa ddłłuuggoośśccii ii sszzeerrookkoośśccii ssttrroonnyy ssaa iiggnnoorroowwaannee To był mój błąd. Sprawdź część powyżej, gdzie opisuję myif. Musisz dodać $* dwa razy w drugiej linii w pliku, która teraz wygląda tak: #!/bin/sh /usr/local/bin/linebreak $* | /usr/local/atalk/etc/ifpap $* 44..33..44.. zzaaddaanniiee jjeesstt wwyyssłłaannee ddoo ddrruukkaarrkkii,, aallee nniiee zzoossttaajjee wwyyddrruukkoowwaannee Jest wiele takich problemów. Jeden, o którym dowiedziałem się od Paolo Supino to ten: _"_P_o_d_c_z_a_s _k_r_ó_t_k_i_e_j _i_n_s_p_e_k_c_j_i _w_y_d_r_u_k_u _z _n_b_p_l_k_u_p _(_ż_e_b_y _z_o_b_a_c_z_y_ć _c_z_y _s_ą _t_a_k _j_a_k_i_e_ś _d_z_i_w_n_e _r_z_e_c_z_y_)_, _z_o_b_a_c_z_y_ł_e_m_, _ż_e _n_a_s_z_a _d_r_u_k_a_r_k_a _n_a _s_i_e_c_i _m_a _t_e_n _s_a_m _n_u_m_e_r _c_o _s_e_r_w_e_r _N_T _(_k_t_ó_r_y _k_o_l_e_j_k_u_j_e _z_a_d_a_n_i_a _z _P_C_-_t_ó_w_)_. _T_o _b_y_ł_o źźllee. 1. Serwer NT jest bbaarrddzzoo złym spoolerem. 2. Powinien on kolejkować tylko maszyny Windows-owe. 3. Pomimo tego, iż nie miał on przechwytywać wszystkiego co przez niego przeszło - on to robił. _R_o_z_w_i_ą_z_a_n_i_e_: _W_y_ł_ą_c_z_y_ć _z_u_p_e_ł_n_i_e _s_e_r_w_e_r _d_r_u_k_o_w_a_n_i_a _d_l_a _M_a_c_-_ó_w _n_a _N_T_. _W_y_e_d_y_t_o_w_a_ć _p_l_i_k .paprc _w _k_a_t_a_l_o_g_u _z_a_d_a_ń _t_a_k_, _ż_e_b_y _w_s_k_a_z_y_w_a_ł _o_n _b_e_z_p_o_ś_r_e_d_n_i_o _n_a _d_r_u_k_a_r_k_ę_. _Z_r_e_s_t_a_r_t_o_w_a_ć _k_o_m_p_u_t_e_r_, _ż_e_b_y _m_u _s_i_ę _p_a_m_i_ę_c _o_d_ś_w_i_e_ż_y_ł_a_. 44..33..55.. mmoojjaa ddrruukkaarrkkaa nniiee bbiieerrzzee ppaappiieerruu zz tteeggoo zzaassoobbnniikkaa,, zz kkttóórreeggoo jjaa cchhccęę Domyślnie wszystko jest drukowane na papierze ze standardowego zasobnika. Jeśli chcesz tak ustawić drukarkę, aby brała papier z innego zasobnika niż ze standardowego, to spróbuj tego: Zmodyfikuj swój plik /usr/local/bin/myif i przepuść wszystko przez program awk, czy jakiś inny, który potrafi zapisać dodatkową linię do strumienia po nagłówku. Np. Ja spróbowałem tak: #!/bin/sh /usr/local/bin/linebreak $* | awk '{if(NR==1&&$1~"%!"){print;print "statusdict begin /manualfeed true store end\n";}else{print}}' | /usr/local/atalk/etc/ifpap $* (upewnij się, że nie ma fizycznych łamań linii w linii drugiej). papier z podajnika ręcznego. Dla innych podajników zamień tekst w cuszysłowach ("statusdict begin /manualfeed true store end\n") na odpowiednie polecenie z tej listy: Podajnik | Polecenie PostScriptu ------------------+--------------------------------------------------- przedni | "statusdict begin 0 setpapertray end" | tylny | "statusdict begin 1 setpapertray end" | automatyczny | "statusdict begin /manualfeed true store end" Polecenia PostScriptu do zdefiniowania wyjściowych "szufladek": Szufladka | Polecenie PostScriptu ------------------+--------------------------------------------------- górna | "0 statusdict /setoutputtray get exec" | dolna | "1 statusdict /setoutputtray get exec" Oczywiście jeśli chcesz zdefiniować podajnik wejściowy ii szufladkę wyjściową, to musisz wstawić dwie linie do pliku PostScriptowego. Chociaż to działa dla wejścia, które już jest PostScriptem. Jeśli chcesz to osiągnąć dla tekstu, który jest dopiero zamieniany na PostScript, to musisz zmodyfikować plik psf.c i skompilować nowy filtr psf. (nie zapomnij zainstalować go w katalogu /usr/local/atalk/etc !). Wszystko co musisz zrobić, to znaleźć linię %%!PS-Adobe-2.0 (ok. linii 379, musi to być funkcja textps(). Dodaj nową linię: printf( "statusdict begin /manualfeed true store end\n" ); (i znowu - możesz zamienić tekst w cudzysłowach na ten, który ci odpowiada). Potem skompiluj ponownie psf i zainstaluj go. Davis Goodman skończył na takim skrypcie myif, który sprawdza czy chcesz drukować w rozmiarach listowych czy normalnych. Jeśli jest to normalny, to wykonywane jest polecenie PostScriptu powodujące wybór tylnego podajnika, w innym przypadku papier pobierany jest z podajnika standardowego. #!/bin/sh bounding=`grep BoundingBox $8 | cut -d" " -f5 ` if [ "$bounding" = "" ]; then /usr/bin/awk '{if(NR==1&&$1~"%!"){print;print "statusdict begin 1 setpapertray end\n";}else{print}}' | /usr/local/atalk/etc/ifpap $* else /usr/local/atalk/etc/ifpap $* fi To działa z Netscape a twoje własne oprogramowanie może przyjmować inne wartości. Załączyłem ten przykład tylko po to, żeby ci wskazać, gdzie należy zacząć jeśli chcesz robić podobne sztuczki. Jeszcze jeden przykład jest od Tomasa Pospiska, który zdefiniował nazwy drukarek dla różnych podajników w tej samej drukarce w /etc/printcap. Żeby wydrukować na papierze z konkretnego podajnika wysyłasz zadanie na odpowiednią drukarkę. Jego printcap wygląda tak: # LaserWriter Pro 630 (Default Tray) lp:\ :sd=/usr/spool/lp1:\ :lp=/dev/null:\ :pl#63:pw#85:\ :mx#0:\ :sh:sf:\ :lf=/var/log/lp-errs:\ :if=/usr/lib/atalk/filters/myif:\ :of=/usr/lib/atalk/filters/ofpap: # # LaserWriter Pro 630 (Manual Tray) lpm:\ :sd=/usr/spool/lpm:\ :lp=/dev/null:\ :pl#63:pw#85:\ :mx#0:\ :sh:sf:\ :lf=/var/log/lp-errs:\ :if=/usr/lib/atalk/filters/myif_manual:\ :of=/usr/lib/atalk/filters/ofpap: a filtr myif wygląda tak: #!/bin/sh /usr/bin/awk '{if(NR==1&&$1~"%!"){print;print "statusdict begin /manualfeed true store end\n";}else{print}}' | /usr/lib/atalk/filters/ifpap $* Jak dotąd dostałem konstruktywne komentarze i pytania od ludzi z COM domena 11 EDU (USA) 12 US domena (USA) 1 GOV domena USA 2 NET domena 1 Australia 1 Austria 2 Belgia 1 Francja 2 Niemcy 5 Islandia 1 Włochy 3 Japonia 1 Holandia 1 Portugalia 2 Wileka Brytania 1 Szwajcaria 1 Š 13 Marca 1997 Werner Eugster (eugster@giub.unibe.ch) 55.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl doc-linux-pl-2002.06.14.orig/mini/BTTV-mini-HOWTO.pl.txt0100664000175000017500000006520607354177140021130 0ustar covencoven BTTV Mini-HOWTO Eric Sandeen eric_sandeen@bigfoot.com wersja 0,3, luty 2000 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk PPiieettrryykkaa lleessiioo@@mmaaiill..uuww..eedduu..ppll wersja 1,0, 09 września 2001 Ten dokument opisuje, jaki sprzęt i oprogramowanie trzeba mieć i co trzeba zrobić, żeby uruchomić pod Linuksem kartę telewizyjną lub urządzenie przechwytujące obraz. Mowa jest o urządzeniach opartych na układzie bt8x8. ______________________________________________________________________ Spis treści 1. Wprowadzenie 1.1 Prawa Autorskie 1.2 Gdzie można znaleźć ten dokument 1.3 Podziękowania 1.4 Zastrzeżenie 2. Wymagania Sprzętowe 3. Wymagania Programowe 4. Konfiguracja systemu 4.1 Instalacja karty 4.2 Konfiguracja jądra 4.3 Jak używać nowszych pakietów 0.6.x 4.4 Pliki specjalne w katalogu 4.5 Ładowanie modułów 4.6 Automatyzacja ładowania modułów 5. Aplikacje 6. Dodatek - Opcje dla wszystkich modułów 7. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee Jedną z bardziej interesujących multimedialnych możliwości Linuksa jest fakt, że umożliwia on przechwytywanie i oglądanie obrazów wideo z różnych źródeł. Interfejs programistyczny API video4linux () obsługuje wiele różnych typów urządzeń wideo, w tym tunery telewizyjne zbudowane z wykorzystaniem układów bt848 i bt878 firmy Conexant. Ten dokument wyjaśnia, jak korzystać z takich kart pod Linuksem. 11..11.. PPrraawwaa AAuuttoorrsskkiiee Prawa autorskie do tego dokumentu należą do Erica Sandeena (1999). O ile nie jest stwierdzone inaczej, prawa autorskie dokumentów Linux HOWTO należą do ich autorów. Dokumenty Linux HOWTO mogą być kopiowane i rozpowszechniane w całości lub w części, w jakiejkolwiek formie fizycznej lub elektronicznej, tak długo, dopóki ta klauzula dotycząca praw autorskich pozostaje dołączona do wszystkich kopii. Autor zezwala na dystrybucję komercyjną i zachęca do takowej, jednakże chciałby być poinformowany o takich wypadkach. Wszelkie tłumaczenia, prace pochodne lub prace zbiorowe z wykorzystaniem dokumentów Linux HOWTO muszą być rozpowszechniane pod warunkiem dołączenia do nich kopii niniejszej informacji o prawach autorskich. Oznacza to, że nie można tworzyć prac pochodnych na podstawie tego HOWTO i jednocześnie nakładać dodatkowych restrykcji na ich rozpowszechnianie. Odstępstwa od tych zasad są możliwe pod pewnymi warunkami; skontaktuj się z koordynatorem Linux HOWTO pod adresem podanym poniżej. Mówiąc w skrócie, staramy się promować rozpowszechnianie niniejszej dokumentacji tak wieloma sposobami, jak to możliwe. Chcielibyśmy jednakże zachować prawa autorskie do dokumentów HOWTO i wolelibyśmy być powiadamiani o wszelkich planach ich redystrybucji. Jeśli macie jakieś pytania, skontaktujcie się z Timem Bynumem, koordynatorem Linux HOWTO pocztą elektroniczną pod adresem linux- howto@metalab.unc.edu 11..22.. GGddzziiee mmoożżnnaa zznnaalleeźźćć tteenn ddookkuummeenntt Najnowszą oficjalną wersję tego dokumentu można znaleźć pod adresem Linux Documentation Project . 11..33.. PPooddzziięękkoowwaanniiaa Dziękuję Ralphowi Metzlerowi i Marcusowi Metzlerowi za napisanie oryginalnego sterownika bttv. Dziękuję Alanowi Coxowi za stworzenie interfejsu programowania Video4Linux, Gerdowi Knorrowi za pracę nad obsługą kart radiowych, kolejne wersje bttv i xawtv. Dziękuję też wszystkim innym za ich wkład w pracę nad obsługą kart TV przez Linuksa. Dziękuję Williamowi Burrowowi za napisanie BTTV HOWTO (o którym dowiedziałem się _p_o _t_y_m, jak napisałem ten dokument...). Poprawiłem ten podręcznik dzięki jego pracy. To HOWTO opiera się w dużej mierze na dokumentacji bttv i xawtv. 11..44.. ZZaassttrrzzeeżżeenniiee Nie ponoszę żadnej odpowiedzialności za informacje zawarte w tym dokumencie. Wszystkich zaleceń, przykładów i/lub innych wskazówek używacie wyłącznie na własne ryzyko. Wszelkie prawa autorskie należą do właścicieli, o ile nie jest stwierdzone inaczej. Użycie jakiegokolwiek terminu w tym dokumencie nie powinno być uważane za naruszenie ważności żadnego znaku handlowego ani usługowego. Nazwy produktów lub marek użyte są wyłącznie w celach informacyjnych i nie stanowią podstawy do żadnych roszczeń. Zalecane jest utworzenie kopii zapasowej systemu przed właściwą instalacją bttv, jak również tworzenie kopii zapasowych w regularnych odstępach czasu. 22.. WWyymmaaggaanniiaa SSpprrzzęęttoowwee Z pliku README w dokumentacji bttv: Bttv jest sterownikiem dla urządzeń przechwytujących obraz, opartych na rodzinie układów dekodujących wideo Bt848 firmy Conexant (). Do tej rodziny należą układy: Bt848, Bt848A, Bt849, Bt878 i Bt879. Jedyne różnice między kartami produkowanymi przez różnych wytwórców to typy tunerów i dodatkowe komponenty na kartach. Na przykład, niektóre karty Hauppauge mają dodatkowy dekoder wideotekstu i/lub dekoder dźwięku. Bttv nie obsługuje wszystkich dodatkowych komponentów. Występują też różnice w typach i ilości wejść (kompozytowe, S-Video). Następujące karty powinny działać: ˇ AAvveerrMMeeddiiaa TTVV9988 ˇ ˇ AAVVeerrMMeeddiiaa TTVV--PPhhoonnee ˇ ˇ DDiiaammoonndd DDTTVV22000000 ˇ ˇ HHaauuppppaauuggee WWiinn//TTVV ppccii (I inne karty Hauppauge) ˇ ˇ IIDDSS IImmaaggiinngg FFAALLCCOONN ˇ ˇ LLiiffeevviieeww FFllyyvviiddeeoo IIII ˇ ˇ MMaattrriixx VViissiioonn MMVV--DDeellttaa ˇ ˇ mmiirrooVVIIDDEEOO PPCCTTVV ˇ ˇ OOsspprreeyy--110000 ˇ ˇ SSTTBB TTVV PPCCII ˇ ˇ TTeerrrraatteecc TTEERRRRAA TTVV++ ˇ ˇ VViiddeeoollooggiicc CCaappttiivvaattoorr PPCCII ˇ Jeśli wiecie, że działają jakieś inne karty, wyślijcie mi, proszę, e- maila, a dołączę je w następnej wersji HOWTO. 33.. WWyymmaaggaanniiaa PPrrooggrraammoowwee Aby uruchomić kartę TV pod Linuksem, potrzebujemy odpowiednich sterowników. Sterownik bttv znajduje się w jądrze począwszy od wersji 2.2.0. Możemy też zaopatrzyć się w najnowszą wersję pakietu sterownika i używać go z jądrem 2.0.35 lub nowszym. Nie będzie on jednak raczej działał ze starszymi jądrami 2.0.x. Zaktualizowany pakiet bttv można znaleźć pod adresem , a jeszcze nowszy można ściągnąć od Gerda Knorra spod adresu . W tych pakietach dodano obsługę układów dźwiękowych, między innymi TEA6300, TDA8425, i DPL3518. Jeśli nie mamy pojęcia o sterownikach bttv, lepiej będzie, jeśli wypróbujemy najpierw wersję bttv dołączoną do ostatniego jądra. Jeśli będziemy mieli z tym kłopoty, lub okaże się, że nasza karta nie jest jeszcze obsługiwana, spróbujmy szczęścia z nowszą serią 0.6, do ściągnięcia z powyższych adresów. Jeśli jesteśmy naprawdę odważni, wypróbujmy serię sterowników 0.7, autorstwa Gerda Knorra. Będą one dołączone do jąder 2.4 i również dostępne są pod adresem . Ten dokument opisuje głównie sterowniki jądra 2.2.14. Wspomniane są pewne właściwości nowej serii 0.6. Obecnie brakuje opisu serii 0.7, ponieważ w chwili pisania trwają intensywne prace nad jej opracowywaniem. 44.. KKoonnffiigguurraaccjjaa ssyysstteemmuu 44..11.. IInnssttaallaaccjjaa kkaarrttyy _D_z_i_ę_k_u_j_ę _W_i_l_l_i_a_m_o_w_i _B_u_r_r_o_w_o_w_i _z_a _t_ę _s_e_k_c_j_ę_. Jeśli boimy się zdjąć obudowę komputera, przeczytajmy najpierw całe HOWTO i zanotujmy gdzieś informacje o swojej karcie, czyli typ tunera, numery układów scalonych, częstotliwości kryształu (kryształów) itp. Potem znajdźmy kogoś, kto się na tym zna i zainstaluje nam kartę. W przeciwnym wypadku, zdejmijmy obudowę i zainstalujmy kartę w wolnym gnieździe. Wybierzmy takie gniazdo, które obsługuje zarządzanie magistralą PCI i transfer PCI, jeśli nasza płyta główna umożliwia taki wybór (zobaczmy w instrukcji obsługi płyty). Będzie nam to potrzebne dla trybu odbierania obrazu. Aby uzyskać dźwięk, możemy połączyć kartę TV i kartę muzyczną na dwa sposoby. Jeden z nich to sposób wewnętrzny. Podłączmy kabel audio CD- ROM-u do wejścia dźwiękowego karty wideo, a wyjście karty wideo podłączmy do wejścia audio na karcie muzycznej, w CD-ROM-ie lub tunerze. Możemy też podłączyć zewnętrzną wtyczkę typu "jack" 1/8 cala (3 mm) z karty wideo do wejścia liniowego audio na karcie muzycznej. Inny sposób to podłączenie wzmacniacza z głośnikami bezpośrednio do wyjścia audio karty TV, jeśli nie mamy karty dźwiękowej lub nie chcemy z niej korzystać (niektóre z nowszych kart z układem bt878 nie mają żadnego wyjścia dźwiękowego, ponieważ transmitują dźwięk w postaci cyfrowej przez szynę PCI. W momencie pisania tego dokumentu ta funkcja nie jest jeszcze obsługiwana). Źródło wideo przydaje się też, jeśli chcemy sprawdzić, czy karta w ogóle działa. Wiele kart ma osobne wejścia dla sygnału kompozytowego, S-Video oraz, o ile mają tuner radiowy, dla RF (radio frequency). 44..22.. KKoonnffiigguurraaccjjaa jjąąddrraa Aby jądro obsługiwało kartę TV, trzeba je odpowiednio skonfigurować. W większości nowych dystrybucji Linuksa odpowiednie moduły są już skompilowane. Jeśli więc w katalogu /lib/modules/2.x.x/misc są moduły videodev.o, bttv.o i tuner.o, to możemy iść dalej. Jeśli nie znaleźliśmy odpowiednich modułów, będziemy musieli zrekompilować jądro z włączonymi opcjami: CONFIG_VIDEO_DEV oraz CONFIG_VIDEO_BT848. Powinniśmy skompilować je jako moduły. Przeczytajmy Linux Kernel HOWTO (), aby dowiedzieć się więcej szczegółów na temat rekompilacji jądra. 44..33.. JJaakk uużżyywwaaćć nnoowwsszzyycchh ppaakkiieettóóww 00..66..xx Jeśli chcemy używać nowszego sterownika z serii 0.6.x, musimy ściągnąć spakowane archiwum z jednej ze wspomnianych stron. Następnie rozpakowujemy je poleceniem tar -xvzf bttv-0.6.x.tar.gz i przechodzimy do nowo utworzonego katalogu. Wpisujemy su aby stać się rootem. Następnie piszemy make w głównym katalogu ze źródłami, aby utworzyć sterownik (możemy spokojnie zignorować informację w pliku INSTALL, która dotyczy modyfikacji plików makefile i tym podobnych, ponieważ odpowiednie opcje będziemy przekazywać sterownikowi w postaci parametrów modułu). Następnie piszemy make install, aby zainstalować sterownik. Na koniec wykonujemy /sbin/depmod -a, aby uaktualnić informacje o zależnościach międzymodułowych. 44..44.. BByyćć mmoożżee bbęęddzziieemmyy mmuussiieellii uuttwwoorrzzyyćć ssppeeccjjaallnnee pplliikkii zznnaakkoowwee ww kkaattaalloogguu //ddeevv .. WWppiissuujjeemmyy llss //ddeevv//vviiddeeoo**;; llss //ddeevv//rraaddiioo** ,, żżeebbyy sspprraawwddzziićć,, cczzyy ttaakkiiee pplliikkii iissttnniieejjąą.. JJeeśśllii nniiee,, mmuussiimmyy jjee uuttwwoorrzzyyćć.. WWsszzyyssttkkiiee oonnee mmaajjąą lliicczzbbęę ggłłóówwnnąą 8811.. LLiicczzbbaa ppoobboocczznnaa zzaalleeżżyy oodd kkoonnkkrreettnneeggoo uurrzząąddzzeenniiaa ((wwiiddeeoo,, rraaddiioo iittpp..)) oorraazz oodd tteeggoo,, iillee ppooddoobbnnyycchh pplliikkóóww ttaamm jjeesstt.. KKttoo cchhccee ddoowwiieeddzziieećć ssiięę wwiięęcceejj nnaa tteemmaatt pprrooggrraammoowwaa­­ nniiaa ((??????)),, ppoowwiinniieenn pprrzzeecczzyyttaaćć VViiddeeoo44LLiinnuuxx AAPPII ((uurrllnnaamm)).. PPlliikkii ssppeecc­­ jjaallnnee ww kkaattaalloogguu //ddeevv W podkatalogu driver katalogu ze źródłami bttv znajduje się skrypt MAKEDEV, który utworzy nam cztery urządzenia wideo. Możemy łatwo zrobić to sami, jeśli mamy tylko jedną kartę TV. Jako root, wpisujemy: mknod /dev/video0 c 81 0 chmod 666 /dev/video0 ln -s /dev/video0 /dev/video mknod /dev/radio0 c 81 64 chmod 666 /dev/radio0 ln -s /dev/radio0 /dev/radio Jeśli mamy jakieś aplikacje wymagające urządzeń videotext i VBI, również możemy je utworzyć (nie ma ich za wiele). Wpiszmy: mknod /dev/vtx0 c 81 192 chmod 666 /dev/vtx0 ln -s /dev/vtx0 /dev/vtx mknod /dev/vbi0 c 81 224 chmod 666 /dev/vbi0 ln -s /dev/vbi0 /dev/vbi 44..55.. ŁŁaaddoowwaanniiee mmoodduułłóóww Sterownik bttv składa się z różnych modułów. Każdy może przyjmować wiele opcji, co jest opisane w dodatku do tego dokumentu. Mając tyle modułów i opcji, być może będziemy chcieli ładować je ręcznie, dopóki wszystko nie będzie działało, jak należy. Ponieważ może to spowodować (choć jest to mało prawdopodobne) zwis systemu, nie zaszkodzi wpisać: sync; sleep 1; sync aby zapisać bufory systemu plików, zanim pójdziemy dalej. Następnie, jako root, poleceniem insmod ładujemy moduły. Pierwsze dwa są łatwe, ponieważ z reguły nie wymagają opcji: insmod videodev insmod i2c Teraz możemy załadować sam moduł bttv: modprobe bttv Domyślnie moduł bttv próbuje sam wykryć typ karty. Sprawdźmy /var/log/messages aby zobaczyć, czy mu się udało. Jeśli nie wykrył karty właściwie, na końcu polecenia dodajemy opcję card=_n, co wymusza typ karty. _n wybieramy z poniższej listy. (Typy od 0 do 19 są obsługiwane przez sterownik dostarczany z jądrem, bttv-0.6.4h obsługuje typy od 20 do 27). Możemy też dodać opcję radio=1, jeśli karta ma tuner FM. Uwaga! W jądrach serii 2.4.x ze sterownikiem bttv 0.7.x ta lista jest zmieniona i poszerzona. Przeczytaj /usr/src/linux/Documentation/video4linux/bttv/CARDLIST, aby dowiedzieć się więcej (przyp. tłum.). ______________________________________________________________________ card=n typ karty 0: Auto-Detect 1: Miro 2: Hauppauge (stare karty na bt848) 3: STB 4: Intel 5: Diamond 6: AVerMedia 7: MATRIX Vision MV-Delta 8: FlyVideo 9: TurboTV 10: Hauppauge (nowe karty na bt878) 11: MIRO PCTV pro 12: Terratec/Vobis TV-Boostar 13: Newer Hauppauge WinCam (bt878) 14: MAXI TV Video PCI2 15: Terratec TerraTV+ 16: Aimslab VHX 17: PXC200 18: AVermedia98 19: FlyVideo98 (nowsze karty FlyVideo) 20: Zoltrix TV-Max 21: iProTV 22: ADS Technologies Channel Surfer TV 23: Pixelview PlayTV (bt878) 24: Leadtek WinView 601 25: AVEC Intercapture 26: LifeView FlyKit w/o Tuner 27: Intel Create and Share PCI ______________________________________________________________________ Następnie ładujemy moduł tunera: modprobe tuner type=_n Żeby określić typ tunera, prawdopodobnie będziemy musieli zdjąć obudowę komputera i obejrzeć kartę. Niektóre karty (Miro i Hauppauge) umożliwiają automatyczne wykrycie tunera, ale może będziemy musieli podać go sami. Tuner powinien być oznaczony nazwą firmy. Możemy spojrzeć na kryształy (małe skrzyneczki z aluminium) na karcie, aby zobaczyć, czy jest to tuner PAL czy NTSC. Dla systemu PAL kryształ jest oznaczony 28.xxxMHz (gdzie xxx to trzy cyfry). Oznaczeniem NTSC jest 35.xxxMHz. Po określeniu typu tunera wybieramy wartość _n z następującej listy (typy 8 i 9 znajdują się tylko w bttv-0.6.4h): ______________________________________________________________________ type=n typ układu tunera. n jest następujące: 0: tuner Temic PAL 1: tuner Philips PAL_I 2: tuner Philips NTSC 3: tuner Philips SECAM 4: brak tunera 5: tunerPhilips PAL 6: tuner Temic NTSC 7: tuner Temic PAL 8: tuner Alps TSBH1 NTSC 9: tuner Alps TSBE1 PAL ______________________________________________________________________ Na końcu ładujemy potrzebne moduły obsługi dźwięku. I znowuż, będziemy musieli uważnie przyjrzeć sie karcie i zobaczyć, jaki mamy układ dźwiękowy. Uwaga: sterowniki dla układów TEA6300, TDA8425, TDA9855 i DPL3518 znajdują sie tylko w wersji bttv 0.6.4h. Ne ma ich w bieżącej (2.2.14) wersji jądra. modprobe msp3400 albo tea3600 albo tda8425 albo tda9855 albo dpl3518 (szczegóły i opcje zamieszczone są w dodatku) Uruchamiamy teraz nasz ulubiony program video4linux i sprawdzamy, czy działa. Jeśli nie możemy zmienić kanału, upewnijmy się, że załadowaliśmy właściwy moduł tunera. Jeśli nie słychać dźwięku, dwa razy sprawdźmy moduł dźwięku i, jeśli przepuszczamy sygnał audio przez kartę muzyczną, upewnijmy się, że dźwięk nie jest wyciszony. 44..66.. AAuuttoommaattyyzzaaccjjaa łłaaddoowwaanniiaa mmoodduułłóóww Wiedząc, jakich modułów i jakich opcji potrzebujemy, możemy zautomatyzować proces ich ładowania. W tym celu dokonujemy odpowiednich wpisów w pliku /etc/conf.modules (albo /etc/modules.conf - przyp.tłum.). Jeśli wówczas uruchomimy jakąś aplikację potrzebującą danego sterownika, zostanie on załadowany automatycznie. Ja wpisałem coś takiego: ______________________________________________________________________ # TV alias char-major-81 bttv pre-install bttv modprobe -k tuner; modprobe -k msp3400 options bttv radio=1 card=3 options tuner type=2 ______________________________________________________________________ Pamiętajmy o zmianie tych wpisów, aby moduły i opcje odpowiadały konkretnemu modelowi karty. (Wykonajmy polecenie /sbin/depmod -a aby upewnić się, że informacje o zależnościach międzymodułowych są aktualne.) 55.. AApplliikkaaccjjee Skonfigurowaliśmy już jądro i urządzenia, załadowaliśmy odpowiednie moduły. Teraz potrzebna nam aplikacja, żeby oglądać lub przechwytywać obrazy z karty TV. Jest ich sporo: ˇ bbttttvvggrraabb - Zapewnia wysokiej jakości przechwytywanie obrazu, doskonale nadaje się do nagrywania wideo ˇ ˇ GGnnoommee--oo--VViissiioonn - Program dla środowiska graficznego Gnome (obecnie rozwijany w Gnome CVS) ˇ ˇ kkwwiinnttvv - Program do oglądania TV dla środowiska KDE, oparty na bibliotece Qt ˇ ˇ wwmmttuunnee - Aplet tunera radiowego dla środowiska WindowMaker. Przeznaczony dla kart TV/radio obsługiwanych przez bttv ˇ ˇ wwmmttvv - Dokowalna aplikacja TV dla WindowMakera ˇ ˇ XXaawwTTVV - Aplikacja TV i kilka programów użytkowych ˇ ˇ XXttTTVV - Prosty program TV/wideo dla Linuksa/X Windows ˇ Pod adresem jest dostępny sterownik dla pilota karty FlyVideo98. KKoonniieecczznniiee pprrzzeecczzyyttaajjmmyy ddookkuummeennttaaccjjęę każdej aplikacji, której chcemy używać. Wiele z nich wymaga modyfikacji plików konfiguracyjnych, żeby w ogóle działać! Ponadto, istnieje wiele typów kart TV, dlatego _m_u_s_i_m_y poświęcić czas na przeczytanie dotyczącej ich dokumentacji, gdyż z reguły ustawienia domyślne aplikacji _n_i_e będą działały z naszą kartą. 66.. DDooddaatteekk -- OOppccjjee ddllaa wwsszzyyssttkkiicchh mmoodduułłóóww Punkty poprzedzone znakiem "*" są dostępne tylko w serii 0.6.4h. ______________________________________________________________________ videodev.o podstawowy moduł video4linux. Zaliczają się do niego wszystkie sterowniki wideo (w tym bttv). i2c.o standardowy moduł i2c. Zarządza obsługą magistrali i2c, korzystają z niego wszystkie inne moduły (oprócz videodev.o) opcje insmod: scan=1 skanuje szynę w poszukiwaniu urządzeń i2c verbose=0 każe się zamknąć i2c i2c_debug=1 dla debugowania. Wysyła cały ruch (programowy, nie sprzętowy) )na szynie i2c do syslog bttv.o sterownik układu przechwytującego obraz bt848 opcje insmod: remap=adr remapuje pamięć Bt848 do adresu <<20 vidmem=base adres bufora ramek (karty graficznej) >>20 triton1=0/1 dla zgodności z układem Triton1. Ten układ jest co prawda rozpoznawany automatycznie, ale może to pomóc z innymi układami pll=0/1/2 ustawienia pll 0: nie używaj PLL 1: zainstalowany kryształ 28 MHz 2: zainstalowany kryształ 35 MHz radio=0/1 karta obsługuje radio card=n typ karty 0: Auto wykrywanie 1: Miro 2: Hauppauge (stare karty na bt848) 3: STB 4: Intel 5: Diamond 6: AVerMedia 7: MATRIX Vision MV-Delta 8: FlyVideo 9: TurboTV 10: Hauppauge (nowe karty na bt878) 11: MIRO PCTV pro 12: Terratec/Vobis TV-Boostar 13: Nowsze Hauppauge WinCam (bt878) 14: MAXI TV Video PCI2 15: Terratec TerraTV+ 16: Aimslab VHX 17: PXC200 18: AVermedia98 19: FlyVideo98 (nowsze karty FlyVideo) *20: Zoltrix TV-Max *21: iProTV *22: ADS Technologies Channel Surfer TV *23: Pixelview PlayTV (bt878) *24: Leadtek WinView 601 *25: AVEC Intercapture *26: LifeView FlyKit w/o Tuner *27: Intel Create and Share PCI remap, card, radio i pll akceptują do czterech oddzielonych przecinkiem opcji (jeśli mamy więcej niż jedną kartę TV). Definicje CARD i PLL z pliku Makefile są używane jako wartości domyślne. msp3400.o sterownik dla układów dźwiękowych msp34xx. Jeśli mamy kartę stereo, prawdopodobnie należy go załadować. opcje insmod: debug=1/2 wysyła informacje użyteczne dla debugowania do syslog. 2 jest bardziej gadatliwe. *tea6300.o Sterownik układu tea6300 fader. Jeśli z kartą stereo nie działa moduł msp3400.o, możemy wypróbować ten. Układ ów można znaleźć na większości kart STB TV/FM (z reguły kupionych na aukcjach internetowych z nadwyżek Gateway OEM) opcje insmod: debug=1 wysyła informacje użyteczne dla debugowania do syslog. *tda8425.o Sterownik układu tda8425. Kiedyś był on częścią bttv.c, więc jeśli dźwięk nam działał, ale przestał, załadujmy ten moduł. opcje insmod: debug=1 wysyła informacje użyteczne dla debugowania do syslog. *tda9855.o Sterownik dekodera dźwięku / procesora audio tda9855. opcje insmod: debug=1 wysyła informacje użyteczne dla debugowania do syslog. *dpl3518.o Sterownik układu dpl3518a Dolby Pro Logic Processor opcje insmod: debug=1 wysyła informacje użyteczne dla debugowania do syslog. tuner.o Sterownik tunera. Potrzebujemy go koniecznie, chyba że chcemy używać tylko kamery lub zewnętrznego tunera... opcje insmod: debug=1 wysyła informacje użyteczne dla debugowania do syslog. type=n typ układu tunera. n jak poniżej: 0: tuner Temic PAL 1: tuner Philips PAL_I 2: tuner Philips NTSC 3: tuner Philips SECAM 4: brak tunera 5: tuner Philips PAL 6: tuner Temic NTSC 7: tuner Temic PAL *8: tuner Alps TSBH1 NTSC *9: tuner Alps TSBE1 PAL i2c_chardev.o urządzenie znakowe dla dostępu do szyny i2c. Działa tylko z jądrami 2.1.x, nie kompilowane domyślnie. ______________________________________________________________________ 77.. OOdd ttłłuummaacczzaa Tłumaczenie to jest chronione prawami autorskimi Š Leszka Pietryki. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znajdziecie tu jakieś poważne błędy, literówki itp., wyślijcie mi, proszę, e-maila, żebym mógł je poprawić. Nie ponoszę żadnej odpowiedzialności za ewentualne efekty stosowania się do rad zawartych w tym dokumencie. W jądrach serii 2.4 konfiguracja przebiega nieco inaczej - moduły szyny i2c zostały oddzielone, rozszerzono zakres obsługiwanego sprzętu. Koniecznie przeczytajcie dokumentację w /usr/src/linux/Documentation/video4linux/. doc-linux-pl-2002.06.14.orig/mini/Bridge+Firewall.pl.txt0100664000175000017500000005322007104371340021436 0ustar covencoven Bridge+Firewall Autor: Peter Breuer, ptb@it.uc3m.es v1.1, 23 Grudnia 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.01, 26 Lipca 1997 W oryginalnym dokumencie na temat Bridge'a opisane są inne sposoby podejścia. Jest to Bridge mini-HOWTO napisane przez Chrisa Cole'a . Wersja, na której bazowałem to 1.03 z 23 Sierpnia 1996. Oryginał tego dokumentu znajduje się na ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO/mini. Dokument ten jest napisany w standardzie ISO-8859-2. ______________________________________________________________________ Spis treści 1. Co, jak i dlaczego ? 1.1 Co. 1.2 Dlaczego. 1.3 Jak. 2. Bridge. 2.1 Oprogramowanie. 2.2 Najpierw poczytaj. 2.3 Konfiguracja startu systemu. 2.4 Konfiguracja jądra. 2.5 Adresy sieciowe. 2.6 Ruting sieci. 2.7 Konfiguracja karty. 2.8 Dodatkowy ruting. 2.9 Konfiguracja Bridge'a. 2.10 Wypróbuj. 2.11 Sprawdzenia. 3. Firewall. 3.1 Oprogramowanie i czytanie. 3.2 Sprawdzenie wstępne. 3.3 Zasady domyślne. 3.4 Dziury na adres. 3.5 Dziury na protokół. 3.6 Sprawdzenia. 4. Od tłumacza. ______________________________________________________________________ 11.. CCoo,, jjaakk ii ddllaacczzeeggoo ?? 11..11.. CCoo.. Bridge jest to inteligentne połączenie pomiędzy dwoma kartami sieciowymi. Firewall jest to inteligentny izolator. 11..22.. DDllaacczzeeggoo.. Możesz chcieć bridge'a jeśli masz kilka komputerów: ˇ żeby zaoszczędzić pieniądze na hubie jeśli akurat masz dodatkową kartę ethernet-ową, ˇ żeby oszczędzić sobie nauki jak robić IP-forwarding i inne triki jeśli masz dwie karty w swoim komputerze, ˇ żeby oszczędzić sobie pracy jeśli coś się w przyszłości zmieni. "Kilka komputerów" to może być np. trzy jeśli mają być rutowane, bridge'owane albo po prostu od czasu do czasu zmieniają swoje miejsce pobytu. Możesz także chcieć mieć bridge tylko dla zabawy, żeby się dowiedzieć co on robi - ja właśnie dlatego sobie go postawiłem. Jeśli naprawdę chcesz go postawić z pierwszego powodu, to poczytaj lepiej NET-3-HOWTO albo Serial-HOWTO a znajdziesz tam lepsze obejścia. Firewall jest ci potrzebny jeśli: ˇ chronisz swoją sieć przed dostępem z zewnątrz albo ˇ chcesz zabronić wyjścia poza twoją sieć z jej środka Ja tu potrzebowałem tego drugiego. Przepisy na naszym uniwersytecie zabraniały nam grać rolę dostawcy Internet-u dla studentów. 11..33.. JJaakk.. Zacząłem bridge'ować dwie karty sieciowe w maszynie z firewallem a skończyłem na firewall-owaniu wraz z bridge'owaniem bez usuwania jednej z funkcji. Wydaje się to działać znacznie bardziej wydajnie niż każda z konfiguracji osobno. Mogę na przykład wyłączyć firewall a bridge dalej działa albo odwrotnie jeśli chcę być bardziej bezpieczny. Stawiałbym na to, że kod bridge'a jest tuż nad fizycznym poziomem urządzenia a kod firewalla jest o jeden poziom wyżej, tak że połaczenie bridge'a z firewallem działa tak jakby to była jedność a nie jakby działały równolegle. -> wej. bridge'a -> wej. firewalla -> jądro -> wyj. firewalla -> wyj. bridge'a Nie ma innego sposobu na wytłumaczenie dlaczego maszyna może być "konduktorem" i izolatorem w tym samym czasie. W każdym razie wydaje się to działać razem bardzo dobrze. Oto co ja robię ... 22.. BBrriiddggee.. 22..11.. OOpprrooggrraammoowwaanniiee.. Zdobądź konfigurator do bridge'a BRCFG.tgz . 22..22.. NNaajjppiieerrww ppoocczzyyttaajj.. Przeczytaj Multiple-Ethernet , żeby się dowiedzieć jak rozpoznać i skonfigurować więcej kart sieciowych. Więcej szczegółów na temat magii startowania, które możesz potrzebować jest w BootPrompt-HOWTO . Może obędzie się bez NET-3-HOWTO . Jest to dobry i długi dokument i będziesz musiał wybrać sobie to czego potrzebujesz. 22..33.. KKoonnffiigguurraaccjjaa ssttaarrttuu ssyysstteemmuu.. Po przeczytaniu powyższego dowiesz się, że musisz skompilować jądro, żeby rozpoznało drugie urządzenie ethernet-owe podczas startu oraz, że musisz dodać linię do pliku /etc/lilo.conf i uruchomić _l_i_l_o: append = "ether=0,0,eth1" Zauważ, że jest tu _e_t_h_1. _e_t_h_0 jest pierwszą kartą a _e_t_h_1 jest drugą kartą. Zawsze możesz podać parametry podczas startu kiedy lilo ich oczekuje. Oto przykład dla trzech kart: linux ether=0,0,eth1 ether=0,0,eth2 Ja używam loadlin.exe, aby uruchomić Linux-a: loadlin.exe c:\vmlinuz root=/dev/hda3 ro ether=0,0,eth1 ether=0,0,eth2 Zauważ, że to zmusza jądro do szukania podczas startu. Nie będzie to miało miejsca jeśli załadujesz sterowniki ethernet-owe jako moduły (ze względów bezpieczeństwa ponieważ kolejność szukania nie może być określona). Więc jeśli używasz modułów, to będziesz musiał dodać parametry określające IRQ i port w pliku /etc/conf.modules - to jest mój przykład: alias eth0 3c509 alias eth1 de620 options 3c509 irq=5 io=0x210 options de620 irq=7 bnc=1 Możesz sprawdzić czy używasz modułów przez _p_s _-_a_u_x i zobaczenie czy jest proces _k_e_r_n_e_l_d i czy w katalogu /lib/modules/`uname -r` są pliki *.o. (w miejsce _u_n_a_m_e _-_r wstaw wynik tego polecenia). Jeśli masz proces _k_e_r_n_e_l_d albo w podanym katalogu są pliki *.o, to wyedytuj plik /etc/conf.modules i przeczytaj uważnie stronę podręcznika systemowego na temat _d_e_p_m_o_d. Zauważ też, że do niedawna (2.0.25) sterownik 3c509 nie mógł być użyty jako moduł dla więcej niż jednej karty. Widziałem gdzieś łatę, która naprawia tę niedogodność. Może on być w jądrze kiedy to czytasz. 22..44.. KKoonnffiigguurraaccjjaa jjąąddrraa.. Skompiluj jądro z włączoną opcją bridge. CONFIG_BRIDGE=y Ja skompilowałem także z włączonymi opcjami firewalling, IP- forwarding, IP-masquerading i resztą. Ale tylko jeśli chcesz mieć także firewall. CONFIG_FIREWALL=y CONFIG_NET_ALIAS=y CONFIG_INET=y CONFIG_IP_FORWARD=y CONFIG_IP_MULTICAST=y CONFIG_IP_FIREWALL=y CONFIG_IP_FIREWALL_VERBOSE=y CONFIG_IP_MASQUERADE=y Nie potrzebujesz tego wszystkiego. To czego potrzebujesz, to standardowa konfiguracja sieci: CONFIG_NET=y i nie sądzę, żebyś się musiał przejmować innymi opcjami związanymi z siecią. Wszystkie opcje, których właściwie nie wkompilowałem w jądro mam dostępne jako moduły i mogę je dodać później. Zainstaluj nowe jądro, uruchom _l_i_l_o i zresetuj z nowym jądrem. W tym momencie nic się nie powinno zmienić. 22..55.. AAddrreessyy ssiieecciioowwee.. Chris twierdzi, że bridge nie powinien mieć adresu IP, ale to nie jest to ustawienie opisane tutaj. Będziesz chciał używać tej maszyny do łączenia się z siecią więc potrzebujesz adresu i musisz się upewnić, że masz skonfigurowane poprawnie urządzenie "loopback", tak żeby twoje oprogramowanie mogło komunikować się z miejscami, z którymi spodziewa się, że będzie się mogło porozumieć. Jeśli nie będzie tego urządzenia, to serwis nazw albo inny serwis sieciowy może nie działać. Przeczytaj NET-3-HOWTO , ale twoja standardowa konfiguracja powinna już to za ciebie zrobić: ifconfig lo 127.0.0.1 route add -net 127.0.0.0 Będziesz musiał nadać adres obojgu kartom. Ja dopasowałem swój /etc/rc.d/rc.inet1 w Slackware 3.x, aby ustawić moje dwie karty. A ty powinieneś także poszukać gdzie jest konfiguracja sieci u ciebie i podwoić instrukcje. Załóżmy, że masz już adres: 192.168.2.100 (jest to prywatny zarezerwowany adres sieciowy, ale nieważne - nikomu nie zaszkodzi jeśli użyjesz tego adresu przez pomyłkę) wtedy masz już pewnie linię: ifconfig eth0 192.168.2.100 netmask 255.255.255.0 metric 1 w swojej konfiguracji. Pierwsze co pewnie będziesz chciał zrobić to podzielić przestrzeń adresową na pół, tak że możesz potem te dwie połowy bridge'ować. Więc dodaj linię. która zredukuje maskę tak, że będzie ona adresować mniejszą ilość maszyn: ifconfig eth0 netmask 255.255.255.128 Spróbuj tego też. Powoduje to obcięcie przestrzeni adresowej do zakresu od .0 do .127. Teraz możesz ustawić swoją drugą kartę w drugiej połowie adresów. Upewnij się, że nikt jeszcze takiego adresu nie ma. Dla symetrii ja ustawiłem ją na 228 (128+100=228). Każdy adres będzie się tak zachowywał dopóki nie znajdzie się w masce tej pierwszej karty - a nawet wtedy, no może. Unikaj adresów specjalnych takich jak .0, .1, .128 o ile naprawdę wiesz co robisz. ifconfig eth1 192.168.2.228 netmask 255.255.255.128 metric 1 To powoduje zmniejszenie zakresu adresów drugiej karty do .128 do .255. 22..66.. RRuuttiinngg ssiieeccii.. Powyższe może być wystarczającą konfiguracją dla działającego bridge'a, ale ja będę miał także firewall i chcę kontrolować fizyczne przeznaczenie niektórych pakietów. Nawet wtedy trzeba się pilnować przed spoofingiem. Mam małą sieć maszyn dołączonych do hub-a na eth0, więc konfiguruję tam sieć: route add -net 192.168.2.128 netmask 255.255.255.128 dev eth0 128 byłoby 0 gdybym miał pełną klasę C. "dev eth0" nie jest tu potrzebne ponieważ adres karty zalicza się do tej sieci, ale może być potrzebne dla ciebie. Na drugiej karcie mam linię idącą prosto do dużego rutera, któremu ufam. client 129 __ | __ client 1 \ .0 .128 | / net 1 client 2 --- Hub - eth0 - Kernel - eth1 - Hub - Router --- net 2 client 3 __/ .100 .228 .2 | \__ net 3 | client 254 Dołączam adres tego rutera do tej karty jako statyczny ponieważ inaczej zaliczałby się on do maski tej pierwszej karty i jądro źle kierowałoby pakiety do tego dużego rutera. route add 192.168.2.2 dev eth1 Ja go nie potrzebuję ponieważ nie mam więcej maszyn w tej połówce przestrzeni adresowej, ale deklaruję sieć także na tej drugiej karcie route add -net 192.168.2.128 netmask 255.255.255.128 dev eth1 Muszę także wysłać wszystkie nie lokalne pakiety w świat, więc informuję jądro, żeby wysyłało je do dużego rutera: route add default gw 192.168.2.2 22..77.. KKoonnffiigguurraaccjjaa kkaarrttyy.. To tyle odnośnie standardowego ustawiania sieci, ale my mamy bridge więc musimy na obydwu (?) kartach słuchać pakietów, które nie są przeznaczone dla nas. Następujące dwie linie powinny się znaleźć w pliku konfigurującym sieć: ifconfig promisc eth0 ifconfig promisc eth1 Na stronie podręcznika systemowego napisane jest, że allmulti=promisc, ale u mnie to nie działało. 22..88.. DDooddaattkkoowwyy rruuttiinngg.. Jedno co zauważyłem, to to, że musiałem przynajmniej drugą kartę ustawić w tryb, w którym odpowiadałaby ona dużemu ruterowi jakie maszyny chowam w swojej sieci. ifconfig arp eth1 Na wszelki wypadek zrobiłem to samo dla pierwszej karty. ifconfig arp eth0. 22..99.. KKoonnffiigguurraaccjjaa BBrriiddggee''aa.. Umieść włączanie bridge'owania w swoim pliku konfiguracyjnym: brcfg -enable Powinieneś to próbować w czasie rzeczywistym cały czas oczywiście! Konfigurator bridge'a poda parę liczb. Możesz poeksperymentować włączając i wyłączając porty - jeden za każdym razem. brcfg -port 0 -disable/-enable brcfg -port 1 -disable/-enable Polecenie _b_r_c_f_g pokaże ci raport w każdej chwili. Zobaczysz, że bridge słucha, dowiaduje się i potem przekazuje pakiety. (Nie rozumiem dlaczego kod powtarza te same adresy sprzętowe dla obu moich kart, ale nieważne ... HOWTO Chrisa mówi, że to dobrze) 22..1100.. WWyypprróóbbuujj.. Jeśli cały czas wszystko u ciebie działa, to wypróbuj swoją konfigurację w rzeczywistości - wyłącz obie karty i uruchom swój plik konfiguracyjny: ifconfig eth0 down ifconfig eth1 down /etc/rc.d/rc.inet1 Jeśli masz szczęście, to różne podsystemy (nfs, ypbind, itp) nie zauważą tej zmiany. Nie próbuj tego o ile nie siedzisz przy klawiaturze. Jeśli chcesz być bardziej ostrożny niż teraz, powinieneś wyłączyć tyle demonów ile się da i odmontować katalogi nfs. Najgorszym co może się stać, to to, że będziesz musiał zrestartować komputer w trybie jednego użytkownika (parametr "single" dla lilo lub loadlin) i zmienić wszystko na stan taki jaki był przed zmianą konfiguracji. 22..1111.. SSpprraawwddzzeenniiaa.. Sprawdź czy na każdym interfejsie jest inny ruch: tcpdump -i eth0 (w jednym oknie) tcpdump -i eth1 (w drugim oknie) Powinieneś się przyzwyczaić do używania _t_c_p_d_u_m_p do szukania przyczyn niektórych zdarzeń, które nie powinny mieć miejsca a mają. Na przykład szukanie pakietów, które przeszły przez bridge do drugiej karty z wewnętrznej sieci. W tym przykładzie szukam pakietów z maszyny o adresie .22: tcpdump -i eth1 -e host 192.168.2.22 Potem wyślij ping-a z maszyny .22 do rutera. Powinieneś zobaczyć raport o tym pakiecie. W tym momencie powinieneś mieć w pełni działający bridge z dwoma adresami. Sprawdź czy możesz je pingować z zewnątrz i z wewnątrz sieci oraz, że możesz się łączyć z jednej sieci do drugiej i z zewnątrz. 33.. FFiirreewwaallll.. 33..11.. OOpprrooggrraammoowwaanniiee ii cczzyyttaanniiee.. Powinieneś przeczytać Firewall-HOWTO . Dowiesz się stamtąd skąd wziąć _i_p_f_w_a_d_m jeśli jeszcze go nie masz. Są jeszcze inne narzędzia, które możesz ściągnąć, ale ja nie zrobiłem nic dalej bez _i_p_f_w_a_d_m. Jest on dość przyjazny i niskopoziomowy ! Widzisz dokładnie co się dzieje. 33..22.. SSpprraawwddzzeenniiee wwssttęęppnnee.. Wkompilowałeś IP-forwarding i -masquerading w jądro, więc możesz sprawdzić czy firewall jest w swoim domyślnym (akceptującym) stanie poleceniami: ipfwadm -I -l ipfwadm -O -l ipfwadm -F -l I tak odpowiednio wyświetlane są zasady dotyczące wchodzących, wychodzących i przekazywanych (masquerading) pakietów. _-_l oznacza "list". Możliwe, że wkompilowałeś także zliczanie (accounting): ipfwadm -A -l Powinieneś zobaczyć, że nie ma zdefiniowanych żadnych zasad i że domyślnym stanem jest akceptacja wszystkich pakietów. Możesz wrócić do tego stanu w każdej chwili pisząc: ipfwadm -I -f ipfwadm -O -f ipfwadm -F -f _-_f oznacza "flush". Możliwe, że musisz tego użyć. 33..33.. ZZaassaaddyy ddoommyyśśllnnee.. Chcę po prostu odciąć resztę świata od swojej sieci wewnętrznej i nic więcej, tak więc ostatnią (domyślną) zasadą będzie ignorowanie wszelkich pakietów pochodzących z wnętrza sieci i zaadresowanych na zewnątrz. Umieściłem wszystkie te zasady (w takiej kolejności) w /etc/rc.d/rc.firewall i wykonuję ten skrypt z rc.local podczas startu. ipfwadm -I -a reject -S 192.168.2.0/255.255.255.128 -D 0.0.0.0/0.0.0.0 _-_S oznacza źródłowy (source) adres/maskę. _-_D to adres/maska przeznaczenia (destination). Ten format dla ipfwadm-a jest trochę długi. Program ten jest inteligentny jeśli chodzi o nazwy sieciowe i niektóre popularne skróty. Zajrzyj do podręcznika systemowego. Przypuszczalnie bardziej wygodnie jest określać niektóre lub wszystkie zasady dla wychodzącej połowy firewall-a używając opcji _-_O zamiast _-_I, ale ja określę je dla części wchodzącej. 33..44.. DDzziiuurryy nnaa aaddrreess.. Przed zasadami domyślnymi muszę umieścić kilka zasad, które służą jako wyjątek od ogólnego zabronienia dostępu do serwisów zewnętrznych dla klientów wewnętrznych. Chcę traktować adres firewall-a w sieci wewnętrznej specjalnie. Zabronię logowania się na tę maszynę o ile ktoś nie ma specjalnego pozwolenia, ale jak już się tam zalogują, to powinni mieć możliwość kontaktu ze światem. ipfwadm -I -i accept -S 192.168.2.100/255.255.255.255 \ -D 0.0.0.0/0.0.0.0 Chcę także, aby klienci wewnątrz sieci mogli się komunikować z firewall-em. Może mogą go zmusić, aby wypuścił ich na zewnątrz ! ipfwadm -I -i accept -S 192.168.2.0/255.255.255.128 \ -D 192.168.2.100/255.255.255.255 W tym momencie sprawdź czy możesz się dostać do klientów wewnątrz sieci z zewnątrz poprzez telnet i nie możesz się wydostać. Oznacza to, że możesz się kontaktować, ale klienci nie mogą ci odpowiedzieć. Powinieneś móc się dostać wszystkimi drogami jeśli używasz firewall-a jako maszyny przejściowej. Spróbuj także _r_l_o_g_i_n i _p_i_n_g z uruchomionym _t_c_p_d_u_m_p na jednej z kart. Powinieneś umieć odpowiednio wykorzystać to co robisz. 33..55.. DDzziiuurryy nnaa pprroottookkóółł.. W następnym kroku poluźniłem trochę zasady protokół po protokole. Chcę, na przykład, wpuszczać ping-i, żeby dostać odpowiedź. ipfwadm -I -i accept -P icmp -S 192.168.2.0/255.255.255.128 \ -D 0.0.0.0/0.0.0.0 _-_P _i_c_m_p to magiczne zaklęcie dla konkretnego protokołu. Dopóki trzymam ftp-proxy pozwalam także na odwołania ftp na zewnątrz przez konkretne porty. Te docelowe porty na odległej maszynie to: 20, 21, 115 ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \ -D 0.0.0.0/0.0.0.0 20 21 115 Bez działającego serwera nazw nie mógłbym mieć działającego sendmail- a. Zamiast ustawić serwer nazw na firewall-u, pozwoliłem mu przepuszczać zapytania skierowane do najbliższego serwera nazw i umieściłem jego adres w plikach /etc/resolv.conf u klientów - _n_a_m_e_s_e_r_v_e_r _1_2_3_._4_5_6_._7_8_9_._3_1 - w osobnej linijce. ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \ -D 123.456.789.31/255.255.255.255 54 To, którego portu używa dany serwis możesz dowiedzieć się z programu _t_c_p_d_u_m_p. Po prostu uruchom dany serwis przez ftp, albo telnet na danym kliencie i szukaj go na portach wejściowych albo wyjściowych na danym kliencie: tcpdump -i eth1 -e host client04 Plik /etc/services jest drugim ważnym źródłem. Aby pozwolić na dostęp poprzez telnet do firewall-a z zewnątrz, musisz pozwolić klientom na wołanie na konkretnym porcie. Rozumiem dlaczego jest to potrzebne dla ftp - z powodu serwera, który ustawia strumień danych na końcu - ale nie jestem pewien dlaczego telnet także tego potrzebuje. ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 ftp telnet \ -D 0.0.0.0/0.0.0.0 Są problemy z pewnymi demonami, które sprawdzają nazwę firewall-a, żeby zdecydować jaki jest ich adres sieciowy. _r_p_c_._y_p_p_a_s_s_w_d_d to jeden, z którym miałem problemy. Nalegał na rozsyłanie informacji, że jest on poza firewall-em (na drugiej karcie). To znaczy, że klient wewnątrz nie może się z nim porozumieć. Zamiast uruchamiania IP-aliasing-u, albo zmiany kodu demona, odwzorowałem nazwę dla karty wewnętrznej u klientów w ich plikach /etc/hosts. 33..66.. SSpprraawwddzzeenniiaa.. Teraz chcesz sprawdzić czy wciąż możesz połączyć się telnet-em, rlogin-em lub ping-ować z zewnątrz. Z wewnątrz powinieneś móc ping- ować na zewnątrz. Powinieneś móc także połączyć się telnet-em z firewall-em z wewnątrz a później móc robić wszystko. To tyle. W tym momencie możesz się pouczyć o rpc/Yellow Pages i interakcji z plikiem haseł. Sieć chroniona firewall-em powinna działać tak, aby nie pozwalać nieuprzywilejowanym użytkownikom na logowanie się na firewall-u i przez to na wychodzenie na zewnątrz.. A to już historia na inne HOWTO. 44.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl doc-linux-pl-2002.06.14.orig/mini/Bridge.pl.txt0100664000175000017500000001367307104371340017705 0ustar covencoven Bridge - instalacja. Autor: Chris Cole, chris@polymer.uakron.edu v1.03, 23 Sierpnia 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.01, 26 Lipca 1997 Wszelkie sugestie i poprawki są mile widziane pod adresem _c_h_r_i_s_@_p_o_l_y_­ _m_e_r_._u_a_k_r_o_n_._e_d_u. Oryginał tego dokumentu możesz znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO/mini. Dokument ten został napisany w standardzie ISO-8859-2. 11.. UUssttaawwiieenniiee bbrriiddggee''aa.. 1. Zdobądź "Bridge Config" (BRCFG.tgz): shadow.cabi.net . 2. Zdobądź i przeczytaj Multiple ethernet HOWTO na SUNSite Polska . 3. Włącz złożone urządzenia ethernet-owe przez dodanie tej linii do pliku /etc/lilo.conf append = "ether=0,0,eth1" Jeśli masz trzy interfejsy na swoim bridge'u, to wpisz taką linię: append = "ether=0,0,eth1 ether=0,0,eth2" Więcej urządzeń można dodać zwiększając ilość parametrów _e_t_h_e_r. Domyślnie jądro szuka tylko jednej karty Ethernet, a jak już znajdzie to przerywa dalsze szukanie. Linia ta informuje jądro, aby szukało dalej urządzeń Ethernet jak już znajdzie jedno. Alternatywnie możesz użyć parametru podczas startu: linux ether=0,0,eth1 albo z trzema interfejsami: linux ether=0,0,eth1 ether=0,0,eth2 4. Skompiluj ponownie jądro z włączoną opcją BRIDGING. 5. Bridge nie powinien mieć adresu IP. Może mieć, ale czysty bridge go nie potrzebuje. Aby usunąć adres IP ze swojego bridge'a idź do katalogu /etc/sysconfig/network-scripts/ (w dystrybucji RedHat) i skopiuj plik ifcfg-lo0 na ifcfg-eth0 i ifcfg-eth1. W tych dwóch plikach *-eth zmień linię DEVICE=lo na DEVICE=eth0 i DEVICE=eth1. W innych dystrybucjach może to być rozwiązane inaczej, zrób to co musisz ! Jeśli jest więcej niż dwa interfejsy na tym bridge'u, upewnij się, że zrobiłeś dla nich odpowiednie urządzenia. 6. Zrestartuj system, żeby uruchomić nowe jądro i żeby interfejsy sieciowe nie były podpięte pod numery IP. 7. Jak już system stoi, uruchom kart-ę/y w trybie "bezwzględnym" (promiscous), tak że będą śledzić każdy pakiet przechodzący przez nie: ifconfig promisc eth0 ; ifconfig promisc eth1 Wszystkie interfejsy, do których są podłączone segmenty mające być bridge'owane muszą być w tym trybie. 8. Włączanie bridge'owania przy pomocy programu _b_r_c_f_g: brcfg -ena 9. Sprawdź czy na każdym interfejsie jest inny ruch: tcpdump -i eth0 (w jednym oknie) tcpdump -i eth1 (w innym oknie) Uruchom jakiegoś sniffer-a czy tcpdump-a na innej maszynie, żeby zweryfikować, że bridge oddziela poprawnie segmenty. 22.. CCzzęęssttee pprroobblleemmyy.. P1: Dostaję komunikat: "ioctl(SIOCGIFBR) failed: Package not installed". Co on oznacza ? O1: Nie masz włączonej opcji _B_R_I_D_G_I_N_G w jądrze. Zdobądź jakieś jądro 2.0 lub wyższe i skompiluj je z tą opcją włączoną. P2: Maszyny z jednej strony nie mogą ping-ować drugiej strony ! O2: - Czy włączyłeś bridge'owanie poleceniem _b_r_c_f_g _-_e_n_a ? (_b_r_c_f_g powinien pisać bridging is ENABLED.) - Czy włączyłeś tryb "bezwzględny" na urządzeniach ? (wydaj polecenie _i_f_c_o_n_f_i_g. Flaga PROMISC powinna być włączona dla wszystkich interfejsów) - Używając złożonych adapterów interfejsów, upewnij się, że odpowiedni interfejs jest włączony. Może musisz użyć programu konfiguracyjnego, który przyszedł wraz z kartą. P3: Nie mogę się połączyć telnet-em, ftp z bridge'a ! Czemu ? O3: Dlatego, że interfejsy na bridge'u nie mają przypisanych adresów IP. Bridge ma być przeźroczystą częścią sieci. P4: Co muszę zrobić, żeby ustawić ruting ? O4: Nic ! Cały ruting jest obsługiwany przez kod w jądrze. Żeby zobaczyć znalezione przez bridge adresy ethernet-owe użyj programu _b_r_c_f_g: brcfg -deb P5: Bridge niby działa, ale dlaczego _t_r_a_c_e_r_o_u_t_e go nie pokazuje ? O5: Z powodu natury bridge'a - _t_r_a_c_e_r_o_u_t_e NNIIEE powinien pokazywać bridge'a jako części ścieżki. Bridge ma być przeźroczystą częścią sieci. P6: Czy muszę wkompilować IP_FORWARD w jądro ? O6: Nie. Kod bridge'a w jądrze zajmuje się transportem pakietu. IP_FORWARD jest dla ruterów, które mają przypisane adresy IP do swoich interfejsów. P7: Dlaczego według programu _b_r_c_f_g adresy ethernet-owe dla portu 1 i 2 są takie same - nie powinny być różne ? O7: Nie. Każdemu portowi na bridge'u specjalnie przypisywany jest ten sam adres ethernet-owy przez kod bridge'a. 33.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl doc-linux-pl-2002.06.14.orig/mini/Callback.pl.txt0100664000175000017500000003712207104642140020177 0ustar covencoven Callback-miniHOWTO Paweł Skonecki, e-mail: stona@fizyka.umcs.lublin.pl v1.0, Marzec 2000 Dokument ten opisuje, jak za pomocą Linuxa ustawić połączenie zwrotne przy pomocy modemu. Program callbeck opracował Gert Doering, . Chciałbym podziękować Annie za wyrozumiałość dla pingwinów. ______________________________________________________________________ Spis treści 1. Wstęp. 1.1 Opinie. 1.2 Rozpowszechnianie. 2. A może sieć w domu ... 3. Pierwsze kroki z modemem. 4. Zadzwoń do Linuxa. 5. Teraz Linux dzwoni do mnie ... 6. Podsumowanie. ______________________________________________________________________ 11.. WWssttęępp.. 11..11.. OOppiinniiee.. Czekam na wszystkie opinie, czy to dobre, czy złe, na temat zawartości tego dokumentu. Starałem się, aby informacje w nim umieszczone były jak najbardziej pewne i dokładne. Daj mi znać gdy znajdziesz jakieś błędy. Dziękujemy ludziom którzy przysłali by poprawki lub sugestie. Ich wkład uczynił ten dokument o wiele lepszym, niż gdybym tworzył go sam. Wysyłaj komentarze, sugestie i poprawki na adres email autora podany powyżej. Nie mam nic przeciwko odpowiadaniu na pytania, jednak radzę najpierw przeczytać dokument w całości. 11..22.. RRoozzppoowwsszzeecchhnniiaanniiee.. Copyright ? 1999 by Paweł Skonecki. Ten dokument może zostać rozpowszechniany na warunkach ustalonych przez Licencję Linux Documentation Project. Skontaktuj się z autorem, jeśli nie jesteś w stanie otrzymać licencji. Ta dokumentacja jest darmowa. Jest rozpowszechniana z nadzieją, że okaże się użyteczna, jednak bez żadnej gwarancji. 22.. AA mmoożżee ssiieećć ww ddoommuu ...... Większość z nas używa sieci korporacyjnych lub uczelnianych w swoim miejscu pracy. Pojawia się jednak potrzeba skorzystania z sieci w domu lub w innym miejscu. Może przecież okazać się iż pracownicy będący w terenie muszą mieć dostęp do danych znajdujących się w Internecie lub też w sieci firmowej. Możemy mieć też do czynienia z sytuacją kiedy firmie będzie opłacać się zapłacić pracownikom za połączenia telefoniczne aby pracowali w domach. Sądzę że optymalnym rozwiązaniem jest zainstalowanie na serwerze z Linuxem i oprogramowania typu callback. Callback to nic innego jak oddzwanianie pod wskazany numer na koszt firmy. Spróbuję przedstawić jego działanie. Osoba posiadająca odpowiednie uprawnienia dzwoni pod numer modemu będącego w serwerze z Linuxem, tam weryfikuje się po raz pierwszy. Wtedy po stronie użytkownika następuje "zawieszenie modemu" na stan oczekiwania. W tym czasie serwer dzwoni po wskazany numer. Użytkownik weryfikuje się powtórnie. Następuje zestawienie połączenia a impulsy biją po stronie serwera (czyli w firmie), osoba do której oddzwania serwer płaci jedynie za zainicjowanie połączenia. Podwójna weryfikacja oraz dodatkowe parametry w programie callback uniemożliwiaj by osoby nie powołane wtargnęły na nasz rachunek. Można także ograniczyć osobom korzystającym z tej usługi do dostęp do sieci wewnętrznej lub też całego Internetu. Callback jest elastyczny i pozwala na wiele opcji w stosunku do osób go używających. W poniższym mini-HOWTO postaram się przedstawić konfigurację serwera callback na Linuxe wytłumaczę jak dostosować swoją maszynę do odbierania połączeń. 33.. PPiieerrwwsszzee kkrrookkii zz mmooddeemmeemm.. Aby wszystko zadziałało jak należy potrzebujemy niezłego modemu do naszego serwera z Linuxem. W tej mierze istniej ,a różne preferencje administratorów i nie można wskazać tutaj żadnej marki jako faworyta. Warto jednak pamiętać przyzakupie o pewnych zasadach jakimi należy się kierować. ˇ Nie powinniśmy kupować pod żadnym pozorem modemów typu WinModem ponieważ nie zadziałają one z Linuxem. ˇ Modem zewnętrzny jest szybszy od urządzenia wewnętrznego ponieważ w ograniczonym zakresie korzysta z zasobów komputera. Ich wadą natomiast jest to iż zajmują one com-a co może potem utrudniać podłączanie następnych urządzeń korzystających z com-ów. ˇ Warto zainwestować modem w standardzie v.90 ponieważ daje on możliwość szybszej pracy chociaż nie zawsze się to udaje to udaje na słabych łączach. ˇ Jeżeli już modem wewnętrzny to lepiej z szyna ISA jak PCI ponieważ szkoda złącza PCI na modem ˇ Nie zaleca się także modemów typu Plug&Play, jeżeli już jest taki należy wyłączyć opcję Plug&Play i nastawić w nim wzorki na następnego wolnego coma. Jeżeli mamy już modem który będziemy wykorzystywać do komunikacji pomiędzy serwerem a osobami do niego dzwoniącymi. Musimy go zainstalować go w systemie. Aby to zrobić musimy sprawdzić na jaki com-ie jest nastawiony modem i czy nie pokrywa się z już wykorzystywanym. Jeżeli tak jest to trzeba przestawić modem na kolejny wolny com. Instalacja jest prosta i nie powinna nastręczać problemów. Wystarczy że będziemy się trzymać zasad jakie istniej ,a w systemie. Aby Linux "zobaczył" modem należy poprowadzić połączenie symboliczne z com-a do urządzenia /dev/modem. Przykładowo jeżeli mamy modem na com 2 piszemy: ______________________________________________________________________ ln -s /dev/cua1 /dev/modem ______________________________________________________________________ sprawdzamy teraz komendą ls -l czy wszystko jest w porządku: lrwxrwxrwx 1 root root 4 Dec 28 15:28 modem -> cua1 Jeżeli wynik jest jak powyżej to oznacza że tak właśnie się stało. Jeżeli modem znajduje się na innym com-ie winniśmy zastosować się do poniższych zasad i poprowadzić odpowiednie połączenie symboliczne. ˇ /dev/cua0 to com1 ˇ /dev/cua1 to com2 ˇ /dev/cua2 to com3 ˇ /dev/cua3 to com4 Sprawdzamy teraz czy wszystko chodzi przy pomocy minicoma, który powinien znajdować się w większości dystrybucji. Przy jego pomocy dzwonimy pod jakikolwiek numer gdzie znajduje się modem. Teraz czas na dzwonienie do nas .... 44.. ZZaaddzzwwoońń ddoo LLiinnuuxxaa.. Pierwszym krokiem w udostępnieniu usługi callback na Linuxe jest ustawienie odpowiednich parametrów w jądrze systemu. W tym celu musimy sprawdzić czy nasze jądro systemu obsługuje protokół ppp. Jeżeli tak nie jest to powinno się w kompilować go w jądro systemu albo pozostawić jako moduł do ładowania. Nie jest to miejsce na przedstawiane tego problemu. Dlatego też proszę zapoznać się z Kernel- HOWTO. Jeżeli już mamy odpowiednio przygotowane jądro czas zabrać się za konfigurację oprogramowania. W tym celu winniśmy zainstalować na naszym serwerze pakiet o nazwie mgetty-sendfax, ponieważ on zawiera w sobie program do oddzwaniania. Nie jest to jego jedyna możliwość, może także wysyłać fax-y oraz pracować jako access-server. Tu warto wspomnieć o pracy callback-u. Kiedy inicjujemy połączenie z serwerem następuje pierwotna weryfikacja użytkownika. Poproszony jest on o wpisanie hasła a kiedy to uczyni następuje "zawieszenie" modemu po stronie dzwoniącego a serwer oddzwania pod wskazany numer związany z użytkownikiem. Jeżeli nastąpi połączenie następuje drugi monit o username oraz hasło. Jeżeliwszystko pójdzie dobrze to połączenie zostaje zestawione pomiędzy komputerem lokalnym i zdalnym (user uruchomi protokół ppp po stronie serwera). Tak więc cała operacja składa się z dwóch elementów. Mamy więc do czynienia z dwoma rodzajami użytkowników: pierwszy to użytkownik do callbacku a drugi to ten kóry ma uruchomić protokół ppp po stronie serwera. Najpierw zajmijmy się drugim z nich. Zakładamy konto o dowolnym username testowo niech to będzie user pppuser. pppuser:klkIOM89mn65H:230:PPP Dialin:/home/pppuser:/etc/ppp/ppplogin Następnie zmieniamy mu hasło. Jak można zauważyć nie ma on normalnego shall-a do logowania ale pliczek w /etc/ppp/ppplogin. Musimy go własnoręcznie przygotować. Przechodzimy do tego katalogu i przy pomocy jakiegokolwiek edytora tworzymy plik i wprowadzamy odpowiednie parametry np.: vi ppplogin. Wewnątrz niego wpisujemy. #!/bin/sh exec /usr/sbin/pppd -detach 192.168.1.1:192.168.1.2 gdzie adres 192.168.1.1 to adres serwera w którym jest modem a adres 192.168.1.2 to adres jaki przypisaliśmy naszemu modemowi. Pamiętajmy nadać temu plikowi prawo wykonywania. Ponieważ ppp domyślnie sprawdza co znajduje się w pliku /etc/ppp/options musimy go stworzyć aby wpisać odpowiednie wartości. Podobnie jak w powyższym przypadku tworzymy plik przy pomocy dowolnego edytora i wpisujemy odpowiednio: netmask 255.255.255.0 proxyarp lock crtscts modem Najważniejsza z powyższych opcji jest proxyarp, umożliwia on wyjście na świat poprzez modem w serwerze. Jej brak może być korzystny jeżeli nie chcemy aby nasi pracownicy używali Internetu a jedynie sieci lokalnej. Pozostałe z nich oprócz netmask (tego nie trzeba tłumaczyć), dotyczą kontroli modemu. Teraz przechodzimy do konfiguracji modemu w systemie w taki sposób aby zaraz po jego starcie był gotowy do pracy czyli odbierania połączeń. Uruchamiamy dowolny edytor a w nim plik /etc/inittab gdzie dopisujemy poniższą linę. s1:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100 jest ona prawidłowa dla modemów które znajdują się na com2, jeżeli jest inaczej poprawiamy ją. Np dla com-a 1 wyglądać powinna s0:2345:respawn:/sbin/mgetty ttyS0 -D /dev/ttyS0 vt100 Wykonujemy teraz polecenie init q i jeżeli nie mamy informacji o błędach w logach sytemu przechodzimy do następnego etapu. Wracamy do katalogu /etc/ppp gdzie tworzymy plik options.ttyS1 (jeżeli mamy modem na com 1 options.ttyS0) a w nim wpisujemy adesy IP. IP_localne:IP_dla_modemu_zdalnego dla naszej sieci będzie to 192.168.1.1:192.168.1.2 Mamy już wiele - przed zadzwonieniem do naszego systemu, sprawdzamy co znajduje się w pliku /etc/mgetty+sendfax/login.config Najważniejsza jest linia podobna do tej: /AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login detach kdebug 7 debug Pozostałe możemy zaznaczyć znakiem #. Ważną sprawą jest także nadanie odpowiedniego suida demonowi ppp, tak aby użytkownik pppuser mógł go uruchomić oraz podnieść na nim interfejs. ______________________________________________________________________ chmod u+s /usr/sbin/pppd ______________________________________________________________________ czego efektem będzie -rwsr-xr-x 1 root root 106892 Jan 11 1999 /usr/sbin/pppd Od tego momentu użytkownik pppuser będzie mógł uruchomić demona ppp. Warto dopisać zmianę preferencji pppd w cronie, u mnie po restarcie systemu dochodziło do samoczynnej zmiany preferencji. Aby zweryfikować nasze dokonania dzwonimy pod numer naszego serwera. Jeżeli robimy to z Windows-o'w wywołujemy okno terminala a jeżeli wykorzystujemy do tego Linuxa to poprawiamy skrypty z których korzystamy dzwoniąc do naszego provaidera. Logujemy się do systemu jako pppuser z haslem mu nadanym. Mam nadzieję że wszystko jest w porządku. 55.. TTeerraazz LLiinnuuxx ddzzwwoonnii ddoo mmnniiee ...... Możemy dodzwaniać się już do naszego Linuxa. Pora teraz na to aby on do nas zadzwonił. Nie wymaga to specjalnego już wysiłku wystarczy wyedytować jeden plik. Zanim jednak to zrobimy musimy zebrać numery telefonów od osób które maj ,a korzystać z tej usługi. Sprawdzamy teraz czy w katalogu /etc/mgetty+sendfax znajduje się plik o nazwie callback.config. Jeżeli tam się znajduje to pozostawiamy go w spokoju. Można wypełnić go treścią ale nie ma najmniejszej potrzeby ponieważ jego pusta zawartość nie ma wpływu na funkcjonowanie callbacku. Ważne tylko aby tam był. Teraz czas na wpisanie numerów telefonów jakie wcześniej zebraliśmy. Będziemy kreować pseudo użytkowników powiązanych z numerami ich telefonów. W tym celu wpisujemy do pliku /etc/mgetty+sendfax/login.conf linijkę tekstu podobną do poniższej call - - /usr/sbin/callback - S 123456 gdzie _c_a_l_l to pseudo użytkownik potrzebny do zainicjowania połączenia zwrotnego, a linia _/_e_t_c_/_m_g_e_t_t_y_+_s_e_n_d_f_a_x_/ uruchamia program który oddzwania pod wskazany numer (w tym przypadku jest to 123456). Podobnie czynimy z innymi użytkownikami przypisując pseudo użytkownikom poszczególne numery telefonów. Postaram się teraz wytłumaczyć jak całą operacja wygląda w praktyce. Gdy dzwonimy do naszego serwera ten prosi nas o weryfikację. Wtedy to logujemy się jako pseudo użytkownik, w tym przypadku call. Skrypt w naszym komputerze zawesza modem w oczekiwaniu a połączenie zostaje przerwane. Program callbeck zaczyna działać i oddzwania do nas. Weryfikujemy się powtórnie jako pppuser zestawiamy połączenie oraz postawienie interfejsu ppp na serwerze. I to już wszystko. Czeka nas teraz skonfigurowanie stacji roboczych pracujących z naszym serwerem. W przypadku Windows operacja jest dość prosta. Instalujemy Dial-up dla naszego numeru dostępowego a następnie we właściwościach modemu znajdujemy zakładkę "Właściwości" --> Rozszerzone ---> Ekstra gdzie wpisujemy &c0 s0=1 Zamykamy okienko i dzwonimy. Logujemy się według opisu powyżej. Gdy chcemy zastosować Linux-a, to musimy odwołać się do skryptów. Trudno jest podać jakiś jeden dobry skrypt dla naszego Linuxa. Ważne jest to aby mieć dobrze skonfigurowane ppp w systemie (sprawdź to dzwoniąc jako pppuser najpierw przez skrypty). Poniżej skrypty napisane przez A. Góździa. Najlepiej jak wsadzisz wszystko do katalogu /etc/ppp i tam będziesz odpalał swoje skrypty. Nie musisz tego koniecznie robić tego w tym miejscu jest to tylko moja sugestia. Dokładnie o pisaniu skryptów pod Linuxem możesz poczytać w PPP-HOWTO. Najpierw jednak plik konfiguracyjny dla demona ppp (przykład dla modemu na comie 2). /etc/options lock defaultroute noipdefault modem /dev/cua1 33600 crtscts debug passive asyncmap 0 I właściwe skrypty: ˇ Pierwszy o nazwie ppp-call #!/bin/bash teksta="Polaczenie nieudane" tekstb="Chyba bedziesz polaczony" # /sbin/setserial /dev/cua1 spd_vhi killall -INT pppd 2>/dev/null rm -f /var/lock/LCK* /var/run/ppp*.pid (/usr/sbin/pppd -detach /dev/ttyS1 115200 \ connect "/usr/sbin/chat -v -f /etc/ppp/pppcallback" &) || \ (echo $teksta; ls marsss >/dev/null; exit 1) echo $tekstb exit 0 ˇ Drugi nazwany pppcallback TIMEOUT 60 ABORT 'ERROR' ABORT 'BUSY' ABORT 'NO ANSWER' ABORT 'NO DIALTONE' ABORT '\nVOICE\r' ABORT '\nRINGING\r\n\r\nRINGING\r' ´'OK-+++\c-OK' 'AT&C0S0=1' TIMEOUT 75 OK ATDT5376443 CONNECT '' ogin:-ogin: ppp_pseudouser TIMEOUT 180 CONNECT '' TIMEOUT 20 ogin:-ogin: pppuser sword:-sword ppp Powyższe dwa skrypty powinny wystarczyć dla prawidłowego funkcjonowania całości. Pozostaje teraz odpalić ppp-call :) 66.. PPooddssuummoowwaanniiee.. Jak widać konfiguracja oddzwaniania nie jest skomplikowana i polega głównie na prawidłowym zestawieniu serwera ppp na Linuxie. Nie znam lepszej drogi na zrobienie acces-servera. Przedstawiona konfiguracja jest wynikiem prób i błędów, można zrobić ją całkowicie inaczej. Dlatego proponuję przejrzenie wszelkiej dokumentacji do tego zagadnienia to jest man pppd, NET3-HOWTO oraz PPP-HOWTO. Callback może być przyjemną alternatywą w pracy zdalnej. Inne moje dokumenty znajdziesz ftp://ftp.fizyka.umcs.lublin.pl/pub/priv/stona Paweł Skonecki e-mail: stona@fizyka.umcs.lublin.pl doc-linux-pl-2002.06.14.orig/mini/Coffee.pl.txt0100664000175000017500000004172607104371340017700 0ustar covencoven Coffee HOWTO Georgatos Photis gef@ceid.upatras.gr v0.5, 15 Stycznia 1998 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v1.0, 4 Sierpnia 1998 Jedna z najbardziej zastanawiających uwag o oprogramowaniu, które kiedykolwiek słyszałem - czy ten lub inny program może zrobić kawę. Linux POTRAFI ją zrobić. I smakuje doskonale! Od długiego czasu ludzkość zastanawia się, czy komputery potrawią robić kawę... Ludzie potrzebują kawy, żeby obudzić się i nie zasypiać przed komputerem przez długi czas. Każdy wie, że najlepsze programy pisze się w nocy... Głównym problemem jest kontrolowanie ekspresu do kawy komputerem, tak żeby można było sterować go programowo. Ogólnie oznacza to implemen­ tację przełącznika WŁ/WYŁ w obwodzie kontrolującym zasilanie ekspresu do kawy. Ten dokument został napisany w standardzie ISO-8859-2. ______________________________________________________________________ Spis treści 1. Menu 1.1 Kawa francuska 1.2 Nescaffe 1.3 Frappe 1.4 Freddo 1.5 Cappucino (do dodania) 1.6 Espresso (do dodania) 2. Układ elektroniczny 2.1 Napięcie kontrolujące 0-5V z komputera 2.2 Kontrolowanie za pomocą przekaźnika 2.3 Kontrolowanie triakiem - sposób 1 2.4 Kontrolowanie triakiem - sposób 2 3. Oprogramowanie 3.1 Program obsługi 3.2 Sterownik 3.3 Łączenie się z Internetem 4. Oznaki przedawkowania 5. Rozszerzenia 6. Odnośniki 7. Inne 7.1 Wstęp 7.2 Autorstwo i nadzór 7.3 Prawa autorskie 7.4 Dodatkowi autorzy 8. Od tłumacza ______________________________________________________________________ 11.. MMeennuu 11..11.. KKaawwaa ffrraannccuusskkaa Popularna kawa wśród programistów, ponieważ nie wymaga długiego przygotowania i nadzoru, tak jak programy komercyjne. Jej doskonały smak zainspirował tysiące programistów do napisania wyśmienitych programów, napisanych w pierwszych godzinach dnia. Windowsy na przykład zostały napisane o 5:00 rano, dzięki tej kawie. Wynik gwarantowany. 11..22.. NNeessccaaffffee Nescaffe jest dosyć mocną kawą, gotowaną przez nalewanie gorącej wody do mieszaniny kawy, cukru i wody. Zazwyczaj powinno się brać jedną łyżkę kawy i jedną łyżkę cukru, oraz trochę wody w celu zmieszania. W tym czasie powinna zagotować się gorąca woda. Wtedy zmieszaj ją z resztą - możesz dodać mleka. Chociaż możesz używać czegoś prostszego niż ekspres do kawy do zagotowania wody, wiele razy widziałem powyższą procedurę. 11..33.. FFrraappppee Popularna wersja powyższej kawy. Właściwie nie jest potrzebny ekspres do kawy, a lodówka do otrzymania zimnej wody i kostek lodu. 11..44.. FFrreeddddoo Trudny przepis. Przeczytaj coffe-faq (zobacz odnośniki) 11..55.. CCaappppuucciinnoo ((ddoo ddooddaanniiaa)) 11..66.. EEsspprreessssoo ((ddoo ddooddaanniiaa)) 22.. UUkkłłaadd eelleekkttrroonniicczznnyy Ogólny schemat wygląda tak: --------- 0-5V --------- ~220V ----------------- | PC |===>===| Obwód |========|Ekspres do kawy| --------- --------- ----------------- Celem jest wzięcie napięcia kontrolującego z komputera, które będzie napędzać elektrycznie odizolowany układ z przekaźnikiem lub triakiem. Jeżeli twój ekspres do kawy jest duży (więcej niż 200W), musisz wybrać przekaźnik, a jeśli nie, wystarczy triak. Wszystkie układy tu przedstawione zostały przetestowane raz albo więcej, ale TY ODPOWIADASZ ZA SKUTKI UŻYWANIA. Jeżeli nie masz doświadczenia z elektroniką, NIE baw się z tym, inaczej może ci coś nie wyjść... Powinieneś być bardzo ostrożny przy eksperymentach z 220V - można używać odpowiedniego bezpiecznika. 22..11.. NNaappiięęcciiee kkoonnttrroolluujjąąccee 00--55VV zz kkoommppuutteerraa Oto prosty przykład pobrania napięcia 0-5V z portu równoległego komputera. Widok od tyłu Męskie złącze ----- Pin 10 - ACK DB25 | | Pin 9 - D7 | | Pin 2 - D0 ~Strobe v v v Pin 1 - _________________________________________________________ / \ \ 13 12 11 10 9 8 7 6 5 4 3 2 1 / \ / \ 25 24 23 22 21 20 19 18 17 16 15 14 / \___________________________________________________/ Pin 1 to ,,Strobe'' (logika odwrotna) Piny 2-9 to sygnały SZYNY DANYCH (DATA BUS), dokładnie to, co zostało wpisane do (hmm ,,klamek''??? (latches) - przyp. tłum.) komendą OUTB. Pin 10 to sygnał potwierdzenia (ACK) sterowany przez ciebie, tak żebyć mógł wyprodukować przerwanie. Piny 18-25 są zwarte i jest to uziemienie (GND). Dokładniej: <= we pin Główny Nazwa => wy DB25 pin sygnału Bit Uwagi -------- ---- ------ ------- --- ----------------------- => 1 1 -Strobe C0- Ustaw niskie napięcie >0.5us do wysył. => 2 2 Dane 0 D0 Ustaw na pierwsze znaczące dane => 3 3 Dane 1 D1 ... => 4 4 Dane 2 D2 ... => 5 5 Dane 3 D3 ... => 6 6 Dane 4 D4 ... => 7 7 Dane 5 D5 ... => 8 8 Dane 6 D6 ... => 9 9 Dane 7 D7 Ustaw na ostanie znaczące dane <= 10 10 -Ack S6+IRQ Niskie napięcie ~ 5uS, po zaakcept. <= 11 11 +Busy S7- 1 Dla Zajęte/Offline/Błąd <= 12 12 +PaperEnd S5+ 1 Dla braku papieru <= 13 13 +SelectIn S4+ 1 Dla wybranej drukarki => 14 14 -AutoFd C1- Ustaw na 0 dla LF <= 15 32 -Error S3+ 0 dla Błędu/Offline/Końca papieru => 16 31 -Init C2+ Ustaw niskie napięcie > 50uS do inicjalizacji => 17 36 -Select C3- Ustaw na 0 do wybrania drukarki <==>18-25 19-30 GND 22..22.. KKoonnttrroolloowwaanniiee zzaa ppoommooccąą pprrzzeekkaaźźnniikkaa Najprostszy możliwy do zbudowania układ to: Vcc | +---------+ | __|__ Przekaźnik /^\ Dioda 1N4002 | /---\ | | +---------+ | | / 4.7K B|/ C port równoległy >-\/\/\/\/-| Tranzystor NPN: BD547A lub 2N2222A |\ E | V | pin GND portu równ. >--------+ | Uziemienie Połącz Vcc z napięciem równym napięciu przekaźnika (zazwyczaj 5 lub 12V). Oczywiście parametry przekaźnika powinny być poprawne dla twojego ekspresu. Barmani często umieszczają przekaźnik ZA tranzystorem, na emiterze (E) zamiast na kolektorze (C). Nie jest to dobre, ponieważ obciąża tranzystor i może być powodem zrobienia złej kawy :-). Dioda 1N4002 jest potrzebna do ochrony tranzystora przed napięciami przekaźnika. Jeśli jej nie użyjesz, tranzystor stanie się ciemniejszy i zacznie dymić... 22..33.. KKoonnttrroolloowwaanniiee ttrriiaakkiieemm -- ssppoossóóbb 11 Jeżeli potrzebujesz prostego obwodu, użyj sterownika triaków Motoroli - MOC301[012], razem z triakiem ogólnego zastosowania, takim jak SC 141D. Metoda ta ma zaletę - nie musisz stosować dodatkowego źródła zasilania. Dla nieindukcyjnych ładunków: 270 1 +-------+ 6 180 +5v -VAVAVA-----+ +----VAVAVA-----+-------------- Linia gorąca 2 | MOC | | TTL in ---------+ 3012 +nc VA SC141D | | 4 / | nc+ +------------/ | +-------+ +----\/\/\/---- Line Neutralna OBCIĄŻENIE Jeżel będziesz pracował z napięciem 220V, wybierz 3021. Do obciążeń indukcyjnych powinny być stosowane kondensatory obejściowe, zobacz ,,_M_o_t_o_r_o_l_a _A_p_p_l_i_c_a_t_i_o_n _N_o_t_e _A_N_-_7_8_0. Ekspresy do kawy są raczej obciążeniami opornościowymi, a nie indukcyjnymi (jak silniki), ale kto wie, jaki jest twój... 22..44.. KKoonnttrroolloowwaanniiee ttrriiaakkiieemm -- ssppoossóóbb 22 +5VDC | 180 180 2.2k +---/\/\/\----+-----+ +----/\/\/-+--/\/\/\---+-------> 120V | 1| |6 | | Gorąca | +=====+ | | MT1 | | MC | Sterown.| +-+ | | 3032| triaków | G | | TRIAK | +=====+ | /| | \ 2| |4 | / +-+ 2N3904 |----+ | | | | MT2 / | +--------- | -------+ | V \ | | | | / | \ | | \ 43 .01u --- 10k / | | / 500V --- \ | | | | / | +------+ | | | Neutralna | +--------+--+---o o--> 120V / load >-/\/\--| 2N3904 \ V | --- /// Powinieneś zmienić rezystory na odpowiednie dla 220V. Opis obwodu: MC2032 jest optoizolacyjnym sterownikiem triaka. 180-omowy rezystor zapewnia napięcie dla diody LED w optoizolatorze. Zmień wartość rezystora, jeśli to potrzebne, żeby uzyskać poprawny prąd (np. 15mA). Zauważ, że nie możesz testować tego układu bez obciążenia. Triak nie przełączy się, jeżeli nie będzie podłączony do źródła napięcia zmiennego, nie możesz więc testować go bez użycia napięcia AC i obciążenia. Zauważ napisz ,,500V'' na obudowie kondensatora .01. 33.. OOpprrooggrraammoowwaanniiee 33..11.. PPrrooggrraamm oobbssłłuuggii Będziesz musiał napisać program wykonujący następujące czynności: ˇ Zdobywa uprawnienia do używania przestrzeni adresowej I/O, przez odwołanie do jądra komendą iiooppeerrmm, np. _i_o_p_e_r_m_(_P_O_D_S_T_A_W_A_, _z_a_k_r_e_s_, _1_)_; ˇ Wykonuje instrukcję ustawiającą napięcie 0-5V w porcie równoległym, np. _o_u_t_b_(_1_, _P_O_D_S_T_A_W_A_)_; ˇ Czeka, aż kawa będzie gotowa. Byłoby nieźle, jeżeli mógłby odczytać ten czas z linii komend. ˇ Wyłącza wtedy ekspres: _o_u_t_b_(_0_, _P_O_D_S_T_A_W_A_)_; ˇ Przed końcem, powinien oddać port - _i_o_p_e_r_m_(_P_O_D_S_T_A_W_A_, _z_a_k_r_e_s_, _0_)_; Zmień PODSTAWĘ na 0x3bc dla /dev/lp0, 0x378 dla /dev/lp1 i 0x278 dla /dev/lp2, _z_a_k_r_e_s na 8. Dobrze byłoby dać programowi prawa setuid, żeby każdy mógł pić kawę! (UWAGA: _n_i_e ustawiaj tych praw w ,,usieciowionym'' komputerze, grozi to pożarem itd. wywołanym przez nieuprawnionych użytkowników! - przyp. tłum.) 33..22.. SStteerroowwnniikk Przeczytaj Kernel Hacker's Guide i zaimplementuj sterownik (sądzę, że może on być stosowany w trybie użytkownika). Skompiluj go jako moduł, żebyś nie musiał kompilować jądra przy każdym uaktualnieniu. Napisz: echo cappucino > /dev/coffee Uzyskasz filiżankę gorącej kawy w minutę. Pamiętaj, żeby dać prawidłowe prawa dostępu do /dev/coffee, zależnie od tego, czy chcesz, żeby kawę robił tylko root, czy nie. Zaletą tej metody jest obsługa sprzężenia zwrotnego z ekspresu do kawy przez użycie ACK portu równoległego tak, żeby ,,mądre'' ekspresy mogły tworzyć przerwanie. Zrób to jako pracę domową. 33..33.. ŁŁąącczzeenniiee ssiięę zz IInntteerrnneetteemm (zalecam implementację tej technologii tylko w sieci LAN, z powodu bezpieczeństwa - przyp. tłum.) Jeżeli napisałeś program w C (objaśnienia powyżej), wystarczy zrobić prosty skrypt CGI włączający i wyłączający ekspres do kawy. Powinieneś napisać kilka ładnych stron WWW wyjaśniających jak zrobić kawę i umieścić je na serwerze WWW AAppaacchhee... 44.. OOzznnaakkii pprrzzeeddaawwkkoowwaanniiaa ˇ podniecenie ˇ nerwowość ˇ bezsenność ˇ częstoskurcz lub arytmia serca ˇ zaburzenia żołądkowe ˇ niepokój, pobudzenie 55.. RRoozzsszzeerrzzeenniiaa Oto nasze pomysły: ˇ Opisany tutaj sprzęt i oprogramowanie może zostać rozszerzone do obsługi grzanek, wołowiny, jabłecznika itp. ˇ Zestaw ośmiu ekspresów. To pozwoli ci przyrządzić kawę nawet wtedy, gdy jeden jest już w użyciu. Będzie to oczywiście mieć wpływ na wydajność. (może RAIC - Redundant Array of Independent Coffee- machines :-))))) - przyp. tłum.) ˇ Ekspres do kawy o równoległym wektorze będzie w przyszłym wydaniu. ˇ Jeżeli będzie ci potrzebna maksymalna automatyzacja, wymagane będą dodatkowe układy i czujniki, żebyś mógł kontrolować poziom wody, temperaturę i jakość kawy. ˇ W bliskiej przyszłości zaimplementujemy obsługę SNMP. ˇ Szeregowy ekspres do kawy na 115Kbps. 66.. OOddnnoośśnniikkii ˇ http://daisy.uwaterloo.ca/~alopez-o/caffaq.html Internet Coffee-FAQ ˇ http://lonestar.texas.net/~andrew/f_pc.htm Wiele układów w ASCII. Niektóre z nich są przeznaczone dla portu równoległego. ˇ http://shell.rmi.net/~hisys/parport.html Wszystko, co chcielibyście się dowiedzieć o porcie równoległym, ale boicie się zapytać. ˇ http://sunsite.unc.edu/LDP/HOWTO/mini/IO-Port-Programming Programowanie portów I/O w systemie Linux. ˇ http://www.redhat.com:8080/HyperNews/get/khg.html Jak napisać własne sterowniki urządzeń. Zrób to! ˇ http://www.hut.fi/Misc/Electronics/circuits/parallel_output.html Strona Tomi'ego Engdahl'a jest KONIECZNA do zobaczenia przez każdego lubiącego elektronikę. ˇ http://www.yahoo.com/Computers_and_Internet/Internet/Entertainment/Interesting_Devices_Connected_to_the_Net/Coffee_Machines/ Ekspresy do kawy on-line. Niestety, nie ma testów. ˇ http://www.cs.su.oz.au/~bob/coffee.html Ten ekspres do kawy robi tylko cappucino. Powinien być rozszerzony! ˇ http://einstein.et.tudelft.nl/~janssen/ Gorąca kawa z Holandii. ˇ http://circe.chinalake.navy.mil/cgi-bin/spion/snapit.cgi ˇ http://www.cl.cam.ac.uk/coffee/coffee.html ˇ http://www.menet.umn.edu/coffeecam/ 77.. IInnnnee 77..11.. WWssttęępp Ten dokument był pierwotnie napisany w języku helleńskim (greckim), ewoluując z małej debaty na liście greckich użytkowników Linuxa, czy Linux potrafi zrobić kawę, czy nie. Był on artykułem w naszym pięknym magazynie Linuxowym ,,magaz'': http://www.linux.gr/magaz. Pamiętaj, że jest on napisany po grecku. 77..22.. AAuuttoorrssttwwoo ii nnaaddzzóórr Nazywam się Georgatos Photis i jestem (jeszcze-nadal może przez długi czas) studentem wydziału Inżynierii Komputerowej i Informatyki na Uniwersytecie Patras. Jestem zazwyczaj dosyć zajęty grecką dokumentacją i stronami WWW, ale mogę przyjmować dodatki do tego HOWTO, jeżeli nie będziesz niecierpliwy. 77..33.. PPrraawwaa aauuttoorrsskkiiee Standardowe prawa autorskie wszystkiego od Linuxa... Przeczytaj wszystkie i wybierz najważniejsze. Inaczej nie możesz kopiować tego dokumentu. 77..44.. DDooddaattkkoowwii aauuttoorrzzyy ˇ Krzysztof Kolumb Jego prawdziwe imię to Cristobal Colon. On jako pierwszy przywiózł kawę z Ameryki, która została odkryta przez niego (dla Europejczyków) w roku 1492. ˇ Kostas Lialiambis był pierwszym, który odważył się powiedzieć, że nie może zrobić kawy za pomocą jego maszyny Linuxowej! ˇ Panagiotis Vrionis i Yannakopoulos Haralambos podrzucili mi interesujące i humorystyczne uwagi. 88.. OOdd ttłłuummaacczzaa Jeżeli znajdziesz jakieś błędy, daj mi znać. :-) doc-linux-pl-2002.06.14.orig/mini/Colour-ls.pl.txt0100664000175000017500000003572607104371340020373 0ustar covencoven Kolory na terminalach Linux-owych. Autor: Thorbjřrn Ravn Andersen, ravn@dit.ou.dk v1.4, 7 Sierpnia 1997 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkiiBB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll.. v1.3, 5 Listopada 1997 Większość dystrybucji Linux-a ma polecenie 'ls' służące do wyświetla­ nia zawartości katalogu, które można znacznie uatrakcyjnić używając różnych kolorów, ale skonfigurowanie tego zgodnie z własnymi upodoba­ niami może nie być taką łatwą sprawą. Dokument ten opisuje różne aspekty i podejścia ustawiania polecenia 'ls' przez konfigurowanie istniejącego oprogramowania plus lokalizacja alternatywnego opro­ gramowania nie zawartego w dystrybucjach Slackware czy RedHat, którego można użyć na większości systemów unix-owych. Wersja HTML (w orygi­ nale) jest także dostępna na mojej stronie WWW . Dokument ten został napisany w standardzie ISO-8859-2. ______________________________________________________________________ Spis treści 1. Wprowadzenie. 2. Szybki start dla niecierpliwych. 3. Czy ja to w ogóle mam? 4. Z jakich kolorów można wybierać ? 5. Jak skonfigurować kolory dla ls? 6. Jak skonfigurować inny standard tekstowy niż białe-na-czarnym ? 6.1 Xterm. 6.2 Konsole wirtualne. 6.2.1 /etc/issue 6.2.2 /etc/profile lub .profile. 6.2.3 /etc/login lub .login 6.3 Logowanie zdalne. 7. Oprogramowanie. 8. Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. W ostatnich latach kolorowe monitory stały się bardzo popularne, i użytkownicy zaczynają to wykorzystywać przez używanie programów, które wykorzystują kolory do wizualizacji różnych szczegółów takich jak słowa kluczowe w językach programowania czy podkreślenie słów źle napisanych. Ponieważ konsola Linux-owa obsługuje kolory, oryginalna wersja GNU ls została szybko zmodyfikowana, aby wyświetlać kolorowe informacje i program ten został dołączony do dystrybucji Slackware ok. wersji 2.0. Ulepszone wersje tych łat weszły w skład standardowej dystrybucji GNU ls i dlatego powinny być częścią wszystkich nowych dystrybucji Linux- a. Wersja ta jest w głównej mierze przepisaną wersją pierwotną zawierającą informacje na temat xterminala i łatania jądra. Informacja zawarta w tym dokumencie została sprawdzona na dystrybucji RedHat 4.1 i została oryginalnie skompilowana na dystrybucji Slackware 2.0.2 i jądrze w wersi 1.1.54. Informacje na temat łaty zostały uzyskane z Dystrybucji Slackware 2.2.0 z jądrem 1.2.13 i powłoką tcsh jako domyślną oraz później sprawdzona na jądrze 2.0.27. Jeśli używasz jakiejś innej konfiguracji czy wersji unix-a, to będę wdzięczny za info na temat systemu operacyjnego i wersji oraz czy kolory są dostępne jako standardowe. 22.. SSzzyybbkkii ssttaarrtt ddllaa nniieecciieerrpplliiwwyycchh.. Jeśli masz _n_o_w_ą dystrybucję Linux-a, to zmodyfikuj pliki w swoim katalogu domowym tak jak to pokazano. Efekt będzie widoczny po ponownym zalogowaniu się. ~/.bashrc: alias ls="ls --color" ~/.cshrc: alias ls 'ls --color' I to wszystko! Możesz także zrobić swój plik .colourrc, żeby mieć swoje kolory (``dircolors -p >$HOME/.colourrc''). Jest tam dużo komentarzy, więc nie powinieneś mieć problemów z modyfikacjami. Po ustawieniu wszystkich kolorów piszesz ``eval `dircolors $HOME/.colourrc`'' żeby ustawienia zadziałały. 33.. CCzzyy jjaa ttoo ww ooggóóllee mmaamm?? Przede wszystkim powinieneś wiedzieć czy masz wersję ls, która umie kolorować. Spróbuj wydać takie polecenie na konsoli Linux-owej (chociaż na xterm-ie też powinno się udać): % ls --color (% jest tu znakiem zachęty systemu). Jeśli dostaniesz komunikat o błędzie mówiący, że ls nie rozumie tej opcji, to musisz zainstalować nowszą wersję pakietu GNU fileutils. Jeśli nie masz odpowiedniego pakietu aktualizacyjnego dla swojej dystrybucji, to ściągnij ostatnią wersję z najbliższego ci lustra GNU i zainstaluj bezpośrednio ze źródła. Jeśli _n_i_e dostałeś komunikatu o błędzie, to masz ls, które rozumie to polecenie. Niestety niektóre wcześniejsze wersje zawarte w dystrybucji Slackware (i możliwe, że w innych) miały błędy. ls zawarte w dystrybucji RedHat 4.1 jest w wersji 3.13, która jest w porządku. % ls --version ls - GNU fileutils-3.13 Jeśli uruchomiłeś polecenie ``ls -- color'' na konsoli tekstowej Linux-a, to rezultat powienien być pokolorowany zgodnie z domyślnymi ustawieniami i możesz teraz zdecydować czy jest coś co chcesz zmienić czy nie. Jeśli uruchomiłeś je w xterm-ie, to mogłeś lub nie - zauważyć zmianę w kolorach. W przeciwieństwie do ls, oryginalny program xterm nie obsługiwał kolorów dla programów uruchamianych w nim, ale ostatnie wersję to robią. Jeśli twój xterm nie obsługuje kolorów, to powinieneś zdobyć nowszą wersję tak jak to opisano na końcu tego dokumentu. W międzyczasie przełącz się na tryb tekstowy i pracuj tam. 44.. ZZ jjaakkiicchh kkoolloorróóww mmoożżnnaa wwyybbiieerraaćć ?? Ten skrypt (dzięki dla wielu tych, którzy przysłali mi wersję bash) pokazuje wszystkie standardowe kombinacje kolorów na bieżącej konsoli. Jeśli żadne kolory sie nie pojawią, oznacza to, iż twoją konsola nie obsługuje ANSI. #!/bin/bash # Wyświetl kolory ANSI. # esc="\033[" echo -n " _ _ _ _ _40 _ _ _ 41_ _ _ _42 _ _ _ 43" echo "_ _ _ 44_ _ _ _45 _ _ _ 46_ _ _ _47 _" for fore in 30 31 32 33 34 35 36 37; do line1="$fore " line2=" " for back in 40 41 42 43 44 45 46 47; do line1="${line1}${esc}${back};${fore}m Normal ${esc}0m" line2="${line2}${esc}${back};${fore};1m Bold ${esc}0m" done echo -e "$line1\n$line2" done Numer koloru pierwszego planu jest pokazany po lewej stronie, a tła - w prostokącie. Jeśli chcesz znaki jaskrawe dodajesz "1" do parametrów, tak że jasny niebieski na białym to: "37;44;1". Cała sekwencja selekcji to: ESC [ 3 7 ; 4 4 ; 1 m. Uwaga: Tło w chwili obecnej nie może być jaskrawe, więc nie możesz mieć żółtego (jaskrawy brązowy) jako coś innego niż pierwszy plan. Limit ten wynika ze sprzętu. The colours are: 0 - black 4 - blue 3# is foreground 1 - red 5 - magenta 4# is background 2 - green 6 - cyan 3 - yellow 7 - white ;1 is bold 55.. JJaakk sskkoonnffiigguurroowwaaćć kkoolloorryy ddllaa llss?? Jeśli chcesz zmodyfikować standardowe kolory, to potrzebujesz swojej osobistej kopii w swoim katalogu domowym, co uzyskasz przy pomocy polecenia: % cd ; dircolors -p > .coloursrc Po modyfikacji tego dobrze skomentowanego pliku musisz wczytać go do zmiennej środowiskowej LS_COLORS, co można zwykle zrobić poleceniem: eval `dircolors .colourrc` Musisz umieścić tę linię w swoim .bashrc (.cshrc, .tcshrc) (w zależności od twojej powłoki), aby robić to automatycznie przy każdym logowaniu się. Więcej szczegółów znajdziesz w stronie podręcznika man dircolors(1). 66.. JJaakk sskkoonnffiigguurroowwaaćć iinnnnyy ssttaannddaarrdd tteekkssttoowwyy nniiżż bbiiaałłee--nnaa--cczzaarrnnyymm ?? Będziesz musiał przekazać sterownikowi twojego terminala kod, który chcesz mieć jako domyślny. Nie ma standardowego sposobu, aby to zrobić, ale w przypadku Linux-a masz program setterm. "setterm" używa informacji zawartych w bazie danych o terminalach, aby ustawić atrybuty. Tak się wybiera: setterm -foreground black -background white -store gdzie -store poza właściwą zmianą powoduje, że ustawienia stają się także domyślne dla bieżącej konsoli. Wymaga to, aby bieżący terminal (zmienna środowiskowa TERM) był opisany "wystarczająco dobrze" w bazie danych "termcap". Jeśli setterm z jakichś powodów nie działa, to tu jest kilka alternatyw: 66..11.. XXtteerrmm.. Jeden z tych Xterminali powinien być dostępny i przynajmniej jeden z nich obsługuje kolory. xterm -fg white -bg blue4 color_xterm -fg white -bg blue4 color-xterm -fg white -bg blue4 nxterm -fg white -bg blue4 gdzie 'color_xterm' obsługuje kolorową wersję 'ls'. Ten konkretny wybór przypomina kolory używane na SGI. 66..22.. KKoonnssoollee wwiirrttuuaallnnee.. Możesz zmodyfikować jądro raz na zawsze, tak samo jak udostępniając standard podczas działania dla konsol wirtualnych przez sekwencję ze znakiem ESC. Jeśli skompilowałeś swoje własne jądro to zalecam modyfikację jądra. Plik ze źródeł jądra, który powinieneś zmodyfikować około linii 1940, to /usr/src/linux/drivers/char/console.c def_color = 0x07; /* white */ ulcolor = 0x0f; /* bold white */ halfcolor = 0x08; /* grey */ Ja używam białego na niebieskim: def_color = 0x17; /* white */ ulcolor = 0x1f; /* bold white */ halfcolor = 0x18; /* grey */ Liczby to kody atrybutów w postaci szesnastkowej używane przez kartę graficzną: najbardziej znacząca cyfra ("1" w przykładzie powyżej) jest tłem; najmniej znacząca - pierwszym planem. 0=czarny, 1=niebieski 2=zielony, 3=jasno-niebieski, 4=czerwony, 5=purpurowy, 6=brązowy/żółty, 7=biały. Dodaj 8, aby uzyskać kolory jaskrawe. Zauważ, że w większości przypadków jaskrawe tło = mrugające znaki, matowe tło. (Od sjlam1@mda023.cc.monash.edu.au ). Możesz także dostarczyć nowy standard podczas działania dla wirtualnych konsol, na bazie na-ekran z niestandardowymi sekwencjami ANSI (znalazłem podczas przglądania źródeł jądra) ESC [ 8 ] która ustawia domyślne kolory na bieżące tło i pierwszy plan. Wtedy łańcuch resetujący atrybuty (ESC [ m) wybiera te kolory zamiast białego i czarnego. Właściwie będziesz musiał wysłać ten łańcuch na konsolę poleceniem echo za każdym razem kiedy restartujesz komputer. Zależnie od tego do czego używasz swojego Linux-a, może być kilka odpowiednich miejsc: 66..22..11.. //eettcc//iissssuuee To jest miejsce, gdzie wyświetla się komunikat "Welcome to Linux xx.yy", i jest to dobry wybór dla komputera, na którym pracujesz tylko ty. (Przypuszczalnie będzie zmorą dla użytkowników logujących się zdalnie przy pomocy telnet-a). Plik ten jest tworzony podczas startu (Slackware w /etc/rc.d/rc.S; RedHat w /etc/rc.d/rc.local), i powinieneś zmodyfikować linie wyglądające mniej więcej tak: echo ""> /etc/issue echo Welcome to Linux /bin/uname -a | /bin/cut -d\ -f3. >> /etc/issue na: ESCAPE="" echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue echo Welcome to Linux /bin/uname -a | /bin/cut -d\ -f3. >> /etc/issue Ten kod spowoduje przesunięcie kursora na początek strony, ustawienie koloru (tutaj: biały na niebieskim), zapisanie tego wyboru i wyczyszczenie reszty ekranu. Modyfikacja zadziała przy następnym starcie systemu. Zapamiętaj, aby wpisać kod klawisza ESC przy pomocy Ctrl-Q w emacs-ie, Ctrl-V w vi lub `Esc w joe, bo wygląda na to, że powłoka, w której się uruchamia ten skrypt nie rozumie sekwencji: /033. 66..22..22.. //eettcc//pprrooffiillee lluubb ..pprrooffiillee.. if [ "$TERM" = "console" ]; then echo "\033[37;44m\033[8]" # # albo użyj setterm setterm -foreground white -background blue -store fi 66..22..33.. //eettcc//llooggiinn lluubb ..llooggiinn if ( "$TERM" == "console" ) then echo "\033[37;44m\033[8]" # albo użyj setterm setterm -foreground white -background blue -store endif 66..33.. LLooggoowwaanniiee zzddaallnnee.. Powinieneś być w stanie użyć setterm tak jak to było pokazane wyżej. Jeszcze raz: wymaga to, aby zdalny komputer wiedział wystarczająco dużo na temat twojego terminala i żeby emulator terminala, przy pomocy którego się logujesz, obsługiwał kolory. Z moich doświadczeń wynika, że najlepszymi emulatorami vt100 dostępnymi obecnie na inne platformy to: ˇ MS-DOS: MS-Kermit (darmowy, nie jest prod. Microsoftu) ˇ Windows 95/NT: Kermit/95 (shareware) ˇ OS/2: Kermit/95 (shareware). Zauważ jednak, że standardowy telnet rozumie kolory i można go ustawić lokalnie. Szczegóły na temat Kermita znajdziesz na 77.. OOpprrooggrraammoowwaanniiee.. Wszystkie informacje opisane tutaj zakładają instalację GNU/Linux-a. Jeśli masz coś innego (jak np. Sun-a z X-ami czy coś takiego), to możesz zdobyć i samemu sobie skompilować programy. Kolorowa wersja xterm-a jest oparta na standardowych źródłach xterm-a z łatą dostępną na każdym serwerze X11R6. Xterm dystrybuowany wraz z R6.3 podobno ma natywną obsługą kolorów, ale nie był przeze mnie testowany. Na przykład tutaj: color-xterm-R6pl5-patch.gz Przejrzyj dokumentację jeśli używasz starszej wersji X-ów. Uwaga: Nie próbowałem tego samemu !!! Można go pobrać z serwera: ftp.icm.edu.pl. Weź wersję co najmniej 3.13. Będziesz jeszcze potrzebować łaty, którą możesz pobrać z tego samego katalogu, a nazywa się ona "color-ls-3.12.0.3.patch.gz" Osobiście udało mi się skompilować color-ls na Solaris-ie, SunOS-ie i Irix-ie. Byłbym wdzięczny za wszelki odzew na temat tego tekstu. Mój adres pocztowy: ravn@dit.ou.dk -- Thorbjřrn Ravn Andersen 88.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Na pewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać. Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl doc-linux-pl-2002.06.14.orig/mini/DHCP.pl.txt0100664000175000017500000002754607104371340017233 0ustar covencoven Jak zmusić Linux-a, żeby korzystał z informacji DHCP od Win­ dows 95 Autor:Dan Halbert, halbert@world.std.com lub halbert@bbn.com 6 Grudnia 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.02, 26 Lipca 1997 Dokument ten został napisany w standardzie ISO-8859-2. Wersja orygi­ nalna znajduje się pod adresem ftp.icm.edu.pl . ______________________________________________________________________ Spis treści 1. Wprowadzenie. 2. Metoda. 2.1 Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Mój Linux na PC-cie musi otrzymać IP oraz inne informacje o sieci z serwera DHCP. Ale nie mogłem znaleźć takiego klienta, który działałby z moim serwerem. Mój PC-et normalnie startuje z Windows 95, a Linux jest rzadziej używany. Klient DHCP pod Windows 95 działa u mnie dobrze. Mogłem skopiować mój adres IP, "nameserver" itp. ręcznie do Linux-a, ale chciałem zautomatyzować ten proces. Windows 95 dostarcza program (\Windows\Winipcfg.exe), który wyświetla informacje DHCP w ładny graficzny sposób. Po przejrzeniu pliku _w_i_n_i_p_c_f_g_._e_x_e odkryłem, że ma on nieudokumentowaną opcję, która pozwala zapisać informacje do pliku (domyślnie jest to _W_i_n_i_p_c_f_g_._o_u_t). Pozwoliło mi to, na zrobienie takiego trick-u: 1. Start Win95. Klient DHCP pobierze potrzebne informacje od serwera DHCP. 2. Uruchomienie _W_i_n_i_p_c_f_g_._e_x_e i zapis wyniku do pliku. 3. Start Linux-a. 4. Zamontować system plików Win95. 5. Przeczytać plik utworzony przez _W_i_n_i_p_c_f_g. 6. Dostarczyć potrzebne informacje Linux-owi. Wersję oryginalną tego dokumentu możesz znaleźć na SUNSite Polska . Na temat wersji tłumaczenia patrz sekcja ``Od tłumacza''. 22.. MMeettooddaa.. Teraz szczegóły na temat tego jak to robię: 1. W moim folderze startowym Win95 uruchamiam to polecenie. Kiedy Win95 startuje, Winipcfg zapisuje otrzymane od serwera DHCP informacje: winipcfg -all -batch c:\winipcfg.out Opcje muszą być podane w podanym porządku. Nie podanie _-_a_l_l spowoduje brak niektórych informacji. Nie podanie ścieżki do pliku _w_i_n_i_p_c_f_g_._o_u_t spowoduje zapisanie tego pliku w katalogu bieżącym. Poniżej jest załączony przykładowy plik _w_i_n_i_p_c_f_g_._o_u_t. 2. Natychmiast (albo jakiś czas później) po starcie Win95, startuję Linux-a. Używam _l_o_a_d_l_i_n_-_a uruchamianego z batch-a DOS-owego. Możesz użyć tego albo czegoś innego. (Nie możliwe jest połączenie loadlin-a i winipcfg w jednym batch-u ponieważ najprzypuszczalniej plik _w_i_n_i_p_c_f_g_._o_u_t nie zostanie przepisany z cache'u na dysk przed startem loadlin-a. Nie znalazłem sposobu na zapisanie zawartości cache'u na dysk z wiersza poleceń.) 3. Podczas startu Linux-a wykonywany jest program napisany w Perlu (_w_i_n_i_p_c_f_g_._p_l) dołączony na końcu tego dokumentu. Program ten musi być wykonany ppoo zamontowaniu systemu plików Win95, a pprrzzeedd uruchomieniem skryptów sieciowych. Ja używam dystrybucji _D_e_b_i_a_n: poniżej załączony jest wyjątek z pliku /etc/init.d/boot z zanotowanymi moimi dodatkami. Twoja dystrybucja może mieć inne skrypty startowe, więc może będziesz musiał to trochę zmienić. (aut. Patrz kilka linijek niżej na temat innych dystrybucji).Program _w_i_n_i_p_c_f_g_._p_l zapisuje nowe wersje plików: /etc/hostname, /etc/resolv.conf oraz /etc/init.d/network. Skrypt _n_e_t_w_o_r_k wykonuje polecenie _i_f_c_o_n_f_i_g z podanymi parametrami. To tyle. Zapamiętaj oczywiście, że nie powinieneś trzymać Linux-a uruchomionego dłużej niż pozwala na to DHCP. Ja startuję tylko na kilka godzin, więc nie ma u mnie tego problemu. Będziesz musiał dopasować program _w_i_n_i_p_c_f_g_._p_l jeśli masz więcej niż jeden adapter sieciowy albo pseudo-adapter. Na przykład, oprogramowanie AOL ustawia udawany (fake) adapter sieciowy, i musisz zignorować jego informacje. ------------------------------------------------------------------------------- OOdd aauuttoorraa: Oto lokalizacje plików odpowiedzialnych za konfigurację sieci oraz plików inicjacyjnych: ˇ RedHat: pliki odpowiadające za konfigurację sieci znajdują się w /etc/sysconfig/network-scripts natomiast montowanie odbywa się w pliku /etc/rc.d/rc.sysinit ˇ Slackware: plik sieciowy to /etc/rc.d/rc.inet1, a plik montujący systemy, to /etc/rc.d/rc.S. ------------------------------------------------------------------------------- Oto załączniki (jeden na stronę): ______________________________________________________________________ ============================================================================== Przykładowy plik winipcfg.out zrobiony przez Win95 "winipcfg -all -batch" (adresy zostały zmienione ze względów bezpieczeństwa) ============================================================================== Windows 95 IP Configuration Host Name . . . . . . . . . : foo.bar.com DNS Servers . . . . . . . . : 11.222.33.8 11.222.33.9 Node Type . . . . . . . . . : Broadcast NetBIOS Scope ID. . . . . . : IP Routing Enabled. . . . . : No WINS Proxy Enabled. . . . . : No NetBIOS Resolution Uses DNS : Yes Ethernet adapter : Description . . . . . . . . : ELNK3 Ethernet Adapter Physical Address. . . . . . : 00-AA-BB-99-88-77 DHCP Enabled. . . . . . . . : Yes IP Address. . . . . . . . . : 11.222.33.222 Subnet Mask . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . : 11.222.33.1 DHCP Server . . . . . . . . : 11.222.33.10 Primary WINS Server . . . . : Secondary WINS Server . . . : Lease Obtained. . . . . . . : Wed Oct 16 96 10:17:26 PM Lease Expires . . . . . . . : Wed Oct 30 96 10:17:26 PM ============================================================================== ============================================================================== Wyjątek z pliku /etc/init.d/boot, z moimi dodatkami. ============================================================================== ... # Mount local file systems in /etc/fstab. echo "Mounting local file systems..." mount -avt nonfs # Execute swapon command again, in case we want to swap to # a file on a now mounted filesystem. swapon -a 2>/dev/null #### Dodatek o DHCP info #################################################### # Uaktualnij plik z informacjami sieciowymi według informacji z # klienta DHCP pod Win95 if [ -f /c/winipcfg.out -a -x /usr/local/sbin/winipcfg.pl ] then echo "Setting network information from Windows 95 DHCP info." # To powoduje zapisanie nowszych wersji hostname, resolv.conf oraz # init.d/network. # Katalog /c to tam, gdzie montuję system plików Win95 /usr/local/sbin/winipcfg.pl /c/winipcfg.out if [ $? != 0 ] then echo "Error getting network information. Using existing network info." fi else echo "** Windows 95 DHCP info not available. Using existing network info." fi #### koniec dodatku o DHCP info ############################################# # Setup the network interfaces. Note that /var/run and /var/lock # are cleaned up after this, so don't put anything in the "network" # script that leave a pidfile or a lockfile. if [ -x /etc/init.d/network ] then /etc/init.d/network fi # Set hostname. hostname --file /etc/hostname # Now that TCP/IP is configured, mount the NFS file systems in /etc/fstab. echo "Mounting remote file systems..." mount -a -t nfs ... ============================================================================== ============================================================================== /usr/local/sbin/winipcfg.pl: To jest program perlowy wywoływany ze skryptu startowego. ============================================================================== #!/usr/bin/perl while (<>) { # Remove any trailing CR and LF. s/\r//g; s/\n//g; if (/^\tHost Name.*: (.*)$/i) { ($hostname, $domain) = split(/\./, $1, 2); } elsif (/^\tDNS Servers.*: *(.*)$/i) { push @nameservers, $1; } elsif (/^\t +([\.0-9]+)$/) { push @nameservers, $1; } elsif (/^\tIP Address.*: (.*)$/i) { $ip_address = $1; } elsif (/^\tSubnet Mask.*: (.*)$/i) { $netmask = $1; } elsif (/^\tDefault Gateway.*: (.*)$i/) { $gateway = $1; } } $hostname || die "Hostname not given"; $domain || die "Domain not given"; $ip_address || die "IP address not given"; $netmask || die "Netmask not given"; $gateway || die "Gateway not given"; $#nameservers != -1 || die "No nameservers given"; open(HOSTNAME, ">/etc/hostname") || die "Could not open /etc/hostname for writing\n"; open(RESOLV, ">/etc/resolv.conf") || die "Could not open /etc/resolv.conf for writing\n"; open(NETWORK, ">/etc/init.d/network") || die "Could not open /etc/init.d/network for writing\n"; chmod 0755, "/etc/init.d/network"; print HOSTNAME "$hostname\n"; print RESOLV "domain $domain\n"; print RESOLV "search $domain\n"; foreach (@nameservers) { print RESOLV "nameserver $_\n"; } @ip_address = split(/\./, $ip_address, 4); @netmask = split(/\./, $netmask, 4); $network = join(".", $ip_address[0]+0 & $netmask[0]+0, $ip_address[1]+0 & $netmask[1]+0, $ip_address[2]+0 & $netmask[2]+0, $ip_address[3]+0 & $netmask[3]+0); $broadcast = join(".", $ip_address[0]+0 | ~($netmask[0]+0) & 255, $ip_address[1]+0 | ~($netmask[1]+0) & 255, $ip_address[2]+0 | ~($netmask[2]+0) & 255, $ip_address[3]+0 | ~($netmask[3]+0) & 255); print NETWORK "ifconfig eth0 $ip_address netmask $netmask broadcast $broadcast route add -net $network netmask $netmask route add default gw $gateway metric 1 "; print "DHCP info: $hostname.$domain ($ip_address) netmask: $netmask broadcast: $broadcast gateway: $gateway nameservers: @nameservers "; exit(0); ============================================================================== ______________________________________________________________________ 22..11.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu HOWTO. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany wprowadzone przez tłumacza, to dodatek o lokalizacji plików startowych w innych dystrybucjach. doc-linux-pl-2002.06.14.orig/mini/Diald.pl.txt0100664000175000017500000002762607104371340017531 0ustar covencoven Przykład ustawienia demona "diald" Autor: Harish Pillay, h.pillay@ieee.org WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.0, 30 Sierpnia 1997 Dokument ten ma służyć jako przykład ustawienia, którym posługiwałem się na wielu maszynach i które umożliwia automatyczną instalację diald podczas startu systemu. Kiedy pojawia się żądanie połączenia, automatycznie wybierany jest numer mojego ulubionego dostawcy Inter­ net-u tutaj w Singapurze - _P_a_c_i_f_i_c _I_n_t_e_r_n_e_t. Wielkie dzięki dla EErriiccaa SScchheennkkaa za ten super program - diald. Dokument ten został napisany w standardzie ISO-8859-2. Jego oryginalna wersja znajduje się pod adresem ftp.icm.edu.pl . 11.. OOppiiss ddzziiaałłaanniiaa ddiiaalldd.. 11..11.. //eettcc//rrcc..dd//rrcc..llooccaall #! /bin/sh # Put any local setup commands in here # Running gpm echo "Running gpm..." gpm -t ms & # starting innd /etc/rc.d/rc.news # starting CERN httpd echo "Starting CERN httpd with proxy and caching." /usr/local/bin/httpd # loading modules that are needed /etc/rc.d/rc.modules # starting diald echo "Starting diald daemon to Pacific Internet ..." cd /usr/lib/ppp /usr/lib/ppp/diald.pacific.internet 11..22.. //uussrr//lliibb//pppppp//ddiiaalldd..ppaacciiffiicc..iinntteerrnneett /usr/sbin/diald /dev/ttyS1 /dev/ttyS1 lock debug 20 -m ppp local 127.0.0.2 \ remote 127.0.0.3 defaultroute modem crtscts \ connect "chat -v -f /usr/lib/ppp/pppchat.pi" \ dynamic -- debug noipdefault 11..33.. //uussrr//lliibb//pppppp//ppppppcchhaatt..ppii ABORT "NO CARRIER" ABORT BUSY "" ATZ OK ATm1s50=255s111=0DT1-800-555-1212 CONNECT "" login MÓJLOGIN ssword MOJEHASŁO 11..44.. PPrroossttyy sskkrryypptt ddoo PPPPPP.. ˇ Odpal minicom-a. ˇ Połącz się ze swoim dostawcą Internet-u. ˇ Zainicjuj PPP na drugim końcu. ˇ Zawieś minicom-a (ALT-A-J). ˇ Wykonaj następujący skrypt. #!/bin/sh # Ustaw PPP na ślepo - skrypt o nazwie blind.ppp DEVICE=ttyS1 ( stty 38400 -tostop pppd -detach debug noipdefault defaultroute mru 1500 /dev/$DEVICE & exit 0 ) /dev/$DEVICE 11..55.. MMóójj pplliikk //eettcc//ddiiaalldd..ccoonnff ((nniiee zzmmiieenniioonnyy oodd iinnssttaallaaccjjii ddyyssttrryy­­ bbuuccjjii)) # Jest to dość skomplikowana kombinacja reguł filtrujących. # (Są to reguły, których używam osobiście) # # Podzieliłem te reguły na 4 sekcje: # pakiety TCP, pakiety UDP, pakiety ICMP i na końcu reguły dla reszty. #------------------------------------------------------------------------------ # Reguły dla pakietów TCP #------------------------------------------------------------------------------ # Ogólny komentarz dotyczący zestawu reguł: # # Ogólnie, jako znaczące do timeout-ów, chcielibyśmy traktować tylko # pakiety zawierające dane na łączu TCP. Dlatego spróbujemy ignorować # pakiety bez danych. Ponieważ najkrótszy możliwy nagłówek pakietu # TCP to 40 bajtów, więc każdy pakiet o długości 40 bajtów nie może # zawierać danych. W ten sposób możemy przeoczyć puste pakiety (w # nagłówku IP mogą znajdować się opcjonalne informacje na temat # routing-u i inne dodatkowe informacje), ale powinniśmy dostać # większość z nich. Zauważ, że nie chcemy odfiltrowywać pakietów z # wyzerowanym polem "tcp.live", ponieważ użyjemy ich później, aby # przyspieszyć rozłączenia na niektórych połączeniach TCP. # # Chcemy także być pewni, że pakiety WWW są aktywne, nawet jeśli gniazdo TCP # jest zamknięte. Robimy to ponieważ WWW nie utrzymuje otwartych # połączeń jak już dane zostaną przetransportowane, i byłoby # denerwujące ciągłe inicjowanie i zamykanie połączenia jak tylko # dostaniesz jakiś dokument. # # Poza WWW TCP jest najczęściej używane do długożywotnych połączeń, # które jak już zginą, to znaczy, że ich nie potrzebujemy. Nie # koniecznie chcemy czekać 10 minut aż połączenie zostanie zamknięte # jeśli nie mamy uruchomionych żadnych telnet-ów czy rlogin-ów, tak # więc chcemy przyspieszyć timeout na połączeniu TCP, które zostały # zamknięte. Zrobimy to poprzez przechwytywanie pakietów, które nie # mają ustawionej flagi "live". # # --- właściwy początek zestawu reguł --- # Na inicjację połączenia dajemy tylko 15 sekund. Cały pomysł polega tu # na tym, że trzeba się liczyć z możliwością, iż sieć na drugim końcu # nie będzie działać. W tym przypadku nie chcesz przecież dawać 10 # minut na połączenie. Poniższą regułą dajemy właśnie połączeniu owe # 15 sekund czasu. Jeśli sieć z drugiej strony działa, to w ciągu 15 # sekund otrzymamy odpowiedź, która będzie zawierała jakieś # dane. Jeśli w twoim przypadku sprawia to problemy, bo np.: masz # wolne połączenie czy długi czas odpowiedzi, to możesz zwiększyć # timeout lub po prostu usunąć tę regułę. accept tcp 15 tcp.syn # Nie podtrzymuj połączenia jeśli przychodzą pakiety do named-a ignore tcp tcp.dest=tcp.domain ignore tcp tcp.source=tcp.domain # (Oj! SCO telnet zaczyna od wysyłania pustych sygnałów "SYN" i # otwiera połączenie tylko w przypadku jeśli otrzyma odpowiedź. Jeny...) accept tcp 5 ip.tot_len=40,tcp.syn # Nie podtrzymuj połączenia jeśli pakiety są puste (oprócz pustych SYN-ów) ignore tcp ip.tot_len=40,tcp.live # Upewnij się, że transfer http podtrzymuje połączenie przez 2 minuty, # nawet po zakończeniu. # UWAGA: W pliku /etc/services może nie być definicji # serwisu tcp dla www, w którym to przypadku powinieneś zakomentować # dwie poniższe linie, albo zdobyć nowszy plik /etc/services. W # sprawie nowego /etc/services zobacz FAQ. accept tcp 120 tcp.dest=tcp.www accept tcp 120 tcp.source=tcp.www # Jeśli połączenie nie jest już aktywne, spróbujemy szybko je # zamknąć. Zauważ, że jeśli połączenie jest już "zdown-owane", to # zmiana stanu nie spowoduje jego przywrócenia. keepup tcp 5 !tcp.live ignore tcp !tcp.live # po danych ftp albo połączeniu ftp można się spodziewać dość częstego # ruchu accept tcp 120 tcp.dest=tcp.ftp accept tcp 120 tcp.source=tcp.ftp # UWAGA: ftp-data nie jest zdefiniowane w pliku /etc/services # dostarczanego z najnowszą wersją NETKIT, więc to zakomentowałem. # Jeśli chcesz to zdefiniować, to dodaj poniższą linię do # /etc/services # ftp-data 20/tcp # i odkomentuj dwie następne linie #accept tcp 120 tcp.dest=tcp.ftp-data #accept tcp 120 tcp.source=tcp.ftp-data # Jeśli nie wyłapiemy tego wcześniej, to daj połączeniu 10 minut. accept tcp 600 any # Reguły dla pakietów UDP # # Żądania dla domeny będziemy odrzucać od razu ponieważ chcemy, żeby # one tylko podniosły połączenie, a nie trzymać je przez długi czas. # Robimy tak ponieważ, sieć byłaby inicjowana przy każdym odwołaniu do # biblioteki resolvera (o ile nie trzymasz wszystkich swoich często używanych # adresów w /etc/hosts, w którym to przypadku odkryjesz jeszcze inne # problemy.) # Zauważ, że nie powinieneś ustawiać mniejszego timeout-u niż # spodziewany czas odpowiedzi twojego serwera DNS. W innym przypadku # kiedy inicjacyjne połączenie jest już ustawione może się pojawić # większe opóźnienie niż to pomiędzy inicjacyjną serią pakietów zanim # jakikolwiek pakiet, który podtrzymuje połączenie przejdzie przez połączenie. # Nie ustawiaj połączenia dla rwho ignore udp udp.dest=udp.who ignore udp udp.source=udp.who # Nie ustawiaj połączenia dla RIP ignore udp udp.dest=udp.route ignore udp udp.source=udp.route # Nie ustawiaj połączenia dla NTP czy timed. ignore udp udp.dest=udp.ntp ignore udp udp.source=udp.ntp ignore udp udp.dest=udp.timed ignore udp udp.source=udp.timed # Nie ustawiaj połączenia dla żądań domeny pomiędzy dwoma działającymi named-ami ignore udp udp.dest=udp.domain,udp.source=udp.domain # Ustaw połączenie jeśli pojawi się żądanie domeny z innego miejsca # niż named accept udp 30 udp.dest=udp.domain accept udp 30 udp.source=udp.domain # To samo dla rozgłaszania netbios-ns # UWAGA: w pliku /etc/services serwis netbios-ns może nie być # zdefiniowany - wtedy powinieneś zakomentować 3 poniższe linie ignore udp udp.source=udp.netbios-ns,udp.dest=udp.netbios-ns accept udp 30 udp.dest=udp.netbios-ns accept udp 30 udp.source=udp.netbios-ns # Nie utrzymuj połączenia dla transferów routed i gated ignore udp tcp.dest=udp.route ignore udp tcp.source=udp.route # Wszystko inne dostaje 2 minuty czasu accept udp 120 any # Wszystkim pakietom, których nie objęły poprzednie zasady daj 30 # sekund życia accept any 30 any 11..66.. MMóójj pplliikk ddiiaalldd..ddeeffss ((nniiee zzmmiieenniioonnyy oodd iinnssttaallaaccjjii ddyyssttrryybbuuccjjii)) # Definicja domyślnych reguł dla protokołów prule tcp tcp 9:12:13:14:15:16:17:18:19:+0:+1:+2:+3:9:9:9 prule udp udp 9:12:13:14:15:16:17:18:19:+0:+1:+2:+3:9:9:9 prule icmp icmp 9:12:13:14:15:16:17:18:19:9:9:9:9:9:9:9 prule any any 9:12:13:14:15:16:17:18:19:9:9:9:9:9:9:9 # Definicja pól nagłówków pakietów internet-owych var ip.ihl 0(24)&0xf var ip.version 0(28)&0xf var ip.tos 1(24)&0xff var ip.tot_len 2(16)&0xffff var ip.id 4(16)&0xffff var ip.frag_off 6(16)&0x3fff var ip.ttl 8(24)&0xff var ip.protocol 9(24)&0xff var ip.check 10(16)&0xffff var ip.saddr 12 var ip.daddr 16 # Definicja pól nagłówków pakietów TCP var tcp.source +0(16)&0xffff var tcp.dest +2(16)&0xffff var tcp.seq +4 var tcp.ack_seq +8 var tcp.doff +12(28)&0xf var tcp.fin +13(24)&0x1 var tcp.syn +13(25)&0x1 var tcp.rst +13(26)&0x1 var tcp.psh +13(27)&0x1 var tcp.ack +13(28)&0x1 var tcp.urg +13(29)&0x1 var tcp.live +127 # Definicja nagłówków pakietów UDP var udp.source +0(16)&0xffff var udp.dest +2(16)&0xffff var udp.len +4(16)&0xffff var udp.check +6(16)&0xffff # Definicja nagłówków pakietów ICMP var icmp.type +0(24)&0xff var icmp.code +1(24)&0xff var icmp.checksum +2(16)&0xffff var icmp.echo.id +4(16)&0xffff var icmp.echo.sequence +6(16)&0xffff var icmp.gateway +4 11..77.. MMóójj sspprrzzęętt ii oopprrooggrraammoowwaanniiee.. ˇ 486/66, 20 MB RAM i dużo miejsca na dysku :-) ˇ dużo chip-ów 16550 ˇ diald 0.11, pppd 2.2.0d, jądro 1.3.95 (zmodularyzowane) 11..88.. UUwwaaggii.. ˇ Upewnij się, że zmieniłeś powyżej /dev/ttyS1 odpowiednio do swoich potrzeb ˇ Upewnij się, że możesz się rzeczywiście połączyć przez PPP używając skryptu blind.ppp Masz jakieś pytania? Przyślij mi list. 11..99.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl doc-linux-pl-2002.06.14.orig/mini/Dip+SLiRP+CSLIP.pl.txt0100664000175000017500000004653507104371340021023 0ustar covencoven Dip+SLiRP+CSLIP Autor: Zenon Fortuna, zenon@netcom.com v1.1, 29 Października 1995 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.0, 3 Września 1997 [Od tłumacza]Tłumaczenie to jest zrobione z wersji 1.1, którą znalazłem na serwerze u autora, a której nie wiedzieć czemu nie ma nigdzie na oficjalnych serwerach.[koniec] Dlaczego powstał ten doku­ ment? Jest on przeznaczony dla tych, którzy nie chcą czytać całego NET-3-HOWTO z wszystkimi jego szczegółami, ani nie chcą czytać doku­ mentacji do Dip-a/SLiRP-a, ale chcieliby zainstalować SLIP-owe połączenie do Internetu, używając do tego celu konta z dostępną powłoką (shell-em). Wymieniona wcześniej dokumentacja powinna być rozważana jako bardziej wyczerpująca (i to w obu tego słowa znaczeni­ ach). Opisane przykłady zostały przetestowane na pakietach dip337n-uri i slirp-0.95h. Testy zostały przeprowadzone na stabilnej wersji jądra (tm) Linux-a - 1.2.13, oprogramowanie zostało zainstalowane pod dys­ trybucją Slackware 2.2.0. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp.net­ com.com w katalogu /pub/ze/zenon/linux/DipSlirpCSLIP/. 11.. HHiissttoorriiaa zzmmiiaann.. 29 Października '95 Wersja: 1.1 Dodałem informację dla systemów tylko z urządzeniem _l_o_o_p_b_a_c_k. 15 Października Wersja: 1.0 Pierwotna wersja tego dokumentu. 22.. KKrróóttkkii ooppiiss.. ˇ Zakładam, że twój serwer ma możliwość dodzwonienia się do serwera dostawcy Internet-u, gdzie posiadasz konto z powłoką (shell-em). Na tym serwerze zainstalujemy narzędzie sslliirrpp. ˇ Będziemy chcieli przygotować narzędzie ddiipp na Linux-ie, razem ze specjalnym skryptem do połączenia się z serwerem dostawcy oraz do wystartowania sslliirrpp--aa na tymże serwerze. ˇ Uruchomiony ddiipp skonfiguruje parametry linii szeregowej i poinformuje Linux-a o przyznanym numerze IP, którą to informacje dostanie od sslliirrpp--aa na serwerze dostawcy. ˇ W wyniku tych operacji pakiety TCP/IP wysyłane poprzez linię szeregową/modem będą obsługiwane przez serwer dostawcy tak jakby były wysłane przez nasz serwer. I stanie się cud: będziemy mieli połączenie TCP/IP między Linux-em a zasobami Internet-u. 33.. KKrrookkii ppooddcczzaass kkoonnffiigguurraaccjjii.. 33..11.. IInnssttaallaaccjjaa SSLLiiRRPP--aa.. ˇ zdobądź plik dystrybucyjny ze SSLLiiRRPP--eemm, np. slirp-0.95h.tar.gz, i skompiluj program sslliirrpp na serwerze dostawcy (na komputerze, do którego będziesz dzwonił). Plik docs/README.compiling zawarty w dystrybucji SSLLiiRRPP--aa wyjaśnia wszystkie szczegóły dotyczące kompilacji. Możesz też wziąć już skompilowaną wersję z ibc.wustl.edu , którą podaje FAQ z Alt.dcom.slip-emulators zawarte w dokumentacji. ˇ przenieś program sslliirrpp do jakiegoś lepszego katalogu, np. ./bin/slirp czy ./slirp (w twoim katalogu domowym). ˇ stwórz w swoim katalogu domowym plik .slirprc żeby był prosty, to użyjemy tylko kilku poleceń: #### .slirprc file #### add ptyexec /usr/bin/tcsh -l:10.0.2.1:23 compress baudrate 38400 #### end Polecenie ccoommpprreessss zapewnia nas, że zostanie użyty protokół CSLIP. Polecenie aadddd ppttyyeexxeecc zostało użyte zamiast polecenia sshheellll (listę poleceń znajdziesz w pliku docs/CONFIG), ponieważ lepiej jest użyć ttccsshh --ll (w pliku .login), a polecenie sshheellll nie przyjmuje opcji (tak sądzę). Powinieneś użyć dokładnej ścieżki do ttccsshh na serwerze dostawcy (albo użyj jakiejś innej powłoki (shell-a) jeśli wolisz). Polecenie bbaauuddrraattee powinno zostać użyte z wartością odpowiednią dla twojego połączenia modemowego. 33..22.. TTeessttoowwaanniiee SSLLiiRRPP--aa.. Zaloguj się na swoje konto u dostawcy i napisz _b_i_n_/_s_l_i_r_p (albo _._/_s_l_i_r_p, w zależności od lokalizacji) Powinieneś zobaczyć listę wiadomości z taką linią na końcu: [talking CSLIP, MTU 1500, MRU 1500, 38400 baud] Aby wyjść ze sslliirrpp--aa wpisz powoli (z ponad sekundowymi przerwami) pięć zer. 33..33.. KKoonnffiigguurraaccjjaa ttwwoojjeeggoo LLiinnuuxx--aa.. W skrócie to co musisz zrobić, to przygotować jądro, żeby mogło pracować z siecią i CSLIP-em. Potem powinieneś skonfigurować sieć. Napisz _m_a_k_e _c_o_n_f_i_g w katalogu /usr/src/linux i odpowiedz "y" na następujące pytania: Networking support (CONFIG_NET) [y] TCP/IP networking (CONFIG_INET) [y] Assume subnets are local (CONFIG_INET_SNARL) [y] Network device support? (CONFIG_NETDEVICES) [y] Dummy net driver support (CONFIG_DUMMY) [y] SLIP (serial line) support (CONFIG_SLIP) [y] CSLIP compressed headers (CONFIG_SLIP_COMPRESSED) [y] PPP (point-to-point) support (CONFIG_PPP) [y] Ja używam karty Ethernet-owej 3c509, więc moje dodatkowe opcje to: 3COM cards (CONFIG_NET_VENDOR_3COM) [y] 3c509/3c579 support (CONFIG_EL3) [y] Przy instalacji poprzez NFS możesz też dodać: NFS filesystem support (CONFIG_NFS_FS) [y] Teraz, jak już poprawnie skonfigurowałeś jądro, skompiluj je wydając polecenia: _m_a_k_e _d_e_p _&_& _m_a_k_e _c_l_e_a_n _&_& _m_a_k_e _z_I_m_a_g_e. Po kompilacji przenieś plik /usr/src/linux/arch/i386/boot/zImage do katalogu, w którym zwykle znajduje się jądro i uruchom lilo. Aby skonfigurować sieć, najpierw zdecyduj jaki będzie twój adres IP. Jeśli brakuje ci specjalnych adresów, to weź 192.168.1.100, który to jest dozwolony dla użytku lokalnego przez RRFFCC11559977. Dla systemów tylko z urządzeniem _l_o_o_p_b_a_c_k będzie to adres 127.0.0.1. Jeśli chcesz dokładnych i poprawnych informacji, to powinieneś raczej przeczytać NET-3-HOWTO (dostępne także po polsku ), ale możesz spróbować zrobić coś takiego: ˇ Nadaj swojemu systemowi nazwę sieciową, np. mmoojj--hhoosstt..lliinnuuxx..oorrgg, gdzie wszystkie trzy człony mogą być dowolne. Umieść powyższy łańcuch (bez znaków ") w pliku /etc/HOSTNAME. ˇ Zmodyfikuj twój plik /etc/hosts, dodając: 192.168.1.100 moj-host.linux.org moj-host 127.0.01 localhost (albo 127.0.0.1 moj-host.linux.org moj-host 127.0.0.1 localhost) Łańcuch "moj-host.linux.org" powinien być identyczny z tym wybranym w pierwszym kroku. ˇ Jeśli masz sieć Ethernet, to dodaj do pliku /etc/networks linię: moja-siec 192.168.1.0 (albo loopback 127.0.0.1) ˇ Zmodyfikuj swój plik rc.inet1 z katalogu /etc/rc.d (zachowaj gdzieś oryginalną wersję) i wpisz do niego: IPADDR=moj-host NETWORK=moja-siec NETMASK="255.255.255.0" BROADCAST="192.168.1.255" (albo NETMASK="255.0.0.0" BROADCAST="127.255.255.255") Potem jeśli masz w komputerze kartę Ethernet-ową, to odkomentuj poniższe linie: /sbin/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST} /sbin/route add -net ${NETWORK} netmask ${NETMASK} W innym razie, jeśli masz tylko _l_o_o_p_b_a_c_k, to upewnij się, że są tam: /sbin/ifconfig lo localhost /sbin/route add -net loopback ˇ Umieść swoją nazwę domeny lliinnuuxx..oorrgg (porównaj z krokiem pierwszym) w pliku /etc/resolv.conf w taki sposób: domain linux.org Teraz zrestartuj system. 33..44.. TTeessttoowwaanniiee ttwwoojjeeggoo LLiinnuuxx--aa.. Przede wszystkim obserwuj komunikaty pojawiające się podczas startu, albo zajrzyj do pliku /usr/adm/messages jeśli działa u ciebie proces _s_y_s_l_o_g_d_(_8_). Powinieneś zobaczyć mniej więcej takie komunikaty: IP Protocols: ICMP, UDP, TCP PPP: version ... TCP compression ... PPP line discipline registered. SLIP: version ... CSLIP: code copyright ... Jeśli posiadasz też interfejs Ethernet, to powinien on także zostać poprawnie rozpoznany: eth0: 3c509 at 0x280 ... Twoja sieć powinna być już aktywna i możesz trochę potestować kilkoma poleceniami: ˇ Uruchom _/_s_b_i_n_/_i_f_c_o_n_f_i_g bez parametrów. Powinieneś zobaczyć aktywny interfejs _l_o (loopback) wraz z przypisanymi mu adresami. Jeśli masz także sieć Ethernet, to zobaczysz dodatkowo informacje na temat interfejsu _e_t_h_0 i powinieneś zobaczyć znany ci już adres _i_n_e_t _a_d_d_r_: _1_9_2_._1_6_8_._1_._1_0_0, itp. ˇ Uruchom _/_s_b_i_n_/_r_o_u_t_e bez argumentów. Powinieneś zobaczyć linię dotyczącą _l_o_o_p_b_a_c_k i ewentualnie następną dotyczącą sieci "moja-sieć". Dobra, twój Linux jest gotowy do współpracy z CSLIP-em. 33..55.. IInnssttaallaaccjjaa DDIIPP--aa.. ˇ możliwe, że na twoim Linux-ie jest już zainstalowany ten program. Byłoby dobrze mieć wersję 33..33..77nn (jest tam uaktualniona dokumentacja). ˇ jeśli tak nie jest, zdobądź ten program, np. dip337n-uri.tar.gz i skompiluj program ddiipp na swoim lokalnym komputerze. Robi się to poprzez wydanie polecenia _m_a_k_e w katalogu dip-3.3.7n. ˇ przenieś program ddiipp do jakiegoś odpowiedniejszego katalogu, który jest w twojej zmiennej _$_P_A_T_H, np. /usr/local/bin/ albo _$_H_O_M_E/bin/dip. ˇ w jakimś odpowiednim katalogu, np. w _$_H_O_M_E, stwórz skrypt ddiipp--aa - slirp.dip Skrypt ddiipp--aa jest zwykle długi i skomplikowany. W katalogu samples znajduje się kilka przykładów (może to być np. /usr/doc/dip/samples) W każdym razie ja podam tutaj swój skrypt jako przykład: #### slirp.dip file #### # # slirp.dip Dialup IP script for use with SLiRP and netcom # main: # Ustaw maskę sieci na sl0 netmask 255.255.255.0 # Ustaw odpowiedni port szeregowy i jego prędkość. # Możliwe, że musisz zmienić ttyS2 na inną wartość dla twojego modemu. # Ja mam także uruchomione "mgetty" na tym porcie dlatego używam # "ttyS2" a nie "cua2" port ttyS2 speed 38400 # Zresetuj modem i linię terminalową. # Tutaj występują u niektórych problemy. reset # Przygotuj się do dzwonienia. # Zauważ, że twój modem może mieć inny łańcuch inicjacyjny. # Mój to WordBlazer send AT S0=0 S11=70 S50=254 S58=2 Q0 V1 E1 X4\r wait OK 2 if $errlvl != 0 goto modem_trouble redial: # Wybierz numer. # U ciebie będzie raczej inny numer. send ATDT 274 2900\r wait CONNECT 50 if $errlvl != 0 goto dial_trouble # Połączyliśmy się. Zaloguj ten fakt do systemu. login: sleep 2 send \n wait ogin: 20 if $errlvl != 0 goto login_trouble print got the login prompt, OK # zamień poniższe "zenon" na twój identyfikator u dostawcy sleep 2 send \n # Nie wiem dlaczego musiałem dodać jeszcze "\n" przed wysłaniem mojego # identyfikatora, ale inaczej nie działało sleep 2 send zenon\n print sent 'zenon', waiting for 'password' ... wait ord: 30 if $errlvl != 0 goto password_trouble # poniższe "blablabla" zamień na swoje hasło. send blablabla\r # Teraz jesteśmy już zalogowani - przypuszczalnie. loggedin: # Zamień poniższe na TWÓJ prompt (mój to zenon@netcomNN n% ) wait zenon 15 if $errlvl != 0 goto prompt_error # SLiRP ustawia 10.0.2.2 jako adres odległego komputera. get $remote 10.0.2.2 # Upewnij się, że "slirp" jest na ścieżce i że jest wykonywalny. # W tym przykładzie zakładam, że slirp został zainstalowany w katalogu # $HOME/bin send exec bin/slirp\n # Ustaw parametry CSLIP-a get $mtu 1500 # Upewnij się, że polecenie "route add -net default $remote" jest wykonane # W pakiecie dip-3.3.7n wystarczy wpisać "default" default # Powiedz "Cześć" i odpalaj. done: print CONNECTED local: $locip ---> remote: $rmtip mode CSLIP goto exit prompt_error: print TIME-OUT waiting for SLIPlogin to fire up... goto error login_trouble: print Trouble waiting for the Login: prompt... goto error password_trouble: print Trouble waiting for the Password: prompt... goto error modem_trouble: print Trouble occurred with the modem... goto error dial_trouble: print Trouble occurred while dialing... error: print CONNECT FAILED to $remote quit exit: exit #### end KOMENTARZ: W powyższym przykładzie niektóre pozycje wymagają podania danych specyficznych dla ciebie: ˇ numer portu (ja używam ttyS2) ˇ szybkość portu (ja używam 38400) ˇ łańcuch inicjacyjny modemu (ja mam WordBlazer) ˇ numer telefonu do twojego dostawcy (mam nadzieję, że twój jest inny) ˇ twój identyfikator u dostawcy ˇ twój prompt (aby potwierdzić zalogowanie się) ˇ lokalizacja "slirp-a" (mój jest w $HOME/bin) 33..66.. TTeessttoowwaanniiee DDIIPP--aa.. Polecenie _d_i_p _-_v _s_l_i_r_p_._d_i_p spowoduje uruchomienie ddiipp--aa w trybie _v_e_r_b_o_s_e - czyli na ekranie będą pojawiać się informacje co się w danym momencie dzieje. Komunikaty pojawiające się na ekranie mogą zasugerować jakieś zmiany do skryptu slirp.dip. Jeśli wszystko poszło dobrze, to powinieneś zobaczyć taki komunikat na końcu: CONNECTED local: 192.168.1.100 ---> remote: 10.0.2.2 (albo CONNECTED local: 127.0.0.1 ---> remote: 10.0.2.2) a ddiipp "zmienia" się teraz w proces-demon, zwracając ci dostęp do prompt-a. Przy okazji: teraz aby zakończyć działanie ddiipp--aa, wpisz po prostu _d_i_p _-_k a działanie ddiipp--aa zostanie zakończone i połączenie modemowe zamknięte. 44.. NNoorrmmaallnnee ddzziiaałłaanniiee.. ˇ Uruchom swoje połączenie dip+slirp pisząc _d_i_p _s_l_i_r_p_._d_i_p ˇ Po udanym połączeniu się i po komunikacie _C_O_N_N_E_C_T_E_D_._._. masz już działające połaczenie do Internet-u poprzez swojego dostawcę. Najpierw spróbuj się połączyć z serwerem dostawcy poprzez telnet: _t_e_l_n_e_t _1_0_._0_._2_._1 Dzięki konfiguracji z pliku .slirprc, połączenie to powinno wywołać _t_c_s_h _-_l i powinieneś otrzymać login prompt. Pisząc _p_s możesz zobaczyć coś takiego: 6019 s0 S 0:13 slirp 6075 sb IW 0:00 -/usr/bin/tcsh (tcsh) 16721 t6 R 0:00 ps ˇ Możesz zakończyć to połączenie telnet-owe, albo z innego wirtualnego terminala czy okienka w X-ach spróbować połączyć się przez ftp: _f_t_p _1_4_8_._8_1_._1_2_3_._1_0_0. Po udanym (?) połączeniu anonimowym, możesz odkryć, że jesteś... na ssuunnssiittee..iiccmm..eedduu..ppll - polskiej kopii archiwum Linux-a. Jeśli zaszedłeś już tak daleko, to możesz zacząć podziwiać możliwości połączenia dip+slirp: jesteś na SSIIEECCII. Rozłącz się z "sunsitem" tak szybko jak możesz, powracając do systemu "moj-host". Teraz pojawia się pytanie: Czy możemy po prostu napisać: _f_t_p _s_u_n_s_i_t_e_._i_c_m_._e_d_u_._p_l? Nie przed uaktywnieniem DNS-u (Domain Name Server). W tym momencie możesz chcieć się rozłączyć. Wpisz w swoim lokalnym prompcie _d_i_p _-_k. 44..11.. DDooddaawwaanniiee DDNNSS--uu.. Najprzypuszczalniej twój dostawca Internet-u ma serwis DNS (w przeciwnym razie nie byłbyś w stanie używać połączeń Internet-owych w normalny sposób). Połącz się raz jeszcze z serwerem dostawcy przy pomocy _d_i_p _s_l_i_r_p_._d_i_p i _t_e_l_n_e_t _1_0_._0_._2_._1. Zajrzyj do pliku /etc/resolv.conf. Powinieneś zobaczyć tam kilka takich linijek: nameserver gdzie będzie miał konkretną wartość. Skopiuj przynajmniej jedną z tych linijek do swojego pliku /etc/resol.conf. Teraz powróć do swojego lokalnego komputera (bez zamykania połączenia) i sprawdź czy serwis DNS działa. Wpisz: _d_n_s_q_u_e_r_y _s_u_n_s_i_t_e_._i_c_m_._e_d_u_._p_l. Jeśli na ekranie pojawi się numer IP powyższego adresu, to oznacza, że twój DNS działa. Teraz możesz używać takich narzędzi jak llyynnxx, mmoossaaiicc czy nneettssccaappee bezpośrednio ze swojego Linux-a. 55.. KKoommeennttaarrzzee.. Ten uproszczony dokument został napisany raczej jako streszczenie podstawowej instalacji dip+slirp, aniżeli podręcznik. Zamysłem było pomóc potencjalnym użytkownikom CSLIP-a przy starcie. Tekst ten jest wysyłany jako mini-HOWTO, dlatego, jeśli zobaczysz w nim jakieś oczywiste błędy, daj mi znać, proszę. Wszystkie wersję są dostępne u mnie w katalogu na ftp: ftp.netcom.com . Chcę podziękować autorom narzędzi ddiipp i sslliirrpp za cudowne programy. Jestem pod wrażeniem i bardzo wdzięczny. Zenon Fortuna (zenon@netcom.com ) 55..11.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez tłumacza to: ˇ zmiana NET-2-HOWTO na NET-3-HOWTO ˇ zmiana poleceń kompilacji jądra z "make dep make zImage" na "make dep && make clean && make zImage" ˇ info o polskim tłumaczeniu NET-3-HOWTO ˇ zmiana wywołań ifconfig i route na /sbin/ifconfig i /sbin/route ˇ zmiana adresu IP z sunsite.unc.edu na sunsite.icm.edu.pl (po co łączyć się z USA skoro można z Polską?) doc-linux-pl-2002.06.14.orig/mini/Diskless.pl.txt0100664000175000017500000004137107104371340020266 0ustar covencoven Mini Howto dla bezdyskowych stacji Robert Nemkin, buci@math.klte.hu v0.0.3, 12 Września 1996. WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.12, 26 Lipca 1997 Dokument ten opisuje jak zainstalować bezdyskową stacje roboczą Linux- a. Prawa autorskie należą do Roberta Nemkina. Polisa praw autorskich to GPL. Chciałbym podziękować Bela Kis bkis@cartan.math.klte.hu za przetłumaczenie tego dokumentu na język angielski. Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl . ______________________________________________________________________ Spis treści 1. Zmiany. 2. Jak zainstalować bezdyskową stację roboczą Linux-a ? 3. Dokumenty związane z tym. 4. Sprzęt. 5. Podstawowe idee. 5.1 Ustawianie PC-ta. 5.2 Ustawianie bootpd na serwerze. 5.3 Konfiguracja bottpd na serwerze. 5.4 Rozumienie tftp. 5.5 Ustawianie minimalnej konfiguracji Linux-a na odległym serwerze. 5.6 Konfiguracja serwera tftp. 5.7 Praca końcowa. 6. Wymagania pamięciowe i dyskowe; prędkość. 7. Możliwe błędy. 8. Błędy i możliwy dalszy rozwój tego dokumentu. 8.1 Od autora. 8.2 Od tłumacza. ______________________________________________________________________ 11.. ZZmmiiaannyy.. ˇ v0.0.3 12 Września 1996: Małe poprawki błędów. 22.. JJaakk zzaaiinnssttaalloowwaaćć bbeezzddyysskkoowwąą ssttaaccjjęę rroobboocczząą LLiinnuuxx--aa ?? Dokument ten traktuje o instalacji bezdyskowej stacji roboczej na Linux-ie. Czasami jest konieczna instalacja Linux-a na PC-tach, które nie mają ani dysku twardego ani stacji dyskietek. Jeśli dostępna jest sieć, inny komputer z Unix-em z bootp, tftp, serwer NFS, i eprom burner FIXME wtedy możliwe jest zainstalowanie Linux-a bez twardego dysku czy dyskietek. 33.. DDookkuummeennttyy zzwwiiąązzaannee zz ttyymm.. ˇ NFS-root Mini Howto ˇ Linux NET-2/3-HOWTO napisane przez Terry Dawsona, _9_4_0_0_4_5_3_1_@_p_o_s_t_o_f_f_i_c_e_._c_s_u_._e_d_u_._a_u ˇ /usr/src/linux/README na temat konfiguracji i kompilacji nowego jądra. 44.. SSpprrzzęętt.. Cokolwiek tu było opisane, sprawdzone zostało na następującej konfiguracji: ˇ Sun-OS 4.1.3 jako serwer startowy ˇ Slackware 2.3 + Linux 1.2.8 + wd 8013 ethercard ˇ Działająca sieć lokalna oparta na Ethernecie. 55.. PPooddssttaawwoowwee iiddeeee.. Podstawową ideą tego jest: PC-et otrzyma swój adres IP z serwera startowego poprzez protokół bootp, używając 0.0.0.0 jako inicjacyjnego adresu IP oraz jądro poprzez protokół tftp. (-- Startowanie poprzez różne segmenty (poprzez ruter) nie jest takim prostym pytaniem, więc albo umieść oba - serwer startowy i stację bezdyskową - w jednym segmencie albo skonfiguruj pomocniczy adres UDP w swoim ruterze dla adresu serwera. Dalszych informacji szukaj w podręczniku dostarczonym razem z twoim ruterem.--) Aby to zrobić postepuj zgodnie z poniższymi krokami. 55..11.. UUssttaawwiiaanniiee PPCC--ttaa.. Zdobądź pakiet nfsboot. (Dostępny jest np. z ftp.icm.edu.pl) Zawiera on obraz BIOS-u dla karty wd8013, który może być bezpośrednio zapisany. Są jeszcze inne alternatywne sposoby na przygotowanie PC-ta: ˇ jeśli twój komputer nie jest całkowicie bezdyskowy, wtedy możesz użyć małego DOS-owego programu albo ˇ obrazu dyskietki binarnej z tego samego pakietu. Jeśli wybierzesz tę druga opcję musisz zapisać obraz na dyskietke poleceniem dd. Obrazy te zawierają klienta bootp oraz tftp. Musisz także przygotować jądro, które będzie zawierało opcję nfs-root. ˇ Jeśli używasz najnowszej stabilnej wersji jądra, linux-1.2.13, to musisz załatać jądro łatą zawartą w pakiecie nfsboot. (-- Zobacz patch(1)--) ˇ Jeśli próbujesz użyć najnowszej wersji jądra z serii 1.3.x, to musisz skonfigurować opcję nfs-root. Możesz skonfigurować obsługę urządzenia blokowego (dyskietki albo dysku twardego), ale musisz skonfigurować obsługę tcp/ip, karty wd ethernet, głównego sytemu plików przez nfs. Potem skompiluj jądro jak zwykle. 55..22.. UUssttaawwiiaanniiee bboooottppdd nnaa sseerrwweerrzzee.. Można go znleźć w pakiecie >bootpd-2.4.tar.gz na serwerze ftp.icm.edu.pl. Zdobądź pakiet, skompiluj go i zainstaluj. Jeśli twój drugi komputer to przypadkiem Linux Slackware, to możesz przeskoczyć ten krok ponieważ standardowa dystrybucja zawiera bootpd. Demona można uruchomić albo bezpośrednio poleceniem: bootpd -s albo używając inetd. W tym wypadku musisz: ˇ zmienić plik /etc/inetd.conf przez usunięcie znaku # z początku tych linii: ___________________________________________________________________ # tftp dgram udp wait root /usr/sbin/in.tftpd tftpd /export # bootps dgram udp wait root /usr/sbin/in.bootpd bootpd ___________________________________________________________________ ˇ dołożyć lub także odkomentować następujące linie w pliku /etc/services ___________________________________________________________________ bootps 67/tcp # serwer BOOTP tftp 69/udp # serwer TFTP ___________________________________________________________________ ˇ ponownie zainicjować inetd przez kill -HUP 55..33.. KKoonnffiigguurraaccjjaa bboottttppdd nnaa sseerrwweerrzzee.. Po pierwsze bootpd ma plik konfiguracyjny o nazwie bootptab, który z reguły znajduje się w katalogu /etc. Musisz go zmodyfikować przez wpisanie adresu IP twoich gateway-ów, serwerów dns i adres-u/ów ethernet twojej stacji bezdyskowej. Oto przykładowy plik konfiguracyjny /etc/bootptab: ______________________________________________________________________ global.prof:\ :sm=255.255.255.0:\ :ds=192.168.1.5:\ :gw=192.168.1.19:\ :ht=ethernet:\ :bf=linux: machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.1 machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.1 machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.1 ______________________________________________________________________ _g_l_o_b_a_l_._p_r_o_f jest ogólnym szablonem dla pól host-a, gdzie ˇ sm jest maską podsieci ˇ ds jest adresem serwera DNS ˇ gw jest adresem gatway-a ˇ ht jest typem sprzętu LAN ˇ bf jest nazwą pliku startowego Potem każdy komputer musi mieć swoją linię: ˇ pierwsze pole jest nazwą host-a ˇ pole hd jest katalogiem, w którym znajduje się plik startowy ˇ ogólny szablon może być zawarty przez pole tc ˇ pole ha jest adresem sprzętowym karty ethernet ˇ pole ip jest adresem przypisanym do danego host-a 55..44.. RRoozzuummiieenniiee ttffttpp.. TFTP (Trivial File TRansfel Protocol) jest protokołem transferu plików, takim jak ftp, z tym, że o wiele prostszym do zapisania go w EPROM-ach. TFTP może zostac użyty na dwa sposoby: ˇ proste tftp: oznacza, że klient ma dostęp do całego twojego systemu plików. Jest to prostsze rozwiązanie, ale jest ono wielką dziurą w bezpieczeństwie systemu (każdy może pobrać twój plik z hasłami poprzez tftp). ˇ bezpieczne tftp: serwer tftp używa funkcji systemowej chroot(2), aby zmienić swój katalog główny. Wszystko poza nowym katalogiem głównym będzie całkiem niedostępne. Z powodu chroot dir staje się nowym katalogiem głównym; pole hd musi odzwierciedlać nową sytuację. Na przykład: podczas używania niezabezpieczonego tftp, pole hd zawiera pełną ścieżkę do katalogu startowego: /export/root/machine1. Podczas używania bezpiecznego tftp z katalogiem /expoprt jako katalog główny, wtedy /export staje się / a pole hd musi zawierać /root/machine1. Prawie każda implementacja Unix-a zawiera serwer tftp, przypuszczalnie nie musisz instalować własnego. 55..55.. sseerrwweerrzzee.. UUssttaawwiiaanniiee mmiinniimmaallnneejj kkoonnffiigguurraaccjjii LLiinnuuxx--aa nnaa ooddlleeggłłyymm Może to zawierać pakiety a, ap, n oraz x z dystrybucji Slackware. Jeśli zainstalujesz więcej - nie ma sprawy; ale wymienione pakiety wystarczą, żeby zrobić bezdyskowy Xterminal. Do instalacji potrzebujesz działającego już Linux-a. Znajdź trochę miejsca na dysku na odległym komputerze i wyeksportuj je jako do zapisu-i-odczytu. Zamontuj ten wyeksportowany katalog gdzieś (np. /mnt) w systemie plików Linux-a. Zacznij ustawianie Linux-a i zmień opcję root w setup- ie z / na /mnt. Potem zainstaluj powyższe pakiety jak zwykle. Jeśli chcesz mieć nie więcej niż jedną stację bezdyskową Linux-ową, to nie potrzeba żadnych zmian. Jednak z drugiej strony, jeśli planujesz używać więcej niż jednej bezdyskowej stacji Linux-owej wtedy powyższe ustawienia nie będą działać ponieważ niektóry pliki i katalogi muszą być prywatne dla danej maszyny. Problem ten można obejść przez przeniesienie katalogu /usr (nie zaweira on żadnych prywatnych danych) i stworzyć osobne podkatalogi dla każdej bezdyskowej stacji. Na przykład, jeśli /export/linux/machine1 zostałby zamontowany na /mnt wtedy struktura katalogów po inicjacyjny ustawieniu wyglądałaby tak: ______________________________________________________________________ /export/linux/machine1/bin /export/linux/machine1/sbin /export/linux/machine1/lib /export/linux/machine1/etc /export/linux/machine1/var /export/linux/machine1/usr ______________________________________________________________________ Po zmianach wyglądałaby tak: ______________________________________________________________________ /export/linux/machine1/bin /export/linux/machine1/sbin /export/linux/machine1/lib /export/linux/machine1/etc /export/linux/machine1/var /export/linux/usr ______________________________________________________________________ Teraz stwórz podkatalogi dla innych maszyn. Przyjmij na razie, że twoje stacje bezdyskowe nazywają się machine1, machine2, ..., machinen; wtedy możesz użyć następującego skryptu w bash-u, aby pozakładać inne katalogi: ______________________________________________________________________ #!/bin/bash cd /export/linux for x in machine2 machine3 ; do mkdir $x; cd $x (cd ../machine1; tar cf - *) | tar xvf - done ______________________________________________________________________ Potem zrób nastepujące eksporty: ˇ /export/linux/usr tylko-do-odczytu dla każdego ˇ /export/liunx/machine1 tylko dla machine1 z prawami rw, root ˇ /export/liunx/machine2 tylko dla machine2 z prawami rw, root ˇ /export/liunx/machine3 tylko dla machine3 z prawami rw, root tak jak tutaj: (-- format tego przykładowego pliku odpowiada składni pliku eksportowego z SunOS-u 4.1.3--) ______________________________________________________________________ # To jest plik /etc/export # dla odległych Xterminali na Linux-ie zrobiony przez Buci # ta linia pojawia się tylko jeden raz /export/root/usr -access=linuxnet # te po jednej dla każdego host-a /export/root/machine1 rw=machine1,root=machine1 /export/root/machine2 rw=machine2,root=machine2 /export/root/machine3 rw=machine3,root=machine3 ______________________________________________________________________ Nie zapomnij uruchomić exportfs -a. 55..66.. KKoonnffiigguurraaccjjaa sseerrwweerraa ttffttpp.. Teraz czas na konfigurację serwera tftp. Jeśli nie potrzebujesz bezpiecznego tftp, to wszystko jest raczej proste, twoje klienty mogą być startowane z katalogu /export. Jeśli używany jest bezpieczny tftp, to możesz albo zrobić pełną strukturę katalogów /export/linux pod tftpboot (z jednym rzeczywistym jądrem i symbolicznymi dołączeniami dla innych maszyn), albo niech katalog /export będzie katalogiem startowym dla bezpiecznego tftpd. Albo, jeśli masz odrębny katalog tftpboot, to potrzbujesz tylko oryginalnej struktury katalogów z jednym jądrem i symbolicznymi dowiązaniami dla innych. Możesz otrzymać takie ustawienie przez wpisanie tego: ______________________________________________________________________ mkdir -p /tftpboot/export/linux/machine1 cd /tftpboot/export/linux/machine1 cp /export/linux/machine1/ . ______________________________________________________________________ 55..77.. PPrraaccaa kkoońńccoowwaa.. Ostatecznie musisz wpisać: ______________________________________________________________________ /sbin/mount nfs_server:/export/linux/usr /usr ______________________________________________________________________ jako pierwszą linię pliku ______________________________________________________________________ /export/linux//etc/rc.d/rc.S ______________________________________________________________________ gdzie to machine1, machine2, itd. 66.. WWyymmaaggaanniiaa ppaammiięęcciioowwee ii ddyysskkoowwee;; pprręęddkkoośśćć.. Slackware 2.3; dla innych dystrybucji/wersji podane liczby mogą być różne. ˇ Miejsce na dysku: 28MB + 6,5MB/maszynę ˇ RAM: Ja używam X-ów na 8MB. Tylko dla 4MB jest potrzebny swap, sądze; może on być stworzony oddzielnie dla każdego komputera w katalogu /tmp. Nie zapomnij uruchomić _m_k_s_w_a_p. ˇ Prędkość: Nie miałem problemów na 486 DX2/66 z 8MB RAM-u. 77.. MMoożżlliiwwee bbłłęęddyy.. ˇ Znalazłem dziwny błąd: w podkatalogu /dev SunOS popsuł pliki urządzeń i musiałem uruchomic ponownie MAKEDEV przez zamontowanie tego podkatalogu na Linux-a z dyskiem. (Powodem były różnice pomiędzy Linux-owym a SunOS-owym nfs-em: oba używają 32 bitów na liczbę główną (major) i liczbę poboczną (minor) urządzeń, ale Linux używa 16-bitowych pól dla każdego z nich, a SunOS używa 14 bitów dla liczby głównej, a 18 bitów dla liczby pobocznej.) ˇ Kiedy bezdyskowy Linux jest startowany, jest tylko jedno pole w tablicy rutingu do serwera tftp, tak więc musisz ustawić poprawne tablice rutingu. Masz tu dwie możliwości do wyboru: ˇ skonfigurować każdy rc.S dla każdej maszyny, ˇ użyć pakietu z klientem _b_o_o_t_p i napisać uogólniony skrypt ustawiający. 88.. BBłłęęddyy ii mmoożżlliiwwyy ddaallsszzyy rroozzwwóójj tteeggoo ddookkuummeennttuu.. 88..11.. OOdd aauuttoorraa.. ˇ Poprawne cytowanie dokumentów związanych. ˇ SunOS powstał na podstawie BSD. Trzeba dołączyć konfigurację bazowaną na SVR4 (np. Solaris) ˇ Pomimo, iż Linux jest dość podobny do SunOS-a jako serwer bootp/tftp, to jednak przydałby się przykład wziętyz Linux-a. ˇ Odnowienie tego dokumentu w związku z bieżącą wersja pakietu etherboot. ˇ Pokazać różnice między załatanym jądrem z nfs-root w wersji 1.2.13 i najnowszą wersją jądra 1.3.x, która ma w sobie łatę nfs-root. ˇ Trzeba wypróbować inne karty niż wd8013. ˇ Dołączyć informacje na temat konfiguracji _b_o_o_t_p_c, klienta bootp dla Linux-a, żeby ustawić poprawną tablicę rutingu. ˇ Literówki i inne błędy: zgłaszaj je do buci@math.klte.hu Dziękuję. 88..22.. OOdd ttłłuummaacczzaa.. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl/pub/Linux/JTZ/ Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl Zmiany wprowadzone przeze mnie do tego dokumentu to polskie odnośniki do serwerów ftp i WWW. doc-linux-pl-2002.06.14.orig/mini/Ext2fs-Undeletion.pl.txt0100664000175000017500000013515407104371340021767 0ustar covencoven Linux Ext2fs Undeletion mini-HOWTO Autor: Aaron Crane aaronc@poboc.com v1.3, 2 lutego 1999 ssaawwiicckkiibb@@eeee..ppww..eedduu..ppll v1.0, 15 kwietnia 1999 Wyobraź sobie. Trzy ostatnie trzy dni spędziłeś bez snu, jedzenia, a nawet bez prysznica. Właśnie ukończyłeś program, który przyniesie Ci światową sławę i uznanie. Musisz go jeszcze tylko starować i umieścić na Metalab-ie. No, i skasować wszystkie kopie zapasowe tworzone przez Emacs-a. Piszesz więc rm * ~. Już za późno, zauważyłeś dodatkową spację w poleceniu. Właśnie skasowałeś całe swoje dzieło ! Nadchodzi pomoc. Dokument ten wyjaśnia jak odzyskiwać skasowane pliki w sys­ temie plików Second Extended File System. Może uda Ci się jednak opub­ likować Twój genialny program. Dokument ten został napisany w stan­ dardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://pobox.com/~aaronc/ . ______________________________________________________________________ Spis treści 1. Wstęp 1.1 Historia publikacji 1.1.1 Zmiany w wersji 1.1 1.1.2 Zmiany w wersji 1.2 1.1.3 Zmiany w wersji 1.3 1.2 Inne lokalizacje tego dokumentu 2. Jak nie skasować plików 3. Jakiego współczynnika odzyskania skasowanych plików mogę się spodziewać ? 4. Jak odzyskać skasowane pliki ? 5. Odmontowanie systemu plików 6. Przygotowanie do bezpośrednich zmian iwęzłów 7. Przygotowanie do zapisu danych w innym miejscu 8. Szukanie skasowanych iwęzłów 9. Uzyskiwanie szczegółowych informacji o iwęzłach 10. Odzyskiwanie bloków danych 10.1 Małe pliki 10.2 Większe pliki 11. Bezpośrednie modyfikacje iwęzłów 12. Czy będzie to kiedyś łatwiejsze? 13. Czy są jakieś programy automatyzujące ten proces? 14. Kolofon 15. Wyrazy uznania i bibliografia 16. Formalności 17. Od tłumacza ______________________________________________________________________ 11.. WWssttęępp To mini-Howto stara się dostarczyć porad jak odzyskiwać skasowane pliki w systemie plików ext2. Zawiera ono również dyskusję, jak przede wszystkim, nie dopuścić do skasowania ważnych plików. Chciałbym, aby było ono przydatne dla ludzi, którym zdarzył się mały wypadek z rm; jakkolwiek mam również nadzieję, że przeczytają je także inni. Nigdy nie wiadomo, pewnego dnia, któraś z zamieszczonych tu informacji z może uratować Ci tyłek. Tekst ten zakłada ogólną podstawową wiedzę o systemie plików UNIX-a. Mam jednak nadzieję, że będzie dostępny dla większości użytkowników Linux-a. Jeśli jesteś całkowicie początkujący, obawiam się, że odzyskiwanie plików _w_y_m_a_g_a ilości wiedzy technicznej, której nie posiadasz. Nie będziesz mógł odtwarzać skasowanych plików z systemu plików ext2 bez praw odczytu do urządzenia, na którym były one przechowywane. Ogólnie oznacza to, że musisz być administatorem (root). Niektóre dystrybucje (takie jak Debian GNU/Linux) tworzą grupę disk, której członkowie mają dostęp do takich urządzeń. Będziesz potrzebował także debugfs z pakietu e2fsprogs. Prawdopodobnie jest on już zainstalowany przez Twoją dystrybucję. Dlaczego to napisałem? Wynikło to głównie z moich własnych doświadczeń ze zwykłą głupotą i katastrofą spowodowaną przez komendę rm -r wykonywaną z prawami administratora. Skasowałem 97 plików typu JPEG, których potrzebowałem i których prawie na pewno nie można było odzyskać z innych źrodeł. Z pomocą użytecznych wskazówek (patrz rozdział ``Wyrazy uznania i Bibliografia'') i dużej wytrwałości, odzyskałem 91 nieuszkodzonych plików. Udało mi się odtworzyć częściowo następne pięć (wystarczająco, aby zobaczyć co było na tych obrazkach). Tylko jednego nie byłem w stanie obejrzeć, ale nawet w tym przypadku, jestem prawie pewien, ze stracone zostały nie wiecej niż 1024 bajty (niefortunnie z samego poczatku pliku; uwzględniając to, że nic nie wiem o formacie JPG, zrobiłem wszystko co mogłem). W dalszych rozważaniach będę chciał przedstawić jakiej wielkości współczynnika odtworzenia skasowanych plików możesz się spodziewać. 11..11.. HHiissttoorriiaa ppuubblliikkaaccjjii Istnieją następujące upublicznione wersje tego dokumentu (i daty ich publikacji): ˇ v1.0, 18 stycznia 1997 ˇ v1.1, 23 lipca 1997 (patrz rozdział ``Zmiany w wersji 1.1'') ˇ v1.2, 4 sierpnia 1997 (patrz rozdział ``Zmiany w wersji 1.2'') ˇ v1.3, 2 lutego 1999 (patrz rozdział ``Zmiany w wersji 1.3'') 11..11..11.. ZZmmiiaannyy ww wweerrssjjii 11..11 Jakie zmiany zostały zrobione w tej wersji? Przede wszystkim, został poprawiony błąd w przykładowym odzyskiwaniu pliku. Dziękuję wszystkim, którzy napisali, żeby wskazać mi ten błąd. Mam nadzieję, że nauczyłem się być bardziej uważnym przy interakcyjnej pracy z programem. Po drugie, rozważania o systemie plików w UNIX-ie zostały przerobione tak, aby uczynić je bardziej zrozumiałymi. Od początku nie byłem z tego zadowolony i dostałem komentarze, że nie było to napisane zbyt jasno. Po trzecie, uuencode'owany gzip-owany tar-owany pakiet fsgrab ze środka pliku został usunięty. Teraz program dostępny jest na mojej stronie domowej i na Metalab-ie (i kopiach, w Polsce - Sunsite ). Po czwarte, dokument ten został przetłumaczony na język składu SGML używany w Linux Documention Project. Ten język może być łatwo konwertowany do innych języków składu (np. HTML-a i LaTeX-a) w celu dogodnego sposobu wyświetlania i drukowania. Jedną z korzyści z tego jest to, że ładny wygląd wersji papierowej jest łatwiejszy do osiągniecia. Inną jest to, że dokument zawiera wewnętrzne i zewnętrzne odnośniki, gdy oglądany jest przez WWW. 11..11..22.. TToo wwyyddaanniiee zzaawwiieerraa wwyyłłąącczznniiee ppoopprraawwkkii.. GGłłóówwnniiee uuwwzzggllęęddnniiłłeemm zzmmiiaannyy ssuuggeerroowwaannee pprrzzeezz cczzyytteellnniikkóóww,, ttoo oonnee ssąą wwłłaaśśnniiee nnaajjwwaażżnniieejjsszzee.. PPiieerrwwsszzaa zzmmiiaannaa zzoossttaałłaa zzaassuuggeerroowwaannaa pprrzzeezz EEggiillaa KKvvaalleebbeerrggaaeeggiill@@kkvvaallee­­ bbeerrgg..nnoo,, kkttóórryy wwsskkaazzaałł nnaa ppoolleecceenniiee dduummpp ww ddeebbuuggffss .. JJeesszzcczzee rraazz,, ddzziięękkii EEggiill.. DDrruuggaa zzmmiiaannaa ppoolleeggaałłaa nnaa zzaazznnaacczzeenniiuu,, żżee uużżyycciiee cchhaattttrr ppoommaaggaa uunniikknnąąćć sskkaassoowwaanniiaa wwaażżnnyycchh pplliikkóóww.. DDzziieekkuujjęę HHeerrmmaannoowwii SSuuiijjss HH..PP..MM..SSuuiijjss@@kkuubb..nnll zzaa zzaauuwwaażżeenniiee tteeggoo.. SSttrreesszzcczzeenniiee zzoossttaałłoo uuaakkttuuaall­­ nniioonnee.. ZZoossttaałłyy ddooddaannee UURRLL--ee ddoo oorrggaanniizzaaccjjii ii oopprrooggrraammoowwaanniiaa.. WWpprroowwaadd­­ zzoonnoo wwiieellee iinnnnyycchh mmnniieejjsszzyycchh zzmmiiaann ((lliitteerróówwkkii ii ttyymm ppooddoobbnnee)).. ZZmmiiaannyy ww wweerrssjjii 11..22 11..11..33.. ZZmmiiaannyy ww wweerrssjjii 11..33 Pomimo, że jest to pierwsza wersja od 17 miesięcy, jest tutaj mało nowego. W wersji tej poprawione są drobniejsze błędy (literówki, puste URL-e, tego typu rzeczy -- szczególnie nie związane z Open Group), uaktualniono kilka części tekstu, które uległy przeterminowaniu, takich jak partie dotyczące wersji jądra i lde. No i zmieniłem `Sunsite' na `Metalab'. To wydanie jest przewidywane jako ostatnie przed wersją 2.0, która, mam nadzieję, będzie pełnym Howto. Pracuję nad istotnymi zmianami, które spowodują zwiększenie głównego numeru wersji. 11..22.. IInnnnee llookkaalliizzaaccjjee tteeggoo ddookkuummeennttuu Najnowsza publiczna wersja tego dokumentu powinna być zawsze dostępna na Linux Documentation Project site (i kopiach, w Polsce - Sunsite ). Najbardziej aktualna wersja jest również przechowywana na mojej stronie domowej w kilku formatach: ˇ źródło SGML . To jest format źródłowy, tak jak to napisałem używając pakietu SGML Tools. ˇ HTML . To jest HTML, automatycznie wygenerowany ze źródła SGML. ˇ czysty tekst . To jest czysty tekst, który również został automatycznie wygenerowany ze źródła SGML. 22.. JJaakk nniiee sskkaassoowwaaćć pplliikkóóww Trzeba pamiętać, że Linux różni się od MS-DOS jeśli chodzi o kasowanie plików. W MS-DOS (jak i w Windows 95), dosyć łatwo jest odzyskać skasowane pliki - `system operacyjny' (używam tego terminu dosyć swobodnie) dostarcza nawet narzędzi, które automatyzują ten proces. W Linux-ie jest inaczej. Reguła numer jeden (podstawowa wskazówka) brzmi: RRÓÓBB KKOOPPIIEE ZZAAPPAASSOOWWEE bez względu na wszystko. Pomyśl o wszystkich swoich danych. Być może, jak ja, trzymasz kilkuletni zbiór listów, kontaktów, programów, dokumentów na swoim komputerze. Pomyśl co by się stało z Twoim życiem, gdyby Twój dysk uległ katastrofalnemu uszkodzeniu, lub gdyby -- o wielkie nieba ! -- złośliwy craker wyczyścił Twój dysk. To nie jest niemożliwe; korespondowałem z wieloma ludźmi w takiej sytuacji. Myślę, że teraz wszyscy rozsądnie myślący użytkownicy Linux-a wyjdą, kupią urządzenie do robienia kopii zapasowych, opracują kalendarz archiwizacji i _b_ę_d_ą _s_i_ę _j_e_g_o _t_r_z_y_m_a_ć. Ja używam wolnego dysku twardego w innym komputerze i okresowo kopiuję tam przez sieć ethernet mój katalog domowy. Więcej informacji o planowaniu kalendarza archiwizacji znajdziesz u Frischa (1995) (patrz rozdział ``Bibliografia i Wyrazy Uznania''). Co wtedy, gdy nie ma kopii zapasowej? (lub nawet przy istnieniu kopii zapasowej: żadne środki bezpieczeństwa nie są złym rozwiązaniem w miejscu gdzie przechowywane są ważne dane). Spróbuj ustawić prawa dostępu do ważnych plików na 440 (lub mniej): odebranie sobie samemu praw zapisu oznacza, że rm będzie wymagał potwierdzenia przed skasowaniem. (Zauważyłem, że jeśli rekursywnie kasuję katalog rm -r, prośba potwierdzenia pojawi się przy pierwszym i drugim pliku, potem program zachowuje się jak rm -rf). Niezłą sztuczką dla wybranych plików jest utworzenie w ukrytym katalogu twardych dowiązań do nich. Kiedyś usłyszałem historię o administatorze, który przez pomyłkę skasował /etc/passwd (nieomal w ten sposób niszcząc system). Jednym z rozwiązań takiego kłopotu jest zrobienie czegoś następującego (jako root): # mkdir /.backup # ln /etc/passwd /.backup Teraz skasowanie pliku wymaga większego wysiłku: gdy napiszesz tylko # rm /etc/passwd wtedy # ln /.backup/passwd /etc odtworzy Twój plik. Oczywiście, to rozwiązanie nie pomoże jeśli nadpiszesz plik, więc nie zapomninaj o kopii zapasowej. W systemie plików ext2 jest możliwe użycie atrybutów ext2, aby ochraniać pliki. Atrybuty te mogą być zmieniane za pomocą komendy chattr. Istnieje atrybut `append-only`: plik z tym atrybutem może być tylko powiększany, nie może być skasowany i istniejąca zawartość nie może być nadpisana. Jeśli atrybut ten ma katalog, każdy plik czy katalog w nim leżący może być normalnie modyfikowany, ale żaden z plików nie może zostać skasowany. Atrybut `append-only' ustawia się poleceniem $ chattr +a FILE... Istnieje również atrybut `immutable', który może być zapalany lub gaszony tylko przez administratora. Pliku lub katalogu z tym atrybutem nie można zmienienić, skasować, zmienić jego nazwy, czy utworzyć do niego twardego dowiązania. Można go ustawić w następujący sposób: # chattr +i FILE... Ext2fs dostarcza również atrybutu `undeletable' (+u in chattr). Założenie było takie, że plik z tym atrybutem po skasowaniu zostaje przeniesiony w bezpieczne miejsce `safe location', aby rzeczywiste skasowanie przesunąć w czasie. Niestety funkcja ta nie jest jeszcze zaimplementowana w jądrze. Myślałem, że będzie większe zainteresowanie nią i stanie się to szybko, ale nie jest ona dostępna (według mojej wiedzy) w żadnej aktualnej wersji jądra. Niektórzy radzą, aby zrobić alias lub funkcję w powłoce rm, która wykonywałaby rm -i (będziesz musiał potwierdzić skasowanie _k_a_ż_d_e_g_o pliku). Dystrubucja Red Hat robi to domyślnie dla wszystkich użytkowników, w tym i dla root-a. Ja osobiście nie lubię oprogramowania, które nie może działać bez mojej pomocy, dlatego nie używam tego sposobu. Wcześniej, czy później może pojawić się kolejny problem: kiedy będziesz pracował w trybie singe- user, lub będziesz używał innej powłoki lub nawet innej maszyny, gdzie Twoja funkcja rm nie istnieje. Jeśli będziesz spodziewał się, że każde skasowanie wymaga potwierdzenia, dosyć łatwo jest nie przewidzieć tego, że kazałeś skasować zbyt wiele plików. Również skrypty i programy, które podmieniają rm mogą być bardzo niebezpieczne. Trochę lepszym rozwiązaniem jest użycie pakietu, który umożliwia `odtwarzalne' kasowanie poprzez specjalną komendę zastępująca rm. Szczegóły znajdziesz u Peeka (1993) (patrz rozdział ``Bibliografia i Wyrazy Uznania''). Jednak w ten sposób przyzwyczajamy użytkownika do pewniej nonszalancji przy kasowaniu plików. Nie jest to najlepsze, bowiem system typu Unix wymaga jednak uważnego działania. 33.. JJaakkiieeggoo wwssppóółłcczzyynnnniikkaa ooddzzyysskkaanniiaa sskkaassoowwaannyycchh pplliikkóóww mmooggęę ssiięę ssppooddzziieewwaaćć ?? To zależy. Problem wynika z tego, że w systemie operacyjnym wysokiej jakości, wielozadaniowym, wieloużytkownikowym, takim jak Linux, nie możesz przewidzieć kiedy ktoś zechce zapisać coś na dysk. Po chwili, w której kazałeś systemowi skasować jakiś plik, bloki przez niego zajęte mogą zostać użyte, gdy system będzie chciał zapisać coś nowego. (Jest to jeden przykład ogólnej zasady systemów typu Unix: jądro i związane z nim programy zakładają, że użytkownicy nie są idiotami). Ogólnie rzecz biorąc, im bardziej obciążona jest Twoja maszyna, tym mniej prawdopodobne jest odzyskanie plików. Znaczenie może mieć również fragmentacja dysku. Jeśli partycja, na której był skasowany plik jest bardzo pofragmentowana, masz małe szanse na odczytanie całej jego treści. Jeśli Twój komputer, tak jak mój, realnie jest maszyną jednoużytkownikową i nie robiłeś niczego co intensywnie korzystało z dysku w tragicznej chwili skasowania pliku, możesz się spodziewać współczynnika odzysku zbliżonego do tego wymienionego niżej. Ja odzyskałem prawie 94% plików (były to pliki binarne) w stanie nieuszkodzonym. Jeżeli otrzymasz 80% lub więcej, myślę, że będziesz z siebie zadowolony. 44.. JJaakk ooddzzyysskkaaćć sskkaassoowwaannee pplliikkii ?? Operacja ta polega głównie na znalezieniu danych na urządzeniu partycji i uczynieniu ich ponownie widocznymi dla systemu operacyjnego. Są dwa sposoby, żeby to zrobić: pierwszy polega na takiej zmianie systemu plików, żeby usunąć znacznik `deleted' ze skasowanych iwęzłów z nadzieją, że pliki nagle pojawią się na swoim miejscu. Inną metodą, bezpieczniejszą, ale wolniejszą jest znalezienie położenia interesujących danych na partycji i zapisaniu ich jako nowy plik w innym systemie plików. Przed odtwarzeniem danych musisz zrobić kilka rzeczy; patrz rozdziały ``Odmontowanie systemu plików'', ``Przygotowanie do bezpośrednich zmian w iwęzłach'' i ``Przygotowanie do zapisania danych w innym miejscu''. Informację jak odzyskiwać pliki znajdziesz w rozdziałach ``Szukanie skasowanych iwęzłów'', ``Uzyskiwanie szczegółowych informacji o iwęzłach'', ``Odzyskiwanie bloków danych'' i ``Bezpośrednie modyfikacje iwęzłów''. 55.. OOddmmoonnttoowwaanniiee ssyysstteemmuu pplliikkóóww Niezależnie od metody jaką wybrałeś, pierwszym krokiem jest odmontowanie systemu plików zawierającego skasowane pliki. Zdecydowanie nie polecam żadnych działań na zamontowanym systemie plików. Krok ten powinien być wykonany najszybciej jak to będzie możliwe od momentu, gdy zauważyłeś, że pomyłkowo skasowałeś pliki. Im szybciej odmontujesz system plików, tym większa będzie szansa, że Twoje dane nie zostaną nadpisane (zamazane). Najprostszą metodą, aby to zrobić jest: zakładając, że skasowane pliki były systemie plików /usr, # umount /usr Jeśli chcesz możesz również utrzymać widoczność katalogu /usr. Zamontuj go w trybie tylko-do-odczytu: # mount -o ro,remount /usr W przypadku, gdy skasowane pliki były na głównej partycji musisz dodać opcję -n, aby zabronić programowi mount na próby zapisu do /etc/mtab: # mount -n -o ro,remount / Poza tym wszystkim, możliwe jest również, że jakiś inny proces używa interesującego nas systemu plików (spowoduje to błąd typu `Resource busy' przy próbie odmontowania). fuser jest programem, który wyśle sygnał do każdego procesu używającego wskazanego pliku lub punktu montowania. Spróbuj tego dla partycji /usr: # fuser -v -m /usr W ten sposób uzyskasz listę przeszkadzających Ci procesów. Zakładając, że żaden z nich nie jest niezbędny, możesz napisać # fuser -k -v -m /usr aby wysłać sygnał SIGKILL do każdego z nich ( gwarantuje to ich zabicie), albo # fuser -k -TERM -v -m /usr aby przekazać każdemu sygnał SIGTERM (spowoduje to normalne zakończenie pracy procesów). 66.. PPrrzzyyggoottoowwaanniiee ddoo bbeezzppoośśrreeddnniicchh zzmmiiaann iiwwęęzzłłóóww Moja rada? Nie używaj tej metody. Nie uważam, żeby dobrym pomysłem była zabawa na niskim poziomie w systemie plików. Metoda ta stwarza również problemy jeśli chcesz odtworzyć pliki większe niż 12 bloków. W celu odzyskania dużych plików, tak czy owak, będziesz musiał użyć innej metody. (Chociaż patrz rozdział ``Czy będzie to kiedyś łatwiejsze?'' w celu dodatkowych informacji.) Jeżeli jednak chcesz koniecznie użyć tego sposobu, lepiej skopiuj bezpośrednio obraz partycji na inną partycję, a później zamontuj ją używając pętli zwrotnej (loopback): # cp /dev/hda5 /root/working # mount -t ext2 -o loop /root/working /mnt (Niektóre wersje mount nie potrafią tego zrobić. Jeśli Twój mount nie działa poprawnie, zalecam użycie najnowszej wersji, conajmniej 2.7. Dużo starsze wersje mają problemy z utrzymaniem bezpieczeństwa danych.) Używając pętli zwrotnej, nawet jeśli całkowicie zniszczysz system plików, możesz ponownie skopiować partycję i zacząć próby od nowa. 77.. PPrrzzyyggoottoowwaanniiee ddoo zzaappiissuu ddaannyycchh ww iinnnnyymm mmiieejjssccuu Jeżeli wybierzesz tę drogę działania, musisz znaleźć partycję ratunkową -- miejsce, gdzie zapiszesz nowe kopie odzyskanych plików. Na całe szczęście, twój system zawiera kilka partycji: prawdopodobnie partycję główną, /usr i /home. Wybierz jedną z nich i utwórz na niej nowy katalog. Jeśli masz tylko partycję główną i wszystko przechowujesz na niej, rozwiązanie troszkę się skomplikuje. Może masz partycje MS-DOS lub Windows, której bedziesz mógł użyć ? Albo masz sterownik do ramdisk-u w swoim jądrze, albo w module ? W celu użycia ramdisk-u (zakładając, że jądro jest nowsze od 1.3.48), napisz: # dd if=/dev/zero of=/dev/ram0 bs=1k count=2048 # mke2fs -v -m 0 /dev/ram0 2048 # mount -t ext2 /dev/ram0 /mnt W ten sposób stworzyłeś 2MB wolumen ramdisk-u i zamontowałeś do w /mnt. Krótkie ostrzeżenie: jeżeli używasz kerneld (lub zastępującego go kmod w jądrach 2.2.x i późnych 2.1.x) w celu automatycznego ładowania i odładowywania modułów, nie odmontowuj ramdisk-u dopóki nie skopiujesz wszystkich plików na bardziej trwały nośnik. W chwili, gdy go odmontujesz, kerneld zakłada, że może odładować moduł (zwykle jednak czeka pewien okres). Gdy to już się stanie, pamięć zostanie użyta przez inne części jądra i stracisz wszystkie godziny spędzone na odzyskiwaniu danych. Jeżeli masz napęd Zip, Jaz, LS-120 lub coś podobnego, może on spełniać z powodzeniem rolę partycji ratunkowej. W pozostałych przypadkach, użyj po prostu napędu stacji dyskietek. Będziesz jeszcze potrzebował programu, który potrafi czytać dane ze środka partycji. Właściwie może to zrobić dd, ale aby przeczytać dane leżące od 600 MB do 800 MB, dd musi przeczytać i zignorować pierwsze 600 MB. Zajmuje to dosyć dużo czasu, nawet na szybkich dyskach. Moim sposobem na obejście tego problemu było napisanie programu, który przeskakuje w środek partycji. Nazywa się on fsgrab; pakiet ze źródłem możesz znaleźć na mojej stronie domowej lub na Metalab-ie (i kopiach, w Polsce - Sunsite ). Jeśli będziesz chciał stosować tę metodę, w dalszej części tego mini- JTZ zakładam, że masz fsgrab. Nie potrzebujesz fsgrab-a, jeżeli żaden z plików, które starasz się odzyskać, nie zajmuje więcej niż 12 bloków (przeważnie blok ma rozmiar jednego kilobajta). Jeżeli musisz użyć fsgrab-a, ale nie chce Ci się go ściągać i kompilować, jest też prosta droga na przetłumaczenie polecenia dla fsgrab na polecenie dla dd. Mając fsgrab -c _c_o_u_n_t -s _s_k_i_p _d_e_v_i_c_e możesz użyć komendy dd (przeważnie jest to dużo wolniejsze) dd bs=1k if=_d_e_v_i_c_e count=_c_o_u_n_t skip=_s_k_i_p Muszę Cię ostrzec, że chociaż dla mnie fsgrab działa doskonale, nie mogę brać odpowiedzialności za jego funkcjonowanie. Pisałem go dosyś szybko i niestarannie, po prostu, aby działał poprawnie. Więcej szczegółów o gwarancji znajdziesz w rozdziale `No Warranty' w pliku COPYING dołaczonym do pakietu (the GNU General Public Licence). 88.. SSzzuukkaanniiee sskkaassoowwaannyycchh iiwwęęzzłłóóww Następnym krokiem jest odnalezienie w systemie plików tych iwęzłów, które zostały ostanio uwolnione. Do tego zadania użyjemy programu debugfs. Uruchom debugfs z nazwą urządzenia, na którym przechowywany jest system plików: # debugfs /dev/hda5 Jeżeli chcesz bezpośrednio wprowadzać zmiany do iwęzłów, dodaj opcję -w, aby umożliwić zapisywanie do systemu plików: # debugfs -w /dev/hda5 lsdel jest poleceniem debugfs, które wyszukuje skasowane iwęzły. Po zachęcie programu, napisz więc: debugfs: lsdel Po chwili świergotania dysku, długa lista zostanie przekierowana do Twojego ulubionego łamacza na strony (ang. pager) (wartość zmiennej $PAGER). Powinienneś zachować gdzieś kopię tej listy. Jeżeli używasz less, możesz po prostu napisać -o i nazwę pliku wyjściowego. W innym razie, będziesz musiał przesłać wyniki do pliku w inny sposób. Spróbuj czegoś takiego: debugfs: quit # echo lsdel | debugfs /dev/hda5 > lsdel.out Teraz, tylko na podstawie czasu skasowania, rozmiaru, praw własności i właściciela musisz określić, które iwęzły należały do skasowanych plików. Będzie to prawdopodobnie proste zadanie jeśli wypadek przydarzył się 5 minut temu, jeśli nie, przeszukaj listę bardzo uważnie. Polecam wydrukowanie sobie listy iwęzłów, które chcesz odzyskać. Ułatwi Ci to dalszą pracę. 99.. UUzzyysskkiiwwaanniiee sszzcczzeeggóółłoowwyycchh iinnffoorrmmaaccjjii oo iiwwęęzzłłaacchh debugfs dysponuje poleceniem stat, które wyświetla szczegółowe informacje o iwęźle. Wykonaj tę komendę dla wszystkich iwęzłów, które chcesz odzyskać. Na przykład, jeżeli interesuje Cię iwęzeł o numerze 148003, napisz tak: debugfs: stat <148003> Inode: 148003 Type: regular Mode: 0644 Flags: 0x0 Version: 1 User: 503 Group: 100 Size: 6065 File ACL: 0 Directory ACL: 0 Links: 0 Blockcount: 12 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996 atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996 mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 1996 dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996 BLOCKS: 594810 594811 594814 594815 594816 594817 TOTAL: 6 Gdy chcesz odzyskać wiele plików, dobrze będzie jak zautomatyzujesz ten proces. Przy założeniu, że Twoja lsdel lista interesujących iwęzłów znajduje się w pliku lsdel.out, napisz coś takiego: # cut -c1-6 lsdel.out | grep "[0-9]" | tr -d " " > inodes Nowy plik inodes zawiera tylko numery iwęzłówm, które chcesz odzyskać, po jednym w jednej linii. Zapisaliśmy to, bowiem później bardzo nam się przyda. Potem piszesz po prostu: # sed 's/^.*$/stat <\0>/' inodes | debugfs /dev/hda5 > stats i plik stats zawiera wyniki wszystkich poleceń stat. 1100.. OOddzzyysskkiiwwaanniiee bbllookkóóww ddaannyycchh Ta część jest albo bardzo łatwa, albo trudna, w zależności od tego, czy plik który chcesz odzyskać zajmował więcej niż 12 bloków. 1100..11.. MMaałłee pplliikkii Jeżeli plik ma mniej niż 12 bloków, numery wszystkich bloków, które on zajmuje zapisane są w jednym iwęźle. Możesz odczytać je po wykonaniu polecenie stat dla tego iwęzła. Ponadto, w debugfs jest polecenie, które automatycznie odzyskuje taki plik. Weźmy ten sam przykład co poprzednio: debugfs: stat <148003> Inode: 148003 Type: regular Mode: 0644 Flags: 0x0 Version: 1 User: 503 Group: 100 Size: 6065 File ACL: 0 Directory ACL: 0 Links: 0 Blockcount: 12 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996 atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996 mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 1996 dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996 BLOCKS: 594810 594811 594814 594815 594816 594817 TOTAL: 6 Plik ten zajmuje sześć bloków. Ponieważ jest to mniej niż 12, możemy użyć debugfs, aby zapisać plik w nowym miejscu, na przykład /mnt/recovered.000: debugfs: dump <148003> /mnt/recovered.000 Oczywiście można to zrobić również, posługując się fsgrab. Pokażę jak wygląda takie przykładowe wywołanie: # fsgrab -c 2 -s 594810 /dev/hda5 > /mnt/recovered.000 # fsgrab -c 4 -s 594814 /dev/hda5 >> /mnt/recovered.000 Zarówno przy korzystaniu z debugfs jak i fsgrab, na końcu pliku /mnt/recovered.000 pozostaną śmieci. Nie ma to większego znaczenia. Łatwo można się ich pozbyć. Najprostszą metodą jest odczytanie pola Size w iwęźle i wpisanie tej wartości za opcją bs komendy dd: # dd count=1 if=/mnt/recovered.000 of=/mnt/resized.000 bs=6065 Może się okazać, że jeden lub więcej z bloków zostało straconych, bowiem zostały już nadpisane. Jeżeli tak będzie, po prostu nie miałeś szczęścia: bloki te odeszły już na zawsze. (Wybraź sobie, że odmontowałeś je wcześniej!) 1100..22.. WWiięękksszzee pplliikkii Problem pojawia się, gdy plik zajmuje więcej niż 12 bloków danych. Przypadek ten wymaga pewnej wiedzy o tym jak zbudowany jest system plików UNIX-a. Dane pliku przechowywane są w jednostkach zwanych `blokami'. Bloki te są numerowane sekwencyjnie. Każdy plik ma również `iwęzeł', w którym przechowywane są informacje typu: właściciel, prawa dostępu i typ. Podobnie jak bloki, iwęzły są numerowane sekwencyjnie, chociaż mają one różne numeracje. Pozycja w katalogu odpowiadająca plikowi składa się z jego nazwy i numeru iwęzła. Jednak na postawie tych informacji jądro nie jest jeszcze w stanie odnaleźć na partycji danych odpowiadających jednej z pozycji w katalogu. Żeby to umożliwić, iwęzeł przechowuje położenia bloków danych zajmowanych przez plik. Zorganizowane jest to w następujący sposób: ˇ Numery pierwszych 12 bloków danych przechowywane są bezpośrednio w iwęźle; czasami nazywa się je _b_l_o_k_a_m_i _b_e_z_p_o_ś_r_e_d_n_i_m_i. ˇ Iwęzeł zawiera numer _p_o_ś_r_e_d_n_i_e_g_o _b_l_o_k_u. Blok pośredni zawiera numery następnych 256 bloków z danymi. ˇ Iwęzeł zawiera numer _p_o_d_w_ó_j_n_i_e _p_o_ś_r_e_d_n_i_e_g_o _b_l_o_k_u. Blok podwójnie pośredni zawiera numery dodatkowych 256 bloków pośrednich. ˇ Iwęzeł zawiera numer _p_o_t_r_ó_j_n_i_e _p_o_ś_r_e_d_n_i_e_g_o _b_l_o_k_u. Blok potrójnie pośredni zawiera numery dodatkowych 256 bloków podwójnie pośrednich. Przeczytaj to jeszcze raz: wiem, że to jest skomplikowane, ale bardzo ważne. Niestety wszystkie implementacje jądra, aż do wersji 2.0.36 podczas kasowania pliku zerują bloki pośrednie (podwójnie pośrednie, itd.). Jeśli Twój plik jest większy niż 12 bloków, nie masz gawarancji, że będzie możliwe odnalezienie numerów wszystkich jego bloków, nie mówiąc już nic o ich zawartości. Jedyną metodą jaką udało mi się znaleźć, jest oparcie się na założeniu, że plik nie był pofragmentowany. Jeżeli był, masz poważny problem. Zakładając, że plik nie był pofragmentowany, istnieje kilka sekcji bloków danych, w zależności od tego ile bloków danych zajmuje plik: 00 ddoo 1122 Numery bloków przechowywane są w iwęźle, jak to było opisane wcześniej. 1133 ttoo 226688 Po blokach bezpośrednich, odlicz jeden na blok pośredni, dalej znajduje się 256 bloków danych. 226699 ddoo 6655880044 Tak jak poprzednio jest: 12 bezpośrednich bloków, (nieprzydatny) blok pośredni i 256 bloków. Po tym wszystkim następuje (nieprzydatny) podwójnie pośredni blok oraz 256 powtórzeń jednego (nieprzydatnego) bloku pośredniego i 256 bloków danych. 6655880055 lluubb wwiięęcceejj Położenie piewszych 65804 bloków jak wyżej. Potem potrójnie pośredni blok i 256 powtórzeń `sekwecji podwójnie pośredniej'. Każda podwójnie pośrednia sekwencja zawiera (nieprzydatny) podwójnie pośredni blok, po którym następuje 256 powtórzeń jednego (nieprzydatnego) bloku pośredniego i 256 bloków danych. Oczywiście, nawet jeśli numery bloków, które przyjęliśmy, są poprawne, nie ma żadnych gwarancji, że dane są w nich są nienaruszone. Dodatkowo, im dłuższy był plik, tym mniejsze szanse, że system operacyjny zapisał go bez żadnej fragmentacji (za wyjątkiem wyjątkowych sytuacji). Założyłem, że rozmiar Twoich bloków wynosi 1024 bajty, tyle ile wartość standardowa. Jeśli Twój blok jest większy, niektóre z liczb podanych wyżej zmienią się. Sprecyzujmy: dopóki numer każdego bloku ma długość 4 bajtów, rozmiarbloku/4 jest liczbą numerów bloków, które mogą być przechowane w każdym bloku pośrednim. Każde wystąpienie liczby 256 we wcześniejszym opisie, zastąp na rozmiarbloku/4. Zmianie ulegną również ograniczenia na ilość wymaganych bloków. Popatrz na przykładowe odzyskiwanie dużego pliku. debugfs: stat <1387> Inode: 148004 Type: regular Mode: 0644 Flags: 0x0 Version: 1 User: 503 Group: 100 Size: 1851347 File ACL: 0 Directory ACL: 0 Links: 0 Blockcount: 3616 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996 atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996 mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 1996 dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996 BLOCKS: 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8583 TOTAL: 14 Wydaje się, że mamy pewne szanse, że plik nie jest pofragmentowany. Pewne jest tylko, że pierwsze 12 bloków, których numery są zawarte w iwęźle, jest `po kolei'. Możemy więc odtworzyć te bloki: # fsgrab -c 12 -s 8314 /dev/hda5 > /mnt/recovered.001 Następny blok, wymieniony w iwęźle, 8326, jest blokiem pośrednim, który ignorujemy. Mamy jednak nadzieję, że nastepne 256 bloków jest naszymi blokami danych (numery 8327 do 8582). # fsgrab -c 256 -s 8327 /dev/hda5 >> /mnt/recovered.001 Ostatnim blokiem wymienionym w iwęźle jest 8583. Nadal zakładamy, że istnieje ciągłość w blokach. Jest to jednak uzasadnione bowiem: ostatnim blokiem danych był blok o numerze 8582 (8327 + 255). Blok 8583 jest podwójnie pośredni i może być zignorowany. Teraz może nastąpić do 256 powtórzeń bloku pośredniego (który można pominąć) i 256 bloków danych. Trochę arytmetyki i już można pisać kolejne polecenie. Zauważ, że pominęliśmy podwójnie pośredni blok 8583 oraz pośredni blok 8584 i rozpoczęliśmy czytać dane od bloku numer 8585. # fsgrab -c 256 -s 8585 /dev/hda5 >> /mnt/recovered.001 # fsgrab -c 256 -s 8842 /dev/hda5 >> /mnt/recovered.001 # fsgrab -c 256 -s 9099 /dev/hda5 >> /mnt/recovered.001 # fsgrab -c 256 -s 9356 /dev/hda5 >> /mnt/recovered.001 # fsgrab -c 256 -s 9613 /dev/hda5 >> /mnt/recovered.001 # fsgrab -c 256 -s 9870 /dev/hda5 >> /mnt/recovered.001 Dodajmy to wszystko, zapisaliśmy do tej pory 12 + (7 * 256) bloków, co daje 1804. Wyniki polecenia `stat' dla iwęzła dały nam `blockcount' (liczba bloków) równe 3616. Niestety są to bloki o rozmiarze 512 bajtów (zaszłość z UNIX-a), na prawdę potrzebujemy więc 3616/2 = 1808 bloków o rozmiarze 1024 bajty. Oznacza to, że musimy jeszcze odnaleźć cztery bloki. Ostatni przeczytany blok danych miał numer 10125. Tak jak to robiliśmy do tej pory, pomijamy blok pośredni (numer 10126) i możemy już zapisać ostatnie cztery bloki. # fsgrab -c 4 -s 10127 /dev/hda5 >> /mnt/recovered.001 Przy pewnym szczęściu udało nam się odzyskać cały plik. 1111.. BBeezzppoośśrreeddnniiee mmooddyyffiikkaaccjjee iiwwęęzzłłóóww Metoda ta jest dużo prostsza. Jednak, tak jak wspomniałem wcześniej, nie może być jeszcze stosowana do plików większych niż 12 bloków. W każdym iwęźle, który chcesz odzyskać musisz ustawić licznik podłączeń (linkcount) na jeden i czas skasowania (deletion time) na zero. Robi się to za pomocą polecenia mi (modify inode) w debugfs. Przykładowe wywołanie, modyfikacja iwęzła 148003 (tego co wcześniej): debugfs: mi <148003> Mode [0100644] User ID [503] Group ID [100] Size [6065] Creation time [833201524] Modification time [832708049] Access time [826012887] Deletion time [833201524] 0 Link count [0] 1 Block count [12] File flags [0x0] Reserved1 [0] File acl [0] Directory acl [0] Fragment address [0] Fragment number [0] Fragment size [0] Direct Block #0 [594810] Direct Block #1 [594811] Direct Block #2 [594814] Direct Block #3 [594815] Direct Block #4 [594816] Direct Block #5 [594817] Direct Block #6 [0] Direct Block #7 [0] Direct Block #8 [0] Direct Block #9 [0] Direct Block #10 [0] Direct Block #11 [0] Indirect Block [0] Double Indirect Block [0] Triple Indirect Block [0] Ustawiłem czas skasowania na 0, licznik podłączeń na 1 i nacisnąłem Enter dla wszystkich innych pól. Jest to pewną niedogodnością, jeżeli masz wiele plików do odzyskania. Myślę jednak, że można z tym żyć. Jeśli oczekujesz wygody, lepiej zacznij używać graficznego `systemu operacyjnego' ze ślicznym `Koszem na śmieci'. Przy okazji: polecenie mi pokazuje `Czas stworzenia' (Creation time) w iwęźle. To kłamstwo ! (lub, jak kto woli, pomyłka.) Prawda jest taka, że nie można w systemie plików UNIX-a stwierdzić kiedy dany plik został utworzony. Pole st_ctime w struct stat zawiera `czas zmiany iwęzła', czyli czas ostaniej zmiany, któregoś z parametrów iwęzła. To tyle z dzisiejszej lekcji. Nowsze wersje debugfs niż moja, prawdopodobnie nie wyświetalają niektórych pól w iwęźle (szczególnie, Reserved1 i Fragment). Po zmianie w iwęzłach, możesz wyjść z debugfs i napisać: # e2fsck -f /dev/hda5 Pomysł polega na tym, że każdy ze skasowanych plików został odkasowany, ale nie pojawił się w żadnym katalogu. Program e2fsck umie to wykryć i doda pozycję dla każdego z nich w katalogu /lost+found systemu plików. (Jeżeli partycja była zamontowana w /usr, pliki pojawią się w /usr/lost+found, gdy ją zamontujesz.) Pracą, którą musisz jeszcze zrobić, to nadanie plikom nazw i umieszczenie ich we właściwym miejscu drzewa plików. Po uruchomieniu e2fsck, wyświetli Ci on trochę informacji, ale zada również pytania, które zniszczenia naprawiać. Odpowiadaj `yes' (tak) na wszystko co dotyczy `summary information' lub iwęzłów, które zmieniałeś. Resztę pozostawiam do Twojej decyzji, pamiętaj, że nie jest najlepszą metodą odpowiadanie `tak' na wszystkie pytania. Po skończeniu pracy przez e2fsck, możesz ponownie zamontować system plików. Istnieje alternatywne rozwiązanie do pozwolenia, aby e2fsck utworzył pliki w /lost+found. Możesz użyć debugfs i stworzyć w systemie plików dołączenie (link) do iwęzła. Służy do tego polecenie link w debugfs, po zmianach w samym iwęźle: debugfs: link <148003> foo.txt W ten sposób powstanie w bieżącym katalogu plik o nazwie foo.txt; foo.txt będzie Twoim odzyskanym plikiem. Nadal musisz jednak uruchomić e2fsck, aby uaktualnić informacje ogólne, liczniki bloków itp. itd. 1122.. CCzzyy bbęęddzziiee ttoo kkiieeddyyśś łłaattwwiieejjsszzee?? Tak. Właściwie, mam nadzieję, że tak. Chociaż, gdy to piszę, aktualna, stabilna wersja jądra (seria 2.0.x) zeruje bloki pośrednie. Wersje serii rozwojowej 2.1.x i stabilnej 2.2.x nie mają tej wady. Dzisiaj, 2 lutego 1999 minęło dopiero kilka dni od wydania jądra 2.2.1; prawdopodobnie pojawi się ono w dystrybucjach za jeden, dwa miesiące. Kiedy wersje jądra rozwiążą problem zerowania bloków pośrednich, wiele moich ręcznych technik modyfikacji iwęzłów nie będzie już potrzebnych. W tym samym czasie stanie się możliwe użycie polecenia dump w debugfs dla dużych plików i innych programów narzędziowych do odzyskiwania plików. 1133.. CCzzyy ssąą jjaakkiieeśś pprrooggrraammyy aauuttoommaattyyzzuujjąąccee tteenn pprroocceess?? Pewnie, że są. Niestety cierpią one na te same problemy co ręczna technika zmian w iwęzłach: bloki pośrednie są nieodzyskiwalne. Warto im się przyjrzeć, bowiem wydaje się, że ograniczenie to wkrótce zniknie. Napisałem program e2recover, który jest właściwie tylko Perl-ową otoczką dookoła fsgrab. Stara się on poradzić sobie z wyzerowanymi blokami pośrednimi i wydaje sie, że działa całkiem nieźle dla dużych plików, które nie uległy fragmentacji. Ustawia poprawne prawa dostępu (i właściciela, gdy to jest możliwe). Upewnia się również, że odzyskiwany plik ma poprawny rozmiar. Program e2recover był planowany jako część poważnych zmian w tym Howto; oznacza to niestety, że więcej użytecznej dokumentacji do e2recover będzie zamieszczone dopiero w nowej wersji tego dokumentu. Jednak i teraz może on się komuś przydać; można go ściągnąć z mojej strony domowej , i wkrótce z Metalab-a (jest już w Polsce - Sunsite ). Scott D. Heavner jest autorem programu lde, the Linux Disk Editor. Może on być używany zarówno jako binarny edytor dysku i jako odpowiednik debugfs dla systemów plików ext2 i minix, a nawet dla systemu plików xia (chociaż wsparcie dla xia przestało być dostępne w jądrach 2.1.x i 2.2.x). Zawarto w nim kilka pomysłów wspomagających odzyskiwanie skasowanych plików: śledzenie listy bloków tworzących plik i wyszukiwanie danych na dysku. Zawiera on także całkiem użyteczną dokumentację o podstawach systemu plików oraz jak go używać do odzyskiwania plików skasowanych. Wersja 2.4 lde jest dostępna na Metalab-ie (i kopiach, w Polsce - Sunsite ), lub na stronie domowej autora . Inne możliwości oferowane są przez GNU Midnight Commander, mc. Jest to pełnoekranowe narzędzie do zarządzania plikami, oparte na znanym w środowisku MS-DOS programie o nazwie `NC'. mc obsługuje mysz zarówno na konsoli, jak i w oknie xterm-a, dostarcza mechanizm wirtualnych systemów plików, co umożliwia triki takie jak cd do archiwum tar. Odzyskiwanie plików obsługiwane jest przez jeden z takich wirtualnych systemów plików. Wszystko to brzmi bardzo zachęcająco, ale muszę przyznać, że nie używam tego programu -- wolę staromodne polecenia powłoki. Aby używać możliwości odzyskiwania skasowanych plików, musisz skonfigurować program z opcją --with-ext2undel; będziesz również potrzebował bibliotek w wersji rozwojowej i niektórych plików zawartych w pakiecie e2fsprogs. W ten sposób zbudowana jest wersja dostarczana w Debian GNU/Linux ; tak samo może być w innych dystrybucjach. Teraz możesz po prostu kazać mu cd undel:/dev/hda5, i otrzymasz `zawartość katalogu' ze skasowanymi plikami. Jak wiele innych i ten program bardzo źle radzi sobie z zerowaniem bloków pośrednich -- przeważnie odtwarza tylko pierwsze 12k większych plików. Aktualną wersję można ściągnąć z serwera ftp the Midnight Commander . 1144.. KKoollooffoonn Mam zamiar regularnie uaktualniać ten dokument tak długo jak będę miał wystarczająco dużo czasu i coś ciekawego do powiedzenia. Oznacza to, że bardzo mi zależy na komentarzach od czytelników. Czy moje pisanie może być bardziej zrozumiałe? Czy myślicie o czymś, co uczyniłoby problem prostszym? Jest jakiś program, który robi to wszystko automatycznie? Jeżeli masz coś do powiedzenia o tym dokumencie, albo o fsgrab, albo o e2recover, napisz do mnie aaronc@pobox.com. 1155.. WWyyrraazzyy uuzznnaanniiaa ii bbiibblliiooggrraaffiiaa `Jeżeli widzę dalej od innych, to dlatego, że stoję na ramionach olbrzymów.' (Isaac Newton) To mini-Howto wywodzi się z listu zamieszczonego w grupie comp.os.linux.misc przez Robina Glovera swrglovr@met.rdg.ac.uk. Chciałbym podziekować Robinowi za wspaniałomyślne pozwolenie na przetworzenie jego pomysłów w to mini-Howto. Korzystając z okazji, chciałbym jeszcze raz podziękować wszystkim, którzy napisali do mnie o tym Howto. Otrzymywanie wyrazów wdzieczności czyni pracę wartą wysiłku. Niektóre odnośniki bibliograficzne: ˇ FFrriisscchh, Ćleen (1995), _E_s_s_e_n_t_i_a_l _S_y_s_t_e_m _A_d_m_i_n_i_s_t_r_a_t_i_o_n, second e O'Reilly and Associates, Inc., ISBN: 1-56592-127-5. ˇ GGaarrffiinnkkeell, Simson, Daniel WWeeiissee and Steven SSttrraassssmmaannnn (1994), _T_h_e _U_n_i_x_-_H_a_t_e_r_s _H_a_n_d_b_o_o_k, IDG Books, ISBN: 1-56884-203-1. Większość tej książki wypełniają jednynie młodociane jęki ludzi, którzy myślą że _i_c_h system operacyjny był o wiele lepszy od Unix-a; a reszta książki nie dotyczy Cię, jeżeli używasz dobrego otoczenia użytkownika jakim jest GNU. Są tam jednak pewne ciekawe rzeczy; na przykład, dyskusja o tym jak łatwo jest skasować plik pod Unix-em warta jest przeczytania. ˇ GGlloovveerr, Robin (31 Jan 1996), _H_O_W_-_T_O _: _u_n_d_e_l_e_t_e _l_i_n_u_x _f_i_l_e_s _(_e_x_t_2_f_s_/_d_e_b_u_g_f_s_), comp.os.linux.misc Usenet posting. ˇ PPeeeekk, Jerry, Tim OO''RReeiillllyy, Mike LLoouukkiiddeess et al (1993), _U_N_I_X _P_o_w_e_r _T_o_o_l_s, O'Reilly and Associates, Inc./Random House, Inc., ISBN: 0-679-79073-X. Second edition, 1998. 1166.. FFoorrmmaallnnoośśccii Wszystkie znaki towarowe są własnością ich prawowitych właścicieli. Konkretnie: ˇ _M_S_-_D_O_S i _W_i_n_d_o_w_s są znakami towarowymi Microsoftu . ˇ _U_N_I_X jest znakiem towarowym the Open Group . ˇ _L_i_n_u_x jest znakiem towarowym zarejestrowanym w USA i kilku innych państwach dla Linusa Torvalds. Prawa autorskie do tego dokumentu 1997, 1999 posiada Aaron Crane aaronc@pobox.com. Może on być darmowo rozpowszechniany w całości, łącznie z tą notą autorską. Nie może być zmieniany bez zgody autora lub koordynatora Linux Documentation Project HOWTO. Nie dotyczy to tylko kopiowania jego części w celu przeglądania lub cytowania; w takim przypadku, części te muszą być poprawnymi cytatami i nie muszą zawierać noty o prawach autorskich. Autor oczekuje, ale nie wymaga, że ten kto będzie chciał sprzedawać kopie tego dokumentu, niezależnie od tego, czy na nośniku elektronicznym, czy papierowym, poinformuje jego lub koordynatora projektu Linux HOWTO o swoich zamiarach. Koordynatorem projektu Linux HOWTO jest aktulanie Tim Bynum linux- howto@sunsite.unc.edu. 1177.. OOdd ttłłuummaacczzaa Starałem się, aby tłumaczenie było najwierniejsze z możliwych. Dlatego nie ma żadnych zmian w stosunku do orginału, za wyjątkiem odnośników do polskiej kopii serwera Metalab na Sunsite.icm.edu.pl. Czekam na komentarze pod adresem: Bartosz Sawicki sawickib@ee.pw.edu.pl. doc-linux-pl-2002.06.14.orig/mini/GravisUltrasound.pl.txt0100664000175000017500000002062507104371340022020 0ustar covencoven Ultrasound Plug'n'Play mini-HOWTO Autor: J-F MAMMET, mammet@diva.univ-mlv.fr v0.01, 27 Marca 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.0, 7 Września 1997 Dokument ten został napisany w standardzie ISO-8859-2. Wersji orygi­ nalnej nie ma na głównym serwerze (_s_u_n_s_i_t_e_._u_n_c_._e_d_u) _L_i_n_u_x _D_o_c_u_m_e_n_t_a_­ _t_i_o_n _P_r_o_j_e_c_t, a na stronę WWW autora (diva.univ-mlv.fr ) nie można się dostać. 11.. WWpprroowwaaddzzeenniiee.. Jako długoletni fan kart dźwiękowych gravis-a, byłem naprawdę szczęśliwy kiedy zobaczyłem prawdziwą nowość gravis-a. Od długiego czasu planowałem kupić kartę _U_l_t_r_a_s_o_u_n_d i kupiłem ją z 1 MB RAM-u jak tylko pojawiła się we Francji. Zainstalowałem ją, i cieszyłem się kiedy została wykryta przez mój Plug'n'Play BIOS, a nawet przez Windows 95 (przepraszam, ale nie ponabijam się dzisiaj z ich marketingu). Więc pomyślałem, że karta mogłaby działać wszędzie... No to odpaliłem Linux-a, nie miałem problemów, karta została wykryta jako _g_u_s _r_e_v _3_._4, co wydawało się być poprawne, ale nie było... Jakiś czas później spróbowałem _Q_u_a_k_e_'_a i nie miałem dźwięku. Przeczytałem więc podręcznik do gry, i zobaczyłem, że korzysta on z pewnych mechanizmów DMA, których nie było w standardowym gus-ie. Pomyslałem, że to wcale nie jest zabawne, mieć taką cholernie dobrą kartę i nie mieć dźwięku w takiej fajnej grze. (wersja dos-owa potrzebuje emulacji _s_o_u_n_d _b_l_a_s_t_e_r_-_a, a ja wolę nie mieć dźwięku niż to) No to co teraz? Powinienem czekać do maja na sterownik PnP dla gus-a? Mam kupić _s_o_u_n_d _b_l_a_s_t_e_r_-_a (sic)? co będzie w następnym odcinku _"_A_k_t _X_"? 22.. GGUUSS MMAAXX?? No i wróciłem do dos-a i pobawiłem się trochę programem _i_w_i_n_i_t. Popatrzyłem na to co mi wyświetlał w trybie _v_e_r_b_o_s_e i zobaczyłem coś takiego: CODEC adress 32c... Co? _g_u_s PnP ma CS4231/CS1848 Codec tak jak _g_u_s _M_A_X??? Potem pogrzebałem po moich kopiach zapasowych i znalazłem ostatnie sterowniki _g_r_a_v_i_s_-_a, wziąłem _u_l_t_r_i_n_i_t _2_._3_1 i wpisałem: ______________________________________________________________________ >set ultrasnd=220,6,5,5,5 >set ultra16=32c,0,0,1,0 >set ultradir=c:\ultrapnp >ultrinit ______________________________________________________________________ i wiecie co? _U_l_t_r_a_s_o_u_n_d _M_A_X _d_e_t_e_c_t_e_d !!! Wow. Super! Pomyslałem więc, że muszę tylko to wpisać zanim wystartuje Linux-a i będę miał obsługę _g_u_s _M_a_x i w końcu ten p**** quake będzie miał dźwięk ! To nie było takie proste 8( 33.. PPrrzzeerraabbiiaanniiee sstteerroowwnniikkaa.. Nie jestem dobrym programistą, ale znam C na tyle, żeby przejrzeć sterownik i zobaczyć co się dzieje (szczególnie jeśli jest tam dużo komentarzy). Popatrzyłem do pliku gus_card.c, ale nie znalazłem nic ciekawego. Potem popatrzyłem do gus_wave.c i zobaczyłem coś takiego: * Value 255 means pre-3.7 which don't have mixer. * Values 5 thru 9 mean v3.7 which has a ICS2101 mixer. * 10 and above is GUS MAX which has the CS4231 codec/mixer. Super! Po prostu muszę ustawić wartość 10 i będzie działać... Nie! Zrobienie tego spowoduje, że jądro będzie myślało, że masz _g_u_s _M_a_x, ale nie wykryje chip-a codec! Więc musiałem także wymusić wykrycie tego chip-a! Znalezienie co muszę zrobić nie było łatwe, ale w końcu mi się udało. W pliku gus_wave.c była taka linia: if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)) co znaczyło, że jądro próbuje samo wykryć chip AD1848. Pomyślałem, że nie może go wykryć przez to _P_n_P i miałem rację! Zmieniłem tę linię na: if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp))) skompilowałem jeszcze raz jądro i quake działa teraz na cacy! Tak przy okazji: W pliku gus_card.c jest opcja _g_u_s___p_n_p___f_l_a_g, ale nie widziałem żadnej różnicy między tym kiedy była włączona i wyłączona 8( (może robiłem coś źle). 44.. WWiięęcc ccoo mmaammyy ddookkłłaaddnniiee zzrroobbiićć?? Nie zapomnij, że to nie będzie działać jeśli nie masz RAM-u na swojej karcie... Przede wszystkim nie używaj już _l_i_l_o, ponieważ musisz zainicjować _g_u_s_- _a _P_n_P zanim wystartujesz Linux-a ([Od tłumacza] w tej chwili można już inicjować karty (nie wszystkie) PnP pod Linux-em. Przeczytaj podrozdział ``Karty PnP pod Linux-em.''). Napisz _f_d_i_s_k _/_m_b_r pod dos- em, przeczytaj odpowiednie HOWTO na ten temat). W swoim autoexec.bat wpisz: set interwave=c:\ultrapnp\iw.ini c:\ultrapnp\iwinit set ultrasnd=220,6,5,5,5 (czy jakie tam są twoje wartości) set ultra16=32c,0,0,1,0 set ultradir=c:\ultrapnp c:\ultrapnp\ultrinit _U_l_t_r_i_n_i_t znajdziesz w gus00045.zip na każdym ftp z _g_r_a_v_i_s_-_e_m. Pod Linux-em, otwórz plik gus_wave.c w katalogu /usr/src/linux/drivers/sound (czy gdziekolwiek indziej). Znajdź linię: if (val == 255 || val < 5) (line 3049 in 3.5b7) i w linii wcześniej napisz: val=10; Potem znajdź linię: if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)) (line 3085) i zmień ją na if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp))) Skompiluj jądro z obsługą _g_u_s_-_a i _g_u_s _m_a_x. U mnie jest to: BASE = 220 IRQ = 5 DMA1 = 6 DMA2 = 5 DMABUF = 65536 No i miłej zabawy z dźwiękiem! 44..11.. KKaarrttyy PPnnPP ppoodd LLiinnuuxx--eemm.. [Sekcja dodana przez tłumacza.] Do inicjalizacji karty służy narzędzie o nazwie _s_a_p_n_p_t_o_o_l_s, które jest do zdobycia np. pod adresem ftp.icm.edu.pl . Dokładny opis znajduje się razem z dystrybucją. Ogólnie wygląda to tak: najpierw kompilujesz programy _i_s_a_p_n_p i _p_n_p_d_u_m_p. Potem tym drugim generujesz sobie plik konfiguracyjny, który potem odpowiednio modyfikujesz do własnych potrzeb. Następnie, żeby zainicjalizować kartę (jeśli używasz modułu do dźwięku), piszesz _i_s_a_p_n_p /etc/isapnp.conf i _i_n_s_m_o_d _s_o_u_n_d. 55.. CCrreeddiittss.. Używałem jądra w wersji 1.3.75, ale powinno być dobrze również z jądrami nowszymi niż 1.3.70 (napisz do mnie jeśli tak nie jest). To mini-HOWTO zostało napisane przez J-F MAMMETa. e-mail: mammet@diva.univ-mlv.fr www: http://diva.univ-mlv.fr/ mammet/ Najnowszą wersję tego dokumentu możesz pobrać z mojej strony WWW pod adresem diva.univ-mlv.fr (to w krótce). Nie biorę żadnej odpowiedzialności za jakiekolwiek szkody, które mogą ci się przytrafić (nawet padnięte win95). Jeśli zobaczysz jakieś błędy w pisowni czy techniczne, to nie wahaj się napisać do mnie. Jestem tylko biednym Francuzem zagubionym w angielskim świecie, próbującym mówić zrozumiałym językiem. 27 Marca 1996. 55..11.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany wprowadzone przez tłumacza: Doadałem sekcję dotyczącą inicjalizacji kart PnP pod Linux-em. doc-linux-pl-2002.06.14.orig/mini/HTTP+Netware.pl.txt0100664000175000017500000004176307104371340020672 0ustar covencoven Sieć Intranet na Linux-ie Autor: Pramod Karnad, karnadp@mozart.inet.co.th v1.1, 14 Marca 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.01, 26 Lipca 1997 Dokument ten opisuje jak zamienić twój komputer z Linux-em w serwer HTTP i połączyć go z siecią LAN przy pomocy programu Netware Client pod Windows. Oryginał tego dokumentu możesz znaleźć pod adresem ftp.icm.edu.pl . Dokument ten został napisany w standardzie ISO-8859-2. ______________________________________________________________________ Spis treści 1. Wprowadzenie. 1.1 Co jest potrzebne. 2. Instalacja serwera HTTP. 2.1 Przygotowania przed ściągnięciem. 2.1.1 System Operacyjny 2.1.2 Typ procesu (ServerType). 2.1.3 Przypisywanie portu (Port). 2.1.4 Identyfikator użytkownika dla serwera (User). 2.1.5 Identyfikator grupy dla serwera (Group). 2.1.6 Adres pocztowy administratora serwera (ServerAdmin). 2.1.7 Lokalizacja katalogu serwera (ServerRoot). 2.1.8 Lokalizacja dokumentów HTML (DocumentRoot). 2.2 Kompilowanie HTTPd. 3. Testowanie HTTPd. 4. Połączenie przez sieć Netware z Windowsami. 4.1 Ustaw serwer Netware. 4.1.1 Windows 3.x 4.1.2 Windows 95 5. Inne połączenia. 6. Aplikacje serwera WWW. 7. Podziękowania i Legalność. 7.1 Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Dokument ten zakłada, że umiesz zainstalować protokół TCP/IP na Linux- ie i podłączyć się fizycznie do sieci lokalnej przy pomocy karty Ethernet. Zakłada się także, że masz jakieś podstawowe wiadomości na temat sieci Netware. Konfiguracja serwera Netware została pokazana na przykładzie wersji 3.1x. Możesz zrobić to samo używając INETCFG. Strona klienta dotyczy Windows 3.1x, Windows for Workgroups i Windows 95. We wszystkich przykładach zakładam, że adres Linux-a to 200.0.0.1 i dlatego przypisuję adresy 200.0.0.2 i 200.0.0.3 odpowiednio serwerowi Netware i stacji roboczej. Ty możesz oczywiście wybrać adresy odpowiednie dla siebie. 11..11.. CCoo jjeesstt ppoottrrzzeebbnnee.. Przed instalacją będziesz potrzebował następującego oprogramowania. ˇ serwera HTTP, który można ściągnąć ze strony OneStep NCSA HTTPd Downloader. ˇ Klienta sieci Novell Netware dostępnego na Netwire. (Pliki dotyczące TCP/IP można znaleźć w uaktualnieniu Lan Workplace LW42T3.exe). ˇ Przegladarki takiej jak np. Netscape Navigator albo NCSA Mosaic. Pakiety te są także dostępne w Polsce pod adresem: ˇ Netscape - ftp.icm.edu.pl . ˇ Mosaic - ftp.icm.edu.pl . 22.. IInnssttaallaaccjjaa sseerrwweerraa HHTTTTPP.. Kiedy ściagniesz serwer masz do wyboru dwie opcje: Wziąć źródła i skompilować samemu, albo wziąć już skompilowane programy. Programy te na Linux-a w wersji ELF są dostępne przy serwerze NCSA ale nie ma ich w starszych wersjach. 22..11.. PPrrzzyyggoottoowwaanniiaa pprrzzeedd śścciiąąggnniięęcciieemm.. Serwer firmy NCSA przeprowadzi cię przez konfigurację i przygotuje dla ciebie różne pliki. Ale zanim będziesz chciał ściągnąć HTTPd przygotuj się na następujące pytania. 22..11..11.. SSyysstteemm OOppeerraaccyyjjnnyy Najpierw musisz wybrać czy ściągasz wersję źródłową czy skompilowaną. Jeśli akurat twój system nie pojawi się w menu, to będziesz musiał ściągnąć wersję źródłową i skompilowac ją samemu. Żeby sprawdzić wersję twojego Linux-a napisz w linii poleceń: uname -a w odpowiedzi uzyskasz mniej więcej coś takiego: linux:~$ uname -a Linux linux 1.0.9 #4 Tue Sep 13 04:05:51 CDT 1994 i586 linux:~$ Wersja Linux-a to 1.0.9. (Uwaga: Bieżące wersje Linux-a są w formacie ELF i powinny wyglądać tak: 1.2.13 ELF) Pozostałe parametry mogą być podane przed ściągnięciem albo skonfigurowane później poprzez modyfikację pliku srm.conf w katalogu /usr/local/etc/httpd/conf. Nazwy właściwych dyrektyw, które występują w pliku httpd.conf zostały pokazane w nawiasach. Jedynym wyjatkiem jest dyrektywa DocumentRoot, która występuje w pliku srm.conf. 22..11..22.. TTyypp pprroocceessuu ((SSeerrvveerrTTyyppee)).. Określa to w jaki sposób twój komputer będzie uruchamiał serwer HTTPd. Metodą preferowaną jest "standalone". To powoduje, że demon HTTPd jest ciągle uruchomiony. Jeśli wybierzesz ładowanie HTTPd przez "inetd", to program będzie ponownie ładowany do pamięci przy każdym odwołaniu, co może w rezultacie spowolnić twój serwer. 22..11..33.. PPrrzzyyppiissyywwaanniiee ppoorrttuu ((PPoorrtt)).. Tutaj podajesz na jakim porcie demon będzie "słuchał" żądań HTTP. Jeśli masz uprawnienia "root-a", to wybierz wartość domyślną czyli 80. W innym wypadku musisz wybrać wartość z przedziału od 1025 do 65535. 22..11..44.. IIddeennttyyffiikkaattoorr uużżyyttkkoowwnniikkaa ddllaa sseerrwweerraa ((UUsseerr)).. Jest to identyfikator, na który HTTPd zmieni swój podczas odpowiadania na żądanie i działania na plikach. Odpowiedź na to pytanie musi być udzielona tylko jeśli jako rodzaj serwera wybrałeś "standalone". Jeśli nie masz uprawnień root-a, po prostu użyj swojego identyfikatora. Jeśli jesteś administratorem systemu, możesz stworzyć specjalnego "użytkownika", tak żebyś mógł kontrolować dostęp do plików. 22..11..55.. IIddeennttyyffiikkaattoorr ggrruuppyy ddllaa sseerrwweerraa ((GGrroouupp)).. Jest to numer grupy, na który HTTPd zmieni swój podczas odpowiadania na żądanie i działania na plikach. Jest to podobne do identyfikatora użytkownika i wymagane jest tylko jeśli serwer ma działać jako "standalone". Jeśli nie masz uprawnień root-a, to użyj nazwy swojej grupy. Aby się dowiedzieć do jakiej grupy należysz napisz w linii poleceń ggrroouuppss. 22..11..66.. AAddrreess ppoocczzttoowwyy aaddmmiinniissttrraattoorraa sseerrwweerraa ((SSeerrvveerrAAddmmiinn)).. Jest to adres osoby, do której użytkownicy mają wysyłać komentarze i uwagi na temat działania serwera. Możesz tu podac swój adres. 22..11..77.. LLookkaalliizzaaccjjaa kkaattaalloogguu sseerrwweerraa ((SSeerrvveerrRRoooott)).. Jest to katalog, w którym rezyduje twój HTTPd. Jeśli jesteś administratorem, to zostaw wartość domyślną (/usr/local/etc/httpd). Jeśli nie, to wybierz jakiś podkatalog w twoim katalogu domowym. Swój katalog domowy możesz odnaleźć przy pomocy polecenia ppwwdd. 22..11..88.. LLookkaalliizzaaccjjaa ddookkuummeennttóóww HHTTMMLL ((DDooccuummeennttRRoooott)).. To jest miejsce, gdzie mają znajdować się pliki HTML, które będą tworzyć strony twojego serwera. Wartością domyślną jest /usr/local/etc/httpd/htdocs. Możesz to oczywiście zmienić na katalog specjalnego użytkownika, którego wcześniej stworzyłeś albo na podkatalog twojego katalogu domowego jeśli nie jesteś root-em. Jeśli nie masz pewności, to użyj wartości domyślnych. Teraz kiedy już masz odpowiedzi na te pytania możesz ściągnąć NCSA HTTPd. Powinieneś przeczytać dokumentację HTTPd zanim zaczniesz instalację. Jeśli planujesz kompilować program, to musisz zmodyfikować pliki "makefile" w każdym z trzech podkatalogów: support, src, cgi-src. Jeśli twoja wersja Linux-a jest już obsługiwana, to musisz tylko napisać mmaakkee lliinnuuxx w głównym katalogu (czyli /usr/local/etc/httpd). 22..22.. KKoommppiilloowwaanniiee HHTTTTPPdd.. Kompilacja jest prosta, po prostu napisz make linux w linii poleceń w głównym katalogu serwera. UUwwaaggaa:: Użytkownicy Linux-a w wersji pre-ELF muszą odkomentować linię #define NO_PASS w pliku portability.h oraz DBM_LIBS= -ldbm w pliku Makefile przed kompilacją. 33.. TTeessttoowwaanniiee HHTTTTPPdd.. Po tym jak zainstalowałeś HTTPd, zaloguj się jako root i wystartuj demona pisząc hhttttppdd && (przy założeniu, że instalowałeś go jako wersję "standalone"). Powinieneś go teraz zobaczyć w liście procesów generowanej przez ppss. Najprostszą metodą na sprawdzenie HTTPd jest telnet. Napisz w wierszu poleceń: telnet 200.0.0.1 80 gdzie 80 to domyślny port HTTP. Jeśli skonfigurowałeś "Port" jako coś innego to wpisz ten numer zamiast 80. Powinieneś otrzymać odpowiedź, która wygląda mniej więcej tak: Trying 200.0.0.1... Connected to linux.ppg_corp. Escape character is '^]'. Teraz jeśli wpiszesz jakiś znak i wciśniesz , to powinieneś otrzymać odpowiedź podobną do tej poniżej: HTTP/1.0 400 Bad Request Date: Wed, 10 Jan 1996 10:24:37 GMT Server: NCSA/1.5 Content-type: text/html 400 Bad Request < /TITLE> < /HEAD> <BODY><H1>400 Bad Request < /H1> Your client sent a query that this server could not understand.<P> Reason: Invalid or unsupported method.<P> < /BODY> Teraz jesteśmy gotowi podłączyć się do tego serwera z innego PC-ta używając przeglądarki WWW. 44.. PPoołłąącczzeenniiee pprrzzeezz ssiieećć NNeettwwaarree zz WWiinnddoowwssaammii.. Żeby ustawić serwer Netware powinieneś mieć uprawnienia Supervisor-a, albo przynajmniej uprawnienia operatora konsoli. Jeśli ich nie masz, to spróbuj poprosić swojego administratora sieci, żeby ci pomógł w instalacji. W poniższych przykładach zakładam, że adres Linux-a to 200.0.0.1 i dlatego przypisuję adresy 200.0.0.2 i 200.0.0.3 odpowiednio serwerowi Netware i stacji roboczej. Ty możesz oczywiście wybrać adresy odpowiednie dla siebie. 44..11.. UUssttaaww sseerrwweerr NNeettwwaarree.. Włącz na serwerze ramkę Ethernet_II przez wpisanie poniższych poleceń na konsoli lub w pliku autoexec.ncf load NE2000 frame=Ethernet_II name=IPNET load TCPIP bind IP to IPNET addr=200.0.0.2 mask=FF.FF.FF.0 Możesz podać numer slotu albo karty (board) podczas ładowania sterownika do NE2000 w zaleźności od twojej konfiguracji. (np. load NE2000 slot=3 frame=...). Na PC-cie masz trzy możliwości: Win3.1, WfWg albo Win95. Procedura instalacji różni się pomiędzy Win95 a starszymi wersjami windows jeśli używasz 32-bitowego klienta z Microsoft-a lub Novell-a. Jeśli masz zamiar używac 16-bitowego klienta, to procedura instalacyjna jest opisana w instrukcji instalacji dla wersji pod Windows 3.1. Jeśli będziesz instalował wersję klienta 32-bitową, to przejdź do ``Windows 95''. 44..11..11.. WWiinnddoowwss 33..xx Jeśli używasz Win3.1 albo WfWg możesz zainstalować klienta Netware (VLMs) i kilka dodatkowych plików, które są dostarczane na dyskietce TCP/IP, a mianowicie: TCPIP.exe, VTCPIP.386, WINSOCK.dll i WLIBSOCK.dll Zauważ, że plik WINSOCK.dll różni się od tych z Win95 i Trumpet. Zainstaluj klienta Netware z obsługą Windows-ów. Skopiuj VTCPIP.386, WINSOCK.dll i WLIBSOCK.dll do katalogu SYSTEM a TCPIP.exe do katalogu NWCLIENT. Teraz zmodyfikuj plik STARTNET.bat w katalogu NWCLIENT: lsl ne2000 ---> sterownik do twojej karty c:\windows\odihlp.exe ---->jeśli używasz WfWg ipxodi tcpip ---> dodaj tę linię vlm Stwórz podkatalog - powiedzmy \NET\TCP i skopiuj pliki HOSTS, NETWORKS, PROTOCOLS i SERVICES z /etc na twoim Linux-ie albo z SYS:ETC na serwerze Netware. Zmodyfikuj skopiowany plik HOSTS i dodaj linię dla twojego nowego serwera Linux-a. To pozwoli ci na odwoływanie się do serwera na Linux-ie w taki sposób http://linux.ppg_corp/ zamiast http://200.0.0.1/ w twojej przeglądarce WWW. 127.0.0.1 localhost 200.0.0.1 linux.ppg_corp Zmodyfikuj plik NET.cfg w katalogu NWCLIENT Link Driver NE2000 port 300 int 3 MEM D0000 FRAME Ethernet_802.2 ; ---- dodaj te linie ---- FRAME Ethernet_II Protocol TCPIP PATH TCP_CFG C:\NET\TCP ip_address 200.0.0.3 ip_netmask 255.255.255.0 Link Support MemPool 6192 ---> minimum to 1024, spróbuj z różnymi wartościami Buffers 10 1580 ---> tutaj też możesz ustawić w/g własnych potrzeb ;--------------------------------- Zmodyfikuj plik SYSTEM.ini w katalogu WINDOWS i dodaj tę pozycję dla VTCPIP.386 [386Enh] ..... network=*vnetbios, vipx.386, vnetware.386, VTCPIP.386 ..... Zrestartuj PC-ta, uruchom STARTNET.bat i możesz już używać swojej ulubionej przglądarki WWW. Nie musisz się logować do sieci Netware i nie musisz uruchamiać TCPMAN-a (jeśli używasz Trumpet Winsock). 44..11..22.. WWiinnddoowwss 9955 Ta sekcja opisuje jak zainstalować 32-bitowego klienta pod Win95. Najpierw musisz zainstalować nastepujące programy: Client for Netware Networks (od Microsoft-a albo Novell-a) Microsoft TCP/IP Protocol Network Adapter Aby zainstalować te programy, kliknij na Mój komputer, Panel sterowania, Sieci. Klknij Dodaj. Teraz znajdziesz się w oknie, które wyświetla Klient, Karta (Adapter), Protokół i Usługa (Service). Aby zainstalować klienta dla sieci Netware: 1. kliknij dwa razy na Klient. 2. kliknij na Microsoft lub Novell. 3. kliknij dwa razy na Klient dla sieci Netware. Aby zainstalować protokół TCP/IP 1. kliknij dwa razy na Protokół. 2. kliknij na Microsoft. 3. kliknij dwa razy na TCP/IP. Windows 95 instaluje domyślnie kilka innych protokołów. Usuń je przez kliknięcie na nich i wciśnięcie przyciku Usuń. W typowych przypadkach Win95 instaluje protokół Microsoft NetBeui i protokół kompatybilny z IPX/SPX. Możesz skasować protokół NetBEUI, ale będziesz potrzebował protokołu IPX/SPX jeśli chcesz się logować do serwera Netware. Więcej szczegółów znajdziesz w TCP/IP Setup FAQ. Aby ustawić TCP/IP kliknij na TCP/IP, kliknij na Właściwości, kliknij na adres IP Wpisz twój adres IP w linii "Podaj adres IP" jako 200.0.0.3 W linii "Maska podsieci" wpisz 255.255.255.0 Kliknij OK. Powinieneś teraz dostać komunikat, aby zresetować komputer. Zrób tak. Powinieneś teraz móc używać swojej przeglądarki. 55.. IInnnnee ppoołłąącczzeenniiaa.. To nie jest jedyny sposób na połączenie się z serwerem Linux-a. Możesz wypróbować kilka innych programów jak: ˇ Strona WWW o Sambie (sam pakiet osiągalny jest także na polskich mirrorach, np. ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/network/samba>. ˇ TCP/IP z Microsoft-u ˇ Sterownik pakietowy Trumpet TCP/IP ˇ Sterowniki pakietowe CRYNWR Możesz też być zainteresowany udostępnianiem serwera Netware przez załadowanie sterownika NCP dla Linux-a. 66.. AApplliikkaaccjjee sseerrwweerraa WWWWWW.. Serwer HTTP może być użyty w biurze, aby udostępniać w przejrzystej formie informacje znajdujące się na różnych serwerach, w różnych miejscach i katalogach. Danymi mogą być proste dokumenty w Wordzie, arkusze w Lotusie, albo złożone bazy danych. Może być użyty do tworzenia interfejsu przy pomocy RDBMS takich jak ORACLE i SYBASE do generowania informacji w czasie rzeczywistym. Tutaj jest lista baz danych gateway-ów do WWW 77.. PPooddzziięękkoowwaanniiaa ii LLeeggaallnnoośśćć.. Dziekuję ludziom z NCSA za dostarczenie tak wspaniałej dokumentacji oraz Davidowi Andersonowi za jego komentarze i wypróbowanie tego HOWTO! Powiedziano mi (David), że nie możesz używać klienta Netware nie mając licencji Netware 77..11.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl �������������doc-linux-pl-2002.06.14.orig/mini/INN+SUCK.pl.txt���������������������������������������������������0100664�0001750�0001750�00000111622�07457640740�017705� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ inn+suck - instalacja. Rafał Czeczótka <mailto:michu@amg.gda.pl> v4.11, 18 sierpień 2000 Tekst ten opisuje procedurę instalacji lokalnego serwera news (inn), sposób wymiany postów (suck) oraz metodę kompresji newsów w drodze (ssh). Oryginał tego dokumentu można znaleźć na stronie www.amg.gda.pl/~michu/linux.html. Zostało użyte kodowanie ISO-8859-2. ______________________________________________________________________ Spis treści 1. Wstęp 1.1 Przedmowa 1.2 Podziękowania 2. Słowo o programach, instalacja i konfiguracja 2.1 Co to jest inn i suck 2.2 Kiedy instalować inn+suck 2.3 Wady i zalety tego rozwiązania 2.4 Podstawowa instalacja i konfiguracja 2.5 Kompresja newsów w drodze 2.6 CNFS 2.6.1 Krótka chrakterystyka CNFS 2.6.2 Instalacja i konfiguracja CNFS 2.6.3 Podstawowe różnice 2.7 Grupy moderowane 2.8 Uwagi i kruczki 2.8.1 Jeśli coś może pójść źle, to z pewnością pójdzie 2.8.2 Inn na co dzień, czyli rzeczy o których warto wiedzieć 3. Inne dokumenty związane z tematem 4. Do zrobienia 5. Prawa autorskie/legalność ______________________________________________________________________ 11.. WWssttęępp 11..11.. PPrrzzeeddmmoowwaa Impulsem do napisania tego tekstu były moje początkowo nieudane próby instalacji oraz nikły odzew na moje posty na grupie pl.comp.os.linux (pewnie jak zwykle moje zapytania zaginęły gdzieś w potoku informacji i zapytań docierających tu codziennie). Nie mam zamiaru pretendować do miana fachowca od konfiguracji serwerów news (po prostu u mnie już to działa), tym nie mniej mam nadzieję, że opis działającej konfiguracji będzie dla kogoś przydatny. Całą treść tego dokumentu stanowi opis mojej instalacji duetu inn+suck w systemie RedHat 6.2, w oparciu o pakiety inn-2.2.2-3 i suck-4.2.2-1. Jeśli dysponujesz inną wersją systemu i/lub pakietów to mogą występić pewne różnice w konfiguracji, mniemam jednak, że nie powinno to stanowić najmniejszego problemu już dla średnio zaawansowanego miłośnika Linux'a. Wszelkie sugestie i poprawki są mile widziane i należy je wysyłać pod adres michu@amg.gda.pl. Jestem skory do pomocy, proszę jednak o uszanowanie mojego czasu i nie wysyłanie mi listów o lakonicznej treści typu "_n_i_e _d_z_i_a_ł_a _m_i_, _C_O _R_O_B_I_Ć_?_?_?" czy magabajtowych załączników z konfiguracją. Jeśli widzisz, że nic Ci nie wychodzi, to sprawdź czy wykonałeś dokładnie wszystkie kroki (z dokładnością do różnych wersji pakietów/dystrybucji). Jeśli po paru podejściach nadal masz poważne problemy, to lepiej na razie sobie odpuść i spróbuj ponownie za jakiś czas. W tym dokumencie w paru miejscach porównuję inn'a do leafnode'a, którego wcześniej używałem. 11..22.. PPooddzziięękkoowwaanniiaa Następujący ludzie przyczynili się do powstania tego dokumentu, taką czy inną drogą, świadomie lub nieświadomie (w kolejności alfabetycznej): ˇ Ariadna - wyjechała służbowo na dwa tygodnie, dzięki czemu mogłem m.in. spokojnie spłodzić ten dokument ;-) oraz po powrocie poprawiła wiele literówek (kobiety bywają czasem przydatne :-) ˇ Andrzej Radecki (radecki@posejdon.wpk.p.lodz.pl) - podał sposób czytania lokalnego archiwum, ˇ Bartosz Maruszewski z JTZ (B.Maruszewski@jtz.org.pl) - nadesłał dołączony skrypt do dodawania zasubscribowanych grup do inn'a, wspierał mnie moralne (z czego pewnie nie zdawał sobie sprawy :) oraz przekodował ten dokument do SGML, ˇ Jacek Czerwiński (klik@rubikon.net.pl) - podał rozwiązanie likwidujące problem odsyłania postów, ˇ Jakub Bogusz (qboosh@priv6.onet.pl) - podał jeszcze jeden sposób, w jaki można rozwiązać problem odsyłania postów, ˇ Krzysztof Zietara (tarhim@studio.net.pl) - rozwiązał problem ze ściąganiem (a raczej jak ich nie ściągać) grup control, control.cancel, junk, test i to oraz nadesłał inne uwagi, ˇ Maciej Miechowicz (miechus@aurora.put.poznan.pl) - dokonał przełożenia niniejszego tekstu na język angielski, ˇ Marcin Kasperski (Marcin.Kasperski@softax.com.pl) - dodał parę uwag dotyczących instalacji na Debian'ie, wymiany postów z wieloma serwerami oraz podesłał całą sekcję na temat grup moderowanych, ˇ Michal Kaczmarek (shadow@fanthom.math.put.poznan.pl) - podał kilka istotnych uwag, ˇ Michał Tyrała (kbns@zeus.polsl.gliwice.pl) - pomógł w rozwiązaniu problemów z wpuszczaniem postów do inn'a przy transferze z kompresją oraz nadesłał odpowiedni skrypt, ˇ Radosław Gancarz (feanor@zeus.polsl.gliwice.pl) - rozwiązał problemy z odrzucaniem niektórych postów (zmiany w newsfeeds), ˇ Tomasz Sienicki (tsca@cryogen.com) - podał ciekawego URL'a związanego z tematem, ˇ Tomasz Szymczak (szymczak@bg.univ.gda.pl) - podał sugestię dotyczącą opcji -M w suck'u, ˇ Inni, nie wymienieni z nazwiska, zwrócili uwagę na parę drobnych niedomówień, niedociągnięć, potknięć i nieścisłości. 22.. SSłłoowwoo oo pprrooggrraammaacchh,, iinnssttaallaaccjjaa ii kkoonnffiigguurraaccjjaa 22..11.. CCoo ttoo jjeesstt iinnnn ii ssuucckk Inn jest to "InterNetNews daemon" czyli program umożliwiający wielu użytkownikom korzystanie z zasobów news. Suck jest to zasysacz newsów; pośredniczy on w wymianie newsów pomiędzy dwoma serwerami: naszym i zdalnym (emulując zachowanie normalnego czytnika; protokół wymiany postów pomiędzy serwerami (wbudowany w inn'a) odbywa się na trochę innej zasadzie i wymaga specjalnej konfiguracji po obu stronach, czego chcemy uniknąć). 22..22.. KKiieeddyy iinnssttaalloowwaaćć iinnnn++ssuucckk Jeśli uważasz, że spełnione są poniższe warunki: 1. Nudzi Ci się i potrzebujesz jakiejś odmiany (warunek konieczny, bo przecież tak naprawdę jeśli potrzebujesz lokalnego serwera newsów, to z pewnością wystarczy Ci dużo prostszy w konfiguracji i używaniu leafnode, poza tym ten eksperyment może Cię kosztować sporo czasu i nadszarpniętych nerwów), 2. Z newsów na twoim komputerze korzysta więcej niż jeden użytkownik (bo dla jednego usera zupełnie wystarczające są rozwiązania typu rtin -SQ) ewentualnie "twój" komputer służy jako serwer news dla całej sieci (np. w firmie), 3. Możliwości leafnode'a już Ci nie wystarczają (potrzebujesz killfile'i, różnych ograniczeń na ściąganą pocztę newsową, ...), 4. Ściąganie newsów trwa u Ciebie zbyt długo i potrzebujesz ich kompresji, to znaczy, że powinieneś zainstalować duet inn+suck. Jeśli już będziesz chciał zainstalować to oprogramowanie, to będą Ci potrzebne następujące (lub inne wersje) pakiety: 1. cleanfeed (np. cleanfeed-0.95.7b-7, wymagany tylko w RedHat, aby spełnić zależności RPM'a), 2. inn (np. inn-2.2.2-3), 3. perl-MD5 (np. perl-MD5-1.7-2, podobnie jak cleanfeed wymagany tylko w RedHat), 4. suck (np. suck-4.2.2-1). 22..33.. WWaaddyy ii zzaalleettyy tteeggoo rroozzwwiiąązzaanniiaa Zalety inn+suck: 1. Szybki (piekielnie), 2. Znaczne możliwości (killfile, ...), choć tu należy raczej patrzeć na możliwości suck'a (ponieważ dopiero po ściągnięciu pliki są przesyłane do inn'a a jak coś już w całości przeszło przez modem, to moim zdaniem niech już zostanie), 3. Można tak skonfigurować inn+suck, że newsy są ściągane skompresowane, czyli czas transmisji można skrócić parokrotnie, 4. Można grep'ować pliki z zawartością grup bez żadnych "skutków ubocznych" (ta uwaga odnosi się do dużo prostszego leafnode'a, gdzie czas do expire jest liczony od daty ostatniego dostępu do pliku, więc jeśli "to się zrobiło", to czas ten oczywiście przedłużał się), 5. Instalując ten serwer jesteś "wśród najlepszych" (większość dużych serwerów news działa właśnie na inn'ie). Wady inn+suck: 1. Dość pogmatwana konfiguracja i hermetyczna dokumentacja (przynajmniej na początek) ale ten dokument powstał właśnie aby wyeliminować tę niedogodność, 2. Pamięciożerność: ˇ Proces innd cały czas pozostaje w pamięci (leafnode wywoływany jest "na żądanie"), ˇ Na dysku zajmuje więcej miejsca niż leafnode (choć jest to do przyjęcia). 22..44.. PPooddssttaawwoowwaa iinnssttaallaaccjjaa ii kkoonnffiigguurraaccjjaa UWAGA!!! W zależności od dystrybucji i wersji pakietów wymienione poniżej pliki konfiguracyjne mogą występować w innych katalogach (np. /var/lib/suck/, /usr/lib/suck/, /etc/suck/, ...). Proces instalacji i "konfiguracji" jest prosty (przynajmniej do pierwszego "ruszenia", ale o tym, bez tego wstępu, przeciętny zjadacz newsów możne przekonać się dopiero po parodniowych dociekaniach): 1. Zainstalować inn i suck (i jeszcze parę wymienionych wcześniej drobiazgów), UWAGA!!! Ponieważ inn bardzo źle znosi wszelkie zmiany atrybutów plików (jest to przyczyna większości niepowodzeń), najlepiej je gdzieś zapisać: ----- ciach ----- ls -ld `rpm -ql inn` > ~/jakiś_plik_z_atrybutami ----- ciach ----- a wszelkie operacje wykonywać jako użytkownik news. 2. W pliku /etc/news/newsfeeds dodać własną sekcję z feeds, tj.: ----- ciach ----- ... news.task.gda.pl\ :!junk,!test,!to\ :Tf,Wnm: ... ----- ciach ----- gdzie news.task.gda.pl to nazwa mojego serwera news, oraz do definicji dystrybucji akceptowanych przez nasz serwer dodać polską: ----- ciach ----- ... ME\ :*,!junk,!control*,!local*,!foo.*\ /pl,world,usa,na,gnu,bionet,pubnet,u3b,eunet,vmsnet,inet,ddn,k12\ :: ## ^^ - to jest to pl ... ----- ciach ----- 3. W pliku /var/lib/suck/get.news.inn (w Debiani'e jest to plik /etc/suck/get-news.conf) wstawić nazwę serwera news (np. REMOTE_HOST=news.task.gda.pl) oraz "sajtu" (tego samego co przy definicji feed'u, tj. SITE=news.task.gda.pl), 4. W suck'u w pliku /var/lib/suck/sucknewsrc zapisać wszystkie interesujące nas grupy i numery postów, od których ma się zacząć "ściąganie", np. aby ściągnąć ostatnich 100 postów należy podać: ----- ciach ----- ... pl.comp.ogonki -100 pl.comp.os.linux -100 ... ----- ciach ----- 5. Jeśli istnieją pliki /etc/cron.daily/inn-cron-rnews oraz /etc/cron.hourly/inn-cron-nntpsend, to należy je usunąć (ich funkcje przejmuje suck), 6. Jeśli w pliku /etc/news/nnrp.access nie ma wpisu localhost: to należy go dodać, 7. Teraz możemy już wystartować serwer np. poleceniem /etc/rc.d/init.d/innd start. Można/trzeba także dodać odpowiednie linki do katalogów /etc/rc.d/rc[0-6].d/ (np. poleceniem ntsysv), 8. Dodać grupy do inn'a. Można to zrobić ręcznie poleceniem ctlinnd newgroup nazwa.grupy lub skorzystać z poniższego skryptu: ----- ciach ----- #!/bin/bash # # Ten skrypt tworzy automatycznie grupy w inn'ie, które podałeś w pliku # /var/lib/suck/sucknewsrc - konfiguracyjnym dla suck-a. # UWAGA !!! # Wymagany format tego pliku to: ############################ # nazwa.grupy numer.artykulu ############################ # # Możesz podać inna lokalizacje SUCK_FILE=/var/lib/suck/sucknewsrc # # Podaj ścieżkę do programu ctlinnd. Skrypt spróbuje sam zgadnąć, ale # lepiej podaj jak wiesz. CTLINND=`which ctlinnd` cat ${SUCK_FILE} | while read ln; do set -e $ln >/dev/null ${CTLINND} newgroup $1 if [ $? -eq 1 ]; then echo Błąd podczas zakładania grupy $1 !!! exit fi done ----- ciach ----- 9. Aby nie ściągać grup control, control.cancel, junk, test ani to (z pewnością nam się nie przydadzą), musimy stworzyć plik /var/lib/suck/get.news.inn: ----- ciach ----- control control.cancel junk test to ----- ciach ----- Oczywiście grup tych nie należy umieszczać w pliku /var/lib/suck/suck­ newsrc, 10. Wymianę newsów ze zdalnym serwerem inicjujemy skryptem /var/lib/suck/get.news.inn (lub /var/sbin/get-news na Debian'ie), 11. Aby czytać newsy musimy ustawić zmienną środowiskową NNTPSERVER. Dla bash'a będzie to komenda: export NNTPSERVER=localhost 22..55.. KKoommpprreessjjaa nneewwssóóww ww ddrrooddzzee Ponieważ newsy są danymi tekstowymi, więc ich kompresja zdecydowanie skraca czas transmisji, dzięki czemu z pewnością zaoszczędzimy trochę pieniędzy kosztem naszego operatora telekomunikacyjnego (pieniądze te mogą być wysłane do autora powyższego tekstu, za ewentualne straty autor oczywiście nie bierze żadnej odpowiedzialności ;-). Osobiście wydaje mi się, że przedstawione tu rozwiązanie jest najbardziej naturalne i elastyczne. Nie oznacza to oczywiście, że nie można tego zrobić lepiej. Podczas eksperymentów okazało się także, że zwykłe tunelowanie komunikacji w skompresowanym kanale ssh nie daje oczekiwanych rezultatów, stąd wyniknęła potrzeba wywołania suck'a na zdalnym komputerze (po prostu komunikacja pomiędzy komputerami jest na tyle duża, że po uwzględnieniu opóźnień występujących w trakcie transferu, niemal całkowicie niweczony jest efekt zmniejszonej objętości danych). Opisując poniższe rozwiązanie zakładam, że masz już poprawnie zainstalowane i skonfigurowane pakiety inn+suck. Aby z niego korzystać niezbędne nam także będą: 1. na domowym komputerze musi być zainstalowny klient ssh, 2. musimy mieć dostęp do konta na zdalny komputerze z zainstalowanym systemem Unix'opodobnym, podłączony w miarę szybkim łączem stałym do internetu, z zainstalowanym suck'iem oraz uruchomionym demonem ssh. Cała przedstawiona poniżej idea opiera się na możliwości uruchomienia suck'a na zdalnym komputerze tak, aby wiadomości były wysyłane w postaci strumienia danych, który jest przesyłany w skompresowanym kanale ssh (opcja -C). Dopiero później, lokalnie, za pomocą skryptu filter2rnews, strumień ten jest dzielony na poszczególne wiadomości, które są wpuszczane za pomocą programu rnews do lokalnego serwera innd. W tym celu musimy: 1. Usunąć z pliku /var/lib/suck/get.news.inn całą sekcję służącą do ściągania wiadomości, czyli skrypt ten powinien być postaci: ----- ciach ----- #!/bin/sh #BEFORE USING - check to ensure all the paths defined below are correct!! #NOTE: this script probably needs to be run by root. Most systems will # not let a normal user run ctlinnd REMOTE_HOST=news.task.gda.pl LOCAL_HOST=localhost SPOOLDIR=/var/spool/news/articles # base directory for articles to be rposted NEWSDIR=/usr # base directory for news binaries BASEDIR=/var/lib/suck # base directory for scripts and data files CTLINND=${NEWSDIR}/bin/ctlinnd # location of binary SHLOCK=${NEWSDIR}/bin/shlock # location of binary TMPDIR=${BASEDIR} # location for suck.* files MSGDIR=${BASEDIR}/Msgs # where to put MultiFile messages when getting them SITE=news.task.gda.pl # name of site from newsfeeds file OUTGOING=${SPOOLDIR}/../outgoing/${SITE} # location of the list of articles to upload OUTGOINGNEW=${OUTGOING}.new # file to contain the list temporarily OUTGOINGFAIL=${OUTGOINGNEW}.fail # file with failed xfers SCRIPT=${BASEDIR}/put.news # my filter for rpost OUTFILE=/tmp/tmp$$ # used by rpost as article after it is filtered LOCKFILE=${BASEDIR}/getnews.lock # lock file to prevent multiple instances of script NEWSGROUP=news # which group owns the file in out.going, typically either news or uucp. TESTHOST=testhost RPOST=rpost SUCK=suck HISTORY=/var/lib/news/history # location of history file # if we are already running, abort trap 'rm -f ${LOCKFILE} ; echo "Aborting" ; exit 1' 1 2 3 15 ${SHLOCK} -p $$ -f ${LOCKFILE} if [ $? -ne 0 ]; then echo "Already running, can't run two at one time" exit fi # now upload messages if [ -s ${OUTGOING} -o -s ${OUTGOINGNEW} ]; then ${TESTHOST} ${REMOTE_HOST} -s if [ $? -ne 0 ]; then echo "Remote posting host not responding" else # this is needed by INND so that the outgoing file will be # properly flushed and we have a new blank file to work with # when we are done # First mv the current one to a new file name # Since innd already has the file open, it doesn't care # about the rename. # The flush will ensure that all messages to be posted have # been written out, close off the old one (already renamed) # and create a new one. # if the outgoingnew already exists, it means we aborted last time # so don't try to do it again if [ ! -s ${OUTGOINGNEW} ]; then mv ${OUTGOING} ${OUTGOINGNEW} ${CTLINND} flush ${SITE} fi # outgoing messages to post ${RPOST} ${REMOTE_HOST} -d -b ${OUTGOINGNEW} -p ${SPOOLDIR} -f \$\$o=${OUTFILE} ${SCRIPT} \$\$i ${OUTFILE} ERRLEV=$? if [ ${ERRLEV} -eq 0 ]; then echo "Remotely posted articles" rm ${OUTFILE} elif [ ${ERRLEV} -eq 1 ]; then echo "Error posting a message" elif [ ${ERRLEV} -eq 2 ]; then echo "Unable to do NNTP authorization with remote server" elif [ ${ERRLEV} -eq 3 ]; then echo "Unexpected answer from remote server to a command while doing NNTP authorization" elif [ ${ERRLEV} -eq -1 ]; then echo "Fatal error" fi if [ -f ${OUTGOINGFAIL} ]; then mv ${OUTGOINGFAIL} ${OUTGOINGNEW} # so we can re do it chown news.${NEWSGROUP} ${OUTGOINGNEW} chmod 664 ${OUTGOINGNEW} fi fi echo "You can hang up the modem now" fi rm -f ${LOCKFILE} ----- ciach ----- Oczywiście należy pamiętać o właściwym ustawieniu zmiennych REMOTE_HOST i SITE. 2. Skopiować z lokalnego katalogu /var/lib/suck/ pliki active-ignore, suck.killlog, suckkillfile oraz sucknewsrc do zdalnego katalogu $HOME/suck/ (jeśli nie jest tam zainstalowany suck, a tamta maszyna ma taką samą architekturę jak nasza, to możemy skopiować tam także program /usr/bin/suck). 3. Stworzyć możliwość logowania się na zdalnym komputerze za pomocą ssh bez użycia hasła (tylko na podstawie znajomości klucza RSA): a. wygenerować parę kluczy RSA komendą ssh-keygen (w pass phrase nie podawać hasła), b. następnie skopiować plik $HOME/.ssh/identity.pub na zdalny komputer do pliku $HOME/.ssh/authorized_keys. UWAGA!!! Należy zdawać sobie sprawę z tego, że mimo, iż takie rozwiązanie jest o wiele bezpieczniejsze od logowania się za pomocą hasła, to krytyczną rolę dla bezpieczeństwa odgrywa tutaj nie ujaw­ nianie zawartości pliku $HOME/.ssh/identity, czyli prywatnej połowy klucza. Istnieje także rozwiązanie umożliwiające wygenerowanie klucza z hasłem i podawanie go tylko raz na sesję (patrz program ssh-agent). 4. Utworzyć skrypt /usr/local/bin/filter2rnews: ----- ciach ----- #!/usr/bin/perl -w while (not eof STDIN) { @POST = (); while (<>) { last if /^\.$/; push @POST, $_; } $dlug = length(join('',@POST)); print "#! rnews $dlug\n"; print @POST; } ----- ciach ----- 5. Po dokonaniu wszystkich powyższych kroków możemy już pobierać newsy komendą: ----- ciach ----- ssh -C -l username serwer.name \ '~/suck/suck news.task.gda.pl -dd ~/suck -dt ~/suck -M -c' | \ filter2rnews | rnews -N -vvv -S localhost ----- ciach ----- gdzie username to nazwa użytkownika na komputerze serwer.name a news.task.gda.pl jest nazwą naszego serwera news. Wiadomości wysyłamy tak jak poprzednio, czyli za pomocą skryptu /var/lib/suck/get.news.inn. 6. Pomocnym będzie uaktualnienie bazy overview (rnews nie robi tego automatycznie): ----- ciach ----- su news -c 'expireover -s -a' ----- ciach ----- 22..66.. CCNNFFSS 22..66..11.. KKrróóttkkaa cchhrraakktteerryyssttyykkaa CCNNFFSS Domyślnie inn skonfigurowany jest w taki sposób, że artykuły przechowywane są w postaci oddzielnych plików, w strukturze katalogów odpowiadającej pozycji grupy w hierarchii. Podstawową zaletą tego rozwiązania jest prostota oraz wynikająca z niej łatwość tworzenia rozwiązań pomocniczych. Jednak taki sposób przechowywania ma co najmniej dwie poważne wady. Pierwszą jest to, że artykuły przechowywane są z użyciem mechanizmów systemu operacyjnego, które to nie są zoptymalizowane do obsługi wielu plików o małym rozmiarze, konsekwencją czego jest wolny dostęp i duża ilość zmarnowanego miejsca. Drugą wadą jest to, że nigdy nie wiemy, jak dużo miejsca będą nam zajmowały newsy, co grozi przepełnieniem partycji. Wymienione powyżej niedogodności tradycyjnego przechowywania plików eliminuje CNFS (Cyclic News File System). Ten sposób przechowywania artykułów polega na tym, że zapisywane są one w pliku o specjalnym formacie. Gdy skończy się miejsce, nowe artykuły automatycznie nadpisują najstarsze. Rozwiązanie takie jest bardzo szybkie i nie grozi nam już przepełnienie partycji. Jedyną jego wadą jest to, że teraz utrudniony jest "samodzielny" dostęp do pojedynczych artykułów. 22..66..22.. IInnssttaallaaccjjaa ii kkoonnffiigguurraaccjjaa CCNNFFSS Aby zainstalować CNFS należy (wszystkie te czynności oczywiście najlepiej wykonać jako użytkownik news): 1. W pliku /etc/news/inn.conf ustawić opcję storageapi na on, 2. W pliku /etc/news/newsfeeds: a. Wyrzucić wpis crosspost:..., b. Zmienić wpis overview na: ----- ciach ----- overview!:*:Tc,Ao,WhR:/usr/bin/overchan ----- ciach ----- 3. W pliku /etc/news/cycbuff.conf umieścić definicję naszego bufora cyklicznego, np.: ----- ciach ----- cycbuff:ONE:/var/spool/news/one:131072 metacycbuff:BIGAREA:ONE ----- ciach ----- gdzie ONE jest symboliczną nazwą bufora, /var/spool/news/one jest plikiem bufora, 131072 rozmiarem bufora a BIGAREA jest nazwą metabu­ fora cyklicznego, 4. W /etc/news/storage.conf definiujemy jakie artykuły mają być przechowywane w buforze. Ponieważ my mamy tylko jeden bufor, gdzie powinny znaleźć się wszystkie artykuły, to u nas ten plik będzie wyglądał następująco: ----- ciach ----- method cnfs { newsgroups: * class: 1 size: 0,1000000 options: BIGAREA } ----- ciach ----- 5. Z poziomu shell'a tworzymy bufor zdefiniowany w pliku /etc/news/cycbuff.conf: ----- ciach ----- dd if=/dev/zero of=/var/spool/news/one bs=1k count=131072 chmod 0664 /var/spool/news/one ----- ciach ----- 6. Ponieważ teraz do treści artykułów nie dostaniemy się przez nazwę pliku (np. komendą cat) lecz token (program sm), to musimy w konfiguracji suck'a: a. W skrypcie /var/lib/suck/get.news.inn usunąć w wywołaniu rpost'a parametr -p nazwa_katalogu, b. Zamienić skrypt put.news na put.news.sm (powinien być w przykładach lub źródłach), 7. I możemy zaczynać ściągać news'y. 22..66..33.. PPooddssttaawwoowwee rróóżżnniiccee Podstawową różnicą w stosunku do standardowego sposobu przechowywania artykułów jest to, że nie ma potrzeby ich expirowania, teraz dzieje się to automatycznie, bez naszej pomocy (czasem być może wbrew naszej woli ;-). Inną konsekwencją jest to, że pewne czynności wykonuje się w zupełnie inny sposób. Np. do odtworzenia bazy overview należy zamiast komendy expireover używać komendy expireindex (baza overview znajduje się teraz w katalogu /var/spool/news/uniover/). Ponieważ nie mamy teraz bezpośredniego dostępu do artykułów, czasem jest potrzeba wspomożenia się komendą makehistory (więcej informacji w manualach). 22..77.. GGrruuppyy mmooddeerroowwaannee [ RCz: sekcja napisana w całości przez Marcina Kasperskiego ] W normalnej konfiguracji inn+suck grupy moderowane traktowane są tak samo, jak wszystkie pozostałe: wysyłane na nie artykuły trafiają od razu na lokalne grupy (bez akceptacji moderatora) i są wysyłane do serwera z którego pobieramy newsy. Dopiero ten serwer przesyła posty do moderatora. Sprawia to następujące problemy: ˇ nie wiemy, czy nasze posty naprawdę trafiły na grupę, czy nie (tj. czy moderator je zaakceptował czy odrzucił - i kiedy) ˇ jeśli wymieniamy suck'iem posty z kilkoma serwerami, możemy podpaść moderatorom bo będziemy wysyłać po kilka razy ten sam list (każdy z serwerów sforward'uje post do moderatora) ˇ część grup moderowanych jakoś nie jest dobrze obsługiwana (nie udało mi się przez tpnet wysłać listu na comp.lang.perl.moderated) ˇ jeśli z naszego hosta korzysta grupa osób, widzą one grupę inaczej niż pozostali, mogą wysyłać odpowiedzi zanim moderator zaakceptował pytanie itp. Problemy te możemy rozwiązać konfigurując grupy jako moderowane na naszym własnym serwerze. Wówczas inn nie będzie automatycznie umieszczał na grupie wysyłanych postów a zamiast tego wyśle je pocztą do moderatora. Zaakceptowane posty "spłyną" do nas kiedyś tam suck'iem - tak jak to się dzieje normalnie. W celu takiej konfiguracji należy (lokalizacje plików poniżej odpowiadają Debianowi): 1. Tworzymy plik /etc/news/moderators z następującą treścią: # Uniwersalny adres moderatorów grup polskich pl.*:%s@usenet.pl # Uniwersalny adres moderatorów grup światowych *:%s@moderators.isc.org 2. W pliku /etc/news/inn.conf ustawiamy fromhost na adres jakiejś maszyny widocznej w światowym DNS'ie (nasz host maskaradujący, nasz provider, my sami jeśli jesteśmy wbici). Najlepiej, jeśli jesteśmy w stanie czytać pocztę dostawaną przez konto news na tym hoście (listy które nie doszły) ale nie jest to zdaje się absolutnie konieczne. Przy konfiguracji poczty smarthost najlepiej nadaje się tu adres naszego serwera mailowego. Mój plik inn.conf zawiera pola organization, server (prawdziwa nazwa mojego serwera) i fromhost (nazwa serwera pocztowego). Uwaga: straciłem dobry dzień zgadując czemu moje posty nie dochodzą póki na to nie wpadłem - miałem wcześniej jako fromhost pewien adres z sieci lokalnej i jakiś mailer po drodze wywalał pocztę do kosza - nie przysyłając żadnej informacji zwrotnej, bo nie miał jak. 3. Sprawdzamy dla pewności, czy jesteśmy w stanie wysłać pocztę z palca z konta news, przy pomocy sendmail'a na jakieś konto w internecie (np. na friko), ustawiając jako From news@to-co- wpisaliśmy-jako-fromhost. 4. Charakteryzujemy grupy jako moderowane ----- ciach ----- ... ctlinnd changegroup pl.rec.humor.najlepsze m ctlinnd changegroup comp.lang.c++.moderated m ... ----- ciach ----- 5. Próbujemy coś wysłać - najlepiej na grupę z której przychodzą powiadomienia o zakolejkowaniu. 22..88.. UUwwaaggii ii kkrruucczzkkii 22..88..11.. JJeeśśllii ccoośś mmoożżee ppóójjśśćć źźllee,, ttoo zz ppeewwnnoośścciiąą ppóójjddzziiee 1. Bardzo pomocnym programem jest inncheck, który sprawdza poprawność konfiguracji, atrybuty plików oraz wyświetla potencjalne źródła problemów. Jeśli coś nam nie działa to diagnostykę powinniśmy zacząć właśnie od uruchomienia tego programu. 2. W razie problemów należy także sprawdzić właścicieli oraz prawa dostępu do plików z pakietu inn'a (np. z plikiem ~/jakiś_plik_z_atrybutami który czujnie zrobiliśmy na początku instalacji). 3. Jeśli podczas ściągania newsów pojawi się komunikat GROUP command not recognized, try the -M option oczywiście dodaj w pliku /var/lib/suck/get.news.inn opcję -M do wywołania suck'a. 4. Jeśli wysyłane przez nas posty nie pojawiają się w naszej kolejce wyjściowej (tzn. pliki w katalogu /var/spool/news/outgoing/ są puste), to może pomóc dodanie wpisu *, w pliku /etc/news/newsfeeds: ----- ciach ----- ... news.task.gda.pl\ :*,!junk,!test,!to\ :Tf,Wnm: ... ----- ciach ----- 5. Jeśli nasz serwer odsyła z powrotem ściągnięte posty do zdalnego serwera, to przyczyną może być to, że nazwa zdalnego feed'u (np. news.task.gda.pl) jest inna niż nazwa umieszczona w polu Path: (np. tasknews.task.gda.pl). Aby temu zaradzić należy sprawdzić jaka nazwa jest w tym polu (najbardziej z lewej) i zmodyfikować plik /etc/news/newsfeeds w następujący sposób: ----- ciach ----- ... news.task.gda.pl/tasknews.task.gda.pl\ :!junk,!test,!to\ :Tf,Wnm: ... ----- ciach ----- Innym rozwiązaniem tego problemu jest dodanie parametru H1 do opcji feedu, czyli :Tf,Wnm,H1:. 22..88..22.. IInnnn nnaa ccoo ddzziieeńń,, cczzyyllii rrzzeecczzyy oo kkttóórryycchh wwaarrttoo wwiieeddzziieećć 1. Usuwanie grup odbywa się przez ctlinnd rmgroup nazwa.grupy (jeśli wywołujemy suck'a lokalnie, to on sam usunie taką grupę z pliku sucknewsrc, jeśli zdalnie (patrz kompresja) to musimy to zrobić ręcznie), UWAGA!!! Nie należy usuwać grup control, control.cancel, junk, test ani to, inn bardzo źle to znosi. 2. Opisy grup można dodawać w pliku /var/lib/news/newsgroups, np.: ----- ciach ----- ... pl.comp.ogonki O polskich literkach w komputerach. pl.comp.os.linux Linux - system operacyjny dla kazdego. ... ----- ciach ----- Możemy je ściągnąć np. komendą testhost news.task.gda.pl -d > jakiś_plik (jeśli na serwerze z którego ściągamy opisy jest dużo grup (może być ich nawet parędziesiąt tysięcy), to może to potrwać parę minut). 3. Dane o przeterminowaniach (nie dotyczy CNFS) są w pliku /etc/news/expire.ctl, usuwanie przeterminowanych postów można wymusić uruchamiając skrypt /etc/cron.daily/inn-cron-expire (przecież nie każdy ma włączony komputer całą dobę). 4. Aby usunąć limit linii dla postów ściągniętych przez inn'a (już po zaakceptowaniu przez suck'a) należy dodać w pliku /etc/rc.d/rc.news do opcji FLAGS flagę -l0. 5. Jeśli nie chcemy aby inn odrzucał stare posty, powinniśmy zwiększyć wartość parametru artcutoff w pliku /etc/news/inn.conf. 6. Od czasu do czasu można wyczyścić skrytkę pocztową użytkownika news np. z konta root'a komendą su - news -c pine. 7. W pliku /etc/news/inn.conf możemy zmienić parametry organization (bo napis A poorly-installed InterNetNews site w postach wygląda nieelegancko) oraz ustawić pathhost (ułatwia czytanie logów). 8. Jeśli przy próbie połączenia z inn'em pojawia się komunikat You have no permision to talk. Goodbye należy zaktualizować zawartość pliku /etc/news/nnrp.access, np. poniżej dodaliśmy możliwość dostępu z sieci 192.168.1.0: ----- ciach ----- # Default to no access *:: -no- : -no- :!* # Allow access from localhost localhost:Read Post:::* 192.168.1.0/24:Read Post:::* ----- ciach ----- 9. Jeśli chcemy założyć lokalną (local) hierarchię, to wystarczy założyć odpowiednie grupy local.* oraz zmienić wpis w /etc/news/newsfeeds: ----- ciach ----- ... news.task.gda.pl\ :!junk,!test,!to,!local.*\ :Tf,Wnm: # ^^^^^^^^^ ten wpis ... ----- ciach ----- aby nasze lokalne posty nie wędrowały gdzieś po świecie. 10. Jeśli ściągamy newsy z kilku serwerów, to wystarczy jeśli umieścimy w pliku /etc/news/newsfeeds odpowiednie wpisy: ----- ciach ----- ... news.task.gda.pl/news.tpnet.pl,news.icm.edu.pl\ :!junk,!test,!to\ :Tf,Wnm: news.tpnet.pl/news.task.gda.pl,news.icm.edu.pl\ :!junk,!test,!to\ :Tf,Wnm: ... ----- ciach ----- 11. Jeśli przy uruchomieniu suck'a pojawia się komunikat typu Can not open /usr/news/db/history, Skipping warto podlinkować /usr/news/db/ do katalogu z bazą history (zazwyczaj /var/lib/news/). Jeśli zdarza nam się używać kilku serwerów, to suck nie będzie ponownie ściągał postów, które już są w naszym serwerze. 12. Sprawdzenie kolejki postów wychodzących można dokonać poniższym skryptem (jest to przerobiony skrypt newsq z pakietu leafnode): ----- ciach ----- #!/usr/bin/perl use MIME::Words qw(:all); $spooldir = "/var/spool/news"; if ( chdir "$spooldir/outgoing" && opendir( DIR, "." ) ) { @sites = readdir( DIR ); closedir( DIR ); foreach (@sites) { if ( open(F, "< $_") ) { while(<F>) { push @posts, (split)[0]; } close F; } } undef $/; foreach (@posts) { if ( open(F, "< $spooldir/articles/$_") ) { # if ( open(F, "sm $_ |") ) { # zamienić te linie dla CNFS undef $subject, $newsgroups, $from; $_ = <F>; close F; s/\n\n.*//s; s/\r//gs; s/\n\s+/ /sg; foreach ( split( /\n/, $_ ) ) { $subject = $1 if ( /^Subject:\s+(.*)/i ); $newsgroups = $1 if ( /^Newsgroups:\s+(.*)/i ); $from = $1 if ( /^From:\s+(.*)/i ); } if ( $subject ne "" && $from ne "" && $newsgroups ne "" ) { $from=decode_mimewords($from); $newsgroups=decode_mimewords($newsgroups); $subject=decode_mimewords($subject); print $from . " in " . $newsgroups . "\n\t" . $subject . "\n"; } } } } ----- ciach ----- 13. Jeśli chcemy aby było robione lokalne archiwum (np. grup z hierarchii pl.comp), to wystarczy jeśli dopiszemy do pliku /etc/news/newsfeeds: ----- ciach ----- source-archive:!*,pl.comp.*\ :Tc,Wn\ :/usr/bin/archive -i /var/spool/news/archive/INDEX ----- ciach ----- Archiwum to możemy czytać używając tin'a, np.: export TIN_SPOOLDIR=/var/spool/news/archive export TIN_LIBDIR=/var/lib/news tin 14. Jeśli mamy już wcześniej ściągnięte pliki z postami, to możemy spróbować przenieść te zasoby do inn'a, np. komendą: ----- ciach ----- (for i in [0-9]*; do cat $i; echo .; done) \ | filter2rnews | rnews -N -vvv -S localhost ----- ciach ----- wykonywaną po kolei w każdym katalogu (z postami). 33.. IInnnnee ddookkuummeennttyy zzwwiiąązzaannee zz tteemmaatteemm ˇ Dokumentacja dostarczana z pakietem (część może być dostępna tylko z pakietem ze źródłami), ˇ INN FAQ <ftp://ftp.xlink.net/pub/news/docs/>, ˇ Newsy w Polsce <http://www.usenet.pl>, ˇ Newsy na świecie <http://www.usenet.org>, ˇ Pakiet <http://home.pages.de/~lamepage/linux/news/sp4si-0.96.tar.gz> załatwiający modemowcom sprawę "inn+suck z kilku serwerów" tak, że prościej nie można, ˇ Pakiet <http://www.media-com.com.pl/~radecki> umożliwiający ściąganie skompresowanych paczek newsów przez WWW. 44.. DDoo zzrroobbiieenniiaa ˇ Transport newsów po UUCP. 55.. PPrraawwaa aauuttoorrsskkiiee//lleeggaallnnoośśćć Prawa autorskie należą do Š Rafała Czeczótki <mailto:michu@amg.gda.pl>. Dokument ten jest rozpowszechniany na podstawie GPL (Gnu Public License). Aby otrzymać kopię tej licencji napisz do Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Znaki towarowe należą do ich właścicieli. Nie ma żadnych gwarancji co do dokładności czy przydatności informacji zawartych w tym dokumencie. ��������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/IO-Programming.pl.txt���������������������������������������������0100664�0001750�0001750�00000076654�07104371340�021310� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Linux I/O port programming mini-HOWTO Autor: Riku Saikkonen Riku.Saikkonen@hut.fi v, 28 Grudnia 1997 Wersja polska: Michał Szwaczko michalsz@lena.zsg.lublin.pl v1.0, 1 Marca 2000 Ten dokument HOWTO opisuje programowanie sprzętowych rejestrów wejścia/wyjścia oraz zatrzymywanie na niewielkie okresy czasu pracy programów użytkownika działających na Linuxie pracującym w architek­ turze Intel x86. Dokument został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/mini ______________________________________________________________________ Spis treści 1. Wstęp 2. Używanie rejestrów wejścia/wyjścia w programach napisanych w C 2.1 Metoda zwykła 2.2 Metoda alternatywna: /dev/port 3. Przerwania (IRQ) oraz dostęp DMA 4. Mierzenie czasu z dużą dokładnością 4.1 Opóźnienia 4.1.1 Opóźnianie za pomocą funkcji sleep() i usleep() 4.1.2 Opóźnianie za pomocą funkcji nanosleep() 4.1.3 Opóźnianie za pomocą operacji I/O na porcie 4.1.4 Opóźnianie za pomocą instrukcji asemblerowych 4.1.5 Instrukcja rdtsc w Pentium 4.2 Mierzenie czasu 5. Inne języki programowania 6. Niektóre przydatne porty 6.1 Port równoległy 6.2 Port joysticka/Port gier 6.3 Port szeregowy 7. Porady 8. W razie kłopotów 9. Przykładowy program 10. Wyrazy uznania 11. Od tłumacza ______________________________________________________________________ 11.. WWssttęępp Ten dokument HOWTO opisuje programowanie sprzętowych rejestrów wejścia/wyjścia oraz zatrzymywanie na niewielkie okresy czasu pracy programów użytkownika działających na Linuxie pracującym w architekturze Intel x86. Dokument ten jest następcą bardzo małego IO- port mini-HOWTO tego samego autora. Dokument został napisany przez Riku Saikkonen. Copyright 1995-1997 Riku Saikkonen. Po szczegóły odnośnie praw autorskich zobacz Linux HOWTO copyright <http://sunsite.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/COPYRIGHT>. Jeśli chcesz coś poprawić lub dodać to śmiało możesz do mnie pisać (Riku.Saikkonen@hut.fi)... Zmiany w stosunku do poprzedniej wersji (30 Marca 1997): ˇ Wyjaśnienie kwestii odnoszących się do inb_p/outb_p oraz portu 0x80 ˇ Usunięcie informacji o udelay(), jako że nanosleep() zapewnia jaśniejszy sposób jego użycia. ˇ Przekształcenie dokumentu na format SGML-Linuxdoc oraz niewielka reorganizacja. ˇ Wiele mniejszych dodatków i modyfikacji. 22.. UUżżyywwaanniiee rreejjeessttrróóww wweejjśścciiaa//wwyyjjśścciiaa ww pprrooggrraammaacchh nnaappiissaannyycchh ww CC 22..11.. MMeettooddaa zzwwyykkłłaa Procedury dostępu do portów (rejestrów) we/wy umieszczone są w /usr/include/asm/io.h (lub w linux/include/asm-i386/io.h w źródłach jądra) Procedury te występują w formie makr do wstawienia a więc wystarczy że zrobisz #include <asm/io.h>; nie potrzebujesz już żadnych dodatkowych bibliotek. Z powodu ograniczeń w gcc (obecna wersja 2.7.2.3 i poniżej) oraz egcs (wszystkie wersje) programy wykorzystujące te procedury _m_u_s_z_ą być kompilowane z włączoną optymalizacją (gcc -O1 lub więcej) lub możesz też zrobić #define extern bez parametru (puste) zanim włączysz <asm/io.h>. Do odpluskwiania (debugging) możesz użyć gcc -g -O (przynajmniej w nowoczesnych wersjach gcc), chociaż optymalizacja może spowodować, iż debugger będzie zachowywał się trochę dziwnie. Jeśli to sprawia Ci kłopot, procedury korzystające z rejestrów we/wy wstaw do osobnego pliku i tylko ten plik poddaj optymalizacji podczas kompilacji. Zanim dostaniesz się do jakiegokolwiek portu we/wy, musisz nadać swemu programowi uprawnienia do tego. Robi się to wywołując funkcję ioperm() (zdeklarowaną w unistd.h i zdefiniowaną w jądrze) gdzieś w okolicach początku programu (przed jakimkolwiek dostępem do portów) Składnia tego polecenia to ioperm(skąd,ile,włacz) gdzie skąd jest pierwszym portem do którego chcesz mieć dostęp a ile liczbą kolejnych portów do których chcesz mieć dostęp. Dla przykładu ioperm(0x300, 5, 1) da ci dostęp do portów od 0x300 do 0x304 (w sumie pięc portów). Ostatni argument to wartośc logiczna mówiąca o tym czy program otrzyma dostęp do portów (1 - prawda) bądź nie (0 - fałsz). Możesz wywoływać ioperm() wiele razy aby włączyć wiele nieciągłych obszarów rejestrów. Zajrzyj do ioperm(2) w podręczniku systemowym man po szczegóły odnośnie składni. Wywołanie ioperm() wymaga aby twój program miał uprawnienia root'a: wobec czego albo musisz uruchamiać go jako root albo dać mu suid root'a. Po wywołaniu ioperm() możesz już zrezygnować z uprawnień root'a. Nie wymaga się abyś w sposób jawny wyłączał uprzywilejowany dostęp do portów (czyli ioperm(....,0)) na końcu programu; robi się to automatycznie wraz z zakończeniem procesu. Funkcja setuid() w wypadku użytkownika bez przywilejów root'a nie odbiera dostępu do portów przydzielonego przez ioperm() ale funkcja fork() już tak. (proces potomny nie dostaje dostępu ale proces-rodzic go zachowuje) ioperm() może jedynie umożliwić dostęp do portów od 0x000 do 0x3FF. Jeśli chcesz używać innych portów (wyższych) musisz użyć funkcji iopl() (która daje ci dostęp do wszystkich portów od razu) Użyj argumentu 3 (czyli iopl(3)) aby dać swemu programowi dostęp do _w_s_z_y_s_t_k_i_c_h portów (bądź ostrożny - dostęp do niewłaściwych portów może wywołać najróżniejsze usterki komputera). Musisz mieć uprawnienia root'a aby wywołać iopl(). Po szczególy zajrzyj do podręcznika systemowego man: iopl(2) Teraz właściwy dostęp do portów.. Aby odczytać bajt (8 bitów) z portu, wywołaj funkcję inb(port), zwraca ona odczytaną wartość. Aby zapisać bajt do portu wywołaj outb(wartość,port) (zwróć uwagę na kolejność argumentów) Aby odczytać słowo (16 bitów) z portów x i x+1 (jeden bajt z każdego łączone w słowo za pomocą asemblerowej instrukcji inw) wywołaj inw(x) Aby zapisać słowo do tych dwóch portów użyj outw(wartość,x) Jeśli nie jesteś pewien której instrukcji użyć (operującej bajtem czy słowem) prawdopodobnie będziesz chciał użyć inb() i outb() - większość urządzeń zaprojektowana jest z bajtowo- zorientowanym dostępem do portów. Zauważ, że wykonanie każdej instrukcji operującej na portach zajmuje co najmniej mikrosekundę. Makra inb_p(),outb_p(),inw_p() i outw_p() działają identycznie z tymi powyżej ale dodatkowo wykonują opóźnienie (około 1 mikrosekundy) po dostępie do portu. Możesz spowodować że opóźnienie będzie wartości ok 4 mikrosekund jeśli zrobisz #define REALLY_SLOW_IO zanim włączysz <asm/io.h> Makra te zwykle (chyba że zrobisz #define SLOW_IO_BY_JUMPING, które jest raczej mniej dokładne) używają zapisu do portu 0x80 zby uzyskać opóźnienie, wobec czego musisz najpierw dać dostęp do portu 0x80 za pomocą ioperm(). Zapisy do portu 0x80 nie powinny mieć wpływu na żadną częsć systemu. Jeśli chcesz poznać bardziej wszechstronne metody dostępu do portów czytaj dalej. W stosunkowo nowych dystrybucjach podręcznika systemowego man znajdują się strony ioperm(2), iopl(2) oraz powyższych makr. 22..22.. MMeettooddaa aalltteerrnnaattyywwnnaa:: //ddeevv//ppoorrtt Innym sposobem dostępu do rejestrów I/O jest otworzenie urządzenia /dev/port do zapisu lub/i odczytu za pomocą funkcji open() (/dev/port to urządzenie znakowe, numer główny 1, poboczny 4) (Funkcje f*() z biblioteki stdio mają wewnętrzne buforowanie więc ich unikaj) Następnie wywołaj lseek() do odpowiedniego bajtu w tym pliku (pozycja 0 = port 0x00 pozycja 1 = port 0x01 itd) i czytaj (read()) lub zapisuj (write()) bajt lub słowo. Oczywiście aby to zadziałało twój program musi mieć możliwośc czytania i zapisywania do /dev/port. Metoda ta jest prawdopodobnie wolniejsza od metody normalnej pokazanej powyżej ale nie potrzebuje ani optymalizacji programu ani wywoływania ioperm(). Nie potrzebuje też uprawnień root'a jeśli nadasz zwykłym użytkownikom lub jakiejś grupie prawa dostępu do /dev/port - jest to jednak nieporządane z punktu widzenia bezpieczeństwa systemu, jako że możliwe jest wtedy uszkodzenie systemu, a może nawet zdobycie przywilejów root'a przez bezpośredni dostęp za pomocą /dev/port do dysków, kart sieciowych itp. 33.. PPrrzzeerrwwaanniiaa ((IIRRQQ)) oorraazz ddoossttęępp DDMMAA Nie można bezpośrednio korzystać z IRQ lub DMA w programach użytkownika. Musisz napisać sterownik/moduł do jądra; zajrzyj do The Linux Kernel Hacker's Guide po szczegóły a także do źródeł jądra po przykłady. W programach użytkownika nie można też przerwań wyłączać. 44.. MMiieerrzzeenniiee cczzaassuu zz dduużżąą ddookkłłaaddnnoośścciiąą 44..11.. OOppóóźźnniieenniiaa Przede wszystkim trzeba stwierdzić że z powodu wielozadaniowej natury Linuxa nie można zagwarantować że procesy w trybie użytkownika będą mieć dokładną kontrolę czasu. Twój proces może zostać rozpoczęty w każdej chwili i może mu to zająć od 10 milisekund do kilku sekund (na bardzo obciążonych systemach). Jednakże, dla większości aplikacji używających portów I/O nie ma to większego znaczenia. Aby zminimalizować to zjawisko możesz nadać swemu procesowi wyższy priorytet (zobacz nice(2) w podręczniku man) lub używać zarządzania procesami w czasie rzeczywistym (patrz niżej) Jeśli chcesz berdziej precyzyjnie odmierzać czas niż pozwalają ci na to procesy w trybie użytkownika, możesz skorzystać ze wsparcia dla procesów użytkownika w czasie rzeczywistym. Jądra 2.x.x mają niewielkie wsparcie dla czasu rzeczywistego; zobacz sched_setscheduler(2) w podręczniku man. Jest również specjalne jądro które ma zaawansowane wsparcie dla czasu rzeczywistego. Zobacz <http://luz.cs.nmt.edu/~rtlinux> aby uzyskać więcej informacji na ten temat. 44..11..11.. OOppóóźźnniiaanniiee zzaa ppoommooccąą ffuunnkkccjjii sslleeeepp(()) ii uusslleeeepp(()) Zacznijmy teraz od łatwiejszych wywołań. Jeśli chcesz opóźnień rzędu sekund to najpewniej jest użyć sleep(). Dla opóźnień rzędu przynajmniej dziesiątek milisekund (10ms wydaje się być najmniejszym możliwym opóźnieniem) powinieneś użyć usleep(). Funkcje te oddają czas innym procesom a więc czas procesora nie jest marnowany. Zajrzyj do sleep(3) i usleep(3) w podręczniku man po szczegóły dotyczące tych funkcji. Jeśli potrzebujesz opóźnień mniejszych niż 50 milisekund (w zależności od prędkości procesora i samego komputera oraz obciążenia systemu) oddawanie czasu procesora zajmuje zbyt wiele czasu ponieważ linuxowy zarządca procesów (w architekturze x86) zwykle zabiera około 10-30 milisekund zanim zwróci kontrolę do twojego procesu. Z tego powodu dla małych opóźnień usleep() zwykle opóźnia o trochę więcej czasu niż podajesz w parametrze a przynajmniej około 10 ms. 44..11..22.. OOppóóźźnniiaanniiee zzaa ppoommooccąą ffuunnkkccjjii nnaannoosslleeeepp(()) W serii jąder 2.0.x znajduje się nowa funkcja systemowa nanosleep() (zobacz nanosleep(2) w podręczniku man) która pozwala opóźniać lub zatrzymywać proces na krótkie okresy czasu (kilka mikrosekund lub więcej). Dla uzyskania opóźnień <=2ms, jeśli (i tylko wtedy) twój proces jest ustawiony na zarządzanie z wsparciem dla czasu rzeczywistego (poprzez sched_setscheduler()), nanosleep() używa pętli opóźniającej; w przeciwnym razie zatrzymuje proces tak jak usleep(). Pętla opóźniająca używa udelay() (wewnętrznej funkcji jądra użtwanej przez wiele jego modułów) a długość pętli jest obliczana na podstawie wartości BogoMips (prędkość tego rodzaju pętli opóźniającej jest jedną z rzeczy którą BogoMips dokładnie mierzy) Zobacz /usr/include/asm/delay.h po szczegóły odnośnie działania tego mechanizmu. 44..11..33.. OOppóóźźnniiaanniiee zzaa ppoommooccąą ooppeerraaccjjii II//OO nnaa ppoorrcciiee Inną metodą opóźniania o niewielkie ilości mikrosekund są operacje I/O na portach. Czytanie/zapisywanie jakiegokolwiek bajtu z/do portu 0x80 (patrz wyżej jak to się robi) powinno dać opóźnienie prawie dokładnie 1 mikrosekundy bez względu na typ procesora i jego prędkość. Możesz tak robić wiele razy aby uzyskać opóźnienie rzędu kilku mikrosekund. Sposób ten nie powinien wywoływać żadnych szkodliwych efektów ubocznych na żadnym standardowym komputerze (nawet niektóre moduły jądra go używają). W ten sposób uzyskują opóźnienie funkcje {in|out}[bw]_p() (zobacz asm/io.h). W zasadzie, instrukcje I/O na większości portów w obszarze 0-0x3ff zbierają prawie dokładnie 1 mikrosekundę, więc jeśli na przykład używasz bezpośrednio portu równoległego po prostu wykonaj kilka razy inb() z tego portu aby uzyskać opóźnienie. 44..11..44.. OOppóóźźnniiaanniiee zzaa ppoommooccąą iinnssttrruukkccjjii aasseemmbblleerroowwyycchh Jeśli znasz typ procesora i prędkośc zegara w komputerze na którym będzie działał twój program, możesz na stałe uzyskać krótsze opóźnienia poprzez zastosowanie pewnych rozkazów asemblerowych (pamiętaj jednak że twój proces może się zacząć w dowolnym momencie wobec czego opóźnienia te mogą być większe od czasu do czasu) W tabeli poniżej wewnętrzna prędkość procesora określa liczbę cykli np dla procesora 50MHz (np. 486DX-50 lub 486DX2-50) jeden cykl zegara zajmuje 1/50000000 sekundy. (200 nanosekund). Instrukcja cykle zegara na 386 cykle zegara na 486 nop 3 1 xchg %ax,%ax 3 3 or %ax,%ax 2 1 mov %ax,%ax 2 1 add %ax,0 2 1 (Przykro mi ale niewiele wiem o Pentium. Pewnie podobnie do 486. Nie mogę znaleźć żadnej instrukcji która zajmowała by tylko jeden cykl zegara na 386. Jeśli możesz, używaj instrukcji jednocyklowych, w prze­ ciwnym razie architektura potokowa (pipelining) używana w nowoczesnych procesorach może dać jeszcze krótsze czasy) Rozkazy nop i xchg z tabeli powyżej nie powinny powodować żadnych skutków ubocznych. Reszta może modyfikować rejestr znaczników ale nie powinno mieć to znaczenia bo gcc powinno to wykryć. Użycie nop jest dobrym wyborem. Aby skorzystać z powyższego, trzeba w swoim programie wywołać funkcję asm("instrukcja") Składnia instrukcji jest taka sama jak w tabeli powyżej. Jeśli chcesz użyć kilku instrukcji w jednym wywołaniu funkcji asm rozdziel je średnikami. Na przykład asm("nop ; nop ; nop ; nop") wywoła cztery razy instrukcję nop opóźniając nasz program o 4 cykle na 486 lub Pentium (lub 12 cykli na 386) Funkcja asm() jest przez gcc tłumaczona na wstawkę w asemblerze a więc nie ma zagrożenia przekroczenia limitu wywołań funkcji. Opóźnienia krótsze niż jeden cykl zegara nie są możliwe w architekturze Intel i386. 44..11..55.. IInnssttrruukkccjjaa rrddttsscc ww PPeennttiiuumm Jeśli masz Pentium, możesz odczytać ilość cykli zegara które upłynęły od ostatniego uruchomienia komputera. Robi się to za pomocą takiego kodu w C: ______________________________________________________________________ extern __inline__ unsigned long long int rdtsc() { unsigned long long int x; __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x)); return x; } ______________________________________________________________________ Możesz odczytywać tą wartość w celu opóźniania o dowolną ilość cykli. 44..22.. MMiieerrzzeenniiee cczzaassuu Dla czasów rzędu sekundy prawdopodobnie najłatwiej będzie użyć funkcji time(). Dla bardziej dokładnych pomiarów: gettimeofday() jest dokładne co do mikrosekundy (ale zobacz wyżej o zarządzaniu procesami) Dla Pentium fragment kodu rdtsc powyżej jest dokładny co do cykla zegarowego. Jeśli chcesz aby twój proces dostawał jakiś sygnał po jakimś czasie, użyj settimer() lub alarm(). Zajrzyj do stron podręcznika man dotyczących tych funkcji. 55.. IInnnnee jjęęzzyykkii pprrooggrraammoowwaanniiaa Opis powyżej koncentruje się na języku C. Powinien bezpośrednio odnośić się też do C++ i Objective C. W asemblerze musisz wywołać ioperm() lub iopl() tak jak w C ale potem możesz już używać instrukcji czytania/zapisywania portów bezpośrednio. W innych językach, jeśli nie możesz wstawiać do programu wstawek w asemblerze lub C bądź jeśli nie możesz użyć funkcji systemowych opisanych powyżej, najłatwiej będzie napisać osobny program w C ze wszystkimi operacjami na portach I/O i wszystkimi opóźnieniami których potrzbujesz po czym skompilować go i zlinkować z resztą twojego programu. Możesz też użyć /dev/port jak to opisano powyżej. 66.. NNiieekkttóórree pprrzzyyddaattnnee ppoorrttyy Teraz trochę informacji programistycznych dotyczących zwykłych portów które mogą być bezpośrednio użyte do operacji I/O w logice TTL (lub CMOS). Jeśli chcesz używać tych lub innych zwykłych portów zgodnie z ich normalnym przeznaczeniem (np chcesz sterować normalną drukarką bądź modemem) powinieneś najpewniej użyć istniejących sterowników (zwykle dołączonych do jądra) zamiast programować porty bezpośrednio jak to opisuje ten dokument. Ten rozdział jest dla tych którzy chcą podłączyć do standardowych portów komputera wyświetlacze LCD, silniki krokowe lub inne niestandardowe urządzenia elektroniczne. Jeśli chcesz sterować jakimś urżądzeniem produkowanym na rynek masowy, np. skanerem (które to urządzenie jest już na rynku jakiś czas) poszukaj raczej istniejącego sterownika Linuxowego. Dobrym miejscem aby zacząć jego poszukiwania jest Hardware-HOWTO www.hut.fi/Misc/Electronics jest dobrym źródłem informacji dotyczących podłączania urządzeń do komputera (jak i samej elektroniki w ogóle) 66..11.. PPoorrtt rróówwnnoolleeggłłyy Adres bazowy portu równoległego (zwany poniżej >BASE) to 0x3bc dla /dev/lp0, 0x378 dla /dev/lp1 i 0x278 dla /dev/lp2. Jeśli chcesz sterować tylko czymś co działa jak normalna drukarka powinieneś zapoznać się z Printing-HOWTO. Oprócz standardowego trybu tylko-do-zapisu opisanego powyżej, w większości portów równoległych istnieje jeszcze rozszeżony tryb dwukierunkowy. Po informacje na ten temat oraz na temat nowych trybów ECP/EPP (jak i samego standardu IEEE 1284 w ogóle) zajrzyj na http://www.fapo.com oraz na http://www.senet.com.au/~cpeacock/parallel.htm Pamiętaj, że skoro nie możesz używać DMA i IRQ w programach użytkownika, aby użyć trybów ECP/EPP będziesz prawdopodobnie musiał napisać własny sterownik do jądra. Zdaje się, że ktoś już pisze taki sterownik ale nie znam szczegółów. Port BASE+0 (port danych) kontroluje sygnały danych portu (D0 do D7 dla bitów od 0 do 7) Stany: 0=niski (0 V), 1=wysoki (5 V). Zapis do tego portu zatrzaskuje dane na pinach. Odczyt zwraca ostatnio zapisaną daną w trybie normalnym bądź rozszeżonym lub dane z innego urządzenia w rozszeżonym trybie odczytu. Port BASE+1 (port statusu) jest tylko-do-odczytu i zwraca stan poniższych sygnałów wejsciowych. ˇ Bity 0 i 1 są zarezerwowane. ˇ Bit 2 Status IRQ (nie jest to sygnał z pina - nie wiem w jaki sposób to działa) ˇ Bit 3 ERROR (1=stan wysoki) ˇ Bit 4 SLCT (1=stan wysoki) ˇ Bit 5 PE (1=stan wysoki) ˇ Bit 6 ACK (1=stan wysoki) ˇ Bit 7 -BUSY (0=stan wysoki) (Nie jestem pewien stanów tych bitów.) Port BASE+2 (Port kontrolny) jest tylko do zapisu (odczyt zwraca ostatnio zapisaną wartość) i kontroluje poniższe sygnały kontrolne: ˇ Bit 0 -STROBE (0=stan wysoki) ˇ Bit 1 AUTO_FD_XT (1=stan wysoki) ˇ Bit 2 -INIT (0=stan wysoki) ˇ Bit 3 SLCT_IN (1=stan wysoki) ˇ Bit 4 gdy ustawiony na 1 - włącza IRQ portu równoległego (co ma miejsce przy przejsciu sygnału ACK ze stanu niskiego do wysokiego) ˇ Bit 5 kontroluje kierunek danych w trybie rozszeżonym (0 = zapis, 1 = odczyt) i jest całkowicie tylko-do-zapisu. (Odczyt nie zwraca niczego użytecznego dla tego bitu). ˇ Bity 6 i 7 są zarezerwowane. (Znowu nie jestem pewien stanów.) Rozkład wyprowadzeń. (25 pinowe żeńskie gniazdo typu D) (i=wejscie, o=wyjscie): 1io -STROBE, 2io D0, 3io D1, 4io D2, 5io D3, 6io D4, 7io D5, 8io D6, 9io D7, 10i ACK, 11i -BUSY, 12i PE, 13i SLCT, 14o AUTO_FD_XT, 15i ERROR, 16o -INIT, 17o SLCT_IN, 18-25 Ground Specyfikacja IBM twierdzi że piny 1,14,16 i 17 (wyjscia kontrolne) mają otwarte kolektory podpięte do +5V przez 4.7 kiloomowe oporniki (dostarcza 20 mA, pobór 0.55 mA, wyjscie w stanie wysokim +5V minus to co podpięte) Reszta pinów pobiera 24 mA, dostarcza 15 mA a wyjscie w stanie wysokim to minimum 2.4V. Stan niski dla wszystkich to maximum 0.5V. Porty równoległe inne niż IBM prawdopodobnie odbiegają od tego standardu. Po więcej informacji na ten temat zajrzyj na http://www.hut.fi/Misc/Electronics/circuits/lptpower.html Na koniec jeszcze ostrzeżenie: Uważaj z uziemieniem. Zepsułem już parę portów przez podłączanie się do nich gdy komputer był włączony. Dobrze jest w takim wypadku używać portów równoległych nie zintegrowanych z płytą główną (zwykle można dodać drugi port równoległy do komputera za pomocą taniej standardowej karty I/O (tzw ajołki - tłum); po prostu wyłącz porty których nie potrzebujesz i ustaw adres portu na karcie IO na jakiś wolny adres. Nie musisz się martwić o IRQ dla portu równoległego gdyż normalnie się go nie używa) 66..22.. PPoorrtt jjooyyssttiicckkaa//PPoorrtt ggiieerr Port gier jest umieszczony pod adresami 0x200-0x207. Jeśli chcesz kontrolować normalny joystick to jest do tego specjalny sterownik w jądrze, zobacz <ftp://sunsite.icm.edu.pl/sunsite/pub/Linux/kernel/patches> Plik nazywa się joystick-*. Rozkłąd wyprowadzeń od stony portu (15-pinowe żeńskie gniazdo typu D- shell): ˇ piny 1,8,9,15: +5 V (zasilanie) ˇ piny 4,5,12: Masa ˇ piny 2,7,10,14: Wejscia cyfrowe (Odpowiednio: BA1, BA2, BB1, i BB2) ˇ piny 3,6,11,13: Wejscia ``analogowe'' (Odpowiednio: AX, AY, BX, i BY) Piny +5V zwykle są podłączane bezpośrednio do linii zasilania na płycie głównej, więc, w zależności od płyty, zasilacza i portu ,powinny dawać całkiem sporo mocy. Cyfrowe wejścia są używane dla przycisków joysticków które możesz sobie podłączyć do portu (joystick A i B, dwa przyciski każdy) Wejścia te powinny być na poziomach TTL a ich stan możesz odczytać z portu statusu (zobacz poniżej) Prawdziwy joystick zwraca stan niski (0V) kiedy przycisk jest naciśnięty a stan wysoki (+5V z pinów zasilających przez jednokiloomowy rezystor) kiedy jest zwolniony. Tak-zwane wejścia analogowe w istocie mierzą opór. Port joysticka ma przyłączony do tych 4 wejść poczwórny multiwibrator (quad one-shot multivibrator) (scalak 558) Na każdym wejściu mamy rezystor 2.2k pomiędzy pinem a wejściem multiwibratora oraz kondensator 0.01uF pomiędzy wyjściem multiwibratora a masą. Prawdziwy joystick ma jeszcze potencjometr dla każdej z osi (X i Y) umieszczony pomiędzy +5V a właściwym pinem wejsćiowym (AX lub AY dla joysticka A oraz BX lub BY dla joysticka B) Kiedy jest aktywny, multiwibrator ustawia swoje wyjścia w stan wysoki (5V) i oczekuje aż każdy z kondensatorów osiągnie 3.3V po czym ustawia w stan niski odpowiednie linie wyjściowe. Dlatego właśnie czas trwania okresu kiedy multivibrator jest w stanie wysokim jest proporcjonalny do oporu potencjometru joysticka. (czyli pozycji joysticka na odpowiedniej osi) Relacja wygląda tak: R = (t - 24.2) / 0.011, gdzie R to opór potencjometru w omach a t to czas trwania stanu wysok­ iego w sekundach. Wobec tego aby odczytać wejśćia analogowe musisz najpierw uaktywnić multiwibrator (za pomocą zapisu do odpowiedniego portu - patrz niżej) po czym odczytywać stan czterech osi (za pomocą następujących po sobie odczytów z portów) aż zmienią stan z wysokiego na niski po czym mierzysz czas trwania stanu wysokiego. Odczytywanie takie zużywa sporo czasu procesora, co w systemie wielozadaniowym takim jak Linux nie będącym systemem czasu rzeczywistego powoduje niedokłądność rezultatów gdyż nie można odczytywać portu stale (chyba że użyjesz sterownika niskopoziomowego i wyłączysz przerwania na czas odczytów - ale to zabiera jeszcze więcej czasu procesora). Jeśli wiesz że przejście do stanu niskiego zajmie sygnałowi dłużśzy czas (rzędu 10 ms) możesz użyć usleep() przed odczytem oddając w ten sposób czas procesora innym procesom. Jedynym portem do którego potrzebujesz mieć dostęp to port 0x201 (inne porty zachowują się identycznie bądź nie robią nic). Każdy zapis (nie ważne czego) do tego portu uaktywnia multiwibrator. Odczyt z tego portu zwraca stan poszczególnych sygnałów wejściowych. ˇ Bit 0: AX (stan (1=stan wysoki) wyjśćia multiwibratora) ˇ Bit 1: AY (stan (1=stan wysoki) wyjśćia multiwibratora) ˇ Bit 2: BX (stan (1=stan wysoki) wyjśćia multiwibratora) ˇ Bit 3: BY (stan (1=stan wysoki) wyjśćia multiwibratora) ˇ Bit 4: BA1 (wejśćie cyfrowe, 1=stan wysoki) ˇ Bit 5: BA2 (wejśćie cyfrowe, 1=stan wysoki) ˇ Bit 6: BB1 (wejśćie cyfrowe, 1=stan wysoki) ˇ Bit 7: BB2 (wejśćie cyfrowe, 1=stan wysoki) 66..33.. PPoorrtt sszzeerreeggoowwyy Jeśli urządzenie z którym się komunikujesz przypomina coś co działą jak RS-232 możęsz do tego celu użyć portu szeregowego. Linuxowy sterownik portu szeregowego powinien wystarczyć w prawie wszystkich zastosowaniach (nie powinienneś mieć potrzeby programować port bezpośrednio, a nawet jeśli chciałbyś to robić prawdopodobnie musiałbyś napisać własny moduł do jądra.) Sterownik Linuxowy jest całkiem wszechstronny a więc używanie na przykład niestandardowych prędkości portu nie powinno być problemem. Jeśli chcesz dowiedzieć się więcej o programowaniu portu szeregowego w Linuxie zobacz stronę termios(3) w podręczniku systemowym man, źródła sterownika (linux/drivers/char/serial.c), i <http://www.easysw.com/~mike/serial/index.html>. 77.. PPoorraaddyy Jeśli zależy Ci na dobrej obsłudze analogowej transmisji I/O, możesz podłączyć do portu równoległego przetworniki analogowo-cyfrowe bądż cyfrowo-analogowe (ADC,DAC).(Podpowiedź: weż zasilanie z portu joysticka bądż z wolnej wtyczki zasilania dysku twardego wyprowadzonej na zewnątrz obudowy, chyba że masz urządzenie nie wymagające dużej mocy, wtedy możesz wziąść zasilanie z samego portu. Możesz też użyć zewnętrznego zasilacza.) Możesz też kupić kartę przetworników analogowo-cyfrowych i cyfrowo analogowych (AD/DA) (większość starszych/wolniejszych takich kart jest sterowana za pomocą portów I/O) Jeśli nie przeszkadza ci małą ilość kanałów (1 lub 2) niedokładność oraz (możliwe) złe zerowanie, dobra (i szybka) będzie tania karta dżwiękowa wspierana przez Linuxowy sterownik. W czułych urządzeniach analogowych niewłaściwe uziemienie możę spowodować błędy na wejściach bądź wyjściach. Jeśli przytrafi Ci się coś takiego, możesz spróbować odizolować elektrycznie urządzenie od komputera przez użycie transoptorów (optocouplers) na _w_s_z_y_s_t_k_i_c_h sygnałach pomiędzy Twoim urządzeniem a komputerem. Aby zapewnić lepszą izolację zasilanie do transoptorów spróbuj wziąść z komputera (wolne sygnały na porcie mogą dać wystarczającą ilość mocy) Jeśli szukasz oprogramowania do projektowania płytek drukowanych na Linuxa to jest darmowa aplikacja która nazywa się Pcb i powinna sprawiać się dobrze, przynajmniej wtedy kiedy nie robisz czegoś bardzo skomplikowanego. Załączona jest ona do wielu dystrybucji Linuxa a dostępna na <ftp://sunsite.icm.edu.pl/pub/Linux/sunsite/apps/circuits/> (plik pcb-*). 88.. WW rraazziiee kkłłooppoottóóww PP11.. Dostaje błąd segmentacji pamięci kiedy dobieram się do portów OO11.. Albo twój program nie ma uprawnień root'a bądź wywołanie ioperm() nie powiodło się z jakiegoś innego powodu. Sprawdź wartość powrotną funkcji ioperm(). Sprawdź również czy rzeczywiśćie operujesz na portach do których uzyskałeś dostęp za pomocą ioperm() (zobacz P3). Jeśli używasz makr opóźniających (inb_p(), outb_p(), itd), pamiętaj aby wywołać ioperm() również wtedy jeśli chcesz uzyskać dostęp do portu 0x80 PP22.. Nie mogę nigdzie znaleść deklaracji funkcji in*(), out*() i gcc narzeka na niezdefiniowane referencje. OO22.. Nie kompilowałeś z włączoną optymalizacją (-O), i w ten sposób gcc nie mógł odnaleźć makr w katalogu asm/io.h. Albo nie włączyłeś w ogóle <asm/io.h> do swojego programu. PP33.. Wywołąnie out*() nie robi nic bądź robi coś dziwnego. OO33.. Sprawdź kolejność parametrów; powinno być outb(wartość, port), a nie outportb(port, wartość) co jest popularne w MS-DOS. PP44.. Chcę sterować standardowym urządzeniem RS-232/portem równoległym/drukarką/joystickiem OO44.. Lepiej będzie jak użyjesz istniejących sterowników z jądra, X serwera lub czegoś innego. Sterowniki te są zazwyczaj dosyć wszechstronne więc nawet lekko niestandardowe urządzenia z nimi współpracują. Zobacz wyżej informacje o zwykłych portach, są tam odnośniki do stosownej dokumentacji. 99.. PPrrzzyykkłłaaddoowwyy pprrooggrraamm Oto kawałek prostego przykładowego programu demonstrującego dostęp do rejestrów I/O. ______________________________________________________________________ /* * example.c: bardzo prosty przykład dostępu do portów I/O * * Program ten nie robi nic użytecznego, zapisuje do portu, czeka i * odczytuje z portu. Kompilacja: gcc -O2 -o example example.c * Uruchamiac jako ./example będąc root'em / #include <stdio.h> #include <unistd.h> #include <asm/io.h> #define BASEPORT 0x378 /* lp1 */ int main() { /* Uzyskaj dostęp do portów */ if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);} /* Ustaw wszystkie bity danych (D0-D7) w stan niski (0) */ outb(0, BASEPORT); /* Zaczekaj chwilkę (100 ms) */ usleep(100000); /* Odczytaj z rejestru statusowego (BASE+1) i wyświetl rezultat */ printf("status: %d\n", inb(BASEPORT + 1)); /* Już nie potrzebujemy portów */ if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);} exit(0); } /* koniec example.c */ ______________________________________________________________________ 1100.. WWyyrraazzyy uuzznnaanniiaa Pomogło mi zbyt wiele osób aby je tutaj wszystkie wymienić, ale wszystkim bardzo dziękuję. Nie odpowiedziałem im wszystkim; przepraszam za to i jeszcze raz dzięki za pomoc. 1111.. OOdd ttłłuummaacczzaa Niniejsze tłumaczenie objęte jest prawami autorskimi Michała Szwaczko. Dozwolone jest rozpowszechnianie i dystrybucja na prawach takich samych jak dokument oryginalny.(Zobacz HOWTO-Copyright) Zmiany wprowadzone przeze mnie do dokumentu polegają na zastąpieniu adresów niektórych serwerów ftp przez ich mirrory w Polsce. Zdaję sobie sprawę że tłumaczenie nie jest wolne od wad i błędów. Jeśli znajdziesz jakieś, proszę napisz do mnie: michalsz@lena.zsg.lublin.pl Oficjalną stroną grupy tłumaczy HOWTO jest http://www.jtz.org.pl ������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/IP-Alias.pl.txt���������������������������������������������������0100664�0001750�0001750�00000027032�07104371340�020042� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ IP Alias mini HOWTO Autor: Harish Pillay h.pillay@ieee.org v?, 13 Stycznia 1997 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v1.0, 5 Kwietnia 1998 Jak ustawić IP Aliasing na maszynie Linuxowej. Dodatkowo jest instrukcja, jak ustawić odbieranie poczty na aliasowanych numerach IP. Dokument został napisany w standardzie ISO-8859-2. Oryginał tego doku­ mentu znajduje się pod adresem http://home.pacific.net.sg/ harish/lin­ uxipalias.html. ______________________________________________________________________ Spis treści 1. Mój system 2. Komendy 3. Pytania i odpowiedzi 4. Podziękowania 5. Od tłumacza (przeczytaj KONIECZNIE!) ______________________________________________________________________ 11.. MMóójj ssyysstteemm 1. Najnowsze jądro (2.0.27 - z ftp://ftp.funet.fi/pub/Linux/kernel/src/v2.0, ale IP Aliasing działa od 1.3.7x. (Najnowsze jądro w tej chwili to 2.0.33 - przyp. tłum.) 2. IP Alias skompilowany jako moduł. W "make config" powinieneś zaznaczyć, że IP Masquerade powinien być skompilowany jako (M)oduł. Zobacz Modules HOWTO (jeżeli istnieje), lub sprawdź informacje w /usr/src/linux/Documentation/modules.txt. 3. Muszę obsługiwać 2 dodatkowe adresy IP, powyżej tych, które zostały mi przydzielone. 4. D-Link DE 620 pocket adapter (nie ważne, działa z każdym obsługiwanym przez Linuxa urządzeniem sieciowym). 22.. KKoommeennddyy 1. Najpierw załaduj moduł IP Alias (możesz pominąć ten krok, jeżeli wkompilowałeś ten moduł w jądro): ___________________________________________________________________ /sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o ___________________________________________________________________ 2. Po drugie, ustaw pętlę zwrotną (loopback), eth0 i wszystkie numery IP zaczynając głównym numerem dla interfejsu eth0: ___________________________________________________________________ /sbin/ifconfig lo 127.0.0.1 /sbin/ifconfig eth0 up /sbin/ifconfig eth0 172.16.3.1 /sbin/ifconfig eth0:0 172.16.3.10 /sbin/ifconfig eth0:1 172.16.3.100 ___________________________________________________________________ 172.16.3.1 jest głównym IP, a .10 i .100 są aliasami. Magiczne polece­ nie to eth0:x, gdzie x=0,1,2,...n dla różnych numerów IP. Główny adres IP nie musi być aliasowany. 3. Po trzecie, ustaw routing. Najpierw do pętli zwrotnej, potem do sieci, a na końcu do różnych adresów IP zaczynając domyślnym (pierwotnie przydzielonym): ___________________________________________________________________ /sbin/route add -net 127.0.0.0 /sbin/route add -net 172.16.3.0 dev eth0 /sbin/route add -host 172.16.3.1 dev eth0 /sbin/route add -host 172.16.3.10 dev eth0:0 /sbin/route add -host 172.16.3.100 dev eth0:1 /sbin/route add default gw 172.16.3.200 ___________________________________________________________________ Koniec. Jako przykładowe numery IP powyżej, używam Prywatnych numerów IP (RFC 1918) dla zilustrowania przykładu. Zamień je na swoje oficjalne lub prywatne adresy IP. Ten przykład zawiera tylko trzy numery IP. Maksymalna liczba, zdefiniowana w /usr/include/linux/net_alias.h, to 256. 256 adresów IP na JEDNEJ karcie to mnóstwo! :-) Oto, jak wygląda mój /sbin/ifconfig: ______________________________________________________________________ lo Link encap:Local Loopback inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:5088 errors:0 dropped:0 overruns:0 TX packets:5088 errors:0 dropped:0 overruns:0 eth0 Link encap:10Mbps Ethernet HWaddr 00:8E:B8:83:19:20 inet addr:172.16.3.1 Bcast:172.16.3.255 Mask:255.255.255.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:334036 errors:0 dropped:0 overruns:0 TX packets:11605 errors:0 dropped:0 overruns:0 Interrupt:7 Base address:0x378 eth0:0 Link encap:10Mbps Ethernet HWaddr 00:8E:B8:83:19:20 inet addr:172.16.3.10 Bcast:172.16.3.255 Mask:255.255.255.0 UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 eth0:1 Link encap:10Mbps Ethernet HWaddr 00:8E:B8:83:19:20 inet addr:172.16.3.100 Bcast:172.16.3.255 Mask:255.255.255.0 UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 ______________________________________________________________________ i /proc/net/aliases: ______________________________________________________________________ device family address eth0:0 2 172.16.3.10 eth0:1 2 172.16.3.100 ______________________________________________________________________ oraz /proc/net/alias_types: ______________________________________________________________________ type name n_attach 2 ip 2 ______________________________________________________________________ Oczywiście rzeczy w /proc/net były utworzone przez komendę ifconfig, a nie ręcznie! 33.. PPyyttaanniiaa ii ooddppoowwiieeddzzii PPyyttaanniiee:: JJaakk mmooggęę uuttrrzzyymmaaćć zzmmiiaannyy,, żżeebbyy nniiee uulleeggłłyy sskkaassoowwaanniiuu ppoo rreessttaarrcciiee ssyysstteemmuu?? OOddppoowwiieeddźź:: Jeżeli używasz init'a BSD lub System V (np. RedHat), możesz zawsze załączyć ustawienia w pliku /etc/rc.d/rc.local. Oto, co mam w moim systemie inicjalizującym (RedHat 3.0.3 i 4.0): 1. Mój /etc/rc.d/rc.local: (skrócony, żeby pokazać odpowiednie części) ___________________________________________________________________ #ustawiamy interfejsy aliasów IP echo "Ustawiam aliasy IP 172.16.3.1, 172.16.3.10, 172.16.3.100 ..." /sbin/ifconfig lo 127.0.0.1 /sbin/ifconfig eth0 up /sbin/ifconfig eth0 172.16.3.1 /sbin/ifconfig eth0:0 172.16.3.10 /sbin/ifconfig eth0:1 172.16.3.100 #ustawiamy routing echo "Ustawiam routing IP ..." /sbin/route add -net 127.0.0.0 /sbin/route add -net 172.16.3.0 dev eth0 /sbin/route add -host 172.16.3.1 eth0 /sbin/route add -host 172.16.3.10 eth0:0 /sbin/route add -host 172.16.3.100 eth0:1 /sbin/route add default gw 172.16.3.200 # ___________________________________________________________________ PPyyttaanniiee:: JJaakk uussttaawwiićć aalliiaassoowwaannąą mmaasszzyynnęę ddoo ooddbbiieerraanniiaa ee--mmaaiillii nnaa rróóżżnnee aalliiaassoowwaannee nnuummeerryy IIPP ((nnaa mmaasszzyynniiee uużżyywwaajjąącceejj sseennddmmaaiill''aa))?? 1. OOddppoowwiieeddźź:: Utwórz (jeżeli nie istnieje) plik nazwany np. /etc/mynames.cw. Nie musi mieć takiej nazwy, nie musi być też w katalogu /etc. 2. W tym pliku umieść oficjalne nazwy domen aliasowanych numerów IP. Jeżeli te IP nie mają domeny, możesz umieścić tu je same. ___________________________________________________________________ /etc/mynames.cw: ---------------- # /etc/mynames.cw - wpisz wszystkie aliasy twojej maszyny; # jest komentarzem. domain.one.net domain.two.com domain.three.org 4.5.6.7 ___________________________________________________________________ 3. W twoim pliku sendmail.cf, w miejscu definiującym makro klasy ,,Fw'', dodaj następujące dane: ___________________________________________________________________ . . . ################## # local info # ################## . . # file containing names of hosts for which we receive email Fw/etc/mynames.cw . . . ___________________________________________________________________ 4. To powinno wystarczyć. Przestestuj nowe ustawienia przez wywołanie sendmaila w trybie testowym, np.: ___________________________________________________________________ ganymede$ /usr/lib/sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter < ruleset> < address> > 0 me@4.5.6.7 rewrite: ruleset 0 input: me @ 4 . 5 . 6 . 7 rewrite: ruleset 98 input: me @ 4 . 5 . 6 . 7 rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 7 rewrite: ruleset 97 input: me @ 4 . 5 . 6 . 7 rewrite: ruleset 3 input: me @ 4 . 5 . 6 . 7 rewrite: ruleset 96 input: me < @ 4 . 5 . 6 . 7 > rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 7 . > rewrite: ruleset 3 returns: me < @ 4 . 5 . 6 . 7 . > rewrite: ruleset 0 input: me < @ 4 . 5 . 6 . 7 . > rewrite: ruleset 98 input: me < @ 4 . 5 . 6 . 7 . > rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 7 . > rewrite: ruleset 0 returns: $# local $: me rewrite: ruleset 97 returns: $# local $: me rewrite: ruleset 0 returns: $# local $: me > 0 me@4.5.6.8 rewrite: ruleset 0 input: me @ 4 . 5 . 6 . 8 rewrite: ruleset 98 input: me @ 4 . 5 . 6 . 8 rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 8 rewrite: ruleset 97 input: me @ 4 . 5 . 6 . 8 rewrite: ruleset 3 input: me @ 4 . 5 . 6 . 8 rewrite: ruleset 96 input: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 3 returns: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 0 input: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 98 input: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 95 input: < > me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 95 returns: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 97 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 > > ___________________________________________________________________ Zauważ, że kiedy testowałem adres me@4.5.6.7, dostarczył pocztę na maszynę lokalną, a me@4.5.6.8 było przekazane do mailera smtp. To jest poprawna odpowiedź. 5. Wszystko jest teraz ustawione. Mam nadzieję, że było to użyteczne dla kogoś. 44.. PPooddzziięękkoowwaanniiaa Dziękuję wszystkim, którzy zrobili tyle świetnej pracy nad Linuxen i IP Aliasingiem, a zwłaszcza Juanowi Jose Ciarlantowi za odpowiedzi na moje pytania. Podziękowania dla asów programowania! Jeżeli ten dokument był dla ciebie użyteczny, lub masz jakieś sugestie o poprawkach, wyślij e-mail na h.pillay@ieee.org. Baw się. 55.. OOdd ttłłuummaacczzaa ((pprrzzeecczzyyttaajj KKOONNIIEECCZZNNIIEE!!)) Ten dokument był pierwotnie w formie htmlowej (dla niewtajemiczonych - tłumacze z JTZ piszą w SGML), zupełnie niedostosowanej do ,,standardu HOWTO'', więc pozwoliłem sobie go do niego dostosować, m.in. podzielić na sekcje. Prawa autorskie tego tłumaczenia należą do tygrys@fidonet.org.pl. Jeżeli masz jakieś pytania lub poprawki dotyczące tego tłumaczenia, daj mi znać. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/IP-Masquerade.pl.txt����������������������������������������������0100664�0001750�0001750�00000204724�07104371340�021105� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Jak założyć maskowanie IP czyli IP-Masquerade. Autor: Ambrose Au, ambrose@writeme.com v1.20, 10 Listopada 1997 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.0, 23 Września 1998 Dokument ten opisuje jak włączyć maskowanie IP na hoście linux-owym, pozwalając tym samym na dostęp do Internetu komputerom podłączonym do tego Linux-a i nie posiadającym własnego adresu IP. ______________________________________________________________________ Spis treści 1. Wprowadzenie. 1.1 Słowo wstępne, komentarze & prawa. 1.2 Prawa autorskie i zastrzeżenia. 1.3 Od tłumacza. 2. Podstawowa wiedza. 2.1 Co to jest maskowanie IP. 2.2 Obecny stan. 2.3 Kto może mieć korzyści z maskowania IP? 2.4 Kto nie potrzebuje maskowania IP? 2.5 Jak działa maskowanie IP? 2.6 Wymagania dla maskowania IP na Linuksie 2.x. 3. Ustawianie maskowania IP. 3.1 Kompilacja jądra dla obsługi maskowania. 3.2 Przypisywanie adresów IP w prywatnej sieci. 3.3 Konfiguracja INNYCH maszyn. 3.3.1 Konfiguracja windows 95. 3.3.2 Konfiguracja Windows for Workgroups 3.11. 3.3.3 Konfiguracja Windows NT. 3.3.4 Konfiguracja systemów unix-owych. 3.3.5 Konfiguracja DOS-a z pakietem NCSA Telnet. 3.3.6 Konfiguracja MacOS z MacTCP. 3.3.7 Konfiguracja systemów MacOS z Open Transport. 3.3.8 Konfiguracja sieci Novell z DNS-em. 3.3.9 Konfiguracja OS/2 Warp. 3.3.10 Konfigurowanie innych systemów. 3.4 Konfiguracja zasad forwardingu IP. 3.5 Testowanie maskowania. 4. Inne sprawy związane z maskowaniem IP i obsługa oprogramowania. 4.1 Problemy z maskowaniem IP. 4.2 Wchodzące serwisy. 4.3 Obsługiwane oprogramowanie klienckie i uwagi o innych ustawieniach. 4.3.1 Oprogramowanie, które działa. 4.3.2 Oprogramowanie nie działające. 4.3.3 Przetestowane platformy/systemy operacyjne jako INNE maszyny. 4.4 Administracja Firewall-em IP (ipfwadm) 4.5 Maskowanie IP i dzwonienie na żądanie. 4.6 Pakiet do przekazywania IPautofw. 5. Różności. 5.1 Zdobywanie pomocy. 5.2 Podziękowania. 5.3 Odwołania. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Dokument ten opisuje jak włączyć maskowanie IP na hoście linux-owym, pozwalając tym samym na dostęp do Internetu komputerom podłączonym do tego Linux-a i nie posiadającym własnego adresu IP. Możliwe jest podłączenie tych komputerów do Linux-a poprzez Ethernet czy inne medium jak linie dzwonione ppp. Dokument ten skupi się na połączeniach Ethernet, ponieważ jest to najbardziej rozpowszechniony przypadek. DDookkuummeenntt tteenn jjeesstt pprrzzeezznnaacczzoonnyy ddllaa uużżyyttkkoowwnniikkóóww jjąąddeerr 22..00..xx.. JJąąddrraa ww wweerrssjjii rroozzwwoojjoowweejj NNIIEE ssąą ooppiissaannee.. 11..11.. SSłłoowwoo wwssttęęppnnee,, kkoommeennttaarrzzee && pprraawwaa.. Założenie maskowania na nowszych jądrach (tj. 2.x) będąc nowym użytkownikiem, jest trochę trudne moim zdaniem. Chociaż jest FAQ i lista dyskusyjna, nie ma żadnego specjalnie dla tego tematu przeznaczonego dokumentu; a pojawiają się na liście dyskusyjnej żądania o takowy. Tak więc zdecydowałem się napisać taki dokument jako punkt oparcia dla nowych użytkowników, i pewnie także coś dla doświadczonych użytkowników, którzy mogą go dalej rozbudowywać. Jeśli sądzisz, że nie robię tego źle, to nie bój się mi tego powiedzieć, jak mogę to zrobić lepiej. Dokument ten jest w dużej mierze oparty o oryginalne FAQ napisane przez Kena Evesa i dużą liczbę pomocnych wiadomości z listy dyskusyjnej o maskowaniu IP. Specjalne podziękowania należą się Panu Matthew Driverowi, którego to list zainspirował mnie do zainstalowania maskowania IP i napisania tego. Nie krępuj się napisać mi jakiekolwiek komentarze na adres ambrose@writeme.com, jeśli podaje jakieś błędne informacje lub jakiejś informacji brakuje. Wasze nieocenione komentarze na pewno wpłyną na przyszłość tego HOWTO! TToo HHOOWWTTOO mmaa bbyyćć ppooddrręęcczznniikkiieemm ppoommooccnnyymm ddoo jjaakk nnaajjsszzyybbsszzeeggoo uussttaawwiieenniiaa mmaasskkoowwaanniiaa IIPP.. PPoonniieewwaażż nniiee mmaamm pprraakkttyykkii ww ppiissaanniiuu tteecchhnniicczznnyycchh ddookkuummeennttóóww,, mmoożżeesszz ssttwwiieerrddzziićć,, żżee iinnffoorrmmaaccjjee zzaawwaarrttee ttuuttaajj nniiee ssąą ttaakkiiee ooggóóllnnee ii oobbiieekkttyywwnnee jjaakk ppoowwiinnnnyy bbyyćć.. NNaajjnnoowwsszzee iinnffoorrmmaaccjjee mmoożżnnaa zznnaalleeźźćć nnaa ssttrroonniiee ZZaassoobbyy IIPP--MMaassqquueerraaddee <<http://ipmasq.home.ml.org/>, którą prowadzę. Jeśli masz jakieś techniczne pytania na temat maskowania, dopisz się do listy dyskusyjnej zamiast wysyłać listy do mnie, ponieważ mój czas jest ograniczony oraz ci którzy rozwijają kod maskowania są bardziej kompetentni do odpowiedzi na te pytania. Najnowsza wersja oryginału tego dokumentu znajduje się na stronie Zasoby IP Masquerade <http://ipmasq.home.ml.org/>, gdzie są także wersje HTML i PostScript: ˇ http://ipmasq.home.ml.org/ ˇ pod adresem http://ipmasq.home.ml.org/index.html#mirror <http://ipmasq.home.ml.org/index.html#mirror> znajduje się lista kopii tej strony ˇ [Od tłumacza] Oczywiście najnowsze wersje tłumaczenia znajdziesz po adresem www.jtz.org.pl <http://www.jtz.org.pl/tlumaczenia.html>. 11..22.. PPrraawwaa aauuttoorrsskkiiee ii zzaassttrrzzeeżżeenniiaa.. Prawa autorskie należą do Ambrose Au (C) 1996 i jest to dokument wolnodostępny. Można go rozprowadzać na zasadach licencji GNU GPL. Informacje i cała zawartość tego dokumentu są najlepsze o których wiem. Jednak maskowanie IP jest _e_k_s_p_e_r_y_m_e_n_t_a_l_n_e i możliwe, że zrobię jakiś błąd. Tak więc powinieneś się zastanowić czy chesz stosować informacje z tego dokumentu. Nikt nie jest odpowiedzialny za jakiekolwiek szkody czy zniszczenia wynikłe z używania informacji tutaj zawartych, tj: AAUUTTOORR NNIIEE JJEESSTT OODDPPOOWWIIEEDDZZIIAALLNNYY ZZAA JJAAKKIIEEKKOOLLWWIIEEKK ZZNNIISSZZCCZZEENNIIAA PPOOWWSSTTAAŁŁEE NNAA SSKKUUTTEEKK DDZZIIAAŁŁAAŃŃ PPOODDJJĘĘTTYYCCHH NNAA PPOODDSSTTAAWWIIEE IINNFFOORRMMAACCJJII ZZ TTEEGGOO DDOOKKUUMMEENNTTUU.. 11..33.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@jtz.org.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany wprowadzone przez tłumacza: ˇ odwołania do polskich serwerów FTP ˇ dodane odwołanie do Diald mini HOWTO ˇ odwołania do JTZ 22.. PPooddssttaawwoowwaa wwiieeddzzaa.. 22..11.. CCoo ttoo jjeesstt mmaasskkoowwaanniiee IIPP.. Jest to funkcja sieciowa w fazie rozwoju w Linuksie. Jeśli na podłączonym do Internetu Linux-ie jest włączone maskowanie, to komputery łączące się z nim (czy to w tej samej sieci czy też przez modem) mogą także połączyć się z Internetem, pomimo iż _n_i_e _m_a_j_ą _s_w_o_j_e_g_o _o_f_i_c_j_a_l_n_e_g_o _n_u_m_e_r_u _I_P. Pozwala to grupom maszyn ukrytych za gateway-em, który wydaje się być jedynym komputerem łączącym się z Internetem, na _n_i_e_w_i_d_z_i_a_l_n_y dostęp do Internetu. Złamanie zabezpieczeń dobrze skonfigurowanego systemu maskowania powinno być trudniejsze od złamania dobrego firewall-a opartego na filtrowaniu pakietów (zakładając, że w obu nie ma błędów software'owych). 22..22.. OObbeeccnnyy ssttaann.. Maskowanie IP jest nadal w fazie eksperymentalnej. Jednak, jądra od wersji 1.3.x mają już wbudowaną obsługę. Wiele osób prywatnych jak i instytucji używa go z zadowalającym rezultatem. Przeglądanie sici WWW oraz usługa telnet działają według zgłoszeń dobrze. FTP, IRC i słuchanie Real Audio działają po załadowaniu pewnych modułów. Inne systemy przekazu audio jak True Speech czy Internet Wave także działają. Niektórzy z listy dyskusyjnej próbowali nawet konferencji wideo. Po zaaplikowaniu najnowszej łaty ICMP działa także ping. Dokładniejszą listę działającego oprogramowania znajdziesz w sekcji 4.3. Maskowanie IP działa dobrze z klientami na kilku różnych systemach operacyjnych i platformach. Pozytywne przypadki odnotowano z Unix-em, Windows 95, Windows NT, Windows for Workgroups (z pakietem TCP/IP), OS/2, Macintosh System's OS z Mac TCP, Mac Open Transport, DOS z pakietem NCSA Telnet, VAX, Alpha z Linux-em i nawet Amiga z AmiTCP czy ze stosem AS225. 22..33.. KKttoo mmoożżee mmiieećć kkoorrzzyyśśccii zz mmaasskkoowwaanniiaa IIPP?? ˇ Jeśli masz Linux-a podłączonego do Internetu i ˇ jeśli masz kilka komputerów z TCP/IP podłączonych do tego Linux-a w lokalnej podsieci i/lub ˇ jeśli twój Linux posiada więcej niż jeden modem i odgrywa rolę serwera PPP czy SLIP dla innych, którzy to ˇ iinnnnii nie mają oficjalnego numeru IP (te maszyny są reprezentowane tutaj jako INNE) ˇ i oczywiście chcesz, żeby te INNE maszyny także miały dostęp do Internetu bez dodatkowych kosztów :) 22..44.. KKttoo nniiee ppoottrrzzeebbuujjee mmaasskkoowwaanniiaa IIPP?? ˇ Jeśli twoja maszyna jest samotnym Linux-em podłączonym do Internetu, wtedy maskowanie IP jest bezcelowe. ˇ Jeśli masz już adresy IP dla swoich IINNNNYYCCHH maszyn, wtedy nie potrzebujesz maskowania. ˇ I oczywiście, jeśli nie podoba ci się pomysł 'darmowej przejażdżki'. 22..55.. JJaakk ddzziiaałłaa mmaasskkoowwaanniiee IIPP?? Wzięte z IP-Maquerade FAQ autorstwa Kena Evesa: Oto rysunek przedstawiający najprostszy przypadek: SLIP/PPP +------------+ +-------------+ do prowajdera | Linux | SLIP/PPP | Cokolwiek | <---------- modem1| |modem2 ----------- modem | | 111.222.333.444 | | 192.168.1.100 | | +------------+ +-------------+ Na powyższym rysunku Linux z zainstalowanym i działającym maskowaniem jest połączony z Internetem poprzez SLIP lub PPP przez modem1. Ma on przypisany adres IP 111.222.333.444. Istnieje też możliwość połączenia się z nim poprzez łącze dzwonione SLIP/PPP przez modem2. Drugi system (który nie musi być Linux-em) wdzwania się do Linux-a i otwiera połączenie SLIP/PPP. NIE ma on przypisanego adresu IP w Internecie więc używa 192.168.1.100 (zobacz poniżej). Z poprawnie skonfigurowanymi maskowaniem IP i routing-iem Cokolwiek może połączyć się z Internetem jak gdyby rzeczywiście było podłączone (z kilkoma wyjątkami). Cytat Pauline Middelink: Nie zapomnij wspomnieć, że Cokolwiek powinno mieć jako gateway Linux-a (czy to będzie domyślny routing czy tylko podsieć nie ma znaczenia). Jeśli Cokolwiek nie może tego zrobić, Linux powinien działać jako proxy arp dla wszystkich routowanych adresów, ale ustawianie proxy arp jest poza obszarem tego dokumentu. Następujące jest wyjątkiem z postu na grupie comp.os.linux.networking, który został poddany edycji, aby nazwy użyte w przykładzie powyżej pasowały: o Informuję Cokolwiek, że mój Linux ze SLIP-em jest jego gatewayem. o Kiedy nadejdzie do Linux-a pakiet z Cokolwiek, zostanie mu nadany nowy numer portu źródłowego oraz dodany adres Linux-a w nagłówku pakietu z zachowaniem oryginału. Potem Linux wyśle ten pakiet w świat przez SLIP/PPP. o Kiedy nadejdze do Linux-a pakiet ze świata, jeśli numer portu jest jednym z nadanych powyżej, zostanie nadany mu oryginalny port i adres IP i pakiet ten zostanie przesłany do Cokolwiek. o Host, który wysłał pakiet nigdy nie będzie widział różnicy. PPrrzzyykkłłaadd MMaasskkoowwaanniiaa IIPP. Oto typowy przykład: +----------+ | | Ethernet | komp1 |:::::: | |2 :192.168.1.x +----------+ : : +----------+ łącze +----------+ : 1| Linux | PPP | | ::::| masq-gate|:::::::::// Internet | komp2 |:::::: | | | |3 : +----------+ +----------+ : : +----------+ : | | : | komp3 |:::::: | |4 +----------+ <-Sieć wewnętrzna-> W tym przykładzie są 4 komputrery, na których się skupiliśmy (najpewniej jest jeszcze coś daleko na prawo, przez co przechodzi twoje połączenie z Internetem, i jest coś (daleko poza stroną) w Internecie, z czym byś chciał się komunikować). Linux masq-gate jest gateway-em z maskowaniem dla wewnętrznej sieci złożonej z komp1, komp2 i komp3, które chcą się dostać do Internetu. Sieć wewnętrzna używa jednego z adresów do prywatnego użytku, w tym przypadku sieci klasy C 192.168.1.0, z Linux-em posiadającym adres 192.168.1.1 i innymi systemami posiadającymi adresy w tej sieci. Trzy maszyny komp1, komp2 i komp3 (które, przy okazji, mogą być jakimkolwiek innym systemem rozumiejącym IP - jak np.: WWiinnddoowwss 9955, MMaacciinnttoosshh MMaaccTTCCPP czy nawet kolejny Linux) mogą połączyć się z innymi maszynami w Internecie, jednak system maskowania masq-gate zamienia wszystkie ich połączenia, tak żeby wyglądały jakby pochodziły z masq- gate i zajmuje się tym, aby dane przychodzące spowrotem do połączenia maskowanego zostały przekazane do odpowiedniego systemu - tak więc systemy w wewnętrznej sieci widzą bezpośrednie połączenie z Internetem i są nieświadome, że ich dane są zmieniane. 22..66.. WWyymmaaggaanniiaa ddllaa mmaasskkoowwaanniiaa IIPP nnaa LLiinnuukkssiiee 22..xx.. **** NNaajjnnoowwsszzee iinnffoorrmmaaccjjee zznnaajjddzziieesszz nnaa ssttrroonniiee zzaassoobbóóww ddllaa mmaasskkoowwaanniiaa <<http://ipmasq.home.ml.org/>. Trudno jest często uaktualniać HOWTO.** ˇ Źródła jądra w wersji 2.0.x z ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.0/> (Tak, będziesz musiał sobie skompilować jądro z pewnymi dodatkami. Zalecana jest najnowsza stabilna wersja.) ˇ Moduły jądra, najlepiej 2.0.0 lub nowsze dostępne z ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.0/> (modules-1.3.57 jest najstarszą możliwą wersją) ˇ Dobrze skonfigurowana sieć TCP/IP. Jest to omówione w NET-3-HOWTO <http://www.jtz.org.pl/Html/NET-3-HOWTO.pl.html> (dostępnym w j. polskim) oraz w Network Administrator's Guide <http://sunsite.icm.edu.pl/pub/Linux/Documentation/LDP/nag/nag.html>. ˇ Połączenie z Internetem dla twojego Linux-a. Omówione w ISP-Hookup-HOWTO <http://www.jtz.org.pl/Html/ISP-Hookup- HOWTO.pl.html> (dostępne w j. polskim), PPP-HOWTO <http://www.jtz.org.pl/Html/PPP-HOWTO.pl.html> (dostępne w j. polskim) oraz PPP-over-ISDN mini-HOWTO <http://sunsite.icm.edu.pl/pub/Linux/Documentation/HOWTO/mini/PPP- over-ISDN>. ˇ ipfwadm 2.3 lub nowszy dostępny z ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/Linux/distributions/slackware/source/n/tcpip2/> Więcej informacji na temat wymaganej wersji znajduje się na stronie o ipfwadm <http://www.xos.nl/linux/ipfwadm/>. ˇ Możesz opcjonalnie nałożyć kilka łat do maskowania, aby włączyć dodatkowe możliwości. Więcej informacji znajdziesz na stronie zasobów dla maskowania <http://ipmasq.home.ml.org/> (łaty te można nakładać na wszystkie wersje jądra 2.0). 33.. UUssttaawwiiaanniiee mmaasskkoowwaanniiaa IIPP.. JJeeśśllii ttwwoojjaa pprryywwaattnnaa ssiieećć zzaawwiieerraa jjaakkiieeśś wwaażżnnee iinnffoorrmmaaccjjee,, ppoommyyśśll ttrroocchhęę zzaanniimm zzaacczznniieesszz kkoorrzzyyssttaaćć zz mmaasskkoowwaanniiaa.. MMoożżee ttoo bbyyćć ttwwoojjaa bbrraammaa ddoo IInntteerrnneettuu,, aallee ttaakkżżee bbrraammaa ddoo ttwwoojjeejj ssiieeccii ddllaa kkooggoośś zz zzeewwnnąąttrrzz.. 33..11.. KKoommppiillaaccjjaa jjąąddrraa ddllaa oobbssłłuuggii mmaasskkoowwaanniiaa.. **** NNaajjnnoowwsszzee iinnffoorrmmaaccjjee zznnaajjddzziieesszz nnaa ssttrroonniiee zzaassoobbóóww ddllaa mmaasskkoowwaanniieeuu <<http://ipmasq.home.ml.org/>. Trudno jest często uaktualniać HOWTO.** ˇ Po pierwsze potrzebujesz źródeł jądra (najlepiej w wersji 2.0.0 lub nowszej). ˇ Jeśli jest to twoja pierwsza kompilacja jądra, nie bój się. Właściwie jest to raczej proste i opisane w Kernel-HOWTO <http://www.jtz.org.pl/Html/Kernel-HOWTO.pl.html> (dostępne w j. polskim). ˇ Rozpakuj źródła do katalogu /usr/src/ poleceniem tar xvzf linux-2.0.x.tar.gz -C /usr/src, gdzie x jest numerem łaty (od 0 do najnowszej wersji). (upewnij się, że istnieje katalog lub symboliczne dołączenie o nazwie linux). ˇ Nałóż odpowiednie łaty. Ponieważ pojawiają się nowe łaty, szczegółów nie zamieszczę tutaj. Zajrzyj na stronę zasobów dla maskowania <http://ipmasq.home.ml.org/>, aby poznać najnowsze informacje. ˇ Dalsze informacje na temat kompilacji znajdziesz w Kernel-HOWTO i pliku README znajdującym się w katalogu ze źródłami. ˇ Oto opcje, które musisz wkompilować: Odpowiedz _Y_E_S na następujące pytania: * Prompt for development and/or incomplete code/drivers CONFIG_EXPERIMENTAL - pozwoli ci to na wybór eksperymentalnego kodu maskowania * Enable loadable module support CONFIG_MODULES - pozwoli na ładowanie modułów * Networking support CONFIG_NET * Network firewalls CONFIG_FIREWALL * TCP/IP networking CONFIG_INET * IP: forwarding/gatewaying CONFIG_IP_FORWARD * IP: firewalling CONFIG_IP_FIREWALL * IP: maskowanie (EXPERIMENTAL) CONFIG_IP_MASQUERADE - pomimo, że jest to eksperymentalne jest to *KONIECZNE* * IP: ipautofw masquerade support (EXPERIMENTAL) CONFIG_IP_MASQUERADE_IPAUTOFW - zalecane * IP: ICMP maskowanie CONFIG_IP_MASQUERADE_ICMP - obsługa maskowania pakietów ICMP, opcjonalne * IP: always defragment CONFIG_IP_ALWAYS_DEFRAG - szczególnie zalecane * Dummy net driver support CONFIG_DUMMY - zalecane UWAGA: To są opcje tylko do maskowania. Włącz to co potrzebujesz dla swojej konfiguracji. ˇ Po kompilacji jądra powinieneś skompilować i zainstalować moduły: make modules; make modules_install ˇ Potem powinieneś dodać kilka linii do swojego pliku /etc/rc.d/rc.local (czy jakiegoś, który uważasz za stosowny), aby automatycznie podczas każdego startu systemu załadować moduły znajdujące się w /lib/modules/2.0.x/ipv4/: . . . /sbin/depmod -a /sbin/modprobe ip_masq_ftp /sbin/modprobe ip_masq_raudio /sbin/modprobe ip_masq_irc (i inne moduły jak ip_masq_cuseeme, ip_masq_vdolive jeśli założyłeś łaty) . . . Uwaga: Możesz także załadować te moduły ręcznie przed użyciem ip_masq, ale NIE używaj do tego celu kerneld - to NIE będzi działać! 33..22.. PPrrzzyyppiissyywwaanniiee aaddrreessóóww IIPP ww pprryywwaattnneejj ssiieeccii.. Ponieważ wszystkie IINNNNEE maszyny nie mają przypisanych adresów, musi być jakiś poprawny sposób, aby nadać im takie adresy. Z IP Masquerade FAQ: Jest RFC (#1597) informujące które adresy IP mogą być używane w niepołączonych sieciach. Są 3 bloki przeznaczone do tego celu. Ten, którego używam to podsieci klasy C o adresach 192.168.1.n do 192.168.255.n. Z RFC 1597: Rozdział 3: Prywatna przestrzeń adresowa IANA (Internet Assigned Numbers Authority) zarezerwowało następujące trzy bloki przestrzeni adresów IP dla prywatnych sieci: 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255 Do pierwszego będziemy się odnosić jako "24-bitowy blok", do drugiego jako "20-bitowy blok" i do trzeciego jako "16-bitowy blok". Zauważ, że pierwszy blok to nic innego jak pojedynczy numer sieci klasy A, podczas gdy drugi blok to ciągły blok 16. sieci klasy B i trzeci blok to ciągły blok 255. sieci klasy C. Tak więc, jeśli używasz sieci klasy C, powinieneś nadać swoim maszynom adresy 192.168.1.1, 1.92.168.1.2, 1.92.168.1.3, ..., 192.168.1.x. 192.168.1.1 to zwykle gateway, który jest Linux-em łączącym cię z Internetem. Zauważ, że 192.168.1.0 i 192.168.1.255, to odpowiednio adresy sieci i broadcast, które są zarezerwowane. Unikaj użycia tych adresów na twoich maszynach. 33..33.. KKoonnffiigguurraaccjjaa IINNNNYYCCHH mmaasszzyynn.. Oprócz ustawienia na każdej maszynie adresu IP, powinieneś także ustawić odpowiedni gateway. Ogólnie, jest to raczej proste. Po prostu wpisujesz adres swojego Linux-a (zwykle 192.168.1.1) jako adres gateway-a. Jako DNS możesz wpisać jakikolwiek dostępny adres serwera DNS-u. Najlepiej ten sam, którego używa twój Linux. Możesz także dodać jakąkolwiek domenę do przeszukiwania. Po tym jak skonfigurowałeś te adresy IP, nie zapomnij zrestartować odpowiednich serwisów lub systemów. Następujące wskazówki konfiguracyjne zakładają, że używasz sieci klasy C, twój Linux ma adres 192.168.1.1. Pamiętaj, że 192.168.1.0 i 192.168.1.255 są zarezerwowane. 33..33..11.. KKoonnffiigguurraaccjjaa wwiinnddoowwss 9955.. 1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz. 2. Przejdź do _P_a_n_e_l _S_t_e_r_o_w_a_n_i_a_/_S_i_e_ć. 3. Dodaj _p_r_o_t_o_k_ó_ł _T_C_P_/_I_P jeśli jeszcze go nie masz. 4. We _w_ł_a_ś_c_i_w_o_ś_c_i_a_c_h _T_C_P_/_I_P przejdź do _A_d_r_e_s _I_P i ustaw na 192.168.1.x (1 < x < 255) i wtedy ustaw Maskę podsieci na 255.255.255.0 5. Dodaj 192.168.1.1 jako twój gateway w polu _G_a_t_e_w_a_y. 6. W _K_o_n_f_i_g_u_r_a_c_j_i _D_N_S dodaj serwer DNS, którego używa twój Linux (zwykle jest w pliku /etc/resolv.conf). Opcjonalnie możesz dodać jakąś domenę do przeszukiwania. 7. Pozostaw resztę ustawień w takim stanie w jakim są, chyba że wiesz co robisz. 8. Kliknij _O_K we wszystkich okienkach i zrestartuj system. 9. ping-nij Linux-a, aby sprawdzić połączenie sieciowe: _S_t_a_r_t_/_U_r_u_c_h_o_m, wpisz ping 192.168.1.1 (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.) 10. Możesz opcjonalnie stworzyć w katalogu windows plik HOSTS, żebys mógł używać nazw hostów (bez domeny) ze swojej sieci. W katalogu windows znajduje się przykład o nazwie HOSTS.SAM. 33..33..22.. KKoonnffiigguurraaccjjaa WWiinnddoowwss ffoorr WWoorrkkggrroouuppss 33..1111.. 1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz. 2. Zainstaluj pakiet TCP/IP 32b jeśli jeszcze go nie masz. 3. W _G_r_u_p_a _g_ł_ó_w_n_a_/_U_s_t_a_w_i_e_n_i_a_/_S_i_e_ć kliknij _S_t_e_r_o_w_n_i_k_i. 4. Podświetl _M_i_c_r_o_s_o_f_t _T_C_P_/_I_P_-_3_2 _3_._1_1_b w _S_t_e_r_o_w_n_i_k_a_c_h _s_i_e_c_i_o_w_y_c_h, kliknij _U_s_t_a_w_i_e_n_i_a. 5. Ustaw adres IP na 192.168.1.x (1 < x < 255), ustaw Maskę podsieci na 255.255.255.0 i domyślny gateway na 192.168.1.1 6. Nie włączaj _A_u_t_o_m_a_t_y_c_z_n_e_j _k_o_n_f_i_g_u_r_a_c_j_i _D_H_C_P i nie wpisuj nic w wiersze _W_I_N_S _S_e_r_v_e_r o ile jesteś w domenie Windows NT i wiesz co robisz. 7. Kliknij _D_N_S, wypełnij odpowiednie pola wymienione w kroku 6. w sekcji 3.3.1, potem kliknij _O_K. 8. Kliknij _Z_a_a_w_a_n_s_o_w_a_n_e, zaznacz _W_ł_ą_c_z _D_N_S _d_l_a _W_i_n_d_o_w_s _N_a_m_e _R_e_s_o_l_u_t_i_o_n i _W_ł_ą_c_z _s_p_r_a_w_d_z_a_n_i_e _L_M_H_O_S_T_S jeśli używasz pliku z hostami, podobnie do kroku 10. w sekcji 3.3.1. 9. Kliknij _O_K we wszystkich okienkach i zrestartuj system. 10. tt/ping/-nij Linux-a, aby sprawdzić połączenie sieciowe: _S_t_a_r_t_/_U_r_u_c_h_o_mm wpisz ping 192.168.1.1 (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.) 33..33..33.. KKoonnffiigguurraaccjjaa WWiinnddoowwss NNTT.. 1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz. 2. Przejdź do _G_r_u_p_a _g_ł_ó_w_n_a_/_P_a_n_e_l _s_t_e_r_o_w_a_n_i_a_/_S_i_e_ć 3. Dodaj protokół TCP/IP i powiązane składniki z menu _D_o_d_a_j _o_p_r_o_g_r_a_m_o_w_a_n_i_e jeśli nie masz jeszcze zainstalowanego serwisu TCP/IP. 4. W sekcji _O_p_r_o_g_r_a_m_o_w_a_n_i_e _s_i_e_c_i_o_w_e _i _k_a_r_t_y _s_i_e_c_i_o_w_e podświetl _p_r_o_t_o_k_ó_ł _T_C_P_/_I_P w _Z_a_i_n_s_t_a_l_o_w_a_n_e _o_p_r_o_g_r_a_m_o_w_a_n_i_e _s_i_e_c_i_o_w_e. 5. W _K_o_n_f_i_g_u_r_a_c_j_i _T_C_P_/_I_P zaznacz odpowiednią kartę sieciową, np. [1]Novell NE2000 Adapter. Potem ustaw Adres IP na 192.168.1.x (1 < x < 255), ustaw Maskę podsieci na 255.255.255.0 i Domyślny gateway na 192.168.1.1. 6. Nie włączaj _A_u_t_o_m_a_t_y_c_z_n_e_j _k_o_n_f_i_g_u_r_a_c_j_i _D_H_C_P i nie wpisuj nic w wiersze _W_I_N_S _S_e_r_v_e_r o ile jesteś w domenie Windows NT i wiesz co robisz. 7. Kliknij _D_N_S, wypełnij odpowiednie pola wymienione w kroku 6. w sekcji 3.3.1, potem kliknij _O_K. 8. Kliknij _Z_a_a_w_a_n_s_o_w_a_n_e, zaznacz _W_ł_ą_c_z _D_N_S _d_l_a _W_i_n_d_o_w_s _N_a_m_e _R_e_s_o_l_u_t_i_o_n i _W_ł_ą_c_z _s_p_r_a_w_d_z_a_n_i_e _L_M_H_O_S_T_S jeśli używasz pliku z hostami, podobnie do kroku 10. w sekcji 3.3.1. 9. Kliknij _O_K we wszystkich okienkach i zrestartuj system. 10. tt/ping/-nij Linux-a, aby sprawdzić połączenie sieciowe: _S_t_a_r_t_/_U_r_u_c_h_o_mm wpisz ping 192.168.1.1 33..33..44.. KKoonnffiigguurraaccjjaa ssyysstteemmóóww uunniixx--oowwyycchh.. 1. Jeśli nie masz zainstalowanej swojej karty ani skompilowanego odpowiedniego sterownika, zrób to teraz. 2. Zainstaluj TCP/IP, jak np. pakiet nettols, jeśli jeszcze tego nie zrobiłeś. 3. Ustaw _I_P_A_D_D_R na 192.168.1.x (1 < x < 255), ustaw _N_E_T_M_A_S_K na 255.255.255.0, _G_A_T_E_W_A_Y na 192.168.1.1 i _B_R_O_A_D_C_A_S_T na 192.168.1.255. Np. możesz zmodyfikować plik /etc/sysconfig/network-scripts/ifcfg- eth0 w dystrybucji Red Hat, albo po prostu zrób to w Control Panel- u. (inaczej postępuje się w SunOS, BSDi, Slckware Linux, itd.) 4. Dodaj serwer DNS i domenę do przeszukiwania w /etc/resolv.conf. 5. W zależności od twoich ustawień możesz też uaktualnić /etc/networks. 6. Zrestartuj odpowiednie serwisy albo po prostu zrestartuj system. 7. Wydaj polecenie ping: ping 192.168.1.1, aby sprawdzić połączenie do gateway-a. (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.) 33..33..55.. KKoonnffiigguurraaccjjaa DDOOSS--aa zz ppaakkiieetteemm NNCCSSAA TTeellnneett.. 1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz. 2. Załaduj odpowiedni sterownik. Dla karty NE2000 wydaj polecenie nwpd 0x60 10 0x300, jeśli karta jest ustawiona na IRQ=10 i adres I/O=0x300. 3. Stwórz nowy katalog i rozpakuj pakiet NCSA Telnet,; pkunzip tel2308b.zip. 4. Zmodyfikuj plik config.tel. 5. Ustaw myip=192.168.1.x (1 < x < 255) i netmask=255.255.255.0. 6. W tym przykładzie powinieneś ustawić hardware=packet, interrupt=10, ioaddr=60 7. Powinieneś mieć przynajmniej jedną maszynę ustawioną jako gateway, tj. Linux-a: name=default host=twój.linux hostip=192.168.1.1 gateway=1 8. Kolejna pozycja to DNS: name=dns.domena.pl ; hostip=123.123.123.123; nameserver=1 Uwaga: zamień powyższe informacje na poprawne dla ciebie. 9. Zapisz plik config.tel 10. Połącz się poprzez telnet z Linux-em, aby sprawdzić połączenie telnet 192.168.1.1 33..33..66.. KKoonnffiigguurraaccjjaa MMaaccOOSS zz MMaaccTTCCPP.. 1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić. 2. Otwórz _M_a_c_T_C_P _c_o_n_t_r_o_l _p_a_n_e_l. Wybierz odpowiedni sterownik sieci (Ethernet, NIE EtherTalk) i kliknij przycisk _M_o_r_e_._._.. 3. W _O_b_t_a_i_n _A_d_d_r_e_s_s kliknij _M_a_n_u_a_l_l_y. 4. W _I_P _A_d_d_r_e_s_s wybierz _C_l_a_s_s _C z listy. Zignoruj resztę ustawień w tym okienku. 5. Wypełnij odpowiednie informacje w _D_o_m_a_i_n _n_a_m_e _S_e_r_v_i_c_e _i_n_f_o_r_m_a_t_i_o_n. 6. W _G_a_t_e_w_a_y _A_d_d_r_e_s_s wpisz 192.168.1.1. 7. Kliknij _O_K, aby zachować ustawienia. W głównym okienku _M_a_c_T_C_P _c_o_n_t_r_o_l _p_a_n_e_l wpisz adres IP swojego Mac-a (192.168.1.x, 1 < x < 255) w wierszu _I_P _A_d_d_r_e_s_s. 8. Zamknij _M_a_c_T_C_P _c_o_n_t_r_o_l _p_a_n_e_l. Jeśli pojawi się okienko sugerujące restart systemu - zrób tak. 9. Możesz opcjonalnie ping-nąć Linux-a, aby sprawdzić połączenie. Jeśli masz program freeware'owy _M_a_c_T_C_P _W_a_t_c_h_e_r, kliknij na przycisk _P_i_n_g i wpisz adres swojego Linux-a (192.168.1.1) w okienku, które się pojawi. (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.) 10. Opcjonalnie możesz także stworzyć plik Hosts w System Folders, żeby używać tylko nazw hostów bez domeny w swojej sieci lokalnej. Plik powinien się już znajdować w System Folders i powinien zawierać kilka (zakomentowanych) przykładowych pozycji, które możesz zmodyfikować na swoje potrzeby. 33..33..77.. KKoonnffiigguurraaccjjaa ssyysstteemmóóww MMaaccOOSS zz OOppeenn TTrraannssppoorrtt.. 1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić. 2. Otwórz _T_C_P_/_I_P _C_o_n_t_r_o_l _P_a_n_e_l i wybierz _U_s_e_r _M_o_d_e _._._. z menu _E_d_i_t. Sprawdź czy user mode jest ustawiony conajmniej na _A_d_v_a_n_c_e_d i kliknij _O_K. 3. Wybierz _C_o_n_f_i_g_u_r_a_t_i_o_n _._._. z menu _F_i_l_e. Zaznacz konfigurację _D_e_f_a_u_l_t i kliknij _D_u_p_l_i_c_a_t_e _._._.. Wpisz "Ip masq" (lub coś co zaznaczy, że jest to specjalna konfiguracja) w okienku _D_u_p_l_i_c_a_t_e _C_o_n_f_i_g_u_r_a_t_i_o_n, prawdopodobnie będzie tam coś jak _D_e_f_a_u_l_t _C_o_p_y. Potem kliknij _O_K i _M_a_k_e _A_c_t_i_v_e. 4. Zaznacz _E_t_h_e_r_n_e_t z okienka _C_o_n_n_e_c_t _v_i_a. 5. Zaznacz odpowiednią pozycję na liście _C_o_n_f_i_g_u_r_e. Jeśli nie wiesz którą opcję wybrać, prawdopodobnie powinieneś wybrać ponownie konfigurację _D_e_f_a_u_l_t i wyjść. Ja używam _M_a_n_u_a_l_l_y. 6. Wpisz adres IP swojego Mac-a (192.168.1.x, 1 < x < 255) w okienku _I_P _A_d_d_r_e_s_s. 7. Wpisz 255.255.255.0 w okienku _S_u_b_n_e_t _m_a_s_k. 8. Wpisz 192.168.1.1 w okienku _R_o_u_t_e_r _a_d_d_r_e_s_s. 9. Wpisz adresy IP swoich serwerów DNS w okienku _N_a_m_e _s_e_r_v_e_r _a_d_d_r. 10. Wpisz swoją domenę Internetową (np. microsoft.com) w okienku _S_t_a_r_t_i_n_g _d_o_m_a_i_n _n_a_m_e w wierszu _I_m_p_l_i_c_i_t _S_e_a_r_c_h _P_a_t_h_:. 11. Następujące procedury są opcjonalne. Niepoprawne wartości mogą powodować złe zachowanie. Jeśli nie jesteś pewien, to lepiej je zostawić puste, niezaznaczone i/lub niewybrane. Usuń wszelkie informacje z tych pól, jesli jest to konieczne. O ile wiem, to nie ma sposobu, żeby zabronić poprzez okienka TCP/IP systemowi używania poprzednio wybranego alternatywnego pliku "Hosts". Jeśli wiesz coś na ten temat, to jestem zainteresowany. Zaznacz _8_0_2_._3 jeśli twoja sieć wymaga ramek 802.3. 12. Kliknij _O_p_t_i_o_n_s_._._., aby upewnić się, że TCP/IP jest aktywne. Ja używam opcji _L_o_a_d _o_n_l_y _w_h_e_n _n_e_e_d_e_d. Jeśli uruchomisz i wyłączysz aplikację TCP/IP wiele razy bez restartowania maszyny, może się okazać, że odznaczenie opcji _L_o_a_d _o_n_l_y _w_h_e_n _n_e_e_d_e_d zredukuje zapotrzebowanie na pamięć w twojej maszynie. Z niezaznaczoną tą opcją stosy TCP/IP są zawsze ładowane i dostępne do użytku. Jeśli jest zaznaczona, stosy TCP/IP są ładowane automatycznie kiedy są potrzebne i usuwane z pamięci kiedy już nie są potrzebne. To właśnie ten proces ładowania/usuwania może sfragmentować twoją pamięć. 13. Możesz ping-nąć Linux-a, aby sprawdzić połączenie sieciowe. Jeśli masz program freeware'owy _M_a_c_T_C_P _W_a_t_c_h_e_r, kliknij na przycisk _P_i_n_g i wpisz adres swojego Linux-a (192.168.1.1) w okienku, które się pojawi. (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.) 14. Opcjonalnie możesz także stworzyć plik Hosts w System Folders, żeby używać tylko nazw hostów bez domeny w swojej sieci lokalnej. Plik może, ale nie musi, już się znajdować w System Folders. Jeśli jest, to powinien zawierać kilka (zakomentowanych) przykładowych pozycji, które możesz zmodyfikować na swoje potrzeby. Jeśli go nie ma, możesz pobrać kopię z systemu z MacTCP, albo po prostu stworzyć swój własny (składnia jest taka jak w unix-owym /etc/hosts. Opisane to jest na stronie 33. w RFC 1035). Jeśli już stworzyłeś taki plik, otwórz _T_C_P_/_I_P _c_o_n_t_r_o_l _p_a_n_e_l, kliknij _S_e_l_e_c_t _H_o_s_t_s _F_i_l_e _._._. i otwórz plik Hosts. 15. Kliknij _C_l_o_s_e lub _Q_u_i_t z menu _F_i_l_e i potem kliknij _S_a_v_e, aby zachować zmiany, które zrobiłeś. 16. Zmiany będa uwzględnione natychmiast, ale restart systemu nie zaszkodzi. 33..33..88.. KKoonnffiigguurraaccjjaa ssiieeccii NNoovveellll zz DDNNSS--eemm.. 1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić. 2. Zciągnij plik tcpip16.exe z adresu ftp.novell.com <ftp.novell.com/pub/updates/unixconn/lwp5>. 3. Zmodyfikuj c:\nwclient\startnet.bat. Oto kopia mojego: SET NWLANGUAGE=ENGLISH LH LSL.COM LH KTC2000.COM LH IPXODI.COM LH tcpip LH VLM.EXE F: 4. Zmodyfikuj c:\nwclient\net.cfg (zmień Link Driver na swój): Link Driver KTC2000 Protocol IPX 0 ETHERNET_802.3 Frame ETHERNET_802.3 Frame Ethernet_II FRAME Ethernet_802.2 NetWare DOS Requester FIRST NETWORK DRIVE = F USE DEFAULTS = OFF VLM = CONN.VLM VLM = IPXNCP.VLM VLM = TRAN.VLM VLM = SECURITY.VLM VLM = NDS.VLM VLM = BIND.VLM VLM = NWP.VLM VLM = FIO.VLM VLM = GENERAL.VLM VLM = REDIR.VLM VLM = PRINT.VLM VLM = NETX.VLM Link Support Buffers 8 1500 MemPool 4096 Protocol TCPIP PATH SCRIPT C:\NET\SCRIPT PATH PROFILE C:\NET\PROFILE PATH LWP_CFG C:\NET\HSTACC PATH TCP_CFG C:\NET\TCP ip_address xxx.xxx.xxx.xxx ip_router xxx.xxx.xxx.xxx 5. i na końcu stwórz c:\bin\resolv.cfg. SEARCH DNS HOSTS SEQUENTIAL NAMESERVER 207.103.0.2 NAMESERVER 207.103.11.9 6. Mam nadzieję, że to pomoże niektórym podłączyć ich sieci Novell. Konfiguracja jest poprawna dla NetWare 3.1x i 4.x 33..33..99.. KKoonnffiigguurraaccjjaa OOSS//22 WWaarrpp.. 1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić. 2. Zainstaluj protokół TCP/IP jeśli jeszcze go nie masz. 3. Przejdź do _P_r_o_g_r_a_m_m_s_/_T_C_P_/_I_P _(_L_A_N_) _/ _T_C_P_/_I_P. 4. W _N_e_t_w_o_r_k dodaj swój adres TCP/IP i ustaw maskę sieci (255.2555.255.0). 5. W _R_o_u_t_i_n_g wciśnij _A_d_d. Ustaw _T_y_p_e na _d_e_f_a_u_l_t i wpisz w polu _R_o_u_t_e_r _A_d_d_r_e_s_s adres swojego Linux-a. (192.168.1.1). 6. Ustaw w polu _H_o_s_t_s ten sam adres DNS, którego używa twój Linux. 7. Zamknij TCP/IP control panel. Odpowiedz yes na pojawiające się pytania. 8. Zrestartuj system. 9. Możesz ping-nąć Linux-a, aby sprawdzić konfigurację sieci. W oknie _O_S_/_2 _C_o_m_m_a_n_d _p_r_o_m_p_t wpisz ping 192.168.1.1. Jeśli pakiety ping-a przychodzą wszystko jest w porządku. 33..33..1100.. KKoonnffiigguurroowwaanniiee iinnnnyycchh ssyysstteemmóóww.. Powinno się to robić podobnie. Sprawdź poprzednie punkty. Jeśli jesteś zainteresowany opisaniem konfiguracji w jakimkolwiek systemie, to wyślij szczegółowe instrukcje na adres ambrose@writeme.com. 33..44.. KKoonnffiigguurraaccjjaa zzaassaadd ffoorrwwaarrddiinngguu IIPP.. W tym momencie, powinieneś mieć zainstalowane jądro wraz ze wszystkimi potrzebnymi pakietami, jak również załadowane moduły. Także adresy IP, gateway-a i DNS-u na IINNNNYYCCHH maszynach powinny być ustawione. Teraz jedyne co pozostało, to użycie ipfwadm, aby przekazywać odpowiednie pakiety odpowiednim maszynom. **** MMoożżnnaa ttoo zzrroobbiićć nnaa wwiieellee rróózznnyycchh ssppoossbbóóww.. PPoonniiżżsszzee ssuugg­­ eessttiiee ii pprrzzyykkłłaaddyy ddzziiaałłaałłyy uu mmnniiee,, aallee ttyy mmoożżeesszz mmiieećć iinnnnee ppoommyyssłłyy.. WWiięęcceejj sszzcczzeeggóółłóóww zznnaajjddzziieesszz ww rroozzddzziiaallee 44..44 ii nnaa ssttrroonniiee ppooddrręęcczznniikkaa ssyysstteemmoowweeggoo oo iippffwwaaddmm.. **** ipfwadm -F -p deny ipfwadm -F -a m -S yyy.yyy.yyy.yyy/x -D 0.0.0.0/0 gdzie x jest jednym z poniższych adresów w zależności od klasy twojej sieci, a yyy.yyy.yyy.yyy jest adresem twojej sieci: Maska | x | Podsieć ~~~~~~~~~~~~~~~~|~~~~|~~~~~~~~~~~~~~~ 255.0.0.0 | 8 | Klasa A 255.255.0.0 | 16 | Klasa B 255.255.255.0 | 24 | Klasa C 255.255.255.255 | 32 | Point-to-point Na przykład jeśli jestem w posieci klasy C, wpisałbym: ipfwadm -F -p deny ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 Ponieważ pakiety bootp przychodzą z poprawnym IP kiedy klient jeszcze nic na temat adresu IP nie wie, dla tych którzy używają serwera bootp w maszynach z maskowaniem czy firewall-ingiem konieczne jest użycie poniższego polecenia przed poleceniem z deny: ipfwadm -I -a accept -S 0/0 68 -D 0/0 67 -W bootp_clients_net_if_name -P udp Możesz to także zrobić dla każdej maszyny osobno. Na przykład jeśli chcę, żeby maszyny 192.168.1.2 i 192.168.1.8 miały dostęp do Internetu, a inne nie, to wpisałbym: ipfwadm -F -p deny ipfwadm -F -a m -S 192.168.1.2/32 -D 0.0.0.0/0 ipfwadm -F -a m -S 192.168.1.8/32 -D 0.0.0.0/0 Opcjonalnie możesz wpisać maskę podsieci zamiast wartości: 192.168.1.0/255.255.255.0. Popularnym błędem jest umieszczanie jako pierwszego polecenia: ipfwadm -F -p masquerade NNiiee czyń maskowania domyślną zasadą - jeśli tak zrobisz, ktoś kto może manipulować swoim routingiem, będzie w stanie stworzyć tunel bezpośrednio poprzez twój gateway, aby ukryć swoją tożsamość! Możesz dodać te linie do plików /etc/rc.local, do jakiegoś innego pliku rc.*, lub robić to ręcznie za każdym razem kiedy potrzebujesz maskowania. Szczegóły na temat ipfwadm znajdziesz w rozdziale 4.4. 33..55.. TTeessttoowwaanniiee mmaasskkoowwaanniiaa.. Nadszedł czas, żeby wypróbować to wszystko po ciężkiej pracy. Upewnij się, że Linux jest podłączony do Internetu. Możesz spróbować posurfować po _I_N_T_E_R_N_E_C_I_E_!_!_! na swoich IINNNNYYCCHH maszynach i sprawdzić czy się uda. Za pierwszym razem radzę, użyć adresu IP zamiast nazwy kanonicznej, ponieważ twoje ustawienia DNS mogą być niepoprawne. Na przykład możesz sprawdzić stronę projektu JTZ (http://www.jtz.org.pl/) podając jako adres http://156.17.40.40/ <http://156.17.40.40/>. Jeśli ujrzysz ją, to gratulacje! Działa! Możesz teraz spróbować podać nazwę kanoniczną, potem telnet, ftp, Real Audio, True Speech i co tam jeszcze jest obsługiwane przez maskowanie ... . Jak dotąd nie mam problemów z powyższymi ustawieniami i jest to w pełni zasługa ludzi, którzy poświęcają swój czas, aby ta wspaniała właściwość działała. 44.. IInnnnee sspprraawwyy zzwwiiąązzaannee zz mmaasskkoowwaanniieemm IIPP ii oobbssłłuuggaa oopprrooggrraammoowwaanniiaa.. 44..11.. PPrroobblleemmyy zz mmaasskkoowwaanniieemm IIPP.. Niektóre protokoły nie będą obecnie działały z maskowaniem, ponieważ albo zakładają pewne fakty na temat numerów portów, albo kodują dane na temat adresów i portów w swoich strumieniach - te drugie potrzebują specyficznych proxies wbudowanych w kod maskowania, aby działały. 44..22.. WWcchhooddzząąccee sseerrwwiissyy.. Maskowanie nie potrafi w ogóle obsługiwać takich serwisów. Jest kilka sposobów, aby takowe działały, ale są one zupełnie nie związane z maskowaniem i są częścią standardowego działania firewall-i. Jeśli nie wymagasz wysokiego poziomu bezpieczeństwa, to możesz po prostu przekierować porty. Są różne sposoby, aby to zrobić - ja używam zmodyfikowanego kodu programu redir (który mam nadzieję będzie dostępny wkrótce z sunsite i jego kopii). Jeśli chcesz mieć jakiś poziom autoryzacji połączeń wchodzących, to możesz użyć albo TCP wrappers albo Xinetd "powyżej" redir w wersji 0.7 lub nowszej, aby wpuszczać tylko konkretne adresy IP, albo użyj jakichś innych narzędzi. TIS Firewall Toolkit jest dobrym miejscem, w którym możesz poszukać narzędzi i informacji. Więcej informacji znajdziesz na stronie z zasobami dla maskowania IP <http://ipmasq.home.ml.org>. 44..33.. OObbssłłuuggiiwwaannee oopprrooggrraammoowwaanniiee kklliieenncckkiiee ii uuwwaaggii oo iinnnnyycchh uussttaawwiieennii­­ aacchh.. **** NNaasstteeppuujjąąccąą lliissttąą nniikktt ssiięę jjuużż nniiee zzaajjmmuujjee.. ZZaajjrrzzyyjj nnaa ttęę ssttrroonnęę <<http://masqapps.home.ml.org/>, aby dowiedzieć się które aplikacje działają poprzez maskowanie na Linux-ie. Więcej informacji także na stronie z zasobami dla maskowania IP <http://ipmasq.home.ml.org/>. ** Ogólnie aplikacja, która używa TCP/UDP powinna działać. Jeśli masz jakieś sugestie, wskazówki lub pytania, na temat aplikacji z maskowaniem IP, odwiedź tę stronę <http://masqapps.home.ml.org> prowadzoną przez Lee Nevo. 44..33..11.. OOpprrooggrraammoowwaanniiee,, kkttóórree ddzziiaałłaa.. Ogólne: HHTTTTPP wszystkie obsługiwane platformy, surfowanie po sieci PPOOPP && SSMMTTPP wszystkie obsługiwane platformy, klienci e-mail TTeellnneett wszystkie obsługiwane platformy, zdalne logowanie FFTTPP wszystkie obsługiwane platformy, z modułem ip_masq_ftp.o (nie wszystkie adresy działają z pewnymi klientami; np. do niektórych nie można się dostać przy pomocy ws_ftp32, ale działa z Netscape) AArrcchhiiee wszystkie obsługiwane platformy, szukanie plików (nie wszytkie wersje oprogramowania są obsługiwane) NNNNTTPP ((UUSSEENNEETT)) wszystkie obsługiwane platformy, klient USENET NEWS VVRRMMLL Windows (przypuszczalnie wszystkie obsługiwane platformy), surfowanie po wirtualnej rzeczywistości. ttrraacceerroouuttee głównie platformy na UNIX-ie, niektóre wersje mogą nie działać ppiinngg wszystkie platformy, z łatą ICMP wwsszzyyssttkkoo ooppaarrttee oo IIRRCC wszystkie obsługiwane platformy, z modułami ip_masq_irc.o kklliieenntt GGoopphheerr wszystkie obsługiwane platformy kklliieenntt WWAAIISS wszystkie obsługiwane platformy Klienci Multimedialni: RReeaall AAuuddiioo PPllaayyeerr Windows, network streaming audio z załadowanym modułem ip_masq_raudio TTrruuee SSppeeeecchh PPLLaayyeerr 11..11bb Windows, network streaming audio IInntteerrnneett WWaavvee PPllaayyeerr Windows, network streaming audio WWoorrllddss CChhaatt 00..99aa Windows, program Client-Server 3D do pogawędek AAllpphhaa WWoorrllddss Windows, program Client-Server 3D do pogawędek IInntteerrnneett PPhhoonnee 33..22 Windows, komunikacja audio Peer-to-peer, można się z tobą porozumieć tylko jeśli zainicjowałeś połączenie, ale nie można zadzwonić do ciebie PPoowwwwooww Windows, komunikacja na bazie tablic (ogłoszeniowych), można się z tobą porozumieć jeśli zainicjowałeś połączenie; nie można się do ciebie dodzwonić CCUU--SSeeeeMMee , wszystkie obsługiwane platformy, z załadowanymi modułami cuseeme; szczegóły znajdziesz na stronie z zasobami dla maskowania IP <http://ipmasq.home.ml.org/>. VVDDOOLLiivvee Windows, z łatą vdolive Uwaga: Niektóre programy, jak IPhone i Powwow mogą działać nawet jeśli to nie ty zaincjowałeś połączenie poprzez użycie pakietu _i_p_a_u_t_o_f_w. Zobacz w rozdziale 4.6. Inni klienci: NNCCSSAA TTeellnneett 22..33 0088 DOS, pakiet zawierający telnet, ftp, ping, itp. PPCC--aannyywwhheerree ffoorr WWiinnddoowwss 22..00 MS-Windows, zdalna kontrola PC poprzez TCP/IP, działa tylko jeśli jest klientem a nie hostem. SSoocckkeett WWaattcchh używa ntp - protokół czasu w sieci ppaakkiieett nneett--aacccctt ww LLiinnuuxx--iiee Linux, pakiet do zarządzania i monitorowania sieci. 44..33..22.. OOpprrooggrraammoowwaanniiee nniiee ddzziiaałłaajjąąccee.. IInntteell IInntteerrnneett PPhhoonnee BBeettaa 22 Łączy się, ale głos wędruje tylko w jedną stronę (na zewnątrz) IInntteell SSttrreeaammiinngg mmeeddiiaa VViieewweerr bbeettaa 11 Nie może połączyć się z serwerem NNeettssccaappee CCoooollTTaallkk Nie może połączyć się z drugą stroną ttaallkk,, nnttaallkk nie będą działać - wymagają napisania proxy dla jądra WWeebbPPhhoonnee W tej chwili nie może działać (robi złe założenia na temat adresów) XX Nietestowane, ale sądze, że nie może działać o ile ktoś stworzy proxy dla X, który jest prawdopodobnie osobnym programem dla kodu maskowania. Jednym ze sposobów, aby to działało jest użycie sssshh jako połączenia i użycie wewnętrznego proxy X. 44..33..33.. PPrrzzeetteessttoowwaannee ppllaattffoorrmmyy//ssyysstteemmyy ooppeerraaccyyjjnnee jjaakkoo IINNNNEE mmaasszzyynnyy.. ˇ Linux ˇ Solaris ˇ Windows 95 ˇ Windows NT (workstation i serwer) ˇ Windows For Workgroup 3.11 (z pakietem TCP/IP) ˇ Windows 3.1 (z pakietem Chameleon) ˇ Novel 4.01 Server ˇ OS/2 (włącznie z Warp v3) ˇ Macintosh OS (z MacTCP lub Open Transport) ˇ DOS (z pakietem NCSA Telnet, DOS Trumpet działa częściowo) ˇ Amiga (ze stosem AmiTCP lub AS225) ˇ VAX Stations 3520 and 3100 z UCX (stos TCP/IP dla VMS) ˇ Alpha/AXP z Linux-em Redhat-em ˇ SCO Openserver (v3.2.4.2 i 5) ˇ IBM RS/6000 z uruchomionym na nim AIX-em ˇ (Ktoś sprawdzał inne platformy?) 44..44.. AAddmmiinniissttrraaccjjaa FFiirreewwaallll--eemm IIPP ((iippffwwaaddmm)) Rozdział ten pogłębia wiedzę na temat stosowania polecenia _i_p_f_w_a_d_m. Poniżej jest ustawienie dla system z maskowaniem/firewalling-iem, z łączem PPP i statycznymi adresami PPP. Zaufanym interfejsem jest 192.168.255.1, interfejs PPP został zmieniony, aby chronić winnych :). Każdy wchodzący i wychodzący interfejs jest podany osobno, aby wychwycić spoofing IP jak i zatkany (stuffed) routing i/lub maskowanie. Wszystko co nie jest wyraźnie dozwolone jest zabronione! #!/bin/sh # # /etc/rc.d/rc.firewall, define the firewall configuration, invoked from # rc.local. # PATH=/sbin:/bin:/usr/sbin:/usr/bin # testowanie, poczekaj trochę, potem wyczyść wszystkie regułki. # odkomentuj poniższe linie jeśli chcesz wyłączyć firewall # automatycznie po 10. minutach. # (sleep 600; \ # ipfwadm -I -f; \ # ipfwadm -I -p accept; \ # ipfwadm -O -f; \ # ipfwadm -O -p accept; \ # ipfwadm -F -f; \ # ipfwadm -F -p accept; \ # ) & # Wchodzące, wyczyść i ustaw domyślną regułkę na zabronione. Właściwie # domyślna regułka jest nieodpowiednia, ponieważ zrobiliśmy inną: nie # wpuszczaj nikogo i loguj wszystko. ipfwadm -I -f ipfwadm -I -p deny # interfejs i maszyny lokalne mogą się dostać wszędzie ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0 # interfejs odległy, twierdzący, że jest od nas, spoofing IP, nie # wpuszczaj ipfwadm -I -a deny -V twój.stały.adres.PPP -S 192.168.0.0/16 -D 0.0.0.0/0 -o # interfejs odległy, jakiekolwiek źródło, jeśli celem jest stały adres # PPP, to wpuść ipfwadm -I -a accept -V twój.stały.adres.PPP -S 0.0.0.0/0 -D twój.stały.adres.PPP/32 # interfejs loopback (lo) jest w porządku ipfwadm -I -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0 # wychwyć wszystko, każdy inny ruch wchodzący jest zabroniony i # logowany, szkoda, że nie ma opcji logowania, ale to robi to samo. ipfwadm -I -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o # Wychodzące, wyczyść i ustaw domyślną regułkę na zabronione. Właściwie # domyślna regułka jest nieodpowiednia, ponieważ zrobiliśmy inną: nie # wpuszczaj nikogo i loguj wszystko. ipfwadm -O -f ipfwadm -O -p deny # interfejs lokalny, wszystko z zewnątrz do nas jest w porządku ipfwadm -O -a accept -V 192.168.255.1 -S 0.0.0.0/0 -D 192.168.0.0/16 # wychodzące do lokalnej sieci na zdalnym interfejsie, stuffed # routing, odrzuć ipfwadm -O -a deny -V twój.statyczny.adres.PPP -S 0.0.0.0/0 -D 192.168.0.0/16 -o # wychodzące z lokalnej sieci na zdalnym interfejsie, stuffed # masquerading, odrzuć ipfwadm -O -a deny -V twój.statyczny.adres.PPP -S 192.168.0.0/16 -D 0.0.0.0/0 -o # wychodzące z lokalnej sieci na zdalnym interfejsie, stuffed # masquerading, odrzuć ipfwadm -O -a deny -V twój.statyczny.adres.PPP -S 0.0.0.0/0 -D 192.168.0.0/16 -o # wszystko inne wychodzące na zdalnym interfejsie jest w porządku ipfwadm -O -a accept -V twój.statyczny.adres.PPP -S twój.statyczny.adres.PPP/32 -D 0.0.0.0/0 # interfejs lokalny (lo) jest w porządku ipfwadm -O -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0 # wychwyć wszystko, każdy inny ruch wychodzący jest zabroniony i # logowany, szkoda, że nie ma opcji logowania, ale to robi to samo. ipfwadm -O -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o # Przekazywanie, wyczyść i ustaw domyślną regułkę na zabronione. Właściwie # domyślna regułka jest nieodpowiednia, ponieważ zrobiliśmy inną: nie # wpuszczaj nikogo i loguj wszystko. ipfwadm -F -f ipfwadm -F -p deny # maskuj z lokalnej sieci na lokalnym interfejsie dokądkolwiek ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0 # wychwyć wszystko, każdy inny ruch jest zabroniony i # logowany, szkoda, że nie ma opcji logowania, ale to robi to samo. ipfwadm -F -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o Możesz blokować ruch do poszczególnego adresu przy pomocy opcji -I, -O i -F. Pamiętaj, że regułki są skanowane od góry w dół i -a oznacza "dodaj" do już istniejących regułek, tak więc wszelkie szczegółowe regułki muszą pojawić się przed zasadami ogólnymi. Na przykład (nietestowane): Użycie opcji -I. Przypuszczalnie najszybsze rozwiązanie, ale zatrzymuje tylko lokalne maszyny, firewall jako taki, ma nadal dostęp do zabronionych adresów. Oczywiście możesz dopuścić taką kombinację. ... początek regułek -I ... # odrzuć i loguj lokalny interfejs i lokalne maszyny próbujące dostać # się do 204.50.10.13 ipfwadm -I -a reject -V 192.168.255.1 -S 192.168.0.0/16 -D 204.50.10.13/32 -o # lokalny interfejs i maszyny dokądkowiek jest w porządku ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0 ... koniec regułek -I ... Użycie opcji -O. Najwolniejsze ponieważ pakiety najpierw przechodzą przez maskowanie, ale ta regułka zatrzymuje nawet firewall przed dostępem do zabronionych adresów. ... początek regułek -O ... # odrzuć i zaloguj wychodzące do 204.50.10.13 ipfwadm -O -a reject -V twój.statyczny.adres.PPP -S twój.statyczny.adres.PPP/32 -D 204.50.10.13/32 -o # wszystko inne wychodzące na odległym interfejsie jest w porządku. ipfwadm -O -a accept -V twój.statyczny.adres.PPP -S twój.statyczny.adres.PPP/32 -D 0.0.0.0/0 ... koniec regułek -O ... Użycie opcji -F. Prawdopodobnie wolniejsze niż -I i wciąż zatrzymuje tylko maszyny zamaskowane (tj. wewnętrzne), firewall ma nadal dostęp do zabronionych adresów. ... początek regułek -F ... # odrzuć i zaloguj z lokalnej sieci na interfejsie PPP do # 204.50.10.13 ipfwadm -F -a reject -W ppp0 -S 192.168.0.0/16 -D 204.50.10.13/32 -o # maskuj z lokalnej sieci na lokalnym interfejsie dokądkolwiek ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0 ... koniec regułek -F ... Nie ma potrzeby na specjalną regułkę, aby pozwolić na ruch z 192.168.0.0/16 do 204.50.11.0; jest to zapewnione przez regułki ogólne. Jest więcej niż jeden sposób ujęcia interfejsów w powyższych regułkach. Na przykład zamiast -V 192.168.255.1 możesz wpisać -W eth0; zamiast -V twój.statyczny.adres.PPP możesz użyć -W ppp0. Prywatny wybór i dokumentacja, to więcej niż cokolwiek innego. 44..55.. MMaasskkoowwaanniiee IIPP ii ddzzwwoonniieenniiee nnaa żżąąddaanniiee.. 1. Jeśli chciałbyś tak ustawić swoją sieć, aby połączyć się z Internetem automatycznie, to narzędzie _d_i_a_l_d - dzwonienie na żądanie - będzie swietnym pakietem. 2. Aby ustawić diald, zajrzyj na stronę Ustawianie Diald dla linux-a <http://home.pacific.net.sg/~harish/diald.config.html>. 3. [Od tłumacza] Możesz tez zajrzeć do Diald mini HOWTO <http://www.jtz.org.pl/Html/mini/Diald.pl.html> (dostępne w j. polskim). 4. Jak już ustawisz diald i maskowanie IP, możesz podejść do którejkolwiek z maszyn klienckich i zainicjować połączenie WWW, telnet lub FTP. 5. Diald wychwyci nadchodzące żądanie, zadzwoni do prowajdera i ustawi połączenie. 6. Przy pierwszym połączeniu pojawi się przerwa. Jest to nieuniknione jeśli używasz analogowych modemów. Czas, który jest potrzebny do ustawienia połączenia modemów i PPP, spowoduje, że twój program kliencki stwierdzi rozłączenie. Można tego uniknąć jeśli używasz modemów ISDN. Wszystko co musisz zrobić, to przerwać bieżący proces na kliencie i ponowić go. 44..66.. PPaakkiieett ddoo pprrzzeekkaazzyywwaanniiaa IIPPaauuttooffww.. IPautofw <ftp://ftp.netis.com/pub/members/rlynch/ipautofw.tar.gz> jest programem do ogólnie pojętego przekazywania pakietów TCP i UDP w Linux-ie. Żeby użyć pakietu, który wymaga transmisji UDP trzeba załadować specyficzny moduł ip_masq - ip_masq_raudio, ip_masq_cuseeme, itd. Ipautofw odgrywa bardziej ogólną rolę; będzie on przekazywał każdy rodzaj ruchu włącznie z tym, którego nie przepuszczą moduły specyficzne dla danej aplikacji. Jeśli zarządza się tym programem niepoprawnie można stworzyć dziurę w bezpieczeństwie. 55.. RRóóżżnnoośśccii.. 55..11.. ZZddoobbyywwaanniiee ppoommooccyy.. **** PPrroosszzęę SSPPRRÓÓBBUUJJ NNIIEE wwyyssyyłłaaćć ddoo mmnniiee lliissttóóww nnaa tteemmaatt pprroobb­­ lleemmóóww zz mmaasskkoowwaanniieemm IIPP.. ZZ ppoowwoodduu iilloośśccii wwłłaassnnyycchh zzaajjęęćć nniiee mmooggęę oobbiieeccaaćć,, żżee ooddppoowwiieemm nnaa wwsszzyyssttkkiiee lliissttyy nniiee zzwwiiąązzaannee zzee ssttrroonnąą WWWWWW.. ZZaammiiaasstt tteeggoo śślliijj pprroosszzęę ttaakkiiee lliissttyy nnaa lliissttęę ddyysskkuussyyjjnnąą oo mmaasskkoowwaanniiuu IIPP <<http://ipmasq.home.ml.org/index.html#mailinglist> (sądzę, że jest to najlepsze źródło pomocy). Przepraszam za to, ale nie chcę abyś czekał tygodniami na odpowiedź. ˇ Na stronie z zasobami dla maskowania IP <http://ipmasq.home.ml.org/> powinieneś znaleźć najwięcej informacji o konfiguracji. ˇ Zapisanie się na listę dyskusyjną o maskowaniu IP (zalecane). Aby zapisać się, wyślij list o tytule "subscribe" (bez cudzysłowów) na adres masq-request@indyramp.com <mailto:masq- request@indyramp.com> Aby się wypisać, wyślij list o tytule "unsubscribe": (bez cudzysłowów) na adres powyżej <mailto:masq-request@indyramp.com> Aby otrzymać pomoc na temat korzystania z listy dyskusyjnej, wyślij list o tytule "archive help" lub "archive dir" (bez cudzysłowów) na powyższy adres <mailto:masq-request@indyramp.com> ˇ W archiwum <http://www.indyramp.com/masq/list/> listy dyskusyjnej o maskowaniu IP znajdziesz wszystkie listy dotychczas wysłane na tę listę. ˇ To mini HOWTO o maskowaniu IP <http://ipmasq.home.ml.org/ipmasq- HOWTO.html> jest dla jąder 2.x (jeśli używasz 1.3.x lub 2.x) ˇ Zajrzyj do tego mini HOWTO <http://ipmasq.home.ml.org/ipmasq- HOWTO-1.2.x.txt> jeśli masz starsze jądro. ˇ W FAQ na temat maskowania IP <http://www.indyramp.com/masq/ip_masquerade.txt> znajdziesz ogólne informacje ˇ Na stronie X/OS Ipfwadm <http://www.xos.nl/linux/ipfwadm/> zmajdziesz źródła, binaria, dokumentację i inne informacje na temat pakietu ipfwadm. ˇ Na stronie aplikacji, które są kompatybilne z maskowaniem IP <http://masqapps.home.ml.org> (stworzonej przez Lee Nevo) znajdziesz sztuczki i kruczki na temat przystosowywania aplikacji do działania z maskowaniem IP. ˇ Jeśli jesteś początkującym i konfigurujesz sieć, to Network Adminitration Guide <http://sunsite.icm.edu.pl/pub/Linux/Documentation/LDP/nag/nag.html> z LDP jest dla ciebie konieczną lekturą. ˇ W NET-3-HOWTO <http://www.jtz.org.pl/Html/NET-3-HOWTO.pl.html> (dostępne w j. polskim) także znajdziesz dużo pożytecznych informacji na temat sieci i Linuxa. ˇ W ISP-Hookup-HOWTO <http://www.jtz.org.pl/Html/ISP-Hookup- HOWTO.pl.html> i PPP-HOWTO <http://www.jtz.org.pl/Html/PPP- HOWTO.pl.html> (oba w j. polskim) znajdziesz informacje jak połączyć się ze swoim prowajderem. ˇ Ethernet HOWTO <http://sunsite.icm.edu.pl/pub/Linux/docs/HOWTO/Ethernet-HOWTO> jest dobrym źródłem informacji o instalacji sieci lokalnej opartej na Ethernecie. ˇ Możesz także zajrzeć do Firewall HOWTO <http://www.jtz.org.pl/Html/Firewall-HOWTO.pl.html> (w j. polskim) ˇ Kernel-HOWTO <http://www.jtz.org.pl/Html/Kernel-HOWTO.pl.html> poprowadzi cię przez proces kompilacji jądra. ˇ Inne HOWTO <http://sunsite.icm.edu.pl/pub/Linux/docs/HOWTO/>. ˇ Wysłanie listów na grupy dyskusyjne USENET np. pl.comp.os.linux. [Od tłumacza: UUwwaaggaa:: wkrótce pojawi się grupa pl.comp.os.linux.sieci; jeśli taka już jest, to proszę ttaamm kierować pytania o maskowaniu IP.] 55..22.. PPooddzziięękkoowwaanniiaa.. ˇ Gabrielowi Beitlerowi, gbeitler@aciscorp.com za rozdział 3.3.8 (konfiguracja Novela) ˇ Edowi Doolittle'owi, dolittle@math.toronto.edu za sugestję odnośnie opcji -V w poleceniu ipfwadm dla zwiększenia bezpieczeństwa ˇ Matthew Driverowi, mdriver@cfmeu.asn.au za obszerną pomoc w pracach przy tym HOWTO i dostarczenie rozdziału 3.3.1 (konfiguracja Windows 95) ˇ Kenowi Evesowi, ken@eves.com za FAQ, które dotarcza nieocenionych informacji dla tego HOWTO ˇ Edowi Lottowi, edlott@neosoft.com za długą listę sprawdzonych systemów i oprogramowania ˇ Nigelowi Metheringhamowi, Nigel.Metheringham@theplanet.net za dostarczenie swojej wersji HOWTO na temat filtrowania pakietów IP i maskowania pakietów IP, które czynią to HOWTO lepszym i bardziej technicznym dokumentem; rozdziały 4.1, 4.2 i inne ˇ Keith Owens, kaos@ocs.com.au za dostarczenie wspaniałego podręcznika na temat ipfwadm w rozdziale 4.2 za poprawki do opcji ipfwadm -deny, które nie pozwalają na powstanie dziury w bezpieczeństwie, i wyjaśnienie statusu pinga przez maskowanie IP ˇ Robowi Pelkey, rpelkey@abacus.bates.edu za dostarczenie rozdziału 3.3.6 i 3.3.7 (konfiguracja MacTCP i Open Transport) ˇ Harish Pillay, h.pillay@ieee.org za dostarczenie rozdziału 4.5 (dzwonienie na żadanie przy pomocy diald) ˇ Markowi Purcellowi, purcell@rmcs.cranfield.ac.uk za dostarczenie rozdziału 4.6 (IPautofw) ˇ Ueli Rutishauser, rutish@ibm.net za dostarczenie rozdziału 3.3.9 (konfiguracja OS/2 Warp) ˇ Johnowi B. (Brent) Williamsowi, forerunner@mercury.net za dostarczenie rozdziału 3.3.7 (konfiguracja Open Transport) ˇ Enrique Pessoa Xaveir, enrique@labma.ufrj.br za sugestję konfiguracji startu przez bootp ˇ programistom zajmującym się maskowaniem IP za tę wspaniałą własność ˇ Delian Delchev, delian@wfpa.acad.bg ˇ Nigel Metheringham, Nigel.Metheringham@theplanet.net ˇ Keith Owens, kaos@ocs.com.au ˇ Jeanette Pauline Middelink, middelin@polyware.iaf.nl ˇ David A. Ranch, trinity@value.net ˇ Miquel van Smoorenburg, miquels@q.cistron.nl ˇ Jos Vos, jos@xos.nl ˇ I wielu innym, o których mogłem tutaj zapomnieć (daj znać) ˇ wszystkim użytkownikom przysyłającym komentarze i sugestie na listę dyskusyjną. Szczególnie, tym którzy zgłaszali błędy w dokumentacji i obsługiwanych i nieobsługiwanych klientów. ˇ Przepraszam, że nie dołączyłem informacji, które podesłał mi jakiś użytkownik. Otrzymuję wiele sugestii i pomysłów, ale po prostu nie mam wystarczająco dużo czasu, aby je zweryfikować, albo po prostu tracę je. Robię co tylko mogę, aby dołączyć wszystkie przysyłane mi informacje. Dziękuję za wysiłek i mam nadzieję, że zrozumiesz moją sytuację. 55..33.. OOddwwoołłaanniiaa.. ˇ FAQ na temat maskowania IP autorstwa Kena Evesa ˇ Lista dyskusyjna o maskowaniu IP zrobiona przez Indyramp Consulting ˇ Strona o ipfwadm autorstwa X/OS ˇ Różne dokumenty HOWTO związane z siecią ��������������������������������������������doc-linux-pl-2002.06.14.orig/mini/LILO.pl.txt�������������������������������������������������������0100664�0001750�0001750�00000023473�07104371340�017247� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Lilo mini-HOWTO Cameron Spitzer, cls@truffula.sj.ca.us WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.12, 26 Lipca 1997 Ten plik opisuje niektóre typowe instalacje LILO. Został on napisany jako dodatek do dokumentacji LILO. Sądze, że przykłady są pożyteczne nawet jeśli twoje ustawienia nie są podobne do moich. Mam nadzieję, że zaoszczędzi ci to kłopotów. Dokument ten został napisany w standard­ zie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sun­ site/docs/HOWTO/mini/>. 11.. RRóóżżnnee iinnssttaallaaccjjee LLIILLOO.. 11..11.. PPrrzzyykkłłaadd 11.. Mam dwa dyski IDE i jeden dysk SCSI. Dysku SCSI nie widać w BIOS-ie. LILO używa BIOS-owych odwołań i widzi tylko te dyski, które widzi także BIOS. Mój głupi AMI BIOS może wystartować tylko z "A:" lub "C:". Mój główny system plików jest na partycji na dysku SCSI. Rozwiązanie: Zapisz jądro, plik z odwzorowaniem (map file) i chain loader na partycji Linux-owej na pierwszym dysku IDE. Zauważ, że nie potrzebne jest, aby trzymać jądro na swojej partycji z głównym systemem plików. Druga partycja na moim pierwszym dysku IDE (/dev/hda2) jest zamontowana na /u2. Oto mój plik /etc/lilo.conf: ______________________________________________________________________ # Zainstaluj rekord startowy LILO w Master Boot Record # na pierwszym dysku IDE. # boot = /dev/hda # /sbin/lilo (instalator) kopiuje rekord startowy LILO z następującego # pliku do MBR. install = /u2/etc/lilo/boot.b # # Napisałem swoje menu startowe. LILO je tam znajduje. message = /u2/etc/lilo/message # Instalator stworzy następujący plik. # Mówi on programowi ładującemu, gdzie znajduje się jądro. # map = /u2/etc/lilo/map compact prompt # Zaczekaj 10 sekund, a potem załaduj jądro 1.2.1 jako domyślne timeout = 100 # Jądro jest zapisane tam, gdzie BIOS je zobaczy poleceniem: # cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1 image = /u2/z1.2.1 label = 1.2.1 # LILO informuje jądro, aby zamontowało pierwszą partycję dysku SCSI # jako główny system plików. # BIOS nie musi jej widzieć. root = /dev/sda1 # Ta partycja będzie sprawdzona i ponownie zamontowana przez /etc/rc.d/rc.S read-only # Temu samemu jądru można przekazać, aby zmontowało inną partycję # jako główny system plików. Mam awaryjną konfigurację na /u2. image = /u2/z1.2.1 label = 1.2.1-hda2 root = /dev/hda2 read-only # Trzymałem stare jądro ze Slackware w razie gdybym stworzył # jakieś nie działające nowe jądro. Właściwie potrzebowałem tego # jeden raz. image = /u2/z1.0.9 label = 1.0.9 root = /dev/sda1 read-only # Moja partycja DR-DOS-a 6 other = /dev/hda1 loader=/u2/etc/lilo/chain.b label = dos alias = m ______________________________________________________________________ 11..22.. PPrrzzyykkłłaadd 22.. System w moim biurze ma jeden dysk IDE 1GB. BIOS może widzieć tylko pierwsze 504 MB dysku IDE. (Gdzie MB oznacza 2^10 bajtów a nie 10^6 bajtów.) Tak więc mam MS-DOS na partycji 350 MB /dev/hda1 i główny system plików Linux-a na partycji 120 MB /dev/hda. MS-DOS nie był w stanie się poprawnie zainstalować kiedy dysk był jeszcze świeży. Novell DOS 7 miał te same problemy. Na szczęście dla mnie, "Options by IBM" zapomnieli włożyć dysietki "OnTrack" do pudełka z dyskiem. Dysk miał przyjść z produktem zwanym "OnTrack Disk Manager". Jeśli tylko masz MS-DOS-a, sądze, że musisz tego użyć. A więc zrobiłem tablicę partycji Linux-owym fdisk-iem. MS-DOS 6.2 nie chciał się zainstalować na /dev/hda1. Pisał coś jak: Your computer already has MS-DOS [co było nieprawdą, bo dysk był czysty] so you need to get an upgrade release from your dealer.' Co za palant! Uruchomiłem Linux-owego fdisk-a jeszcze raz i skasowałem parytcję pierwszą z tablicy partycji. To zadowoliło MS-DOS-a 6.2, który stworzył dokładnie tę samą partycję pierwszą, którą właśnie skasowałem i zainstalował się. MS-DOS 6.2 zapisał swój Master Boot Record na dysk, ale nie mógł wystartować. Na szczęście miałem jądro ze Slackware na dyskietce (zrobioną przez program instalacyjny Slackware "setup"), wystartowałem Linux-a i zapisałem LILO na zepsuty MBR DOS-a. To działa. Oto plik /etc/lilo.conf jakiego użyłem: ______________________________________________________________________ boot = /dev/hda map = /lilo-map delay = 100 ramdisk = 0 # Wyłącza ramdisk w jądrze Slackware kernel timeout = 100 prompt disk = /dev/hda # BIOS widzi tylko pierwsze 500 MB. bios=0x80 # podaje pierwszy dysk IDE. sectors = 63 # weź te liczby z dokumentacji twojego heads= 16 # dysku twardego cylinders = 2100 image = /vmlinuz append = "hd=2100,16,63" # To jest opcjonalne. root = /dev/hda2 label = linux read-only vga = extended other = /dev/hda1 label = msdos table = /dev/hda loader = /boot/chain.b ## koniec ______________________________________________________________________ Po tym, jak zainstalowałem te systemy, stwierdziłem, że partycja zawierająca zImage, boot.p, map, chain.b i plik z komunikatami może używać systemu plików msdos, tak długo dopóki nie jest potraktowana "stacker-em" czy "doublespace-m". Tak więc mogłem zrobić partycję DOS- ową na /dev/hda1 o poj. 500 MB. Dowiedziałem się także, że "OnTrack" zapisałby tablicę partycji poczynając od kilku tuzinów bajtów od początku dysku, zamiast zacząć na samym początku dysku, i że jest możliwe tak przerobić sterownik Linux-owy do IDE, żeby sobie poradził z tym problemem. Ale instalacja z prekompilowanym jądrem ze Slackware nie byłaby możliwa. Ostatecznie IBM przysłał mi dyskietkę "OnTrack". Zadzwoniłem do serwisu technicznego "OnTrack". Powiedzieli, że Linux jest popsuty, bo nie używa BIOS-u. Oddałem im dyskietkę spowrotem. 11..33.. PPrrzzyykkłłaadd 33 Potem zainstalowałem Windows 95 w moim biurze. Rozwaliły mój ładny LILO MBR w pył, ale zostawiły moją partycję Linux-ową w spokoju. Jądra długo się ładują z dyskietek, więc zrobiłem dyskietkę z działającym na niej ustawieniem LILO, która mogła startować moje jądro z dysku IDE. W ten sposób stworzyłem dyskietkę LILO: ______________________________________________________________________ fdformat /dev/fd0H1440 # utwórz ścieżki na dyskietce mkfs /dev/fd0 1440 # utwórz na niej stsem plików minix mkdir /3 # stwórz katalog, żeby ją zamontować mount /dev/fd0 /3 # zamontuj dyskietkę cp -p /boot/chain.b /3 # przekopiuj chain loader lilo -C /etc/lilo.flop # zainstaluj LILO i mapę systemu na dyskietce umount /3 # odmontuj dyskietkę ______________________________________________________________________ Zauważ, że DYSKIETKA MUSI BYĆ ZAMONTOWANA KIEDY URUCHAMIASZ NA NIEJ INSTALATORA tak, żeby LILO mogło zapisać swoją mapę prawidłowo. Oto plik /etc/lilo.flop. Jest prawie identyczny z poprzednim: ______________________________________________________________________ # Tworzy dyskietkę, która może ładować jądra z dysku twardego. boot = /dev/fd0 map = /3/lilo-map delay = 100 ramdisk = 0 # Wyłącza ramdisk w jądrze ze Slackware timeout = 100 prompt disk = /dev/hda # Dysk 1 GB, BIOS widzi tylko 500 MB bios=0x80 sectors = 63 heads = 16 cylinders = 2100 image = /vmlinuz append = "hd=2100,16,63" root = /dev/hda2 label = linux read-only vga = extended other = /dev/hda1 label = msdos table = /dev/hda loader = /3/chain.b ## koniec ______________________________________________________________________ Ostatecznie, potrzebowałem MS-DOS-a 6.2 w moim systemie biurowym, ale nie chciałem dotykać pierwszego dysku. Dodałem kontroler SCSI i dysk, stworzyłem na nim Linux-owym mkdosfs-em plik systemów msdos i Windows 95 widzi to jako "D:". Ale oczywiście MS-DOS nie wystartuje z "D:". To nie jest problem jeśli masz LILO. Dodałem: ______________________________________________________________________ other = /dev/sda1 label = d6.2 table = /dev/sda loader = /boot/any_d.b ______________________________________________________________________ do lilo.conf z przykładu 2. MS-DOS 6.2 działa i myśli, że jest na"C:" a Windows 95 jest na "D:". 11..44.. OOdd ttłłuummaacczzaa.. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl/pub/Linux/JTZ/ Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Leased-Line.pl.txt������������������������������������������������0100664�0001750�0001750�00000036103�07104371340�020564� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Leased Line Mini-HOWTO Autor: Rob van der Putten rob@sput.webster.nl v1.4, 5 Lipca 1998 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v1.0, 6 Sierpnia 1998 To HOWTO opisuje połączenie Linuxa do linii dzierżawionej. Ten doku­ ment został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://www.sput.webster.nl/~rob/leased- line.html. ______________________________________________________________________ Spis treści 1. Wprowadzenie 1.1 Co to jest linia dzierżawiona 1.2 Założenia 2. Modem 2.1 Konfiguracja modemu 2.2 Test 2.3 Przykłady 2.3.1 Hi-Tech 2.3.2 Tron DF 2.3.3 US Robotics Courier V-Everything 3. PPPD 3.1 Skrypty 3.1.1 Uruchamianie pppd i utrzymywanie go w działaniu 3.1.2 Ustawianie routingu 3.2 Testowanie 4. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee 11..11.. CCoo ttoo jjeesstt lliinniiaa ddzziieerrżżaawwiioonnaa Linią dzierżawioną jest każde stałe połączenie dwóch punktów (point- to-point, dalej będę nazywał je p-t-p, nie mylić z pppppp - przyp. tłum.), dzierżawione od firmy telekomunikacyjnej lub innej organizacji. Linia dzierżawiona składa się z przewodów, takich jak skrętka, kabel koncentryczny lub światłowód; może też zawierać wszystkie rodzaje dodatkowego osprzętu, jak rdzenie, transformatory, wzmacniacze i regeneratory. Ten dokument opisuje Konfigurację modemu i pppd do użycia dwużyłowej linii dzierżawionej na skrętce. Ten dokument NNIIEE opisuje SLIP, pobierania i instalowania pppd, synchronicznego przesyłania danych i modemów pasma podstawowego (baseband) 11..22.. ZZaałłoożżeenniiaa Zakładam, że masz już działającego pppd. Potrzebny będzie też Minicom lub podobny program do konfiguracji modemów. 22.. MMooddeemm Linia dzierżawiona nie jest podłączona do centrali telefonicznej, nie zapewnia więc napięcia stałego, sygnału wybierania lub zajętości, ani dzwonka. Znaczy to, że twoje modemy będą musiały same poradzić sobie z tą sytuacją. Powinieneś mieć dwa identyczne zzeewwnnęęttrrzznnee modemy obsługujące linię dzierżawioną i ,,głuchy'' tryb pracy. Upewnij się, że twoje modemy naprawdę to potrafią! Twój modem powinien posiadać też odpowiednią dokumentację. Potrzebne będą też: ˇ Dwa w pełni połączone, ekranowane przewody RS232. Ekran powinien być połączony z (metalową częścią - przyp. tłum.) obudową wtyczki (nie z pinem 1) po obu końcach (nie po jednym). ˇ Wtyczka testowa RS232 może się przydać do zastosowań testowych. ˇ Dwie wtyczki RJ11, po jednej na każdy koniec linii. ˇ Podstawowa znajomość komend ,,AT'' 22..11.. KKoonnffiigguurraaccjjaa mmooddeemmuu Ogólna uwaga o konfiguracji modemu i liniach inicjalizujących: Konfiguruj swoje oprogramowanie modemowe takie jak minicom lub (m)getty tak, żeby używało najwyższej możliwej prędkości - 57600 bodów dla 14.400 i 115200 bodów dla 28.800 lub szybszych. Wiele ludzi używa bardzo długich i skomplikowanych linii inicjalizujących, często zaczynających się AT&F i zawierających mnóstwo komend specyficznych dla danego modemu. Jest to niepotrzebne. Większość programów używa takich samych ustawień modemu, a więc czemu nie zapisać tych ustawień do nieulotnej pamięci modemu i używać ,,ATZ'' do inicjalizacji modemu we wszystkich programach? W ten sposób można zamienić lub rozszerzyć modemy bez rekonfiguracji oprogramowania. Większość programów wymaga następujących ustawień: ˇ Stała szybkość transmisji (nie automatyczna) ˇ Dwukierunkowa, sprzętowa kontrola przepływu RTS-CTS (nie x-on/x- off) ˇ 8 bitów, bez parzystości, 1 bit stopu ˇ Modem powinien podawać PPRRAAWWDDZZIIWWYY status DCD (&C1) ˇ Modem NNIIEE powinien ignorować statusu DTR (&D2 lub &D3) Sprawdź te ustawienia za pomocą AT&V lub AT&I[numer] (przeczytaj dokumentację modemu). Ustawienia te nie są identyczne do profilu firmowego (&F), a więc używanie linii inicjalizującej z AT&F nie jest dobrym pomysłem. Dobrą rzeczą jest użycie AT&F tylko wtedy, gdy masz powód żeby sądzić, że ustawienia zapisane w nieulotnej pamięci modemu są bardzo niepoprawne. Jeżeli sądzisz, że znalazłeś odpowiednie ustawienia dla twoich modemów, zapisz je w pamięci nieulotnej komendą AT&W i przetestuj dokładnie protokołem Z-Modem zarówno dla plików tekstowych ASCII, jak i binarnych. Konfiguruj twoje modemy do linii dzierżawionej tylko jeżeli masz pewność, że te ustawienia działają idealnie. Dowiedz się, jak przestawić twój modem w ,,głuchy'' tryb, oraz, co ważniejsze, w tryb linii dzierżawionej - modem może być rekonfigurowany tylko wtedy, gdy nie znajduje się w ,,głuchym'' trybie. Upewnij się, czy napewno ustawiłeś modemy na największą możliwą prędkość. Kiedy modem wejdzie w ,,głuchy'' tryb pracy, będzie ignorował wszystkie komendy ,,AT'' - z tego powodu nie będzie można ustawić jego szybkości do tej ustawionej dla portu szeregowego; będzie używał prędkości skonfigurowanej komendami AT (prędkość ta jest zapisana w rejestrze S komendą AT&W). Teraz skonfiguruj modemy w następujący sposób: ˇ Przełączanie DTR (&D3, to jest czasami rejestr S). To ustawienie jest wymagane przez niektórych provider'ów! ˇ Tryb linii dzierżawionej (&L1 lub &L2, przeczyraj dokumentację modemu) ˇ Automatyczna odpowiedź modemu zdalnego (S0=1), w lokalnym S0=0 ˇ Wyłącz kody rezultatu (Q1, czasami ,,głuchy'' tryb robi to za ciebie). ˇ ,,Głuchy'' tryb (\D1 lub %D2, jest to czasami zworka) W ,,głuchym'' trybie pracy modem będzie ignorował komendy AT (czasami musisz wyłączyć znak ESC (nie ten ESC z klawiatury, tylko ,,+++'' - przyp. tłum)). Zapisz konfigurację do nieulotnej pamięci (&W). 22..22.. TTeesstt Podłącz modemy do dwóch komputerów używając przewodów RS232 i połącz ze sobą modemy za pomocą kabla RJ11. Użyj programu takiego jak Minicom (na Linuxa), procom albo telix (DOS) na obu komputerach, żeby sprawdzić modemy. Powinieneś zobaczyć tekst pisany na jednym komputerze w drugim terminalu i odwrotnie. Jeżli widzisz śmieci, sprawdź prędkość portu i inne ustawienia. Teraz odłącz i podłącz ponownie przewód RJ11. Poczekaj, aż połączenie ponownie się ustali. Odłącz i podłącz ponownie kable RS232, wyłącz i włącz modemy, uruchom ponownie minicoma. Modemy powinny zawsze połączyć się ponownie na najwyższej możliwej prędkości (niektóre modemy mają diody pokazujące prędkość). Sprawdź, czy modemy naprawdę ignorują znak ESC (+++). Jeżeli będzie to potrzebne, wyłącz znak ESC. Jeżeli to wszystko działa, możesz rekonfigurować modemy: wyłącz dźwięk w zdalnym modemie (M0) i ustaw niski poziom głośności w modemie lokalnym (L1). 22..33.. PPrrzzyykkłłaaddyy 22..33..11.. HHii--TTeecchh Lokalnie: ATL1&C1&D3&L2%D1&W&W1 Zdalnie: ATM0&C1&D3&L2%D1S0=1&W&W1 22..33..22.. TTrroonn DDFF Znak ESC powinien być wyłączony za pomocą komendy S2 > 127; Lokalnie: ATL1&L1Q1&C1&D3S2=171\D1&W Zdalnie: ATM0&L2Q1&C1&D3S0=1S2=171\D1&W 22..33..33.. UUSS RRoobboottiiccss CCoouurriieerr VV--EEvveerryytthhiinngg Poniższa sekcja jest oparta na informacjach dostarczonych przez Rolf'a Raar'a. USR Sportster i USR Courier-I nie obsługują linii dzierżawionych. Potrzebna będzie wersja Courier V-everything. Na serwerze USR znajduje się strona ,,wyjaśniająca'' jak skonfigurować Courier'a do linii dzierżawionej. Jednakże jeżeli będziesz postępował zgodnie z tymi wskazówkami, skończysz z modemem kompletnie ,,pozbawionym rozumu'', który nie będzie mógł być kontrolowany lub nadzorowany przez pppd. USR Courier może być konfigurowany przez przełączniki DIP, jednakże najpierw musisz podać mu linię inicjalizacyjną. Po pierwsze, upewnij się, że używa prawidłowego profilu fabrycznego. Inaczej niż większość innych modemów ma ich trzy: &F0, &F1, &F2. Standardowy, którego powinieneś używać, to &F1. Uwaga: jeżeli wyślesz mu AT&F, załaduje &F0! Dla resetowania przy DTR, ustaw bit 0 rejestru S13. Znaczy to, że musisz ustawić S13 na 1. Następnie musisz przestawić go w tryb linii dzierżawionej za pomocą &L1: ATS13=1&L1&W Przełączniki dip powinny być w domyślnych ustawieniach, wyjątkiem są: 3 - WYŁ - Wyłączyć kody wynikowe. 4 - ZAŁ - Wyłączyć komendy offline 5 - ZAŁ dla lokalnego, WYŁ dla zdalnego 8 - WYŁ - ,,Głuchy'' tryb pracy 33.. PPPPPPDD Potrzebny ci będzie pppd (Point to Point Protocol Daemon) i odpowiednia wiedza o jego działaniu. Przeczytaj odpowiednie RFC i Linux PPP HOWTO, jeżeli jest to potrzebne. Ponieważ nie będziesz używał procedury logowania, nie musisz używać (m)getty ani (fałszywego) użytkownika skojarzonego z pppd kontrolującym połączenie. Nie będziesz musiał wybierać numeru, nie będą więc potrzebne żadne skrypty chat. Obwód modemowy i konfiguracja, którą właśnie wykonałeś jest właściwie kablem null-modem. Znaczy to, że będziesz musiał skonfigurować pppd w sposób, w jaki konfigurowałbyś go do kabla null- modem. Dla dobrego połączenia, twoje ustawienia powinny spełniać następujące wymogi: ˇ Krótko po ładowaniu systemu, pppd powinien podnieść sygnał DTR w twoim porcie RS232, poczekać aż włączy się DCD i wynegocjować połączenie. ˇ Jeżeli zdalny system nie działa, pppd powinien czekać, aż stanie się on ponownie dostępny. ˇ Jeżeli jakość połączenia za bardzo spadnie, pppd powinien zresetować modem i ponownie nawiązać połączenie. ˇ Jeżeli proces kontrolujący połączenie, tj. pppd, zginie, program nadzorujący powinien uruchomić go znowu. Zakładam, że modem jest podłączony do COM2, lokalny adres IP to ,,Loc_IP'', a zdalny to ,,Rem_Ip''. Chcemy użyć 576 jako nasze MTU. /etc/ppp/options.ttyS1 powinno wyglądać tak: crtscts mru 576 mtu 576 passive Loc_Ip:Rem_Ip -chap modem -pap persist A więc, jeżeli system lokalny to 192.168.1.1, a system zdalny to 10.1.1.1, /etc/ppp/options.ttyS1 powinien wyglądać następująco: crtscts mru 576 mtu 576 passive 192.168.1.1:10.1.1.1 -chap modem -pap persist options.ttyS1 na zdalnym systemie powinien wyglądać tak: crtscts mru 576 mtu 576 passive 10.1.1.1:192.168.1.1 -chap modem -pap persist Opcja passive limituje numer (ponownych) połączeń. Opcja persist będzie próbowała trzymać pppd uruchomionym w razie rozłączenia, lub jeżeli nie będzie mógł odrazu się połączyć. Jeżeli telnetujesz się dużo podczas transferu plików (FTP lub przeglądanie WWW), możesz użyć mniejszego MTU i MRU, takiego jak 296. System zdalny będzie wtedy czujniejszy. Jeżeli nie będziesz telnetował się podczas FTP, może ustawić MTU i MRU na 1500. 33..11.. SSkkrryyppttyy 33..11..11.. UUrruucchhaammiiaanniiee ppppppdd ii uuttrrzzyymmyywwaanniiee ggoo ww ddzziiaałłaanniiuu Skrypt /usr/local/sbin/PRem_Host.sh poniżej startuje pppd. Musisz uruchomić go ppoo skonfigurowaniu portów szeregowych (zamień Rem_Host na nazwę zdalnego systemu). #!/bin/bash # Opcjonalnie sleep #/usr/bin/sleep 30 ( /usr/sbin/pppd /dev/ttyS1 115200 ) & Może on być uruchamiany ze skryptu konfigurującego kartę sieciową (/etc/init.d/network w systemie Debian), w tym przypadku musisz odkomentować sleep, żeby być pewnym, że porty com zostały skonfigurowane jako pierwsze. Jeżeli używasz setserial, możesz uruchomić go z tego skryptu. Innym sposobem jest uruchomienie go z rc.local. W systemach Debian istnieje katalog /etc/rc.boot/. Według Rolf'a Raar'a, skrypty w tym katalogu są uruchamiane w kolejności alfabetycznej. Skrypt setserial nazywa się 0setserial. Jeżeli wywołasz swój skrypt z pliku o nazwie 2linie-dzierżawione, będzie wykonany po 0setserial. Chociaż opcja persist czyni to powierzchownym, pppd może być też restartowany przez ip-down: #! /bin/bash case $s in /dev/ttyS1) /usr/bin/sleep 30 /usr/local/sbin/PRem_Host.sh & ;; esac Jeżeli pppd zginie, powinien być restartowany opcją w skrypcie ip-up (opcjonalnie). Jeżeli to się nie dzieje, skrypt /usr/local/sbin/test- Rem_Host-ppp robi to za ciebie. Ten skrypt sprawdza, czy zdalny interfejs istnieje - jeżeli nie, spróbuje uruchomić pppd: #!/bin/bash if ! ( /sbin/ifconfig | grep Rem_Ip > /dev/null ) then # PPP nie żyje logger "Rem_Host PPP nie żyje! ; uruchomiony ponownie" /usr/local/sbin/PRem_Host.sh & fi Następująca linia w crontab uruchamia powyższy skrypt co 5 minut. Możesz uruchamiać skrypt częsciej, ale ja nie uruchamiałbym go częściej niż co dwie minuty. */5 * * * * /usr/local/sbin/test-Rem_Host-ppp Możesz edytować crontab poleceniem ,,crontab -e''. Zrestartuje on crona po edycji. Używa edytora podanego w zmiennej środowiskowej ,,EDITOR'', która może być ustawiona przez /etc/profile lub /.profile (export EDITOR=Twoj_Ulubiony_Edytor). Niektórzy ludzie uruchamiają pppd z /etc/inittab, ale ja nigdy tego nie testowałem. 33..11..22.. UUssttaawwiiaanniiee rroouuttiinngguu Domyślny routing może zostać ustawiony opcją defaultroute, albo przez skrypt /etc/ppp/ip-up: #! /bin/bash case $2 in /dev/ttyS1) /sbin/route add -net 0.0.0.0 gw Rem_Ip netmask 0.0.0.0 ;; esac Ip-up może być też używany do synchronizacji zegara używając netdate. Oczywiście routing ustawiony w ip-up nie musi być domyślnym routingiem. Twoj skrypt ip-up ustawia routing do zdalnej sieci, kiedy ip-up w zdalnym systemie ustawia trasę do twojej sieci. Jeżeli jest nią 192.168.1.0, a interfejsem ppp jest 192.168.1.1, skrypt ip-up na zdalnej maszynie powinien wyglądać podobnie do tego: #!/bin/bash case $2 in /dev/ttyS1) /sbin/route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 ;; esac Bity ,,case $2'' i ,,/dev/ttyS1'' są tam na wypadek gdybyś używał więcej niż jednego połączenia ppp. Ip-up będzie uruchamiany za każdym razem kiedy pojawi się połączenie, ale tylko część pomiędzy ,,/dev/ttySx'' i ,,;;'' zostanie wykonana, ustawiając poprawny routing dla poprawnego ttyS. Możesz dowiedzieć się więcej o routingu z sekcji o routingu NET-3-HOWTO. 33..22.. TTeessttoowwaanniiee Przetestuj to wszystko tak jak modemy. Jeżeli działa, wsiądź na rower i przewieź modem na drugą stronę połączenia. 44.. OOdd ttłłuummaacczzaa Jeżeli znajdziesz jakieś błędy, daj mi znać. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Linux+DOS+Win95.pl.txt��������������������������������������������0100664�0001750�0001750�00000010257�07104371340�021133� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Linux Linux+DOS+Win95 mini-HOWTO Alan L. Wendt alan@ez0.ezlink.com v1.0, 10 Września 1996 WWeerrssjjaa ppoollsskkaa:: GGrrzzeeggoorrzz NNaalleeppaa nnaalleeppaa@@iibbmm..uuccii..aagghh..eedduu..ppll v1.0, 4 Stycznia 1998 Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem : Dokument opisuje jak startować Linux'a, DOS i Windows 95 z jednego twardego dysku, używając LILO. 11.. OOppiiss ZZaaggaaddnniieenniiaa.. W95 i DOS nie działają poprawnie jeżeli więcej niż jedna partycja jest ustawiona jako _"_a_k_t_y_w_n_a_", jest więc konieczne aby _p_r_o_g_r_a_m _s_t_a_r_t_u_j_ą_c_y aktywował ich partycję, przed startem systemu, oraz dezaktywował pozostałe partycje. W95 i DOS z jakiegoś powodu zmieniajś nazwy partycji, na urządzeniu z którego zostały wystartowane tak, że system zawsze jest na dysku C. Na przykład : jeżeli zainstaluje się DOS na partycji E głównego dysku, to po wystartowaniu go będzie się zdawało, że jest na dysku C. 11..11.. KKrrookk 11.. Użyj ffddiisskk--uu w Linux-e lub programu PPaarrttiittiioonn MMaaggiicc,, by założyć trzy partycje na dysku. Zainstaluj W95 na jednej, DOS na drugiej, używając (na przykład) polecenia format /s c: , a Linux-a na trzeciej. Jeżeli na początku masz tylko jedną partycję (DOS-u) na dysku, to PPaarrttiittiioonn MMaaggiicc bez problemu podzieli ją na trzy. FFIIPPSS zrobi to również i to za darmo, lecz jest nieco trudniejszy w obsłudze. 11..22.. KKrrookk 22.. Zdobądź plik lliilloo..1177..ttaarr..ggzz, który, do Sierpnia 1996, był jedyną wersją potrafiącą zmieniać flagę aktywnej partycji przed wystartowaniem systemu. Kopia tego pliku jest dostępna pod adresem : . Skompiluj i zainstaluj program ze zdefiniowaną opcją REWRITE_TABLE w pliku Makefile. 11..33.. KKrrookk33.. Wpisz do pliku /etc/lilo.conf kod podobny do tego poniżej i uruchom /sbin/lilo, aby uaktualnić MBR (MasterBootRecord) dysku. ______________________________________________________________________ boot = /dev/sda compact delay = 5 # opcjonalne, dla systemów startujących bardzo szybko vga = normal # wymuszenie rozsądnego stanu ramdisk = 0 # paranoiczna opcja root = current # użyj aktualnego głównego systemu plików image = /vmlinuz.1.3.97 append = "aha1542=0x230 ro" label = linux other = /dev/sda1 table = /dev/sda rewrite-table label = dos other = /dev/sda2 table = /dev/sda rewrite-table label = w95 ______________________________________________________________________ 11..33..11.. OOdd TTłłuummaacczzaa -- kkrróóttkkiiee uuaakkttuuaallnniieenniiee.. Od chwili gdy powstał oryginalny dokument upłynęło dużo czasu. Bardziej aktualne informacje mogą być w pokrewnych mini-HOWTO z cyklu Linux+*. Polecam również podręcznik systemowy "man" : lilo(8) i lilo.conf(5) oraz doskonały podręcznik znajdujący się w dystrybucji lliilloo. Jeżeli zainstalowałeś lilo z dystrybucji Linux'a, to Manual ten powinieneś prawdopodobnie znaleźć w katalogu /usr/doc/lilo*. Aktualna, na Grudzień 1997, wersja lliilloo to lliilloo--2200, dostępna w Polsce np. pod adresem : 11..33..22.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Grzegorza Nalepy. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeżeli znalazłeś jakiekolwiek błędy ortograficzne, gramatyczne lub inne językowe, to są one wyłącznie moją zasługą. Napisz do mnie nalepa@ibm.uci.agh.edu.pl pełen krytyki list , a postaram się je jak najszybciej usunąć. Tłumaczenia mojego autorstwa znajdziesz na mojej stronie WWW: Projekt JTZ, czyli polskie tłumaczenia dokumentów HOWTO ma oficjalną stronę WWW : . Tam znajdziesz wszystkie przetłumaczone dokumenty, oraz informacje o samym Projekcie. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Linux+NT-Loader.pl.txt��������������������������������������������0100664�0001750�0001750�00000024752�07104371340�021331� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ NT OS Loader + Linux mini-JTZ Bernd Reicher, reichert@dial.eunet.ch v1.11, 2 Wrzesień 1997 WWeerrssjjaa ppoollsskkaa:: MMiicchhaałł MMaallaarrsskkii,, mmaallaarrzz@@iitt..ppww..eedduu..ppll v1.0, 15 Listopada 1997 Dokument ten opisuje użycie boot loader-a z Windows NT do uruchamiania Linux-a. To rozwiązanie zostało przetestowane z Windows NT 4.0 WS i Linux 2.0. ______________________________________________________________________ Spis treści 1. Jak pracuje NT OS Loader 2. Wskazówki jak zainstalować Windows NT i Linux-a na jednym Komputerze 2.1 Instalacja Windows NT 2.2 Podział dysku na partycje 2.3 Instalacja Linux-a 2.4 Lilo 3. Program bootpart 4. Część pracy w Linux-ie 5. Część pracy w Windows NT 6. Zrób to jeszcze raz, Sam 7. Usuwanie błędów 8. Źródła informacji 9. Podziękowania 10. Uwagi 11. Od tłumacza ______________________________________________________________________ 11.. JJaakk pprraaccuujjee NNTT OOSS LLooaaddeerr NT OS loader chciałby mieć sektor startowy z innego dostępnego systemu operacyjnego w pliku. Czyta ten plik i startuje wybrany system operacyjny, n.p. albo Windows NT w innym trybie inny dowolny system operacyjny. 22.. WWsskkaazzóówwkkii jjaakk zzaaiinnssttaalloowwaaćć WWiinnddoowwss NNTT ii LLiinnuuxx--aa nnaa jjeeddnnyymm KKoommppuutt­­ eerrzzee 22..11.. IInnssttaallaaccjjaa WWiinnddoowwss NNTT Spróbój najpierw zainstalowć Windows NT. Jeżeli chcesz używać NTFS dla twojej własnej partycji Windows NT, pamiętaj, że dzisiejsza wersja Linux-a nie umożliwia dostępu do partcji NTFS. Sterownik w wersji alfa mogący czytać partycje NTFS jest dostępny w http://www.informatik.hu- berlin.de/~loewis/ntfs. Możesz utworzyć oddzielną parycję FAT do wymiany danych lub będziesz musiał używać dyskietek w formacie DOS. 22..22.. PPooddzziiaałł ddyysskkuu nnaa ppaarrttyyccjjee Inny dokument mini-HOWTO nie poleca używania "Disk Administrator-a" systemu NT do stworzenia partycji wymiany i partycji głównej systemu plików Linux-a. Wystarczy pozostawić na dysku wolne miejsce. Polecam użycie później Linux-owego fdisk-a. 22..33.. IInnssttaallaaccjjaa LLiinnuuxx--aa Teraz wystartuj system linux z dyskietek, utwórz partycję wymiany i główną partycję systemu plików. Fdisk pokaże partycję NTFS jako partcję HPFS. Jest to normalne. Ponownie wystartuj system z dyskietek i zainstaluj Linux-a tak jak chcesz. Tylko w przypadku gdy procedura instalacyjna zaproponuje, że możesz zamontować partycję HPFS, którą znalazła: Zignoruj to. 22..44.. LLiilloo Kiedy dojdziesz do sekcji Lilo, wskaż twoją główną partycję systemu plików Linux-a jako urządzenie startowe ponieważ Master Boot Record (MBR) twojego dysku jest w posiadaniu Windows NT. To znaczy, że pozycja root i pozycja boot w twoim /etc/lilo.conf powinny mieć takie same wartości. Jeżeli posiadasz dysk IDE i twoją partycją Linux-ową jest druga partcja, twoja pozycja boot w pliku /etc/lilo.conf wygląda następująco: ______________________________________________________________________ boot=/dev/hda2 ______________________________________________________________________ Jeżeli posiadasz dwa dyski i twój Linux znajduje się na pierwszej partycji twojego drugiego dysku, twoja pozycja boot w pliku /etc/lilo.conf wygląda następująco: ______________________________________________________________________ boot=/dev/hdb1 ______________________________________________________________________ Uruchom lilo z jądrem, które pasuje do twojego systemu. Sprawdź jądro startując je najpierw z dyskietki jeżeli nie jesteś pewien. Jeżeli nie możesz teraz załadowwać Windows NT, to masz problem. Mam nadzieję, że stworzyłeś ostatnio dyskietkę retunkową. 33.. PPrrooggrraamm bboooottppaarrtt Istnieje program NT nazwany bootpart napisany przez G. Vollant-a, który może wykonać robotę z dwóch następnych punktów za ciebie. Bootpart jest dostępny z: http://ourworld.compuserve.com/homepages/gvollant/bootpart.htm. Jeżeli chcesz wiedzieć jak wszystko wspólpracuje razem, użyj procedury opisnaej w punktach 4 i 5. 44.. CCzzęęśśćć pprraaccyy ww LLiinnuuxx--iiee Musisz startować system z dyskietek aż NT nie będzie przygotowane. Teraz musisz zrzucić sektor startowy z twojej głównej partycji systemu plików Linux-a. Jeżeli /dev/hda2 jest twoją partycją linux-a, komenda dd jest następująca: ______________________________________________________________________ # dd if=/dev/hda2 of=/bootsect.lnx bs=512 count=1 ______________________________________________________________________ Jeżeli bootsect.lnx ma więcej niż 512 bajtów wystąpił jakiś błąd. Teraz skopiuj bootsect.lnx na dyskietkę w formacie DOS jeżeli jest to twój spsób do przenoszenia plików na partcję NTFS. Możesz to skopiować tak: ______________________________________________________________________ # mcopy /bootsect.lnx a: ______________________________________________________________________ lub inaczej: ______________________________________________________________________ # mount -t msdos /dev/fd0 /mnt # copy /bootsect.lnx /mnt # umount /mnt ______________________________________________________________________ 55.. CCzzęęśśćć pprraaccyy ww WWiinnddoowwss NNTT Skopiuj plik z dyskietki do c:\bootsect.lnx. Nie powiem ci jak to zrobić. Czym dla linux-a jest lilo.conf tym c:\boot.ini jest dla Windows NT. Usuń atrybuty systemowy i tylko_do _odczytu zanim będziesz mógł modyfikować go: ______________________________________________________________________ C:\attrib -s -r c:\boot.ini ______________________________________________________________________ Teraz dowolnym edytorem, np. notepad-em, zmień następująco boot.ini: ______________________________________________________________________ [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation ... multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation ... C:\BOOTSECT.LNX="Linux" ______________________________________________________________________ W tym przykładzie została dodana tylko ostatnia linia. Po zapisaniu boot.ini odtwórz otrybuty: ______________________________________________________________________ C:\attrib +s +r c:\boot.ini ______________________________________________________________________ Po zamknięciu Windows NT i ponownym starcie powinieneś ujrzeć: ______________________________________________________________________ OS Loader V4.00 Please select the operating system to start: Windows NT Workstation Version 4.0 Windows NT Workstation Version 4.0 [VGA mode] Linux ______________________________________________________________________ Wybierz Linux i zobacz: ______________________________________________________________________ LILO loading zImage .... ______________________________________________________________________ 66.. ZZrróóbb ttoo jjeesszzcczzee rraazz,, SSaamm Nowa kopia bootsect.lnx musi być przeniesiona do c:\bootsect.lnx za każdym razem gdy sektor startowy twojej partycji linux-a będzie modyfikowany. Będzie to miało na przykład miejsce gdy będziesz używał lilo do zainstalowania nowego jędra. Jak możesz zauważyć taki sposób nie jest idealny do testowania doświadczalnych wersji jądra. 77.. UUssuuwwaanniiee bbłłęęddóóww Jeżeli cokolwiek pracuje nie tak jak oczekiwano, sprawdz możliwość startowania systemu z dyskietki. Jeżeli twoją partycją Linux-a jest /dev/hdb1, twój /etc/lilo.conf będzie miał następujące pozycje: ______________________________________________________________________ root=/dev/hdb1 boot=/dev/fd0 ______________________________________________________________________ Uruchom lilo z włożoną dyskietką. Teraz spróbój wystartować system z dyskietki. Jeżli twój linux z /dev/hdb1 nie może wystartować, NT OS loader również nie zdoła go uruchomić. Jeżeli zobaczycz wiele 01 01 01 01, znaczy to, że twój dysk główny jest niedostępny. Sprawdź czy wszystkie twoje dyski są rozpoznawane przez bios. Jeżeli możesz wystartować twoją partycję Linuxa z dysietki, możesz zrzucić twój sektor startowy dla NT OS loader-a: ______________________________________________________________________ # dd if=/dev/fd0 of=/bootsect.lnx bs=512 count=1 ______________________________________________________________________ Możesz zatrzymać tą dyskietkę jako dyskietkę ratunkową na wypadek gdyby twoja instalacja Windows NT została przerwana. 88.. ŹŹrróóddłłaa iinnffoorrmmaaccjjii ˇ The Linux+WindowsNT mini-HOWTO ˇ The FAQ for FreeBSD 2.X 99.. PPooddzziięękkoowwaanniiaa ˇ Podziękowania dla Xiaoming Yi z3c20@ttacs.ttu.edu za wskazówkę, powodującą, że procedura działa również dla dysków innych niż pierwszy. ˇ Podziękowania dla Frank Dennler Frank.Dennler@zkb.ch za sztuczkę z dyskietką. 1100.. UUwwaaggii Jakiekolwiek komentarze będą mile widziane. 1111.. OOdd ttłłuummaacczzaa Tłumaczenie to jest chronione prawami autorskimi Š Michała Malarskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: malarz@it.pw.edu.pl Napewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać. Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp://ftp.ippt.gov.pl/pub/Linux/JTZ. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres: listproc@ippt.gov.pl. ����������������������doc-linux-pl-2002.06.14.orig/mini/Locale.pl.txt�����������������������������������������������������0100664�0001750�0001750�00000051321�07104371340�017700� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Jak zrobić ustawienia lokalne w Linux-ie. (Locales) Peeter Joot, peeter_joot@vnet.ibm.com v1.5, 21 Lipca 1997. WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.4, 4 Listopada 1997 Dokument ten opisuje jak skonfigurować twojego Linux-a, aby móc używać pakietu "Locales", czyli ustawień narodowych. Dokument ten jest napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/Linux/sun­ site/docs/HOWTO/>. Nowsza wersja zawiera uaktualnione wskazania na katalog zawierający jądra na ftp.icm.edu.pl ______________________________________________________________________ Spis treści 1. Wprowadzenie. 2. Co to w ogóle jest pakiet "Locales"? 3. Uwagi. 4. Czego potrzebujesz. 5. Instalacja wszystkiego. 6. I co teraz? 7. Naprawa błędu "catopen". 8. Pytania i odpowiedzi. 8.1 msgcat 9. Zakończenie. 9.1 Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. To jest naprawdę opis tego co musiałem zrobić, żeby działał u mnie pakiet "Locales". Zrobiłem to tylko dla zabawy, i pomyślałem, że może niektórzy chcą sami spróbować. Jak już raz wszystko poustawiasz, powinieneś móc używać aplikacji korzystających z NLS, wraz z twoimi lokalnymi ustawieniami. Już niedługo pakiet "Locales" powinien być częścią standardowych dystrybucji i większość z tego co tu napisałem będzie niepotrzebne. 22.. CCoo ttoo ww ooggóóllee jjeesstt ppaakkiieett ""LLooccaalleess""?? Jest to pakiet, który zawiera ustawienia specyficzne dla twojego kraju. (zapis daty, czasu, specjalne litery itp.) Ustawień tych nie powineneś zapisywać na stałe w swoich programach. Jeśli masz na swoim komputerze zainstalowane ustawienia lokalne dla różnych krajów/języków, to poprzez następujące zmienne możesz kontrolować zachowanie programów korzystających z nich. Ustawieniem domyślnym jest ustawienie wg. standardu C lub POSIX zapisane na stałe w "libc". LLAANNGG -- ustawia jakiego języka używamy; może być zmienione przez zmienną LC_xxxx, LLCC__CCOOLLLLAATTEE -- ustawia porządek sortowania, LLCC__CCTTYYPPEE -- definicje znaków, duże i małe litery... używane jest to przez takie funkcje jak: toupper, tolower, islower, isdigit itp. LLCC__MMOONNEETTAARRYY -- definicja formatu liczb związanych z pieniędzmi. Są tu definicje separatora tysięcy, separatora ułamkowego, symbolu pieniądza (zł) i miejsce, gdzie należy go umieścić, LLCC__NNUUMMEERRIICC -- separatory tysięcy i ułamkowe oraz grupowanie numeryczne, LLCC__TTIIMMEE -- definicja formatu czasowego i datowego. Są tu zdefiniowane np. dni tygodnia, miesiące, LLCC__MMEESSSSAAGGEESS -- wyrażenia Nie i Tak, LLCC__AALLLL -- ustawia jakiego języka używamy i zmienia wszystkie inne zmienne LC_xxxx. Oto niektóre ustawienia, a jest ich znacznie więcej: eenn__CCAA -- kanadyjski angielski, eenn__UUSS -- amerykański angielski, ddee__DDEE -- niemiecki niemiecki, ffrr__FFRR -- francuski francuski. Jeśli piszesz program i chcesz, aby można go było używać na całym świecie respektuj ustawienia lokalne. Najważniejszym powodem jest to, że nie każdy będzie używał tego samego zestawu znaków czy strony kodowej co ty. Upewnij się, że nie robisz czegoś takiego w swoich programach: /* sprawdź czy to litera */ if ( (( c >= 'a') && ( c <= 'z' )) || (( c >= 'A') && ( c <= 'Z' )) ) { ... } Jeśli napiszesz coś takiego, to zakładasz, że użytkownik będzie używał tylko podstawowych znaków z kodu ASCII i nie bierzesz pod uwagę, iż może używać strony kodowej specyficznej dla swojego kraju. Pomija to takie znaki jak np. a-umlaut, które zostałoby użyte w środowisku niemieckim. Zamiast tego powinieneś raczej używać funkcji, które respektują lokalne ustawienia, jak np. isalpha(). Jeśli twój program wyraźnie wymaga tylko podstawowych znaków ASCII (US-ASCII), dalej używasz funkcji isalpha(), ale musisz także ustawić zmienną LANG albo LC_CTYPE albo LC_ALL na "C" lub użyć funkcji setlocale(LC_CTYPE, "C"). Ustawienia lokalne pozwalają na dużą elastyczność i robią pewne założenia, o których programista mógł zapomnieć. Na przykład nie możesz z góry założyć pozycji danego znaku na stronie kodowej. Nic nie stoi na przeszkodzie, żebyś np. stworzył sobie stronę kodową, na której "A" byłoby na pozycji 99 a nie 65. Podstawową ideą jest to, że różni ludzie mówią różnymi językami, przetsrzegają różnych reguł sortowania, używają różnych stron kodowych i mieszkają w różnych krajach. Ustawienia lokalne i funkcje, które ich przstrzegają dają środki na respektowanie takich rzeczy i odpowiedniego ich traktowanie. Nie wymaga to dużego nakładu pracy, tylko trochę innego sposobu myślenia podczas pisania takich programów. 33.. UUwwaaggii.. ˇ Aby ustawienia lokalne na moim komputerze działały musiałem odnowić kilka rzeczy. No i tak: ftp.torun.pdi.net w katalogu /pub/nls/locale. znajdują się wszystkie potrzebne programy. Nie wiedziałem, że jest osobny pakiet "Locales" i jakoś się domyśliłem, że trzeba mieć zainstalowane odpowiednie biblioteki libc i lib.so. Z tego powodu to HOWTO jest w większości zapisem tego co ja musiałem zrobić, żeby odnowić biblioteki. Jeśli zrobisz to w taki sposób jak ja, będziesz musiał mieć system ELF, albo zmienić swój na taki, jak już ustawisz swoje lokalne definicje. ˇ Wszystko co robiłem, aby odnowić swój system, to to samo, co jest potrzebne, aby przejść z a.out na ELF. Jeśli tego nie zrobiłeś, albo jeśli zrobiłeś to poprzez reinstalację Linux-a, powinieneś zdobyć ostatnią wersję ELF-HOWTO. Jest to wspaniały podręcznik, w którym znajdziesz dodatkowe wskazówki dotyczące instalacji bibliotek libc, ld.so i innych odnowień do ELF-a. ˇ Przed instalacją czegokolwiek, przeczytaj odpowiednie pliki dostarczone wraz z wersją instalacyjną (README itp.). Jeśli popsujesz sobie coś, bo źle zinterpretowałeś coś, co ja tutaj napisałem, albo przez (oby nie) zrobienie czegoś co ja zrobiłem, nie wiń mnie proszę. ˇ Jeśli zapomnisz zainstalować nową bibliotekę libc albo ld.so, to możesz doprowadzić nawet do tego, że nie będziesz mógł wystartować systemu. Także lepiej mieć pod ręką dyskietkę startową, i upewnij się, że wszelkie krytyczne albo niezamienialne dane są zarchiwizowane. 44.. CCzzeeggoo ppoottrrzzeebbuujjeesszz.. Kilka rzeczy musisz sobie ściagnąć. Wszystko czego potrzebujesz znajdziesz na ftp.icm.edu.pl Kiedy ja instalowałem u siebie ustawienia lokalne używałem libc-5.2.18, która jest teraz troche przestarzała. Jak na razie powiedziano mi, że bieżącą wersją jest 5.4.17 i taką też umieszczam w opisie. Przypuszczalnie libc-5.4.17 będzie przestarzała zanim zdążysz mrugnąć więc po prostu użyj najnowszej dostępnej wersji. Rozważ użycie glibc (gnu libc) zamiast Linux libc 5 w pracach unaradawiających (internalizacyjnych). Glibc jest w pełni unarodowiona i ma pełne wsparcie dla programowania narodowego tak samo jak jest w pełni przenaszalna FIXME i ma wbudowaną obsługę wątków. Prawie cała internalizacja zrobiona w libc 5 wzięta zostałą z glibc. Lokalizacje i mapy klawiszy dla glibc są powiązane z dodatkami o lokalizacjami glibc. Jeśli jesteś za używaniem glibc, to możesz pominąć to mini-howto. Dołączanie dodatków lokalizacyjnych do kompilacji i instalacji glibc jest trywialne i opisane jest w dokumentacji do instalacji glibc. ednak ostrzegam, że pełna aktualizacja nie jest trywialnym zadaniem! Mam nadzieję, że RedHat (którego używam) wypuści niedługo dystrybucję opartą na glibc, bo jakoś nie uśmiecha mi się rekompilacja całego mojego systemu. Wszystkie poniższe pakiety możesz znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/GCC oprócz "make" - /pub/Linux/sunsite/devel/make oraz jądra - /pub/Linux/kernel/ ˇ ustawienia lokalne i źródła zestawów znaków -- to jest to, co kompilujesz, używając localedef, ˇ libc-5.4.x.bin.tar.gz -- biblioteki dzielone w wersji ELF dla bibliotek C i MATH. Zauważ, że prekompilowany dla biblioteki libc-5.4.17 program "localedef" ma przypuszczalnie w sobie błąd i tworzy LC_CTYPE ze złą liczbą magiczną. Oznacza to przypuszczalnie, że jakaś stara wersja "localedef" dostała się do dystrybucji. ˇ libc-5.4.x.tar.gz -- źródła bibliotek dzielonych w wersji ELF - będziesz tego potrzebował, aby skompilować localedef, ˇ make-3.74.tar.gz -- może będziesz musiał skompilować "make", tak aby zawierał łatę na tzw. dirent bug, ˇ release.libc-5.4.x -- ta wersja zawiera łatę, która pozwala skompilować "make", minęło już sporo czasu odkąd powstał błąd w libc i przypuszczalnie nie musisz się już tym przejmować. ˇ ld.so-1.8.x -- biblioteka do łączenia dynamicznego w wersji ELF, ˇ gcc-2.7.2+ -- kompilator C w wersji ELF, ˇ jądro 2.0.x -- jądro w wersji ELF, ˇ binutils 2.7.0.x -- różne narzędzia do binariów potrzebne do kompilacji. 55.. IInnssttaallaaccjjaa wwsszzyyssttkkiieeggoo.. Oto co zrobiłem, aby wszystko zainstalować. Miałem już system ELF (kompilator, jądro ...). 1. Najpierw zainstalowałem pakiet binutils: tar xzf binutils-2.6.0.2.bin.tar.gz -C / 2. Potem zainstalowałem bibliotekę do łączenia: tar zxf ld.so-1.7.12.tar.gz -C /usr/src cd /usr/src/ld.so-1.7.12 sh instldso.sh 3. Potem binaria do libc. Przeczytaj odpowiednie pliki dotyczące instalacji w release.libc-5.4.17. rm -f /usr/lib/libc.so /usr/lib/libm.so rm -f /usr/include/iolibio.h /usr/include/iostdio.h rm -f /usr/include/ld_so_config.h /usr/include/localeinfo.h rm -rf /usr/include/netinet /usr/include/net /usr/include/pthread tar -xzf libc-5.4.17.bin.tar.gz -C / 4. Teraz trzeba uruchomić ldconfig, żeby zlokalizować nowe biblioteki dzielone: ldconfig -v. 5. Jest błąd, który został już poprawiony w libc. Powodował on złe działanie "make" i innych programów. Oto co zrobiłem, żeby skompilować i zainstalować "make": tar zxf make-3.74.tar.gz -C /usr/src cd /usr/src/make-3.74 patch < ścieżka_do_release.libc-5.4.17 configure --prefix=/usr sh build.sh ./make install cd .. rm -rf make-2.74 6. Teraz można skompilować i zainstalować localedef: mkdir /usr/src/libc tar zxf libc-5.4.17.tar.gz -C /usr/src/libc cd /usr/src/libc cd include ln -s /usr/src/linux/include/asm . ln -s /usr/src/linux/include/linux . cd ../libc ./configure make clean ; make depend cd locale make programs mv localedef /usr/local/bin mv locale /usr/local/bin 7. Umieść zestawy znaków tam, gdzie je znajdzie localedef. Ja użyłem zestawów znaków i locales z ftp.dkuug.dk (charmaps.tar i locales.tar). W Polsce dostępne są pod adresem: ftp.arch.pwr.wroc.pl w katalogu /mirror/linux/nls/locale/dkuug. Starsze "localedef" (5.2.18) szukało źródeł zestawów znaków w katalogu /usr/share/nls/charmap, ale teraz "localedef" szuka ich w katalogu /usr/share/i18n/charmaps oraz źródeł definicji lokalnych w /usr/share/i18n/locales mkdir /usr/share/i18n mkdir /usr/share/i18n/charmaps mkdir /usr/share/i18n/locales tar xf charmaps.tar -C /usr/share/i18n/charmaps tar xf locales.tar -C /usr/share/i18n/locales Nowsze "localedef" (5.4.17) są sprytniejsze i szukają zbiorów źródłowych definicji lokalnych podczas obsługi funkcji "copy". Podczas, gdy starsze "localedef" musiały mieć już utworzone pliki źródłowe definicji lokalnych, aby obsłużyć funkcję "copy". Poniższa lista poleceń ma wysortowane zależności i może być użyta, aby wygenerować wszystkie objekty lokalne w zaleźności od używanej wersji biblioteki libc, ale powinieneś móc teraz utworzyć tylko te, które chcesz. localedef -ci en_DK -f ISO_8859-1:1987 en_DK localedef -ci sv_SE -f ISO_8859-1:1987 sv_SE localedef -ci fi_FI -f ISO_8859-1:1987 fi_FI localedef -ci sv_FI -f ISO_8859-1:1987 sv_FI localedef -ci ro_RO -f ISO_8859-1:1987 ro_RO localedef -ci pt_PT -f ISO_8859-1:1987 pt_PT localedef -ci no_NO -f ISO_8859-1:1987 no_NO localedef -ci nl_NL -f ISO_8859-1:1987 nl_NL localedef -ci fr_BE -f ISO_8859-1:1987 fr_BE localedef -ci nl_BE -f ISO_8859-1:1987 nl_BE localedef -ci da_DK -f ISO_8859-1:1987 da_DK localedef -ci kl_GL -f ISO_8859-1:1987 kl_GL localedef -ci it_IT -f ISO_8859-1:1987 it_IT localedef -ci is_IS -f ISO_8859-1:1987 is_IS localedef -ci fr_LU -f ISO_8859-1:1987 fr_LU localedef -ci fr_FR -f ISO_8859-1:1987 fr_FR localedef -ci de_DE -f ISO_8859-1:1987 de_DE localedef -ci de_CH -f ISO_8859-1:1987 de_CH localedef -ci fr_CH -f ISO_8859-1:1987 fr_CH localedef -ci en_CA -f ISO_8859-1:1987 en_CA localedef -ci fr_CA -f ISO_8859-1:1987 fr_CA localedef -ci fo_FO -f ISO_8859-1:1987 fo_FO localedef -ci et_EE -f ISO_8859-1:1987 et_EE localedef -ci es_ES -f ISO_8859-1:1987 es_ES localedef -ci en_US -f ISO_8859-1:1987 en_US localedef -ci en_GB -f ISO_8859-1:1987 en_GB localedef -ci en_IE -f ISO_8859-1:1987 en_IE localedef -ci de_LU -f ISO_8859-1:1987 de_LU localedef -ci de_BE -f ISO_8859-1:1987 de_BE localedef -ci de_AT -f ISO_8859-1:1987 de_AT localedef -ci sl_SI -f ISO_8859-2:1987 sl_SI localedef -ci ru_RU -f ISO_8859-5:1988 ru_RU localedef -ci pl_PL -f ISO_8859-2:1987 pl_PL localedef -ci lv_LV -f BALTIC lv_LV localedef -ci lt_LT -f BALTIC lt_LT localedef -ci iw_IL -f ISO_8859-8:1988 iw_IL localedef -ci hu_HU -f ISO_8859-2:1987 hu_HU localedef -ci hr_HR -f ISO_8859-4:1988 hr_HR localedef -ci gr_GR -f ISO_8859-7:1987 gr_GR 66.. II ccoo tteerraazz?? Po przejściu omówionych powyżej kroków powinieneś móc używać ustawień lokalnych na swoim komputerze. Oto prosty przykładowy program. /* test.c : prosty przykładowy program do sprawdzenia czy ustawienia lokalne działają */ #include <locale.h> #include <stdio.h> #include <time.h> main(){ time_t t; struct tm * _t; char buf[256]; time(&t); _t = gmtime(&t); setlocale(LC_TIME,""); strftime(buf,256,"%c",_t); printf("%s\n",buf); } Żeby sprawdzić jakie są bieżące ustawienia możesz użyć programu "locale". Skompiluj powyższy program i uruchom z różnymi ustawieniami. gcc -s -o Test test.c Zobacz jakie są bieżące ustawienia: locale LANG=POSIX LC_COLLATE="POSIX" LC_CTYPE="POSIX" LC_MONETARY="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_MESSAGES="POSIX" LC_ALL= Hmmm... ustawienia standardowe C... No to zmieńmy na inne: export LC_TIME=en_CA -- kanadyjski angielski Test Sat 23 Mar 1996 07:51:49 PM A teraz francuski kanadyjski: export LC_TIME=fr_CA Test sam 23 mar 1996 19:55:27 77.. NNaapprraawwaa bbłłęędduu ""ccaattooppeenn"".. Instalacja obsługi ustawień lokalnych naprawia automatycznie błąd (a może zaletę) w poleceniu "catopen" w bibliotece libc. Powiedzmy, że napiszesz program, który używa komunikatów z katalogu /home/peeter/catalogs/de_DE. Teraz - jeśli wykonasz następujące polecenia nie mając zainstalowanych ustawień lokalnych dla de_DE, export LC_MESSAGES=de_DE export NLSPATH=/home/peeter/catalogs/%L/%N.cat:$NLSPATH katalog z niemieckimi komunikatami nie zostanie otwarty. Funkcja catgets pobierze komunikaty z katalogu standardowego. Dzieje się tak ponieważ funkcja "catopen" wywołuje funkcję "setlocale", żeby pobrać odpowiednie komunikaty, a funkcja "setlocale" zwróci błąd pomimo tego, że została ustawiona zmienna środowiskowa. Następnie funkcja "catopen" próbuje załadować komunikaty zastępując wszystkie "L" literą "C" w zmiennej NLSPATH. Możesz nadal używać swojego katalogu z komunikatami bez definiowania ustawień lokalnych, ale musiałbyś bezpośrednio ustawić część "L" zmiennej NLSPATH: export NLSPATH=/home/peeter/catalogs/de_DE/%N.cat:$NLSPATH ale to mija się z celem zastosowania zmiennych ustawień lokalnych. 88.. PPyyttaanniiaa ii ooddppoowwiieeddzzii.. Sekcja ta mogłaby urosnąć i zmienić się w FAQ, ale jest jeszcze za mała. 88..11.. mmssggccaatt Używam Linux-a i napisałem taki program: -------------------------------------------------------------------- #include <stdio.h> #include <locale.h> #include <features.h> #include <nl_types.h> main(int argc, char ** argv) { nl_catd catd; setlocale(LC_MESSAGES, ""); catd = catopen("msg", MCLoadBySet); fprintf(stderr,catgets(catd, 1, 1, "otwarcie komunikatów lokalnych nie powiodło się\n")); catclose(catd); } -------------------------------------------------------------------- $ msg.m $set 1 1 locale message pass\n -------------------------------------------------------------------- Jeśli użyję bezwzględnej ścieżki dostępu w "catopen", np.: catopen("/etc/locale/msg.cat", MCLoadBySet); To jest dobrze. Ale jeśli używam poprzedniego przykładu "catopen" zwraca mi -1 (czyli, że się nie powiodło) Częściowa odpowiedź na to pytanie jest w poprzedniej sekcji, ale podam jeszcze trochę dodatkowych informacji. Jest wiele "odpowiednich miejsc", gdzie możesz umieścić katalog z komunikatami. Nawet gdybyś nie ustawił zmiennej środowiskowej NLSPATH, to jest ona następująco zdefiniowana w libc: $ strings /lib/libc.so.5.4.17 | grep locale | grep %L /etc/locale/%L/%N.cat:/usr/lib/locale/%L/%N.cat:/usr /lib/locale/%N/%L:/usr/share/locale/%L/%N.cat:/usr/ local/share/locale/%L/%N.cat Więc jeśli zrobiłeś jedno z poniższych: $ export LC_MESSAGES=en_CA $ export LC_ALL=en_CA $ export LANG=en_CA to funkcja catopen("msg", MCLoadBySet); działałaby, gdyby twój katalog z komunikatami był jednym z: /etc/locale/en_CA/ /usr/lib/locale/en_CA/ /usr/lib/locale/msg/ /usr/share/locale/en_CA/ /usr/local/share/locale/en_CA/ Jednak to nie zadziała jeśli nie masz zainstalowanych ustawień lokalnych dla en_CA, ponieważ funkcja "setlocale" nie powiedzie się i w wywołaniu funkcji "catopen" w miejsce "L" zostanie podstawiona litera "C". 99.. ZZaakkoońńcczzeenniiee.. To tyle. Mam nadzieję, że ten "podręcznik" pomógł ci chociaż trochę. Jest zapewne dużo miejsc, gdzie możesz szukać dodatkowych informacji na temat pisania programów zgodnych z ustawieniami lokalnymi. Założę się, że jeśli poszukasz trochę po sieci (WWW), to znajdziesz dużo informacji. Ulrich Drepper, który zaimplementował większość kodu umiędzynarodowiającego, ma troche informacji na swojej stronie WWW; możesz tam zacząć. Jest także trochę informacji na stronach informacyjnych i w podręczniku systemowym "man" o libc. 99..11.. OOdd ttłłuummaacczzaa.. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl/HOWTO/ Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany wprowadzone przeze mnie do tego dokumentu to polskie odnośniki do serwerów ftp i WWW. W wersji v1.31 została poprawiona nazwa pliku testowego z "test" na "Test", co jak zauważył jeden z czytelników ma podstawowe znaczenie ponieważ program "test" już istnieje w systemie. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/NFS-Root-Client.pl.txt��������������������������������������������0100664�0001750�0001750�00000050672�07104371340�021274� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Stacja robocza z głównym systemem plików z sieci. Autor: Ofer Maor, ofer@hadar.co.il v3, 5 Grudnia 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.02, 26 Lipca 1997 Celem tego dokumentu jest wyjaśnienie jak stworzyć główne katalogi na serwerze, który obsługuje klientów z montowanym głównym systemem plików. Najnowszą wersję oryginału możesz znaleźć pod adresem www.hadar.co.il <http://www.hadar.co.il/ofer/nfs-root-client/>. Doku­ ment ten został napisany w standardzie ISO-8859-2. Odnośnie nowszych wersji tłumaczenia zobacz sekcję ``Od tłumacza''. ______________________________________________________________________ Spis treści 1. Prawa autorskie. 1.1 Podziękowania. 2. Przedmowa. 2.1 Przegląd ogólny. 3. Tworzenie głównego katalogu klienta. 3.1 Tworzenie drzewa katalogów. 3.2 Tworzenie minimalnego systemu plików potrzebnego do startu. 3.2.1 Tworzenie katalogu dev. 3.2.2 Kopiowanie potrzebnych binariów. 3.2.3 Katalog var. 3.2.4 Reszta katalogów. 3.3 Tworzenie katalogu etc oraz konfiguracja klienta. 3.3.1 Tworzenie katalogu dla wszystkich klientów. 3.3.2 Tworzenie katalogu etc dla klienta. 3.4 Startowanie. 4. Tworzenie większej ilości klientów. 4.1 Od tłumacza. ______________________________________________________________________ 11.. PPrraawwaa aauuttoorrsskkiiee.. Prawa autorskie należą do Ofera Maora <ofer@hadar.co.il>. O ile nie stwierdza się inaczej, dokumenty HOWTO są chronione prawami autorskimi ich autorów. Mogą one być rozprowadzane w całości lub w części, w jakiejkolwiek postaci fizycznej czy elektronicznej tak długo, dopóki znajduje się w nich ta wzmianka. Dystrybucja komercyjna jest dozwolona, a nawet zachęca się do niej; chociaż autor chciałby być poinformowany o takowej. Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem. Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO. Jeśli masz jakieś pytania, skontaktuj się z Oferem Maorem pod adresem <_o_f_e_r_@_h_a_d_a_r_._c_o_._i_l> - autorem tego dokumentu, albo Gregiem Hankinsem - koordynatorem projektu Linux HOWTO pod adresem <_g_r_e_g_h_@_s_u_n_s_i_t_e_._u_n_c_._e_d_u>. Jeśli masz coś do dodania, skontaktuj się proszę z autorem (Ofer Maor <ofer@hadar.co.il>). Szczególnie mile widziane są informacje o pojawieniu się nowszych narzędzi. 11..11.. PPooddzziięękkoowwaanniiaa.. Chciałbym wyrazić podziękowania autorowi NFS-Root Howto, Andreasowi Kostyrce (htmlurl url="mailto:andreas@medman.ag.or.at" name="andreas@medman.ag.or.at"). Jego dokument pomógł mi w pierwszych krokach przy tworzeniu stacji bezdyskowych. Moje mini-howto nie próbuje w żaden sposób zamienić jego pracy, ale rozszerzyć ją posługując się moimi doświadczeniami. Chciałbym także podziękować Markowi Kushinsky (htmlurl url="mailto:mark026@ibm.net" name="mark026@ibm.net") za "wypolerowanie" stylu i sprawdzenie poprawności językowej tego Howto, co znacznie poprawiło jego czytelność. 22.. PPrrzzeeddmmoowwaa.. Dokument ten został napisany, aby pomagać ludziom, którzy chcą używać montowania głównego systemu plików z sieci, żeby stworzyć katalogi klienta. Zauważ, że jest wiele sposobów na zrobienie tego, zależnie od twoich potrzeb i intencji. Jeśli klienci są indywidualni a każdy z nich ma własnych użytkowników i administratora konieczne będzie, aby znaczące katalogi klienta nie były współdzielone z innymi klientami. Z drugiej strony, jeśli klient jest przeznaczony dla wielu użytkowników i wszystkie są administrowane przez tę samą osobę (na przykład, klasa komputerowa), tyle plików ile się tylko da musi być wspołdzielone, aby uczynić zarządzanie prostszym. Dokument ten skupi się na tym drugim zagadnieniu. 22..11.. PPrrzzeegglląądd ooggóóllnnyy.. Podczas tworzenia katalogu głównego dla klienta oraz prób limitowania do minimum rozmiaru tego katalogu, głównie skupiamy się na tym, które pliki możemy współdzielić albo montować z serwera. W tym Howto będę zalecał konfigurację klienta na podstawie moich doświadczeń. Ale zanim zaczniemy zapamiętaj: ˇ Dokument ten nie wyjaśnia jak właściwie zamontować główny system plików. Jeśli chcesz więcej informacji, to odwołaj się do NFS-Root mini-howto <http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/html/NFS- Root.pl.html>. ˇ Większość mojej konfiguracji jest zrobiona poprzez montowanie i symboliczne dołączenia. Wiele z tym dołączeń może zostać zastąpiona dołączeniami stałymi. Wybierz w zależności od własnych upodobań. Robienie dołączenia stałego poprzez montowanie czy dołączenie symboliczne ma swoje zalety, ale może też powodować problemy. Plik nie zostanie skasowany dopóki wszystkie stałe dołączenia do niego nie zostaną zlikwidowane. Przez to, jeśli będziesz uaktualniał jakiś plik, dowiązania będą ciągle wskazywały na stary plik. Musisz więc sprawdzać za każdym razem wszystkie dołączenia, które zrobiłeś. ˇ Podczas montowania informacji z serwera można użyć dwóch sposobów. Pierwszy (bardziej popularny), to zamontować cały katalog główny serwera pod jakiś lokalny katalog a następnie zmienić ścieżkę albo dołączyć tam odpowiednie katalogi. Osobiście nie lubię montowania katalogu głównego serwera na stacji roboczej. Dlatego, poniższy dokument sugeruje montowanie odpowiednich podkatalogów z serwera na odpowiadające im katalogi na stacji. ˇ Dokument ten jest zrobiony na podstawie moich doświadczeń dotyczących robienia katalogów klienta na dystrybucji Slackware 3.1. Poszczególne pliki mogą się różnić (szczególnie rc.*), ale ogólna idea powinna pozostać ta sama. 33.. TTwwoorrzzeenniiee ggłłóówwnneeggoo kkaattaalloogguu kklliieennttaa.. 33..11.. TTwwoorrzzeenniiee ddrrzzeewwaa kkaattaallooggóóww.. Przede wszystkim musisz stworzyć strukturę katalogów. Ja stworzyłem wszystkie katalogi w /clients/hostname i będę używał tego katalogu do przykładów. Chociaż jeśli chcesz, to możesz sobie zmienić ten katalog na inny. Pierwszym krokiem jest zrobienie odpowiednich katalogów. Powinny to być następujące: bin, dev, etc, home, lib, mnt, proc, sbin, server, tmp, usr, var i wszelkie inne katalogi jakie chcesz mieć na stacji. Katalogi _l_o_c_a_l_, _p_r_o_c _i _d_e_v będą użyte oddzielnie dla każdej stacji, a reszta będzie współdzielona. 33..22.. TTwwoorrzzeenniiee mmiinniimmaallnneeggoo ssyysstteemmuu pplliikkóóww ppoottrrzzeebbnneeggoo ddoo ssttaarrttuu.. 33..22..11.. TTwwoorrzzeenniiee kkaattaalloogguu ddeevv.. Właściwie katalog _d_e_v może być współdzielony, ale lepiej jeśli nie jest. Zawartość tego katalogu możesz stworzyć odpowiednim skryptem, chcociaż prościej jest go po prostu skopiować z serwera: ______________________________________________________________________ cp -a /dev /clients/hostname ______________________________________________________________________ Musisz pamiętać, że /dev/mouse, /dev/cdrom i /dev/modem są symbolicznymi dowiązaniami to właściwych urządzeń, i dlatego powinieneś się upewnić, że wskazują one na poprawne urządzenia zgodnie ze sprzętem w stacji. 33..22..22.. KKooppiioowwaanniiee ppoottrrzzeebbnnyycchh bbiinnaarriióóww.. Pomimo, iż montujemy wszystko z serwera jest pewna minimalna ilość plików, które musimy skopiować do każdego klienta. Przede wszystkim potrzebujemy _i_n_i_t_-_a, nasz system nie będzie w stanie uruchomić czegokolwiek przed uruchomieniem _i_n_i_t_-_a (czego autor doświadczył na własnej skórze ;) ). Tak więc najpierw skopiuj /sbin/init do katalogu _s_b_i_n klienta, potem skopiuj /bin/sh do katalogu _b_i_n klienta, żeby skrypt rc.S mógł się wykonać. Żeby wszystko zamontować potrzebujesz także programu _m_o_u_n_t - skopiuj go do katalogu _s_b_i_n klienta. To jest zupełne minimum zakładając, że pierwszą linijką w _r_c_._S jest mount -av Zalecam jednak skopiowanie jeszcze kilku plików: _u_p_d_a_t_e_, _l_s_, _r_m_, _c_p _o_r_a_z _u_m_o_u_n_t, tak żebyś miał podstawowe narzędzia w razie gdyby klientowi nie powiodło się montowanie. Jeśli zostawisz linię właczającą swap przed linią montującą katalogi, to musisz także skopiować program _s_w_a_p_o_n. Ponieważ większość z tych programów jest dynamicznie łączona z bibliotekami, będziesz też potrzebował sporej części katalogu /lib: ______________________________________________________________________ cp -a /lib/ld.* /lib/libc.* /lib/libcursses.* /client/hostname/lib ______________________________________________________________________ Rozważ też możliowość stałego dowiązania zamiast kopiowania. Przeczytaj mój komentarz na ten temat w sekcji ``Przegląd ogólny''. Zauważ, że powyższe informacje zakładają, że parametry sieciowe zostały przekazane do jądra podczas startu. Jeśli masz zamiar użyć RARP lub BOOTP, będziesz także potrzebował odpowiednich binariów. Ogólnie potrzebujesz minimum te programy, które pozwolą ci skonfigurować sieć i uruchomić skrypt _r_c_._S do momentu zamontowania wszystkich katalogów z serwera. 33..22..33.. KKaattaalloogg vvaarr.. W większości przypadków katalog _v_a_r powinien być osobny dla każdego klienta. Chociaż wiele danych może być współdzielonych. Stwórz w katalogu głównym stacji katalog _v_a_r. Zamontujemy tam katalog _v_a_r z serwera. Aby stworzyć katalog _v_a_r napisz: ______________________________________________________________________ cp -a /var /clients/hostname/ ______________________________________________________________________ Teraz możesz wybrać co chcesz współdzielić, a co chcesz mieć osobne dla każdego klienta. Każdy plik/katalog, który chcesz współdzielić usuń i stwórz symboliczne dołączenie do /serwer/var. Zauważ, że musisz dołączyć go albo do katalogu /serwer/var albo do ../serwer/var, ale NNIIEE do /clients/hostname/serwer/var ponieważ nie będzie to działało kiedy zmieni się katalog główny. Ogólnie polecałbym oddzielić katalogi /var/run, /var/lock, /var/spool, oraz /var/log. 33..22..44.. RReesszzttaa kkaattaallooggóóww.. ˇ _e_t_c jest wyjaśniony dokładnie w następnej sekcji ˇ _m_n_t _i _p_r_o_c są przeznaczone do celów lokalnych ˇ _u_s_r _i _h_o_m_e są tylko katalogami do zamontowania ˇ _t_m_p zależy od ciebie. Możesz stworzyć różne katalogi _t_m_p dla klientów, albo stworzyć kilka katalogów /clients/tmp i zamontować je dla każdego klienta pod /tmp. Ja zalecałbym osobne katalogi _t_m_p dla każdego klienta. 33..33.. TTwwoorrzzeenniiee kkaattaalloogguu eettcc oorraazz kkoonnffiigguurraaccjjaa kklliieennttaa.. Zapamiętaj - sekcja ta odnosi się do tworzenia katalogu _e_t_c, który w większości przypadków jest współdzielony między klientami. Jeśli twoi klienci mają osobnych administratorów, najlepiej zrobić osobne katalogi _e_t_c dla każdego klienta. 33..33..11.. TTwwoorrzzeenniiee kkaattaalloogguu ddllaa wwsszzyyssttkkiicchh kklliieennttóóww.. Pomimo, iż oddzielamy katalogi _e_t_c, to i tak większą część stamtąd chcemy współdzielić. Ogólnie sądzę, że współdzielenie katalogu _e_t_c z serwerem nie jest dobrym pomysłem, dlatego zalecam stworzenie katalogu /clients/etc, w którym będą przechowywane informacje dla klientów. Na początek po prostu skopiuj katalog _e_t_c serwera do katalogu dla klientów. Powinieneś dodać do tego katalogu wszystkie pliki konfiguracyjne nie związane z konkretnym komputerem, np.: _m_o_t_d_, _i_s_s_u_e itp., ale nie specyficzne dla komputera (_f_s_t_a_b _c_z_y _i_n_i_t_t_a_b). Najważniejsze zmiany będą w katalogu _r_c_._d. Najpierw powinieneś zmienić _r_c_._i_n_e_t_1, tak aby odzwierciedlał twoją lokalną sytuację. Ja przekazuję parametry sieciowe do jądra podczas startu, dlatego wyrzuciłem prawie wszystko z tego pliku. Jedynymi poleceniami jakie tam zostawiłem, to _i_f_c_o_n_f_i_g _i _r_o_u_t_e konfigurujące urządzenie loopback (localhost). Jeśli używasz RARP-a albo BOOTP, to będziesz musiał je stosowanie zrobić. Po drugie powinieneś wyedytować swój plik _r_c_._S. Najpierw wyrzuć stamtąd wszystko co dotyczy sprawdzania dysku (polecenia _f_s_c_k) ponieważ będzie to robione przy starcie serwera. Potem powinieneś znaleźć linię, która montuje twoje katalogi; powinna wyglądać mniej więcej tak: mount -avt nonfs Parametr _-_t _n_o_n_f_s jest dlatego, że normalne stacje robocze najpierw wykonują skrypt _r_c_._S a potem _r_c_._i_n_e_t_1, aby skonfigurować Ethernet. Ponieważ to spowodowałoby, że żaden system NFS nie zamontowałby sie linia ta powinna zostać usunięta. Zmień ją na: mount -av Jeśli musisz uruchomić RARP/BOOTP, aby skonfigurować swoją sieć, zrób to w _r_c_._S (albo wywołaj odpowiedni skrypt z _r_c_._S) przed montowaniem i upewnij się, ze twoje fizyczne katalogu _b_i_n _i _s_b_i_n zawierają potrzebne programy. Po poleceniu _m_o_u_n_t _-_a_v będziesz miał działający system plików. Stwórz ogólny plik _f_s_t_a_b, tak żebyś mógł go skopiować dla każdego klienta. Powinien on wyglądać mniej więcej tak: server/nfs default 1 1 server:/bin /bin nfs default 1 1 server:/usr /usr nfs default 1 1 server:/sbin /sbin nfs default 1 1 server:/home /home nfs default 1 1 server:/lib /lib nfs default 1 1 server:/clients/etc /server/etc nfs default 1 1 server:/clients/var /server/var nfs default 1 1 none /proc proc default 1 1 Upewnij się także, że plik /etc/exports na serwerze wygląda tak: /clients/hostname hostname.domainname(rw,no_root_squash) /clients/etc hostname.domainname(ro,no_root_squash) /clients/var hostname.domainname(ro,no_root_squash) /usr hostname.domainname(ro,no_root_squash) /sbin hostname.domainname(ro,no_root_squash) /bin hostname.domainname(ro,no_root_squash) /lib hostname.domainname(ro,no_root_squash) /home hostname.domainname(rw,no_root_squash) We wszystkich liniach oprócz pierwszej powinieneś wstawić jakąś maskę, do której pasują wszystkie komputery będące klientami (np. pc*.twoja.domena). Sugeruję, żeby większość katalogów była tylko-do- odczytu, ale to zależy od ciebie. Parametr _n_o___r_o_o_t___s_q_u_a_s_h spowoduje, że użytkownicy "root" na kliencie będą także mieli przywileje "root-a" na serwerze. Sprawdź _m_a_n _e_x_p_o_r_t_s. Jeśli chcesz, żeby użytkownicy na klientach mogli uruchamiać _p_a_s_s_w_d , to sprawdź czy katalog _e_t_c jest zamontowany z prawem zapisu, chociaż osobiście tego nie polecam. Zauważ jeszcze jedno dotyczące skryptu _r_c_._S. Domyślnie w Slackware pliki /etc/issue i /etc/motd są tworzone od nowa po każdym resetwoaniu serwera. Jeśli pliki te są montowane bez zapisu, to funkcja ta MMUUSSII zostać wyłączona a ja zalecałbym wyłączyć ją na zapas. I ostatnia sprawa. Jeśli chcesz mieć tę samą bazę użytkowników na kliencie i na serwerze, to musisz wybrać między: 1. używaniem NIS-a (Yellow Pages, sprawdź NIS-HOWTO <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/NIS-HOWTO>, a potem każdy klient będzie miał osobne pliki /etc/passwd i /etc/group jak je otrzyma od serwera. 2. w większośći wypadków, proste symboliczne dołączenie wystarczy. Dlatego będziesz musiał, albo dołączyć na stałe /clients/etc/passwd do /etc/passwd, albo jeśli wolisz dołączenia symboliczne to dołączyć /etc/passwd do /clients/etc/passwd (nie w drugą stronę, ponieważ klienci nie montują katalogu _e_t_c serwera). To samo dla /etc/group. 33..33..22.. TTwwoorrzzeenniiee kkaattaalloogguu eettcc ddllaa kklliieennttaa.. Ogólnie, większość plików w katalogu _e_t_c klienta powinna być dołączona symbolicznie do plików z katalogu _e_t_c serwera. Ale niektóre z nich są różne dla każdej maszyny, a niektóre po prostu muszą się tam znajdować kiedy ładuje się jądro. Oto minimalna zawartość katalogu _e_t_c: resolv.conf hosts inittab rc.d/rc.S fstab Ponieważ te pięć plików może być identyczne dla każdego klienta, możesz je skopiować, albo dołączyć na stałe. Chociaż zaleca się żeby pliki _r_c_._S i _f_s_t_a_b były osobne dla każdego klienta. Będziesz także potrzebował osobnego pliku _H_O_S_T_N_A_M_E dla każdego klienta. Osobiście uważam, że cały podkatalog _r_c_._d powinien być osobny dla każdego klienta ponieważ konfiguracja i sprzęt mogą się różnić. Dla każdego klienta dodaj do _f_s_t_a_b odpowiednią linię dla swapa: /dev/swap_prttn swap swap default 1 1 Reszta plików z _e_t_c klienta może być albo dołączona na stałe do plików /clients/etc/* albo podłączona symbolicznie do /serwer/etc (który jest punktem do montowaina dla /clients/etc). Upewnij się, że twój klient umie poprawnie rozwiązywać nazwy kanoniczne poprzez _n_a_m_e_d albo etc/hosts. Nie jest złym pomysłem trzymanie IP serwera w pliku etc/hosts, zamiast liczyć na rozwiązywanie nazw. Jeśli będziesz liczyć tylko na to, to problem z _n_a_m_e_d_-_e_m spowoduje, że twoi klienci nie będą mogli wystartować. 33..44.. SSttaarrttoowwaanniiee.. Teraz wszystko, co musisz zrobić to zrestartować komputer, trzymać kciuki i mieć nadzieję, że wszystko pójdzie gładko. :) 44.. TTwwoorrzzeenniiee wwiięękksszzeejj iilloośśccii kklliieennttóóww.. Jeśli przestrzegałeś moich instrukcji, to powinno to być proste: cd /clients/ cp -a hostname1 hostname2 a potem upewnij się, że sprawdziłeś to: ˇ pliki rc.d/* odpowiadają sprzętowi i konfiguracji oprogramowania ˇ linia dotycząca swap-a w _f_s_t_a_b jest poprawna ˇ symboliczne dowiązania _d_e_v_/_m_o_u_s_e_, _d_e_v_/_m_o_d_e_m _o_r_a_z _d_e_v_/_c_d_r_o_m są poprawne. PPoowwooddzzeenniiaa ...... 44..11.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl ����������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/NFS-Root.pl.txt���������������������������������������������������0100664�0001750�0001750�00000043040�07104371340�020047� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Jak założyć główny system plików przez NFS. Autor: Andreas Kostyrka, andreas@ag.or.at v8, 8 Sierpnia 1997 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.1, 4 Listopada 1997 Dokument ten próbuje wyjaśnić jak ustawić bezdyskową stację roboczą, która montuje swój główny system plików poprzez NFS na Linux-ie. Dokument ten został napisany w standardzie ISO-8859-2. Najnowsza wer­ sja oryginału jest dostępna na SUNSite Polska <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/mini/NFS-Root>. Odnośnie nowszych wersji tłumaczenia zobacz sekcję ``Od tłumacza.'' ______________________________________________________________________ Spis treści 1. Prawa autorskie. 1.1 Współpracownicy. 2. Przegląd ogólny. 3. Ustawienia na serwerze. 3.1 Kompilacja jądra. 3.2 Tworzenie głównego systemu plików. 3.2.1 Kopiowanie systemu plików. 3.2.2 Zmiany w głównym systemie plików 3.2.3 Exportowanie systemu plików. 3.2.4 Ustawienie RARP. 3.2.5 Ustawianie BOOTP 3.2.6 Odszukiwanie adresu sprzętowego. 4. Startowanie stacji roboczej. 4.1 Używanie "boot rom-u". 4.2 Używanie dysku z surowym jądrem. 4.3 Używanie "bootloader-a" i RARP-a. 4.4 Używanie "bootloader-a" bez RARP-a. 5. Znane problemy. 5.1 /sbin/init nie startuje. 5.2 Problemy z /dev. 6. Inne tematy. 6.1 Od tłumacza. ______________________________________________________________________ 11.. PPrraawwaa aauuttoorrsskkiiee.. Prawa autorskie należą do Andreasa Kostyrki (e9207884@student.tu(-)wien.ac.at lub andreas@ag.or.at) O ile nie stwierdza się inaczej, dokumenty HOWTO są chronione prawami autorskimi ich autorów. Mogą one być rozprowadzane w całości lub w części, w jakiejkolwiek postaci fizycznej czy elektronicznej tak długo, dopóki znajduje się w nich ta wzmianka. Dystrybucja komercyjna jest dozwolona, a nawet zachęca się do niej; chociaż autor chciałby być poinformowany o takowej. Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem. Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO. Jeśli masz jakieś pytania, skontaktuj się z Andreasem Kostyrką pod adresem <_a_n_d_r_e_a_s_@_a_g_._o_r_._a_t> - autorem tego dokumentu, albo Gregiem Hankinsem - koordynatorem projektu Linux HOWTO pod adresem <_g_r_e_g_h_@_s_u_n_s_i_t_e_._u_n_c_._e_d_u>. 11..11.. WWssppóółłpprraaccoowwnniiccyy.. ˇ Avery Pennarun (jak startować bez LILO) ˇ Ofer Maor (dostarczenie lepszego mini-howto o ustawianiu stacji bezdyskowych) ˇ Christian Leutloff (dostarczenie informacji na temat startu przez sieć) 22.. PPrrzzeegglląądd ooggóóllnnyy.. Ogólnie mówiąc są dwa następujące problemy dla stacji roboczych: ˇ musi ona znaleźć swój numer IP, a jeśli to konieczne także resztę konfiguracji ethernet-owej ˇ musi ona znać serwer NFS oraz ścieżkę, z której ma sobie zamontować swój główny system plików. Bieżąca implementacja _N_F_S_R_O_O_T w jądrze Linux-a (dotyczy 1.3.7x) pozwala na następujące rozwiązania: ˇ Adres IP może być odnaleziony poprzez _R_A_R_P, albo możemy przekazać do jądra pełną konfigurację poprzez parametry _L_I_L_O albo _L_O_A_D_L_I_N_-_a. Jeśli tego nie zrobimy, to jądro przyjmuje, że serwer _R_A_R_P jest także serwerem _N_F_S i używa wkompilowanej, domyślnej ścieżki. W tej chwili jest to /tftpboot/<_a_d_r_e_s_-_I_P_-_m_a_s_z_y_n_y>/. ˇ Konfiguracja klienta jest pobierana poprzez _B_O_O_T_P. Przed rozpoczęciem ustawiania środowiska bezdyskowego, powinieneś zdecydować czy będziesz startował przez _L_I_L_O, czy przez _L_O_A_D_L_I_N. Zaletą tego jest elastyczność, wadą natomiast prędkość. Startowanie przez _L_I_L_O jest szybsze. 33.. UUssttaawwiieenniiaa nnaa sseerrwweerrzzee.. 33..11.. KKoommppiillaaccjjaa jjąąddrraa.. Dobrym pomysłem będzie wkompilowanie obsługi _R_A_R_P w jądro. Musisz ją mieć jeśli będziesz startował bez parametrów. Z drugiej strony, nie pomoże ci to, jeśli serwer jest w innej podsieci niż klient. Jądro na stację musi mieć następujące elemnty wkompilowane w jądro: ˇ system plików _N_F_S. (ext2 nie musi być wkompilowane, wystarczy moduł) ˇ "Root on NFS" musi być włączone. ˇ sterownik do karty sieciowej zamontowanej na stacji. ˇ w zależności od twoich potrzeb możesz wkompilować obsługę _R_A_R_P lub _B_O_O_T_P dla "NFS-Root". (Rozumiem przez to pytania zadawane ppoo pytaniu o "NFS") Jeśli stacja robocza będzie startowana bez parametrów, musisz także ustawić urządzenie głównego systemu plików na 0:255. Robi się to poprzez utworzenie urządzenia w katalogu /dev poleceniem ______________________________________________________________________ mknod /dev/nfsroot b 0 255 ______________________________________________________________________ Po utworzeniu takiego urządzenia możesz ustawić urządzenie głównego systemu plików w jądrze poleceniem ______________________________________________________________________ rdev <jądro> /dev/nfsroot ______________________________________________________________________ 33..22.. TTwwoorrzzeenniiee ggłłóówwnneeggoo ssyysstteemmuu pplliikkóóww.. 33..22..11.. KKooppiioowwaanniiee ssyysstteemmuu pplliikkóóww.. _U_W_A_G_A_: _i_n_s_t_r_u_k_c_j_a _t_a _m_o_ż_e _d_z_i_a_ł_a_ć _u _c_i_e_b_i_e_, _a_l_e _w_c_a_l_e _n_i_e _m_u_s_i _b_y_ć _s_e_n_s_o_w_n_a _w _ś_r_o_d_o_w_i_s_k_u _p_r_o_d_u_k_c_y_j_n_y_m_. _L_e_p_s_z_y _s_p_o_s_ó_b _u_s_t_a_w_i_e_n_i_a _g_ł_ó_w_n_e_g_o _s_y_s_t_e_m_u _p_l_i_k_ó_w _n_a _s_t_a_c_j_i _z_n_a_j_d_u_j_e _s_i_ę _w _N_F_S_-_R_o_o_t_-_C_l_i_e_n_t _<ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/NFS-Root- Client> Jak już zdecydowałeś, gdzie umieścisz główny system plików, stwórz go np. poleceniem ______________________________________________________________________ mkdir -p <katalog> tar cClf / - | tar xpCf <katalog> - ______________________________________________________________________ Jeśli startujesz jądro bez LILO, wtedy katalogiem głównym musi być /tftpboot/<_I_P_-_a_d_r_e_s>. Jeśli ci się to nie podoba, możesz go zmienić w pliku _M_a_k_e_f_i_l_e w żródłach jądra, poszukaj linii podobnej do tej: NFS_ROOT = -DNFS_ROOT="\"/tftpboot/%s\"" Jeśli to zmienisz musisz przekompilować jądro. 33..22..22.. ZZmmiiaannyy ww ggłłóówwnnyymm ssyysstteemmiiee pplliikkóóww Teraz wyrzuć niepotrzebne pliki i sprawdź skrypty w /etc/rc.d. Kilka ważnych wskazówek: ˇ Jedną ważną rzeczą jest ustawienie _e_t_h_0. Stacja robocza ma już, przynajmniej częściowo, ustawiony ten interfejs. Ustawienie adresu IP stacji na adres IP serwera nie jest najmądrzejszym pomysłem. (jak to się przytrafiło autorowi w początkowych próbach) ˇ Innym ważnym punktem jest /etc/fstab na stacji. Powinien on być ustawiony dla systemu plików NFS. ˇ UUWWAAGGAA:: Nie pomyl głównego systemu plików serwera i stacji roboczej. (Już poprawiłem rc.inet1 na serwerze i zastanawiałem się dlaczego stacja dalej nie działa) 33..22..33.. EExxppoorrttoowwaanniiee ssyysstteemmuu pplliikkóóww.. Wyeksportuj główny katalog dla stacji roboczej. Szczegóły są w podręczniku systemowym (_m_a_n _e_x_p_o_r_t_s). Najprzypuszczalniej po zmianach będziesz musiał zrestartować _n_f_s_d _i _m_o_u_n_t_d. W dystrybucji RedHat można to łatwo zrobić: ______________________________________________________________________ /etc/rc.d/init.d/nfs stop /etc/rc.d/init.d/nfs start ______________________________________________________________________ 33..22..44.. UUssttaawwiieenniiee RRAARRPP.. Ustaw gdzieś na sieci _R_A_R_P. Jeśli startujesz stację bez parametru _n_f_s_r_o_o_t, to serwer _R_A_R_P musi być serwerem _N_F_S. Aby to zrobić potrzebujesz jądra z obsługą _R_A_R_P. Robi się to poleceniem ______________________________________________________________________ /sbin/rarp -s <adr_ip> <adr_sprzętowy> ______________________________________________________________________ gdzie aaddrr__iipp jest adresem IP stacji roboczej a aaddrr__sspprrzzęęttoowwyy jest adresem ethernet-owym karty sieciowej stacji roboczej. Przykład: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12 Możesz także użyć nazwy symbolicznej zamiast adresu IP, jeśli serwer może odszukać sobie adres IP. (/etc/hosts lub _D_N_S). 33..22..55.. UUssttaawwiiaanniiee BBOOOOTTPP Aby ustawić _B_O_O_T_P musisz wyedytować plik /etc/bootptab. Przeczytaj strony podręcznika systemowego na temat _b_o_o_t_p_d oraz _b_o_o_t_p_t_a_b. 33..22..66.. OOddsszzuukkiiwwaanniiee aaddrreessuu sspprrzzęęttoowweeggoo.. Nie znam adresu sprzętowego !!! Jak mam go odszukać ? ˇ Wystartuj z dysku z jądrem, które zrobiłeś, i szukaj linii, w której jest rozpoznawana karta sieciowa. Zwykle zawiera ona 6 liczb szesnastkowych, które są adresem sprzętowym karty. ˇ Wystartuj stację roboczą z jakimś systemem operacyjnym, który posiada protokół TCP/IP. Uruchom polecenie _p_i_n_g do stacji roboczej z serwera. Spójrz do cache'u ARP-a poleceniem: ___________________________________________________________________ /sbin/arp -a ___________________________________________________________________ 44.. SSttaarrttoowwaanniiee ssttaaccjjii rroobboocczzeejj.. 44..11.. UUżżyywwaanniiee ""bboooott rroomm--uu"".. Ponieważ samemu jeszcze tego nie używałem mogę ci dać tylko nastepujące wskazówki (ukłony w stronę Christiana Leutloffa <leutloff@sundancer.tng.oche.de>): ˇ Nie możesz używać "normalnych" bootrom-ów. ˇ W pakiecie _n_e_t_b_o_o_t zrobionym przez Gero Kuhlmanna znajdziesz informacje na temat bootrom-ów dla Linux-a i wiele innych. Pakiet ten jest dostępny na SUNSite Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/boot/> pod nazwą _n_e_t_b_o_o_t_-_*. ˇ Przeczytaj dokładnie dokumentację dostarczoną wraz z twoim bootrom- em. ˇ Przypuszczalnie bedziesz musiał włączyć tftpd na serwerze, ale to zależy od sposobu w jaki twój boot rom ładuje jądro. ˇ _W_s_z_e_l_k_i_e _i_n_f_o_r_m_a_c_j_e _n_a _t_e_m_a_t _s_p_r_z_e_d_a_w_c_ó_w _b_o_o_t_r_o_m_-_ó_w _d_l_a _L_i_n_u_x_-_a _s_ą _m_i_l_e _w_i_d_z_i_a_n_e_. _P_o_n_i_e_w_a_ż _n_i_e _w_s_z_y_s_c_y _m_a_j_ą _d_o_s_t_ę_p _d_o _p_r_o_g_r_a_m_a_t_o_r_ó_w _P_R_O_M_-_ó_w _(_s_z_c_z_e_g_ó_l_n_i_e _w _E_u_r_o_p_i_e_, _g_d_z_i_e _j_a _m_i_e_s_z_k_a_m_)_. 44..22.. UUżżyywwaanniiee ddyysskkuu zz ssuurroowwyymm jjąąddrreemm.. Jeśli wyeksportowałeś główny system plików z poprawną domyślną nazwą oraz twój serwer _N_F_S jest także serwerem _R_A_R_P (z czego wynika, że obie maszyny są w tej samej podsieci), wtedy możesz wystartować jądro przez proste "zrzucenie" go na dysk za pomocą polecenia _c_a_t. (Musisz ustawić urządzenie głównego systemu plików w jądrze na 0:255) Przy takich ustawieniach, katalog główny na serwerze jest w /tftpboot/_a_d_r_e_s_-_I_P. (wartość ta może być zmieniona przy kompilacji jądra) 44..33.. UUżżyywwaanniiee ""bboooottllooaaddeerr--aa"" ii RRAARRPP--aa.. Przekaż do jądra podczas startu wszystkie potrzebne parametry oraz dodaj nfsroot=<_s_e_r_w_e_r_-_I_P>:<_/_ś_c_i_e_ż_k_a_/_d_o_/_z_a_m_o_n_t_.> gdzie _s_e_r_w_e_r_-_I_P jest adresem IP serwera NFS a _/_ś_c_i_e_ż_k_a_/_d_o_/_z_a_m_o_n_t_. jest ścieżką do głównego katalogu. Wskazówki: ˇ Jeśli używasz LLIILLOO rozważ użycie cechy _l_o_c_k: po prostu wpisz raz wszystkie parametry i _l_o_c_k. Następnym razem jak będziesz startował LILO poczekaj aż się skończy czas i zacznie samo ładować system. ˇ Podczas generowania specyficznego dysku startowego dla stacji możesz użyć polecenia _a_p_p_e_n_d_= w pliku lilo.conf. 44..44.. UUżżyywwaanniiee ""bboooottllooaaddeerr--aa"" bbeezz RRAARRPP--aa.. Dodatkowo oprócz parametru _n_f_s_r_o_o_t użyj jeszcze parametru nfsaddrs=<_s_t_-_I_P>:<_s_r_w_-_I_P>:<_g_w_-_I_P>:<_n_e_t_m_-_I_P>:<_n_a_z_w_a>. Jądro ustawi interfejs _e_t_h_0 z podanymi parametrami: sstt--IIPP adres IP stacji roboczej ssrrww--IIPP adres IP serwera NFS ggww--IIPP wrota (gateway) nneettmm--IIPP maska podsieci nnaazzwwaa nazwa stacji 55.. ZZnnaannee pprroobblleemmyy.. 55..11.. //ssbbiinn//iinniitt nniiee ssttaarrttuujjee.. Popularnym problemem jest fakt, że niektóre (przynajmniej) najnowsze dystrybucje mają program /sbin/init łączony dynamicznie. Musisz więc udostępnić odpowiednie biblioteki w katalogu /lib u klienta. Prostą rzeczą jaką można zrobić, to zamiana /sbin/init (u klienta) na statycznie łączony program typu ``Hello World''. W ten sposób można sprawdzić czy mamy do czynienia rzeczywiście z problemem z programem łączonym dynamicznie czy może z czymś prostszym. 55..22.. PPrroobblleemmyy zz //ddeevv.. Jeśli przy starcie pojawiają ci się jakieś pokręcone komunikaty o "tty", to powinieneś uruchomić skrypt MAKEDEV u klienta w katalogu /dev. Chodzą słuchy, że nie działa on na systemach serwerowych, które używają liczb 64-bitowych do numerowania urządzeń. Jeśli zdarzy ci się taki problem, to napisz do mnie proszę na jakim systemie ci się to stało. Potencjalnym rozwiązaniem powinno być utworzenie małego ramdysku z katalogiem /dev i każdorazowa reinstalacja plików urządzeń. 66.. IInnnnee tteemmaattyy.. ˇ Pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/system/network/admin/> można znaleźć klienta BOOTP. Jest w katalogu /pub/Linux/sunsite/system/network/admin/ i nazywa się bootpc*tgz. Bezdyskowe stacje można zrobić całkiem prosto posługując się initrd (który jest dołączony do Linux-a 2.0). initrd jest właściwie zaawansowaną opcją w większości ustawień. ˇ Dla rozwiązań opartych tylko na bootpd, nie jest to właściwie potrzebne, ponieważ Linux 2.0 zawiera także opcję użycia BOOTP zamiast RARP. (A dokładniej, możesz wkompilować obie te usługi w jądro i wtedy szybsza odpowiedź wygrywa.) ˇ W katalogu Documentation w źródłach jądra znajduje się plik z opisem systemów NFS-Root. ˇ Wiem, że jest jakaś łata, która pozwala na swapowanie poprzez sieć. Ktoś mi ją przysłał (kiedy byłem akurat bardzo obładowany pracą) i udało mi się ją jakoś zgubić :( Przypuszczalnie możesz ją zdobyć z adresu www.huwig.de/linux/mama. [Od tłumacza: Autor podał tutaj adres www.linuxhq.com, ale niestety ta wspaniała strona zginęła z Internetu. Ja podałem adres, który powstał w zastępstwie kilka dni później.] ˇ Mój publiczny klucz PGP można uzyskać poprzez polecenie finger andreas@ag.or.at. Fingerprint to: F1 F7 43 D5 07 C4 6C 87 BF 6B 33 A2 2C EE 5A F9. 66..11.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/PLIP.pl.txt�������������������������������������������������������0100664�0001750�0001750�00000112675�07104371340�017257� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ LINUX PLIP MINI-HOWTO Autor: Andrea Controzzi controzz@cli.di.unipi.it 22 lipca 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrtteekk PPaappiieerrsskkii bbaarrtteekkpp@@ddoomm..vvrr..ppll v1.0, 10 września 1997 Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem: ftp.icm.edu.pl/pub/Linux/sun­ site/docs/HOWTO ______________________________________________________________________ Spis treści 1. Wstęp: Co to jest PLIP i dlaczego powinienem go używać? 2. Wymagania sprzętowe 3. Rekonfiguracja jądra systemowego 4. Ustawianie plików konfiguracyjnych 5. Aktywacja połączenia PLIP 6. Komunikaty jądra podczas startu 7. Często Zadawane Pytania 8. Szybka instalacja PLIP 9. Wstawki umożliwiające jednoczesne dziłanie PLIP i LP 9.1 PLIP i LP na tym samym porcie 9.2 PLIP i LP na osobnych portach 10. Połączenie PLIP między DOS-em a Linux-em 10.1 Doświadczenia z połąćzeniem PLIP między DOS-em a Linux-em. 11. Pytania? Komentarze? Napisz do mnie. 12. Gdzie można znaleźć najnowsze wersje tego mini-HOWTO. 13. Podziękowania 14. Prawa autorskie 15. Od tłumacza ______________________________________________________________________ Ten dokument HOWTO pozwoli Ci szczęśliwie zbudować i używać protokołu interfejsu równoległego (PLIP). Wszelkie pytania, poprawki, komentarze lub sugestie proszę przesyłać na mój adres E-Mail: controzz@cli.di.unipi.it Pisz do mnie kiedy tylko potrzebujesz pomocy. Czasami nie będę mógł od razu odpowiedzieć, ale na pewno odpowiem. Jeśli się zdarzy, że nie dostaniesz odpowiedzi po dwóch tygodniach, to znaczy, że nasz system jest w kłopotach. Nie wahaj się wtedy napisać ponownie. Moim obowiązkiem jest dać Ci odpowiedź. Po pierwsze, wiele technicznych informacji pochodzi z net-3-HOWTO autorstwa Terry'ego Dawson'a. To mini-HOWTO w żadnym stopniu nie pokrywa tamtego dokumentu. Moim celem jest pokazanie jak szybko zainstalować stałe połączenie PLIP, *TYLKO* to. Wszelkie pozostałe informacje pochodzą z moich własnych doświadczen i pomocy wielu użytkowników, którzy przesyłali mi komentarze i informacje. Przeczytaj net-3-HOWTO i inne dokumenty dla generalnej wiedzy o sieciach i plikach konfiguracyjnych, które będę sugerował do zmian. Poniżej jest spis treści. Możesz szybko odnaleźć paragraf szukając ciągu znaków nn, gdzie nn jest numerem paragrafu. 11.. WWssttęępp:: CCoo ttoo jjeesstt PPLLIIPP ii ddllaacczzeeggoo ppoowwiinniieenneemm ggoo uużżyywwaaćć?? Jest wiele dróg prowadzących do utworzenia połączenia pomiędzy kilkoma hostami. PLIP, podobnie jak SLIP pozwala na lokalne połączenia pomiędzy dwoma maszynami poprzez porty równoległe. Połączenie PLIP jest bardzo podobne do SLIP (z kablem dzierżawionym), ale używa portów równoległych zamiast szeregowych. Port równoległy przesyła więcej niż jeden bit na raz. To oznacza, że jest możliwe osiągnięcie większych prędkości niż przy użyciu interfejsu szeregowego. Interfejs PLIP jest wystarczająco szybki, aby umożliwić takie funkcje funkcje tcp/ip jak NFS na satysfakcjonującym poziomie. Możesz więc mieć swój komputer z Linuxem oraz inny komputer z minimalnym systemem, gdzie możesz montować całą resztę z głównej maszyny. Wadą jest to, że większość użutkowników ma tylko jeden port równoległy. Znaczy to, że nie będziesz mógł jednocześnie drukować i korzystać z PLIP. Do tej pory nawet posiadając dwa lub nawet trzy porty równoległe nie mogłeś używać drukarki i PLIP naraz. Rozwiązaniem było użycie modułów lub innych tricków. Ta wada może być wyeliminowana poprzez zastosowanie wstawki do jądra systemowego. Proszę zobaczyć paragraf ``Wstawki umożliwiające jednoczesne działanie PLIP i LP''. W końcu mogę Ci podać sposób na ustawienie połączenia PLIP pomiędzy DOS a Linuxem. 22.. WWyymmaaggaanniiaa sspprrzzęęttoowwee Sprzętem wymaganym do zestawienia połączenia PLIP są dwa wolne porty (po jednym w każdej maszynie) i kabel. Teraz trochę o kablu. To jest fragment pliku plip.c z źródeł kernela 1.2.13: Kabel używany do połączeń jest de facto standardowym standardowym kablem równoległym typu 'null cable'. Jeśli chcesz go wykonać sam, będziesz potrzebował 12-żyłowy kabel. Połączenia wyglądają następująco: SLCTIN 17 - 17 GROUND 25 - 25 D0->ERROR 2 - 15 15 - 2 D1->SLCT 3 - 13 13 - 3 D2->PAPOUT 4 - 12 12 - 4 D3->ACK 5 - 10 10 - 5 D4->BUSY 6 - 11 11 - 6 Nie łącz pozostałych wtyków. Są to: D5,D6,D7 są 7,8,9 STROBE jest 1, FEED jest 14, INIT jest 16 ekstra uziemnienia to 18,19,20,21,22,23,24 Radzę Ci przeczytać /usr/src/linux/drivers/net/README1.PLIP aby dowiedzieć się więcej o kablu. Według mnie powinieneś unikać budowania swego własnego kabla. Własnoręcznie wykonany kabel może zaoszczędzić niewiele pieniędzy, ale może spowodować wiele bólów głowy. Jeśli chcesz zbudować swój własny kabel, pamiętaj, że robisz to na swoją odpowiedzialność. Napisałem to co zostało umieszczone w plip.c ale nie daję żadnej gwarancji. Ostatnie słowo o długości kabla. Długie kable (więcej niż 3 metry) mogą powodować problemy związane z zakłóceniami radiowymi. Jeśli potrzebujesz długi kabel to powinieneś użyć dobrze ekranowanych kabli. Bardzo długie kable nie są zalecane. Myślę, że maksymalną długością jest 15 metrów. Kiedyś ktoś napisał mi, że używa 30 metrowego kabla. Jednak jeśli ktoś chce próbować połączeń PLIP między biurem a domem (200 metrów) i ma do wydania pieniądze to proszę spróbować. W najgorszym wypadku to nie będzie pracować. 33.. RReekkoonnffiigguurraaccjjaa jjąąddrraa ssyysstteemmoowweeggoo Powinieneś już wiedzieć jak konfigurować i kompilować jądro. W przeciwnym razie radzę pozytać dokumentację (_K_e_r_n_e_l_-_H_O_W_T_O lub inne). Dziękuję za wspaniałą pracę wykonaną przez guru od jądra. Kompilacja jądra jest teraz o wiele łatwiejsza. Poniżej możesz zobaczyć co masz do zrobienia: UUWWAAGGAA::Zakładam, że używasz serii 2.0.xx jądra. Będę też zakładał, że do konfiguracji używasz polecenia menuconfig, ale inne narzędzia też są dozwolone. Pokażę Ci jak to zrobić używając menuconfig: #make menuconfig Mocno polecam aby wybrać: Loadable module support ---> i zaznaczyć: [*] Enable loadable module support I jeśli to możliwe (jęsli masz modules.2.0.0): [*] Kernel daemon support (e.g. autoload of modules) Potem powróć i wybierz: Networking options ---> gdzie powinieneś zaznaczyć przynajmniej to: [*] Network firewalls [*] TCP/IP networking [*] IP: forwarding/gatewaying potem powróc i wybierz: [*] Network device support <M> PLIP (parallel port) support Jeśli używasz modułów to radzę Ci ustawić PLIP jako moduł. Jeśli to zrobisz i chcesz jeszcze używać drukarkę to powędruj do: Character devices ---> i ustaw jako moduł <M> Parallel printer suppport Teraz umożliwiłeś wspomaganie przez jądro dla PLIP. Jeśli będziesz teraz po raz pierwszy kompilował jądro to spójrz na inne opcje i opuść program konfiguracyjny. W końcu dokonaj kompilacji: #make dep; make clean #make zlilo oraz jeśli używasz modułów: #make modules #make modules_install 44.. UUssttaawwiiaanniiee pplliikkóóww kkoonnffiigguurraaccyyjjnnyycchh Po pierwsze pamiętaj aby zrobić kopię bezpieczeństwa wszystkich plików, które będziesz zmieniał, #cp rc.inet1 rc.inet1.BACKUP może być dobrym rozwiązaniem. Jeśli jeszcze tego nie zrobiłeś to musisz wybrać adres IP dwóch maszyn. W moich przykładach będę używał kilka przykładowych IP, które ty wpiszesz w standardowym formacie xxx.xxx.xxx.xxx W /etc/rc.d/inet1.rc na obydwu maszynach dodaj to (lepiej w końcowej części pliku): /sbin/route add -net ${NETWORK} netmask ${NETMASK} gdzie NETWORK i NETMASK powinny być ustawione wcześniej. Jeśli nie wiesz jak to zrobić, proszę przeczytaj _N_E_T_-_2_-_H_O_W_T_O. Możesz bezpiecznie pominąć te zmienne tylko w tych przypadkach: Jeśli jedynie chcesz połączyć dwa komputery w autonomicznej sieci to możesz wybrać dowolne adresy IP, powiedzmy 200.0.0.1 i odpowiednio 200.0.0.2. W tym przypadku ustawiasz NETWORK="200.0.0.0" i NETMASK="255.255.255.0". To są przykłady jakich będę używał w paragrafie ``Szybka instalacja PLIP'' (zobacz poniżej). UUWWAAGGAA:: 200.0.0.1 i 2 to tylko przykładowe IP. Nie radzę Ci ich używać, bo mogą one być adresami prawdziwych hostów w Internecie! Radzę wybrać adres z puli adresów zarezerwowanych: 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255 W pliku /etc/hosts na obydwu komputerach powinieneś dodać pozycje z adresem IP komputerów, które łączysz przez PLIP. W moim przykładzie, pozycjami tego pliku są: 200.0.0.1 one #to jest adres pierwszego komputera 200.0.0.2 two #to jest adres drugiego komputera Gdzie one i two to nazwy, które wybrałeś dla tych dwóch hostów. Jeśli chcesz aktywować NFS, to poza zaznaczeniem odpowiednich pól w konfiguracji jądra, musisz dodać w pliku /etc/exports pozycje opisujące katalogi, które chcesz udostępniać. W moim przykładzie, aby możliwe było zamontowanie katalogu /usr powinieneś dodać: /usr two (ro) 55.. AAkkttyywwaaccjjaa ppoołłąącczzeenniiaa PPLLIIPP Wreszcie, oto komendy, które muszą być wykonane z prawami root'a, które aktywują interfejs PLIP (oczywiście wcześniej musi być poprawnie podłączony kabel). Po pierwsze należy potwierdzić, że urządzenie lp nie jest aktywne: #cat /proc/devices Nie może się pojawić następująca rzecz: 6 lp Ponownie używam nazw one i two jako przykład. Na "one" musisz wydać polecenie: #ifconfig plip1 one pointopoint two up Sprawdź czy to pracuje... #ifconfig ..... ..... plip1 Link encap:10Mbps Ethernet HWaddr FC:FC:C8:00:00:01 inet addr:200.0.0.1 P-t-P:200.0.0.2 Mask:255.255.255.0 UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:7 Base address:0x378 UUWWAAGGAA:: jeśli używasz modułów bez demona kerneld, który automatycznie ładuje odpowiedni moduł na żądanie, to pamiętaj o: #insmod plip przed wydaniem polecenia ifconfig. Jeśli jesteś paranoikiem, sprawdź, czy moduł został załadowany używając polecenia: #lsmod Module: #pages: Used by: plip 3 0 Dodaj routing do two: #route add two I jeżeli chcesz NFS dla drugiego: #rpc.portmap #rpc.mountd #rpc.nfsd Na komputerze "two" komendy wyglądają tak samo, tylko że musisz wpisać one zamiast two. Jeden z Twoich komputerów będzie miał prawdopodobnie tylko połączenie typu PLIP. Jeśli to prawda, możesz także wydać polecenie: #route add default gw one na tym komputerze. W moim poniższym przykładzie, two jest laptopem, który jako jedyne używa połączenia PLIP z one, więc wydałem powyższe polecenie na komputerze two. Wreszcie przetestuj połączenie za pomocą #ping two z one oraz #ping one z two i zobacz czy wszystko pracuje. Oczywiście komendy te mogą być wykonywane automatycznie przez skrypt lub podczas startu systemu. Musisz jedynie napisać skrypt, który wykonywałby te komendy. Możesz je wywołać z prawami root-a lub możesz dodać komendę do skryptu /etc/rc.d/rc.inet2 który jest uruchamiany podczas startu. Jeśli chcesz używać mojej ``Szybkiej Instalacji PLIP'', znajdziesz tam wszystkie pliki konfiguracyjne i skrypty. 66.. KKoommuunniikkaattyy jjąąddrraa ppooddcczzaass ssttaarrttuu Po skonfigurowaniu i kompilacji jądra systemowego z obsługą PLIP, zbadaj komunikaty za pomocą komendy dmesg (8). Powinieneś zobaczyć coś takiego: NET3 PLIP version 2.0 gniibe@mri.co.jp plip1: Parallel port at 0x378, using assigned IRQ 7. Oczywiście, jeżeli używasz modułów to ujrzysz ten komunikat kiedy zostanie zainstalowany moduł plip.c (#insmod plip.c) (przez Ciebie lub przez kerneld). W zależności od konfiguracji klogd i syslogd komunikaty plip-a mogą być rejestrowane w logach systemowych. Nie wpadaj w panikę jeżeli nie ujrzysz tych komunikatów. Jeśli lsmod pokazuje, że moduł jest załadowany to w zupełności wystarczy. 77.. CCzzęęssttoo ZZaaddaawwaannee PPyyttaanniiaa Ten paragraf (mam nadzieję) rozwiążę Twoje problemy. Jeśli masz inne pytania, zawsze możesz do mnie napisać. 1. Q: Otrzymuję następujące komunikaty podczas startu systemu: SIOCSIFADDR: No such device SIOCADDR: Network is unreachable a kiedy próbuję zestawić połączenie jak to zostało opisane powyżej, otrzymuję ponownie komunikaty o błędach: SIOCSIFADDR: No such device SIOCSIDDSTADDR: No such device SIOCADDRT: Network is unreachable mount clntudp_create: RPC: Port Mapper failure - RPC: Unable to send A: Jądro z różnych przyczyn nie obsługuje PLIP. Przyczyną może być: ˇ Nie zaznaczyłeś obsługi PLIP podczas konfiguracji jądra. ˇ Zaznaczyłeś obsługę drukarki podczas konfiguracji jądra. ˇ Skompilowałeś PLIP jako moduł i go nie załadowałeś. 2. Q: Czy istnieje możliwość ogsługi PLIP i LP jednocześnie, wykluczając użycie modułów, na przykład przy dwóch portach równoległych? A: Tak. Są na to dwa sposoby opisane w paragrafie ``Wstawki umożliwiające jednoczesne działanie PLIP i LP'': ˇ Możesz założyć wstawkę aby umożliwić jednoczesne działanie PLIP i LP. ˇ Możesz założyć inną wstawkę do jądra aby obsługiwało ono PLIP i LP na osobnych portach. 3. Q: Napisałem skrypt, który łączy oba moje komputery. Zestawiłem połączenie automatycznie w rc.inet2, gdzie wywołuję skrypt uruchamiający łącze i uruchamiający VFS. Mój komputer two montuje zasoby komputeraone. Dodałem pozycje do /etc/fstab na komputerze two. Jeśli uruchamiam two gdy one jest wyłączony, two zawiesza się na kilka minut w momencie "mounting remote file systems...". A: Tak się dzieje, ponieważ two czeka aby zamontować zasoby one, lecz jeśli one jest wyłączony to musisz poczekać aż two znudzi się czekaniem. Aby tego uniknąć, możesz: ˇ Zakomentować w rc.inet2 komendę, za pomocą której montowane są zdalne systemy plików. ˇ Wyrzucić wpisy w /etc/fstab na two i podmontować zdalny system plików ręcznie jeśli będziesz tego potrzebował. 4. Q: Połączenie jest zestawione, ale ping zawodzi. Otrzymuję takie komunikaty od jądra: plip1: timed out (1, 89) A: To oznacza, że twoja strona połączenia pracuje, twój komputer wysyła sygnał, ale druga strona nie odpowiada z następujących powodów: ˇ Kabel nie jest odpowiednio podłączony lub jest popsuty. ˇ Druga strona nie ma uruchomionego PLIP. ˇ Jesteś połączony z laptopem, który nie ma odpowiedniego portu równoległego, zobacz następne pytanie. 5. Q: Zainstalowałem PLIP, lecz jeśli używam ping to otrzymuję 100% strat w pakietach. Łączę mój komputer biurkowy z notebookiem. A: Niektóre porty równoległe w notebookach nie są odpowiednie do połączeń typu PLIP, ponieważ są tylko portami drukarkowymi. Mogą tylko wysyłać dane. Niemożliwy jest ich odbiór. Niestety nie wiem co sprawić, aby one pracowały. Jedyną nadzieją jest: ˇ Popatrz na setup w swoim notebook-u. Może jest tam jakiś sposób konfigurowania portu równoległego jako port równoległy, a nie jako port drukarki. ˇ Spróbuj plip w trybie 0. Niestety, nie wiem jak to zrobić i czy jest to możliwe w najnowszych wersjach jądra. 6. Q: Jakie prędkości mogę osiągnąć używając PLIP? A: To jest trudne pytanie, ponieważ jest wiele czynników wpływających na wydajność takiego połączenia: ˇ Typ procesora na obydwu komputerach. ˇ Typ portu równoległego i jego konfiguracja. ˇ Obciążenie systemu. ˇ Do czego używasz PLIP. Dla przykładu mogę podać, że powinieneś osiągnąć około 40Kb/sek, o wiele szybciej niż dla połączeń szeregowych i porównywalnie ze słabymi kartami ethernet. 7. Q: Czy coś się stanie, kiedy bedę wiele razy kładł ifconfig down i zetawiał ifconfig up połączenie na interfejsie plip1? A: Wygląda na to, że będziesz musiał dodać <tt/-arp/ do komendy <tt/ifconfig/, za wyjątkiem pierwszego razu podczas startu systemu. Ja tego nie potrzebuje, ale ktoś może. 8. Q: Przeglądałem zarezerwowane adresy IP i podane przez Ciebie adresy 200.0.0.1 i 200.0.0.2 nie należą do nich. Czy nie powinny one być zmienione? A: Tak, powinny. Tak jak podkreśliłem na początku, wybrałem te adresy tylko ze względu na ich prostotę. Możesz je dowolnie zmieniać. Oto wycinek z net-3-howto: RFC1597 zarezerwował kilka adresów IP dla prywatnych sieci. Powinieneś ich używać, gdyż nie powodują nieprzyjemnych zdarzeń gdy przypadkowo połączysz się z Internet. Zarezerwowane adresy to: 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255 9. Q: Czy jest sposób aby dokładnie dostrić parametry PLIP bez ingerencji w źródła? A: Tak! Spróbuj /usr/sbin/plipconfig. Poczytaj podręcznik systemowy dotyczący tej komendy. 10. Q: Mam problemy z połączeniem dwóch hostów za pomocą PLIP. Pierwszy ma najnowsze jądro, a drugi wciąż używa starej serii 1.0.x PLIP. Czy to jest moim problemem? A: Tak, najlepiej jest używać tej samej wersji PLIP na obu końcach połączenia. 11. Q: Obsługa PLIP w niektórych wersjach jądra 1.3.x nie pracuje. Co się dzieje? A: Pamiętaj, że jądra o numerach wersji 1.nieparzysty.x są wersjami rozwojowymi. "Bogowie", którzy codziennie ciężko pracują nad ulepszaniem Linuxa często wypuszczają niestabilne wersje. Teraz wersje 2.0.x powinny być stabilne. 88.. SSzzyybbkkaa iinnssttaallaaccjjaa PPLLIIPP Przed napisaniem tego mini-HOWTO, stworzyłem zestaw plików potrzebny do szybkiej instalacji PLIP. W kilka minut, nie licząc kompilacji jądra powinieneś zestawić połączenie PLIP. Zarchiwizowane pliki możesz znaleźć na mojej stronie domowej: http://www.cli.di.unipi.it/~controzz/intro.html. Może ktoś w koncu udostępni moje pliki na publicznym serwerze ftp. 99.. WWssttaawwkkii uummoożżlliiwwiiaajjąąccee jjeeddnnoocczzeessnnee ddzziiłłaanniiee PPLLIIPP ii LLPP Najlepszą drogą do jednoczesnego dziłania PLIP i LP jest użycie modułów. Możesz załadować moduł plip.o i wyrzucić go kiedy będziesz chciał drukować, lub na odwrót. Jeśli na prawdę potrzebujesz używać PLIP i LP naraz, wypróbuj poniższe wstawki. 99..11.. PPLLIIPP ii LLPP nnaa ttyymm ssaammyymm ppoorrcciiee W tej sytuacji możesz spróbować następujących wstawek do jądra. Musisz zmodyfikować następujące fragmenty kodu, lecz pamiętaj wykonać kopię bezpieczeństwa: ______________________________________________________________________ --- begin --- ******** modifications to linux/drivers/char/lp.c *********************** struct lp_struct lp_table[] = { { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, /* { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, */ }; #define LP_NO 1 ******** modifications to linux/drivers/net/Space.c ******************** #if defined(PLIP) || defined(CONFIG_PLIP) extern int plip_init(struct device *); static struct device plip2_dev = { "plip2", 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, }; static struct device plip1_dev = { "plip1", 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &plip2_dev, plip_init, }; /* static struct device plip0_dev = { "plip0", 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &plip1_dev, plip_init, }; */ # undef NEXT_DEV # define NEXT_DEV (&plip1_dev) #endif /* PLIP */ ---end--- ______________________________________________________________________ Zrzeczenie: Otrzymałem te wstawki i opublikowałem je w niezmienionej postaci. Oznacza to, że używasz ich na własną odpowiedzialność. W najgorszym wypadku, skompilujesz jeszcze raz jądro używając starych plików. 99..22.. PPLLIIPP ii LLPP nnaa oossoobbnnyycchh ppoorrttaacchh Jeśli masz przynajmniej dwa porty równoległe, możesz wypróbować następujące wstawki, które umożliwią pracę PLIP na jednym porcie, a LP na drugim. ______________________________________________________________________ --- begin --- 1. Comment out one line in kernel source file, drivers/char/lp.c. struct lp_struct lp_table[] = { { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, /* { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, */ }; 3 -> 2 2. Kernel configuration PLIP (parallel port) support (CONFIG_PLIP) [n] y Parallel Printer support [y] y 3. Kernel message at startup lp1 at 0x0378, using polling driver ..... NET3 PLIP version 2.0 gniibe@mri.co.jp plip2: Parallel port at 0x278, using assigned IRQ 5. ---end--- ______________________________________________________________________ Zrzeczenie jak w sekcji 8.1 1100.. PPoołłąącczzeenniiee PPLLIIPP mmiięęddzzyy DDOOSS--eemm aa LLiinnuuxx--eemm Po pierwszym wydaniu tego mini-HOWTO wiele ludzi pisało z prośbą o inforamcję o połączeniu pomiędzy Dos-em a Linux-em. To doprowadziło mnie do dodania tego paragrafu. Ten fragment pochodzi z artykułu James'a McDuffie'go mcduffie@scsn.net, który znalazłem w Linux Gazette. Traktuje on o szybkiej instalacji polączenia PLIP między Linuxem i DOS-em przy użyciu Windows i Trumpet Winsock i podaje adreswspaniałego programu umożliwiającego uruchamianie programów pracujących pod X-Windows na MS-Windows. Następna sekcja jest dodatkiem przysłanym przez James'a Vahn'a jvahn@short.circuit.com, gdzie opisuje on jak zestawić połączenie i jak rozwiązać niektóre problemy. Zakładam, że już zestawiłeś poprawnie połączenie PLIP po stronie Linuxa i masz odpowiedni kabel. W przeciwnym razie powróc do poprzednich paragrafów. Teraz po stronie DOS-a potrzebujesz po pierwsze potrzebujesz sterownika pakietów. Możesz go znaleźć tutaj: ftp.crynwr.com/drivers/plip.zip Program pracuje po DOS-em jako standardowy sterownik pakietów Ethernet. Jeśli chcesz używać PLIP z Windows potrzebujesz także Trumpet Winsock. Jest to interfejs TCP/IP. Możesz znaleźć też takie oprogramowanie pod DOS-a. Powróćmy teraz do komputera z Linuxem i dodajmy na nim adres komputera pracującego pod DOS do /etc/hosts. Jeśli Twój DOS-owy komputer nie ma zarejestrowanego adresu IP, możesz wybrać jakikolwiek adres (pamiętaj o zarezerwowanych adresach podanych w paragrafie 3). Teraz załóżmy, że wybrałeś nazwę linux dla komputera pracującego pod Linux i dos dla komputera DOS-owego. Musisz napisać: ifconfig plip1 linux pointopoint arp up route add dos Oczywiście jeśli chcesz to zautomatyzować dodaj następujące polecenia do /etc/rc.d/rc.inet1: /sbin/ifconfig plip1 linux pointopoint arp up /sbin/routte add dos To ustanawia interfejs i dołącza do niego rutowanie. Oczywiście, jeżeli używasz drugiego portu równoległego musisz jako interfejs wpisać plip2 zamiast plip1. Wróć do komputera z DOS/Windows i edytuj autoexec.bat. Musisz dodać następujące linie: c:\plip\plip.com 0x60 c:\tcpip\winsock\winpkt.com 0x60 Oczywiście, zakładam, że umieściłeś plik plip.com w katalogu c:\plip a plik winpkt.com w c:\tcpip, w przeciwnym razie powinieneś dodać odpowiednie ścieżki dostępu. To ustawiam program plip.com na wektorze pakietów 0x60 i ładuje winpkt.com na tym samym wektorze. Jeśli używasz innego portu niż lpt1 to będziesz musiał dodać numer przerwania i adres i/o jako parametry przy wywołaniu plip.com. Teraz przejdziemy do konfiguracji Trumpet Winsock. Musisz wyłączyć obsługę SLIP i PPP i wpisać _6_0 do okienka zatytułowanego _P_a_c_k_e_t _v_e_c_t_o_r. Następnie wpisz adres IP komputera, jako domyślną bramkę adres IP komputera Linux-owego oraz adres serwera nazw, którym może być Twój komputer lub komputer u twojego dostawcy internetowego. Zamknij setup i zrestartuj Winsock, a wszystko powinno już działać. Umieść Winsock w grupie _s_t_a_r_t_u_p i masz wszystko zautomatyzowane. Jeśli chcesz korzystać z Internetu pod Windows poprzez komputer Linux- owy, musisz ustawić IP Masquerading. Więcej informacji zobaczysz w NET-3-HOWTO. Znalazłem także program, który pozwala uruchamiać programy X-Windows pod Windows! Możesz go znaleźć pod adresem www.tucows.com Skonfiguruj go zgodnie z zaleceniami i zatelnetuj się z komputera pracującego pod Windows i ustaw zmienną DISPLAY na ten komputer (na przykład DISPLAY=duncan:0.0) i uruchom żądany program. Nie ma nic lepszego jak uruchamianie xv pod Windows! 1100..11.. DDoośśwwiiaaddcczzeenniiaa zz ppoołłąąććzzeenniieemm PPLLIIPP mmiięęddzzyy DDOOSS--eemm aa LLiinnuuxx--eemm.. UUWWAAGGAA:: Otrzymałem ten domkument od James'a Vahn'a jvahn@short.circuit.com i umieściłem go tutaj w niezmienionej postaci. Oznacza to, że wszelkie pytania należy kierować do niego, a nie do mnie. Jego doświadczenia z połączeniem PLIP z komputerem z DOS-em wyposażonym tylko w stacje dysków elastycznych są doskonałym przykładem na to jak poradzić sobie z różnymi problemami. Ostatnia aktualizacja: 11/07/1996 Mój komputer wyposażony jedynie w stację dysków elastycznych pracujący pod DOS-em jest połączony z komputerem Linuxowym. Pierwszy port na komputerze z Linuxem jest wykorzystywany przez drukarkę. Oba komputery są stale podłączone i telnetuję się z komputera DOS-owego na Linux- owy. To moje uwagi i spostrzeżenia. Kiedy jądro wykrywa ilość portów równoległych w komputerze i uruchamia wszystkie z nich, chyba, że wykluczysz niektóre z nich z przeszukiwania. Jedną z metod jest ładowanie sterowników jako modułów. gniibe@mri.co.jp napisał: =========================== Cały czas polecam używanie PLIP/LP jako modułów z tego względu, że: ˇ moduły są elastyczne na zmiany w konfiguracji ˇ rekompilacja jądra nie jest łatwa dla początkujących ˇ koegzystencja PLIP i IP jest możliwa jedynie przez moduły Mając zainstalowaną w modułach obsługę PLIP i LP, możesz podać, który port jest używany przez PLIP, a który przez LP. Oto przykład: # insmod lp.o io=0x378 # insmod plip.o io=0x278 irq=2 Możesz nawet używać obu portów równoległych: # insmod plip.o io=0x278,0x3bc irq=2,5 W powyższym przykładzie, plip0 jest przydzielony adres 0x278, a numer przerwania to 2, plip1 jest przydzielony adres 0x3bc, a numer przerwania to 5. ============================ Używanie modułów jest chyba najlepszym rozwiązaniem. Kolejna metoda pokazuje jak zmienić kod źródłowy jądra, aby umożliwić jednoczesne działanie PLIP i LP na różnych portach bez użycia modułów. Jeśli nie jesteś na ty z modułami, ten sposób może być szybszy w realizacji. Będziesz musiał zmodyfikować dwa pliki źródłowe jądra. Ja używam jądra 1.2.13 i wniosłem kilka poprawek do ../linux/drivers/net/Space.c. Spójrz na fragment około 205 lini, gdzie znajdują się definicje PLIP i upewnij się, czy porty i numery przerwań odpowiadają Twoim. Sprawdź także jakim driverom one odpowiadają (plip0, plip1, plip2). W moim przypadku port 0x278 używa przerwania 5 (zworki na karcie są tak ustawione), ale Space.c definiuje go tak aby używał przerwania 2. Wolałem dokonać zmian w tym miejscu niż otwierać obudowę i przestawiać zworki. Alternatywą jest ustawienie przerwania później jako parametr ifconfig, ale jądro będzie startowało ze złym numerem przerwania dla PLIP, a to może być dla Ciebie dokuczliwe. Zmiana jest niewielka. Następny, trudniejszy krok to: W pliku ../drivers/char/lp.c znajdziesz taki fragment w okolicach 38 lini: ______________________________________________________________________ struct lp_struct lp_table[] = { { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, /* { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, * 0x278 reserved for plip1 * * }; * #define LP_NO 3 */ }; #define LP_NO 2 ______________________________________________________________________ Zauważ zmiany: jeden port jest zakomentowany, więc tylko dwa porty są zdefiniowane. Port 0x3bc nie będzie prawdopodobnie pracował dla PLIP, ponieważ przerwanie dla tego portu jest wadliwe. Zostało to zauważone na przykładzie starych adapterów monochromatycznych MDA. Wykonałeś kopie zapasowe przed modyfikacjami, prawda? Teraz skompiluj nowe jądro z obsługą drukarki, sieci, fikcyjnego interfejsu oraz plip. Skonfiguruj system. To jest mój plik /etc/rc.d/rd.inet1: #!/bin/bash # /sbin/ifconfig lo 127.0.0.1 /sbin/route add -net 127.0.0.0 /sbin/ifconfig dummy 200.0.0.1 /sbin/route add -net 200.0.0.0 netmask 255.255.255.0 /sbin/ifconfig plip1 arp 200.0.0.1 pointopoint 200.0.0.2 up /sbin/route add 200.0.0.2 /sbin/ifconfig dummy down Zauważ, że arp jest używany przy połączeniach Linux-DOS. Nie jest używany przy połączeniach Linu-Linux. Do pliku /etc/hosts możesz dodać: 200.0.0.1 console1 200.0.0.2 console2 Komputer z DOS-em nazywa się _c_o_n_s_o_l_e_2. Zwróc uwagę na ostrzeżenia Andre'a dotyczące tych adresów. Lepiej używać oficjalne schematy adresowania. Przeładuj system, aby zmiany zadziałały. Podczas startu powinieneś zobaczyć następującą sekwencję: lp0 at 0x03bc, using polling driver lp1 at 0x0378, using polling driver [....] NET3 PLIP version 2.0 gniibe@mri.co.jp plip1: Parallel port at 0x278, using assigned IRQ 5. Komenda route powinna pokazać coś takiego: Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface console2 * 255.255.255.255 UH 1436 0 136 plip1 loopback * 255.0.0.0 U 1936 0 109 lo a ifconfig plip1 powinien pokazać: plip1 Link encap:10Mbps Ethernet HWaddr FC:FC:C8:00:00:01 inet addr:200.0.0.1 P-t-P:200.0.0.2 Mask:255.255.255.0 UP POINTOPOINT RUNNING MTU:1500 Metric:1 RX packets:132 errors:0 dropped:0 overruns:0 TX packets:136 errors:0 dropped:0 overruns:0 Interrupt:5 Base address:0x278 Spójrz na /etc/inetd.conf i zobacz, czy telnet jest odkomentowany. Możesz przeczytać podręcznik systemowy "man" dla _t_c_p_d, oraz o używaniu /etc/hosts.allow (ALL: LOCAL) i /etc/hosts.deny (ALL: ALL). Powinieneś mieć także możliwość wykonania "telnet localhost" Teraz strona DOS-a. Jeszcze raz, bądź nieufny w stosunku do portu 0x3bc jeśli taki u Ciebie istnieje. Ja używam programu telnet dostarczanego przez _N_C_S_A i sterownik PLIP dostarczany przez _C_r_y_n_w_r. To wszystko możesz znaleźć na następujących serwerach: ftp.ncsa.uiuc.edu/Telnet/DOS/ncsa/tel2308b.zip ftp.crynwr.com/drivers/plip.zip Upewnij się, czy używasz wersji 2.3.08 klienta telnetu i wersji 11.1 sterownika PLIP. Znajdź i przeczytaj SUPPORT.DOC. PLik CONFIG.TEL. Większość tego pliku pozostaje nie zmieniona. Aby zaoszczędzić miejsce wyciąłem linie, które pozostawiłem niezmienione. Drugi port na tym komputerze jest ustawiony jako 0x278 na 5 przerwaniu. myip=200.0.0.2 netmask=255.255.255.0 # subnetting mask hardware=packet # network adapter board (packet driver interface) interrupt=5 # IRQ which adapter is set to ioaddr=60 # software interrupt vector driver is using # #[...lots unchanged...] # # at the end of the file, put this line: name=console1 ; hostip=200.0.0.1 ; nameserver=1 ; gateway=1 (_c_o_n_s_o_l_e_1 jest nazwą komputera z Linuxem, możesz użyć jakiejkolwiek nazwy). Złożyłem kabel długości 12 stóp łączący oba komputery. Standardowy 11-kontaktowy kabel drukarkowy powinien także pracować. Plik plip.c pokazuje schemat połączenia. Mimo, że mój kabel posiada połączenie 17-17, myślę, że nie jest on do niczego używany i nie było go na gotowym (kupionym) kablu. @echo off plip.com 0x60 5 0x278 telbin -s console1 Te komendy powinny Cię połączyć z komputerem Linux-owym na /dev/ttyp. Klient telnetu _N_C_S_A posiada 8 wirtualnych ekranów, a także może działać jako serwer ftp. Interfejs PLIP umożliwia dobrą przpustowość. Osiągam prędkości rzędu 6.5K/s na moich antykach. Mam nadzieję, że będziesz miał większe osiągi. :-) 1111.. PPyyttaanniiaa?? KKoommeennttaarrzzee?? NNaappiisszz ddoo mmnniiee.. Jeśli masz jakieś pytania to możesz się ze mną skontaktować pod adresem controzz@cli.di.unipi.it Wszelkie komentarze, raporty o błędach są mile widziane. Nastepna wersja będzie zawierała dłuższe FAQ, oczywiście jeżeli będziecie przysyłali pytania. 1122.. GGddzziiee mmoożżnnaa zznnaalleeźźćć nnaajjnnoowwsszzee wweerrssjjee tteeggoo mmiinnii--HHOOWWTTOO.. Tym mini-HOWTO opiekują się koordynatorzy HOWTO. Jest on wysyłany co miesiąc na grupę news comp.os.linux.answers i możesz go znaleźć w katalogu HOWTO na sunsite i jego mirrorach. Inną drogą do odnalezienia tego HOWTO (w wersji oryginalnej) jest moja strona domowa: www.cli.di.unipi.it/~controzz/intro.html 1133.. PPooddzziięękkoowwaanniiaa Wielkie podziękowania dla: ˇ Rick Lim ricklim@freenet.vancouver.bc.ca za wstawki umożliwiające współdziałanie PLIP i IP. ˇ Takeshi Okazaki GBA03552@niftyserve.or.jp za wstawki umożliwiające działanie PLIP i LP na dwóch różnych portach równoległych. ˇ Jim Van Zandt jrv@vanzandt.mv.com za rady dotyczące dydaktycznej części tego HOWTO. ˇ James Vahn jvahn@short.circuit.com za wspaniały dodatek PLIP pomiędzy DOS-em i Linuxem. ˇ Do wszystkich, którzy pisali na grupy news artykuły dotyczące PLIP. Lista ludzi, od których otrzymałem szereg informacji i komentarzy byłaby dłuższa od tego mini-HOWTO. Dziękuję Wam wszystkim! 1144.. PPrraawwaa aauuttoorrsskkiiee Prawa autorskie do dokumentów Linux HOWTO posiadają ich autorzy. Dokumenty te mogą być reprodukowane i dystrybuowane w całości lub części, w mediach fizycznych lub elektronicznych, tak długo jak tak notka będzie załączona do dokumentu. Komercyjna dystrybucja jest dozwolona. Jednakże autor chciałby zostać poinformowany o takowej. Wszystkie tłumaczenia, prace pochodne lub prace zebrane muszą zawierać notę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodnej z tego dokumentu i obłożyć ją dodatkowymi restrykcjami dotyczącymi dystrybucji. Wyjątki od tej reguły, mogą być rozpatrzone w określonych warunkach. Proszę skontaktować się z koordynatorem HOWTO na adres podany poniżej. Ogólnie biorąc, chcemy promować i szerzyć te informacje na wiele sposobów. Jednakże chcemy zachować prawa autorskie tych dokumentów i pragniemy być poinformowani o każdym sposobie ich dystrybucji. Jeśli masz jakieś pytania, skontaktuj się z Greg'iem Hankins'em, koordynatorem HOWTO - gregh@sunsite.unc.edu 1155.. OOdd ttłłuummaacczzaa Tłumaczenie to chronione jest prawami autorskimi Bartka Papierskiego. Ogólne zasady dystrybucji są takie same jak w oryginalnym dokumencie. Jeśli znajdziesz w tym dokumencie jakieś rażące Twoje oko błędy ortograficzne, gramatyczne, lub błędy w tłumaczeniu to skontaktuj się ze mną, a ja postaram się to naprawić: bartekp@dom.vr.pl Najnowszą wersję tego dokumentu możesz znaleźć na oficjalnej stronie tłumaczeniowej http://www.jtz.org.pl. Najnowsze wersje przetłumaczonych przeze mnie dokumentów znajdziesz także na mojej stronie http://www.dom.vr.pl/~bartekp/howto/tlumaczenia.html Oto zmiany jakie wprowadziłem w tym dokumencie: ˇ Tytuły NET-2-HOWTO zamieniłem na NET-3-HOWTO. Przez rok autor nie wydał nowszej wersji dokumentu, a przez ten czas powstała nowa wersja wymienionego dokumentu HOWTO. �������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/PPP-over-minicom.pl.txt�������������������������������������������0100664�0001750�0001750�00000030332�07104371340�021541� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Połączenie PPP przez minicom-a. Autor: Winfried Trümper, winni@xpilot.org v0.0, 9 Grudnia 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.01, 26 Lipca 1997 Chcesz mieć ładne narzędzie z menu do obsługi PPP? Łatwą w obsłudze i zarazem bardzo zaawansowaną książkę telefoniczną z numerami telefonów twoich dostawców Internet-u? Chcesz widzieć co się dzieje jak się logujesz? Jeśli tak, to ten dokument jest dla ciebie! Dokument ten został napisany w standarcie ISO-8859-2. Oryginał znajduje się pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO/mini. ______________________________________________________________________ Spis treści 1. Wprowadzenie. 1.1 Program emulujący terminal - "minicom". 1.2 Komentarze. 1.3 Znane błędy. 2. Dzwonienie przy pomocy minicom-a. 2.1 Konfiguracja minicom-a. 2.2 Ręczne startowanie PPP. 2.3 Analizowanie logów. 2.4 Skonfiguruj numer telefonu. 2.5 Skrypt logujący. 2.6 Zautomatyzowane dzwonienie przy starcie. 2.7 Przyszłe rozszerzenia. 2.8 Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. PPP stał się standardowym protokołem sieciowym jeśli chodzi o połączenia z Internet-em realizowane poprzez telefon. Odpowiedni demon "_p_p_p_d" dostarczany jest razem z bardzo prymitywnym narzędziem do dzwonienia, które obsługuje dobrze tylko bardzo proste ustawienia. Opiszę tutaj alternatywne rozwiązanie na podstawie "_m_i_n_i_c_o_m_-_a". Dokument ten jest krótszą wersją niemieckiego "_I_n_t_e_r_n_e_t_a_n_b_i_n_d_u_n_g _m_i_t _P_P_P" www.uni-koeln.de <http://www.uni-koeln.de/themen/linux/ppp/>. (Może kiedyś to przetłumaczę - tłumacz). 11..11.. PPrrooggrraamm eemmuulluujjąąccyy tteerrmmiinnaall -- ""mmiinniiccoomm"".. "_m_i_n_i_c_o_m" jest bardzo wyrafinownym narzędziem służącym do dzwonienia do innych komputerów (dostawców internet-u lub BBS-ów). Ma fajne kolorowe menu, książkę telefoniczną i bardzo rozwinięty język skryptowy. Dlatego też idealnie nadaje się do użycia w połączeniu z "_p_p_p_d". Tak przy okazji: Jeśli użyjesz polecenia /sbin/mgetty /dev/modem to każdy, kto posiada konto na twoim komputerze może zadzwonić do ciebie (np. używając "minicom-a"). Ale to już inna historia. Przeczytaj dokumentację na temat "_m_g_e_t_t_y". 11..22.. KKoommeennttaarrzzee.. Jestem zainteresowany tylko tymi komentarzami, które wnoszą coś nowego do tego dokumentu. Nie będę odpowiadał na pytania ogólne dotyczące Linux-a, PPP, SLIP-a czy sieci. 11..33.. ZZnnaannee bbłłęęddyy.. W czasie pisania tego dokumentu, w programach "_m_i_n_i_c_o_m" i "_r_u_n_s_c_r_i_p_t" oraz w podanej niżej metodzie były błędy. ˇ "runscript" nie czeka na zakończenie programów zewnętrznych. print "blah" ! sleep 10 print "blup" Ten skrypt kończy się natychmiast (ale nie jeśli jest śledzony polece­ niem "strace"). ˇ "pppd" odbiera urządzenie szeregowe "minicom-owi" (jeśli dane nie są przekazywane przez stdin). Wyglada na to, że Miquel van Smoorenburg (autor "minicom-a") jest zbyt zajęty, żeby naprawić te błędy. Tak więc ochotnicy są mile widziani. 22.. DDzzwwoonniieenniiee pprrzzyy ppoommooccyy mmiinniiccoomm--aa.. Wiele podręczników dotyczących PPP zaleca wyjść z minicom-a po dodzwonieniu się. Ale naprawdę nie ma potrzeby wychodzenia z tego wygodnego programu. 22..11.. KKoonnffiigguurraaccjjaa mmiinniiccoomm--aa.. Wykonaj "minicom -s" i wybierz z menu "_S_e_r_i_a_l _p_o_r_t _s_e_t_u_p". Pierwszą pozycją powinno być "_S_e_r_i_a_l _D_e_v_i_c_e" - jest to najważniejsze z ustawień: urządzenie szeregowe, do którego podłączony jest twój modem. (Czy są jacyś ochotnicy, do przeróbki minicom-a tak, żeby obsługiwał kilka urządzeń szeregowych na raz?) Wciśnij <ENTER>, aby potwierdzić i <ESC>, aby wyjść do pierwszego menu. Wybierz "_E_x_i_t _t_o _m_i_n_i_c_o_m" i wpisz "_a_t_d_t_9_9_9_9_9". Twój modem od razu powinien zacząć wybierać numer i powinieneś usłyszeć "kliknięcie" kiedy modem się dodzwoni. Oczywiście "_9_9_9_9_9" to nie jest prawidłowy numer telefonu. 22..22.. RRęęcczznnee ssttaarrttoowwaanniiee PPPPPP.. Może już próbowałeś zadzwonić do swojego dostawcy Internet-u. Widziałeś takie dziwne znaczki na ekranie po zalogowaniu się (jeśli nie, to wpisz "_p_p_p")? Są one wynikiem programu "_p_p_p" (albo jakiegoś odpowiednika) uruchomionego na drugim końcu linii. Jeśli tak, to możesz uruchomić u siebie demon "_p_p_p_d" i przeanalizować potem logi systemowe. Aby uruchomić "_p_p_p_d" w minicom-ie, możesz zdefiniować nową metodę ładującą (zobacz samemu jak to się robi) albo przedefiniować ustawienie "_k_e_r_m_i_t _p_r_o_g_r_a_m" z menu konfiguracyjnego "_F_i_l_e_n_a_m_e _a_n_d _p_a_t_h_s": A - Download directory : B - Upload directory : C - Script directory : D - Script program : /usr/bin/runscript E - Kermit program : /usr/sbin/pppd file /etc/ppp/mini_options Teraz jak zobaczysz te dziwne znaczki możesz wcisnąć <Alt-K>, aby uruchomić "_p_p_p_d". Reszta tego dokumentu zajmuje się automatyzacją logowania i uruchamiania "_p_p_p_d". 22..33.. AAnnaalliizzoowwaanniiee llooggóóww.. Chociaż nie chcę wyjasniać jak ma być konfigurowane PPP, to pokażę małą sztuczkę jak czytać logi. Aby wyciągnąć ważne dla nas informacje z pliku "/var/log/debug" (albo alternatywnego "/var/log/daemon.log") wykonaj polecenie: tail -n 40 /var/log/debug |\ grep -E " pppd\[[0-9]*\]:" |\ sed -e "s/^.*pppd\[/[/" Powinieneś zobaczyć coś takiego: sent [LCP ConfReq id=0x1 <mru 296>] rcvd [LCP ConfRej id=0x1 <mru 296>] co pokazuje, że wysłaliśmy prośbę o konfigurację, aby ustawić maksymalną jednostę do otrzymania (mru) na 296. Druga strona odrzuciła naszą prośbę ("_c_o_n_f_i_g_u_r_a_t_i_o_n _r_e_j_e_c_t_e_d"). W tym przypadku po prostu usunąłem opcję "_m_r_u" z pliku "/etc/ppp/options". 22..44.. SSkkoonnffiigguurruujj nnuummeerr tteelleeffoonnuu.. Jeśli powyższe się udało, to może chcesz zapisać numer telefonu w książce telefonicznej "minicom-a". Wciśnij <Alt-D>, aby wybrać menu dzwonienia i wybierz "_E_d_i_t": A - Name : Xeno B - Number : 022039697303 C - Dial string # : 1 D - Local echo : No E - Script : /etc/ppp/login.script F - Username : ppp-382 G - Password : top-secret H - Terminal Emulation : VT102 I - Backspace key sends : Delete J - Linewrap : Off K - Line Settings : Curr 8N1 To jest przykładowa pozycja, której używam do dzwonienia do swojego dostawcy Internet-u. Skrypt /etc/ppp/login.script jest pokazany niżej. Dwie specjalne zmienne są przekazywane do tego skryptu: $(LOGIN) i $(PASS), które są ustawione na identyfikator użytkownika (F) i hasło (G). Ta cecha czyni minicom-a trochę bardziej elastycznym, ponieważ potrzebujesz tylko jednego skryptu, żeby zautomatyzować logowanie się do kilku dostawców. 22..55.. SSkkrryypptt lloogguujjąąccyy.. "minicom" uruchamia skrypt logujący, po tym jak otrzyma łańcuch "_C_O_N_N_E_C_T". A dokładniej, "minicom" nie wykonuje tego skryptu samemu, tylko woła do tego zadania narzędzie "_r_u_n_s_c_r_i_p_t" jako podproces. Poniżej znajduje się przykład jakiego używam dla swojego dostawcy. # v1.0, 20.08.96 Winfried Trümper <winni@xpilot.org> print "" print "Automatic login via /etc/ppp/login.script" ## odkomentuj jeśli musisz wcisnąć <ENTER>, aby otrzymać prompt #send "" expect { "ogin:" "ogin>" "sername:" "sername>" "NO CARRIER" exit 1 } send "$(LOGIN)" expect { "assword:" "assword>" timeout 20 } send "$(PASS)" expect { "port" send "ppp" "Start your PPP now" "}!}!}" timeout 10 } print "" print "Now switching into ppp-mode ..." print "" ! /usr/sbin/pppd file /etc/ppp/mini_options print "" print "the command killall -TERM pppd terminates pppd" Możliwość wykonywania programów zewnętrznych przez "_r_u_n_s_c_r_i_p_t" używana jest do uruchamiania "_p_p_p_d". Skopiuj swój oryginalny plik z opcjami dla ppp do "/etc/ppp/options.ttyS1" (gdzie "ttyS1" musisz zamienić na urządzenie, do którego dołączony jest twój modem) i skasuj wszystkie linie, które są specyficzne dla twojego modemu (takie jak: "connect", "crtscts" albo "modem") z /etc/ppp/options. Umieść opcje, które powinny być specyficzne dla połączenia ppp przez minicom-a w pliku "/etc/ppp/mini_options". Jedną z tych opcji powinno być disconnect "chat '' '\d\d+++\d\dATH\r\c'" Ta opcja MUSI być ponieważ "_p_p_p_d" pobiera dane z "_s_t_d_i_n" i nie może zawiesić modemu poleceniem "crtscts". 22..66.. ZZaauuttoommaattyyzzoowwaannee ddzzwwoonniieenniiee pprrzzyy ssttaarrcciiee.. Użyj opcji "_-_d", aby dzwownić pod wskazany numer od razu po uruchomieniu minicom-a. Możesz też spróbować open -sl -- minicom -d 1 Aby wrzucić minicom-a na inną konsolę - zobacz mini-HOWTO Consoles- Many. 22..77.. PPrrzzyysszzłłee rroozzsszzeerrzzeenniiaa.. Ponieważ "_p_p_p_d" jest demonem, więc nie jest on przeznaczony do działania w interakcji czy obserwacji. I to jest w porządku. Przecież używamy systemy "unixowego", nie ? Standardowym rozwiązaniem jest jakiś "front-end". Są jacyś chętni, do grzebania się z minicom-em? Fajnymi rozszerzeniami byłyby: ˇ automatyczne generowanie skryptu logującego przez obserwację ręcznego podłączania się. ˇ automatyczna analiza log-ów z korektą opcji. ˇ wyciąganie wiadomości jak to pokazano w punkcie ``2.3''. Koniec. 22..88.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Programming-Languages.pl.txt��������������������������������������0100664�0001750�0001750�00000040471�07457640740�022711� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Języki programowania (małe JTZ) Autor: Risto S. Varanka v?, 22 lipca 2000 WWeerrssjjaa ppoollsskkaa:: TToommaasszz ''ttssccaa'' SSiieenniicckkii,, ttssccaa@@eeddbb..ddkk v1.0, 10 grudnia 2001 Krótkie porównanie najważniejszych języków programowania oraz bib­ liotek służących do tworzenia graficznego interfejsu użytkownika (GUI) pod Linuksem. ______________________________________________________________________ Spis treści 1. Formalności 1.1 Najnowsza wersja tego dokumentu 1.2 Prawa autorskie 1.3 Licencja 1.3.1 Warunki modyfikacji tekstu 1.4 Zastrzeżenie 1.5 Informacje o autorze 1.6 Podziękowania 2. Wstęp 2.1 Tematyka dokumentu 2.2 Odnośniki 3. Języki programowania 3.1 Pojęcia użyte w tabeli 3.2 Najważniejsze języki 3.3 Programowanie w powłoce (szelu) 3.4 Inne języki 3.5 Odnośniki 4. Narzędzia do tworzenia GUI 4.1 Pojęcia użyte w tabeli 4.2 Najważniejsze biblioteki do tworzenia GUI 4.3 Odnośniki 5. Od tłumacza ______________________________________________________________________ 11.. FFoorrmmaallnnoośśccii 11..11.. NNaajjnnoowwsszzaa wweerrssjjaa tteeggoo ddookkuummeennttuu Najnowsza wersja tego dokumentu dostępna jest pod adresem <http://www.helsinki.fi/~rvaranka/Computer/Linux/HOWTO/>. 11..22.. PPrraawwaa aauuttoorrsskkiiee Copyright (c) 2000 Risto Varanka. 11..33.. LLiicceennccjjaa Omówione tu warunki używania dotyczą wszystkich dokumentów LDP, o ile w danym dokumencie nie stwierdzono inaczej. Dokumenty LDP można kopiować i rozpowszechniać w całości lub w części za pomocą dowolnego fizycznego lub elektronicznego medium pod warunkiem, że niniejsza licencja nie jest usunięta. Rozpowszechnianie komercyjne jest dozwolone. W przypadku rozpowszechniania proszę miesiąc wcześniej skontaktować się pocztą elektroniczną z autorami w celu uzyskania najnowszej wersji tekstu. 11..33..11.. WWaarruunnkkii mmooddyyffiikkaaccjjii tteekkssttuu Wszelkie zmodyfikowane wersje dokumentów, w tym tłumaczenia, antologie oraz dokumenty rozpowszechniane w części muszą spełniać następujące warunki: 1. Wersja musi być oznaczona jako zmodyfikowana 2. Osoba wprowadzająca modyfikacje nie może być anonimowa 3. Należy pozostawić nazwisko pierwotnego autora 4. Należy podać informację o lokalizacji oryginalnej wersji tekstu 5. Bez zgody pierwotnego autora/autorów nie wolno ich/jego nazwiskiem/nazwiskami potwierdzać ani sugerować ważności zmodyfikowanego dokumentu. Dodatkowe wymagania: 1. Zmiany (w tym cięcia) muszą być zaznaczone 2. Przed rozpoczęciem dystrybucji należy autora o tym powiadomić pocztą elektroniczną (jeśli w dokumencie podany został adres) Antologie dokumentów LPD mogą wyjątkowo zawierać w widocznym miejscu pojedynczą kopię tej licencji. W takich przypadkach treść licencji zawartej w dokumentach można zastąpić informacją o jej lokalizacji w antologii; wówczas zmiany w niniejszej sekcji nie nadają dokumentowi statusu tekstu zmodyfikowanego. Umieszczenie dokumentów LPD na wspólnym nośniku z innymi dokumentami bądź programami nie powoduje objęcia owych innych prac niniejszą licencją. Wszelkie tłumaczenia, modyfikacje i teksty wywodzące się z dokumentów LDP nie mogą mieć bardziej restrykcyjnej licencji niż niniejsza. Wyjątkiem jest możliwość wymagania od dystrybutorów udostępniania wersji źródłowych dokumentów. 11..44.. ZZaassttrrzzeeżżeenniiee DOKUMENT NINIEJSZY OPISUJE SZEROKĄ I STALE ZMIENIAJĄCĄ SIĘ DZIEDZINĘ WIEDZY. DLATEGO INFORMACJE ZAWARTE W TYM TEKŚCIE MOGĄ BYĆ BŁĘDNE LUB NIEAKTUALNE. JAKIEKOLWIEK UŻYCIE TEGO DOKUMENTU I ZAWARTYCH W NIM INFORMACJI MOŻE ODBYWAĆ SIĘ WYŁĄCZNIE NA WŁASNE RYZYKO UŻYTKOWNIKA. AUTOR NIE DAJE ANI NIE SUGERUJE ŻADNYCH GWARANCJI. 11..55.. IInnffoorrmmaaccjjee oo aauuttoorrzzee Adres poczty elektronicznej: <mailto:risto.varanka@helsinki.fi> Strona domowa: <http://www.helsinki.fi/~rvaranka/>. 11..66.. PPooddzziięękkoowwaanniiaa Chciałbym podziękować osobom, które wypowiedziały się na temat języków programowania. Rozmowy te dały mi lepszą orientację w temacie, mam też nadzieję, że reakcje czytelników w przyszłości przyczynią się do rozwoju niniejszego dokumentu. Podziękowania swoje kieruję szczególnie do użytkowników kanału #linux: Morphiego, Bluesmurfa, Vadima, Zonk^a, Rikkusa i wielu innych, których nicki zapomniałem. Dziękuję też Stigowi Erikowi Sandoe za pomocne uwagi. 22.. WWssttęępp 22..11.. TTeemmaattyykkaa ddookkuummeennttuu Linux jest fascynującym systemem, ponieważ każdy może uczestniczyć w jego rozwijaniu. Czasem jednak różnorodność dostępnych języków programowania może powodować zagubienie początkującego programisty. Niniejszy dokument opisuje najbardziej typowe z tych języków. Nie jest moim celem pisanie recenzji ani układanie ich rankingu. Każdy język na swoje zastosowania i zwolenników. Jeśli interesujesz się tematem, łatwo możesz natrafić na sprzeczne informacje. Znajdujące się w tym dokumencie odnośniki skierują cię do źródeł, dzięki którym będziesz mógł wyrobić sobie własną opinię. Języków programowania i bibliotek do tworzenia GUI pod Linuksem jest zatrzęsienie. Dokument ten ogranicza się tylko do aktualnie najpopularniejszych z nich. Starałem się być neutralny, ale nie byłem w stanie wspomnieć tu o wszystkich dostępnych językach. Ponieważ moje opinie z pewnością są w taki czy inny sposób stronnicze, osobom poważnie podchodzącym do tematu proponuję zajrzenie na strony bardziej kompletnie go wyczerpujące. Pamiętaj też, że w niniejszym tekście omówione są tylko linuksowe wersje danych języków i narzędzi; nie wspominam o ich możliwościach dostępnych w wersjach na inne platformy. Dokument niniejszy dopiero niedawno trafił do zasobów Linux Documentation Project, czytelnicy nie mieli więc póki co wiele czasu na wyrażenie swoich opinii. Mam jednak nadzieję, że tekst ten przyda się osobom (szczególnie początkującym) interesującym się programowaniem pod Linuksem. Znak zapytania w tabelach oznacza brak informacji. Skontaktuj się z autorem, jeśli je posiadasz. 22..22.. OOddnnoośśnniikkii Wyczerpujące listy języków i narzędzi programistycznych dla Linuksa: ˇ Freshmeat <http://www.freshmeat.net/appindex/development/> ˇ Linux Development Tools <http://www.hotfeet.ch/~gemi/LDT/> ˇ linuxprogramming.com <http://www.linuxprogramming.com/> Interesującym, szczególnie dla początkujących programistów, tekstem jest Hacker FAQ <http://www.tuxedo.org/~esr/faqs/hacker-howto.html> napisane przez Erica S. Raymonda. Dokument ten traktuje o kulturowych i psychologicznych aspektach pracy nad rozwojem oprogramowania wolnodostępnego. Innymi zajmującymi się tematem programowania dokumentami LDP <http://www.linuxdoc.org/> są "Reading List HOWTO" oraz "Linux Programmer's Guide". Oprócz nich dostępny jest szereg tekstów poświęconych bardziej szczegółowym zagadnieniom. 33.. JJęęzzyykkii pprrooggrraammoowwaanniiaa Tradycyjnie w GNU/Linuksie używanymi językami są C, Lisp i Perl. Ostatnio do grupy tej dołączyły Python, PHP, Java i C++. 33..11.. PPoojjęęcciiaa uużżyyttee ww ttaabbeellii JJęęzzyykk Powszechnie używana nazwa języka. PPoocczząąttkkuujjąąccyy Czy język jest dobrym wyborem dla początkującego programisty? SSzzyybbkkoośśćć Jak szybko aplikacje będą w praktyce działać. W zasadzie zależy to bardziej od jakości ułożonego przez programistę algorytmu, niż od samego języka. Generalnie przyjmuje się, że języki C, C++ i Fortran oferują większą szybkość niż ich alternatywy. Wszystko zależy jednak od celu, jaki chcemy osiągnąć: czasem języki te mogą okazać się bardziej nieporęczne od innych. (Mam pomysł na mało naukowe porównanie języków: należy napisać w każdym z nich prosty algorytm sortujący i porównać czas jego wykonania. To oczywiście nie zmierzy szybkości samych języków -- taki pomysł byłby bez sensu -- a jedynie ich implementacji. Nie jest to również szczególnie niezawodna ani dokładna metoda, pozwala jednak porównać szybkość wykonania zadania. Ktoś chce spróbować?) OOOOPP,, pprrooggrraammoowwaanniiee oobbiieekkttoowwee kkoonnttrraa iinnnnee mmeettooddyy Programowanie obiektowe jest ważną i coraz bardziej popularną metodą tworzenia aplikacji. W tym modelu struktury danych i algorytmy połączone są w jednostki zwane klasami. OOP przeciwstawia się często programowaniu proceduralnemu (w którym używa się oddzielnych algorytmów i struktur danych). Nie jest to wyłącznie kwestia języka; można programować obiektowo w językach nie opisanych jako obiektowe, i odwrotnie: proceduralnie w językach obiektowych. Jako języki obiektowe wymieniłem te, które takie programowanie ułatwiają różnymi dodatkami. Języki funkcjonalne (np. Lisp) to jeszcze inna sprawa, bowiem programowanie funkcjonalne jest nadzbiorem obiektowego. Z drugiej strony programowania logicznego (np. Prolog), zwanego także programowaniem deklaratywnym, nie można w podobny sposób odnieść do innych modeli programowania. RRAADD ((bbłłyysskkaawwiicczznnee pprrooggrraammoowwaanniiee aapplliikkaaccjjii)) Zależy bardziej od używanych narzędzi niż języka. Istnieje dokument HOWTO omawiający narzędzia ułatwiające tworzenie GUI pod Linuksem, jest jednak przestarzały. Dobre narzędzie znacznie przyspiesza prace nad graficznym interfejsem użytkownika, umożliwia także prace nad istniejącym już kodem; wolnodostępne oprogramowanie jest tu więc doskonałym punktem wyjścia. ZZaassttoossoowwaanniiaa Domeny programowania, w których dany język jest najczęściej używany. Istnieją także inne, mniej lub bardziej sensowne zastosowania języka, są jednak mniej typowe. UUwwaaggii Dodatkowe informacje o języku, np. jego możliwości lub odmiany. 33..22.. NNaajjwwaażżnniieejjsszzee jjęęzzyykkii Perl Początkujący: tak - OOP: tak Zastosowania: Skrypty, administracja systemem, WWW Uwagi: Doskonały do przetwarzania tekstów Python Początkujący: tak - OOP: tak Zastosowania: Skrypty, skrypty do aplikacji, WWW Uwagi: TCL Początkujący: tak - OOP: nie Zastosowania: Skrypty, administracja systemem, aplikacje Uwagi: PHP Początkujący: tak - OOP: tak Zastosowania: WWW Uwagi: Używany przy tworzeniu sieciowych baz danych Java Początkujący: tak - OOP: tak Zastosowania: Programy działające na wielu platformach systemowych, WWW Uwagi: Zakres zastosowań rozszerza się (np. handel elektroniczny) Lisp Początkujący: tak - OOP: funkcjonalny Zastosowania: Tryby Emacsa (Elisp), AI (Sztuczna inteligencja) Uwagi: Odmiany: Elisp, Clisp i Scheme Fortran Początkujący: nie - OOP: nie Zastosowania: Aplikacje matematyczne (naukowe) Uwagi: Odmiany: f77 i f90/95 C Początkujący: nie - OOP: nie Zastosowania: Oprogramowanie systemowe, aplikacje Uwagi: C++ Początkujący: nie - OOP: tak Zastosowania: aplikacje Uwagi: 33..33.. PPrrooggrraammoowwaanniiee ww ppoowwłłooccee ((sszzeelluu)) Powłoki są również ważnym środowiskiem programistycznym. Nie omawiam ich, ponieważ nie zrozumiałem jeszcze dokładnie całości tematu. Znajomość powłok jest istotna dla wszystkich używających regularnie Linuksa, szczególnie administratorów. Istnieje wiele podobieństw między programowaniem w szelu i pisaniem skryptów w innych językach -- często osiągnąć można identyczne rezultaty, wybór jest więc wolny. Do najpopularniejszych powłok należą bash, tcsh, csh, ksh i zsh. Podstawowe informacje o nich znajdują się w podręczniku systemowym (użyj polecenia man, np. man bash). 33..44.. IInnnnee jjęęzzyykkii Inne warte zauważenia języki to: AWK, SED, Smalltalk, Eiffel, Ada, Prolog, asembler, Objective C, Logo, Pascal (konwerter p2c). 33..55.. OOddnnoośśnniikkii ˇ Strona z dużą ilością informacji i opinii o różnych językach programowania <http://www.tunes.org/Review/Languages.html> ˇ TCL <http://dev.scriptics.com/> ˇ Perl <http://www.perl.org/> ˇ Python <http://www.python.org/> ˇ PHP <http://www.php.net> ˇ Java <http://www.javasoft.com/> ˇ clisp <http://clisp.cons.org/~haible/packages-clisp.html> 44.. NNaarrzzęęddzziiaa ddoo ttwwoorrzzeenniiaa GGUUII Standardowym środowiskiem graficznym w systemach Unix i Linux jest posiadający swoje własne biblioteki GUI _X _W_i_n_d_o_w _S_y_s_t_e_m. Biblioteki te umożliwiają niskopoziomowe tworzenie graficznych aplikacji dla X, bywają jednak trudne w użyciu. Wykorzystuje je głównie starsze oprogramowanie, dziś graficzne aplikacje tworzy się raczej w oparciu o biblioteki GTK+ i Ot -- to na nich oparte są dwa najpopularniejsze duże środowiska graficzne dla Linuksa: GNOME i KDE. 44..11.. PPoojjęęcciiaa uużżyyttee ww ttaabbeellii BBiibblliiootteekkaa Powszechnie używana nazwa biblioteki PPoocczząąttkkuujjąąccyy Czy biblioteka nadaje się dla początkującego programisty? LLiicceennccjjaa Poszczególne narzędzia opatrzone są różnymi licencjami. Licencje GTK+, TK i GNUstep pozwalają na bezpłatne tworzenie zarówno wolnodostępnego, jak i zamkniętego oprogramowania. Licencja Motifa jest płatna, a licencja Qt jest płatna tylko w przypadku tworzenia oprogramowania zamkniętego. JJęęzzyykk Język najczęściej używany z daną biblioteką. IInnnnee jjęęzzyykkii Inne języki, których również można używać z daną biblioteką. ZZaassttoossoowwaanniiaa Programy korzystające z biblioteki. UUwwaaggii Dodatkowe informacje. 44..22.. NNaajjwwaażżnniieejjsszzee bbiibblliiootteekkii ddoo ttwwoorrzzeenniiaa GGUUII Biblioteka: TK Początkujący: tak Licencja: darmowa Język: TCL Inne jęz: Perl, Python, inne Zastosowania: make xconfig, TKDesk Uwagi: Biblioteka: GTK+ Początkujący: nie Licencja: darmowa (LGPL) Język: C Inne jęz: Perl, C++, Python, wiele innych Zastosowania: GNOME, Gimp Uwagi: Bardzo popularna Biblioteka: QT Początkujący: nie Licencja: darmowa przy rozwijaniu oprogramowania wolnodostępnego Język: C++ Inne jęz: Python, Perl, C, inne? Zastosowania: KDE Uwagi: Bardzo popularna Biblioteka: Motif Początkujący: nie Licencja: płatna Język: C/C++ Inne jęz: Python, inne? Zastosowania: Netscape, Wordperfect Uwagi: Darmowy odpowiednik: Lestiff (http://www.lesstif.org/) Biblioteka: GNUstep Początkujący: nie Licencja: darmowa (LGPL) Język: Objective C Inne jęz: Guile, Java? Zastosowania: Żadna z popularnych aplikacji Lista aplikacji: http://www.gnustep.org/resources/apps.html Uwagi: Wciąż w trakcie rozwoju 44..33.. OOddnnoośśnniikkii ˇ TK <http://dev.scriptics.com/> ˇ GTK+ <http://www.gtk.org/> ˇ QT <http://www.troll.no/> ˇ Motif <http://www.metrolink.com/> ˇ GNUstep <http://www.gnustep.org/> 55.. OOdd ttłłuummaacczzaa Zmiany w stosunku do oryginału: Podział pierwszego rozdziału na dwie tematyczne sekcje ("Formalności" i "Wstęp") oraz przeformatowanie spisu najważniejszych bibliotek. Wersja oryginalna dokumentu: <http://sunsite.unc.edu/LDP/>. Tłumaczenia pozostałych dokumentów HOWTO na język polski: <http://www.jtz.org.pl/>. Copyright for the translation: (c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Quota.pl.txt������������������������������������������������������0100664�0001750�0001750�00000032241�07104371340�017572� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Jak używać Quoty na Linux-ie. Autor: Albert M.C. Tam, bertie@scn.org 8 Sierpnia 1997 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkiiBB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll.. v1.2, 27 Listopada 1997 Dokument ten jest chroniony prawami autorskimi Alberta M. C. Tama (bertie@scn.org). Dozwolone jest użycie, kopiowanie i dystrybuowanie tego dokumentu do celów niekomercyjnych, zakładając, że we wszystkich kopiach pojawi się nazwisko autora oraz ta wzmianka o prawach autors­ kich; oraz że dokument ten nie jest modyfikowany. Dokument ten jest dystrybuowany w nadziei, że będzie on użyteczny, ale BEZ ŻADNEJ GWARANCJI, ani wyrażonej ani wynikającej. Autor czynił jak największy wysiłek, żeby informacje zawarte w tym dokumencie były poprawne i NIE BIERZE ODPOWIEDZIALNOŚCI za błędy, czy zniszczenia powstałe na skutek użycia zawartych tu informacji. Tłumacz także NIE BIERZE ŻADNEJ ODPOWIEDZIALNOŚCI. Dokument ten opisuje jak uruchomić Quotę systemu plików na Linux-ie, jak i różne polecenia zawarte w dystrybucji paki­ etu. Przeznaczony jest on dla użytkowników jądra w wersji 2.x (przetestowano na 2.0.7). Użytkownikom ze starszymi wersjami zaleca się uaktualnienie. Jeśli znajdziesz jakieś błędy, albo sądzisz, że czegoś brakuje, czy po prostu masz jakiś komentarz odnośnie tego co napisałem to pisz śmiało na mój adres. Nowsza wersja zawiera uaktual­ nione wskazania na katalog zawierający jądra na ftp.icm.edu.pl. Doku­ ment ten napisany został w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/>. ______________________________________________________________________ Spis treści 1. Co to jest Quota? 1.1 Bieżąca wersja Quoty na Linux-a. 1.2 Wymagania Quoty na Linux-ie. 2. Ustawianie Quoty na Linux-ie. 2.1 Konfiguracja. 2.2 Przypisywanie limitów użytkownikom. 2.2.1 Przypisywanie limitów konkretnemu użytkownikowi. 2.2.2 Przypisywanie limitów konkretnej grupie. 2.2.3 Przypisywanie takich samych limitów dla większej ilości użytkowników. 3. Różne polecenia z pakietu Quota. 3.1 Quotacheck 3.2 Repquota 3.3 Quotaon i Quotaoff 4. Od tłumacza. ______________________________________________________________________ 11.. CCoo ttoo jjeesstt QQuuoottaa?? Jest to pakiet umożliwiający limitowanie zużycia dysków na dwa sposoby: ilość węzłów jaką można przydzielić użytkownikowi; ilość bloków dysku jaką można przydzielić użytkownikowi. Podstawową ideą Quoty jest to, że użytkownicy zmuszani są do ograniczenia swoich zasobów i co za tym idzie odebranie im ich zdolności do zabierania nieskończonej ilości pamięci dyskowej. 11..11.. BBiieeżżąąccaa wweerrssjjaa QQuuoottyy nnaa LLiinnuuxx--aa.. Obsługa Quoty została zintegrowana z jądrem od wersji 1.3.8x i jest także w wersji 2.0. Jeśli twój system nie obsługuje Quoty, to proponuje go uaktualnić. Obecnie Quota działa tylko dla systemu plików ext2. 11..22.. WWyymmaaggaanniiaa QQuuoottyy nnaa LLiinnuuxx--iiee.. ˇ Jądro Źródła jądra 2.x są dostępne z ftp.icm.edu.pl w katalogu /pub/Linux/kernel. ˇ Oprogramowanie Quota. Zależnie od twojej dystrybucji możesz mieć albo możesz nie mieć zainstalowanej Quoty. Źródła oprogramowania Quoty są dostępne pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/system/admin/. 22.. UUssttaawwiiaanniiee QQuuoottyy nnaa LLiinnuuxx--iiee.. 22..11.. KKoonnffiigguurraaccjjaa.. 1. Przekonfiguruj swoje jądro odpowiadając "y" na pytanie: _Q_u_o_t_a _s_u_p_p_o_r_t _(_C_O_N_F_I_G___Q_U_O_T_A_) _[_n_] 2. Skompiluj i zainstaluj oprogramowanie Quoty. Źródła oprogramowania Quoty są dostępne pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/system/admin/. 3. Zmodyfikuj skrypty inicjalizujące twój system, aby sprawdzały quotę i włączały ją podczas startu systemu. Oto przykład: ___________________________________________________________________ # Sprawdź quotę i włącz ją if [ -x /usr/sbin/quotacheck ] then echo "Checking quotas. This may take some time." /usr/sbin/quotacheck -avug echo " Done." fi if [ -x /usr/sbin/quotaon ] then echo "Turning on quota." /usr/sbin/quotaon -avug fi ___________________________________________________________________ Złota zasada brzmi: zzaawwsszzee włączaj quotę ppoo ttyymm jak twoje systemy plików z /etc/fstab zostały zamontowane, bo inaczej quota nie będzie działać. Zalecam włączanie quoty na końcu pliku inicjalizującego twój system, albo jeśli wolisz, zaraz po fragmencie kiedy twoje systemy plików są montowane. 4. Zmodyfikuj /etc/fstab Partycje, na których jeszcze nie włączyłeś quoty wyglądają mniej więcej tak: /dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults 1 1 Aby dodać quotę do systemu plików, dodaj _u_s_r_q_u_o_t_a do czwartego pola zawierającego _d_e_f_a_u_l_t: (szczegóły w man fstab) /dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,usrquota 1 1 Zamień _u_s_r_q_u_o_t_a na _g_r_p_q_u_o_t_a jeśli potrzebujesz ograniczenia dla grup. /dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,grpquota 1 1 A może potrzebujesz ograniczeń i dla użytkowników i dla grup? /dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1 5. Stwórz zapis odnośnie quoty - quota.user Plik z danymi o quocie - quota.user, powinien należeć do "root-a" oraz zapis i odczyt do niego powinien mieć także tylko "root". Zaloguj się jako "root". Przejdź do podstawowego katalogu na partycji, którą chcesz objąć quotą i stwórz plik quota.user: ___________________________________________________________________ touch /partycja/quota.user touch /partycja/quota.group chmod 600 /partycja/quota.user chmod 600 /partycja/quota.group ___________________________________________________________________ 6. Restart. Teraz zrestartuj system, żeby wprowadzić zmiany, które naniosłeś. Zauważ też, że kolejne partycje, dla których chcesz włączyć quotę wymagają tylko kroków 4, 5 i 6. 22..22.. PPrrzzyyppiissyywwaanniiee lliimmiittóóww uużżyyttkkoowwnniikkoomm.. Operację tę wykonuje się poleceniem edquota (szczegóły man edquota). Normalnie uruchomiłbym quotacheck z opcjami -avug, aby zyskać jak najaktualniejszy obraz systemu plików, przed edycją plików quoty. Jest to jednak tylko moje przyzwyczjenie a nie wymagany krok. 22..22..11.. PPrrzzyyppiissyywwaanniiee lliimmiittóóww kkoonnkkrreettnneemmuu uużżyyttkkoowwnniikkoowwii.. Oto przykład. Mam użytkownika, którego login to _b_o_b. Polecenie edquota bob uruchomi edytor _v_i (lub ten podany w zmiennej _$_E_D_I_T_O_R), w którym będzie można edytować limit dla użytkownika _b_o_b dla każdej partycji, na której jest włączona quota: Quotas for user bob: /dev/hda2: blocks in use: 2594, limits (soft = 5120, hard = 6400) inodes in use: 356, limits (soft = 1000, hard = 1500) "blocks in use" - jest całkowitą ilością bloków (w kilobajtach) jaką zużył dany użytkownik. "inodes in use" - jest całkowitą liczbą plików jaką użytkownik ma na dysku. 22..22..22.. PPrrzzyyppiissyywwaanniiee lliimmiittóóww kkoonnkkrreettnneejj ggrruuppiiee.. Teraz mam grupę _g_a_m_e_s. Polecenie edquota -g games znowu uruchamia edytor vi, aby edytować limity dla tej grupy: Quotas for group games: /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000) inodes in use: 1454, limits (soft = 3000, hard = 4000) 22..22..33.. PPrrzzyyppiissyywwaanniiee ttaakkiicchh ssaammyycchh lliimmiittóóww ddllaa wwiięękksszzeejj iilloośśccii uużżyyttkkoowwnniikkóóww.. Aby za jednym zamachem ustawić limit dla, powiedzmy 100 użytkowników, taki sam jak dla _b_o_b_a, najpierw trzeba ustawić ręcznie limity dla _b_o_b_a, a potem wykonać polecenie: edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd` zakładając, że używasz powłoki _c_s_h i że twoi użytkownicy mają numery _U_I_D zaczynające się od 500. Dodatkowo są jeszcze trzy inne terminy, z którymi powinieneś się zapoznać: Soft Limit, Hard Limit i Grace Period. ˇ Soft Limit. Normalnie, _s_o_f_t _l_i_m_i_t określa maksymalną objętość dysku, jaką użytkownik ma przyznaną. Ale jeśli połączymy to z _g_r_a_c_e _p_e_r_i_o_d, to _s_o_f_t _l_i_m_i_t określa nam granicę, po przekroczeniu której użytkownik zostaje ostrzeżony. ˇ Hard Limit. Działa to jjeeddyynniiee przy ustawieniu _g_r_a_c_e _p_e_r_i_o_d. Określa to absolutny limit na dysku, którego dany użytkownik nie może przekroczyć. ˇ Grace Period. Jest to okres czasu, po jakim zacznie działać opcja _s_o_f_t _l_i_n_k. Wartości tej opcji podaje się poleceniem edquota -t. Jednostkami czasu mogą być: sekundy, minuty, godziny, dni, tygodnie lub miesiące. Oto co zobaczysz po wydaniu polecenia edquota -t: ___________________________________________________________________ Time units may be: days, hours, minutes, or seconds Grace period before enforcing soft limits for users: /dev/hda2: block grace period: 0 days, file grace period: 0 days ___________________________________________________________________ Zmień _0 _d_a_y_s na jakiś okres czasu, który uważasz za słuszny. Osobiście wybrałbym 7 dni albo 1 tydzień. 33.. RRóóżżnnee ppoolleecceenniiaa zz ppaakkiieettuu QQuuoottaa.. 33..11.. QQuuoottaacchheecckk Program ten jest używany do analizowania systemu plików ze względu na bieżące zużycie i uaktulaniania zapisu w pliku quota.user. Zalecam uruchamianie tego programu co jakiś okres czasu poprzez _c_r_o_n_t_a_b oraz podczas startu systemu. 33..22.. RReeppqquuoottaa Program ten podaje sumaryczne wiadomości dotyczące aktualnego zużycia systemu plików. Przykładowe wyjście tego polecenia może wyglądać tak: ______________________________________________________________________ # repquota -a Block limits File limits User used soft hard grace used soft hard grace root -- 175419 0 0 14679 0 0 bin -- 18000 0 0 735 0 0 uucp -- 729 0 0 23 0 0 man -- 57 0 0 10 0 0 user1 -- 13046 15360 19200 806 1500 2250 user2 -- 2838 5120 6400 377 1000 1500 ______________________________________________________________________ 33..33.. QQuuoottaaoonn ii QQuuoottaaooffff Pierwszy z tych dwóch programów służy do włączania quoty, a drugi do wyłączania. Właściwie oba pliki są podobne. Są wykonywane podczas startu systemu i jego zamknięcia. 44.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Napewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać. Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Saving-Space.pl.txt�����������������������������������������������0100664�0001750�0001750�00000027665�07457640740�021015� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Oszczędzanie miejsca na dysku twardym (małe JTZ) Guido Gonzato, guido@ibogeo.df.unibo.it v1.0.1, 07 kwietnia 1999 WWeerrssjjaa ppoollsskkaa:: TToommaasszz ''ttssccaa'' SSiieenniicckkii,, ttssccaa@@eeddbb..ddkk v1.01, 14 grudnia 2001 Dokument zawiera informacje pomagające w największym możliwym stopniu ograniczyć miejsce zajmowane przez Linuksa na twardym dysku. Przyda się szczególnie użytkownikom laptopów. ______________________________________________________________________ Spis treści 1. Wstęp 2. Potrzebne oprogramowanie 3. Procedura odzyskiwania miejsca 3.1 Usuwanie źródeł jądra 3.2 Usuwanie zbędnych aplikacji 3.3 Usuwanie symboli z plików binarnych ("strip") 3.4 Kompresowanie plików wykonywalnych 3.5 Kompresowanie pozostałych plików 4. Przykład z życia wzięty 5. Formalności 5.1 Prawa autorskie 5.2 Zastrzeżenia 6. Od tłumacza ______________________________________________________________________ 11.. WWssttęępp Posiadam laptopa, na którym obok fabrycznie dołączonego Windows 95 zainstalowałem Linuksa. Zajmowaną przez Windows przestrzeń dyskową ograniczyłem do 500 MB, co dało mi 240 MB wolnego miejsca. Niby niewiele, a jednak dzięki rozsądnej gospodarce wolną przestrzenią zmieściłem tam w pełni funkcjonalną instalację Linuksa (Red Hat 4.1). Jeśli brakuje ci wolnej przestrzeni na twardym dysku, wykorzystaj informacje zawarte w niniejszym dokumencie -- pomogą ci one znacznie zwiększyć jej ilość. Zanim jednak przejdziemy do rzeczy, muszę cię ostrzec: nie obwiniaj mnie, jeśli coś pójdzie nie tak. Niektóre z wykorzystywanych w procedurze odzyskiwania wolnego miejsca programów mogą być niebezpieczne pomimo, iż sprawdziły się u mnie. 22.. PPoottrrzzeebbnnee oopprrooggrraammoowwaanniiee Potrzebować będziesz: ˇ w pełni sprawnej dowolnej wersji Linuksa, ˇ popularnego programu do kompresji gzip lub jego zamiennika: bzip2. bzip2 kompresuje lepiej, niż gzip, jest jednak nieco powolniejszy i zużywa mnóstwo pamięci. Oba te programy znajdziesz pod adresem <ftp://sunsite.unc.edu:/pub/Linux/utils/compress>, ˇ programu kompresującego pliki wykonywalne upx dostępnego pod adresami <http://cdata.tvnet.hu/~ml/upx.html> oraz <http://wildsau.idv.uni-linz.ac.at/mfx/upx.html>, ˇ pakietu zlibc dostępnego pod adresem <ftp://sunsite.unc.edu:/pub/Linux/libs/compression>. Plik nazwany jest zlibc-X.X.tar.gz, gdzie X.X jest numerem najnowszej wersji programu. Istnieją też inne programy do kompresji plików wykonywalnych. Jednym z nich jest gzexe -- najlepiej od razu o nim zapomnij. tcx był niezły, został jednak zdetronizowany przez upx. Kolejny program, tzx, teoretycznie powinien sprawować się nawet lepiej, niż tcx. Niestety, kompletnie zawiódł podczas prób, które przeprowadziłem na zapasowym komputerze; być może z mojej winy. Najlepiej użyj więc upx -- jest to program sprawdzony, wydajny i wygodny. Istnieją łatki umożliwiające jądru obsługę skompresowanych systemów plików "w locie", jednak w momencie pisania tego tekstu żadna z nich nie cieszy się opinią stabilnej i bezpiecznej. Najbezpieczniej jest trzymać się od nich z daleka. 33.. PPrroocceedduurraa ooddzzyysskkiiwwaanniiaa mmiieejjssccaa 33..11.. UUssuuwwaanniiee źźrróóddeełł jjąąddrraa Źródła jądra zajmują ponad 20 MB, możesz więc rozważyć ich usunięcie. Jeśli się na to zdecydujesz, proponuję, żebyś najpierw raz a dobrze skompilował jądro odpowiednie dla twojego komputera; potem możesz źródła skasować. Ale uważaj: NNiiee kkaassuujj źródeł jądra dopóki nie jesteś pewien, że twój system jest prawidłowo skonfigurowany. Pamiętaj również, że kompilacja programów napisanych w C wymaga plików nagłówkowych (#include) jądra. Przemyśl to! Kasując źródła jądra _o_s_z_c_z_ę_d_ź katalog include/linux/, chyba, że jesteś pewien, że nigdy niczego nie będziesz na swoim komputerze kompilował. 33..22.. UUssuuwwaanniiee zzbbęęddnnyycchh aapplliikkaaccjjii Teraz musisz zadecydować, których programów _n_a_p_r_a_w_d_ę potrzebujesz. Niektóre aplikacje mogą okazać się w twoim przypadku zbędne; na przykład zastanów się, czy naprawdę musisz mieć na dysku emacsa? Zamiast niego możesz używać jeda. Decyzja należy do Ciebie; przed jej podjęciem rozważ następujące fakty: ˇ gcc jest bardzo dużym pakietem używanym do kompilowania jądra oraz wszelkich aplikacji, które rozprowadzane są w formie kodów źródłowych. Pakiet ten jest oczywiście również niezbędny, jeśli piszesz własne programy w C lub Fortranie (z f2c lub g77). Zastanów się nad swoimi potrzebami, zanim usuniesz gcc. Alternatywne kompilatory, jak np. lcc też są niezłe, ale ustępują gcc. Podsumowując, proponuję pozostawić ten pakiet na dysku. ˇ X Window System zajmuje na olbrzymią ilość miejsca na dysku twardym, czasem jednak szkoda z niego rezygnować. Jeśli czujesz, że nie mógłbyś tego zrobić, spróbuj przynajmniej ograniczyć zajmowaną przez X przestrzeń dyskową. W tym celu pozostaw sobie tylko właściwy dla twojego sprzętu serwer X, jakiegoś niewielkiego Window-Managera, tylko jeden xterm, usuń czcionki 100 dpi, itd. ˇ TeX i towarzyszące mu pakiety zajmują naprawdę wiele miejsca. Zrezygnowanie z LaTeXa i ograniczenie się do czystego TeXa znacznie zwiększy ilość dostępnej przestrzeni dyskowej. Dodatkowe miejsce możesz uzyskać rezygnując z działających pod X przeglądarek plików dvi i ps, takich jak xdvi czy ghostview. Zamiast nich użyj programów dvitty, dvivga i podobnych. Przy okazji zastanów się: skoro nie używasz X do przeglądania dvi, może wcale tego pakietu nie potrzebujesz...? ˇ gry nigdy nie są ``niezbędne''. 33..33.. UUssuuwwaanniiee ssyymmbboollii zz pplliikkóóww bbiinnaarrnnyycchh ((""ssttrriipp"")) Rozpoczynamy proces zmniejszania wielkości plików binarnych. Wejdź do katalogu /usr/bin i wydaj w nim polecenie: /usr/bin# strip * Usunie to symbole z plików binarnych. Powtórz ten krok w /usr/X11R6/bin/ i pozostałych zawierających binarne pliki wykonywalne katalogach (nie zapomnij też odnaleźć binariów pakietów TeX i gcc). Jeśli cenisz sobie swój system, nniiee wwyykkoonnuujj tteeggoo ppoolleecceenniiaa w katalogach /sbin, /bin ani /usr/sbin/ ! 33..44.. KKoommpprreessoowwaanniiee pplliikkóóww wwyykkoonnyywwaallnnyycchh Rozpocznij od zainstalowania pakietu upx i przeczytania jego dokumentacji. Następnie wejdź do katalogu /usr/bin i wykonaj w nim polecenie /usr/bin# upx * Skompresuje to wszystkie pliki wykonywalne, w tym te z suid (txc nie poradziłby sobie z tym). Powtórz ten krok w kolejnych katalogach według opisu zawartego w poprzednim podrozdziale. Pamiętaj o kompresowaniu plików wykonywalnych pojawiających się po instalacji nowego oprogramowania! 33..55.. KKoommpprreessoowwaanniiee ppoozzoossttaałłyycchh pplliikkóóww W systemie znajduje się mnóstwo plików, które możesz raz na zawsze skompresować. Rozpocznij od wejścia do katalogu /usr/doc/ (od tłumacza: w nowszych dystrybucjach jest to /usr/share/doc/) i wydaj w nim polecenie: /usr/doc# find . -type f -exec gzip -9 {} \; 2> /dev/null Pamiętaj o kompresowaniu dokumentów dołączanych do później instalowanych programów! Powtórz ten krok w katalogu zawierających dokumentację systemu TeX (u mnie jest to /usr/lib/texmf/texmf/doc/). Jeśli _n_a_p_r_a_w_d_ę wiesz, co robisz, możesz katalogi z dokumentacją całkowicie skasować. Zainstaluj teraz program zlibc i skompiluj go. Jeśli twój system przypomina mój, podczas kompilacji zobaczysz komunikaty o braku statycznej biblioteki libc. Nie przejmuj się: jest to kwestia odnalezienia pliku uncompress.o, przeniesienia go do /usr/local/lib/ i dodania następującej linii do pliku /etc/profile: export LD_ELF_PRELOAD=/usr/local/lib/uncompress.o Dzięki powyższemu będziesz teraz mógł kompresować gzipem nie tylko dokumentację, ale również pliki z wykorzystywanymi przez różne programy danymi; programy będą nadal mogły ich używać. Teoretycznie sztuczka ta powinna działać z większością aplikacji, praktycznie nie zawsze tak jest -- w moim przypadku sukces nie był oszałamiający. 44.. PPrrzzyykkłłaadd zz żżyycciiaa wwzziięęttyy Oto co ja osiągnąłem zastosowawszy wyżej opisaną procedurę. Przed rozpoczęciem operacji system wg df zajmował 398.798 bloków 1024. ˇ Nie usunąłem źródeł jądra ani plików nagłówkowych, ˇ Usunąłem kilka aplikacji i wszystkie gry. Zostawiłem sobie X11, X11-narzędzia, C- i Fortran-narzędzia, Tcl/Tk, programy obsługujące sieć oraz kilka standardowych aplikacji. Zajętych bloków: 244.668, ˇ Skompresowałem programem upx pliki znajdujące się katalogach /usr/bin, /usr/X11R6/bin, /usr/lib/texmf/bin/i586-linux oraz /usr/lib/gcc-lib/i386-linux/2.7.2.1. Zajętych bloków: 226.270. ˇ Skompresowałem dokumentację w katalogach /usr/doc oraz /usr/lib/texmf/texmf/doc. Zajętych bloków: 198.745. Liczba zajętych bloków przed rozpoczęciem operacji: 398.798, po jej zakończeniu: 198.745. Uzyskałem 200.000 wolnych bloków! A gdybym użył bzip2 zamiast gzipa, wolnych bloków byłoby jeszcze więcej. Jeśli od samego początku działasz świadomie, instalując wyłącznie niezbędne aplikacje i kompresując pliki wykonywalne i dokumentację, oszczędzisz około 20 MB. W przypadku laptopów jest to znacząca liczba. 55.. FFoorrmmaallnnoośśccii 55..11.. PPrraawwaa aauuttoorrsskkiiee O ile nie zaznaczono inaczej dokumenty HOWTO chronione są prawami autorskimi należącymi odpowiednio do ich autorów. Zezwala się na powielanie i dystrybucję tych dokumentów w całości lub w części na jakimkolwiek fizycznym bądź elektronicznym nośniku pod warunkiem pozostawienia na wszystkich kopiach niniejszej informacji o prawach autorskich. Zezwala się i zachęca do redystrybucji komercjalnej; autor jednak życzy sobie być powiadamiany o każdej z takiej dystrybucji. Niniejsze prawa autorskie dotyczą również wszelkich tłumaczeń, prac pochodnych, składających się z, lub zawierających jakiekolwiek dokumenty HOWTO. Oznacza to, że niedozwolone jest stworzenie pracy pochodnej od dokumentu HOWTO i nałożenie dodatkowych ograniczeń na jej dystrybucję. W pewnych szczególnych okolicznościach możliwe są odstąpienia od tych zasad. Po bliższe informacje należy skontaktować się z koordynatorem projektu Linux HOWTO pod adresem podanym poniżej. W skrócie: chcemy promować rozprzestrzenianie się podanych tu informacji poprzez możliwie wiele kanałów. Zatrzymujemy jednak prawa autorskie do dokumentów HOWTO i chcielibyśmy być informowani o jakichkolwiek planach redystrybucji tych dokumentów. W przypadku pytań skontaktuj się z koordynatorem projektu Linux HOWTO Timem Bynymem, tjbinum@sunsite.unc.edu. 55..22.. ZZaassttrrzzeeżżeenniiaa Autorem niniejszego dokumentu jest Guido Gonzato, <REMOVE_MEguido@ibogeo.df.unibo.it>. Dokument ten jest udostępniony 'jak jest'. Starałem się napisać go jak najlepiej, jednak wszelkich zawartych tu informacji możesz użyć tylko na własne ryzyko. Nie ponoszę odpowiedzialności za żadne szkody wynikłe z zastosowania tych informacji. Ucieszą mnie wszelkie reakcje: prośby, sugestie, wyzwiska, itd. Ciesz się Linuksem i życiem, Guido =8-) 66.. OOdd ttłłuummaacczzaa Wersja oryginalna niniejszego dokumentu znajduje się pod adresem <http://sunsite.unc.edu/LDP/>. Tłumaczenia pozostałych dokumentów HOWTO na język polski: <http://www.jtz.org.pl>. Copyright for the translation (c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk ���������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Sendmail+UUCP.pl.txt����������������������������������������������0100664�0001750�0001750�00000046651�07104371340�021017� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Jak skonfigurować sendmail przez UUCP. Autor: Jamal Hadi Salim, jamal@glcom.com v1.2, 15 Marca 1997 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkiiBB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.3, 13 Listopada 1997 Historia: -------- Pierwsza wersja tego dokumentu: Lipiec/96: tylko dla sendmail-a bez bind-a Aktualizacja: 1 Paźdz./96: dla binariów dostarczanych z RedHat-em Aktualizacja: 7 Paźdz./96: dodane wskazówki jak skompilować sendmail-a bez bind-a Aktualizacja: 25 Paźdz./96: dodana wskazówka jak uszczęśliwić funkcję sendmail-a getHostbyAddr() poprzez nieprawdziwy /etc/hosts Aktualizacja: 15 Marca/97: Jestem zdu­ miony ilością komentarzy, którą dostaję więc postanowiłem kontynuować moje dzieło. Poprawiłem kilka małych błędów: dodałem diagram + refer­ encje. Po ustatkowaniu się i dokładnym przeczytaniu TFM (dokładnie mówiąc "the Bat Book") odkryłem tajemnicę Caramilki ! :) Kroki opisane poniżej będą działać z binariami dostarczanymi wraz z dystrybucją Red­ Hat. Może powinienem też wysłać informację o tym dokumencie do opiekuna Sendmail-FAQ, bo nie ma tam ani słowa o nim. ______________________________________________________________________ Spis treści 1. Wprowadzenie. 1.1 Co ten dokument stara się wyjaśnić? 1.2 Czego ten dokument nie wyjaśnia. 1.3 Ustawienia. 2. Wymagania. 2.1 Jak przeżyć kanonizację nazw na samotnie stojącej maszynie bez DNS-u? 2.1.1 Część I: 2.1.2 Część II: 3. Ustawianie. 4. Do zrobienia. 5. Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. 11..11.. CCoo tteenn ddookkuummeenntt ssttaarraa ssiięę wwyyjjaaśśnniićć?? Jak ustawić pojedynczy komputer zwany tutaj ja.pl bez bezpośredniego dostępu do Internetu, aby przesyłał pocztę przy pomocy sendmail-a do "sprytniejszego hosta" np. twojego dostawcy Internetu. Opcjonalnie możesz skonfigurować swój komputer, aby obsługiwał pocztę dla innych, czyli ty będziesz "sprytnijeszym hostem" czy gateway-em". 11..22.. CCzzeeggoo tteenn ddookkuummeenntt nniiee wwyyjjaaśśnniiaa.. Dostawałem niewiarygodną ilość pytań dotyczących następujących tematów. Celem tego dokumentu nie jest ich opis, więc postarajcie się proszę nie przsyłać mi takich pytań: ˇ jak ustawić UUCP. Zajrzyj do wielu doskonałych dokumentów na ten temat np: ˇ UUCP HOWTO <html://www.jtz.org.pl/Html/UUCP-HOWTO.pl.html> [po polsku] (Vince Skahan, vince@halcyon.com) ˇ "_U_s_i_n_g _a_n_d _m_a_n_a_g_i_n_g _U_U_C_P" (Ed Ravin -- wydawnictow O'Reilly - TO JEST NAJLEPSZE ˇ Linux Network Administrator Guide <http://sunsite.icm.edu.pl:/pub/Linux/> (Olaf Kirch) ˇ jak ustawić DNS. Zajrzyj do wielu doskonałych dokumentów na ten temat np: ˇ Caching named mini howto <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/> (Nicolai Langfeldt) ˇ "_T_h_e _b_a_t _b_o_o_k" (Sendmail;Costalles, Allman, Rickert;wydawnictwo O'Reilly) ˇ "_D_N_S _a_n_d _B_I_N_D" (Wydawnictwo O'Reilly) ˇ "_T_C_P_/_I_P _N_e_t_w_o_r_k _A_d_m_i_n_i_s_t_r_a_t_i_o_n" (Hunt, Craig; Wydawnictwo O'Reilly) [jest także po polsku: _A_d_m_i_n_i_s_t_r_a_c_j_a _s_i_e_c_i_ą _T_C_P_/_I_P lub jakoś tak.] ˇ Linux Network Administrator Guide <http://sunsite.icm.edu.pl:/pub/Linux/> (Olaf Kirch) ˇ "_s_e_n_d_m_a_i_l _T_h_e_o_r_y _a_n_d _P_r_a_c_t_i_c_e" (Avolio and Vixie; Wydawnictwo Digital press) ˇ jak ustawić bazy (inne niż mailertable) tak, żeby działały z sendmail-em. Zajrzyj do wielu doskonałych dokumentów na ten temat np: ˇ "_T_h_e _b_a_t _b_o_o_k" (Sendmail;Costalles, Allman, Rickert;wydawnictwo O'Reilly) ˇ "_T_C_P_/_I_P _N_e_t_w_o_r_k _A_d_m_i_n_i_s_t_r_a_t_i_o_n" (Hunt, Craig; Wydawnictwo O'Reilly) [jest także po polsku: _A_d_m_i_n_i_s_t_r_a_c_j_a _s_i_e_c_i_ą _T_C_P_/_I_P lub jakoś tak.] ˇ "_s_e_n_d_m_a_i_l _T_h_e_o_r_y _a_n_d _P_r_a_c_t_i_c_e" (Avolio and Vixie; Wydawnictwo Digital press) ˇ dokumentacja dołączona do sendmail-a. ˇ jak pisać czy modyfikować zasady i mailery. Zobacz wszystkie referencje z _c_). Możesz także znaleźć pomoc na tych grupach dyskusyjnych: ˇ comp.mail.sendmail ˇ comp.mail.uucp ˇ comp.os.linux.networking ˇ pl.comp.os.linux [po polsku] Na IRC-u też. Kanały: #linux, #unix, #plug [po polsku]. 11..33.. UUssttaawwiieenniiaa.. Dokument ten dotyczy systemów, które przesyłają pocztę poprzez UUCP. "mysmarthost" jest nazwą hosta ISP, tak jak jest to ustawione w pliku konfiguracyjnym (sys file) uucp a "ja.pl" to nazwa hosta, którego używamy. "mysmarthost" ma dostęp do Internet-u. Tak naprawdę nie obchodzi nas jak - po prostu wiemy, że ma i już. ja.pl, którego ustawienia opiszemy w przykładzie, obsługuje pocztę dla down.pl i system1.org.pl i ich poddomen. ja.pl łączy się z down.pl poprzez TCP/IP a z system1.org.pl czystym UUCP poprzez linię telefoniczną. Sytuacja pokazana jest na poniższym obrazku: ----------------------- | | | Internet | | | ----------------------- | | Linia dedykowana/PPP z protokołem TCP/IP | ------------- | | | mysmarthost | Autorytatywny nameserver dla | | *.ja.pl, *.down.pl, *.system1.org.pl ------------- | | UUCP otrzymuje pocztę przez linię telefoniczną dla | system1.org.pl, *.system1.org.pl,*.down.pl, down.pl | jak również dla ja.pl and *.ja.pl ------------ | * ***** * | ------------ | * ja.pl * | ------ | | * ***** * | | | ------------ | |UUCP poprzez linię tel. | UUCP poprzez TCP/IP | | -------------- ------------- | | | | |system1.org.pl| | down.pl |----- | | | | | ------------- --------- | | | | | | | LAN: smtp dla poszczególnych odbiorców | Linia tel UUCP | | | ---------------- ----------- | LAN | | LAN | | system1.org.pl | | down.pl | | | ----------- ---------------- 22.. WWyymmaaggaanniiaa.. Jeśli masz system używający uucp dla poczty, to właściwie nie musisz wkompilowywać bind-a/resolvera do sendmail-a. Upewnij się, że masz makemap-a, i że obsługuje on "hash" i bardziej popularne formaty "dbm" czy nawet format "btree" (Wersja na RedHat-a nie obsługuje dbm). Makemap jest normalnie dystrybuowany z sendmail- em. 22..11.. JJaakk pprrzzeeżżyyćć kkaannoonniizzaaccjjęę nnaazzww nnaa ssaammoottnniiee ssttoojjąącceejj mmaasszzyynniiee bbeezz DDNNSS--uu?? 22..11..11.. CCzzęęśśćć II:: Jeśli dostaniesz pre-kompilowanego sendmail-a z dołączonym bind-em, to możesz z nim dalej żyć (Tak jak to jest w RedHat-cie). ˇ Odnośnie konfiguracji opartej na pliku m4 zobacz moje rozwiązanie (moje ulubione). Próbuj użyć tej opcji o ile naprawde nie zajdzie konieczność b) czy c) ˇ Jeśli ze mną porozmawiasz, mógłbym wspomóc cię wersją skompilowaną (8.8.5) bez bind-a. Może RedHat powinien rozważyć możliwość dostarczania dwóch wersji binarnych senmail-a (tak jak jest to w Slackware). Jedna z bind-em a jedna bez. ˇ Najszybszym rozwiązaniem, aby otrzymać działający sendmail bez bind-a jest edycja pliku src/conf.htak, żeby wyglądał tak: conf.h:# ifndef NAMED_BIND conf.h:# define NAMED_BIND 0 /* use Berkeley Internet Domain Server */ 22..11..22.. CCzzęęśśćć IIII:: Normalnie sendmail będzie koniecznie chciał sprawdzić nazwę, aby rozwinąć część dotyczącą host-u przy pomocy _g_e_t_h_o_s_t_b_y_a_d_d_r_(_) dla każdego listu, który wysyła (nawet jeśli go poinformujesz żeby nie kanonifikował nazw). ˇ Użyj adresu IP według RFC1597 (10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255, 192.168.0.0 - 192.168.255.255). Zmodyfikuj plik /etc/hosts i dodaj następującą linię, jako przykład dla "myhost" 10.0.0.1 myhost.ja.pl myhost ˇ Jeśli używasz bazy NIS (i NIS jest wkompilowane w sendmail-a tak jak to chyba jest z RedHat-em. RedHat ma także wbudowanego NIS-a) upewnij się, że plik /etc/nsswitch.conf zawiera: hosts: files dns i w pliku /etc/hosts i dodaj poniższą linię jak przykład dla host-a myhost: [cały czas używając schematu z RFC1597] 10.0.0.1 myhost.ja.pl myhost UUWWAAGGAA:: W obu przypadkach ważne jes, aby podać pełny adres w pliku /etc/hosts. Czyli linia powinna wyglądać tak: 10.0.0.1 myhost.ja.pl myhost a nie tak 10.0.0.1 myhost Będziesz musiał także zdefiniować makro sendmail-a - _$_w, aby zawierało _m_y_h_o_s_t_._j_a_._p_l. Dodaj następującą linijkę do swojego pliku /etc/sendmail.cf jak już zostanie wygenerowany: Dwmyhost.ja.pl (albo możesz użyć użyć _M_A_S_Q_U_A_R_E_A_D_E___A_S_(_m_y_h_o_s_t_._m_e_._c_o_m_) w poniższym pliku .mc) UUWWAAGGAA !!!!!! myhost jako nazwa domeny jest podane tylko przykładowo; nie musisz używać takiej samej nazwy. Wybierz sobie jakąś swoją nazwę host-a jeśli jej jeszcze nie masz. 33.. UUssttaawwiiaanniiee.. ˇ Stwórz swój plik .mc używając ulubionego edytora; nazwę ten plik my.mc ___________________________________________________________________ ============== plik my.mc ======================= include(`../m4/cf.m4') VERSIONID(`me.com's setup with uucp created by xxxx')dnl OSTYPE(linux) FEATURE(nodns)dnl FEATURE(nocanonify)dnl FEATURE(always_add_domain)dnl FEATURE(mailertable, hash /etc/mailertable)dnl MAILER(local)dnl MAILER(smtp)dnl MAILER(uucp) define(`SMART_HOST', uucp-dom:mysmarthost) =============================================== ___________________________________________________________________ Rozgryźmy to: ______________________________________________________________________ include(`../m4/cf.m4') ______________________________________________________________________ Dołącza macro m4 znajdujące się w ../m4/cf.m4, aby zrobiło za nas parę rzeczy. ______________________________________________________________________ VERSIONID(`me.com's setup with uucp created by xxxx')dnl ______________________________________________________________________ Używane jest to, aby odróżnić od siebie różne wersje plików konfigura­ cyjnych, które możesz z biegem czasu potworzyć. ______________________________________________________________________ OSTYPE(linux) ______________________________________________________________________ Tutaj definiuje się różne specyficzne dla Linux-a ustawienia. Bezpieczniej jest zawrzeć to polecenie. ______________________________________________________________________ FEATURE(nodns)dnl ______________________________________________________________________ Polecenie to informuje, że nie mamy serwer-a DNS (więc w efekcie używamy tylko uucp dla poczty. Sendmail musi zostać tak skompilowany, aby nie używał bind-a.) Teraz jest to już przestarzałe, ale zostawię to tutaj na wypadek gdybyś używał jakiejś starszej wersji sendmail-a. ______________________________________________________________________ FEATURE(nocanonify)dnl ______________________________________________________________________ Polecenie to informuje, żeby nie przekazywać adresów do $[ ... $] do kanonizacji. Normalnie, jeśli masz wkompilowanego bind-a, to sendmail próbowałby i rozwiązałby alias/adres IP na nazwę kanoniczną używając DNS-a. Niechcesz tego robić jeśli wszystko co masz, to linie łaczące cię poprzez uucp tj. jesteś dla siebie i dla nikogo innego. ______________________________________________________________________ FEATURE(always_add_domain)dnl ______________________________________________________________________ Dodaje to nazwę hosta dla domeny lokalnej nawet jeśli poczta jest dostarczana lokalnie. Nie jest to konieczne - po prostu lubię to. ______________________________________________________________________ FEATURE(mailertable, hash /etc/mailertable)dnl ______________________________________________________________________ Plik /etc/mailertable będzie bazą danych typu "hash", gdzie będziemy zapisywać informacje dotyczące routingu pewnych adresów. Jeśli nie masz nikogo, do kogo masz podłączone linie uucp, to nie potrzebujesz tego. Więcej informacji będzie później. Jeśli chciałeś użyć formatu "dbm", to miałbyś ______________________________________________________________________ FEATURE(mailertable, dbm /etc/mailertable)dnl ______________________________________________________________________ Jeśli chciałeś użyć formatu "btree", to miałbyś ______________________________________________________________________ FEATURE(mailertable, btree /etc/mailertable)dnl ______________________________________________________________________ ______________________________________________________________________ MAILER(local)dnl MAILER(smtp)dnl MAILER(uucp) ______________________________________________________________________ To są "mailery", których używamy. ______________________________________________________________________ define(`SMART_HOST', uucp-dom:mysmarthost) ______________________________________________________________________ Nasz "smart host" jest naszym ISP, który jest zdefiniowany w pliku konfiguracyjnym uucp (uucp sys file), jako "system mysmarthost". Wszystkie wiadomości, których nie umiemy obsłużyć (czyli dla domeny, czy "mailery", których nie rozumiemy) będą przekazane do niego, aby je odpowiednio dostarczyć. Zauważ, że używamy uucp-dom jako "mailer" uucp. Ten konkretny "mailer" używa zasad przepisywania "smtp". ˇ Stwórz swój plik sendmail.cf ˇ skopiuj stary plik /etc/sendmail.cf ˇ zapisz nowy plik na miejsce starego: ___________________________________________________________________ m4 my.mc > /etc/sendmail.cf ___________________________________________________________________ ˇ zweryfikuj czy plik sendmail.cf został poprawnie stworzony odnośnie twoich ustawień. Niektóre błędy na jakie się natknąłem to: - brak "mailera" uucp-dom Działo się tak, ponieważ nie miałem pozycji dla "smtp". Właściwie rozumiem, że jest ważne, aby zdefiniować to przed uucp. ˇ Stwórz swój /etc/mailertable Jeśli nie masz adresów, które cię podłączają poprzez uucp, to przeskocz ten krok. ˇ stwórz/zmodyfikuj plik /etc/mailertable ___________________________________________________________________ --------- przykładowy plik /etc/mailertable ---------- system1.org uucp-dom:system1 .system1.org uucp-dom:system1 ja.pl uucp-dom:ja up.down.pl error: Host nie jest znany w ja.pl .down.pl uucp-dom:down .ja.pl error: Host nie jest znany w ja.pl ------ ___________________________________________________________________ Plik ten informuje, że wszystko co jest adresowane do _s_y_s_t_e_m_1_._o_r_g zostanie przesłane do _s_y_s_t_e_m_1 używając "mailer-a" uucp-dom (zdefin­ iowanego w pliku konfiguracyjnym uucp [uucp sys file]). Innymi słowy przekazujemy pocztę dla _*_._s_y_s_t_e_m_1_._o_r_g podobnie dla _d_o_w_n_._p_l i jej pod­ domen za wyjątkiem dodoatkowego filtrowania; odrzucamy każdą pocztę dla poddomeny _u_p_._d_o_w_n_._p_l używając wbudowanego "mailer-a" sendmail-a do obsługi błędów z komunikatem "Host nie jest znany w ja.pl"; Jest tak ponimeważ zostaliśmy poproszeni o to przez adminstratora down.pl. Aby odrzucić wszystkie nieznane dla nas poddomeny używamy ostatniej linii w "mailertable". ˇ stwórz bazę danych programem "makemap" Jeśli używasz formatu "hash": ___________________________________________________________________ makemap hash /etc/mailertable </etc/mailertable ___________________________________________________________________ Jeśli używasz formatu "dbm": ______________________________________________________________________ makemap dbm /etc/mailertable </etc/mailertable ______________________________________________________________________ Jeśli używasz formatu "btree": ______________________________________________________________________ makemap btree /etc/mailertable </etc/mailertable ______________________________________________________________________ Rób to za każdym razem kiedy zmieniasz plik. ˇ zrestartuj sendmail-a ˇ przetestuj sendmail-a ˇ sendmail -bv uzytkownik@gdzies.tam ˇ użyj sendmail -bt i wpisuj różne adresy używając zasady 3,0, aby zobaczyć gdzie one skończą i różnych zasad i podjętych tras. To wszystko. 44.. DDoo zzrroobbiieenniiaa.. 1. Zhtml-izować ? 2. Dodać informacje na temat ustawiania systemu down.pl (żeby pokazać jak się zająć tymi "poszczególnymi odbiorcami"). 3. Dodać informacje na temat dostarczania news-ów poprzez UUCP (preferowany będzie INN). To może wymagać zmiany tytułu tego dokumentu. 55.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Napewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać. Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl ���������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Soundblaster-AWE.pl.txt�������������������������������������������0100664�0001750�0001750�00000110233�07104371340�021556� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Sound Blaster AWE 32/64 HOWTO Autor: Marcus Brinkman Marcus.Brinkmann@ruhr-uni-bochum.de v1.2, 11 Stycznia 1998 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ggddaannsskk..sspprriinntt..ppll v1.0, 23 Lutego 1998 Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://homepage.ruhr-uni- bochum.de/Marcus.Brinkmann/soundblaster.html Ten dokument opisuje jak zainstalować i skonfigurować kartę Sound Blaster 32 (SB AWE 32, SB AWE 64) firmy Creative Labs w systemie Linux używając sterownika "AWE Sound Driver Extention" napisanego przez Takashi-ego Iwai. Opisuje także specjalne narzędzia i odgrywarki dla SB AWE. Przyjętym systemem będzie Debian GNU Linux, ale opisany sposób powinien działać w każdej innej dystrybucji. 11.. WWpprroowwaaddzzeenniiee To jest JTZ o Sound Blaster-rze AWE. Podaje ono dokładne informacje o maksymalnym wykorzystaniu Twojego Sound Blaster'a 32 (lub lepszego), włączając w to syntezę Wave Table. Ten dokument opisuje wszystkie karty SB od SB 32. Karty Sound Blaster są dobrze znane w środowisku DOS i Windows, a wiele osób chce też używać swoje karty pod Linux'em. Niestety, Creative Labs dostarcza tylko sterowniki pod Windows i DOS'a, więc zainstalowanie karty SB pod Linuxem nie jest proste. [oj, chyba jest :-) - przyp. tłum.] Ten dokument próbuje opisać jak można używać właściwości kart SB AWE w środowisku Linuxa. 11..11.. PPooddzziięękkoowwaanniiaa Dokument zawiera informacje, które wziąłem z FAQ Sterownika AWE i FAQ ISA PnP. Zobacz sekcję Źródła dla poznania autorów i miejsca tych dokumentów. Dzięki nim, obsługa dźwięku SB AWE jest możliwa. Mnóstwo ważnej pracy było zrobione przez Hannu Savolainen'a, który napisał sterownik dostarczany z jądrem Linuxa. Dziękuję! Chcę podziękować Nicoli Bernardelli za testowanie AWE64. Bez niego wiele błędów pozostałoby niewykrytych. Dziękuję za SGML Tools, to HOWTO jest dostępne w kilku formatach, wszystkie wygenerowane z jednego pliku źródłowego. 11..22.. PPoopprraawwkkii ww ssttoossuunnkkuu ddoo ppoopprrzzeeddnniicchh wweerrssjjii WWeerrssjjaa 11..00 Pierwsza wersja WWeerrssjjaa 11..11 Poprawiona pisownia (dzięki Curt!), dodana potrzebna wersja iissaappnnpp, teraz dostępna na sunsite i mnóstwie kopii. WWeerrssjjaa 11..22 Wersja francuska jest już dostępna, małe poprawki, dużo poprawionej pisowni (dzięki programowi ispell) 11..33.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu Najświeższe wersje są na mojej stronie domowej - Sound Blaster AWE HOWTO Nowe wersje tego dokumentu będą przesyłane na wiele anonimowych serwerów FTP składujących tego typu informacje, jak np. ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini Hypertekstowe wersje tego i innych Linuxowych HOWTO są dostępne na wielu serwerach WWW, np. http://sunsite.unc.edu/LDP. Większość dystrybucji Linuxa na CD-ROM'ach zawiera dokumenty HOWTO, często w katalogu //uussrr//ddoocc. Dzięki Arnaudowi Launay zoro@lsol.tm.fr jest dostępna francuska wersja tego dokumentu! Najświeższa wersja jest dostępna przez HTTP albo anonimowe FTP. Jeżeli przetłumaczysz ten dokument na inny język, daj mi znać, a dołączę odnośnik do niego tutaj. 11..44.. KKoonnttaakktt zz aauuttoorreemm Polegam na tobie, Czytelniku, w zrobieniu tego HOWTO użytecznym. Jeżeli masz jakiekolwiek sugestie, poprawki, albo komentarze, proszę, żebyś przysłał je do mnie, Marcus.Brinkmann@ruhr-uni-bochum.de, a ja postaram się wziąć je pod uwagę w następnej edycji. Byłbym szczególnie wdzięczny za informacje o procedurze startowej (skrtypty inicjalizujące itp.) innych popularnych dystrybucji Linuxa, np. RedHat lub SuSE Linux. Jeżeli opublikujesz ten dokument na CD-ROM'ie lub na papierze, kopia była by mile widziana. (Przez e-mail możesz zapytać się o mój adres pocztowy) Pomyśl także o złożeniu dotacji dla LDP (Linux Documentation Project), żeby wspomóc tworzenie darmowej dokumentacji Linux'a. Skontaktuj się z koordynatorem Linux HOWTO, Gregiem Hankins'em gregh@sunsite.unc.edu, żeby zdobyć więcej informacjii. 11..55.. ZZaassaaddyy ddyyssttrryybbuuccjjii Prawa autorskie - (C)1997 Marcus Brinkmann. To HOWTO jest dokumentacją darmową; możesz ją udostępniać i/lub modyfikować na zasadach Licencji Publicznej GNU (GNU General Public License) publikowanej przez FSF (Free Software Foundation); albo wersji 2, albo jakiejkolwiek późniejszej wersji. Ten dokument jest udostępniany z nadzieją, że będzie on użyteczny, ale bbeezz żżaaddnneejj gwarancji; nawet bez gwarancji ddoossttęęppnnoośśccii ani pprrzzyyddaattnnoośśccii ww ookkrreeśślloonnyymm pprrzzyyppaaddkkuu. Przestudiuj Licencję Publiczną GNU, dla uzyskania dokładnych informacji. Możesz uzyskać kopię Licencji pisząc do FSF - Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 22.. ZZaanniimm zzaacczznniieesszz 22..11.. WWpprroowwaaddzzeenniiee Ten dokument próbuje pomóc Ci w instalacji i użytkowaniu karty Sound Blaster AWE 32 lub Sound Blaster AWE 64 firmy Creative Labs w Twoim Linuxie. Odnośnym systemem jest Debian GNU Linux na platformie Intel i586, ale metoda tu przedstawiona powinna działać z każdą inną dystrybucją Linuxa, jak i na każdej innej platformie sprzętowej obsługiwanej prze Linuxowy sterownik dźwięku (różnice będą opisane). Pamiętaj, żeby dokładnie przeczytać "Linux Sound HOWTO" (zobacz sekcję Dodatkowe informacje. Traktuję swój dokument jako dodatek do Sound HOWTO, często możesz tam znaleźć informacje o rzeczach, których tu nie opisałem. 22..22.. KKiillkkaa uuwwaagg oo kkaarrttaacchh SSBB AAWWEE SB AWE 32 zawiera urządzenie dźwięku RAW, standardową syntezę OPL-2/OPL-3, port MIDI MPU-401 i syntezę Wave Table EMU 8000 o 32-głosowej polifonii (przestudiuj Sound HOWTO dla wyjaśnienia tych terminów). SB AWE 64 ma wszystkie możliwości AWE 32 i dodatkowo syntezę Wave Guide, z której Creative Labs jest szczególnie dumny. Problemem dla użytkowników Linuxa jest fakt, że dodatkowe 32 głosy są generowane programowo i wysyłane przez urządzenia dźwięku RAW. Ponieważ Creative Labs nie widzi rynku dla sterowników pod Linuxa, sterownik syntezy Wave Guide jest dostępny tylko pod Windows 3.1 i Windows 95. Znaczy to, że z punktu widzenia użytkownika Linuxa SB AWE 32 i AWE 64 są prawie identyczne. [AWE 64 ma troszeczkę lepsze przetworniki A/C i C/A -- przyp. tłum.] Od tej chwili będę się odnosił do SB AWE wogóle i wsponę o różnicach, jeżeli wystąpią. 22..33.. KKiillkkaa uuwwaagg oo kkaarrttaacchh PPlluugg aanndd PPllaayy Większość nowoczesnych kart na platformę Intela są kartami ISA PnP, co jest skrótem dla ,,Plug and Play''. Znaczy to, że karta musi być skonfigurowana przez system operacyjny, a to musi być wykonane przez skrypt inicjaliacyjny (initialization routine) w czasie ładowania systemu. Są co najmniej trzy możliwe sposoby na wykonanie tego, jeżeli: ˇ Masz bios PnP, co oznacza, że może on "widzieć" karty PnP i może je skonfigurować. Jeżeli myślisz, że możesz używać wszystkich możliwości Twojego SB AWE PnP, jesteś w błędzie. Nawet jeżeli bios twierdzi, że obsługuje karty PnP, tylko inicjalizuje zbiór portów i adresów używanych przez Twoją kartę. Pewnie będziesz mógł odgrywać dźwięki RAW WAVE, ale nie będziesz mógł odgrywać np. muzyki MIDI. Z tego powodu bios PnP nie jest wyjściem. ˇ Masz system operacyjny obsługujący karty PnP. Obecne stabilne jądro Linuxa (2.0.x) nie jest takim systemem, więc będziemy musieli poczekać na przyszłe wersje jądra, obsługujące urządzenia PnP. ˇ Masz specjalny program, uruchamiany w czasie ładowania systemu, który inicjalizuje Twoje karty PnP. Tego sposobu użyjemy. Najczęściej używanym oprogramowaniem dla inicjalizacji kart PnP pod Linuxem jest ,,iissaappnnppttoooollss'' (zobacz sekcję Źródła i sekcję Zaczynamy). Opisują one właściwie jak skonfigurować wszystkie karty ISA PnP, nie tylko kartę dzwiękową. 22..44.. KKiillkkaa uuwwaagg oo łłaaddoowwaallnnyycchh mmoodduułłaacchh jjąąddrraa Niektóre sterowniki urządzeń mogą być budowane jako moduły zamiast wkompilowywania ich w jądro. Możesz znaleźć więcej informacji o modułach w ,,Kernel-HOWTO'' i ,,Module HOWTO'' (zobacz sekcję Dodatkowe informacje). Jeżeli posiadasz kartę PnP, mmuussiisszz zainstalować obsługę dźwięku jako ładowalny moduł jądra. Znaczy to, że nie możesz wbudować sterownika dźwięku w jądro, będziesz musiał zbudować go jako moduł, który może być władowany w jądro w czasie rzeczywistym. Jest to potrzebne dlatego, że jądro będzie zainstalowane przed skonfigurowaniem karty ISA PnP, a sterownik dźwięku musi być załadowany po skonfigurowaniu karty ISA PnP. Moduł dźwięku jądra może być załadowany ręcznie - iinnssmmoodd ssoouunndd albo mmooddpprroobbee --aa ssoouunndd albo w poprawnej linii skryptu ładującego twojego Linuxa (w Debianie jest wymagane aby dodać linię zawierającą ssoouunndd do //eettcc//mmoodduulleess). Inne podejście, to odpalenie kkeerrnneelldd, demona instalującego i deinstalującego moduły. Zauważ, że kerneld może nie być najlepszym rozwiązaniem dla sterownika AWE, ponieważ zabiera to dużo czasu, aby załadować moduł do jądra, szczególnie jeżeli chcesz używać syntezy Wave Table i ładować duże banki Sound Font, co musisz zrobić za każdym razem po załadowaniu modułu. Ponieważ kerneld usuwa nieużywane moduły po jednej minucie (standardowo), lepiej jest ładować moduł dźwięku ręcznie lub w czasie ładowania systemu. Zauważ, że samodzielne ładowanie modułu zapobiega usuwaniu go przez kerneld. Przy okazji: Możesz ręcznie ładować moduł i używać kerneld w tym samym czasie. Te dwie metody nie kolidują ze sobą, ale kerneld nie zajmuje się już modułem dźwięku. Jest to użyteczne, gdy Twoje ustawienia miksera zostają skasowane po usunięciu i ponownym załadowaniu modułu. Rozwiązanie tego problemu zostanie podane w sekcji Mikser (jest tam opis jak można uruchomić mikser automatycznie kiedy moduł dźwięku zostaje załadowany). Jednakże zajmuje to trochę czasu dla kerneld do zainstalowania modułu, załadowania banku dźwięków i uruchomienia miksera. Z tego powodu lepiej jest instalować moduł dźwięku w czasie ładowania systemu i nie pozwalać kerneld go deinstalować. 22..55.. KKiillkkaa uuwwaagg oo sstteerroowwnniikkuu ddźźwwiięękkuu ww jjąąddrrzzee Możesz zainstalować obsługę dźwieku bezpośrednio w jądrze lub jako ładowalny moduł. Jeżeli masz kartę PnP, musisz zainstalować obsługę dźwięku jako moduł, ponieważ karta PnP musi być zainicjalizowana przez isapnptools zanim moduł zostanie zainstalowany. Jak możesz sobie wyobrazić, będziesz musiał zrekompilować jądro. Podam ci poniżej kilka podpowiedzi. Na razie pomówmy o obsłudze dźwięku w źródłach jądra. Jądro jest dystrybuowane z darmową (Lite) wersją OSS (USS) - sterownika dźwięku. Obecna wersja tego sterownika (3.5.4) nie obsługuje SB AWE w całości, a tylko jego część podobną do SB 16. Tak więc możesz odgrywać dźwięki RAW i używać syntezy OPL-2/OPL-3, ale nie będziesz mógł odgrywać muzyki MIDI z syntezą Wave Table. Jeżeli chcesz używać syntezy Wave Table możesz kupić komercyjny sterownik firmy 4Front Technologies (proszę, niech mnie ktoś poinformuje, jeżeli to wystarczy) albo używać [darmowej] łaty na jądro "AWE 32 Sound Driver Extension" autorstwa Takashiego Iwai. Ten pierwszy nie jest opisany przez ten dokument, przyjmuję, że chcesz używać tego ostatniego. Sterownik ten (zobacz sekcję Źródła ) jest publikowany na licencji GNU i jest dystrybuowany z kilkoma programami użytkowymi do syntezy EMU 8000 kart SB AWE. AAwweeddrrvv jest już dołączony do testowych wersji jądra (2.1.x), ale prawdopodobnie chcesz rozszerzać stabline wersje. 33.. JJaakk zzaaiinnssttaalloowwaaćć ddźźwwiięękk zz SSBB AAWWEE 33..11.. RRzzeecczzyy,, kkttóórree bbęęddąą CCii ppoottrrzzeebbnnee Oto wymagania obsługi SB AWE pod Linuxem: ˇ Funkcjonalny system Linuxowy (np. Debian GNU Linux) ˇ Karta SB AWE 32 albo kompatybilna (np. SB32, SB32 PnP, SB AWE64, ...) ˇ Źródła jądra Linuxa ze sterownikiem dźwięku OSS/Free (normalnie dołączany, sprawdź w //uussrr//ssrrcc//LLiinnuuxx//ddrriivveerrss//ssoouunndd//RReeaaddmmee ˇ Sterownik "AWE 32 Sound Driver Extensions" Jeżeli masz kartę PnP, będziesz także potrzebował: ˇ Pakiet oprogramowania iissaappnnppttoooollss Zobacz sekcję Źródła dla informacji skąd można zdobyć te programy. 33..22.. ZZaacczzyynnaammyy Przyjmijmy, że masz poprawnie zainstalowaną kartę i prawdopodobnie już ją testowałeś pod DOS'em lub Windows. Następnym krokiem będzie inicjalizacja karty w czasie ładowania systemu wtedy, i tylko wtedy, gdy jest to karta PnP. Postępuj zgodnie z dokumentacją pakietu źródłowego żeby skompilować i zainstalować isapnptools (albo po prostu użyj binarnego pakietu) i wykonaj polecenie: ______________________________________________________________________ # pnpdump > /etc/isapnp.conf ______________________________________________________________________ jako root. To wygeneruje, mam nadzieję, że odpowiedni, plik konfigura­ cyjny dla Twoich kart PnP, ale ze wszystkimi urządzeniami odkomentowanymi. Edytuj plik ostrożnie i porównuj wartości kanałów DMA, adresów IO i przerwań z konfiguracją pod DOS'em lub Windows, jeśli to możliwe. (pod Win95 zobacz zasoby wykorzystywane przez kartę w opcji zzaassoobbyy w mmeenneeddżżeerrzzee uurrzząąddzzeeńń). Jeżeli masz problemy, przeczy­ taj dokumentację dostarczaną z isapnptools. UUWWAAGGAA:: isapnptools często nie wykrywa wszystkich trzech portów I/O syntezy AWE Wave Table. Sprawdź dokładnie pozycję WWaavveeTTaabbllee w pliku iissaappnnpp..ccoonnff z przykładem podanym na końcu tego HOWTO. Ustaw adres I/O jeżeli to potrzebne. UUWWAAGGAA:: Zgodnie z iissaappnnpp--ffaaqq, isapnp czasami nie zaprogramowywuje numeru urządzenia logicznego. Jeżeli napotkasz np. taką wiadomość o błędzie: EErrrroorr ooccccuurreedd eexxeeccuuttiinngg rreeqquueesstt ''LLDD 22'' oonn oorr aarroouunndd lliinnee...... spróbuj dodać linię ((VVEERRIIFFYYLLDD NN)) na początku pliku iissaappnnpp..ccoonnff. Musisz używać wersji co najmniej 1.10, żeby ta medoda zadziałała. Jeżeli nie możesz używać wersji 1.10 lub nowszej możesz także wprowadzić numery urządzeń logicznych bezpośrednio. Zobacz iissaappnnpp--ffaaqq, żeby usyskać więcej informacji o tej metodzie. Jeżeli to nie będzie działać skontaktuj się ze mną (i ludzi tworzących isapnp, oni też powinni być zainteresowani). UUWWAAGGAA:: Upewnij się, że ostatnią linią jest ((WWAAIITTFFOORRKKEEYY)), to czasami bywa ominięte przez starsze wersje ppnnppdduummpp. Przykładowy iissaappnnpp..ccoonnff możesz znaleźć na końcu tego dokumentu (zobacz sekcję Przykładowy isapnp.conf. Jeżeli używasz Debiana nie są potrzebne żadne dalsze ustawienia, iissaappnnpp zostanie uruchomiony w czasie ładowania w pliku //eettcc//iinniitt..dd//bboooott po dodaniu tego kawałka kodu: ______________________________________________________________________ # Skonfiguruj karty isa plug and play przed ładowaniem # modułów. Musisz to zrobić przed ładowaniem modułów, żeby mieć # szansę skonfigurowania i zainicjalizowania kart PnP zanim # sterowniki narobią bałaganu. # if [ -x /etc/init.d/isapnp ] then /etc/init.d/isapnp start fi ______________________________________________________________________ gdzie //eettcc//iinniitt..dd//iissaappnnpp musi zawierać linie: ______________________________________________________________________ #! /bin/sh # /etc/init.d/isapnp: skonfiguruj karty Plug ang Play test -x /sbin/isapnp || exit 0 /sbin/isapnp /etc/isapnp.conf exit 0 ______________________________________________________________________ Jeżeli masz inną dystrybucję Linuxa, jesteś zdany na siebie. Nie wiem co robić (czy ktoś podałby mi te informacje?). Upewnij się tylko, że isapnp będzie uruchomiona zzaanniimm moduły będą załadowane (zobacz poniżej). 33..33.. KKoommppiillaaccjjaa jjąąddrraa Przed rekompilacją jądra musisz "załatać" je Sterownikiem AWE. Nawet jeżeli źródła twojego jądra już zawierają aawweeddrrvv (sprawdź //ddrriivveerrss//ssoouunndd//lloowwlleevveell//), możesz chcieć rozszerzyć istniejący sterownik. Postępuj zgodnie z instrukcjami w katalogu ze źródłami awedrv. Musisz odpalić skrypt który zainstaluje łatę w jądrze. Sprawdź, czy na pewno rozszerzyłeś źródła. Skrypt tylko sprawdza, czy dany plik instnieje - jeżeli tak, nie instaluje łaty. Powinieneś skasować plik ddrriivveerrss//ssoouunndd//lloowwlleevveell//aawwee__wwaavv..cc przed uruchomieniem skryptu po rozszerzeniu źródeł jądra. Następnie musisz skonfigurować jądro, włączając obsługę dźwięku. Mam nadzieję, że wiesz trochę o kompilowaniu jądra; zobacz Sound HOWTO i Kernel HOWTO, żeby uzyskać więcej informacji. Przejdź do katalogu z źródłami jądra (np. //uussrr//ssrrcc//lliinnuuxx) i wykonaj polecenie ______________________________________________________________________ # make config ______________________________________________________________________ lub ______________________________________________________________________ make menuconfig ______________________________________________________________________ ______________________________________________________________________ make xconfig ______________________________________________________________________ W pewnym momencie zostaniesz zapytany o obsługę karty dźwiękowej. Możesz odpowiedzieć zarówno YY albo MM jeżeli nniiee mmaasszz karty PnP. MMuussiisszz odpowiedzieć MM (moduł), jeżeli posiadasz kartę PnP. Musisz skompilować obsługę karty dźwiękowj jako moduł (jeżeli masz kartę PnP), ponieważ taka karta musi być zainicjalizowana przed załadowaniem modułu. Na następujące pytania powinieneś odpowiedzieć YY, na wszystkie inne NN: ______________________________________________________________________ Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?] Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?] /dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?] MIDI interface support (CONFIG_MIDI) [Y/n/?] FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?] lowlevel sound driver support [Y/n/?] AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?] ______________________________________________________________________ Tylko ostatnia opcja ma wpływ na syntezę Wave Table. Inne wykorzystują opcje SB16 sterownika OSS/Free. Dodatkowo, musisz skonfigurować port I/O karty dźwiękowej. Spójrz na plik iissaappnnpp..ccoonnff dla wskazówek, jeżeli masz takowy. U mnie wystarczają stantardowe wartości. Zauważ, że standardowe wartości ze skryptu konfiguracyjnego jądra mogą być nieprawidłowe (zwłaszcza wartości SSBBCC__IIRRQQ i SSBB__MMPPUU__BBAASSEE są złe dla większości kart). ______________________________________________________________________ I/O base for SB Check from manual of the card (SBC_BASE) [220] Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5] Sound Blaster DMA 0, 1 or 3 (SBC_DMA) [1] Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7 (use 1 for 8 bit cards) (SB_DMA2) [5] MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card (SB_MPU_BASE) [330] SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1] ______________________________________________________________________ Teraz zrekompiluj jądro. Użytkownicy Debiana powinni użyć kkeerrnneell-- ppaacckkaaggee. To robi kompilację jądra czynnością tak prostą jak zainstalowanie paczki Debiana. Zobacz dokumentację w katalogu //uussrr//ddoocc//kkeerrnneell--ppaacckkaaggee//. Oto podpowiedź: ______________________________________________________________________ # make-kpkg clean # make-kpkg -revision custom.1.0 kernel_image ______________________________________________________________________ i wtedy ______________________________________________________________________ dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.deb ______________________________________________________________________ Jeżeli masz inną dystrybucję Linuxa, postępuj zgodnie ze standardowym sposobem kompilacji nowego jądra. Nie zapomnij o wydaniu poleceń mmaakkee mmoodduulleess i mmaakkee mmoodduulleess__iinnssttaallll. Zobacz Sound HOWTO i (może) Kernel HOWTO, żeby uzyskać więcej informacji. 33..44.. PPrrzzeełłaaddoowwaanniiee ssyysstteemmuu Po zainstalowaniu nowego jądra powinieneś przeładować system (pamiętaj, żeby mieć funkcjonującą dyskietkę startową). Zaciśnij kciuki. Jeżeli masz kartę PnP, pamiętaj, żeby odpalić isapnp bądź to w skrypcie ładującym (tak jak było to opisane wcześniej), bądź to ręcznie: ______________________________________________________________________ # /sbin/isapnp /etc/isapnp.conf Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e: CTL0048 Serial No 58128 [checksum 74] ______________________________________________________________________ Teraz możesz zainstalować sterownik dźwięku, jeżeli skompilowałeś go jako moduł: ______________________________________________________________________ # modprobe -a sound AWE32 Sound Driver v0.3.3e (DRAM 2048k) ______________________________________________________________________ Jeżeli sądzisz, że wykrycie pamięci nie było poprawne (znam przypadek człowieka mającego AWE 64 z 4096k, a ,,wykryta'' ilość wynosiła 28672k), spróbuj rozszerżyć awedrv albo podaj ilość pamięci w pliku //uussrr//ssrrcc//lliinnuuxx//ddrriivveerrss//ssoouunndd//lloowwlleevveell//aawwee__ccoonnffiigg..hh, np. ______________________________________________________________________ # define AWE_DEFAULT_MEM_SIZE 4096 /* kilobajtów */ ______________________________________________________________________ Przykro mi, ale musisz wtedy zrekompilować jądro (może kompilacja modułów będzie wystarczająca, ale nie wiem na pewno). Jeżeli działa, możesz chcieć, żeby moduł dźwięku był ładowany automatycznie. Możesz użyć kerneld (dlaczego to nie jest najlepszy pomysł zobacz w sekcji 1.4) lub dodaj linię zawierającą ssoouunndd do //eettcc//mmoodduulleess (w Debianie) lub dodaj linię //ssbbiinn//mmooddpprroobbee --aa ssoouunndd do skryptu ładującego. 44.. TTeessttoowwaanniiee sstteerroowwnniikkaa ddźźwwiięękkuu 44..11.. //pprroocc//ddeevviicceess,, //ddeevv//ssnnddssttaatt Jeżeli masz obsługę dźwięku wbudowaną w jądro, dostaniesz trochę pożytecznych informacji w czasie ładowania systemu. Jeżeli obsługę dźwięku masz zainstalowaną jako ładowalny moduł, możesz otrzymać te same informacje (prawdopodobnie po deinstalacji modułu dźwięku najpierw (mmooddpprroobbee --rr ssoouunndd)) wydając polecenie ______________________________________________________________________ # modprobe -a sound trace_init=1 Sound initialization started <Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5 <Sound Blaster 16> at 0x330 irq 5 dma 0 <Yamaha OPL3 FM> at 0x388 Sound initialization complete AWE32 Sound Driver v0.3.3e (DRAM 2048k) ______________________________________________________________________ Jeżeli masz wirtualny system plików //pprroocc, możesz poszukać urządzenia dźwięku komendą ______________________________________________________________________ # cat /proc/devices Character devices: [...] 14 sound [...] ______________________________________________________________________ Następnie upewnij się, że masz zainstalowane odpowiednie urządzenia w katalogu //ddeevv//. Zobacz Sound HOWTO, żeby uzyskać więcej informacji. Teraz zapytaj //ddeevv//ssnnddssttaatt o status modułu dźwięku: ______________________________________________________________________ # cat /dev/sndstat Sound Driver:3.5.4-960630 (Sat Oct 11 19:35:14 CEST 1997 root, Linux flora 2.0.29 #1 Sat Oct 11 19:12:56 CEST 1997 i586 unknown) Kernel: Linux flora 2.0.29 #1 Sat Oct 11 19:36:23 CEST 1997 i586 Config options: 0 Installed drivers: Type 1: OPL-2/OPL-3 FM Type 2: Sound Blaster Type 7: SB MPU-401 Card config: Sound Blaster at 0x220 irq 5 drq 1,5 SB MPU-401 at 0x330 irq 5 drq 0 OPL-2/OPL-3 FM at 0x388 drq 0 Audio devices: 0: Sound Blaster 16 (4.13) Synth devices: 0: Yamaha OPL-3 1: AWE32 Driver v0.3.3e (DRAM 2048k) Midi devices: 0: Sound Blaster 16 Timers: 0: System clock Mixers: 0: Sound Blaster 1: AWE32 Equalizer ______________________________________________________________________ Jeżeli nie widzisz takich informacji, to prawdopodobnie jest błąd w konfiguracji. Zobacz co nie działa, a wtedy wróć do kroku Zaczynamy, sprawdzając wszystko. 44..22.. WWyyjjśścciiee -- UUrrzząąddzzeenniiee ddźźwwiięękkuu ttyyppuu ""RRAAWW"" Spróbuj zdobyć plik ..aauu (Sun Workstation) albo plik RAW i wykonaj komendę ______________________________________________________________________ # cat bell.au > /dev/audio ______________________________________________________________________ lub ______________________________________________________________________ # cat sample > /dev/dsp ______________________________________________________________________ Powinieneś usłyszeć zawartość pliku przez AAuuddiioo DDeevviiccee 00:: SSoouunndd BBllaasstteerr 1166 ((44..33)) 44..33.. WWyyjjśścciiee -- SSyynntteezzaa OOPPLL--22//OOPPLL--33 Jeżeli chcesz używać syntezy FM OPL-2/OPL-3 do odgrywania plików MIDI, wypróbuj program ppllaayymmiiddii (zobacz Dodatek B). Uruchom go komendą ______________________________________________________________________ # playmidi -f dance.mid ______________________________________________________________________ lub ______________________________________________________________________ # playmidi -4 dance.mid ______________________________________________________________________ Pierwsza komenda uruchomi OPL-2, druga OPL-3. Jeżeli dźwięk cię denerwuje nie wiń playmidi: To synteza FM brzmi tak źle. Wyobraź sobie, że miałbyś tylko sterownik OSS/Free: To byłaby jakość dźwięku jaką mógłbyś uzyskać (nie biorąc pod uwagę syntezy programowej). Na szczęście masz SB AWE i możesz używać możliwości Wave Table ze Sterownikiem AWE. 44..44.. WWyyjjśścciiee -- SSyynntteezzaa WWaavvee TTaabbllee Sterownik AWE jest dystrybuowany ze specjalnymi narzędziami (aawweessffxx), żeby wykorzystać syntezę EMU 8000. Najpierw musisz załadować bank Sound Font do karty - nawet jeżeli chcesz używać sampli ROM! Możesz wziąć te pliki z instalacji Windows - szukaj plików z rozszerzeniem **..ssffbb lub **..ssff22 Sample ROM są w pliku SSYYNNTTHHGGMM..SSBBKK, prawdziwe sample są w plikach SSYYNNTTHHGGSS..SSBBKK i SSYYNNTTHHMMTT..SSBBKK, oraz w SSAAMMPPLLEE..SSBBKK. Możesz wziąć inne banki Sound Font przez ftp albo www, spróbuj na stronie EMU, stronie Creative Labs, albo na stronie z samplami Chaos, które są naprawdę dobre (pamiętaj, żeby przejrzeć stronę Sterownika AWE). Spróbuj załadować standardowy zestaw GM (ROM) używając komendy ______________________________________________________________________ # sfxload -i synthgm.sbk ______________________________________________________________________ i wtedy odtwórz plik midi dostarczany z SB AWE: ______________________________________________________________________ # drvmidi dance.mid ______________________________________________________________________ 44..55.. MMiikksseerr Uruchom swój ulubiony program miksera i uruchom go. Odegraj plik RAW i dwa pliki MIDI jednocześnie, wypróbowując ustawienia miksera. Pobaw się trochę, to powinno być bardzo łatwe. Oto lista urządzeń, oraz wyjaśnienie: ˇ YYaammaahhaa OOPPLL--33 Synth albo FM ˇ AAWWEE3322 DDrriivveerr Synth albo FM ˇ SSoouunndd BBllaasstteerr 1166 ((44..1133)) PCM albo DSP ˇ PPCC SSppeeaakkeerr ((nnaaddaall żżyywwyy)) Spkr Inne ustawienia miksera odnoszą się do CD-ROMu, możliwie podłączonego do karty dźwiękowej, do głównej głośności, basów, tonów wysokich i poziomu nagrywania na różnych liniach wejściowych. Możesz określić, które linie powinny być nagrywane. 44..66.. WWeejjśścciiee -- SSaammpplloowwaanniiee zz uurrzząąddzzeenniieemm ddźźwwiięękkuu ttyyppuu ""RRAAWW"" Możesz nagrywać z różnych źródeł: z podłączonego CD ROMu, z mikrofonu podłączonego do wejścia MMIICC i z każdego źródła, które można podłączyć do wejścia LLIINNEE IINN. Ustaw mikser w poprawnej pozycji. Odegraj dźwięk i nagrywaj do pliku, czytając z urządzenia dźwięku RAW, np. ______________________________________________________________________ # cdplay # dd bs=8k count=5 </dev/dsp >music.au 5+0 records in 5+0 records out # cat music.au >/dev/dsp ______________________________________________________________________ nagrywa i odtwarza pięć sekund dźwięku z urządzenia wejściowego. 44..77.. PPoorrtt MMIIDDII Przykro mi, nie ma jeszcze informacji o porcie MIDI! 55.. OOpprrooggrraammoowwaanniiee SStteerroowwnniikkaa AAWWEE 55..11.. ssffxxllooaadd Możesz ładować próbki do DRAM'u na karcie dźwiękowej programem ssffxxllooaadd. Zauważ, że możesz ładować tylko jeden plik z próbkami na bank, z bankiem 0 jako standardowym. A więc po komendzie ssffxxllooaadd ssyynntthhggss..ssbbkk jedyne sample w twojej karcie są samplami GS. Jeżeli chcesz załadować dodatkowe banki Sound Font musisz użyć opcji --bb, np. ______________________________________________________________________ # sfxload synthgs.sbk # sfxload -b1 sample.sbk # drvmidi sfx.mid ______________________________________________________________________ Możesz załadować standardowy bank Sound Font automatycznie, razem z instalacją modułu. Dodaj taką linię: ______________________________________________________________________ post-install sound /usr/bin/sfxload synthgm.sbk ______________________________________________________________________ do pliku //eettcc//ccoonnff..mmoodduulleess. Zobacz dokumentację, żeby uzyskać więcej detali o sfxload. 55..22.. ddrrvvmmiiddii Z programem ddrrvvmmiiddii możesz używać Sterownika AWE do odgrywania plików MIDI. Po prostu podaj nazwę pliku midi po komendzie: ______________________________________________________________________ # drvmidi waltz.mid ______________________________________________________________________ Zobacz dokumentację, żeby uzyskać więcej szczegółów o ddrrvvmmiiddii. 66.. DDooddaatteekk 66..11.. DDooddaattkkoowwee iinnffoorrmmaaccjjee ˇ LLiinnuuxx SSoouunndd HHOOWWTTOO Dobrze rozejrzyj się w Sound HOWTO (dostępne z sunsite.unc.edu i innych serwerów). Zawiera garść danych o kompilacji jądra z obsługą dźwięku i wyjaśnia mnóstwo o urządzeniach dźwiękowych, aplikacjach itp. ˇ LLiinnuuxx SSoouunndd PPllaayyiinngg HHOOWWTTOO Powinieneś popatrzeć też na Sound Playing HOWTO. Mówi o różnych formatach dźwięku i aplikacjach do ich odgrywania. ˇ AAWWEE DDrriivveerr FFAAQQ Źródło: http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awedrv- faq.html Jeżeli masz problemy z instalacją Sterownika AWE lub z używaniem syntezy Wave Table w twojej karcie Sound Blaster, spójrz tutaj. ˇ IISSAA PPnnPP FFAAQQ Źródło: http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.html Jeżeli masz problemy ze skonfigurowaniem karty ISA PnP, to jest twoja encyklopedia. 66..22.. ŹŹrróóddłłaa ˇ iissaappnnppttoooollss Źródło: http://www.roestock.demon.co.uk/isapnptools/index.html Jeżeli wysyłasz łaty, wiadomości o błędach albo komentarze, wstaw ,,isapnp'' gdzieś w linii tematu, i wyślij list do isapnp@roestock.demon.co.uk. ˇ aawweeddrrvv Źródło: http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/ ˇ JJąąddrroo LLiinnuuxxaa Źródło: wszędzie, gdzie możesz znaleźć Linuxa ::)) ˇ OOSSSS//FFrreeee Źródło: z źródłami jądra Linuxa Informacje: http://www.4front-tech.com/usslite albo kopia europejska.} 66..33.. PPrrzzyykkłłaaddoowwyy iissaappnnpp..ccoonnff W pliku konfiguracyjnym ISA PnP wygenerowanym przez pnpdump numery urządzeń twoich kart PnP pojawiają się jako sekcje. W pliku poniżej była wykryta jedna karta (dźwiękowa), z czterema urządzeniami logicznymi: ˇ LLDD 00: Urządzenie Dźwiękowe ˇ LLDD 11: Urządzenie IDE ˇ LLDD 22: Urządzenie WaveTable ˇ LLDD 33: Urządzenie Portu Gier Zostawiłem LLDD 11 nieskonfigurowane, ponieważ nie mam CD ROMu podłączonego do portu IDE w mojej karcie dźwiękowej. Jeżeli nie masz portów IDE w twoim SB, LLDD 11 będzie urządeniem portu gier, a LLDD 33 się nie pojawi. Zobacz sekcję Zaczynamy, żeby uzyskać dokładne (ważne!) informacje o tym pliku. ______________________________________________________________________ # $Id: pnpdump.c,v 1.9 1997/06/10 21:37:32 fox Exp $ # This is free software, see the sources for details. # This software has NO WARRANTY, use at your OWN RISK # # For details of this file format, see isapnp.conf(5) # # For latest information on isapnp and pnpdump see: # http://www.roestock.demon.co.uk/isapnptools/ # # Compiler flags: -DREALTIME -DNEEDSETSCHEDULER (READPORT 0x0203) (ISOLATE) (IDENTIFY *) # Try the following if you get error messages like # Error occurred executing request 'LD 2' on or around line... #(VERIFYLD N) # ANSI string -->Creative SB32 PnP<-- (CONFIGURE CTL0048/58128 (LD 0 # ANSI string -->Audio<-- (INT 0 (IRQ 5 (MODE +E))) (DMA 0 (CHANNEL 1)) (DMA 1 (CHANNEL 5)) (IO 0 (BASE 0x0220)) (IO 1 (BASE 0x0330)) (IO 2 (BASE 0x0388)) (ACT Y) )) (CONFIGURE CTL0048/58128 (LD 1 # ANSI string -->IDE<-- # (INT 0 (IRQ 10 (MODE +E))) # (IO 0 (BASE 0x0168)) # (IO 1 (BASE 0x036e)) # (ACT Y) )) (CONFIGURE CTL0048/58128 (LD 2 # ANSI string -->WaveTable<-- (IO 0 (BASE 0x0620)) (IO 1 (BASE 0x0A20)) (IO 2 (BASE 0x0E20)) (ACT Y) )) (CONFIGURE CTL0048/58128 (LD 3 # ANSI string -->Game<-- (IO 0 (BASE 0x0200)) (ACT Y) )) # Returns all cards to the "Wait for Key" state (WAITFORKEY) ______________________________________________________________________ 77.. OOdd ttłłuummaacczzaa Oto pierwsza wersja polskiego AWE HOWTO. Jeżeli zauważysz jakiś błąd, daj mi znać. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Tiny-News.pl.txt��������������������������������������������������0100664�0001750�0001750�00000026215�07457640740�020360� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Newsy-Minimum Kenneth M. Lewis, Jr., <kent@fiona.umsmed.edu> v?, 25 maja 1995 WWeerrssjjaa ppoollsskkaa:: TToommaasszz ''ttssccaa'' SSiieenniicckkii,, <<ttssccaa@@eeddbb..ddkk>> v1.02, 13 grudnia 2001 Dokument opisuje użycie serwera INN do obsługi niewielkiej ilości grup dyskusyjnych off-line. ______________________________________________________________________ Spis treści 1. O dokumencie 1.1 Aktualny status dokumentu 1.2 Prawa autorskie 2. Wstęp 3. Opis sytemu ,,Newsy-Minimum'' 3.1 Wymagania 3.2 Instalacja i rozruch 3.3 Sposób użycia 4. Podziękowania... 5. Od tłumacza 5.1 Inne źródła informacji 5.2 O tłumaczeniu ______________________________________________________________________ 11.. OO ddookkuummeenncciiee 11..11.. AAkkttuuaallnnyy ssttaattuuss ddookkuummeennttuu _(_S_t_a_n _n_a _d_z_i_e_ń _1_4_._1_0_._1_9_9_7_) Dokument _N_e_w_s_y_-_M_i_n_i_m_u_m nie jest już aktualizowany przez autora. Jeśli chciałbyś podjąć się opieki nad tym dokumentem, skontaktuj się z <tjbynum@metalab.unc.edu>. 11..22.. PPrraawwaa aauuttoorrsskkiiee Copyright (c) May 25, 1995 Kent Lewis (Kenneth M. Lewis, Jr.) Jeśli dokument ten zostanie zaakceptowany przez Linux Documentation Project, wolno będzie rozpowszechniać go zgodnie z zasadami opisanymi w LDP HOWTO z zastrzeżeniem, że autor chciałby przejrzeć ostateczną formę niniejszego dokumentu przed włączeniem go do ww. zasobów. 22.. WWssttęępp Używam Linuksa, a z siecią łączę się za pomocą modemu. Do niedawna musiałem utrzymywać stałe połączenie z siecią aby móc czytać grupy dyskusyjne. Nie mogę jednak zbyt długo pozostawać on-line -- korzystam z usług odległego dostawcy łącza, za czas on-line płacę więc stawki międzymiastowe; oznacza to wysokie rachunki telefoniczne. Dlatego zacząłem się zastanawiać nad zminimalizowaniem kosztów dostępu do sieci bez utraty korzyści z tego dostępu płynących. Sposób taki znalazłem; mam nadzieję, że przyda się on również innym. Dokument niniejszy opisuje jak używać INNa z niewielkim tylko zestawem grup. Za pomocą prostego skryptu perlowego artykuły są jednocześnie ściągane i wysyłane podczas krótko trwającego połączenia z siecią. Całość jest w wersji ,,alfa'' -- jeśli pojawią się nie opisane tu problemy, będziesz musiał sam sobie z nimi poradzić. 33.. OOppiiss ssyytteemmuu ,,,,NNeewwssyy--MMiinniimmuumm'''' 33..11.. WWyymmaaggaanniiaa Musisz mieć dostęp do serwera news (NNTP). Żeby sprawdzić, czy możesz z danego serwera czytać grupy i na nie pisać, sprawdź programem telnet port 119 tego serwera -- pojawi się informacja na temat Twoich uprawnień. Jeśli już używasz danego serwera, to wiesz, że dostęp masz -- w takim wypadku nie ma co sprawdzać. :-) Natomiast jeśli dostępu nie masz, postaraj się o niego przed przeczytaniem reszty niniejszego dokumentu. Musisz mieć wystarczającą ilość miejsca na twardym dysku na składowanie artykułów. Moja linuksowa partycja ma 300 MB, a dwudniowy urobek około piętnastu grup zajmuje wg. df zaledwie od 1 do 2% pojemności dysku. Na wszelki jednak wypadek najlepiej zacząć od niewielkiej ilości grup i sukcesywnie dodawać kolejne. Potrzebujesz Perla i INNa. Jeśli ich nie masz, ściągnij je z <ftp://sunsite.unc.edu> (lub któregoś z mirrorów). Perla prawdopodobnie znajdziesz w katalogu /pub/Linux/devel/perl, a INNa w /pub/Linux/system/Mail/news. Jeśli jeszcze tego nie zrobiłeś, zainstaluj te dwa programy. Ja swojego INNa wziąłem z dystrybucji Slackware 2.2. Dołączona dokumentacja była bardzo dobra, po zapoznaniu się z nią nie powinieneś mieć problemu z instalacją. Perl, już skompilowany, również dołączony jest do Slackware 2.2 -- postaraj się zdobyć wersję skompilowaną, dokument niniejszy nie zawiera pomocy w instalacji i konfiguracji Perla. 33..22.. IInnssttaallaaccjjaa ii rroozzrruucchh Nie zapomnij o założeniu grup ,,junk'' i ,,control'' -- bez nich program innd nie ruszy. Będziesz musiał założyć je ręcznie, ponieważ polecenie ctlinnd zakłada, że demon innd jest już uruchomiony. Po wystartowaniu tego demona utwórz poleceniem ctlinnd newgroup ... ... katalog do składowania newsów. Szczegółów szukaj w podręczniku systemowym (man ctlinnd). Teraz musisz zmodyfikować plik /etc/news/newsfeeds -- dzięki temu INN utworzy plik w katalogu /usr/spool/news/out.going/; plik ten wykorzystywany będzie przez zamieszczony poniżej skrypt perlowy do publikowania napisanych off-line artykułów. Informacje na temat zawartości /etc/news/newsfeeds znajdziesz w dokumentacji INNa; przeczytaj też odpowiednią stronę podręcznika systemowego (man newsfeeds). WWAAŻŻNNEE:: wpisy w /etc/news/newsfeeds powinny być umieszczone w takiej kolejności, aby pierwszym polem w pliku /usr/spool/news/out.going/$NEWSFEED były pełne ścieżki do artykułów, które chcesz wysłać. Jeśli pierwsze pole będzie zawierało co innego, skrypt będzie próbował wysłać na newsy owo ,,co innego'' zamiast Twoich artykułów, co z pewnością wywoła niepożądane efekty. Nie zapomnij o zablokowaniu w pliku control.ctl możliwości automatycznego zakładania nowych grup. Jeśli tego nie zrobisz, to w miarę napływania z nadrzędnego serwera wiadomości kontrolnych liczba ściąganych grup będzie się powiększała, co spowoduje zwiększenie obciążenia i spowolnienie twojego systemu -- a w niniejszym HOWTO chodzi przecież o coś zupełnie przeciwnego. Wejdź do wybranego przez siebie katalogu i wykonaj w nim polecenie touch -t $WCZORAJ lastget Zamiast $WCZORAJ użyj ciągu oznaczającego dzień wczorajszy (w formacie opisanym w podręczniku systemowym (man touch)). Umieść poniższy skrypt w tym katalogu i nadaj mu prawa wykonywania. Zmień $NEWSPATH na katalog, w którym zainstalowałeś INNa (u mnie jest to /usr/lib/news). Zmień $SCRIPTPATH na ścieżkę do katalogu, w którym umieściłeś skrypt (u mnie /usr/lib/news). W tym samym katalogu znajdować się musi wspomniany wyżej plik lastget. Zmień $PROVIDER na adres serwera news, z którego będziesz korzystać. Zmień $NEWSFEED na nazwę feedu, której użyłeś w /etc/news/newsfeeds. Przeczytaj strony ,,inews'' i ,,nntpsend'' podręcznika systemowego, aby zorientować się w działaniu poniższego skryptu. ----------------------------------------------------------------------------- #!/usr/bin/perl ## ## pobierz nowe artykuly ## open(LIST, "$NEWSPATH/active") || die "nie moglem otworzyc listy grup do pobrania!"; while (<LIST>) { @newsgroup = split(' ', $_); ## dzieli kolejne linie pliku active wg spacji, ## umieszcza dane w tablicy @newsgroup ## @newsgroup[0] zawiera teraz nazwę grupy system "$NEWSPATH/bin/nntpget -f $SCRIPTPATH/lastget -n @newsgroup[0] -o -v $PROVIDER" || print "nie moglem sciagnac postow z grupy @newsgroup[0]\n"; } close(LIST); system "touch $SCRIPTPATH/lastget"; ## ## usun naglowek "NNTP-Posting-Host: " z postow do wyslania ## open(LIST, "/usr/spool/news/out.going/$NEWSFEED") || die "nie moglem otworzyc listy postow do przygotowania do wyslania"; while (<LIST>) { if (@article = split(' ', $_)) { $article = @article[0]; rename("$article", "$article" . '.bak'); $backup = "$article.bak"; open(OUTPUT, ">> $article"); open(INPUT, "$backup"); select(OUTPUT); while (<INPUT>) { print unless ?^NNTP-Posting-Host.*\n? } close(OUTPUT); close(INPUT); unlink("$backup"); reset; } } select(STDOUT); close(LIST); ## ## wyslij posty ## $ENV{'NNTPSERVER'} = "$PROVIDER"; open(LIST, '/usr/spool/news/out.going/$NEWSFEED') || die "nie moglem otworzyc listy postow do wyslania"; while (<LIST>) { if (@article = split(' ', $_)) { $article = @article[0]; system "inews -h $article"; } } close(LIST); ------------------------------------------------------------------------------ 33..33.. SSppoossóóbb uużżyycciiaa Powiedzmy, że nazwałeś powyższy skrypt ,,foonews''. Przy następnym połączeniu z siecią wykonaj polecenie $SCRIPTPATH/foonews. Jeśli przez ekran zaczną przewijać się identyfikatory wiadomości (Message- ID), to znaczy, że wszystko działa jak powinno. Być może będziesz musiał poczekać kilka sekund na pojawienie się pierwszych Message-ID. Po zakończeniu tej operacji powinieneś mieć na dysku wszystkie wiadomości wysłane na newsy od czasu ostatniej modyfikacji pliku $SCRIPTPATH/lastget, a wszystkie napisane przez Ciebie posty powinny być wysłane do serwera, z którym się łączyłeś; serwer rozpropaguje te wiadomości dalej. Po wszystkim plik $SCRIPTPATH/lastget będzie miał dzisiejszą datę ostatniej modyfikacji; jutro, kiedy ponownie uruchomisz ,,foonews'', skrypt ściągnie newsy wysłane na newsy między tą datą, a momentem uruchomienia skryptu. Będziesz musiał ręcznie usuwać zawartość pliku /usr/local/news/out.going/$NEWSFEED. Umyślnie nie dopisałem tej funkcji do skryptu, żeby móc sprawdzić, czy moje artykuły rzeczywiście zostały wysłane... i jakoś nie zabrałem się jeszcze do zautomatyzowania tego zadania. Po pierwszym uruchomieniu skryptu najpierw sprawdziłem, czy artykuły zostały wysłane, a dopiero potem usunąłem zawartość tego pliku; możesz zrobić tak samo. Jeśli poprawnie skonfigurowałeś INNa, to skrypt $NEWSPATH/bin/news.daily zajmie się poprawnym działaniem całej konstrukcji. W tej chwili wszystko robię ręcznie, jednak nic nie szkodzi na przeszkodzie, aby proces ten zautomatyzować. Kilka wpisów w cronie powinno załatwić sprawę. I ostatnia uwaga: wcale nie uważam, że mój skrypt jest elegancko napisany, ani że sposób jest idiotoodporny i niezawodny. Ale SOA#1 -- u mnie działa -- więc postanowiłem się nim podzielić. 44.. PPooddzziięękkoowwaanniiaa...... ...dla wszystkich, dzięki którym Linux jest taki fajny! _K_e_n_t _L_e_w_i_s kent@fiona.umsmed.edu 55.. OOdd ttłłuummaacczzaa 55..11.. IInnnnee źźrróóddłłaa iinnffoorrmmaaccjjii Polskie tłumaczenia pozostałych dokumentów HOWTO znajdują się pod adresem <http://www.jtz.org.pl/>. Z pewnością szczególnie zainteresuje Cię INN+SUCK mini HOWTO <http://www.amg.gda.pl/~michu/uploads/inn+suck-Mini-HOWTO.pl.txt>, które znacznie poszerza informacje zawarte w niniejszym dokumencie. Problem czytania newsów off-line rozwiązać możesz też za pomocą odpowiedniego czytnika, więcej na ten temat znajdziesz w FAQ grupy pl.news.czytniki <http://www.geocities.com/tsca.geo/czytniki/>. 55..22.. OO ttłłuummaacczzeenniiuu Dokument oryginalny dostępny jest wyłącznie w formacie txt (patrz <http://sunsite.unc.edu/LDP/>); znaczniki sgml i podział na rozdziały pochodzą ode mnie. Copyright for the translation: (c) 2001 by Tomasz `tsca' Sienicki, tsca@edb.dk �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Ultra-DMA.pl.txt��������������������������������������������������0100644�0001750�0001750�00000102510�07247552160�020173� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Ultra-DMA mini HOWTO Autor: Brion Vibber, brion@pobox.com v3.0, 9 Listopada 1999 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkiiBB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll.. v1.0, 2 Marca 2001 Celem tego dokumentu jest wyjaśnienie sposobu użytkowania dysków UltraDMA/UltraATA/Ultra33/Ultra66 w Linuksie. Najnowsza wersja ory­ ginału znajduje się pod adresem http://pobox.com/~brion/linux/Ultra- DMA.html. Dokument ten napisany został w standardzie ISO-8859-2. ______________________________________________________________________ Spis treści 1. Wprowadzenie. 1.1 Zastrzeżenie 1.2 Wyrazy uznania 1.3 Prawa autorskie 2. Co to jest Ultra-DMA i dlaczego tego chcę? 2.1 IDE, EIDE, ATAPI 2.2 Bus Master DMA 2.3 Ultra-DMA/Ultra-ATA/Ultra33/... 2.4 Właściwie to jak ,,ultra'' to jest? 2.5 Jak się ma UDMA do SCSI? 3. Używanie dysku UDMA z interfejsem EIDE. 4. Używanie dysku UDMA z interfejsem UDMA 5. Interfejsy UDMA PCI nie zintegrowane z płytą główną 5.1 Promise Ultra33 5.2 Promise Ultra66 5.3 Artop ATP850UF 5.4 Dodawanie plików urządzeń. 6. Interfejsy UDMA na płycie głównej 6.1 Intel FX, HX, VX, TX, LX i BX 6.2 VIA VP2 i podobne chipsety 6.3 TX Pro i inne płyty główne ,,Pro'' 6.4 HPT 366 7. Zunifikowana łata IDE 8. Włączanie i wyłączanie UDMA 8.1 Parametry jądra podczas startu 8.2 Używanie hdparm 9. Problemy 9.1 ,,Czarna Lista'' UDMA 9.2 Czy masz przetaktowane PCI? 9.3 Czy BIOS na płycie głównej jest aktualny? 9.4 Jeśli nadal nie działa 9.5 Jeśli masz informacje na temat UDMA, których nie ma tutaj... 10. Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Celem tego dokumentu jest wyjaśnienie sposobu użytkowania dysków UltraDMA/UltraATA/Ultra33/Ultra66 w Linuksie. W wielu przypadkach nie ma trudności w użytkowaniu tych urządzeń, a drobne ,,poprawki'' mogą wpłynąć pozytywnie na lepsze działanie. Z kolei w innych przypadkach wymagane są dodatkowe działania tylko po to, żeby dostać się do dysku. 11..11.. ZZaassttrrzzeeżżeenniiee Informacje zawarte w tym dokumencie są, wg. mojej wiedzy, poprawne. Jednak mogą pojawić się literówki, jakieś tajemnicze błędy podczas transmisji jak również dziwne niekompatybilności w systemie, które będą powodowały niepoprawne działanie opisanych tutaj sposbów. Tak więc... przed rozpoczęciem grzebania w konfiguracji dysku NNAALLEEŻŻYY ZZRROOBBIIĆĆ KKOOPPIIĘĘ ZZAAPPAASSOOWWĄĄ DDAANNYYCCHH,, KKTTÓÓRRYYCCHH NNIIEE CCHHCCEEMMYY SSTTRRAACCIIĆĆ. Jeśli jeszcze nie robisz tego regularnie, to dla własnego dobra - zacznij. 11..22.. WWyyrraazzyy uuzznnaanniiaa Michel Aubry <mailto:giovanni@sudfr.com> - łata do VIA do włączania UDMA dla jądra 2.0.33 i inne; zunifikowana łata UDMA dla 2.0.34+. Andrew Balsa <mailto:andrebalsa@altern.org> - dostarczył ogólnych informacji na temat UDMA oraz łatę UDMA do Intel TX, SiS i VP1 dla jądra 2.0.33 oraz zunifikowaną łatę dla 2.0.34+. Maxime Baudin - tłumaczenie francuskie Bokonon - ``Controller'' vs. ``interface'' John G. <mailto:prefect@ipass.net> - łata do VIA VP2 dla jądra 2.0.33 i różne informacje Martin Gaitan - obejście instalacji dla Ultra33 ide0/ide1 Andre M. Hedrick <mailto:andre@suse.com> - aktualny opiekun systemu IDE w Linuksie Hĺvard Tautra Knutsen - tłumaczenie norweskie Norman Jacobowitz - nakłonił mnie do dodania informacji o VP3 John Levon - informacja o TX Pro Peter Monta - informacja o używaniu dwóch sterowników Ultra33 Masayoshi Nakano - tłumaczenie japońskie Gadi Oxman <mailto:gadio@netvision.net.il> - łata do Ultra33 dla jądra 2.0.34 i znalazł tajemnicze numerki do zastosowania w obejściu Andy Pearce - zasugerował dodanie informacji o dodatkowych plikach urządzeń _h_d_e_, _h_d_h Andrei Pitis <mailto:pink@roedu.net> - łata dla LILO Brion Vibber <mailto:brion@pobox.com> - ten dokument 11..33.. PPrraawwaa aauuttoorrsskkiiee Dokument ten można kopiować i dystrybuować w celach informacyjnych bez ograniczeń. Nie wolno go modyfikować bez zgody autora z wyjątkiem zmiany wyglądu. Tumaczenie tego dokumentu jest dozwolone. Jednak zalecany jest kontakt z autorem, aby otrzymać najnowszą wersję. 22.. CCoo ttoo jjeesstt UUllttrraa--DDMMAA ii ddllaacczzeeggoo tteeggoo cchhccęę?? Oto krótki przegląd technologii opartych na IDE: 22..11.. IIDDEE,, EEIIDDEE,, AATTAAPPII Są to starsze technologie dyskowe. Większość interfejsów nie-SCSI i dyskowych, które można dzisiaj kupić, to EIDE chociaż wiele dużych dysków umie obsługiwać UDMA. [Od tłumacza: ponieważ dokument jest z XI.1999, więc warto dopowiedzieć, że w tej chwili II.2001 praktycznie wszystkie szanujące się firmy wypuszczają dyski z obsługą UDMA (najlepiej ATA100)]. 22..22.. BBuuss MMaasstteerr DDMMAA Bus master DMA to technologia zwiększająca prędkość transferu danych z/do dysku twardego, która wymaga obslugi przez płytę główną i BIOS i chociaż najmniejszej obsługi ze strony dysku. Więcej możesz się dowiedzieć pod adresem http://developer.intel.com/design/pcisets/busmastr/FAQs.htm. 22..33.. UUllttrraa--DDMMAA//UUllttrraa--AATTAA//UUllttrraa3333//...... Ultra-DMA ma wiele nazw - tutaj będziemy je nazywać UDMA. UDMA jest bardziej zaawwansowaną technologią, która umożliwia o wiele większe transfery (do 33,3 MB/s w UDMA 2 i 66,7 w UDMA 4) od dwóch do czterech razy szybciej niż EIDE i po znacznie niższej cenie niż SCSI. Wiele nowych komputerów dostarczanych jest z dużymi dyskami UDMA i interfejsami UDMA. Możliwe jest też dodanie interfejsów UDMA (jak np. Promise Ultra33/66) do komputera, aby zwiększyć transfery dysków bez obsługi UDMA. Dużo szczegółów na temat UDMA można się dowiedzieć ze strony http://www.quantum.com/src/whitepapers/ultraata/ Należy zauważyć, że długość taśmy łączącej urządzenie z kontrolerem UDMA musi być mniejsza od zwykłego DMA - najlepiej mniej niż 30 cm, maksymalnie 45 cm. Jeśli chcemy mieć 66 MB/s, to wymagana jest taśma 80-pinowa i na pewno nie dłuższa niż ww. Jeśli pojawia się dużo błędów CRC, to należy użyć krótszej taśmy. 22..44.. WWłłaaśścciiwwiiee ttoo jjaakk ,,,,uullttrraa'''' ttoo jjeesstt?? Zanim zaczniemy, pozwolę sobie wyjaśnić drobne nieporozumienie. Te transfery 33 MB/s i 66 MB/s to transfery maksymalne (bbuurrsstt ttrraannssffeerr rraattee) i nie doświadcza się ich zbyt często. Oto mały wyciąg z ,,generic UDMA.txt'': Transfery chwilowe/maksymalne (burst) powinny osiągać wartości od 16,6 MB/s (dla PIO 4 i DMA 2) do 33 MB/s dla UDMA. W swojej łacie do jądra 2.1.55 Kim-Hoe Pang wyliczył te transfery z zależności 60 ns/słowo co daje 33 MB/s. Jednak transfery takie dotyczą tylko danych przesyłanych z/do cache'u (476 kB dla dysku IBM 6,4 GB) i nie są zbyt odpowiednie dla większości użytkowników Linuksa. Jądro Linuksa używa tyle RAMu ile się tylko da, aby cache'ować dane z dysku. Tak więc jeśli czegoś nie ma w tej podręcznej pamięci jądra, to jest bardzo małe prawdopodobieństwo, że będzie w o wiele mniejszym cache'u dysku. O wiele bardziej odpowiedni będzie ssuussttaaiinneedd ttrraannssffeerr rraattee, czyli prędkość z jaką dane są transportowane z dysku do głównej pamięci, gdzię mogą być użyte. Prostym sposobem na zmierzenie tego transferu jest użycie polecenia hdparm - np hdparm -Tt /dev/hda, aby zmierzyć transfer pierwszego dysku IDE. Oto trochę danych zebranych po intesnywnym testowaniu hdparmem: [od tłumacza: W tej chwili (II.2001) te transfery wyglądają znacznie lepiej] PIO tryb 4: +/- 5,2 MB/s DMA tryb 2: +/- 7,2 MB/s UDMA tryb2: +/- 9,8 MB/s Jak widać, UDMA jest prawie dwa razy szybsze od EIDE i znacząco szybsze niż zwykłe ,,bus mastering DMA''. Większość obecnych dysków UDMA potrafi osiągnąć tranfery między 10 a 15 MB/s w UDMA 2 (33 MB/s) i UDMA 4 (66 MB/s). 22..55.. JJaakk ssiięę mmaa UUDDMMAA ddoo SSCCSSII?? Nie mam żadnych konkretnych liczb, abym mógł je podać, ale ogólnie dyski SCSI są szybsze od UDMA. Jednak jeśli spojrzeć na cenę, to można zauważyć, że dyski UDMA są o wiele tańsze. Stosunek wydajność/cena jest znacznie lepszy dla UDMA. 33.. UUżżyywwaanniiee ddyysskkuu UUDDMMAA zz iinntteerrffeejjsseemm EEIIDDEE.. To jest akurat łatwe do zrobienia. Ponieważ wszystkie dyski UDMA są kompatybilne z EIDE, należy po prostu podpiąć dysk UDMA do interfejsu EIDE i Linux nie powinien mieć najmniejszych problemów z wykryciem go. Należy pamiętać, że transfery będą takie jak na zwykłym EIDE. 44.. UUżżyywwaanniiee ddyysskkuu UUDDMMAA zz iinntteerrffeejjsseemm UUDDMMAA Mam dwie wiadomości: dobrą i złą. Dobra, to ta, że interfejs UDMA można używać zarówno dla dysków UDMA i ,,legacy EIDE''. Będzie o wiele szybciej niż w interfejsie EIDE. Zła wiadomość to ta, że stare jądra (2.0.x) nie obsługują UDMA zbyt dobrze. Nowsze jądra 2.2.x obsługują UDMA33, a do tych, które nie obsługują, są dostępne łaty. Dodatkowo należy zaznaczyć, że niektóre interfejsy UDMA, które są dodawanymi kartami a nie są wbudowane w płytę główną, wymagają jakiejś łaty lub kilku sztuczek, żeby używać ich ze starym jądrem. Oto po co w ogóle ten dokument istnieje - aby wyjaśnić jak zdobyć łaty i jakie to są sztuczki. 55.. IInntteerrffeejjssyy UUDDMMAA PPCCII nniiee zziinntteeggrroowwaannee zz ppłłyyttąą ggłłóówwnnąą Istnieją interfejsy UDMA jako karty PCI, przy pomocy których można dodać obsługę UDMA bez wymiany płyty głównej lub dodać kolejny kontroler jeśli istniejące zostały już zapełnione. Są one także czasami instalowane w nowych komputerach: Gateway 2000 i Dell. Większość z nich nie jest obsługiwana przez stare jądra serii 2.0.x, ale wiele powinno być obsługiwanych przez jądra 2.2.x. Jednak niektóre z najnowszych takich kart (np. Promise Ultra66) nie są obsługiwane nawet przez najnowsze jądra [od tłumacza: teraz (II.2001) jednak chyba już większość jest obsługiwana]. Jeśli posiadasz taką kartę, to musisz zainstalować łatę na jądro albo znaleźć nowsze z obsługą twojej karty. Jeśli musisz zainstalować Linuksa na dysku na takim interfejsie, to trzeba będzie trochę pokombinować. 55..11.. PPrroommiissee UUllttrraa3333 Jest to karta PCI z dwoma kanałami UDMA, obsługująca do 4 dysków. Specyfikacje i ceny można znaleźć pod adresem http://www.promise.com. Karta ta jest we wczesnych modelach Gateway 2000 Pentium II. Jądra 2.0.35 i nowsze oraz wszystkie 2.2.x obsługują Ultra33 i nie powinno być problemów z zainstalowaniem dystrybucji opartej na tych jądrach. Starsze jądra nie obsługują tego standardu i z instalacją Linuksa starszej wersji możgą być kłopoty jeśli nie można lub nie chce się przejść na nowsze jądro. IInnssttaallaaccjjaa LLiinnuukkssaa zz oobbssłłuuggąą UUllttrraa3333 Pomimo iż jest łata do interfejsu Ultra 33, to zainstalowanie jej i kompilacja jądra nie jest prostą sprawą jeśli nigdy nie instalowałeś Linuksa. Jest więc pewne obejście, które pozwala zainstalować system na takim interfejsie. Podziękowania dla Gadi Oxmana za poniższe informacje na temat ustawień interfejsu: Jeśli jest dostęp do konsoli z dysku instalacyjnego, to można wyświetlić ustawienia karty Promise poleceniem "cat /proc/pci": RAID bus interface: Promise Technology Unknown device (rev 1). Vendor id=105a. Device id=4d33. Medium devsel. IRQ 12. Master Capable. Latency=32. I/O at 0xe000. (a) I/O at 0xd804. (b) I/O at 0xd400. (c) I/O at 0xd004. (d) I/O at 0xc800. (e) i przekazać do jądra parametry "ide2=a,b+2 ide3=c,d+2". Uwaga: Liczby podane tutaj będą się różnić od Twoich. Przykładowymi parametrami w tym przypadku będą: ``ide2=0xe000,0xd806 ide3=0xd400,0xd006''. Jeśli używany jest tylko pierwszy kanał Ultra33 (np. jeśli jest tylko jeden dysk czy dwa jeśli są to master i slave na jednym kanale) wtedy nie trzeba podawać ide3. RReedd HHaatt 55..11::Należy wystartować z dyskietki startowej i wcisnąć ENTER po pojawieniu się zachęty. Jądro wystartuje i pojawi się zapytanie o język, klawiaturę i metodę instalacji. Źródło instalacji nie ma znaczenia, ważny jest kolejny krok: powinno się pojawić okienko zatytułowane ``Select Installation Path'', wciskamy Alt-F2, aby przejść do linii poleceń. Wpisujemy ``cat /proc/pci'', zapisujemy liczby, które się pojawią i startujemy ponownie z dyskietki startowej. Tym razem, gdy pojawi się zachęta wpisujemy ``linux ide2= _(_t_u_t_a_j _t_e _n_u_m_e_r_k_i _s_p_i_s_a_n_e _w_c_z_e_ś_n_i_e_j _j_a_k _n_a _p_r_z_y_k_ł_a_d_z_i_e _w_y_ż_e_j_) ide3=_(_i _k_o_l_e_j_n_e _n_u_m_e_r_k_i_)''. Teraz instalacja na dysk twardy powinna odbyć się już bez problemów, chociaż LILO będzie pewnie miało problemy z zainstalowaniem się. Zamiast instalować LILO trzeba zrobić dyskietkę startową i startować z niej z parametrami jw. dopóki nie będzie można załatać jądra i LILO. RReedd HHaatt 55..00 i SSllaacckkwwaarree 33..44:Tutaj sytuacja jest podobna, z małym wyjątkiem: programy instalacyjne ignorują /dev/hde-h (dyski na ide2 i ide3). Aby zainstalować Linuksa na lub z takiego dysku trzeba nadpisać jeden lub oba kanały z płyty głównej. Jednak uwaga na nadpisanie kanału, z którego odbywać się będzie instalacja. Np. jeśli instalacja odbędzie się z CD-ROMu na /dev/hdd (ide1 - kontroler na płycie głównej) na dysk /dev/hde (ide2 - Ultra33), trzeba nadpisać ide0 przez ide2 a zostawić ide1. Przy starcie z dyskietki ratunkowej pojawi się zachęta w RH 5.0 natomiast Slackware udostępnia powłokę w trybie instalacyjnym. Jednak RH 5.0 stwarza problemy z wystartowaniem po instalacji. Jeśli takie problemy pojawią się można sciągnąć dyskietkę startową Slackware'a z ftp://ftp.icm.edu.pl/pub/linux/slackware/slackware- current/bootdsks.144/ i użyć tej dyskietki. W wypadku innych dystrybucji trzeba trochę poimprowizować, ale proces powinien być podobny. _W_A_Ż_N_E_: Bez łaty (omawianej w punkcie ``Zunifikowane IDE'') jjąąddrroo ppoottrrzzeebbuujjee parametrów startowych, aby dostać się do dysku! Z tego powodu bardzo ważnym jest podczas konfiguracji LILO (na dysku lub dyskietce), aby podać ddookkłłaaddnniiee ttee ssaammee ppaarraammeettrryy jak podczas instalacji. W przeciwnym wypadku system nie wystartuje! Można te parametry przekazać podczas startu systemu (tak samo jak podczas instalacji) w zachęcie LILO wciskając SHIFT i wpisując ``linux ide2=_._._._._.'' za każdym razem. Polecam jednak czym prędzej załatać jądro i zapomnieć o wpisywaniu tych parametrów. Z tego co się orientuję, to nie ma sposobu przekazania parametrów do jądra startującego z dyskietki, TTRRZZEEBBAA używać LILO lub innego programu ładującego system, który pozwala na przekazywanie parametrów. Niełatane jądra i programy instalacyjne często mają problemy z używaniem ide2 czy ide3 nawet jeśli napędy zostały poprawnie wykryte. Jeśli nie można użyć tych interfejsów przy pomocy powyższej techniki, to można spróbować podać ide0 lub ide1 zamiast ide2 czy ide3 (podziękowania dla Martina Gaitana). To podmienia interfejsy na płycie głównej na Promise Ultra33 i można kierować się wskazówkami z następnego punktu tak jak po fizycznej zamianie tych interfejsów. Jeśli do instalacji użyty zostanie CD-ROM, to należy uważać, żeby nie podmienić interfejsu, do którego jest on podpięty, bo instalacja będzie nie możliwa! Jeśli jest to hda lub hdb, to dysk należy podpiąć do ide1 w przeciwnym razie (hdc, hdd) - do ide0. IInnssttaallaaccjjaa LLiinnuukkssaa oommiijjaajjąąccaa UUllttrraa3333 Jeśli nie można zastosować takiego obejścia jw., to trzeba spróbować czegoś innego. Oto alternatywna metoda, która gwarantuje działanie, ale wymaga otwarcia komputera i pogrzebania w nim. UUWWAAGGAA:: Jeśli nie bardzo wiesz jak podłączać i odłączać dyski, to radzę zapoznać się z podręcznikiem, który otrzymałeś z dyskiem czy sterownikiem! Jeśli coś pochrzanisz i nie będziesz wiedział jak to złożyć spowrotem, to będziesz żałować! Skoro już to napisałem, to reszta jest już prosta. Większość płyt głównych z czasów obecnych ma wbudowane interfejsy EIDE. Należy odłączyć dysk od Ultra33 i podłączyć go do EIDE. Jeśli są jakieś inne urządzenia IDE, to należy albo podłączyć dysk na nie używanym kanale, albo chwilo odłączyć urządzenie, które nie jest teraz potrzebne. Potem: zainstaluj Linuksa, ściągnąć łatę, zainstalować ją na jądro (następny punkt). Teraz można już przełączyć dysk spowrotem do interfejsu Promise... no prawie. Na wszelki wypadek należy zrobić dyskietkę startową (cd /usr/src/linux ; make zdisk), którą będzie można użyć do startu systemu jeśli LILO nie będzie działać. A żeby być jeszcze bardziej pewnym można zrobić dwie i jedną odłożyć na bok. Dobra, to teraz czas trochę pomyśleć. Jeśli na interfejsie Promise jest tylko jeden dysk, to będzie to /dev/hde (a i b to pierwszy kontroler IDE, c i d - drugi). Ewentualne dodatkowo umieszczane tam napędy będą przyjmować kolejne litery od e tak jak dyski IDE. Teraz trzeba zmodyfikować plik /etc/fstab i podmienić wpisy hda, hdb, ... na odpowiednie hde, hdf, .... Jeśli zmieniona została lokalizacja (z master na slave) jakiegoś innego urządzenia (CD-ROM, ZIP) lub jakieś wyjęte, które mają zostać w komputerze, to także trzeba je dopisać do tego pliku. W przypadku użycia LILO, trzeba także skonfigurować i je, aby używało nowych plików urządzeń (omawianie konfiguracji LILO jest poza zakresem tego dokumentu. Aby dowiedzieć się jak to się robi zajrzyj do LILO mini-HOWTO. W przeciwnym wypadku trzeba będzie użyć dyskietki, która została zrobinoa wcześniej, którą i tak trzeba teraz skonfigurować, aby widziała dysk na hde. Robi się to poleceniem rdev. Wkładamy dyskietkę do stacji i wpisujemy ``rdev /dev/fd0 /dev/hde1''. Oczywiście zakładam tutaj, że Twoja główna partycja jest pierwszą na dysku pierwszym. Jeśli nie, to użyj poprawnego numeru partycji! Reboot. Teraz system powinien działać poprawnie. IInnssttaalloowwaanniiee łłaattyy ddoo UUllttrraa3333 Jądra w wersji 2.0.35 i nowsze mają wbudowaną obsługę Promise Ultra33. Trzeba tylko ściągnąć takie jądro z ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/linux/kernel/> i je skompilować. Instrukcji jak to zrobić należy szukać w Kernel HOWTO. UUżżyywwaanniiee ddwwóócchh kkaarrtt UUllttrraa3333 ww jjeeddnnyymm kkoommppuutteerrzzee W tej chwili nie działa... Nie radzę próbować o ile oczywiście nie masz ochoty na kompilacje jądra i kombinowanie z różnymi konfiguracjami. 55..22.. PPrroommiissee UUllttrraa6666 Jest to mnie więcej to samo urządzenie co Ultra33, tyle że obsługuje UDMA 4 66 MB/s. Niestety nie ma jeszcze obsługi w jądrach 2.2.x Obsługa jest zawarta w dostępnej łacie dla jąder 2.0.x i 2.2.x pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/linux/kernel/people/hedrick/> oraz w jądrach rozwojowych 2.3.x od 2.3.3 w górę. Jednak zanim będzie można załatać jadro lub uaktualnić je, to trzeba zastosować te same sztuczki co dla Promise Ultra33. Albo można użyć dystkietki startowej udostępnionej przez Promise <http://www.promise.com/latest/latedrivers.htm#linuxu66>. 55..33.. AArrttoopp AATTPP885500UUFF Ta karta jest obsługiwana przez zunifikowany kod IDE. Instalacja Linuksa na niej może być podobna do instalacji na Promise Ultra33. 55..44.. DDooddaawwaanniiee pplliikkóóww uurrzząąddzzeeńń.. Trzeci i czwarty interfejs IDE (ide2 i ide3) używają plików urządzeń /dev/hde* do /dev/hdh*. W przypadku starszych jąder pliki te nie były tworzone automamtycznie i trzeba je dodać ręcznie, aby dysk działał. W źródłach któregoś z nowszych jąder, znajduje się skrypt /usr/src/linux/scripts/MAKEDEV.ide, który wystarczy uruchomić. 66.. IInntteerrffeejjssyy UUDDMMAA nnaa ppłłyycciiee ggłłóówwnneejj Używają one standardowych portów I/O IDE i są w pełni kompatybilne z wolniejszymi transferami na niełatanym jądrze 2.0.x. Przez to nie powinny sprawiać żadnych problemów podczas instalacji a instalacja łaty to tylko polepszenie szybkości a nie wymagany krok. Trochę obsługi UDMA jest w najnowszych jądrach 2.0.x a obsługa chipsetów Intela znajduje się w jądrach 2.2.x. 66..11.. IInntteell FFXX,, HHXX,, VVXX,, TTXX,, LLXX ii BBXX Jeszcze raz dziękuje Gadiemu za tę informację: Obsługa <it/bus mastering DMA/ dla chipsetu TX jest w jądrach 2.0.31+ W starszych jądrach interfejs ten będzie używany w wolniejszym trybie EIDE. W każdym razie interfejs ten zostanie automatycznie wykryty i nie powinien sprawiać żadnych kłopotów. Pełna obsługa UDMA 2 dla tych chipsetów jest zawarta w jądrach 2.2.x i zunifikowanej łacie IDE; zobacz ``Zunifikowane IDE''. 66..22.. VVIIAA VVPP22 ii ppooddoobbnnee cchhiippsseettyy Interfejs ten także jest automatycznie wykrywany i może być używany przez niełatane jądro. Ale skoro masz już taki interfejs, to warto ściągnąć i zainstalować łatę, żeby mieć szybsze transfery i pozbyć się dość denerwującego komunikatu "unkown PCI device". Jedna łata jest dostępna pod adresem www.ipass.net. Przeznaczona jest dla VIA VP2/97 znajdującego się na płytach głównych FIC PA-2007 i PA-2011. Ale może też działać na podobnych chipsetach. Zgłaszano też, że łata ta działa z VIA VP3; niekoniecznie musi być to prawdą w każdym przypadku. Należy zauważyć, że ta łata obsługuje tylko tryb _B_u_s _M_a_s_t_e_r_i_n_g, a nie pełną tryb UDMA, ale i tak lepsze to niż zwykłe EIDE. Aby uruchomić tryb BMDMA należy postępować zgodnie ze wskazówkami na stronie z łatą. Jest jeszcze inna łata, która w pełni obsługuje UDMA - www.pyreneesweb.com. Przeznaczona jest dla VIA VT82C586B i powinna także działać z VP2, VP3, VPX, P6 i AGP Apollo. Aby ją zainstalować należy postępować zgodnie z zawartymi tam wskazówkami. Zalecane jest jednak zrobienie kopii zapasowej najważniejszych danych ponieważ istnieje możliwość wystąpienia problemów z niekompatybilnymi płytami głównymi. Jeśli jednak łata zadziała, to będzie już działać bez problemów. Chipset VP1 nie działa z tymi łatami, ale jest obsługiwany przez łatę dla ``zunifikowanego IDE''. 66..33.. TTXX PPrroo ii iinnnnee ppłłyyttyy ggłłóówwnnee ,,,,PPrroo'''' UDMA nie jest poprawnie obsługiwane przez te płyty. Nie są takie same jak TX mobo i najwidoczniej źlę raportują informacje o DMA - stąd problemy. Słyszałem, że ktoś nad tym pracuje więc pewnie łata pojawi się w przyszłości. 66..44.. HHPPTT 336666 Ten chipset jest na popularnych płytach Abit BP-6 oraz innych i dotarcza UDMA 4 66 MB/s jako doatek do dwóch innych kanałow w trybie 2 33 MB/s. Obsługa jest poprzez ``zunifikowany kod IDE'', ale nie ma jej w żadnym z obecnych jąder. Tak więc instalacja może być podobna do tej z kartą ``Promise Ultra33''. [Od tłumacza: obsługa jest w jądrach 2.3.99+ oraz 2.4.x] 77.. ZZuunniiffiikkoowwaannaa łłaattaa IIDDEE Zunifikowana łata do IDE dostarcza obsługę wielu chipsetów i kart rozszerzeń. Łaty takie są dostępne dla jąder, 2.0, 2.2 i 2.3. Jeśli obecnie użytkowane jądro nie obsługuje posiadanego chipsetu, to należy je załatać. Łatami tymi opiekuje się Andre Hedrick <mailto:andre@suse.com>, można je ściągnąć z najbliższej kopii serwera ftp.kernel.org <ftp://ftp.icm.edu.pl/pub/linux/kernel/people/hedrick>. UDMA jest obsługiwane w poniższych chipsetach i prawdopodobnie w wielu innych, których nie znam: ˇ Wszystkie chipsety Intela: FX, HX, VX, TX, LX ˇ Wszystkie chipsety SiS (przetestowany tylko SiS5598, ale cała rodzina tych chipsetów ma ten sam wbudowany interfejs 5513) ˇ Chipsety VIA (przetestowany tylko 82C586B, ale tak jak wyżej cała rodzina chipsetów ma ten sam interfejs). W interfejsach na VIA obsługiwana jest specjalna diagnostyka ˇ Promise i Artop PCI UDMA. ˇ Aladdin V (ALi15x3) ˇ HPT343 i HPT366 (zobacz ``Abit BP-6'') Kod jest napisany tak, aby było go łatwo rozszerzyć o obsługę kolejnego chipsetu. Oto kilka uwag od Andre Balsa'y, autora wcześniejszej łaty: Na dobrej płycie głównej z dyskiem IBM UDMA można osiągnąć prawie maksymalny transfer: 10 Mb/s (zmierzone 'hdparm -t -T'). Chipset Intela TX ma pojedynczą kolejkę FIFO dla dysków i jest ona dzielona przez dwa interfejsy IDE, tak więc używanie dwóch dysków UDMA spowolni ich działanie. Jednak, SiS5598 ma dwa oddzielne interfejsy, każdy z własną kolejką FIFO. Teoretycznie można się zbliżyć do 66 Mb/s na płytach głównych z chipem SiS5598 używając software'owego RAID0. SiS5571 ma chyba tę samą strukturę interfejsu. Nie mam żadnych danych na temat VIA, więc nie mogę nic na ten temat powiedzieć. Sterownik IDE (U)DMA napisany przez Marka Lorda ma szczególnie krótki czas konfiguracji (a stąd opóżnienia w transferach). Jest on idealny do częstych transferów małych paczek danych (takich jak serwery news) i może być lepszy od technologii SCSI. 88.. WWłłąącczzaanniiee ii wwyyłłąącczzaanniiee UUDDMMAA Jądro z wkompilowaną obsługą UDMA włączy je automatycznie jeśli wykryje napęd UDMA. W większości przypadków, kiedy obsługa taka się nie włączy to albo jądro nie umie obsłużyć chipsetu (zdobądź łatę, ``patrz wyżej'') albo włączenie obsługi nie jest uważane za bezpieczne. Jednak czasami napęd umie obsługiwać UDMA, ale BIOS tego nie podaje. W takich przypadkach należy włączyć obsługę ręcznie. 88..11.. PPaarraammeettrryy jjąąddrraa ppooddcczzaass ssttaarrttuu W jądrach 2.1.113+ można włączyć obsługę DMA dla obu napędów na podanym interfejsie IDE przy pomocy parametru jądra ideX=dma, gdzie X jest numerem interfejsu (pierwszy to '0'). Jednak podanie tego parametru wcale nie musi uaktywnić UDMA. Parametry do jądra można przekazać przez LILO, LOADLINa czy większości popularnych programów ładujących system. Więcej informacji można znaleźć w Bootdisk HOWTO. 88..22.. UUżżyywwaanniiee hhddppaarrmm Jest to program służący do ustawiania różnych parametrów dysku twardego. Jedną z możliwości jest włączenie obsługi UDMA i pomiar szybkości stałego przesyłu danych. Bieżąca wersja hdparmu to 3.6 (w czasie pisania) [Od tłumacza: w tej chwili jest wersja 3.9]]. Starsze, niełatane wersje nie będą poprawnie raportowały ani ustawiały parametrów związanych z UDMA, tak więc należy zdobyć aktualną wersję. Źródło znajduje się pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/linux/sunsite/system/hardware>. Program po ściągnięciu należy skompilować mniej więcej tak: tar zxvf /tmp/download/hdparm-3.6.tar.gz cd hdparm-3.5 make su root (podaj hasło) make install cp /usr/local/sbin/hdparm /sbin/hdparm exit AAbbyy wwłłąącczzyyćć DDMMAA:: hdparm -d1 /dev/hda AAbbyy wwyyłłąącczzyyćć DDMMAA:: hdparm -d0 /dev/hda AAbbyy zzmmiieerrzzyyćć sszzyybbkkoośśćć ddyysskkuu:: hdparm -Tt /dev/hda AAbbyy zzoobbaacczzyyćć jjaakkiiee ssąą uussttaawwiieenniiaa ddyysskkuu:: hdparm /dev/hda AAbbyy zzoobbaacczzyyćć wwiięęcceejj ddaannyycchh ddoott.. ddyysskkuu nniiżż kkiieeddyykkoollwwiieekk cchhcciiaałłeeśś:: (np. które tryby UDMA są włączone) hdparm -i /dev/hda Więcej informacji (np. jakich trybów UDMA użyć) można znaleźć w stronie podręcznika systemowego (``man 8 hdparm''). 99.. PPrroobblleemmyy 99..11.. ,,,,CCzzaarrnnaa LLiissttaa'''' UUDDMMAA Napędy wymienione poniżej znajdują się na liście nie działających. NNiiee wwoollnnoo ich używać w trybie UDMA ponieważ może to spowodować utratę danych. Aby tego uniknąć sterownik powinien automatycznie wyłączyć obsługę DMA dla tych napędów. ˇ Western Digital WDC AC11000H, AC22100H, AC32500H, AC33100H, AC31600H - wszystkie wersje ˇ Western Digital WDC AC32100H revision 24.09P07 ˇ Western Digital WDC AC23200L revision 21.10N21 99..22.. CCzzyy mmaasszz pprrzzeettaakkttoowwaannee PPCCII?? Jeśli tak, to ostrożnie! Oto cytat z poprzedniej dokumentacji do UDMA: Nie wolno przetaktowywać szyny PCI. 37,5 MHz, to maksymalna częstotliwość. Niektóre (prawdopodobnie obsługiwane) napędy UDMA nie zadziałają nawet przy częstotliwości 37,5 MHz, ale 33 MHz powinno działać. W każdym bądź razie NIGDY _NIGDY_ ! nie wolno ustawiać szyny PCI na 41,5 MHz. ZALECANYM bezpiecznym ustawieniem jest 33 MHz. 99..33.. CCzzyy BBIIOOSS nnaa ppłłyycciiee ggłłóówwnneejj jjeesstt aakkttuuaallnnyy?? Oto kolejny cytat z dokumentacji do UDMA: Tak naprawdę BIOS każdej płyty głównej przestawia napędy dyskowe na tryb UDMA. Oczywiście trzeba mieć nadzieję, że taki BIOS został zaprogramowany poprawnie... Np. płyta główna ASUS SP-97V z oryginalnym BIOSem (rev. 1.03) będzie działać niepoprawnie w trybach DMA 2 i UDMA ze zmodyfikowanym sterownikiem linuksowym. Będzie natomiast działać poprawnie w trybie PIO 4 oraz w Windows 95 we wszystkich trybach. Ściągnąłem najnowszy BIOS (rev. 1.06) ze strony ASUSa i uaktualniłem na swojej płycie. Od tego momentu działa idealnie (przy częstotliwości szyny 66 MHz). Mówi nam to o fakcie, że BIOS ustawia w kontrolerze DMA pewne specyficzne parametry (active pulse i recovery clock cycles) [od tłumacza: jak mi ktoś zaproponuje kiedyś tłumaczenie, to przetłumaczę, bo ja nie mam pojęcia o czym mowa...] Moja poprzednia wersja BIOSu prawdopodobnie miała te ustawienia niepoprawne. Ponieważ sterownik Windows 95 ustawia te wartości samemu (nie zależnie od BIOSu) miałem problemy tylko ze sterownikiem Linuksa a pod Windows 95 wszystko działało poprawnie. Tak więc jeszcze raz: sterownik UDMA w Linuksie polega na ustawieniach BIOSu. Jeśli pojawiają się problemy należy sprawdzić czy mamy najnowszą wersję BIOSu dla naszej płyty głównej. 99..44.. JJeeśśllii nnaaddaall nniiee ddzziiaałłaa Jeśli żadna ze wskazówek nie okazała się pomocna na tyle, żeby rozwiązać problemy z UDMA, najlepszym wyjście jest napisanie na grupę _p_l_._c_o_m_p_._o_s_._l_i_n_u_x_._s_p_r_z_e_t. W wiadomości należy zawrzeć dokładny opis problemu: typ posiadanego interfejsu UDMA, czy jest na płycie głównej czy na karcie rozszerzeń, czy napęd jest w UDMA czy w zwykłym EIDE, dokładna konfiguracja napędów, wersja dystrybucji i jądra oraz wszystko inne co wydaje się być pomocne. Najprawdopodobniej znajdzie się tam ktoś pomocny. 99..55.. JJeeśśllii mmaasszz iinnffoorrmmaaccjjee nnaa tteemmaatt UUDDMMAA,, kkttóórryycchh nniiee mmaa ttuuttaajj...... Wspaniale! Jeśli wiesz coś czego ja nie wiem, prześlij do mnie informację na ten temat (brion@pobox.com) i ukaże się ona w kolejnej wersji. 1100.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Zmiany w tym dokumencie: ˇ W punkcie o ``IDE, EIDE i ATAPI'' dopisałem informację o dyskach UDMA w tej chwili dostępnych na rynku. ˇ W punkcie ``o ,,ultra'''' dopisałem informację o transferach Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Napewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać. Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Update.pl.txt�����������������������������������������������������0100664�0001750�0001750�00000070106�07457640740�017743� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Linux: Jak być na bieżąco Autorzy: Kjetil Bakkeskaug, Kjell Sundby i Stein Gjoen, sgjoen@nyx.net v0.31, 29 października 2000 WWeerrssjjaa ppoollsskkaa:: TToommaasszz ''ttssccaa'' SSiieenniicckkii,, ttssccaa@@eeddbb..ddkk v1.71, 14 grudnia 2001 Dokument zawiera wskazówki na temat wyszukiwania nowinek i informacji o rozwoju Linuksa. Chociaż większa część tekstu dotyczy konkretnie tego systemu, znajduje się tu również mnóstwo bardziej ogólnych i użytecznych dla szerszego odbiorcy wiadomości na temat efektywnego wyszukiwania określonych informacji. ______________________________________________________________________ Spis treści 1. Wstęp 1.1 Prawa autorskie 1.2 Zastrzeżenia 1.3 Zmiany 1.4 Podziękowania 2. Dokumentacja na twoim dysku 3. Subskrypcje 3.1 Grupy dyskusyjne 3.2 Listy dyskusyjne 3.3 Magazyny 4. Spotkania 5. Poszukiwanie informacji 6. Podsumowanie 7. Od tłumacza ______________________________________________________________________ 11.. WWssttęępp Linux rozwija się niezwykle szybko. Dlatego czasem trudno jest śledzić jego rozwój na bieżąco, czy zorientować się w stanie aktualnym. Ten dokument zawiera kilka wskazówek pomocnych w szybkim i efektywnym wyszukiwaniu żądanych informacji. Większość z Was zna i używa WWW i grup dyskusyjnych, ale -- jak dowiecie się z tego tekstu -- WWW i Usenet to jeszcze nie wszystko. Istnieje wiele innych, równie dobrych i lepszych, źródeł informacji. Dostępne są tłumaczenia tego dokumentu; chciałbym tu podziękować tłumaczom za ich pracę i komentarze: ˇ wersja polska <http://www.ict.pwr.wroc.pl/jtz/Html/mini/Update.pl.html>: Tomasz `tsca' Sienicki, tsca (at) cryogen.com ˇ wersja francuska <http://www.freenix.org/unix/linux/HOWTO/>: Jean- Albert Ferrez, Jean-Albert.Ferrez (at) epfl.ch ˇ wersja portugalska <http://www.poli.org/LDP-PT/mini-HOWTO/>: Duarte Loreto, dnloreto (at) esoterica.pt ˇ wersja japońska <http://www.linux.or.jp/JF/>: Satoru Takahashi, hisai (at) din.or.jp 11..11.. PPrraawwaa aauuttoorrsskkiiee Copyright (c) 1998 Kjell Sundby, Kjetil Bakkeskaug and Stein Gjoen. Prawa autorskie do tego dokumentu należą do Kjella Sundby, Kjetila Bakkeskauga oraz Steina Gjoena. O ile nie zaznaczono inaczej dokumenty HOWTO chronione są prawami autorskimi należącymi odpowiednio do ich autorów. Zezwala się na powielanie i dystrybucję tych dokumentów w całości lub w części na jakimkolwiek fizycznym bądź elektronicznym nośniku pod warunkiem pozostawienia na wszystkich kopiach niniejszej informacji o prawach autorskich. Zezwala się i zachęca do redystrybucji komercjalnej; autor jednak życzy sobie być powiadamiany o każdej z takiej dystrybucji. Niniejsze prawa autorskie dotyczą również wszelkich tłumaczeń, prac pochodnych, składających się z, lub zawierających jakiekolwiek dokumenty HOWTO. Oznacza to, że niedozwolone jest stworzenie pracy pochodnej od dokumentu HOWTO i nałożenie dodatkowych ograniczeń na jej dystrybucję. W pewnych szczególnych okolicznościach możliwe są odstąpienia od tych zasad. Po bliższe informacje należy skontaktować się z koordynatorem projektu Linux HOWTO pod adresem podanym poniżej. W skrócie: chcemy promować rozprzestrzenianie się podanych tu informacji poprzez możliwie wiele kanałów. Zatrzymujemy jednak prawa autorskie do dokumentów HOWTO i chcielibyśmy być informowani o jakichkolwiek planach redystrybucji tych dokumentów. Jeśli masz jakiekolwiek pytania, skontaktuj się z koordynatorem projektu Linux HOWTO pod adresem linux-howto@sunsite.unc.edu 11..22.. ZZaassttrrzzeeżżeenniiaa Pamiętaj: informacji zawartych w tym dokumencie używasz na własne ryzyko. Zrzekamy się jakiejkolwiek odpowiedzialności za jego zawartość. Pomysłów, przykładów i/lub jakichkolwiek innych pochodzących z tego dokumentu informacji używać możesz wyłącznie na własną odpowiedzialność. O ile nie zaznaczono inaczej wszystkie prawa autorskie należą do ich właścicieli. Użycie w tym dokumencie danego terminu nie powinno być traktowane jako wpływające na ważność jakiegokolwiek znaku handlowego lub znaku usługi. Użycie nazw określonych produktów lub marek nie oznacza polecania ich. Poleca się sporządzanie kopii systemu przed poważnymi instalacjami, oraz robienie kopii bezpieczeństwa w regularnych odstępach czasu. 11..33.. ZZmmiiaannyy ˇ Zaktualizowano odnośniki do LinuxNetMag. ˇ Sprawdzono odnośniki (te jednak szybko się dezaktualizują). ˇ Dodano odnośnik do Penguin Magazine. ˇ Dodano wiadomości na temat działania list dyskusyjnych. ˇ Dokument został właściwie zindeksowany. ˇ Zmiana ,,Dejanews'' na ,,Deja'', zmiana tytułu jednego z rozdziałów. ˇ Usunięto literówki. ˇ Dodano odnośnik do polskiej wersji dokumentu. ˇ Dodano odnośnik do _F_o_c_u_s _L_i_n_u_x i _L_i_n_u_x _M_a_g_a_z_i_n_e. ˇ Dodano odnośnik do francuskiej i japońskiej wersji dokumentu oraz różnych zasobów sieciowych. ˇ Sprawdzono odnośniki, poszerzono rozdział ,,Poszukiwanie informacji''. 11..44.. PPooddzziięękkoowwaanniiaa ˇ Tomasz 'tsca' Sienicki <tsca (at) cryogen.com> ˇ Satoru Takahashi <hisai (at) din.or.jp> 22.. DDookkuummeennttaaccjjaa nnaa ttwwooiimm ddyysskkuu Po zainstalowaniu Linuksa zastajesz zazwyczaj całkiem dużo informacji -- nie tylko dołączoną broszurkę, ale również wiele dokumentów HOWTO (JTZ - JAK TO ZROBIĆ) oraz obszerne opracowania i pomoc dostępne w sieci. Z nawiązką wystarcza to na początek, jednak po pewnym czasie zorientujesz się, że chcesz wiedzieć więcej, być na bieżąco, móc aktualizować swój system... jednym słowem: wiedzieć, co dzieje się "w branży". Pomoże ci w tym ten dokument. Dla uproszczenia podzielono zawarte tu informacje na takie, które możesz zasubskrybować i odnaleźć. Skupimy się też na efektywnym uzyskiwaniu konkretnej specjalistycznej pomocy. Nawet jeśli do Twojego Linuksa nie dołączono żadnego rodzaju wydrukowanej informacji to i tak każda szanująca się dystrybucja zawiera szereg katalogów zawierających różnego rodzaju dokumentację -- od konkretnych plików README (CZYTAJTO) zawierających informacje o danych programach, do bardziej kompleksowych opracowań HOWTO -- właśnie czytasz jedno z nich. Zajrzyj do archiwum dokumentów w /usr/doc, gdzie większość pakietów składa swoją dokumentację, pliki README, itd. W katalogach /usr/doc/HOWTO oraz /usr/doc/HOWTO/mini znajdziesz cały zestaw gotowych do czytania plików HOWTO i mini-HOWTO. Najważniejszym i najpełniejszym źródłem informacji są oczywiście źródła jądra w /usr/src/linux. _U_ż_y_w_a_j _i_c_h_! Zwróć też uwagę, że pakiet z jądrem to nie tylko kod źródłowy (co najmniej częściowo opatrzony komentarzami), ale również katalog /usr/src/linux/Documentation zawierający obszerną dokumentację. Przed zadaniem jakiegokolwiek pytania na temat jądra powinieneś zapoznać się z zawartością tego katalogu. Dzięki temu oszczędzisz sobie zakłopotania i nie zmarnujesz czasu innym. Przeglądanie i przeszukiwanie dokumentacji na komputerze czy w sieci jest bardzo wygodne. Nie rezygnuj jednak całkowicie z informacji drukowanej. Czasem, gdy nie jesteś w stanie nawet uruchomić swojego komputera, dokumentacja wydrukowana może być jedynym sposobem dotarcia do rozwiązania problemu. 33.. SSuubbsskkrryyppccjjee Subskrybowanie oznacza zamawianie danego rodzaju wiadomości napływających ciągłym strumieniem. Nie ugryź kawałka większego niż możesz przełknąć: przeładowanie informacją nie jest tylko hasłem encyklopedycznym. Często zdarzy się, że zamiast spodziewanych informacji otrzymasz jakieś śmieci. Bądź więc krytyczny i nie wahaj się przez unieważnieniem subskrypcji. Istnieją dwa odrębne (choć w niektórych przypadkach ze sobą sprzężone) media dostarczające ciągłych informacji: są to grupy dyskusyjne (USENET) i listy dyskusyjne. Grupy dyskusyjne zazwyczaj charakteryzują się zwiększoną ilością wiadomości i szumu informacyjnego niż listy. Uważaj: czytanie zbyt wielu grup jest jak picie z węża strażackiego! :-) 33..11.. GGrruuppyy ddyysskkuussyyjjnnee Pomoc w uzyskaniu dostępu do grup dyskusyjnych leży poza zakresem tego dokumentu. Wskazówki na temat ściągania i uczestnictwa w tych grupach bezpośrednio z Linuksa znajdziesz w innych tekstach JTZ. Jeśli jeszcze nigdy nie używałeś grup dyskusyjnych powinieneś szczególnie uważnie przeczytać informacje wprowadzające. _U_S_E_N_E_T to cała odrębna kultura. Nawet jeśli na początku wyda ci się chaotyczny, istnieją rządzące nim reguły. Pamiętaj, żeby przed wysłaniem swojego pierwszego listu do danej grupy poprzyglądać się jej przez jakiś czas. Najważniejszą sprawą jest zwrócenie uwagi na listy zatytułowane _F_r_e_q_u_e_n_t_l_y _A_s_k_e_d _Q_u_e_s_t_i_o_n_s, _F_A_Q, czy _N_a_j_c_z_ę_ś_c_i_e_j _Z_a_d_a_w_a_n_e _P_y_t_a_n_i_a. FAQ pozwolą ci zapoznać się z charakterem grupy, oraz prawdopodobnie rozwiążą Twój problem. Czytaj je! Zadając po raz setny typowe pytanie wyrobisz sobie tylko negatywną opinię (i -- być może -- dostaniesz się do czyichś filtrów). Dokumenty FAQ są zazwyczaj wysyłane regularnie, jeśli jednak nie możesz któregoś z nich odnaleźć, poszukaj go w głównym archiwum FAQ <ftp://rtfm.mit.edu> w MIT. FAQ dostępne są również w postaci stron WWW <http://www.faqs.org>. Obok użytecznych informacji w grupach dyskusyjnych napotkasz też szum informacyjny, spam i dyskusje nie na temat. Oznacza to, że będziesz potrzebował czytnika umożliwiającego odsianie niechcianych listów. Zapewniają to czytniki mające tzw. mordplik (killfile). Odpowiednio skonfigurowany czytnik odfiltruje niechciane wiadomości i zaznaczy interesujące. Poprawia to ogólny stosunek ilości informacji do ilości szumu i pozwala skoncentrować się na sprawach istotnych. Pamiętaj jednak, że działa to w obie strony: jeśli będziesz zaśmiecał USENET, zostaniesz odfiltrowany, i, gdy znajdziesz się w potrzebie, nikt nie zobaczy Twojego pytania. Do rzeczy -- oto lista użytecznych grup dyskusyjnych: ˇ ogłoszenia <news:comp.os.linux.announce> ˇ odpowiedzi, JTZ, FAQ, itd. <news:comp.os.linux.answers> ˇ rozwój aplikacji <news:comp.os.linux.development.apps> ˇ rozwój systemu <news:comp.os.linux.development.sys> ˇ sprzęt <news:comp.os.linux.hardware> ˇ różne <news:comp.os.linux.misc> ˇ sieć <news:comp.os.linux.networking> ˇ konfigurowanie Linuksa <news:comp.os.linux.setup> ˇ X11 na Linuksie <news:comp.os.linux.x> Grupy związane z Linuksem znajdują się też w wielu hierarchiach narodowych. Przykładem może być jedna z polskich grup o Linuksie <news:pl.comp.os.linux>. Jeśli masz kłopoty z odnalezieniem swoich narodowych lub lokalnych grup, pomocy szukaj w Deja <http://www.deja.com>. 33..22.. LLiissttyy ddyysskkuussyyjjnnee W przeciwieństwie do grup dyskusyjnych listy dyskusyjne są scentralizowane. Oznacza to, że listy wysłane przez danego użytkownika na adres serwera rozsyłane są dalej do innych uczestników listy. Zazwyczaj nie otrzymuje się wielkiej ilości wiadomości, a poziom informacji niepożądanej jest niski. Wypowiedzi odbiegające od tematu zawsze budzą negatywne reakcje i, co jest równie poważną konsekwencją, mogą spowodować opóźnienie realizacji projektu, któremu poświęcona jest lista. Po zasubskrybowaniu danej listy zazwyczaj otrzymuje się powitalny list opisujący tematykę forum -- należy uważnie go przeczytać. Istnieje wiele programów obsługujących listy dyskusyjne. Warto znać rozpoznawane przez nie polecenia. Najpopularniejszym z tych programów jest działający między innymi na serwerze vger.rutgers.edu <mailto:majordomo@vger.rutgers.edu> _M_a_j_o_r_d_o_m_o. Sprawdź, jak to działa: wyślij tam list o treści help. Jeśli wyślesz list z poleceniem, którego program nie zrozumie, również dostaniesz informacje o obsłudze. Jeśli zamiast help wyślesz polecenie lists, otrzymasz spis wszystkich list działających na serwerze (może być tego całkiem sporo!). Listy dyskusyjne działają zazwyczaj pod kilkoma adresami. Jeden z nich służy do wysyłania poleceń takich jak subscribe czy unsubscribe, a inny do uczestnictwa w dyskusjach -- najczęściej z tego właśnie adresu otrzymujesz wiadomości, które ludzie wysyłają na listę. Na przykład wysłanie polecenia subscribe na adres corned-beef- requests@somelistserver.org zapisze Cię na listę o adresie corned- beef-list@somelistserver.org aż do chwili, kiedy zdecydujesz się wypisać. Jeszcze raz: wysłanie listu o treści help lub czymś niezrozumiałym dla serwera spowoduje otrzymanie listu z pomocą. Korzystając z list dyskusyjnych pamiętaj o kilku zasadach: ˇ Nie wysyłaj poleceń subscribe itp. na samą listę, lecz na adres serwera. W przeciwnym razie nie wypadniesz najlepiej i zdenerwujesz mnóstwo osób. Być może na listę zapisanych jest tysiące ludzi -- pomyłka taka i związane z nią narzekanie może wygenerować mnóstwo niepotrzebnego szumu w sieci. ˇ Po zasubskrybowaniu danej listy automatycznie otrzymasz list zawierający informacje na jej temat. Przeczytaj ten list uważnie -- prawdopodobnie zawierać będzie odpowiedzi na wiele wstępnych pytań. ˇ Nie sprzęgaj ze sobą list i grup dyskusyjnych nie upewniwszy się uprzednio, że uczestnicy tego chcą. Sytuacje takie mogą spowodować pętle, pojawić się też może spam. Jak już wspomniano vger.rutgers.edu jest jednym z głównych serwerów list dyskusyjnych. Oto skrócony spis list dostępnych dla społeczności Linuksa: ˇ linux-8086 (Linux na procesorach Intel 8086) ˇ linux-admin (Administrowanie systemem) ˇ linux-alpha (Linux na procesorze Alpha) ˇ linux-apps (Oprogramowanie) ˇ linux-arm (Linux na procesorze Arm) ˇ linux-bbs (Linuksowe BBS-y) ˇ linux-c-programming (Programowanie w C pod Linuksem) ˇ linux-config (Konfiguracja) ˇ linux-console (Konsola) ˇ linux-diald (Demon odp. za łączenie na żądanie) ˇ linux-doc (Dokumentacja Linuksa) ˇ linux-fido (Linuksowa sieć fido) ˇ linux-fsf (Linux i Free Software Foundation) ˇ linux-ftp (FTP pod Linuksem) ˇ linux-gcc (Kompilator C) ˇ linux-gcc-digest (Zbiór wiadomości z powyższej grupy) ˇ linux-hams (Radio amatorskie) ˇ linux-hppa (Linux na procesorze HP Precision Architecture) ˇ linux-ibcs2 (Standard zgodności binarnej firmy Intel) ˇ linux-ipx (Linux i protokół sieciowy Novella IPX) ˇ linux-isdn (Linux i ISDN) ˇ linux-japanese (Linux i rozszerzenia do pracy w jęz. japońskim) ˇ linux-kernel (Jądro Linuksa) ˇ linux-kernel-announce (Jądro Linuksa -- ogłoszenia) ˇ linux-kernel-digest (Zbiór wiadomości z powyższej grupy) ˇ linux-kernel-patch (Łaty na jądro Linuksa) ˇ linux-laptop (Linux na laptopach) ˇ linux-linuxss ˇ linux-lugnuts (Grupy Użytkowników Linuksa) ˇ linux-mca (Linux i IBM-owska architektura mikrokanału) ˇ linux-mips (Linux na procesorze MIPS) ˇ linux-msdos (Linux i MSDOS) ˇ linux-msdos-devel (jw., rozwój) ˇ linux-msdos-digest (Zbiór wiadomości z powyższej grupy) ˇ linux-net (Sieć w Linuksie) ˇ linux-new-lists (Nowe listy dyskusyjne o Linuksie) ˇ linux-newbie (Linux dla początkujących) ˇ linux-newbiew ˇ linux-nys ˇ linux-oasg ˇ linux-oi ˇ linux-opengl (Linux i graficzny system OpenGL) ˇ linux-pkg ˇ linux-ppp (Protokół PPP w Linuksie) ˇ linux-pro ˇ linux-qag ˇ linux-raid (Linux i RAID) ˇ linux-scsi (Linux i SCSI) ˇ linux-serial (Linux i interfejs szeregowy) ˇ linux-seyon (Terminal) ˇ linux-smp (Wieloprzetwarzanie symetryczne) ˇ linux-sound ˇ linux-standards ˇ linux-svgalib (Linux i biblioteka SVGA) ˇ linux-tape (Linux i pamięć na taśmach) ˇ linux-term (Programy komunikacyjne Linuksa) ˇ linux-userfs (System plików definiowany przez użytkownika) ˇ linux-word ˇ linux-x11 (Linux i X-Window System, wersja 11) ˇ linux-x25 (Linux i protokół sieciowy X25) ˇ sparclinux (Linux na procesorze SPARC) ˇ ultralinux (Linux na procesorze Ultra-SPARC) Oczywiście na tym serwerze znajduje się również dużo innych list. Ponieważ ich ilość stale się zmienia, nie ma sensu wymieniać tu ich wszystkich. Można jednak zajrzeć na stronę zawierającą spis list dyskusyjnych <http://oslab.snu.ac.kr/~djshin/linux/mail- list/index.shtml> o tematyce interesującej użytkowników Linuksa. Na stronie tej można również w prosty sposób bezpośrednio zapisać/wypisać się z różnych list. Istnieje również strona z długim spisem list dyskusyjnych <http://paml.net/> o tematyce nie ograniczającej się do Linuksa. 33..33.. MMaaggaazzyynnyy Wiele osób jest rozczarowanych brakiem informacji o Linuksie w prasie. Jest to prawdopodobnie spowodowane tym, że wiele komercyjnych produktów nie wytrzymałoby porównania z Linuksem, a takiej sytuacji nie wytrzymaliby z kolei reklamodawcy. Istnieje na szczęście _L_i_n_u_x _J_o_u_r_n_a_l -- magazyn poświęcony tylko Linuksowi. Spis treści aktualnego numeru i informacje na temat jego subskrypcji znajdują się na stronie domowej SSC <http://www.ssc.com>. Innym komercyjnym pismem jest Linux Magazine <http://www.linux- mag.com/>, również umieszczający w sieci spis treści i fragmenty tekstów. Także Unix Review <http://www.unixreview.com/> (d. Performance Computing) poświęca sporo miejsca Linuksowi. Istnieją również popularne magazyny elektroniczne: ˇ Linux Gazette <http://www.linuxgazette.com> ˇ Linux Focus <http://www.linuxfocus.org> (dostępny w kilku językach) ˇ Linux Research <http://www.linuxresearch.de/> ˇ Linux Today <http://linuxtoday.com/> ˇ Linux News <http://www.linuxnews.com/> ˇ Linux Netmag <http://www.linuxnetmag.com> (po angielsku) ˇ Linux Netmag <http://www.linuxnetmag.com/de> (po niemiecku) ˇ Penguin Magazine <http://www.penguinmagazine.com/> oraz prawdopodobnie kilka innych; nowe pojawiają się dość często. W LinuxHQ <http://www.linuxhq.com> sprawdzić można aktualną listę dostępnych serwisów informacyjnych. Jak grzyby po deszczu pojawiają się strony WWW z dosłownie codziennie uaktualnianymi wiadomościami na temat Linuksa. Wiele z nich odznacza się całkiem profesjonalnym układem graficznym i doborem prezentowanego materiału. Jednym z najważniejszych tego typu serwisów jest oferujący codzienne wiadomości Freshmeat <http://freshmeat.net>. Dla osób nie mogących pozwolić sobie na śledzenie wydarzeń w sieci z godziny na godzinę, a chcących mimo wszystko trzymać rękę na pulsie, przeznaczony jest serwis Linux Weekly News <http://lwn.net> (Linux - Wiadomości Cotygodniowe). Serwis ten podaje ważne wiadomości, włączając w to ostrzeżenia na temat bezpieczeńswa oraz ogłoszenia o nowym i uaktualnionym oprogramowaniu. Pod adresem Linux.com <http://linux.com> znajdziesz odnośniki do kanałów IRC. Istnieje również pewna ilość godnych polecenia stron poświęconych głównie sprzętowi. Są to m. in. Toms Hardware <http://www.tomshardware.com> i Anandtech <http://www.Anandtech.com>, w których znajdują się testy wszelakiego sprzętu, oraz Storage review <http://www.storagereview.com>, specjalizująca się w testach dysków, streamerów i innych pamięci masowych. 44.. SSppoottkkaanniiaa Linux stworzony został dzięki połączonym (głównie za pomocą Internetu) siłom ludzi na całym świecie. Istnieje jednak również możliwość spotkań twarzą w twarz w LUGach -- Grupach Użytkowników Linuksa. Przeszukaj ogłaszane regularnie listy tych grup -- jedna z nich może znajdować się całkiem niedaleko! Konferencje, spotkania, copy-parties i tworzenie nowych grup ogłaszane są regularnie w grupach dyskusyjnych <news:comp.os.linux.announce>. Tego typu wydarzenia są doskonałą okazją do zorientowania się, co się dzieje w świecie Linuksa, oraz uzyskania pomocy. 55.. PPoosszzuukkiiwwaanniiee iinnffoorrmmaaccjjii Konkretnej informacji szukać można na wiele sposobów. Pamiętaj, że zawsze możesz użyć wyszukiwarek internetowych, i że niektóre z nich, np. ˇ Altavista <http://www.altavista.com> ˇ Excite <http://www.excite.com> ˇ Hotbot <http://hotbot.lycos.com> przeszukują również grupy dyskusyjne. Przeszukiwarek jest wiele, jednak różnią się one zarówno wielkością bazy, jak i metodami oceny związku zawartości stron z zapytaniem. Jeśli szukasz dużych, znanych stron, użyj Google <http://www.google.com>, nadaje on bowiem stronom punkty na podstawie umieszczonych do nich odnośników na innych stronach. Ludzie często umieszczają odnośniki do stron, które uważają za wartościowe; Google opiera się na ich opinii. Serwisowi Google wyczerpujące zindeksowanie strony zabiera trochę czasu, korzystanie więc z jego usług przy szukaniu najnowszych lub nieco nietypowych wiadomości trochę mija się z celem. W takich przypadkach polecam albo bardzo szybki i o szerokim zasięgu AllTheWeb <http://www.alltheweb.com>, albo serwisy, które przesyłają twoje zapytanie do szeregu przeszukiwarek, zbierają, porównują, oceniają i przedstawiają ci wyniki poszukiwania. Mój ulubiony serwis tego typu to Go2Net <http://www.go2net.com> (d. MetaCrawler). Wymagania stawiane wyszukiwarkom są różne, a serwisy te nieustannie podnoszą swój poziom -- musisz więc trochę sam poeksperymentować. Żadna z wyszukiwarek nie jest idealna, i -- ponieważ mniej niż 10% istniejących stron jest w ogóle zindeksowanych -- próbuj kilku wyszukiwarek, jeśli praca z jedną nie przyniesie efektów. Pamiętaj również o Deja <http://www.deja.com> -- serwisie wyszukiwawczym skupiającym się konkretnie na grupach dyskusyjnych. Zarchiwizowane są tam artykuły od roku 1995 wzwyż. Coraz częściej używamy stron WWW. Pamiętaj jednak, że to nie wszystko. Całe mnóstwo informacji dostępnych jest na rozsianych po świecie serwerach ftp. Niektóre z wyszukiwarek internetowych indeksują te zasoby, ale narzędziem dedykowanym konkretnie temu zadaniu są serwery archie. Są to systemy regularnie przeszukujące główne serwery ftp i gromadzące nazwy znajdujących się na nich plików. Z serwerami archie połączyć się można na wiele sposobów, np. za pomocą znajdujących się w każdym dobrze utrzymanym systemie Linuksowym klientów archie lub, w wersji dla X11, xarchie. Jeśli jest to niemożliwe, zawsze można połączyć się z serwerem archie za pomocą telnetu do jednego z podanych niżej serwerów. ˇ Australia <telnet://archie.au> ˇ Austria <telnet://archie.univie.ac.at> ˇ Belgia <telnet://archie.belnet.be> ˇ Finlandia <telnet://archie.funet.fi> ˇ Niemcy <telnet://archie.th-darmstadt.de> ˇ Korea <telnet://archie.kornet.nm.kr> ˇ Włochy <telnet://archie.unipi.it> ˇ Japonia <telnet://archie.kuis.kyoto-u.ac.jp> ˇ Polska <telnet://archie.icm.edu.pl> ˇ Szwecja <telnet://archie.luth.se> ˇ Hiszpania <telnet://archie.rediris.es> ˇ Wielka Brytania <telnet://archie.doc.ic.ac.uk> ˇ Stany Zjednoczone <telnet://archie.bunyip.com> ˇ Stany Zjednoczone <telnet://archie.internic.net> Naturalnie powinieneś używać najbliższego z serwerów. Aby przejrzeć ich aktualną listę należy uruchomić klienta archie bez podawania argumentów, albo, jeśli używasz telnetu, uzyskać tę informację z serwera. Zawsze dostępna jest pomoc. Niestety nie wszystkie serwery współpracują ze sobą, być może więc będziesz zmuszony poszukać kilkakrotnie zanim natrafisz na to, czego szukasz. Ostatnio w sieci pojawił się prostszy w obsłudze serwer ftp <http://ftpsearch.lycos.com>. Dostępna jest możliwość wyszukiwania o wielu opcjach i interfejsie nawiązującym do najlepszych uniksowych tradycji. Większość z powyższych serwisów oferuje informacje na temat technik wyszukiwania. Zawsze opłaci się zainwestować kilka chwil na zapoznanie się z instrukcjami -- może to znacznie skrócić czas zużyty na Twoje poszukiwania. Jeżeli nie masz dostępu do WWW, ale możesz używać poczty elektronicznej, powinieneś przeczytać FAQ _,_,_D_o_s_t_ę_p _p_r_z_e_z _p_o_c_z_t_ę_'_'. Aby uzyskać ten dokument należy wysłać do serwera dla USA, Kanady i Płd. Ameryki <mailto:mail-server@rtfm.mit.edu> list o następującej treści: send usenet/news.answers/internet-services/access-via-email Można posłużyć się również serwerem dla Europy i Azji <mailto:mailbase@mailbase.ac.uk>. W takim przypadku treść listu powinna wyglądać tak: send lis-iis e-access-inet.txt Innym rozwiązaniem jest przeszukanie lokalnego katalogu z zawartością grup dyskusyjnych ("spoola" -- jeśli go masz): zajrzyj do grupy news.answers. Wreszcie jeśli chcesz skontaktować się z konkretną osobą, na przykład z autorem jakiegoś programu, zajrzyj do dokumentacji owego programu w katalogu /usr/doc/. W większości przypadków znajdziesz tam adres e- mail autora. Jeśli nie, zawsze możesz szukać pomocy w FAQ na temat znajdowania adresów e-mail <http://www.qucis.queensu.ca/FAQs/email/finding.html>. 66.. PPooddssuummoowwaanniiee Szybkie i skuteczne wyszukiwanie informacji jest bardziej sztuką niż nauką. Nie poruszyliśmy tu istotnego zagadnienia: jak ocenić rzeczywistą _j_a_k_o_ś_ć uzyskanej informacji? Problem ten leży poza zakresem tematycznym tego dokumentu, co nie znaczy, że nie należy o nim pamiętać. _Z_a_w_s_z_e przynajmniej zwracaj uwagę, czy odpowiedź na Twoje zapytanie jest aktualna. Podstawową sprawą jest ocena wiarygodności informacji; pozwoli to uniknąć sprowadzających na manowce lub złośliwych porad. Zadziwiająco wiele osób podaje "metody" takie jak rm -rf / jako rozwiązanie danego problemu. Niektórzy od razu zorientują się, że to głupi dowcip, ale inni mogą zniszczyć sobie system. Na wszelki więc wypadek, zanim zastosujesz znalezioną informację, sprawdź poniższe punkty: ˇ Czy dokument jest podpisany? Ludzie poważnie traktujący to co piszą zazwyczaj nie są anonimami. ˇ Czy w tekście podana jest data? Dokumenty ewoluują wraz z rozwijającą się technologią. Posłuż się internetowymi wyszukiwarkami do upewnienia się, że czytasz najnowszą wersję. ˇ Czy są jakieś odpowiedzi na list, który czytasz? Sprawdź to! W przeciwnym przypadku możesz przeoczyć ostrzeżenie lub poprawkę. Jeśli będziesz o tym pamiętał, nie powinieneś wpaść w jedną z wielu sieciowych pułapek, takich jak prośba o pocztówki dla chorego Craiga Shergolda, rozmaite łańcuszki i piramidy listowe, czy -- ostatnio -- konie trojańskie próbujące wmanewrować Cię w wysłanie w świat własnego hasła. Istnieje pewna ilość dokumentów traktujących o bardziej poważnych metodach wyszukiwania informacji. Jeśli jesteś zainteresowany tematem, zacznij tutaj <http://cn.net.au>. Nie zapominaj też o zawierających dokumentację do Linuksa stronach Linux Documentation Project <http://www.linuxdoc.org> (w polskiej wersji: JTZ <http://www.jtz.org.pl> -- przyp. tłum.). Regularnie, wraz z rozwojem systemu, pojawiają się tam nowe dokumenty i uaktualnienia istniejących. Z czyjejś sygnaturki: _B_e _a_l_e_r_t_! _T_h_e _w_o_r_l_d _n_e_e_d_s _m_o_r_e _l_e_r_t_s_. 77.. OOdd ttłłuummaacczzaa Oryginał tego dokumentu: How to stay updated <http://www.nyx.net/~sgjoen/updated.html>. Tłumaczenia pozostałych dokumentów HOWTO na język polski: <http://www.jtz.org.pl>. Copyright for the translation: (c) 1999, 2000, 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Upgrade.pl.txt����������������������������������������������������0100664�0001750�0001750�00000047315�07104371340�020100� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Jak uaktualnić/zmienić swoją dystrybucję Linux-a. Greg Louis, glouis@dynamicro.on.ca v1.11, 6 Czerwca 1996. WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.02, 26 Lipca 1997 Wskazówki jak przechodzić z jednej dystrybucji Linux-a na inną. Doku­ ment ten został napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/>. ______________________________________________________________________ Spis treści 1. Prawa autorskie i zrzeczenie (disclaimer). 2. Wprowadzenie. 2.1 Jak uśmiercić i przywrócić do życia twojego Linux-a! 2.2 Dlaczego ktoś chciałby w ogóle to robić ? 2.3 Czy musisz "niszczyć i ponownie instalować" ? 2.4 Jak długo to będzie trwało ? 3. Sam proces uaktualnienia. 3.1 Zapisuj wszystko co robisz. 3.2 Zrób pełne archiwum aktualnego systemu. 3.3 Zarchiwizuj /etc wraz z podkatalogami na jednej lub więcej dyskietkach. 3.4 Utwórz osobne archiwa dla każdej grupy plików, które chcesz zachować. 3.5 Przygotuj dyskietki "root" i "boot" do nowej instalacji. 3.6 Sformatuj dyskietki na tymczasowe jądro i na końcową wersję. 3.7 Zablokuj logowanie się i zarchiwizuj katalogi /root i /home. 3.8 Zrestartuj komputer z nowych dyskietek "boot" i "root". 3.9 Skasuj partycje Linux-owe fdiskiem i stwórz je ponownie. 3.10 Uruchom nową instalację. 3.11 Wyedytuj /etc/fstab po wystartowaniu nowego systemu. 3.12 Odtwórz pliki konfiguracyjne do katalogu /etc i jego podkatalogów. 3.13 Skonfiguruj i skompiluj jądro. 3.14 Odtwórz archiwa, które wcześniej zrobiłeś. 3.15 Sprawdź bezpieczeństwo. 3.16 Odblokuj logowanie się. 3.17 Przepraszam, ale jeszcze raz: 3.18 Podziękowania. 4. Od tłumacza. ______________________________________________________________________ 11.. PPrraawwaa aauuttoorrsskkiiee ii zzrrzzeecczzeenniiee ((ddiissccllaaiimmeerr)).. Procedura, którą dokument ten próbuje opisać jest wysoce niebezpieczna dla twoich programów i danych zapisanych na dysku. Wykonujesz to wszystko TYLKO I WYŁĄCZNIE na własne ryzyko. Opisane tutaj kroki działały u autora; nie ma żadnej gwarancji, że będą one działać u ciebie ani że postępując zgodnie z nimi nie uszkodzisz sobie programów czy danych zawartch na dysku. Jesteś zdany całkowicie na siebie podczas robienia użytku z podanych tu procedur i autor nie jest odpowiedzialny za jakiekolwiek uszkodzenia czy niewygody wynikłe z ich użycia. Prawa autorskie do tego dokumentu należą do Dynamicro Consulting Limited i jest on wydany na podstawie licencji GNU. Ogólnie oznacza to, że możesz go kopiować i modyfikować, ale nie możesz zabraniać innym robienia tego samego. Komentarze i pytania proszę kierować do autora. Szczególnie mile widziane są opisy udanych uaktualnień złożonych systemów, które zostaną wykorzystane do przyszłych wersji. Zmiany od wersji 1.1 ˇ Dodałem tę sekcję historyczną. ˇ Dodałem sugestię Zoltán Hidvégi odnośnie _m_t_i_m_e _i _c_t_i_m_e. Dzięki Zoltán ! ˇ Dodałem sekcję Podziękowania. 22.. WWpprroowwaaddzzeenniiee.. 22..11.. JJaakk uuśśmmiieerrcciićć ii pprrzzyywwrróócciićć ddoo żżyycciiaa ttwwoojjeeggoo LLiinnuuxx--aa!! Celem tego dokumentu jest zaoferowanie wskazówek, które pomogą ci w niszczeniu i ponownej instalacji twojego Linux-a. Nie jest to żadna głupko-odporna książka kucharska; ale mam nadzieję, że posłuży jako pewnego rodzaju wykaz tego o czym musisz pomyśleć, i wykaz kolejności w jakiej musisz zrobić różne rzeczy. Jeśli ktoś napisałby takie coś zanim dokonałem swojego pierwszego uaktulanienia, byłoby to dla mnie bardzo pomocne. Tak więc mam nadzieję, że będzie to pomocne dla ciebie, jeśli masz jakiegoś Linux-a do przerobienia. Ale nie bierz tego za świętą prawdę: twoja droga do przebycia będzie prawie na pewno się różniła od mojej. Nawet nazwy katalogów z tego dokumentu mogą być różne od tych, które ty będziesz musiał użyć; na przykład niektórzy mają /usr/home zamiast /home; inni nazywają to /u, a niektórzy (brrr) to nawet umieszczają swoich użytkowników bezpośrednio w /usr ! Nie można odnieść się dokładnie do twojego systemu także użyłem tu nazw, które wystepowały u mnie. Zauważysz także, że używam dystrybucji Slackware oraz że zakładam, że masz wystarczająco dużo RAM-u i miejsca na dysku, żeby skopiować źródła do jądra na dysk i zrobić swoje jądro. Jeśli twój system jest inny, niektóre z moich zaleceń nie będą pasowały; ale mam nadzieję, że generalnie będziesz się mógł w dalszym ciągu opierać o ten dokument w swoim projekcie przebudowy. 22..22.. DDllaacczzeeggoo kkttoośś cchhcciiaałłbbyy ww ooggóóllee ttoo rroobbiićć ?? Dobre pytanie ! Jeśli można tego uniknąć, to nie rób tego ! (Jest to najprostsza najważniejsza rekomendacja w tym przewodniku !!!) Ale przychodzi taki czas, że po prostu musisz. Na przykład: Zainstalowałem sobie dysk 4GB i okazało się, że mój Slackware 2.0 biedaczek nie wiedział, że dysk może mieć więcej jak 2GB i poczuł się bardzo zawstydzony. Tak więc musiałem uaktualnić go do wtedy-świeżej wersji 2.3. Operacja ta była dla mnie ciężkim przeżyciem, i jest jednym z powodów, dla których piszę te uwagi. Zrobiłem prawie wszystko źle i tylko szczęście i fakt, że miałem obok drugiego chodzącego Linux-a uratowało mnie od katastrofy. Jako inny przykład mogę podać, że nie mogłem skompilować działającego jądra "a.out" z serii 1.3, używając Slackware 2.3 spoza komputera, który przedtem spartaczyłem. Wziąłem się w garść, kupiłem Slackware 3.0 na CD-ROM-ie i przeszedłem na ELF-a. Tym razem ponowna instalacja poszła lepiej, po części dzięki poprzedniemu gorzkiemu doświadczeniu, które posłużyło jako źródło większości pomysłów, które wam tutaj oferuję. 22..33.. CCzzyy mmuussiisszz ""nniisszzcczzyyćć ii ppoonnoowwnniiee iinnssttaalloowwaaćć"" ?? Jest bezpieczniej. Jeśli zainstalujesz nową wersję dystrybucji na starszą, to będziesz miał mieszaninę starych i nowych binariów, starych i nowych plików konfiguracyjnych i nie będzie to zbyt ciekawe miejsce do administrowania. Wyczyszczenie systemu i ponowna instalacją tego co rzeczywiście chcesz mieć, jest drastycznym lecz efektywnym sposobem na osiągnięcie przejrzystego i dobrze działającego systemu. (Oczywiście mówimy tu o instalacji kompletnie nowej dystrybucji a nie o uaktulanieniu dwóch pakietów ! Aby uniknąć całkowitej instalacji nowego systemu najlepiej w miarę pojawiania się nowych wersji konkretnych pakietów uaktualniać je -- szczególnie chodzi tu o _g_c_c i jego biblioteki oraz _b_i_n_u_t_i_l_s. Jeśli potrafisz w ten sposób utrzymać w miarę bieżące wersje pakietów, to nie potrzebujesz całkowitego uaktualnienia.) Jak pisze Patrick Volkerding (on także zaleca procedurę z kompletnym wyczyszczeniem systemu), instalacja systemu ELF na systemie "a.out" jest przepisem na katastrofę; bo jeżeli wiedziałbyś dostatecznie duży, żeby spróbować, to nie czytałbyś tego dokumentu ! Chociaż nawet bez tych komplikacji lepiej, żebyś zaczął zupełnie od nowa. 22..44.. JJaakk ddłłuuggoo ttoo bbęęddzziiee ttrrwwaałłoo ?? To oczywiście zależy od tego, jak złożony jest twój system. Ale oceniłem, że na udane uaktualnienie (to drugie - nie pytaj ! ;) ) poświęciłem około 10 godzin na robienie archiwów, 6 godzin na przebudowanie systemu spowrotem do momentu, w którym mogłem się zalogować a następne pół dnia czy coś koło tego na odtwarzanie niekrytycznych danych. Z biegiem czasu odkrywam jeszcze małe szczegóły, które nie są do końca takie jakie chciałem -- naprawiam je wraz z odkrywaniem ich -- ale generalnie 20 godzin powinno wystarczyć na sensowną odbudowę systemu. Może mniej jeśli instalujesz z dysku (ja używałem CD-ROM-u), albo więcej jeśli musisz instalować z dyskietek. Może mniej jeśli masz szybkie Pentium - więcej jeśli jest to 386. No, rozumiesz o co chodzi. To tyle tytułem wstępu. Oto jak się przygotować jak już się zdecydowałeś, że to zrobisz. Uzbroj się w cierpliwość i: 33.. SSaamm pprroocceess uuaakkttuuaallnniieenniiaa.. 33..11.. ZZaappiissuujj wwsszzyyssttkkoo ccoo rroobbiisszz.. Bardzo ważne jest to, żebyś zapisywał wszystko co robisz w czasie przygotowywania się i przeprowadzania uaktulanienia. Szczególnie ważna jest lista archiwów, które będziesz robił przed zniszczeniem swojego systemu. 33..22.. ZZrróóbb ppeełłnnee aarrcchhiiwwuumm aakkttuuaallnneeggoo ssyysstteemmuu.. Ogólnie mówiąc archiwa są zapisywane na mediach, które mają dostęp sekwenycyjny. Przez to, nie będziesz chciał użyć tego całkowitego archiwum do odtworzenia znaczącej ilości plików; jest tam za dużo plików, których nie chcesz. Lepiej jest stworzyć mniejsze archiwa, fragmentów dysku, które będziesz chciał później odtworzyć. Później podam listę przykładów. Dlaczego więc powinieneś zacząć od całkowitego archiwum ? Dwa podstawowe powody: 1. w przypadku całkowitego niepowodzenia instalacji nowszej wersji systemu będziesz mógł bezboleśnie powrócić do sytuacji wyjściowej. 2. niezależnie od tego jak dokładnie przygotujesz się do uaktulanienia, istnieje bardzo duża szansa, że jeden lub dwa ważne pliki zostaną przeoczone. W tym przypadku cała niewygoda w odtwarzaniu tych dwóch plików z całego archiwum będzie lepsza od obchodzenia się bez nich. Aby zaoszczędzić czas i miejsce, jeśli ciągle masz nośnik ze swoją starą dystrybucją, możesz chcieć zarchiwizować tylko te pliki, których _m_t_i_m_e czy _c_t_i_m_e jest późniejszy niż oryginalnych z instalacji. 33..33.. ZZaarrcchhiiwwiizzuujj //eettcc wwrraazz zz ppooddkkaattaallooggaammii nnaa jjeeddnneejj lluubb wwiięęcceejj ddyysskkiieettkkaacchh.. To jest inna ekstremalna sytuacja: nie będziesz odtwarzał tych plików (przynajmniej w większości); będziesz je porównywał z tymi, które powstały po nowej instalacji. Dlaczego ? Ponieważ te nowe mogą zawierać dane, których nie ma w tych starych, albo mogą wyrażać stare dane w nowy sposób. Zmiany w protokołach, nowe narzędzia albo implementacje nowych właściwości w istniejących narzędziach mogą nieść za sobą zmianę formatów plików konfiguracyjnych i startować skrypty, które znajdują się w /etc i będziesz przypuszczalnie musiał edytować te pliki konfiguracyjne, tak żeby odpowiadały nowemu formatowi. 33..44.. UUttwwóórrzz oossoobbnnee aarrcchhiiwwaa ddllaa kkaażżddeejj ggrruuppyy pplliikkóóww,, kkttóórree cchhcceesszz zzaacchhoowwaaćć.. To jest najbardziej zmienna część pracy i wszystko co mogę zrobić, żeby ci pomóc to opisanie tego co zrobiłem u siebie, w nadziei, że posłuży ci to jako przewodnik. Ogólnie powinieneś zajrzeć do każdego katalogu, który zawiera ˇ pliki, które nie są częścią standardowej instalacji albo ˇ pliki, które są nowsze od tych z nowej instalacji. i oddziel tylko te pliki, które chcesz przenieść. (Inną możliwą strategią jest zarchiwizowanie plików z _m_t_i_m_e lub _c_t_i_m_e późniejszym niż dzień instalacji i potem odtworzenie ich. Jeśli to zrobisz, to musisz mieć na uwadze, że nowa dystrybucja może i tak zawierać nowsze wersje plików, które zarchiwizowałeś.). W moim przypadku, skończyło się na archiwach następujących katalogów: ˇ /usr/lib/rn ˇ /usr/lib/smail ˇ /usr/lib/trn (reszta /usr/lib zostałaby przeinstalowana) ˇ /usr/local/src ˇ /usr/local/bin ˇ /usr/local/lib ˇ /usr/local/lpfont ˇ /usr/local/man ˇ /usr/local/sbin ˇ /usr/local/thot (w /usr/local były pliki, których niepotrzebowałem) ˇ /usr/openwin ˇ /usr/src/lilo-17 (ponieważ mój nowy Slackware miał wciąż wersję 16) ˇ /usr/src/linux-1.2.13 (ponieważ skonfigurowałbym od nowa) ˇ /usr/X11R6/lib/X11/app-defaults ˇ /usr/X11R6/lib/X11/initrc (reszta X11 miała być przeinstalowana ˇ /var/named ˇ /var/openwin ˇ /var/texfonts Mój system był względnie łatwy ponieważ nie było żadnych plików _s_p_o_o_l, o które trzebaby się troszczyć. Nie mam katalogu do _n_e_w_s_-_ó_w, a ponieważ jest tylko dwóch użytkowników, najprościej było przeczytać pocztę przed zamknięciem systemu. W innym przypadku katalog /var/spool musiałby zostać zarchiwizowany w ostatniej minucie. (No i oczywiście biblioteka _n_e_w_s_-_ó_w i katalogi lokalne !) 33..55.. PPrrzzyyggoottuujj ddyysskkiieettkkii ""rroooott"" ii ""bboooott"" ddoo nnoowweejj iinnssttaallaaccjjii.. Szczegóły na ten temat znajdziesz w podręczniku do twojej nowej dystrybucji. Od tłumacza: Możesz też zajrzeć do Bootdisk-HOWTO <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/Bootdisk-HOWTO>. 33..66.. SSffoorrmmaattuujj ddyysskkiieettkkii nnaa ttyymmcczzaassoowwee jjąąddrroo ii nnaa kkoońńccoowwąą wweerrssjjęę.. Będziesz potrzebował dwóch - po jednej na każde. Jak to wszystko jest już zrobione jesteś gotowy na WWiieellkkąą CChhwwiillęę.. Następny krok usuwa system z powierzchni ziemi. 33..77.. ZZaabbllookkuujj llooggoowwaanniiee ssiięę ii zzaarrcchhiiwwiizzuujj kkaattaallooggii //rroooott ii //hhoommee.. Jest to ostatnia rzecz jaką będziesz robił na starym systemie zanim go zniszczysz. 33..88.. ZZrreessttaarrttuujj kkoommppuutteerr zz nnoowwyycchh ddyysskkiieetteekk ""bboooott"" ii ""rroooott"".. 33..99.. SSkkaassuujj ppaarrttyyccjjee LLiinnuuxx--oowwee ffddiisskkiieemm ii ssttwwóórrzz jjee ppoonnoowwnniiee.. Podręcznik do instalacji wyjaśni jak to zrobić. W tym momencie niszczysz stary system i jesteś zależny od jakości archiwów, które zrobiłeś ! Zostałeś ostrzeżony ! 33..1100.. UUrruucchhoomm nnoowwąą iinnssttaallaaccjjęę.. Jest już kilka dokumentów, które opisują procedurę instalacji, tak więc nie będę się zagłębiał w szczegóły. Kontunuuj od tego miejsca jak już nowy system będzie startował z twardego dysku. W czasie instalacji zrób także dyskietkę, z której będziesz mógł startować ponieważ zainstalowane jądro będzie musiało zostać podmienione a wypadki się zdarzają. Upewnij się, że zainstalowałeś pakiety do rozwoju (development) i źródła do jądra. 33..1111.. WWyyeeddyyttuujj //eettcc//ffssttaabb ppoo wwyyssttaarrttoowwaanniiuu nnoowweeggoo ssyysstteemmuu.. I dodaj swoją partycję _s_w_a_p. Potem wydaj polecenie swapon -a. Nie wiem dlaczego, ale program do instalacji Slackware'u nie daje możliowści zrobienia tego jeśli twoja partycja _s_w_a_p już istnieje. Potem jak próbujesz wystartować system, skrypt _r_c_._S próbuje włączyć _s_w_a_p_-_o_w_a_n_i_e i nie znajduje partycji _s_w_a_p - ten krok naprawia ten błąd. 33..1122.. OOddttwwóórrzz pplliikkii kkoonnffiigguurraaccyyjjnnee ddoo kkaattaalloogguu //eettcc ii jjeeggoo ppooddkkaattaa­­ llooggóóww.. Jak to jest opisane powyżej, nie możesz po prostu skopiować wszystkich plików spowrotem do tego katalogu i oczekiwać, że wszystko będzie ładnie działać. Niektóre pliki, z którymi możesz tak postąpić, np. _/_e_t_c_/_X_F_8_6_C_o_n_f_i_g (o ile używasz tej samej wersji _X_F_r_e_e_8_6 i tej samej karty graficznej). Chociaż w większej części najlepiej jest użyć programu diff do porównania plików przed rozpoczęciem kopiowania. Uważaj szczególnie na znaczące zmiany w /etc/rc.d, które mogą wymagać ręcznej restabilizacji twojego systemu, zamiast kopiowania zarchiwizowanych skryptów. Jak już wszystko jest gotowe - zrestartuj system. 33..1133.. SSkkoonnffiigguurruujj ii sskkoommppiilluujj jjąąddrroo.. Nawet jeśli w ogóle nie musisz tego robić, żeby otrzymać jądro, które obsługuje twój sprzęt, opłaca się to zrobić, choćby dlatego, żeby pozbyć się kupy niepotrzebnych sterowników z jądra, które tylko je spowalniają. Szczegóły znajdziesz w Kernel-HOWTO <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html>. Najpierw zainstaluj nowe jądro na dyskietce - jeśli wszystko działa, to zainstaluj je na dysku twardym, uruchom LILO jeśli go używasz, i zrestartuj komputer. 33..1144.. OOddttwwóórrzz aarrcchhiiwwaa,, kkttóórree wwcczzeeśśnniieejj zzrroobbiiłłeeśś.. Niektóre binaria będą musiały zostać zainstalowane z katalogów źródłowych; musiałem tak zrobić z _l_i_l_o, na przykład, ponieważ miałem nowszą wersję niż w dystrybucji i nie zarchiwizowałem katalogu /sbin. Będziesz pewnie chciał sprawdzić programy z archwium czy wszystkie się poprawnie zainstalowały oraz czy wszystkie pliki konfiguracyjne i biblioteki są na miejscu. W niektórych przypadkach musisz odtworzyć programy w określonej kolejności; robiłeś notatki podczas archiwizacji, czyż nie ? ;) 33..1155.. SSpprraawwddźź bbeezzppiieecczzeeńńssttwwoo.. Sparwdź prawa dostępu do plików i katalogów, żeby dowiedzieć się czy dostęp nie jest zbyt mały lub zbyt szeroki. Dowiedziałem się np., że Slackware dąży do bardziej otwartego środowiska niż ja lubię, więc przechodzę przez katalogi i zmieniam 755 na 711 dla plików w .../bin i podobnych rzeczy. A nawet zmieniam na 700 dla plików w /sbin. Szczególna ostrożność jest potrzebna jeśli miałeś serwer ftp - ale jeśli już go miałeś, to na pewno o tym pomyślałeś wcześniej :) 33..1166.. OOddbbllookkuujj llooggoowwaanniiee ssiięę.. System już działa. Przez następną chwilę, będą pewnie jakieś szczegóły do dopracowania; ale większość roboty jest już zrobiona. Miłej zabawy ! 33..1177.. PPrrzzeepprraasszzaamm,, aallee jjeesszzcczzee rraazz:: UUŻŻYYWWAAJJ IINNFFOORRMMAACCJJII TTUU ZZAAWWAARRTTYYCCHH NNAA WWŁŁAASSNNEE RRYYZZYYKKOO !!!!!! (Zobacz sekcję ``Prawa autorskie i zrzeczenie.'') 33..1188.. PPooddzziięękkoowwaanniiaa.. Wielkie podziękowania za wkład wniesiony do tego mini-HOWTO dla Zoltána Hidvégi. 44.. OOdd ttłłuummaacczzaa.. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl/pub/Linux/JTZ/ Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl Zmiany wprowadzone przeze mnie do tego dokumentu to polskie odnośniki do serwerów ftp i WWW oraz informacja o Bootdisk-HOWTO. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Visual-Bell.pl.txt������������������������������������������������0100664�0001750�0001750�00000026466�07457640740�020652� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ AAllaarrmm wwiizzuuaallnnyy ((mmaałłee JJTTZZ)) Alessandro Rubini, rubini@linux.it v2.3, 3 grudnia 2001 Wersja polska: Tomasz 'tsca' Sienicki, tsca@edb.dk v1.01, 10 grudnia 2001 Jak uciszyć komputer: alarm wizualny zamiast dźwiękowego. ______________________________________________________________________ Spis treści 1. Licencja oraz prawa autorskie 2. Wstęp 3. Głośniczkotomia 4. Konfiguracja dźwięku na poszczególnych konsolach 5. Podstawowe wiadomości o plikach termcap i terminfo/* 6. Definiowanie alarmu wizualnego 7. Wyłączenie alarmu dźwiękowego na konsoli tekstowej 8. Uciszanie aplikacji 9. Ciemna strona zagadnienia 10. Od tłumacza ______________________________________________________________________ 11.. LLiicceennccjjaa oorraazz pprraawwaa aauuttoorrsskkiiee Copyright (c) 1997, Alessandro Rubini Niniejszy dokument rozpowszechniany jest na warunkach określonych w licencji _G_N_U _F_r_e_e _D_o_c_u_m_e_n_t_a_t_i_o_n _L_i_c_e_n_s_e. Jeśli nie otrzymałeś treści licencji FDL z tym dokumentem, zapoznać się z nią możesz pod adresem <http://www.fsf.org/licenses/fdl.html>. 22.. WWssttęępp Konsola Linuksa wydaje sygnał dźwiękowy (brzęczyk) po natrafieniu na znak BEL (kod ascii 7). Jest to rozsądnie wybrana standardowa reakcja, jednak wielu użytkowników nie lubi, kiedy ich komputer wydaje dźwięki. Niniejszy dokument opisuje sposób takiej konfiguracji programów, aby nie wysyłały one kodu BEL oraz takiej konfiguracji jądra i X, aby komputer milczał nawet wtedy, gdy kod BEL zostanie wysłany. Większość tekstu dotyczy konsoli, ponieważ konfiguracja serwera X w tym zakresie nie powinna powodować trudności. Według mnie temperowanie niesfornej maszyny należy rozpocząć na poziomie sprzętowym; np. w moim komputerze głośniczka _n_i_e _m_a! 33.. GGłłoośśnniicczzkkoottoommiiaa Głośniczkotomia jest najskuteczniejszym rozwiązaniem problemu alarmu dźwiękowego. Jak sama nazwa wskazuje, sposób polega na fizycznym odłączeniu lub usunięciu głośniczka. Operacja jest prosta -- można się nawet obyć bez znieczulenia. Istnieją też sposoby nieco bardziej wyrafinowane. Pecety wyposażone są zwykle w przełącznik TURBO. Podczas pracy w środowisku wielozadaniowym guziczka tego nigdy się właściwie do spowalniania procesora nie używa; nie ma takiej potrzeby nawet w przypadku gier opartych na programowych pętlach. Niestety, przyspieszyć komputera tym guziczkiem się nie da; można go za to wykorzystać do włączania/wyłączania głośniczka. Głośniczek, choć generalnie irytujący, czasem jednak bywa przydatny np. do zaanonsowania zakończenia długiej kompilacji. Aby zmienić funkcję przełącznika, po prostu odłącz go od płyty głównej i połącz szeregowo z głośniczkiem. W przypadku komputerów przenośnych (laptopów), dostęp do brzęczyka jest niestety ograniczony; brak też przełącznika, któremu możnaby podporządkować nowe zadanie. Użytkownicy takich komputerów muszą ograniczyć się do rozwiązań programowych, o czym poniżej. 44.. KKoonnffiigguurraaccjjaa ddźźwwiięękkuu nnaa ppoosszzcczzeeggóóllnnyycchh kkoonnssoollaacchh Od wersji jądra 1.3.43 wzwyż, dzięki łatce Martina Maresa na console.c, istnieje możliwość wyboru częstotliwości i długości trwania alarmu dźwiękowego. Wysyłając odpowiednie sekwencje znaków niedrukowalnych na poszczególne konsole można konsolom tym przypisać różne właściwości dźwięku (lub jego brak). Całość sprowadza się do umieszczenia poleceń konfigurujących dźwięk w pliku ~/.login lub ~/.profile. Odpowiedzialne za właściwości dźwięku kody to: ˇ ESC-[10;xx] -- określa częstotliwość dźwięku w Hertzach. Dozwolone wartości xx mieszczą się w zakresie od 21 do 32766; wynik działania wartości przekraczających te granice nie jest zdefiniowany. W przypadku braku argumentu xx ('ESC-[10]') stosowana jest wartość domyślna (750Hz) ˇ ESC-[11;xx] -- określa długość trwania dźwięku w milisekundach. Wartość domyślna (125 ms) stosowana jest w przypadku wybrania czasu przekraczającego 2 sekundy oraz jeśli argument xx nie jest podany ('ESC-[10]'). PPrrzzyykkłłaadd:: Aby ustawić częstotliwość dźwięku na 50Hz a jego długość na 1 sek, wydaj w bashu polecenie 'echo -e "\\33[10;50]\\33[11;1000]"' (argument -e oznacza 'interpretuj znaki niedrukowalne'). Odpowiednikiem tej komendy dla tcsh jest 'echo "\\033[10;50]\\033[11;1000]"'. Żadna ze znanych mi obecnie wersji polecenia setterm nie potrafi konfigurować dźwięku, niewykluczone jednak, że w przyszłości ta funkcjonalność zostanie dodana. Jeśli używasz jądra 1.3.43 lub nowszego i satysfakcjonuje cię powyższe rozwiązanie, możesz tu zakończyć czytanie. Jeśli jednak używasz starszego jądra lub chciałbyć stosować alarm wizualny zamiast dźwiękowego, czytaj dalej. 55.. PPooddssttaawwoowwee wwiiaaddoommoośśccii oo pplliikkaacchh tteerrmmccaapp ii tteerrmmiinnffoo//** Tekstowy plik /etc/termcap to baza danych o możliwościach terminali (ang. tteerrmminal ccaappablilities -- stąd nazwa). Wiele programów (np. tcsh, bash, vi i wszystkie korzystające z curses) korzysta przy przesuwaniu kursora i innych operacjach związanych z ekranem z zawartych w tym pliku informacji. Baza /etc/termcap opisuje poszczególne rodzaje terminali. Do odpowiedniej części tej bazy kieruje aplikacje zmienna środowiskowa TERM. Poszczególne możliwości terminali opisane są w termcap dwuliterowymi kodami, po których następują sekwencje znaków wymaganych do osiągnięcia danego efektu. Kolejne wpisy przedzielone są dwukropkiem (":"). Na przykład alarm dźwiękowy (kod "bl") zazwyczaj opisany jest jako "bl=^G". Wpis taki oznacza, że brzęczyk uzyskuje się sekwencją control-G (ascii BEL). Obok alarmu dźwiękowego ("bl") rozpoznawany jest również wizualny ("vb" -- visual bell), jednak zazwyczaj brakuje tego wpisu w poświęconej terminalowi "linux" części termcap. Większość nowszych aplikacji i bibliotek zamiast z termcap korzysta z bazy danych terminfo. W przeciwieństwie do termcap, termifo nie jest jednym wielkim plikiem, a katalogiem, w którym opisy poszczególnych terminali umieszczone są w osobnych plikach, a te z kolei w podkatalogach o nazwach będących kolejnymi pierwszymi literami alfabetu. Na przykład opis terminala "linux" znajdzie się w pliku /usr/lib/terminfo/l/linux (lub /usr/share/terminfo/l/linux -- przyp. tłum). Opisy terminali w terminfo są plikami binarnymi, kompiluje je się programem tic (patrz man tic). 66.. DDeeffiinniioowwaanniiee aallaarrmmuu wwiizzuuaallnneeggoo Dodanie brakującej definicji alarmu wizualnego "vb" do /etc/termcap nie jest trudne. Oto metoda Dennisa Henriksena (duke@diku.dk): należy odnaleźć sekcję "linux" (w starszych dystrybucjach sekcja ta nazywa się "console") i dodać w niej następującą linię: :vb=\E7\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E8:\ Ostatni ukośnik zapobiega złamaniu linii. Wg opisu Dennisa powyższa linia ˇ zapamiętuje pozycję kursora (na wszelki wypadek), ˇ kilkakrotnie zmienia tło konsoli (z normalnego na odwrócone i z powrotem) ˇ i umieszcza kursor w zapamiętanej pozycji. 77.. WWyyłłąącczzeenniiee aallaarrmmuu ddźźwwiięękkoowweeggoo nnaa kkoonnssoollii tteekkssttoowweejj Jeśli chcesz zmusić konsolę do używania alarmu wizualnego zamiast dźwiękowego (błysk zamiast pisku) znajdź w pliku termcap w sekcji dla twojego terminala definicję efektu "bl" i zmień ją na definicję błysku (podaną w poprzednim rozdziale). To rozwiązanie jest najwygodniejsze, jeśli nie chcesz określać osobno zachowania różnych aplikacji. Ja stosuję ten sposób na wszystkich moich komputerach z Linuksem, w których nie mogę fizycznie odłączyć głośniczka. 88.. UUcciisszzaanniiee aapplliikkaaccjjii Poniżej podaję niekompletny spis programów, które można przekonać do używania podanej w termcap lub terminfo definicji "vb" bieżącego terminala. ˇ Serwer X: konfiguracji brzęczyka dokonuje się poleceniem "xset b". Polecenie to przyjmuje trzy numeryczne argumenty: głośność, częstotliwość oraz długość. "xset -b" całkowicie wyłącza brzęczyk. Konfiguracja działa na wszystkie programy uruchomione pod X. ˇ xterm: xterm umie zinterpretować sygnał BEL zarówno jako alarm dźwiękowy, jak i wizualny. Jeśli zdecydujesz się na alarm dźwiękowy, zadziałają ustawienia "xset" (patrz punkt "Serwer X"). Alarm wizualny uzyskać można poprzez podanie opcji "-vb" przy uruchamianiu xterm-a lub zdefiniowanie zasobów "xterm*visualBell: true". Podczas działania xterma rodzaj alarmu przełączać można w menu wywoływanym przez control+lewy_przycisk_myszy. Jeśli używasz X, prawdopodobnie nie zainteresują cię poniższe informacje. ˇ tcsh (6.04 i nowsze): "set visiblebell". Instrukcję tę można umieścić w pliku .cshrc lub podać interaktywnie. Wyłączenie alarmu wizualnego: "unset visiblebell". Wyłączenie alarmu wizualnego oraz dźwiękowego: "set nobeep". ˇ bash (o ile wiem wszystkie wersje): umieść linię "set bell-style visible" w pliku ~/.bashrc. Zamiast "visible" (wizualny) możesz wpisać "audible" (dźwiękowy) lub "none" (żaden). ˇ bash (z readline, oraz inne aplikacje korzystające z readline): umieść linię "set prefer-visible-bell" w pliku ~/.inputrc. ˇ nvi i elvis: umieść linię "set flash" w pliku ~/.exrc lub interaktywnie podaj ":set flash" (pamiętaj o dwukropku). Zamiana w powyższej linii słowa "flash" na "noflash" spowoduje wyłączenie alarmu wizualnego. ˇ emacs: umieść linię "(setq visible-bell t)" w pliku ~/.emacs. Zamiana w powyższej komendzie końcowej litery "t" na słowo "nil" spowoduje wyłączenie alarmu wizualnego. ˇ less: alarm wizualny włącza się podając w linii poleceń opcję "-q", natomiast wszystkie rodzaje alarmu wyłącza się opcją "-Q". Opcje domyślne można umieścić w zmiennej środowiskowej "LESS". ˇ screen: użyj kombinacji klawiszy CtrlA-CtrlG. Zmieni to zachowanie wszystkich wirtualnych sesji. Więcej informacji na ten temat znajdziesz w podręczniku systemowym ("man screen") w sekcji "CUSTOMIZATION". 99.. CCiieemmnnaa ssttrroonnaa zzaaggaaddnniieenniiaa Niestety nie wszystkie aplikacje korzystają z informacji zawartych w bazach termcap lub terminfo. Większość małych programików ma na sztywno w kodzie C zaszyte "\a" (alarm). "\a" w ciągach znaków w plikach binarnych interpretowane jest jako ascii BEL. "Prawdziwych" aplikacji problem ten zazwyczaj nie dotyczy, ale uważaj na produkty początkujących programistów C -- najgorsi są tu studenci informatyki! Jedynym sposobem uciszenia takich programów jest głośniczkotomia lub wykorzystanie sekwencji kodów podanej przez Martina Maresa. 1100.. OOdd ttłłuummaacczzaa Wersja oryginalna dokumentu: <http://sunsite.unc.edu/LDP/>. Tłumaczenia pozostałych dokumentów HOWTO na język polski: <http://www.jtz.org.pl>. Copyright for the translation (c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Win95+Win+Linux-mini-HOWTO.pl.txt���������������������������������0100644�0001750�0001750�00000041714�07164466740�023112� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Windows 95 + Windows 3.x + Linux Howto Robert Goodwin Robert.Goodwin@mcc.ac.uk v?.?, Sierpień 1996 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk PPiieettrryykkaa lleessiioo@@pplleeaarrnn..eedduu..ppll v1.0, 13 Września 2000 Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się np. pod adresem . ______________________________________________________________________ Spis treści 1. Uwaga 2. Wprowadzenie 3. Ładowanie kilku systemów operacyjnych 4. Inne źródła informacji na ten temat 5. Po co to HOWTO 6. Wymagania 7. Z czym skończysz 8. Jak to zrobić 9. Kilka pytań i odpowiedzi 10. Od tłumacza ______________________________________________________________________ 11.. UUwwaaggaa 15 stycznia 1998 Autor nie zajmuje się już opieką nad dokumentem Win95+Win+Linux mini- HOWTO. Jeśli jesteś zainteresowany jego utrzymywaniem, skontaktuj się, proszę, ze mną, wysyłając e-mail na adres: tjbynum@metalab.unc.edu. 22.. WWpprroowwaaddzzeenniiee Pierwsza wersja tego dokumentu powstała w styczniu 1996. Od tego czasu dodałem wiele komentarzy, informacji i pytań, otrzymanych od różnych osób. Istnieje japońska wersja tego dokumentu; zobacz zbiór japońskiej dokumentacji dotyczącej Linuksa pod adresem: . Polska wersja tego dokumentu jest dostępna pod adresem: . 33.. ŁŁaaddoowwaanniiee kkiillkkuu ssyysstteemmóóww ooppeerraaccyyjjnnyycchh Jeśli chcesz mieć możliwość ładowania kilku różnych systemów operacyjnych (bez potrzeby stosowania startowych dyskietek!), musisz używać czegoś takiego, jak MMEENNEEDDŻŻEERR ŁŁAADDOOWWAANNIIAA. Windows 95 nniiee mmaa tak naprawdę menedżera ładowania. Ma, co prawda, opcje ładowania, ale w moim podręczniku piszą, że _m_e_n_e_d_ż_e_r _ł_a_d_o_w_a_n_i_a można skonfigurować tak, aby ładował dowolny system. LILO można skonfigurować tak, aby ładowało prawie każdy system. Podobnie można skonfigurować menedżery ładowania OS/2 i Windows NT. To, którego menedżera używasz, zależy od tego, czego chcesz od swojego komputera. Jeśli, na przykład, używasz menedżera ładowania OS/2, to ``ukrywa'' on ``inne'' dosowe partycje. 44.. IInnnnee źźrróóddłłaa iinnffoorrmmaaccjjii nnaa tteenn tteemmaatt Jeśli chcesz używać tylko Windows 95 i Linuksa, przeczytaj raczej Win95+Linux HOWTO. Najnowszą wersję możesz znaleźć pod adresem: . Wersja polska jest (albo wkrótce będzie :-)) dostępna pod adresem: . Windows 95 i Linux mogą być zainstalowane na jednym dysku. Reszta dokumentu opisuje, jak rozwiązać problemy z DOSem, który nie pozwala na istnienie więcej, niż JEDNEJ podstawowej partycji DOS na jednym dysku. Jeśli chcesz używać menedżera ładowania NT, zajrzyj pod adres: . Żeby dodać Linuksa (albo inny system, w tym OS/2), potrzebny jest taki fajny programik, który tworzy pliki sektorów startowych tak, aby mógł z nich korzystać menedżer ładowania NT. Informacje na ten temat możesz znaleźć pod adresem: . Możesz też wypróbować program loadlin.exe, który umożliwia ``przeładowanie'' na Linuksa po uprzednim uruchomieniu DOSa. 55.. PPoo ccoo ttoo HHOOWWTTOO Ten dokument opisuje następujące sprawy: ˇ Co zrobić, żeby Windows 3.x i Windows 95 współistniały na jednym komputerze bez problemów (i jakie to są ewentualnie problemy) ˇ Jak uniknąć kłopotów z komputerem z Windows 95, na którym można zdalnie uruchomić DOS ˇ Jak zainstalować Windows 95 i Linuksa bez potrzeby reinstalacji LILO (z tym denerwującym ładowaniem Linuksa z dyskietki) System plików Windows 95 istnieje wprawdzie na szczycie standardowego systemu DOS FAT, ale robi z nim paskudne rzeczy. Uruchom swój komputer z Windows 95 przy pomocy startowej dyskietki DOS i każ Nortonowi sprawdzić dysk, ale NNIIEE pozwól mu na dokonanie żadnych napraw, bo popsujesz ``długie'' nazwy plików. Chcą ostatnio ode mnie, żebym zajmował się obsługą aplikacji zarówno w środowisku Windows 95, jak w Windows 3.x (oba działające lokalnie lub ładowane z sieci). Opracowałem odpowiednie ustawienia opisane w tym dokumencie tak, żebym mógł robić to wszystko tylko na jednym PC. Nie pytajcie mnie, jak człowiek używający Uniksa skończył w takiej sytuacji :-) 66.. WWyymmaaggaanniiaa Jeśli umiesz grzebać się w źródłach LILO (wersja 17 albo nowsza, jak mi się zdaje), to możesz osiągnąć to wszystko z JJEEDDNNYYMM dyskiem. Działa to na zasadzie zmiany zawartości tablicy partycji podczas ładowania systemu. Jeśli nie czujesz się zbyt pewnie, to lepiej nie próbuj! W przeciwnym wypadku będziesz potrzebował DDWWÓÓCCHH dysków twardych. Wynika to z ograniczeń DOS/Windows dotyczących ładowania systemu i przypisywania liter napędów. Wierz mi, próbowałem tego z jednym dyskiem (ale nie chciałem się grzebać w źródłach LILO). 77.. ZZ cczzyymm sskkoońńcczzyysszz Parę słów o nazwach urządzeń. Widywałem systemy, w których /dev/hdc oznaczało trzeci dysk IDE (pierwszy dysk IDE na drugim kontrolerze), a /dev/hdd oznaczało czwarty dysk. Widywałem też systemy używające nazw /dev/hd1a i /dev/hd1b (nazwy partycji to /dev/hd1a3 itd.). Mój system stosuje ten drugi styl nazewnictwa, ale zmieniłem nazwy na /dev/hdc i /dev/hdd, żeby nie było niejasności. Oto krótki opis tego, co sam teraz mam. Uważaj na litery dysków, bo się zmieniają... Jeśli używasz drugiego kontrolera IDE, być może, że będziesz musiał sam utworzyć pliki w katalogu /dev. (/dev/hdc* i /dev/hdd*). Może tak być, gdy dodajesz drugi dysk twardy do komputera, w którym jest zainstalowany jeden dysk IDE i CD-ROM IDE; twój drugi dysk twardy otrzymałby nazwę /dev/hdc. Próbowałem takiego ustawienia i nie miałem żadnych problemów. W swoim komputerze mam: /dev/hda - pierwszy dysk twardy /dev/hdb - napęd CD-ROM /dev/hdc - drugi dysk twardy OOppccjjaa 11:: Po włączeniu komputera mogę pozwolić startowej pamięci ROM karty ethernetowej na zdalne załadowanie DOSu. Napęd ``C'' to pierwsza partycja DOS na PPIIEERRWWSSZZYYMM dysku IDE (w moim przypadku /dev/hda1). Napęd ``D'' to pierwsza partycja DOS na DDRRUUGGIIMM dysku IDE (w moim przypadku /dev/hdc1), a napęd ``E'' to druga partycja DOS na DDRRUUGGIIMM dysku IDE (/dev/hdc2). Napęd CD-ROM ma literę F: OOppccjjaa 22:: Pozwól LILO załadować domyślny system (Linuksa, ma się rozumieć) OOppccjjaa 33:: Podczas uruchamiania LILO włącz opcję, która u mnie nazywa się DOS. Ładuje to DOS z /dev/hda1 i, tak samo, jak w przypadku opcji 1, napęd ``C'' to /dev/hda1, ``D'' to /dev/hdc1, a ``E'' to /dev/hdc2. CD-ROM to F: OOppccjjaa 44:: Podczas uruchamiania LILO włącz opcję, która u mnie nazywa się Win95. Ładuje to Windows 95 z pierwszej partycji DOS DDRRUUGGIIEEGGOO dysku IDE (w moim przypadku /dev/hdc1). I teraz uwaga: napęd ``C'' to teraz pierwsza partycja DOS na DDRRUUGGIIMM dysku IDE (/dev/hdc1), napęd ``D'' to piersza partycja DOS na PPIIEERRWWSSZZYYMM dysku IDE (/dev/hda1), napęd ``E'' to cały czas druga partycja DOS na DDRRUUGGIIMM dysku IDE (/dev/hdc2). CD-ROM to F: Zwróć uwagę na to, że napęd C zmienia się w zależności od opcji ładowania. To znaczy, że gdy instalujesz Windows 95, to instalujesz go w katalogu C:\WINDOWS. Kiedy instalujesz Windows 3.x, to też instalujesz go w katalogu C:\WINDOWS, ale to są różne katalogi :-) Zauważ też, że trzecia partycja DOS (na której trzymam dane) to E:, niezależnie od sposobu ładowania, i że litera CD-ROMu też się nie zmienia. 88.. JJaakk ttoo zzrroobbiićć Przede wszystkim zainstaluj Linuksa, nieważne, na którym dysku. Jednakże, ponieważ będziesz używać dwóch dysków, rozsądne będzie utworzenie na każdym z nich partycji wymiany. Utwórz podstawową partycję DOS na drugim dysku. Dosowy FDISK nie pozwala, niestety, na coś takiego. Dlatego musisz użyć wersji linuksowej, żeby utworzyć partycję, ustawić jej typ (6 dla partycji DOS 16 BIT FAT > 32 MB) i ustawić ją jako aktywną. UUWWAAŻŻNNIIEE stosuj się do porad strony podręcznika man fdisk. Opisuje ona, co trzeba zrobić, aby DOS rozpoznawał partycję utworzoną w ten sposób. Trzeba zastosować polecenie dd do wyczyszczenia pierwszych 512 bajtów tej partycji. (Zasadniczo używa się polecenia ``dd if=/dev/zero of=/dev/XXXX bs=512 count=1'', gdzie XXXX to nazwa urządzenia. Musisz być jednak BBAARRDDZZOO ostrożny, ponieważ jest to doskonały sposób na zniszczenie dysku - na przykład przez wpisanie /dev/hda zamiast /dev/hda1!) Prymarną partycję DOS na pierwszym dysku twardym możesz utworzyć przy pomocy dosowego FDISKa. W ten sposób możesz też utworzyć inne potrzebne partycje dosowe. Obie partycje podstawowe musisz sformatować jako startowe partycje DOS. Użyj w tym celu poleceń FORMAT C: /S i FORMAT D: /S po załadowaniu DOSa z dyskietki. Żeby uniknąć niejasności, nadaj partycjom jednoznaczne etykiety woluminów! Zmodyfikuj plik /etc/lilo.conf tak, aby było możliwe ładowanie systemu z obu podstawowych partycji DOS. Na końcu dokumentu zamieściłem przykładowy taki plik. Zwróć uwagę na znajdującą się w nim linię ``loader''. To od ciebie zależy, gdzie zainstalujesz Windows 95, a gdzie DOS/Windows 3.x. Ja używam drugiego dysku twardego dla Windows 95, ponieważ w przypadku ładowania z sieci normalny dysk DOS ma literę ``C''. Oprócz tego (i to się przydaje), instalacja Windows 95 na drugim dysku pozwala na uniknięcie konieczności ładowania Linuksa z dyskietki ratunkowej i ponownej instalacji LILO (poniżej wyjaśniam, dlaczego miałoby się tak stać). Pamiętaj, żeby wydać polecenie /sbin/lilo, aby wprowadzić zmiany w życie. Jeśli planujesz (rozsądnie) instalację Windows 95 z CD-ROMu, będziesz musiał umieścić odpowiednie sterowniki na partycji przeznaczonej dla Windows 95, tak aby po załadowaniu z niej był dostępny napęd CD-ROM. Następnie przy użyciu LILO uruchom komputer z napędu, na którym chcesz zainstalować DOS/Windows 3.x i zainstaluj resztę DOS i Windows 3.x. Windows powinien być zainstalowany w domyślnym katalogu C:\WINDOWS. Kiedy już tak zrobisz, uruchom ponownie komputer i, używając LILO, załaduj partycję Windows 95. Przeprowadź instalację Windows 95. Instalator może zasugerować instalację Windows 95 w katalogu D:\WINDOWS, ponieważ sprawdza on komputer w poszukiwaniu istniejących wersji Windows. NNIIEE akceptuj tego - zainstaluj Windows 95 w katalogu C:\WINDOWS. A teraz najfajniejsze! Windows 95 jest raczej samolubnym systemem. Kiedy go instalujesz, zakłada on, że jest jedynym systemem operacyjnym w komputerze i zapisuje własny MBR (Master Boot Record - Główny Rekord Ładujący) na twardym dysku. To właśnie dlatego musisz ponownie instalować LILO. Jeśli natomiast zainstalowałeś Windows 95 na drugim dysku, zrobiłeś coś, czego programiści Microsoft(TM) nie przewidzieli. Na jednym komputerze, na którym przeprowadziłem taką operację, Windows 95 umieścił swój MBR na miejscu MBR DDRRUUGGIIEEGGOO dysku. Na innym komputerze w ogóle nie znalazłem na to dowodu. Praktyczny efekt jest taki, że ten ważny MBR, czyli ten na pierwszym dysku, pozostaje nienaruszony. Dzięki temu, kiedy ponownie uruchamiasz komputer, wita cię przyjazny i znajomy znak zachęty LILO. Przykładowa lista partycji: /dev/hda1 * partycja DOS (C: lub D: zależy od ładowania) /dev/hda2 partycja rozszerzona /dev/hda5 / /dev/hda6 swap /dev/hda7 /home /dev/hdc1 * partycja Windows 95 (C: lub D: zależy od ładowania) /dev/hdc2 partycja DOS (E: zawsze) /dev/hdc3 swap (Partycje oznaczone przy pomocy ** są ustawione jako startowe (czyli ``aktywne'') przez FDISK) Przykładowy plik /etc/lilo.conf: # /etc/LILO.conf install = /boot/boot.b compact delay = 20 # opcjonalne, dla systemów, które ładują się bardzo szybko #prompt # użyj zamiast delay, by wymusić reakcję na linię # zachęty ładowania #vga = normal # wymuszenie rozsądnego stanu #ramdisk = 0 # opcja dla paranoików #root = current # użyj "bieżącego" głównego systemu plików (root) boot = /dev/hda image = /boot/vmlinuz read-only label = linux other = /dev/hdc1 label = win95 loader= /boot/any_d.b other = /dev/hda1 table = /dev/hda label = dos image = /boot/vmlinuz.old label = linux.old optional read-only 99.. KKiillkkaa ppyyttaańń ii ooddppoowwiieeddzzii PP:: Czy ten schemat działa z dyskami SCSI? OO:: Podobno tak, ale sam nigdy nie próbowałem PP:: Czy ten schemat działa w przypadku, gdy Linux zajmuje cały jeden dysk, a DOS i Windows 95 znajdują się na partycjach drugiego dysku? OO:: Nie. DOS i Windows 95 muszą znajdować się na podstawowych partycjach ``DOS''. Można to obejść przez rekompilację LILO PP:: Ściągnąłem z sieci Windows 95 FAQ, w którym jest powiedziane, że można ładować zarówno DOS, jak i Windows 95. Jeśli zainstaluję Windows 3.11 w innym katalogu niż ``WINDOWS'', to podobno mogę bez problemów uruchamiać Windows 95 i Windows 3.11. Oba są na jednej partycji. OO:: Tak, można tak zrobić. Może to jednak powodować problemy. Windows 95 robi paskudne rzeczy z napędem FAT i niektóre operacje, jakie wykonujesz z poziomu starej wersji DOS i starego Windows (3.x) mogą ławo zniszczyć informację dotyczącą długich nazw plików. Tak zrobi, na przykład, defragmentacja dysku przy pomocy programu DOS/Windows 3.x. Wpędzasz się też w kłopoty, jeśli coś nie działa, bo musisz zawracać sobie głowę plikami INI obu systemów *ii* rejestrem Windows 95. PP:: Czy LBA ma znaczenie? OO:: Tak. Uff! BIOSy mniej więcej od roku 1994 wspierają LBA, aby obejść ograniczenia DOSu, które uniemożliwają mu obsługę ilości cylindrów większej, niż 1024. (Jest to opisane o wiele bardziej wyczerpująco w dokumentach PC hardware FAQ). LBA oszukuje geometrię dysku, mnożąc liczbę głowic przez 2 lub 4 (itd.), aby podzielić liczbę cylindrów przez 2 lub 4 (itd.) tak, aby była ona mniejsza od 1024. To potrafi obejść ograniczenia DOSu. Linux obsługuje liczbę cylindrów większą od 1024 (pod warunkiem, że partycja, z której ładujesz, leży w całości poniżej 1024 cylindra), potrafi też obsłużyć duże (>504MB) dyski nawet na starszych komputerach (z BIOSem sprzed 1994). Obsługuje także dyski na BIOSach wspierających LBA, niezależnie od tego, czy LBA jest włączone. Niezbędne jest, aby dla WWSSZZYYSSTTKKIICCHH systemów operacyjnych każdy dysk miał tę samą geometrię. To dlatego, że liczby w tablicy partycji to ``dostrzegane'' liczby cylindrów, a nie rzeczywiste. Tak więc włączenie w BIOSie opcji LBA spowoduje, że istniejąca zawartość dysku będzie bezużyteczna. Jeśli twój Linux nie widzi ``właściwej'' geometrii (to znaczy tej samej, którą ``widzi'' DOS), będziesz musiał do pliku /etc/lilo.conf dodać linię append=``hd=x.y.z'', gdzie x,y,z oznaczają geometrię dysku (przeczytaj odpowiednie strony man). PP:: Mój BIOS ma informacje tylko o dwóch dyskach twardych, a nie o czterech. Czy to ma znaczenie? OO:: Może! Używanie czterech dysków ze starym BIOSem pod DOSem wymaga stosowania dodatkowych sterowników. Nowsze BIOSy obsługują cztery dyski. Linux bez kłopotu obsługuje cztery dyski nawet na większości starszych BIOSów, ale jeśli umieścisz partycję DOS na trzecim dysku, będziesz miał do niej dostęp wyłącznie z poziomu Linuksa. Jest to ważne, ponieważ wiele komputerów ma dysk IDE i napęd CD-ROM IDE, a także, jeśli chcesz stosować rady z tego dokumentu, drugi dysk IDE. Jeśli ten dokument na coś ci się przydał, proszę, daj mi znać. 1100.. OOdd ttłłuummaacczzaa Tłumaczenie to jest chronione prawami autorskimi Š Leszka Pietryki. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Nie zmieniłem zasadniczej treści dokumentu. Dodałem tylko odnośniki do stron z polskimi wersjami tłumaczeń dokumentów HOWTO oraz wprowadziłem kilka nieznacznych zmian, jak na przykład tytuł pierwszej sekcji. Nie znalazłem oryginału w formacie sgml, dlatego wszystkie znaczniki powstawiałem sam. W związku z tym winę za ewentualny niewłaściwy układ dokumentu ponoszę wyłącznie ja. Jest to pierwsze HOWTO, które przetłumaczyłem, więc jest tu pewnie mnóstwo pomyłek. Będę wdzięczny za wszelkie komentarze i poprawki (no i oczywiście za pochwały ;-)). ����������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/XFree86-XInside.pl.txt��������������������������������������������0100664�0001750�0001750�00000037576�07104371340�021251� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ XFree-to-Xinside Autor: Marco Melgazzi, marco@techie.com v1.2, Maj 1997 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.0, 13 Września 1997 Jak zamienić format opisu trybów video XFree86 na XInside/XiGraphics. Dokument ten został napisany w standardzie ISO-8859-2. Jego oryginalna wersja znajduje się pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/>. 11.. WWpprroowwaaddzzeenniiee.. Wiosną 1996 widziałem wiele listów w grupie comp.os.linux.x z pytaniami o to jak przenieść tryby video z XFree86 do jednego z jego komercyjnych odpowiedników: XInside (teraz nazwanym XiGraphics, jednak w tym dokumencie używam starszej nazwy ponieważ będę się odwoływał głównie do tamtej wersji). Zanim powstała nowa wersja tego programu grzebałem trochę w tej starszej i ciągle mam tę przerobioną wersję gdzieś na moim dysku: ponieważ lubię rozwiązywać problemy postanowiłem spróbować i po kilku godzinach grzebania i obliczania powstał w miarę sensowny artykuł, który natychmiast wysłałem. Dyskusje na temat zamiany nagle zniknęły a ja otrzymałem 1 (jeden) list z podziękowaniami za artykuł, więc ponieważ może ktoś potrzebowałby tych informacji w przyszłości postanowiłem przekształcić ten artykuł w mini-HOWTO. Pozwól mi jednak najpierw coś powiedzieć: NIE pracuję dla XInside i miałem dostęp tylko do wersji 1.2 dla Linux-a. Wiem, że w dzisiejszych czasach (Maj 97) AccelX osiągnął już wersję 3.1, ale myślę, że zawarte tutaj informacje, jeśli nie dosłownie, to i tak się przydadzą. Ponieważ to HOWTO zostało napisane z pomocą dość starej wersji XInside, może się tak stać, że część zawartych tutaj informacji będzie niepełna: jak później przeczytasz, dzięki narodzinom XFree 3.2, nie kupiłem tego komercyjnego serwera. Tak więc jeśli zauważysz jakieś niepoprawne informacje w tym dokumencie proszę wyślij mi list. Jednak zauważ, że manipulowanie częstotliwościami monitora może być cokolwiek niebezpieczne i dlatego nie daję absolutnie żadnych gwarancji. Jeśli będzie u ciebie działać, to dobrze, jeśli wysadzisz swój komputer, to nie wiń mnie za to. Jak może zauważyłeś po moim nazwisku moim narodowym językiem nie jest angielski, więc przypuszczalnie zanjdziesz jakieś błędy tu i tam. Przepraszam za nie z góry i proszę nie zawalajcie mojej skrzynki listowej wiadomościami związanymi z tymi błędami. Dzięki! 22.. CCzzyy ppoottrrzzeebbuujjęę tteeggoo?? Sądze, że taktyka Xinside polegająca na nie dołączaniu narzędzia (jak xvidtune) do obróbki trybów video czy do przeniesienia tych z XFree do wersji rozwojowej (i o ile wiem komercyjnej) jest niezrozumałe. Spędziłem nad tym jakieś 3 godziny (wskazówka: porównałem pozycję dotyczącą VESy 1024x768@70Hz w tych dwóch formatach (i jestem już prawie elektronikiem ;-)) podczas gdy programista Xinside mógłby napisać artykuł porównawczy... Nie ściągałem żadnej wersji rozwojowej od 1.3 i naprawdę mam nadzieję, że to naprawili. Jeśli tak, to ten dokument jest już bezużyeczny, ale jeśli go przeczytasz, to dowiesz się trochę więcej o tym jak to działa. 33.. NNoo ttoo ssttaarrtt.. Załóżmy, że masz jakiś tryb w XFree86 i chcesz z niego zrobić wersję dla Xinside z tymi samymi warunkami: postępuj zgodnie z opisanymi poniżej krokami, a powinno ci się udać. Użyjemy moich domyślnych trybów video jako przykładów z życia wziętych i wyjaśnię co musisz zrobić, żeby je zamienić. Pozycja w XFree86 wygląda tak: Modeline "blahblah" DOTCLK A B C D a b c d Każdy z numerów A-D i 1-4 ma swoje znaczenie: jeśli chcesz, możesz ich poszukać w "The Hitchhiker's Guide to X386/XFree86 Video Timing" (/usr/lib/X11/doc/VideoModes.doc), ale nie musisz znać teorii, żeby je zamienić... Moje tryby w /usr/lib/X11/XF86Config to: Modeline "1168x876" 105 1168 1256 1544 1640 876 877 891 900 | | | | | | | | | DOT_CLK A B C D a b c d W Xinside, musisz dodać pozycję w pliku Xtimings, który powinien się znajdować w etc/ (od teraz zakładam, że jesteś w głównym katalogu Xaccel, którym powinien być /usr/X11/lib/X11/AcceleratedX). ! Gdzieś w tym pliku, umieść nazwy które chcesz [PREADJUSTED_TIMING] PreadjustedTimingName = "1168x876 @ 72Hz"; ! ! Te cztery są oczywiste ! HorPixel = 1168; // pixels VerPixel = 876; // lines PixelWidthRatio = 4; PixelHeightRatio = 3; ! ! hsync: DOT_CLK / D * 1000 [KHz] ! ! hsync = 105 / 1640 * 1000 = 64.024 KHz ! ! vsync: ( 1 / (( D / DOT_CLK ) * d) ) * 1,000,000 [Hz] ! ! vsync: ( 1 / (( 1640 / 105 ) * 900) ) * 1,000,000 ! ( 1 / 14057.1428571 ) * 1,000,000 = 71.138 Hz ! HorFrequency = 64.180; // kHz VerFrequency = 71.138; // Hz ! Oczywiste ScanType = NONINTERLACED; ! ! Umieść tutaj opcje +/-hsync +/-vsync z XFree86 ! HorSyncPolarity = POSITIVE; VerSyncPolarity = POSITIVE; ! Nie powinno się zmieniać CharacterWidth = 8; // pixels ! Tutaj jest DOT_CLK PixelClock = 105.000; // MHz ! ! ! Sekcja częstotliwości poziomych: [usec] ! HorTotalTime = D / DOT_CLK = 15.619; HorAddrTime = A / DOT_CLK = 11.124; HorBlankStart = A / DOT_CLK = 11.124; HorBlankTime = HorTotalTime - HorBlankStart = 4.495; HorSyncStart = B / DOT_CLK = 11.962; HorSyncTime = C / DOT_CLK - HorSyncStart = 2.743; ! ! Sekcja częstotliwości pionowych: [msec] ! VerTotalTime = ( HorTotalTime * d ) / 1000 = 14.057; VerAddrTime = ( HorTotalTime * a ) / 1000 = 13.682; VerBlankStart = ( HorTotalTime * a ) / 1000 = 13.682; VerBlankTime = VerTotalTime - VerBlankStart = 0.375; VerSyncStart = ( HorTotalTime * b ) / 1000 = 13.698; VerSyncTime = ( HorTotalTime * ( c - b ) ) / 1000 = 0.219 ! Koniec! Teraz tak nowo stworzone tryby musisz umieścić w plikach pokazanych poniżej w odpowiednich miejscach. 44.. UUssttaawwiiaanniiee.. W wyjątkach pokazanych poniżej znak -> pokazuje co było zmieniane: nie wpisuj go do pliku! Pozycja Monitor (moja to monitors/mfreq/mfreq64.vda) [ESTABLISHED_TIMINGS] "640x480 @ 60Hz", "640x480 @ 72Hz", "640x480 @ 75Hz", "800x600 @ 56Hz", "800x600 @ 60Hz", "800x600 @ 72Hz", "800x600 @ 75Hz", "1024x768 Interlaced", "1024x768 @ 60Hz", "1024x768 @ 70Hz", "1024x768 @ 75Hz", "1152x900 Interlaced", "1152x900 @ 60Hz", "1152x900 @ 67Hz", -> "1168x876 @ 72Hz", "1280x1024 Interlaced", "1280x1024 @ 60Hz", "1600x1200 Interlaced"; Plik informacyjny na temat karty (mój to boards/s3/764-2.xqa, Zastanawiam się czemu mają prawie wszystkie karty Hercules, a mojej nie: Terminator 64/Dram) [VISUAL] BitsPerPixel = 8; MemoryModel = Packed; ColorModel = Indexed; BitsRGB = 6; NumberOfColors = 256; [RESOLUTIONS] 640x480, 800x600, 1024x768, -> 1168x876, 1152x900, 1280x1024 [DESKTOPS] 640x480, 800x600, 1024x768, 1152x900, -> 1168x876, 1280x1024, 1600x1200 Jeśli częstotliwości zegara (dot clock) jest odpowiednio niski (NIE w tym przypadku dla mojej karty) możesz nawet tę pozycję umieścić w sekcji 16bpp i 32bpp. Plik /etc/Xaccel.ini będzie wyglądał tak: -------------------------------------------------------------- Board = "s3/764-2.xqa"; Monitor = "mfreq/mfreq64.vda"; Depth = 8; -> Desktop = 1168x876; [RESOLUTIONS] -> 1168x876, 1024x768; Właściwa pozycja odnośnie trybów w etc/Xtimings -------------------------------------------------------------- [PREADJUSTED_TIMING] PreadjustedTimingName = "1168x876 @ 72Hz"; HorPixel = 1168; // pixels VerPixel = 876; // lines PixelWidthRatio = 4; PixelHeightRatio = 3; HorFrequency = 64.024; // kHz VerFrequency = 71.138; // Hz ScanType = NONINTERLACED; HorSyncPolarity = POSITIVE; VerSyncPolarity = POSITIVE; CharacterWidth = 8; // pixels PixelClock = 105.000; // MHz HorTotalTime = 15.619; // (usec) = 205 chars HorAddrTime = 11.124; // (usec) = 146 chars HorBlankStart = 11.124; // (usec) = 146 chars HorBlankTime = 4.495; // (usec) = 59 chars HorSyncStart = 11.962; // (usec) = 157 chars HorSyncTime = 2.743; // (usec) = 36 chars VerTotalTime = 14.057; // (msec) = 900 lines VerAddrTime = 13.682; // (msec) = 876 lines VerBlankStart = 13.682; // (msec) = 876 lines VerBlankTime = 0.375; // (msec) = 24 lines VerSyncStart = 13.698; // (msec) = 877 lines VerSyncTime = 0.219; // (msec) = 14 lines Możesz sprawdzić czy wszystko sie udało uruchamiając program vgaset bez parametrów podczas gdy uruchomiony jest serwer Xinside: na ekranie będzie pokazana linia na podobieństwo XFree86 i, jeśli wszytko jest dobrze, linia ta będzie taka sama jak ta, od której zacząłeś (za wyjatkiem jeśli b i c są takie same, nie byłem w stanie powtórzyć tej sytuacji w Xinside: najlepszym przypadkiem było c=b+1). 55.. KKoonniieecc...... To wszystko! Mam nadzieję, że przyda ci się to. Nie sądzę, żebym kupił serwer XiGraphics w bliższej przyszłości z jednego prostego powodu: wersja 3.2 XFree86 rozwiązała wszystkie problemy związane z prędkością tekstu, jakie miałem na swojej skromnej karcie Trio 64 ;) Jednak wygląda na to, że serwer XiGraphics obsługuje o wiele szerszy zestaw chip-ów i kart graficznych niż XFree, więc może się zdarzyć, że komercyjna alternatywa będzie jedyną dla ciebie. Jeśli tak jest i kupiłeś serwer XiGrpahics, z chęcia usłyszałbym czy zaprezentowane tu informacje przydały ci się czy były zbyt skomplikowane, czy cokolwiek. 66.. AAuuttoommaattyyzzaaccjjaa pprroocceessuu.. Ten mały skrypt automatyzuje cała pracę. Bądź bardzo ostrożny z ScanType i z dwoma liniami Polarity: skrypt ich nie ustawia i jeśli jesteś zbyt leniwy, żeby je poprawić, to szansa na spalenie twojego monitora wzrasta znacznie. Zauważ, że nie wiem czy parametr "Doublescan" ma jakieś znaczenie w XInside: jeśli spróbujesz zamienić jakiś tryb o małej rozdzielczości BĄDŹ OSTROŻNY, łatwo możesz załatwić swój monitor ponieważ częstotliwość odświeżania, jaką uzyskasz jest podwojona (a naprawdę moje 400x300@72Hz stało się 400x300@144Hz !). #!/bin/sh ########################################################################## # XF2XInside # # Skrypt ten zamienia opisy trybów z formatu XF86Config na format XInside # tak jak tego wymaga plik etc/Xtimings. # # To jest tylko taki hacker-ski skrypt więc nie spodziewaj się zbyt # zaawansowanego sprawdzania błędów (nie mówiąc już o przyjazności dla # użytkownika). # # Jeśli wywołasz go bez argumentów powinien ci on powiedzieć co zrobić. # # ( Lipec 1996, hcz@tazlwurm.bb.bawue.de) # # Przy okazji: Nowe tryby stworzone tak jak to opisuje to HOWTO działają, # ale nie pokazują się w menu Xsetup-u. Ktoś wie dlaczego? # ########################################################################## #----------------------------------------------- No to lecimy: # Zmień to jeśli twój plik konfiguracyjny jest gdzieś indziej XF=/usr/X11/lib/X11/XF86Config if [ $# -ne 1 ] ; then echo "usage: ${0##*/} <mode>" echo " example: ${0##*/} 1024x764" echo -e " function: converts $XF modeline entry into\n Xinside Format (stdout)" exit 1 fi egrep -i "^[\t ]*modeline.+\"$1\"" /usr/X11/lib/X11/XF86Config | gawk ' NF < 11 { print "! invalid Modeline:\n! " $0 "\n!"; next } { print "//", $0 ":" name = $2 DOT_CLK = $3; A = $4; B = $5; C = $6; D = $7; a = $8; b = $9; c = $10; d = $11; VerFrequency = 1000000 / ((D / DOT_CLK) * d) print "[PREADJUSTED_TIMING]" printf " PreadjustedTimingName = \"%dx%d @ %.0dHz\";\n", A, a, VerFrequency print " HorPixel\t\t= " A ";" print " VerPixel\t\t= " a ";" print " PixelWidthRatio\t= 4;\n PixelHeightRatio\t= 3;" print " HorFrequency\t\t= " DOT_CLK / D * 1000 ";\t// kHz" print " VerFrequency\t\t= " VerFrequency ";\t// Hz" print " ScanType\t\t= NONINTERLACED;\t\t// *CHECK*" print " HorSyncPolarity\t= NEGATIVE;\t\t\t// *CHECK*" print " VerSyncPolarity\t= NEGATIVE;\t\t\t// *CHECK*" print " CharacterWidth\t= 8;" print " PixelClock\t\t= " DOT_CLK ";" HorTotalTime = D / DOT_CLK print " HorTotalTime\t\t= " HorTotalTime ";" print " HorAddrTime \t\t= " A / DOT_CLK ";" print " HorBlankStart\t\t= " A / DOT_CLK ";" print " HorBlankTime\t\t= " D / DOT_CLK - A / DOT_CLK ";" print " HorSyncStart\t\t= " B / DOT_CLK ";" print " HorSyncTime\t\t= " C / DOT_CLK - B / DOT_CLK ";" VerTotalTime = ( HorTotalTime * d ) / 1000 print " VerTotalTime\t\t= " VerTotalTime ";" print " VerAddrTime\t\t= " ( HorTotalTime * a ) / 1000 ";" VerBlankStart = ( HorTotalTime * a ) / 1000 print " VerBlankStart\t\t= " VerBlankStart ";" print " VerBlankTime\t\t= " VerTotalTime - VerBlankStart ";" print " VerSyncStart\t\t= " ( HorTotalTime * b ) / 1000 ";" print " VerSyncTime\t\t= " ( HorTotalTime * ( c - b ) ) / 1000 print "" }' 77.. PPooddzziięękkoowwaanniiaa.. ˇ Heike Claudia Zimmerer hcz@tazlwurm.bb.bawue.de za pokazanie pewnej nieścisłości i za przysłanie mi skryptu do automatyzacji. 88.. PPrraawwaa aauuttoorrsskkiiee//lleeggaallnnoośśćć.. Prawa autorskie należą do Š Marco Melgazzi (marco@techie.com) - dokument ten jest rozpowszechniany na podstawie GPL (Gnu Public License). Aby otrzymać kopię GPL, napisz do Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Znaki towarowe należą do ich właścicieli. Nie ma żadnych gwarancji co do dokładności czy przydatności informacji zawartych w tym dokumencie. 88..11.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne (tych może trochę być, bo co do nazewnictwa w sprawach monitorów i kart graficznych jestem ignorantem) to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl ����������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/Xterminal.pl.txt��������������������������������������������������0100664�0001750�0001750�00000101627�07104371340�020451� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Jak podłączyć XTerminal do Linux-a na PC-cie. Scot W. Stevenson, scot@catzen.gun.de v1.0 BETA, Lipiec 1995 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.02, 26 Lipca 1997 Dokument ten zawiera krótkie wprowadzenie do tego jak podłączyć XTer­ minal do Linux-a na PC-cie. Zakłada się tu, że masz już podstawowe informacje o X Window System, adresowaniu TCP/IP i kartach Ethernet. Dokument ten został napisany w standardzie ISO-8859-2. Wersja orygi­ nalna znajduje się pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/>. ______________________________________________________________________ Spis treści 1. Wprowadzenie. 1.1 Zmiany względem wersji poprzedniej. 1.2 Zrzeczenia. (Disclaimers) 1.3 Prawa autorskie. 1.4 Nowe wersje i komentarze. 2. Trochę historii. 2.1 Co to jest X? 2.2 Co to jest XTerminal ? 2.3 Zalety i wady. 2.4 Czego potrzebuję ? 3. Kable, sieci i demony. 3.1 Fizyczne podłączenie. 3.2 Konfiguracja sieci. 3.2.1 Konfiguracja maszyny Linux-owej. 3.2.2 Konfiguracja XTerminala. 3.3 bootpd 3.4 tftpd 3.5 Testowanie połączenia. 4. X-y w działaniu. 4.1 Konfiguracja xdm-a. 4.2 Pytania o dostęp. 5. Błędy, nieznane i podziękowania. 5.1 Znane problemy. 5.2 Przetestowane terminale. 5.3 Dalsze czytanie. 5.4 Podziękowania. 5.5 Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Jest to pierwsza wersja tego dokumentu i powinna być uważana za wersję BETA. Jest to bardziej opis mojego postępowania niż wyczerpujący przewodnik. Dyskusje o mechanizmach kontroli dostępu (np. _x_a_c_c_e_s_s_, _x_h_o_s_t_, _M_I_T_-_C_O_O_K_I_E_s), oraz użycie NFS-u, nie są jeszcze zawarte. Większość XTerminali ma teraz całą gamę zaawansowanych właściwości, które pozwalają im być czymś więcej niż zwykłym X serverem. W większej części właściwości te będą ignorowane. 11..11.. ZZmmiiaannyy wwzzggllęęddeemm wweerrssjjii ppoopprrzzeeddnniieejj.. (Nie ma poprzednich wersji, więc wszystko było zmienione.) 11..22.. ZZrrzzeecczzeenniiaa.. ((DDiissccllaaiimmeerrss)) Ani autor, ani dystrybutorzy, ani tłumacz tego dokumentu nie są w żaden sposób odpowiedzialni za fizyczne, finansowe czy moralne szkody spowodowane sugestiami zawartymi w tym dokumencie. 11..33.. PPrraawwaa aauuttoorrsskkiiee.. Prawa autorskie należą do Scota W. Stevensona. O ile nie stwierdza się inaczej, dokumenty HOWTO są chronione prawami autorskimi ich autorów. Mogą one być rozprowadzane w całości lub w części, w jakiejkolwiek postaci fizycznej czy elektronicznej tak długo, dopóki znajduje się w nich ta wzmianka. Dystrybucja komercyjna jest dozwolona, a nawet zachęca się do niej; chociaż autor chciałby być poinformowany o takowej. Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem. Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO. Jeśli masz jakieś pytania, skontaktuj się proszę z Gregiem Hankinsem, koordynatorem projektu Linux HOWTO pod adresem gregh@sunsite.unc.edu. Możesz użyc programu finger, żeby poznać jego numer telefonu czy dalsze informacje. 11..44.. NNoowwee wweerrssjjee ii kkoommeennttaarrzzee.. Nowe wersje oryginału tego dokumentu można znaleźć na ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO/. Odnośnie nowych wersji tłumaczenia zobacz sekcję ``Od tłumacza''. Jeśli nie masz dostępu do ftp, możesz spróbować zdobyć pliki pomocy dotyczące Linux-a u Billa Riemersa. Wyślij list na adres bcr@physics.purdue.edu z tematem _h_e_l_p, aby uzyskać więcej informacji. Wszelkie dodatki, komenatarze i poprawki dotyczące tego dokumentu są mile widziane. Wysyłaj je na adres scot@catzen.gun.de. Szczególnie chciałbym otrzymać listy od ludzi, którym udało się już podłączyć XTerminal z Linux-em, nawet jeśli jest to coś w stylu "działało na takim komputerze z takim terminalem". W następnej wersji pojawią się: mechanizm kontroli dostępu i użycie systemu plików NFS do startowania. 22.. TTrroocchhęę hhiissttoorriiii.. Sekcja ta podaje trochę bardzo podstawowych informacji dla tych, którzy nie są jeszcze zapoznani z X Window System i jego terminal- ologią. Jeśli masz jakiekolwiek doświadzczenia związane z X i XTerminalami możesz przeskoczyć tę sekcję bez żadnych skutków ubocznych. 22..11.. CCoo ttoo jjeesstt XX?? X Window System, albo po prostu X-y (nigdy X Windows), jest przenośnym, niezależnym od sieci systemem okienek jak to określa strona podręcznika systemowego. Udostępnia środowisko graficzne, które jest niezależne od systemu operacyjnego, sprzedawców i sprzętu. Kiedy ludzie mówią o systemie okienkowym w połączeniu z Unix-em, prawie zawsze maja na myśli X-y. Najważniejszą cechą X-ów w naszym przypadku jest ścisłe oddzielenie od siebie programów, które kontrolują lokalny sprzęt, z którym komunikuje się użytkownik (ekran, klawiatura, mysz itp.) i tych programów, które użytkownik chce uruchamiać (edytory, arkusze, DOOM). Oznacza to, że komunikujący te dwie rzeczy program nazywany X serwerem, może być na jednej maszynie, podczas gdy właściwe programy, albo X klienty, mogą być na jednej a nawet większej ilości maszyn w zupełnie różnych miejscach. Zauważ, że terminy "serwer" i "klient" używane są w odwrotnym znaczeniu niż normalnie. Linux posiada kolekcję Xserwerów z projektu XFree86, to znaczy, serwerów dla kart graficznych SVGA, jak również całą kolekcję Xklientów takich jak: _x_v_, _m_a_z_e _c_z_y _x_t_e_r_m. Jeśli dopiero zapoznajesz się z X-ami, możesz chcieć trochę poeksperymentować z X-ami na maszynie Linux-owej zanim będziesz ustawiał XTerminal. 22..22.. CCoo ttoo jjeesstt XXTTeerrmmiinnaall ?? XTerminal (odtąd zwany XT) jest wyspecjalizowaną częścią sprzętu i oprogramowania, która łączy się w Xserwer, to jest, tę część X-ów, która zarządza wejściem/wyjściem do i od użytkownika. W najbardziej prymitywnym przypadku, zawarte są tylko program Xserwera i oprogramowanie komunikacyjne. Nawer menedżer okienek pochodzi od serwera, do którego poprzez ethernet połączony jest XT (albo rzadziej poprzez port szeregowy) używając protokołu TCP/IP. Sprzęt XT będzie zawierał (duży) monitor, klawiaturę, myszkę, trochę RAM-u oraz gniazdka do ethernetu. Większość XT nie ma dysków twardych, stacji dyskietek ani żadnych innych urządzeń zapisu danych. Oznacza to, że XT mają swój system operacyjny albo w ROM-ie (rzadkość) albo ściągają go z hosta w sieci, do którego są podłączone. Aby XT dostał się do swojego systemu operacyjnego na Linux-a podczas startu przeważnie robi on coś takiego: wysyła zawołanie o pomoc poprzez sieć ze swoim adresem ethernet. "Rzeczywisty" komputer w sieci porównuje ten adres z listą, którą posiada i jeśli znalazł jakiś identyczny, to wysyła do XT adres IP, który został mu przypisany (poprzez demona bootpd). Pozwala to XT na ściągnięcie systemu operacyjnego i ewentualnie innych danych, kórych potrzebuje z hosta (zwykle poprzez tftp). To jest cała procedura opisana w szczegółach. Wtedy XT jest już w pełni wyposażonym komputerem z własnym numerem IP, RAM-em, programem i niezależnym sprzętem, chociaż bardziej jako uczony idiota. Jest najlepszy w tym co robi, czyli w zarządzaniu grafiką w X- ach, ale nieprzydatny do niczego innego. 22..33.. ZZaalleettyy ii wwaaddyy.. W idealnym przypadku XT jest cichy, szybki i martwy. Zwykle bez wiatraczka, stacji dyskietek czy dysku twardego, nie robi żadnego hałasu. Z kilkoma metrami kabla ethernet możesz wystawić swój hałaśliwy komputer do innego pokoju a u siebie na biurku postawić cichy XT. Ponieważ XT jest stworzony do X-ów i grafiki, jest szybszy niż, powiedzmy, program X-owy pod MS Windows czy DOS-a. Jeśli serwer jest na jednym komputerze i klient na drugim, to procesor nie musi się zajmowac jednym i drugim na raz. Chociaż, można tego nie zauważyć w szybkości przekazywania danych (ponieważ poruszają się one poprzez ethernet) zredukuje to zużycie CPU i zaoszczędzi trochę pamięci na maszynie Linux-owej, która w innym przypadku byłaby załadowana Xserwerem. Jednak z drugiej strony będziesz potrzebował karty ethernet, co zwykle oznacza jeden port i IRQ. W zależności od producenta, oprogramowanie dla XT może zabrać około 20 MB na Linux-ie. Prawie zawsze możesz skasować dużo niepotrzebnych rzeczy jak już się zorientujesz co jest rzeczywiście niezbędne. Większość XT wymaga na hoście zainstalowania demonów bootpd oraz tftpd - oba są potencjalnymi dziurami w bezpieczeństwie. Będziesz przypuszczalnie chciał mieć jeszcze jednego demona - xdm - uruchomionego w tle. I tak - ten wielki monitor do XT zabierze dużo miejsca na biurku. 22..44.. CCzzeeggoo ppoottrrzzeebbuujjęę ?? Miło, że pytasz ! Ale bardziej odpowiednie będzie czego ty potrzebujesz ? Po pierwsze potrzebujesz XT. Jeśli masz dużo pieniędzy i to nnaapprraawwddęę dużo, możesz iść i kupić. Jim Morton <jim@applix.com> wysyła regularnie listę XT na comp.windows.x. Albo może się do ciebie uśmiechnąć szczęście. Ponieważ starych XT nie można używać z DOS-em, MS Windows czy OS/2, niektóre firmy rozwiązują ten problem przez wyrzucenie ich. Ze strony komputera Linux-owego będziesz potrzebował karty ethernet. Pomimo, iż teoretycznie podłączenie XT poprzez port szeregowy czy SLIP jest możliwe nie jest to zalecane o ile nie masz tendecji masochistycznych. Opis jak zainstalować i posługiwać się kartą ethernet znajdziesz w Ethernet-HOWTO <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/Ethernet-HOWTO>, którego opiekunem jest Paul Gortmaker <Paul.Gortmaker@anu.edu.au>. Jeśli nie masz już innego wyboru to SLIP i CLSIP są opisane w tym samym dokumencie. W tym przypadku będziesz też chciał zajrzeć do Serial-HOWTO <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/Serial-HOWTO>, którego opiekunem jest Greg Hankins <gregh@cc.gatech.edu>, żeby dowiedzieć się jak uzyskać najlepszą wydajność. Będziesz także potrzebował obsługi TCP/IP wkompilowanej w jądro, tak samo jak przynajmniej dwóch numerów IP dla Linux-a i XT. Informacje o numerach IP znajdziesz w NET-3-HOWTO <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/NET-3-HOWTO>, którego opiekunem jest Terry Dawson <terryd@extro.ucc.su.oz.au>. No i oczywiście będziesz musiał mieć zainstalowane X-y na Linux-ie. Teoretycznie potrzebujesz tylko Xklientów i programy takie jak xdm, bez Xserwerów. Ale przypuszczalnie nie jest to warte zabawy w wybieranie co instalować co nie. W XFree86-HOWTO <http://www.ippt.gov.pl:/~ppogorze/Linux/JTZ/html/XFree86-HOWTO.pl.html>, którym opiekuje się Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> znajdziesz informacje jak ustawić X-y. 33.. KKaabbllee,, ssiieeccii ii ddeemmoonnyy.. Sekcja ta opisuje zmiany jakie trzeba wprowadzić do sprzętu i oprogramowania, aby podłączyć XT do Linux-a. Przyjąłem tutaj takie nazewnictwo: ˇ 192.168.13.1 - imlinux.frog.de (maszyna z Linux-em) ˇ 192.168.13.41 - whisper.frog.de (podłączony XT) Zauważ, że są to adresy komputerów niepodłączonych do Internet-u i z tego co się orientuję to w Niemczech nie ma domeny frog.de. Załóżymy, że nie ma innych maszyn w sieci i że NFS nie jest zainstalowany. [Jeśli ktoś używał NFS-u do podłączenia swojego XT, bardzo proszę o kontakt ze mną.] 33..11.. FFiizzyycczznnee ppooddłłąącczzeenniiee.. Powinno być to tak łatwe jak włożenie dwóch kabli do dwóch komputerów. Zauważ, że niektóre XT mają dwa porty szeregowe, które mogą działać tylko przy konkretnych szybkościach jeśli są używane oba na raz. Sprawdź podręcznik do swojego Xterminala. Później będziesz potrzebował adresu ethernet swojego XT. Jest on wyświetlany podczas startu XT nawet jeśli nie ma żadnych połączeń. Jak tylko włożysz kable w odpowiednie miejsca będziesz mógł przetestować połączenie ethernet. Po wystartowaniu, XT powinien narzekać, że jego zapytania o bootpd i tftpd nie są obsługiwane i powinien zacząć startować swój system operacyjny z ROM-u. Powinno zawierać się tam prymitywne polecenie _p_i_n_g, które pozwoli ci na przetestowanie połączenia ethernet-owego z Linux-em. Nie panikuj jeśli to nie działa. XT przypuszczalnie potrzebuje całego swojego systemu operacyjnego, aby odpowiedzieć. 33..22.. KKoonnffiigguurraaccjjaa ssiieeccii.. Informacje na temat konfiguracji TCP/IP powinieneś znaleźć w NET-3-HOWTO, tak jak zostało to już wspomniane wyżej. Założymy, że masz już skonfigurowaną sieć TCP/IP. Ponieważ XT to tylko następny komputer w sieci, będziesz musiał się upewnić, że oba komputery - Linux i XT - znają swoje numery IP i że są podłączone do sieci. 33..22..11.. KKoonnffiigguurraaccjjaa mmaasszzyynnyy LLiinnuuxx--oowweejj.. Informacje na temat XT będą musiały zostać zawarte w co najmniej tych plikach: ______________________________________________________________________ /etc/hosts Add a line with the IP number of the XT, such as # /etc/hosts line for Linux machine. lprhost oraz loghost # są opcjonalne 192.168.13.1 imlinux imlinux.frog.de lprhost loghost # Nastepna linia jest nową linią dla XT. 192.168.13.41 whisper whisper.frog.de ______________________________________________________________________ ______________________________________________________________________ /etc/ethers This file provides a list of ethernet numbers and the corresponding host names. This does not seem to be needed in all distributions and setups, but in case it is, you will need to include the ethernet number of the XT and its hostname. This would be something like 04:03:e8:cc:0d:24 imlinux 0f:03:11:31:45:f1 whisper ______________________________________________________________________ [Możliwe, że musisz zmienić także inne pliki jeśli masz takie programy jak _n_a_m_e_d_, _r_o_u_t_e_d _c_z_y _g_a_t_e_d. Ponieważ ja tego nie stosuję byłbym bardzo wdzięczny jeśli ktoś kto używa tych programów powiedziałby mi jakie pliki trzeba jeszcze zmienić.] Zrestartuj komputer, żeby się upewnić, że wszystkie dokonane zmiany działają. 33..22..22.. KKoonnffiigguurraaccjjaa XXTTeerrmmiinnaallaa.. Sprawdź w podręczniku jakie pliki musisz zmienić, żeby podać te informacje. W moim przypadku był to jeden ogólny plik, w którym musiały się znaleźć poniższe informacje: ______________________________________________________________________ ip_host_table 192.168.13.1 imlinux ip_host_table 192.168.13.1 imlinux.frog.de ip_host_table 192.168.13.41 whisper ip_host_table 192.168.13.41 whisper.frog.de file_access_1 TFTP file_host_name_1 imlinux.frog.de file_path_1 /usr/local/xterm/liveshere display_access_table whisper display_access_table imlinux enable_access_control YES xdmcp_server imlinux broadcast_address 192.168.13.255 default_telnet_host imlinux ______________________________________________________________________ Zauważ, że XT pobiera swoje pliki poprzez tftp z katalogu /usr/local/xterm/liveshere, i że terminal jest w stanie wykonać XDMCP (ważne do konfiguracji xdm-a). Będą jeszcze inne pliki konfiguracyjne na takie rzeczy jak np. czcionki. Powinieneś móc używać czcionek zainstalowanych już na Linux- ie. W moim przypadku plik dotyczący czcionek wyglądał mniej więcej tak: ______________________________________________________________________ /usr/lib/X11/fonts/75dpi /usr/lib/X11/fonts/100dpi ... /usr/local/xterm/misc /usr/local/xterm/openlook ______________________________________________________________________ i jeszcze kilka linii, z tym samym efektem. Później jak już twój XT startuje z Linux-a, powinieneś zobaczyć listę plików, które udało mu się załadować. Inną rzeczą, którą będziesz chciał mieć to tzw. "backing store". Oznacza to, że części okienek, które są przykrywane przez następne okienka zapisywane są w RAM-ie w XT a nie w Linux-ie. Sprawdź podręcznik do swojego XT. 33..33.. bboooottppdd Bootpd jest demonem odpowiedzialnym za komunikację z XT podczas startu. Informuje go o tym kim jest i skąd ma pobrać oprogramowanie do załadowania. Z jakichś dziwnych powodów demon ten nie znajduje się w nowszych dystrybucjach, przynajmniej w Slackware 2.2.0.1 go nie było. Tak więc będziesz go musiał zdobyć poprzez ftp albo jakoś inaczej. Powinien zostać umieszczony w /usr/sbin, a nie (jak informuje strona podręcznika systemowego) w /etc pod nazwą _i_n_._b_o_o_t_p_d. Dodaj następującą linię lub usuń znak komentarza z pliku /etc/inetd.conf w linii: bootps dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.bootpd Spowoduje to uruchomienie _b_o_o_t_p_d przez _i_n_e_t_d kiedy pojawi się jakieś żadanie skierowane do bootpd. Plikiem konfiguracyjnym dla _b_o_o_t_p_d jest plik /etc/bootpd. Składnia tego pliku jest wyjaśniona na stronie podręcznika systemowego. W naszym przykładzie plik ten powinien wyglądać mniej więcej tak: (serwer jest tutaj użyty znowu w swoim normalnym znaczeniu) ______________________________________________________________________ # Sample /etc/bootpd file # Najpierw ustawienia globalne dla tego, co jest używane przez # wszystkie maszyny. allhost:hd=/usr/local/xterm/liveshere:\ # Katalog domowy dla XT. :ds=192.168.13.1:\ # Serwer nazw domeny (imlinux) :sm=255.255.255.0:\ # Maska podsieci :gw=192.168.13.1:\ # Wrota (gateway) :ts=192.168.13.1:\ # Serwer czasowy :lp=192.168.13.1:\ # Serwer drukarki :to=-7200: # Offset czasu w sekundach # Następnie pozycje dla poszczególnych XT. # Kolejne XT miały by swoje odrębne pozycje. whisper:ht=ethernet:\ # Rodzaj połączenia sprzętowego :ha=0f03113145f1:\ # Adres ethernet-owy XT :ip=192.168.13.41:\ # Numer IP XT (whisper) :tc=allhost:\ # Dołącz ustawienia globalne :bf=xtermOS: # Nazwa pliku startowego - OS XT ______________________________________________________________________ Nazwa systemu operacyjnego (OS) dla XT nie może byc częścią nazwy katalogu domowego (hd). W naszym przykładzie plik, w którym znajduje się system operacyjny to /usr/local/xterm/liveshere/xtermOS, ale pozycja hd to /usr/local/xterm/liveshere/. _b_o_o_t_p_d zapisze informacje do obu plików /var/adm/syslog oraz /var/adm/messages, która po udanym starcie powinna wyglądać mniej więcej tak: Jul 17 05:19:42 imlinux in.bootpd[110]: connect from 0.0.0.0 Jul 17 05:19:42 imlinux bootpd[110]: reading "/etc/bootptab" Jul 17 05:19:42 imlinux bootpd[110]: read 2 entries from "/etc/bootptab" Jul 17 05:19:43 imlinux bootpd[110]: request from hardware address 0F03113145F1 Type 1 Jul 17 05:19:43 imlinux bootpd[110]: found 192.168.13.41 whisper Po tym, jak _b_o_o_t_p_d pomoże wystartować XT będzie on jeszcze siedział w pamięci przez ok. 15 minut, po czym jeśli nie ma już nic do roboty usunie się. 33..44.. ttffttppdd _T_r_i_v_i_a_l _F_i_l_e _T_r_a_n_s_f_e_r _P_r_o_g_r_a_m jest używany przez XT do załadowania systemu operacyjnego z dysku twardego z Linux-a. Powinien być zawarty w każdej dystrybucji i nie posiada pliku konfiguracyjnego. Możesz przetestować ten program wpisując w wierszu poleceń tftp. Tak jak to zrobiłeś w przypadku _b_o_o_t_p_d będziesz musiał dodać lub usunąć znak komentarza z pliku /etc/inetd.conf w linii: tftp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.tftpd Zauważ, że tftp ma dostep tylko do tych plików, które mają odczyt dla świata. Pamiętaj też, że _t_f_t_p jest potencjalną dziurą w bezpieczeństwie i że wersja tego programu zawarta w niektórych dystrybucjach Linux-a nie posiada opcji _-_r lub _-_s, które czynią ten program bardziej bezpiecznym. _t_f_t_p także czyni zapis w /var/adm/messages. Jeśli _b_o_o_t_p_d dobrze wykonał swoją robotę, to następne linie powinny wyglądać mniej więcej tak: Jul 17 05:19:43 imlinux in.tftpd[111]: connect from whisper Jul 17 05:19:58 imlinux in.tftpd[113]: connect from whisper Jul 17 05:19:59 imlinux in.tftpd[115]: connect from whisper Jul 17 05:20:00 imlinux in.tftpd[117]: connect from whisper Jul 17 05:20:03 imlinux in.tftpd[125]: connect from whisper Jul 17 05:20:05 imlinux in.tftpd[127]: connect from whisper i tak dalej przez pewną chwilę. Są to pliki, o które prosi XT ze swojego katalogu domowego. Powinieneś zobaczyć także informacje na ekranie XT podczas ich przenoszenia. 33..55.. TTeessttoowwaanniiee ppoołłąącczzeenniiaa.. Jak już zmodyfikowałeś pliki wymienione wyżej, powinieneś móc wystartować XT. W zależności od producenta na ekranie pojawią się mniej lub więcej mówiące komunikaty o tym co się dzieje. Sprawdź uważnie czy nie ma jakichś informacji o plikach, które nie mogły zostać odnalezione. Jeśli wszystko jest w porządku, to na XT powinna się uruchomić osobna wersja X-ów. To znaczy szare tło i kursor X. Jeśli na Linux-ie jest już uruchomiony _x_d_m, to może się nawet pojawić zachęta graficzna. Chociaż może się też zdarzyć, że będą się działy dziwne rzeczy ponieważ nie wszystko jest jeszcze ustawione. W ostateczności przygotuj się na zabicie _x_d_m_-_a. Większość XT ma wbudowane funkcje, takie jak klient telnet-a, jako część ich startującego systemu operacyjnego. Możesz przetestować dokładniej połączenie przez "zatelnetowanie" się na Linux-a. W tym momencie, w zleżności od ustawionego dostępu, możesz być już w stanie uruchomić programy pod X-y używając opcji wyświetlania. Spróbuj napisać na komputerze z Linux-em: xclock -display whisper:0 & Na XT powinien pojawić się zegar. Możesz nawet w ten sposób uruchomić menedżera okienek. 44.. XX--yy ww ddzziiaałłaanniiuu.. Sekcja ta opisuje ustawienie _x_d_m_-_a tak, żeby na XT pojawiła się graficzna zachęta i żeby powracała po wylogowaniu się użytkownika. Program _x_d_m jest menedżerem wyświetlania. Jest to (bardzo) surowy ekwiwalent programów rejestrujących użytkownika na zwykłym terminalu. Powinien być zawarty w każdym pakiecie X na Linux-a. 44..11.. KKoonnffiigguurraaccjjaa xxddmm--aa.. Pliki konfiguracyjne tego programu znajdują się w /usr/X11R6/lib/X11/xdm (/usr/X11R6 może być symbolicznym dołączeniem do /usr/X11). Głównym plikiem konfiguracyjnym jest xdm-config. Powinieneś znaleźć wśród innych także takie linie: ______________________________________________________________________ DisplayManager._0.authorize: true DisplayManager._0.setup: /usr/X11R6/lib/X11/xdm/Xsetup_0 DisplayManager._0.startup: /usr/X11R6/lib/X11/xdm/GiveConsole DisplayManager._0.reset: /usr/X11R6/lib/X11/xdm/TakeConsole ______________________________________________________________________ To są pliki, które kontrolują ekran podczas gdy X-y są uruchamiane na Linux-ie. Dla XT dodajemy cztery linie tego samego typu: ______________________________________________________________________ DisplayManager.whisper_0.authorize: true DisplayManager.whisper_0.setup: /usr/X11R6/lib/X11/xdm/Xsetup_whisper DisplayManager.whisper_0.startup: /usr/X11R6/lib/X11/xdm/Xstartup DisplayManager.whisper_0.reset: /usr/X11R6/lib/X11/xdm/Xreset ______________________________________________________________________ Zauważ, że zamiast _w_h_i_s_p_e_r_:_0 pojawia się _w_h_i_s_p_e_r___0. Zauważ też, że _G_i_v_e_C_o_n_s_o_l_e zostało zamienione na _X_s_t_a_r_t_u_p, który w moim przypadku jest plikiem pustym oraz _T_a_k_e_C_o_n_s_o_l_e zostało zamienione na _X_r_e_s_e_t, który także jest pustym plikiem. Oba pliki kontrolują właściciela konsoli graficznej kiedy X-y są uruchamiane na Linux-ie, ale ponieważ my uruchamiamy je na XT, więc nie ma sensu mieszać z konsolą Linux-a. Pliki ustawiające (setup) uruchamiają pewne programy zanim na ekranie pojawi się zachęta. To jest miejsce, w którym możemy użyć, powiedzmy, _x_v, żeby wyświetlić sobie w tle obrazek. Powinieneś móc po prostu skopiować plik Xsetup_0 na Xsetup_whisper. [Pytanie to ciągle powraca: Jednym ze sposobów umieszczenia obrazka w tle jest umieszczenie linii nice xv -root -quit -rmode 5 <obrazek> & czy podobnej w pliku ustawiającym. <obrazek> zostanie wyświetlony w tle pod zachętą _x_d_m_-_a. Zauważ, że niektóre XT będą zgłaszać błąd jeśli obrazek jest za duży albo zbyt skomplikowany.] _X_a_c_c_e_s_s kontroluje kto może mieć dostęp do maszyny. Powinieneś móc zostawić wartości domyślne takimi jakie są. Zauważ, że _X_a_c_c_e_s_s pozwoli ci na powitanie użytkownika programem _c_h_o_o_s_e_r w razie gdybyś miał w sieci więcej komputerów, które służą za XT. _X_r_e_s_o_u_r_c_e_s kontroluje wygląd i rozmiar graficznej zachęty. Możesz mieć różne zachęty dla Linux-a i dla XT poprzez zamianę linii: DisplayManager*resources: /usr/X11R6/lib/X11/xdm/Xresources na dwie linie: DisplayManager._0.resources: /usr/X11R6/lib/X11/xdm/Xres_0 DisplayManager.whisper_0.resources: /usr/X11R6/lib/X11/xdm/Xres_wh_0 gdzie _X_r_e_s___w_h___0 jest nazwą pliku zasobowego dla _w_h_i_s_p_e_r. Powinieneś móc także zostawić plik _X_s_e_r_v_e_r_s z wartościami domyślnymi. Konfiguracja w pliku _X_s_e_r_v_e_r_s jest nieco bardziej złożona. Przypuszczalnie jest tam tylko jedna linie bez komentarza: :0 local /usr/X11R6/bin/X albo coś podobnego. Powoduje ona wystartowanie X serwera na Linux-ie podczas uruchomienia programu _x_d_m. Zamiana tej linii w komentarz oznacza, że podczas uruchomienia programu _x_d_m nie będą startowane X-y na Linux-ie. To jest to co musisz zrobić, jeśli chcesz żeby _x_d_m obsługiwał tylko XT a nie X-y na Linux-ie. W tym wypadku, X-y można w każdej chwili uruchomić na Linux-ie poleceniem _s_t_a_r_t_x jak dotąd bez znanych skutków ubocznych. Jeśli twój XT nie posiada XDMCP, musisz także dołączyć taką linię dla XT: whisper:0 foreign XDMCP jest standardem pozwalającym na przykład rozmawiać XT ze swoimi hostami. Jeśli twój XT posiada XDMCP nie dołączaj tej linii tutaj. Jeśli linia ta znalazłaby się tutaj, a XT posiadałby XDMCP, to na lini połączeniowej pojawiłby się konflikt, ponieważ zarówno _x_d_m jak i XT próbowałyby się równocześnie porozumieć. Może to prowadzić do różnych przedziwnych efektów, jak np. walka dwóch _x_d_m o dominację :). Zauważ, że możesz użyć pozycji w _x_d_m_-_c_o_n_f_i_g nawet jeśli w _X_s_e_r_v_e_r_s nie ma linii dotyczącej XT, to znaczy, że możesz w dalszym ciągu ustawiać zachętę graficzną itp. dla XT, który posiada XDMCP. Aby _x_d_m startował za każdym startem Linux-a możesz dołączyć taką linię /usr/bin/X11/xdm do pliku /etc/rc.d/rc.local. Inni startują _x_d_m_-_a poprzez /etc/inittab. W każdym razie _x_d_m powinien pojawić się jako jeden z procesów po starcie Linux-a. 44..22.. PPyyttaanniiaa oo ddoossttęępp.. [Jest to dość ważne i pracujemy nad tym.] Aby zobaczyć czy użytkownik może używać ekranu danego XT z maszyny Linux-owej zaloguj się jako użytkownik inny niż "root" i napisz jedno z: xsetroot -solid white -display whisper:0 & xterm -display whisper:0 & Użyj tego kiedy ktoś jest zalogowany na XT oraz kiedy jest tam tylko graficzna zachęta. 55.. BBłłęęddyy,, nniieezznnaannee ii ppooddzziięękkoowwaanniiaa.. 55..11.. ZZnnaannee pprroobblleemmyy.. Oto problemy, które się pojawiły oraz ineteresujące właściwości, które mogą być rozważane jako błędy. Jeśli pojawiły się u ciebie jakieś interesujące właściwości czy nawet rozwiązania skontaktuj się ze mną proszę. ˇ talk - interaktywna pogawędka będzie działać jeśli zainicjuje ją użytkownik z XT do użytkownika na Linux-ie, ale nie będzie działać odwrotnie. Jestem pewien, że czytałem jak to naprawić, ale niestety zapomniałem. ˇ who - użytkownik zalogowany z XT nie pojawia się w poleceniu _w_h_o nawet jeśli jest ono wydane na XT. To jest pewnie powód, dla którego _t_a_l_k z Linux-a nie działa ("Na XT nikt nawet nie wie, że jesteś człowiekiem.") ˇ xlock - zwykłe odwołanie do _x_l_o_c_k_-_a objawi się tylko wiadomością, że ekran XT nie mógł być zgrany. Aby zezwolić na zablokowanie terminala należy podać opcję _-_r_e_m_o_t_e. Zauważ, że niektóre tryby _x_l_o_c_k_-_a są bardziej zachłanne od innych. Qix wydaje się być bardziej przeznaczony do XT niż inne - więcej szczegółów w FAQ Arta Muldera wymienionym poniżej. ˇ xv - niektóre XT mają za mało pamięci graficznej, żeby obsłużyć duże czy złożone kolorowe tła. Spróbuj usunąć stare obrazki poleceniem _x_s_e_t_r_o_o_t i odświeżyć ekran przed zamianą okienka _x_v na tło. 55..22.. PPrrzzeetteessttoowwaannee tteerrmmiinnaallee.. Procedury opisane w tym tekście były jak dotąd poważnie testowane na Tektonix-ie XP23 w połączeniu z 386DX-33MHz, 16 MB RAM-u z Linux-em 1.2.3 oraz XFree86 w wersji 3.1.1 z dystrybucji Slackware 2.2.0.1. 55..33.. DDaallsszzee cczzyyttaanniiee.. Więcej informacji na temat X-ów można znaleźć w sieci: ˇ Davis B. Lewis <dbl@ics.com> wysyła regularnie FAQ na listę comp.windows.x, news.answers oraz comp.answers. Znajdują się tam także odnośniki gdzie znaleźć więcej informacji na temat X-ów. ˇ Steve Kotsopoulos <steve@ecf.toronto.edu> wysyła FAQ dotyczące X-ów na Unix-ach na Intel-a na tę samą grupę. ˇ Art Mulder <art@cs.ualberta.ca> zajmuje się FAQ dotyczącym "wyciągania więcej z X-ów", które jest także regularnie wysyłane do tych grup. Są tam też bardzo przydatne wskazówki dla Linux-a z X- ami. 55..44.. PPooddzziięękkoowwaanniiaa.. Najpierw podziękowania dla Linusa B. Torvaldsa <torvalds@kruuna.helsinki.fi>; następnie dla Klausa ter Fehna <ktf@bc3.gun.de> oraz dla Douglasa K. Stevensona <duck@catzen.gun.de> 55..55.. OOdd ttłłuummaacczzaa.. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl/HOWTO/ Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany wprowadzone przez tłumacza: polskie adresy ftp i zmiana Net-2-HOWTO na NET-3-HOWTO. ���������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/mini/krypto.pl.txt�����������������������������������������������������0100664�0001750�0001750�00000034101�07104371340�020026� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Kryptograficzny System Plików pod Linuxem - Jak To Zrobić Autor: Alexander O. Yuriev, alex@bach.cis.temple.edu WWeerrssjjaa ppoollsskkaa:: KKrrzzyysszzttooff GG.. BBaarraannoowwsskkii KKGGBB@@rruubbiikkoonn..nneett..ppll v1.1 12 Maja 1997 W dokumencie opisano jak skompilować, zainstalować i ustawić Kryp­ tograficzny System Plików (zwany dalej CFS - przyp. tłumacza), który został napisany przez Matta Blaze z AT&T, pod Linuxa. 11.. WWpprroowwaaddzzeenniiee Następujące oświadczenie skopiowane zostało bezpośrednio z CFS 1.12 i opisuje zastrzeżenia co do używania CFS. ˇ Autorem tego oprogramowania jest Matt Blaze. ˇ Copyright (c) 1992, 1993, 1994 by AT&T. ˇ Zezwala się używać, kopiować i modyfikować niniejsze oprogramowanie bez żadnych opłat, pod warunkiem, że zostanie dołączona do wszystkich kopii oprogramowania pełna dokumentacja, uwagi i ostrzeżenia autora. ˇ To oprogramowanie podlega kotroli eksportu ze Stanów Zjednoczonych. ˇ Nie wolno eksportować go, w części lub w całości, albo pomagać w eksporcie, bez zgody rządu USA i pisemnego zezwolenia od AT&T. W szczególności nie wolno udostępniać żadnej części tego oprogramowania i jego nieograniczonych dystrybucji innym osobom, niż obywatele USA i Kanady. ˇ To oprogramowanie jest dostarczane "Takie jakie jest", bez żadnej gwarancji i ani autorzy, ani AT&T nie udzielają żadnej gwarancji jakiegokolwiek rodzaju dotyczącej dopasowania oprogramowania do jakichkolwiek potrzeb. ˇ Pomimo, że informacje w tym dokumencie uważa się za poprawne, ani autor, ani Laboratoria CIS, ani Uniwersytet Temple nie udzielają żadnych gwarancji i nie są odpowiedzialni za to, co się stanie kiedy będziesz stosował się do niniejszego instruktażu. Informacja zawarta w tym dokumencie jest udostępniana, taka jaka jest. 22.. OO CCFFSS CFS umożliwia niezależne od aplikacji szyfrowanie/deszyfrowanie danych na powłoce struktury plików i nie wymaga modyfikacji kodu istniejącego już systemu plików, ani żadnych modyfikacji jądra systemu. Symetryczne szyfrowanie zawarte w głównym strumieniu CFS bazuje na zmodyfikowanym standardzie DES pracującym w trybie CBC, który czyni brutalny atak przeciwko 56-bitowemu kluczowi DES prawie niemożliwym. Struktura CFS zastępuje główny strumień DES, szyfrem Fast-DES albo jakimkolwiek innym szyfrem, w doskonały, bezpośredni sposób. Gdybyś był zainteresowany przeczytaj Białą stronę o CFS <ftp://bach.cis.temple.edu/pub/Papers/cfs.ps>. 33.. KKOOMMPPIILLAACCJJAA II IINNSSTTAALLAACCJJAA CCFFSS.. CFS nie skompiluje się "samo" pod Linuxem. Podążaj za niniejszymi instrukcjami, jeśli chcesz uruchomić CFS na swoim Linuxie. Jest kilka metod osiągnięcia tego celu, ale najprostsza bazuje na modyfikacjach przeprowadzonych przez Olafa Kircha. Jego wersja CFS jest dostępna z: ftp.mathematic.th-darmstadt.de <ftp://ftp.mathematik.th- darmstadt.de/pub/linux/okir/cfs-1.1.2.tar.gz>. Olaf podpisał zmodyfikowane archiwum. Podpis PGP dla zmodyfikowanej wersji cfs-1.1.2 można otrzymać z: ftp.mathematic.th-darmstadt.de <ftp://ftp.mathematik.th-darmstadt.de/pub/linux/okir/>. W trybie jednego użytkownika, skompiluj cfs za pomoca komendy "make". (przeczytaj najpierw odpowiednie pliki, tzn. README, Changes itp. - przyp. autora). Po kompilacji, zainstaluj: cfsd, cdetach, ccat, cmkdir, cname i cattach do katalogu /usr/local/sbin - właścicielem tych plikow niech będzie root, a grupa, do której muszą one należeć to wheel. Nadaj plikom atrybuty 551. Dla bezpieczeństwa można wygenerować sumy kontrolne MD5, na czystych binariach. Następnie skopiuj te pliki razem z "md5sum", na media takie jak płyta CD, albo dyskietka i zabezpiecz ją przed zapisem. Utwórz katalog /.cfsfs, który będzie używany przez serwer CFS. Niech właścicielem katalogu będzie root, grupa root, a jego atrybuty niech wynoszą: 000. Utwórz katalog /securefs, ktory stanie się korzeniem drzewa Kryptograficznego Systemu Plików. Dodaj nastepującą linię do /etc/rc.d/rc.local: echo -n "Inicjacja Kryptograficznego Systemu Plików: " if [ -x /usr/local/sbin/cfsd ]; then /usr/local/sbin/cfsd > /dev/null echo -n "cfsd " /bin/mount -o port=3049,intr localhost:/.cfsfs /securefs echo -n "loopback" echo "done" else echo "Nie zainstalowano poprawnie Kryptograficznego System Plików" fi Użytkownicy Red Hata powinni dodać plik "cfsfs", który znajduje się na końcu tego dokumentu do katalogu /etc/rc.d/init.d. Następnie utworzyć dołączenie symboliczne "S65cfsfs" i umieścić go w odpowiednim katalogu startowym, np. rc3.d używając komendy: ln -s /etc/rc.d/init.d/cfsfs S65cfsfs we właściwym katalogu startowym. Następnie należy dodać linię: /.cfsfs localhost w pliku /etc/exports. Na końcu dodaj linię: portmap: 127.0.0.1 do pliku /etc/hosts.allow. Teraz powinieneś zrestartować komputer. Po jego uruchomieniu, użyj komendy mount żeby sprawdzić, czy CFS pracuje. Jeśli wszystko zadziałało, powinieneś zobaczyć nową następującą linię po wykonaniu komendy mount. localhost:/.cfsfs on /securefs type nfs(rw,port=3049,intr,addr=127.0.0.1) 44.. TTWWOORRZZEENNIIEE KKAATTAALLOOGGUU CCFFSS Żeby utworzyć szyfrowany katalog o nazwie "sekret" użyj komendy: cmkdir sekret Zostaniesz poproszony o podanie i zweryfikowanie hasła. Jeżeli to sie uda, utworzony zostanie katalog "sekret", który pojawi sie w bieżącym katalogu. Katalog ten będzie zawierał zaszyfrowane dane, które będzie można normalnie przeglądać pod warunkiem, że dołączymy ten katalog do drzewa CFS. Żeby można było swobodnie korzystać z informacji zawartych w katalogu, trzeba dołączyć go do drzewa katalogów zarządzanych przez CFS za pomoca komendy: cattach sekret Tajne CFS poprosi Cię o podanie hasła dostępu. Jeżeli będzie się ono zgadzało z hasłem podanym przy tworzeniu katalogu "sekret", dane zawarte w tym katalogu będą dostępne w niezakodowanej formie w /securefs/Tajne, TTYYLLKKOO dla użytkownika, który podał właściwe hasło dostępu. (nawet root nie może odczytać tych plików ;-) - przyp. tłumacza) Zauważ, że dołączenie katalogu do drzewa CFS, może zająć nawet minutę. (u mnie na P133/16MB RAM zajmuje nie więcej niż 5 sekund). Od tej pory możemy korzystać z katalogu /securefs/Tajne jak z każdego innego katalogu. Kiedy skończymy pracę powinniśmy użyć komendy: cdetach Tajne żeby uniemożliwić dostęp do danych. Komenda ta usuwa katalog "sekret" z listy katalogów zarządzanych przez CFS, co uniemożliwia odczytanie informacji w tym katalogu, gdyż są one zakodowane. Aby znowu umożliwić sobie dostęp do danych należy użyć komendy "cattach". 55.. OOCCHHRROONNAA CCFFSS Aby umożliwić użytkownikom dostęp do zaszyfrowanych danych, CFS wymaga od użytkownika hasła, które jest używane do wygenerowania zestawów kluczy. Zdobycie hasła przez niepowołane osoby pozwala intruzom odczytać zaszyfrowane dane, dlatego jest niezwykle ważne, aby użytkownik we własnym interesie chronił hasło dostępu. Istnieją dwie możliwości zdobycia Twojego hasła przez intruzów: 1. Sniffing 2. Atak przeciwko protokołowi. Informacje zawarte poniżej mogą zostać użyte, aby zmniejszyć prawdopodobieństwo skutecznego ataku przeciwko CFS. 1. Upewnij się, że binaria CFS są oryginalne: a. upewnij się, że: cattach, ccat, cmkdir, cname, cfsd i cdetach nie zostały zastąpione "koniami trojańskimi", które zapisują hasła dostępu, b. upewnij się, że CFS serwer (cfsd), nie został w jakiś sposób zmodyfikowany i że szyfruje dane poprawnie, c. atak przeciwko "cdetach" zazwyczaj wymaga małej modyfikacji kodu, która chroni klucze dostępu przed zniszczeniem i pozwala intruzowi uzyskać kontrolę nad zakodowanymi danymi. Najprostszym sposobem na upewnienie się, ze binaria nie zostały podmienione, jest zlinkowanie ich statycznie i umieszczenie na płycie CD. Inny sposób, to zlinkowanie statyczne, wygenerowanie sum kontrolnych za pomocą programu MD5 i umieszczenie ich na dyskietce zabezpieczonej przed zapisem. Przed użyciem CFS w systemie, zamountuj dyskietkę i sprawdź czy sumy kontrolne zgadzają się; w razie potrzeby zastępując podmienione programy ich oryginalnymi wersjami. 2. Uważaj na programy zapisujące do pliku dane wpisywane z klawiatury, tzw. keyboard grabbers i zawsze stosuj się do poniższych zasad: a. kiedy wpisujesz hasło w oknie xterm-a, upewnij się, że xterm jest oryginalny i używaj bezpiecznej klawiatury "Secure keyboard". To uniemożliwi przechwycenie hasła przez wyżej opisane programy, b. wpisuj hasła do terminali przyłączonych bezpośrednio do portów szeregowych systemu, gdy są one dostępne, c. upewnij się, że konsole (pty i tty) są ustawione tak, aby uniemożliwić innym odczytanie twojego hasła. 3. Nigdy nie wpisuj hasła poprzez sieć, nawet jeśli znajduje się ona za firewallem i wiesz, że nikt podłączony do sieci nie używa sniffera. Tyczy się to także sieci używających, tzw. scramble routers, ponieważ nie masz pewności, ze routery używają odpowiednio silnej enkrypcji, nie mają "tylnych drzwi" albo innych dziur, które pozwoliłyby intruzowi pokonać enkrypcję routera. Jeżeli jednak musisz podać hasło poprzez sieć, rób to tylko zaszyfrowanym kanałem pomiędzy hostami. (najbardziej znany i popularny jest (ssh) secure shell - przyp. autora) 4. Zawsze używaj komendy cdetach, kiedy nie pracujesz z danymi. Nawet kiedy przerywasz pracę na kilka minut. 55..11.. ZZNNAANNEE PPRROOBBLLEEMMYY ZZ CCFFSS W tym momencie jedyny znany problem, to komunikat "Permission denied", kiedy próbujesz dostać się do plików na płycie CD. 66.. PPOODDZZIIĘĘKKOOWWAANNIIAA Niżej wymienieni ludzie przyczynili się do powstania tego dokumentu: Topher Hughes z Dickinson College, Elie Rosenblum z Montgomery Blair High School, Mario D. Santana z Florida State University, Daniel P Zepeda i Olaf Kirch. ====================[początek pliku cfsfs]====================== #!/bin/sh # # $Header: /Secure/secure-doc/linux/CFS/RCS/CFS-Doc,v 1. 4 1996/03/15 04:49:37 alex Exp alex $ # # cfsfs Kryptograficzny System Plików # # Autor: Alexander O. Yuriev <alex@bach.cis.temple.edu> # # Derived from cron # Source function library. . /etc/rc.d/init.d/functions # See how we were called. case "$1" in start) echo -n "Uruchamianie Kryptograficznego Systemu Plików: " if [ -x /usr/local/sbin/cfsd ]; then /usr/local/sbin/cfsd > /dev/null /bin/mount -o port=3049,intr localhost:/.cfsfs /securefs echo "done" else echo -n "Nie zainstalowano poprawnie Kryptograficznego Systemu Plików" fi touch /var/lock/subsys/cfsfs ;; stop) echo -n "Zamykanie Kryptograficznego Systemu Plików: " umount /securefs killproc cfsd echo rm -f /var/lock/subsys/cfsfs ;; *) echo "Użycie: cfsfs {start|stop}" exit 1 esac exit 0 ====================[koniec pliku cfsfs]====================== 77.. DDOODDAATTEEKK AA Jak najwygodniej posługiwać się CFS... Copyright (C) 1997 by Krzysztof G. Baranowski (KGB@rubikon.net.pl) Ponieważ ciągłe używanie komend "cattach","cdetach" i przechodzenie pomiędzy wieloma odległymi od siebie katalogami może być na dłuższą metę męczące i może zniechęcić użytkownika od używania CFS, postanowiłem napisać ten dodatek, w którym przedstawię naprawdę bardzo proste porady, dzięki którym będzie można zhumanizować pracę z CFS. A zatem zacznijmy od początku. Najwygodniej jest utworzyć w domowym katalogu użytkownika ukryty katalog, w którym będziemy trzymać wszystkie zakodowane pliki. Wiąże się to jednak z ryzykiem. Bo jeżeli ktoś pozna nasze hasło dostępu to będzie mógł swobodnie manipulować naszymi plikami. Z drugiej strony posiadanie wielu katalogów może przyprawić użytkownika o ból głowy, gdyż będzie on musiał zapamiętać ogromną ilość haseł. A minimalna długość hasła dostępu do każdego katalogu wynosi 16 (szesnaście) znaków. ;-) Pozostańmy więc przy jednym katalogu. Zatem piszemy: /home/kris$ cmkdir .xfiles Zakładam, że użytkownik ma login: kris, a jego katalog domowy to /home/kris i używa bash'a jako domyślnego shella. Następnie CFS poprosi nas o hasło, które musi składać się przynajmniej z 16 znaków. Po weryfikacji hasła nasz tajny katalog ".xfiles" zostanie utworzony: Następnie dopiszmy dwa aliasy do pliku ".bashrc": alias dekoduj='cattach /home/kris/.xfiles tajne' alias koduj='cdetach tajne' W tym przypadku katalog, w którym będziemy mogli przeglądać odkodowane pliki posiada nazwę "tajne", a jego scieżka dostępu to: /securefs/tajne. Oczywiście nazwę możemy sobie wybrać dowolną. :-) Następnie w naszym domowym katalogu utwórzmy dołączenie symboliczne do katalogu /securefs/tajne za pomocą komendy: /home/kris$ ln -s /securefs/tajne tajne Wybór nazwy dołączenia także zależy od użytkownika. I to wszystko. Od tej pory używanie CFS staje się dziecinnie proste. Jeśli chcemy dostać się do naszego zakodowanego katalogu wpisujemy: /home/kris$ dekoduj i podajemy hasło. Komenda "cd tajne" od razu przenosi nas tam gdzie trzeba, gdzie możemy buszować sobie do woli :-), a "cd .." przenosi nas z powrotem do katalogu domowego. Proste i praktyczne. Po zakończeniu pracy wpisujemy: /home/kris$ koduj I już nikt nie odczyta naszych danych, włącznie z nami, chyba że użyjemy jeszcze raz komendy "dekoduj". Na koniec mała uwaga. Kopiowanie, przenoszenie plików, przechodzenie do katalogów będących pod kontrolą CFS może być trochę opóźnione. Związane jest to z enkrypcją/dekrypcją dokonywaną w czasie rzeczywistym. No to bawcie się dobrze. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/AX25-HOWTO.pl.txt������������������������������������������������������0100664�0001750�0001750�00000412540�06717116340�017134� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Linux AX25-HOWTO, Radio Amatorskie. Terry Dawson, VK2KTJ, terry@perf.no.itg.telecom.com.au. v1.4, 2 Marca 1997. BBeenneeddiicctt PP.. BBaarrsszzcczz,, KKBB22QQZZVV ppoosseeiiddoonn@@zziipplliinnkk..nneett -- ttłłuummaacczzee­­ nniiee nnaa ppoollsskkii,, ww11..44.. DDaattaa ttłłuummaacczzeenniiaa:: 2288 kkwwiieettnniiaa,, 11999977.. System Operacyjny Linux jest chyba jedynym na świecie systemem opera­ cyjnym, który szczyci się standardową i rodzimą obsługą protokołu AX.25 dla packet radio używanego przez operatorów Radia Amatorskiego po całym świecie. Dokument ten jest poświęcony temu jak zainstalować i skonfigurować tę obslugę. ______________________________________________________________________ Table of Contents: 1. Wstęp 1.1. Zmiany w stosunku do poprzednich wersji 1.2. Inne dokumentacje na ten temat 2. Gdzie znaleźć najnowszą wersję tego dokumentu 3. Protokoły dla Packet Radio a Linux 3.1. Jak to wszystko działa? 4. Składniki oprogramowania AX.25/NetRom. 4.1. Gdzie znaleźć jądro, narzędzia i zespół programów narzędziowych? 4.1.1. Źródła jądra 4.1.2. Narzędzia sieciowe 4.1.3. Programy narzędziowe AX.25 5. Instalacja oprogramowania AX.25/NetRom. 5.1. Kompilacja jądra. 5.1.1. Co jest nowego w jądrach 2.0.*+ModuleXX i 2.1.* ? 5.2. Narzędzia do ustawiania sieci 5.2.1. Budowa standardowej wersji net-tools. 5.3. Pogramy narzędziowe AX.25 6. Najpierw o znakach radioamatorkich , adresach, itp. 6.1. Czym są owe T1, T2, T3 i inne rzeczy? 6.2. Parametry, które dają się konfigurować w trakcie pracy. 7. Konfigurowanie portu AX.25. 7.1. Jak utworzyć plik /etc/ax25/axports? 7.2. Jak utworzyć interfejsy sieciowe AX.25? 7.2.1. Jak dołączyć urządzenie KISS? 7.2.1.1. Konfigurowanie urządzeń TNC o dwóch portach. 7.2.2. Jak doczepić urządzenie Baycom 7.2.3. Jak ustawić parametry dostępu do kanału AX.25? 7.2.4. Jak doczepić urządzenie DźwiękoModem? 7.2.4.1. Konfigurowanie karty dźwiękowej. 7.2.4.2. Jak ustawić interfejs DźwiękoModemu? 7.2.4.3. Jak ustawić parametry dostępu do kanału AX.25? 7.2.4.4. Ustalenie poziomu audio i dostrojenie sterownika 7.2.4.5. Przygotowanie części AX.25 jądra do wykorzystania DźwiękoModemu. 7.2.5. Jak dołaczyć urządzenie z kartą PI? 7.2.6. Jak doczepić urządzenie z kartą PacketTwin. 7.2.7. Jak doczepić generyczne urządzenie SCC? 7.2.7.1. Gdzie uzyskać i jak zbudować pakiet do narzędzi konfiguracyjnych? 7.2.7.2. Jak skonfigurować sterownik do twojej karty? 7.2.7.2.1. Ustawienie parametrów sprzętu. 7.2.7.3. Konfiguracja kanału. 7.2.7.4. Używanie sterownika. 7.2.7.5. Narzędzia 'sccstat' oraz 'sccparam'. 7.2.8. Jak utworzyć urządzenie BPQ z ethernetem? 7.2.9. Ustawienie węzła BPQ do współpracy z obsługą AX.25 pod Linuxem. 7.3. Ustawienie parametrów operacyjnych dla interfejsu AX.25 7.4. Ustawieniu routingu AX.25. 8. Ustawianie interfejsu AX.25 do pracy w TCP/IP. 9. Ustawienie portu dla NetRom. 9.1. Edycja pliku /etc/ax25/nrports 9.2. Ustawienie pliku /etc/ax25/nrbroadcast 9.3. Jak utworzyć interfejs sieciowy dla NetRom. 9.4. Odpalenie demona NetRom. 9.5. ustawienie routingu dla NetRom 10. Ustawienie interfejsu NetRom dla pracy w TCP/IP. 11. Ustawienie portu Rose 11.1. Ustawienie pliku /etc/ax25/rsports. 11.2. Jak doczepić sieciowy interfejs Rose? 11.3. Ustawienie routingu dla Rose. 12. Łączności AX.25/NetRom/Rose. 13. Ustawienie Linuxa do przyjmowania łączności. 13.1. Edycja pliku /etc/ax25/ax25d.conf. 13.2. Prosty przykład pliku ax25d.conf file. 13.3. Uruchamianie demona ax25d. 14. Ustawienie węzła. 14.1. Utworzenie pliku /etc/ax25/node.conf. 14.2. Utworzenie pliku /etc/ax25/node.perms. 14.3. Ustawienie węzła, aby był uruchamiany z ax25d. 14.4. Ustawienie węzła, aby był uruchamiany z 'inetd'. 15. Ustawienie programu axspawn. 15.1. Utworzenie pliku /etc/ax25/axspawn.conf. 16. Ustawienie PMS. 16.1. Utworzenie pliku /etc/ax25/pms.motd. 16.2. Utworzenie pliku /etc/ax25/pms.info. 16.3. Kojarzenie znaków AX.25 z kontami użytkowników 16.4. Dodanie PMS do pliku /etc/ax25/ax25d.conf. 16.5. Sprawdzenie PMS'a 17. Ustawienie programów user_call. 18. Kojarzenie znaków AX.25 z kontami użytkowników Linuxa. 19. Jak połączyć sieciowe oprogramowanie NOS z jądrem linuxa? 19.1. Łączenie NOS-a i Linuxa za pomocą 'fajki'. 20. Zapisy w pliku /proc. 21. Przykładowe konfiguracje. 21.1. Mała sieć z linuxem jako routerem dla lokalnej sieci radiowej 21.2. Konfiguracja przykładowa dla bramki z enkapsulacją IPIP. 22. Programowanie warstwy sieciowej AX.25, NetRom i Rose. 22.1. Rodziny adresów. 23. Pliki nagłówkowe. 23.1. Kwestia znaków i przykłady. 24. Dyskusja związana z Radiem Amatorskim i Linuxem. 25. Podziękowania. 26. Prawa autorskie. 27. Od tłumacza. 27.1. Podziękowania. ______________________________________________________________________ 11.. WWssttęępp Dokument ten był początkowo załącznikiem do HAM-HOWTO ale urósł za bardzo, aby można go było w ten sposób nadal pisać. Dokument ten opisuje w jaki sposób zainstalować i skonfigurować rodzimą obsługę protokołów AX25, NetRom oraz Rose na Linuxie. Podano tutaj kilka typowych konfiguracji, które mogą posłużyć jako model do dalszej pracy. Wersje protokołów radia amatorskiego pod Linuxem są bardzo elastyczne. Dla ludzi, którzy nie są zbytnio zapoznani z systemem operacyjnym Linux proces konfiguracji wydawać się może uciążliwy i skomplikowany. Zajmie ci to trochę czasu zanim zrozumiesz w jaki sposób wszystko ze sobą pasuje. Konfiguracja jest bardzo trudna jeśli wpierw nie zapoznasz się z Linuxem ogólnie. Nie oczekuj, że uda ci się przejść z jakiegoś środowiska do Linuxa bez zapoznania się uprzednio z samym Linuxem. 11..11.. ZZmmiiaannyy ww ssttoossuunnkkuu ddoo ppoopprrzzeeddnniicchh wweerrssjjii DDooddaattkkii.. dołączyłem informacje o łatce dla modułów. Dodałem parę ogólnych informacji o strukturze jądra. PPoopprraawwkkii.. Poprawiłem konfiguracje ax25d - podziękowania dla John Tanner, VK2ZXQ. Poprzestawiałem mnóstwo rzeczy, powinno teraz być bardziej logicznie. DDoo zzrroobbiieenniiaa.. Poprawić sekcję o SCC, obecna jest chyba zła. Rozwinąć sekcję programowania. Dodać odnośniki do dokumentacji źródeł AX25 i NetRom. 11..22.. IInnnnee ddookkuummeennttaaccjjee nnaa tteenn tteemmaatt Jest wiele związanych z tym tematem dokumentów. Jest sporo dokumentów traktujących o sprawach sieciowych pod Linuxem w sposób bardziej ogólny, które bardzo polecam ponieważ pomogą ci one w twoich wysiłkach i dadzą ci głebszy wgląd w inne możliwe konfiguracje. Oto one: HAM-HOWTO <http://sunsite.unc.edu/LDP/HOWTO/HAM-HOWTO.html> Ethernet-HOWTO <http://sunsite.unc.edu/LDP/HOWTO/Ethernet-HOWTO.html> NET-3-HOWTO <http://www.ippt.gov.pl/~ppogorze/JTZ/html/NET-3-HOWTO.pl.html> 22.. GGddzziiee zznnaalleeźźćć nnaajjnnoowwsszząą wweerrssjjęę tteeggoo ddookkuummeennttuu Najlepszym miejscem do znalezienia ostatniej wersji tego dokumentu jest Archiwum Linux Documentation Project. Linux Documentation Project prowadzi Web Server i dokument niniejszy pojawia się tam jako The AX25-HOWTO <http://sunsite.unc.edu/LDP/HOWTO/AX25-HOWTO.html>. Możesz też skontaktować się ze mną ale zwykle przekazuję ostatnie wersje tego dokumentu koordynatorowi projektu LDP, więc jeśli go tam nie ma to są duże szanse, że jeszcze go nie skończyłem. 33.. PPrroottookkoołłyy ddllaa PPaacckkeett RRaaddiioo aa LLiinnuuxx Protokół _A_X_._2_5 oferuje dwa tryby operacji: connected i connectionless. Używany jest albo do połączeń typu stacja-do-stacji albo jako medium dla innych protokołow takich jak TCP/IP lub NetRom. Podobny jest w swej strukturze do X.25 level 2 z pewnymi modyfikacjami, które czynią go bardziej użytecznym do pracy w środowisku radia amatorskiego. Protokół _N_e_t_R_o_m jest próbą pełnego protokołu sieciowego i w swej najniższej warstwie używa AX.25 jako protokołu typu datalink. Dostarcza on sieciowej warstwy, która jest adaptowaną formą AX.25. Protokół NetRom cechuje się dynamicznym routingiem, posiada też funkcję pseudonimów dla węzłów. Protokół _R_o_s_e został wynaleziony i po raz pierwszy zastosowany przez Tom'a Moulton, W2VY, i jest wariacją protokołu X.25 w warstwie packet. Pomyślany jest tak, że AX.25 jest jego warstwą typu datalink. Sam również dostarcza warstwę sieciową. Adresy Rose przyjmują formę 10 cyfrowych numerków. Pierwsze cztery cyfry stanowią Data Network Identification Code (DNIC) i wzięte zostały z załącznika B z zaleceń CCITT X.121. Więcej informacji na temat protokołu Rose można uzyskać z Serwera RATS. Początkowo, wczesne oprogramowanie AX.25 współpracujące z jądrem Linuxa wypracował Alan Cox. Następnie Jonathon Naylor przejął rozwijający się projekt dodając obługę NetRomu i Rose; obecnie on właśnie zajmuje się opracowywaniem źródeł AX.25 współpracujego z jądrem Linuxa. DAMA zostało napisane przez Joerg Reuter. Obsługę karty dźwiękowej jako modemu oraz modem Baycom dodał Thomas Sailor. Programy narzędziowe AX.25 są obecnie prowadzone przeze mnie. Linux obsługuje TNC w trybie KISS (Terminal Node Controllers), kartę Ottawa PI, kartę Gracillis PacketTwin oraz inne oparte na scalaku SCC Z8530, modem Baycom zarówno seryjny jak i równoległy. Nowy, od Tomasza, sterownik DźwiękoModemu obsługuje karty dźwiękowe SoundBlaser oraz te zbudowane w oparciu o Crystal chipset. Programy użytkownika zawierają prosty PMS (Personal Message System), program latarnie, liniowy program 'call' do połaczeń, 'listen' przykładowy program do uchwycenia surowych ramek AX.25 na poziomie interfejsu, oraz programy do konfiguracji NetRomu. Załączono również program, ktory jest jakby serwerem AX.25 przechwytującym i rozprowadzającym wchodzące połączenia; jest też demonik dla NetRomu, który wykonuje całą czarną robotę dla obsługi protokołu NetRom. 33..11.. JJaakk ttoo wwsszzyyssttkkoo ddzziiaałłaa?? AX.25 pod Linuxem jest zupełnie nową implementacją. Choć na pozór wygląda podobnie do NOS, BPQ lub innych implementacji AX.25 to jednak nie przypomina żadnej z nich ani nie jest identyczną z żadną z nich. AX.25 pod Linuxem można skonfigurować tak, że będzie zachowywać się niemalże tak jak inne implementacje AX.25 ale proces konfiguracyjny jest bardzo odmienny. Aby dopomóc ci w sposobie myślenia przy konfigurowaniu, sekcja ta stara się wyjaśnić niektóre strukturalne cechy AX.25 oraz umieszcza je w ogólnej strukturze Linuxa. UUpprroosszzcczzoonnyy sscchheemmaatt wwaarrssttww pprroottookkoołłóóww ssiieecciioowwyycchh. ----------------------------------------------- | AF_AX25 | AF_NETROM | AF_INET | AF_ROSE | |=========|===========|=============|=========| | | | | | | | | TCP/IP | | | | ---------- | | | | NetRom | | Rose | | ------------------------------------- | AX.25 | ----------------------------------------------- Schemat ten ilustruje poprostu, że NetRom, TCP/IP i Rose wszystkie razem rezydują na protokole AX.25 ale że każdy z nich traktowany jest osobno u poziomu programowania na interfejsie. Nazwy 'AF' to nazwy nadawane dla _A_d_d_r_e_s_s _F_a_m_i_l_y każdego z tych protokołów podczas pisania dla nich programów. Ważne tutaj jest to, że konfiguracja urządzenia AX.25 kluczowo wpływa na to jak będą konfigurowane NetRom, Rose oraz TCP/IP. SScchheemmaatt mmoodduułłóóww ww iimmpplleemmeennttaaccjjii ssiieecciioowweejj LLiinnuuxxaa ---------------------------------------------------------------------------- User | Programs | call node || Daemons | ax25d mheardd | | pms mheard || | inetd netromd ---------------------------------------------------------------------------- | Sockets | open(), close(), listen(), read(), write(), connect() | |------------------------------------------------------ | | AF_AX25 | AF_NETROM | AF_ROSE | AF_INET |------------------------------------------------------------------ Kernel | Protocols | AX.25 | NetRom | Rose | IP/TCP/UDP |------------------------------------------------------------------ | Devices | ax0,ax1 | nr0,nr1 | rose0,rose1 | eth0,ppp0 |------------------------------------------------------------------ | Drivers | Kiss PI2 PacketTwin SCC BPQ | slip ppp | | Soundmodem Baycom | ethernet ---------------------------------------------------------------------------- Hardware | PI2 Card, PacketTwin Card, SCC card, Serial port, Ethernet Card ---------------------------------------------------------------------------- Ten schemat jest troszeczkę bardziej ogólny od pierwszego. Stara się on ukazać zależność pomiędzy programami narzędziowymi, jądrem oraz sprzętem. Pokazuje też zależność pomiędzy interfejsem programowania gniazd dla aplikacji, właściwymi modułami protokołów, interfejsami sieciowymi jądra, oraz sterownikami urządzeń. Każdy element schematu polega na tym elemencie, który jest poniżej niego samego i konfigu­ rację trzeba rozpoczynać od samego dołu w górę. Więc dla przykładu, jeśli chesz odpalać program _c_a_l_l to musisz również skonfigurować sprzęt, następnie upewnić się, że jądro posiada odpowiedni sterownik urządzenia, dalej musisz stworzyć właściwy interfejs sieciowy oraz, że jądro zawiera właściwy protokół, który oferuje odpowiedni dla programu _c_a_l_l interfejs programowania. W takiej hierarchii starałem się też rozłozyć ten dokument. 44.. SSkkłłaaddnniikkii oopprrooggrraammoowwaanniiaa AAXX..2255//NNeettRRoomm.. Oprogramowanie AX.25 składa się z trzech części: źrodeł jądra, narzędzi do konfiguracji sieci oraz programów narzędziowych. Wersje jądra Linuxa 2.0.xx zawierają w sobie pierwotnie sterowniki dla AX.25, NetRom, dla kart Z8530 SCC, PacketTwin i Gracillis. Zostały one znacząco udoskonalone w jądrach 2.1.xx. Niestety, pozostała część jądra 2.1.* czyni je bardzą chwiejnymi i nie nadają sie w takim stanie do załączenia w stabilnych wersjach jąder. Aby zaradzić temu problemowi, Jonathon Naylor przygotował zespół łatek, które oblugę protokołów radia amatorskiego w jądrach 2.0.xx wynoszą do poziomu standardu jąder 2.1.*. Jest to bardzą łatwe w zaaplikowaniu i wprowadza wachlarz usług, które są nieobecne w standardowych jądrach, np. obługę Rose. 44..11.. GGddzziiee zznnaalleeźźćć jjąąddrroo,, nnaarrzzęęddzziiaa ii zzeessppóółł pprrooggrraammóóww nnaarrzzęęddzziioowwyycchh?? 44..11..11.. ŹŹrróóddłłaa jjąąddrraa Źródła jądra należy szukać w jego zwyczajnym miejscu: Obecna kopia zespołu łatek według Jonathon'a znajduje się na: 44..11..22.. NNaarrzzęęddzziiaa ssiieecciioowwee Ostatnia wersja _a_l_p_h_a standardowych narzędzi sieciowych Linuxa obsługuje AX.25 i NetRom i można ją znależć tutaj: lub ftp://ftp.linux.org.uk/pub/linux/Networking/base/net- tools-1.32-alpha.tar.gz Ostani pakiet ipfwadm można znaleźć tu: 44..11..33.. PPrrooggrraammyy nnaarrzzęęddzziioowwee AAXX..2255 Istnieją dwie odmienne żyły programów narzędziowych AX.25. Jedna przeznaczona jest do pracy z jądrami 2.0.* a druga albo do jąder 2.1.* lub do kombinacji: jądro 2.0.28+łatka module10. Numer wersji pakietu ax25-utils wskazuje na najstarszą wersję jądra, z którą mogą pracować. Wybierz sobie taką wersję pakietu ax25-utils, która będzie pracować z jądrem twojego systemu. Programy narzędziowe dla 2.1.22 i późniejszych, oraz ax25-utils+module można znaleźć na domowej stronie Jonathon'a Naylor: ftp://ftp.cs.nott.ac.uk/jsn/ax25-utils-2.1.22b.tar.gz lub na: ftp://sunsite.unc.edu/pub/Linux/apps/ham/ax25/ax25-utils-2.1.22b.tar.gz Starsze narzędzia, zdolne do pracy z niepołatanym jądrem 2.0.29 nazywają się ax25-utils-2.0.12c.tar.gz w tym samym miejscu. 55.. IInnssttaallaaccjjaa oopprrooggrraammoowwaanniiaa AAXX..2255//NNeettRRoomm.. Aby w sposób udany zainstalować obsługę AX.25/NetRom na systemie Linux należy skonfigurować i zainstalaować właściwe jądro a następnie programy narzędziowe AX.25. 55..11.. KKoommppiillaaccjjaa jjąąddrraa.. Jeśli jesteś już zaznajomiony z kompilowaniem jądra na Linuxie to możesz pominąć tę sekcję, upewnij się tylko, że wybrałeś właściwe opcje dla jądra. Jeśli nie, to czytaj dalej. Normalnie, źródła jądra należy rozpakowywać będąc w katalogu /usr/src do podkatalogu zwanego linux. Aby to uczynić należy się zalogować jako root a następnie wykonać takie czynności: # cd /usr/src # mv linux linux.old # tar xvfz linux-2.0.29.tar.gz # tar xvfz ax25-module-12.tar.gz # patch -p0 < /usr/src/ax25-module-12/ax25-2.0.29-2.1.22.diff # cd linux Po tym jak rozpakowałeś i połatałeś jądro, musisz odpalić skrypt konfiguracyjny i zaznaczyć opcje, które odpowiadają układowi twojego sprzętu oraz te, które chcesz, aby były obecne w jądrze. Wystarczy napisać: # make config Jeśli wolisz metodę opartą o menu to można też spróbować: # make menuconfig Opiszę tutaj metodę zasadniczą, a ty wybierz taką jaka ci najbardziej odpowiada. W obu przypadkach zostaniesz postawiony wobec pytań, na które trzeba odpowiedzieć "tak" lub "nie". (Zauważ, że można też odpowiedzieć naciśnięciem "M" jeśli używaż modułów w Linuxie. Dla uproszczenia jednak przyjmuję, że ich nie używasz, więc dokonaj właściwych poprawek jeśli jest przeciwnie.) Najbardziej zasadniczymi opcjami dla skonfigurowania AX.25 są: Code maturity level options ---> ... [*] Prompt for development and/or incomplete code/drivers ... General setup ---> ... [*] Networking support ... Networking options ---> ... [*] TCP/IP networking [?] IP: forwarding/gatewaying ... [?] IP: tunneling ... [?] IP: Allow large windows (not recommended if <16Mb of memory) ... [*] Amateur Radio AX.25 Level 2 [?] Amateur Radio NET/ROM [?] Amateur Radio X.25 PLP (Rose) ... Network device support ---> [*] Network device support ... [*] Radio network interfaces [?] BAYCOM ser12 and par96 driver for AX.25 [?] Soundcard modem driver for AX.25 [?] Soundmodem support for Soundblaster and compatible cards [?] Soundmodem support for WSS and Crystal cards [?] Soundmodem support for 1200 baud AFSK modulation [?] Soundmodem support for 4800 baud HAPN-1 modulation [?] Soundmodem support for 9600 baud FSK G3RUH modulation [?] Serial port KISS driver for AX.25 [?] BPQ Ethernet driver for AX.25 [?] Gracilis PackeTwin support for AX.25 [?] Ottawa PI and PI/2 support for AX.25 [?] Z8530 SCC KISS emulation driver for AX.25 ... Opcje, które oznakowałem jako '*' to te, na które musisz odpowiedzieć 'Y' - tak. Reszta jest zależna od sprzętu, jaki posiadasz oraz od opcji, które sobie życzysz. Niektóre z tych opcji są opisane trochę poźniej, więc jeśli nie wiesz jeszcze czego chcesz to czytaj dalej a potem tutaj wróć. Po skończeniu konfiguracji jądra powinieneś teraz gładko skompilować jądro: # make dep # make clean # make zImage Upewnij się, aby skopiować plik arch/i386/boot/zImage tam gdzie być powinien oraz zrób edycje /etc/lilo oraz restartuj lilo, abyś fakty­ cznie odpalił system z nowego jądra. 55..11..11.. CCoo jjeesstt nnoowweeggoo ww jjąąddrraacchh 22..00..**++MMoodduulleeXXXX ii 22..11..** ?? Jądra 2.1.* zawierają udoskonalone wersję niemalże wszyskich protokołów oraz sterowników. Najbardziej znaczące nowinki to: modularyzacja protokoły i sterowniki zostały zmodularyzowane tak, że można nimi do woli żąglować poleceniami insmod, rmmod. Redukuje to wymogi pamięciowe dla jądra przy sporadycznie używanych modułach oraz sprawia, że polowanie na pluskwy i pielęgancja są łatwiejsze. wszystkie sterowniki są teraz sterownikami sieciowymi wszelkie urządzenia jak Baycom, SCC, PacketTwin, Gracillis itp. oferują teraz normalny interfejs sieciowy, tzn. wyglądają teraz tak jak sterownik Ethernetu; nie wyglądają już tak jak TNC w trybie KISS. Na życzenie, można zbudować interfejs kiss do tych urządzeń przy pomocy programiku 'net2kiss'. usunięto pluskwy wiele pluskw zostało wykrytych i zniszczonych dodano też do sterowników i protokołów sporo nowych cech i funkcji. 55..22.. NNaarrzzęęddzziiaa ddoo uussttaawwiiaanniiaa ssiieeccii Teraz, po wykompilowaniu jądra, powinieneś również skompilować nowe narzędzia do konfiguracji sieci. Przy ich pomocy będziesz mógł manipulować interfejsami sieciowymi oraz dodawać routing do tablic routingowych. Nowa wersja _a_l_p_h_a standardowego pakietu net-tools zawiera obsługę AX.25 i NetRom. Sprawdzałem to i wydaje się, że u mnie działa to świetnie. 55..22..11.. BBuuddoowwaa ssttaannddaarrddoowweejj wweerrssjjii nneett--ttoooollss.. Nie zapomnij przeczytać pliku Readme i zastosować się to wszelkich tam podanych wskazówek. Czynności jakie ja wykonałem, by skompilować net- tools to: # cd /usr/src # tar xvfz net-tools-1.32-alpha.tar.gz # cd net-tools-1.32-alpha # make config W tym stadium zaoferowane ci zostaną pytania podobnie jak przy kompi­ lacji jądra. Upewnij się, aby zaznaczyć obsługę jakichkolwiek pro­ toków, które zamierzasz używać.W razie, gdybyś nie wiedział co odpowiedzieć, zaznacz "Y". Net-tools powinny skompilować się gładko ze źródłami jądra bez żadnych ostrzeżeń. gdy kompilacja ustanie, wówczas wydaj polecenie: # make install to zainstaluje programy w ich właściwe miejsca. Jeśli planujesz używać usługę IP firewall to potrzebujesz ostatnich narzędzi ipfwadm do administracji ściany ogniowej. Narzędzie to podmienia starsze ipfw, które nie pracuje już z nowszymi jądrami. Programik ipfwadm skompilowałem w taki sposób: # cd /usr/src # tar xvfz ipfwadm-2.0beta2.tar.gz # cd ipfwadm-2.0beta2 # make install # cp ipfwadm.8 /usr/man/man8 # cp ipfw.4 /usr/man/man4 55..33.. PPooggrraammyy nnaarrzzęęddzziioowwee AAXX..2255 Po skompilowaniu i restarcie nowego jądra, potrzebujesz jeszcze skompilować programy narzędziowe. Aby skompilować programy narzędziowe należy wykonać takie czynności: # cd /usr/src # tax xvfz ax25-utils-2.1.22b.tar.gz # cd ax25-utils-2.1.22b # make config # make # make install Pliki zostaną zainstalowane pierwotnie do katalogu /usr w podkatalogi takie jak: bin, sbin, etc and man. Jeśli pokażą ci się ostrzeżenia podobnej treści: gcc -Wall -Wstrict-prototypes -O2 -I../lib -c call.c call.c: In function `statline': call.c:268: warning: implicit declaration of function `attron' call.c:268: `A_REVERSE' undeclared (first use this function) call.c:268: (Each undeclared identifier is reported only once call.c:268: for each function it appears in.) zatem powinieneś pozprawdzać czy masz na swoim systemie zainstalowany poprawnie pakiet ncurses. Skrypt konfiguracyjny stara się zlokalizować pakiet ncurses na twoim systemie w znanych katalogach. Niektóre jednak instalacje źle wpisują ncurses i skryp nie potrafi ich znaleźć. 66.. NNaajjppiieerrww oo zznnaakkaacchh rraaddiiooaammaattoorrkkiicchh ,, aaddrreessaacchh,, iittpp.. Każdy port AX.25 lub NetRom na twoim systemie musi mieć przydzielony znak i przypięty do niego numeryczny identyfikator stacji. Rzeczy te konfigurujemy w plikach, które zostały opisane dalej. Niektóre implementacje AX.25, np. BPQ lub NOS, pozwalają na przypisanie tego samego znaku/indentyfikatora na obu portach AX.25 i NetRom. Linux na to nie pozwala z pewnych technicznych, skomplikowanych powodów. W praktyce, nie jest to taki wielki problem. Oznacza to, że przy konfigurowaniu trzeba być świadomy tych rzeczy i wziąć je pod uwagę: 1. Każdy port ax.25 lub NetRom musi być konfigurowany z unikalnym znakiem/identyfikatorem. 2. TCP/IP używać będzie tego znaku/identyfikatora, na którego porcie odbywa się odbiór i transmisja AX.25, tj. ten, który skonfigurowałeś w punkcie 1. 3. NetRom używać będzie tego znaku/identyfikatora, który został mu przydzielony w jego własnym pliku konfiguracyjnym. Znak ten używany będzie tylko wówczas, gdy twój NetRom rozmawia z innym NetRomem. Nie jest to znak, ktory użytkownicy AX.25 mają używać przy wchodzeniu do twojego węzła. Więcej na ten temat powiemy dalej. 4. Rose, pierwotnie, będzie używał znaku/identyfikatora należącego do portu AX.25 chyba, że wyraźnie zostanie przekonfigurowany poleceniem 'rsparms' na inny. Jeśli przydzielisz znak/identyfikator dla Rose poleceniem 'rsparms' wówczas Rose używać będzie tego znaku na wszystkich swych portach. 5. Inne programy, takie jak 'ax25d' mogą słuchać na jakichkolwiek znakach/identyfikatorach i w dodatku można te znaki duplikować po wszelakich portach. 6. Będąc ostrożny przy routingu, możesz nawet przyznac wszystkim portom ten sam adres IP. 66..11.. CCzzyymm ssąą oowwee TT11,, TT22,, TT33 ii iinnnnee rrzzeecczzyy?? Analogicznie, tak jak nie każdy radiooperator jest inżynierem, tak samo nie każda implementacja AX.25 jest zgodna ze standardem TNC2. Linux stosuje nomenklaturę, która różni się w pewnym względzie od tej, jakiej używałbyś,jeśli jedynym twoim doświadczeniem w packet radio byłby TNC. Podana niżej tablica powinna być pomocna w interpretacji czym są poszczególne elementy, które daje się konfigurować, zatem jeśli napotkasz je później w tym tekście pomoże ci to w ich zrozumieniu. ------------------------------------------------------------------- Linux | TAPR TNC | Description ------------------------------------------------------------------- T1 | FRACK | czas wyczekiwania przed retransmisją | | niepotwierdzonej ramki ------------------------------------------------------------------- T2 | RESPTIME | minimalny czas wyczekiwania na inną ramkę | | przed transmisją potwierdzenia | | ------------------------------------------------------------------- T3 | CHECK | czas wyczekiwania pomiędzy sprawdzeniami czy | | lącze jest nadal aktywne ------------------------------------------------------------------- N2 | RETRY | ilość retransmisji zanim założymy, że lącze | | padło ------------------------------------------------------------------- Idle | | okres czasu, który łącze może stać bezczynnie | | zanim zostanie zamknięte ------------------------------------------------------------------- Window | MAXFRAME | maksymalna liczba niepotwierdzonych, | | wytransmitowanych ramek ------------------------------------------------------------------- 66..22.. PPaarraammeettrryy,, kkttóórree ddaajjąą ssiięę kkoonnffiigguurroowwaaćć ww ttrraakkcciiee pprraaccyy.. Jądra 2.1.* oraz 2.0.29+module mają nową cechę, która pozwala na zmianę uprzednio niemożliwych do manipulacji wartości w trakcie pracy. Jeśli uważnie przyjrzysz się strukturze katalogu /proc/sys/net/ to zauważysz parę plików o sugestywnych nazwach, które wskazują na różne parametry do konfigurowania sieci. Każdy plik w katalogu /proc/sys/net/ax25 reprezentuje jeden ustawiony port AX.25. Nazwa pliku odnosi się do nazwy portu. Struktura plików wygląda następująco: No. Nazwa Znaczenie Wartość domyślna 1 IP Default Mode 0=DG 1=VC 0 2 AX.25 Default Mode 0=Normal 1=Extended 0 3 Allow Vanilla Connects 0=No 1=Yes 1 4 Backoff 0=Linear 1=Exponential 1 5 Connected Mode 0=No 1=Yes 1 6 Standard Window 1 <= N <= 7 2 7 Extended Window 1 <= N <= 63 32 8 T1 Timeout 1s <= N <= 30s 10s 9 T2 Timeout 1s <= N <= 20s 3s 10 T3 Timeout 0s <= N <= 3600s 300s 11 Idle Timeout 0m <= N 20m 12 N2 1 <= N <= 31 10 13 AX.25 Frame Length 1 <= N <= 512 256 14 Max Queue 1 <= N <= 20 2 15 Digipeater Mode 0=None 1=Inband 2=XBand 3=Both 3 W powyższej tablicy T1, T2, T3 zostały podane w sekundach a Idle Timout podano w minutach. Zauważ jednak, że wartości używane przez interfejs sysctl mierzone są wartościami wewnętrznymi, gdzie czas w sekundach mnożony jest przez 10, co pozwala na rozdrobnienie na 1/10 sekundy. Tam, gdzie liczniki pozwalają na wartość zero, np. T3 lub Idle, zero oznacza, że licznik jest wyłączony. 77.. KKoonnffiigguurroowwaanniiee ppoorrttuu AAXX..2255.. Każdy program AX.25 wpierw czyta plik konfiguracyjny, aby uzyskać potrzebne parametry poszczególnego portu AX.25, obecnego na twoim systemie Linux. Dla portów AX.25 jest to plik /etc/ax25/axports. Każdy port AX.25, który chcesz mieć na swoim systemie, musi być w tym pliku opisany. 77..11.. JJaakk uuttwwoorrzzyyćć pplliikk //eettcc//aaxx2255//aaxxppoorrttss?? Plik /etc/ax25/axports to prosty tekstowy plik, który tworzymy zwykłym edytorem. Format pliku /etc/ax25/axports jest następujący: portname callsign baudrate paclen window description Gdzie: portname to wolna nazwa, krórą należy ochrzcić port, używana do nazewnictwa tego portu callsign znak/identyfikator, który przypisujesz dla portu AX.25 paclen to maksymalna długość pakietów, które będą możliwe na tym porcie przy transmisjch AX.25 w trybie 'connected'. window to parametr (K) AX.25 window. To samo co MAXFRAME w wielu urządzeniach TNC. description to dowolny opis tego portu W moim przypadku wygląda to tak: radio VK2KTJ-15 4800 256 2 4800bps 144.800 MHz ether VK2KTJ-14 10000000 256 2 BPQ/ethernet device Pamiętaj, że należy przypisać unikalny znak/identyfikator dla każdego portu AX.25, który utworzysz. Wprowadź jeden wpis dla każdego urządzenia AX.25, które chcesz używać. Odnosi się to do portów: KISS, Baycom, SCC, PI, PT, DźwiękoModem. W tym miejscu każdy wpis ma odnosić się do każdego z osobna urządzenia AX.25. Wpisy w tym pliku powiązane są z interfejsami sieciowymi poprzez ich znak/identyfikator. Plik ten używany będzie przez programy opisane dalej. 77..22.. JJaakk uuttwwoorrzzyyćć iinntteerrffeejjssyy ssiieecciioowwee AAXX..2255?? Interfejs sieciowy jest tym, co widać na ekranie po wydaniu polecenia 'ifconfig'. Jest to objekt, poprzez który jądro Linuxa odbiera i wysyła dane sieciowe. Prawie zawsze interfejs sieciowy związany jest z fizycznym portem, są jednak wypadki, kiedy nie jest to konieczne. Interfejs sieciowy odnosi się wówczas bezpośrednio do sterownika urządzenia fizycznego. W oprogramowaniu AX.25 pod Linuxem istnieje wiele sterowników urządzeń fizycznych. Najpopularniejszym jest zapewne sterownik KISS, lecz są też inne jak np. sterownik SCC, Baycom czy SoundModem (DźwiękoModem). Każdy z tych sterowników, przy uruchomianiu go, spowoduje również otworzenie interfejsu sieciowego. 77..22..11.. JJaakk ddoołłąącczzyyćć uurrzząąddzzeenniiee KKIISSSS?? Najczęściej spotykaną konfiguracją bedzię chyba KISS TNC na porcie seryjnym. Należy uprzednio skonfigurować sam TNC i doczepić go do portu seryjnego. Aby wprowadzić swój TNC w tryb KISS można użyć programu terminala, jak np. minicom lub seyon. Z kolei, aby utworzyć urządzenie KISS należy użyć polecenia 'kissattach', które to polecenie w swej najprostszej formie może wyglądać tak: # /usr/sbin/kissattach /dev/ttyS0 radio # kissparms -p radio -t 100 -s 100 -r 25 Polecenie kissattach utworzy też sieciowy interfejs KISS. Interfejsy te noszą wtedy nazwę od 'ax[0-9]'. Przy pierwszym wydaniu polecenia 'kissattach' powstaje 'ax0', przy następnym 'ax1', itd. Każdy interfejs KISS powiązany jest ze swoim portem seryjnym. Polecenie 'kissparms' pozwala na manipulowanie różnymi parametrami interfejsu KISS. W podanym wyżej przykładzie dołączony zostałby sieciowy interfejs KISS do seryjnego urządzenia w Linuxie '/dev/ttyS0' i do portu oznaczonego w pliku /etc/ax25/axports jako 'radio'. Następnie konfigurowany on jest z wartościami 100 milisekund dla txdelay oraz slottime i wartością 25 dla ppersist. Więcej informacji można znaleźć w man pages w Linuxie. 77..22..11..11.. KKoonnffiigguurroowwaanniiee uurrzząąddzzeeńń TTNNCC oo ddwwóócchh ppoorrttaacchh.. Programik 'mkiss', zawarty w programach narzędziowych ax25-utils, pozwala na wykorzystanie obydwu modemów w urądzeniach TNC o dwóch portach. Ustawienie jest dość proste. Programik ten działa tak, że biorąc pojedyncze urządzenie dołaczone do wieloportowego TNC przedstawia je tak, iż wygląda ono, jakby to były dwa urządzenia, każde z własnym TNC. Czynność tę trzeba wykonać zanim zaczniesz jakąkolwiek konfigurację AX.25. Powstałe na skutek tego interfejsy pseudo-TTY, (/dev/ttypf*), które nie są rzeczywistymi urządzeniami seryjnymi, wykorzystywane są z kolei do konfiguracji AX.25. Interfejsy Pseudo-TTY wyprowadzają swego rodzaju fajkę, poprzez którą programy umiejące nadawać do urządzeń /dev/tty mogą sie porozumiewać między sobą. Każda fajka posiada końcówkę master i slave. Końcówki master są ogólnie oznaczane jako /dev/ptyp*, końcówki slave mają emblem /dev/ttyp*. Pomiędzy master a slave istnieje intymna zależnośc, zatem /dev/ptyp0 stanowi koncówkę master dla przewodu, ktory ma /dev/ttyp0 na końcówce slave. Zanim otworzysz końcówkę slave, musisz najpierw otworzyć końcówkę master. 'mkiss' wykorzystuje ten właśnie mechanizm do rozczepienia pojedynczego urządzenia seryjnego, na osobne. Przykład: jeśli posiadasz TNC o dwóch portach i jest ono doczepione do seryjnego urządzenia /dev/ttyS0 o prędkości 9600 bps, to polecenie: # /usr/sbin/mkiss -s 9600 /dev/ttyS0 /dev/ptyp0 /dev/ptyp1 # /usr/sbin/kissattach /dev/ttyp0 port1 # /usr/sbin/kissattach /dev/ttyp1 port2 utworzy dwa interfejsy pseudo-tty, a każde z nich wyglądać będzie tak, jakby było pojedynczym seryjnym portem, każde z własnym TNC. Wowczas interfejsy /dev/ttyp0 i /dev/ttyp1 możesz potraktować tak jak inne konwencjonalne seryjne porty z doczepionymi do nich urządzeniami TNC. W praktyce oznacza to, ze odpaliłbyś dla obydwu polecenie 'kissattach' przy zachowaniu wpisów o portach AX.25 jako port1 i port2. Nie należy odpalać polecenia 'kissattach' dla rzeczywistego urządzenia /dev/ttyS0 ponieważ zajęte zostało ono przez program 'mkiss'. Polecenie 'mkiss' przyjmuje szereg dodatkowych argumentów, które są do twojej dyspozycji. Oto ich streszczenie: -c pozwala na dodanie checksum o jednym byte. Większość implementacji KISS tego nie obsluguje, jest to możliwe przy użyciu Rom'u G8BPG KISS. -s <speed> ustawia prędkość portu urządzenia seryjnego. -h omożliwia hardware handshaking na porcie seryjnym, pierwotnie jest wyłączone. Większść implementacji KISS tego nie obsługuje. Niektóre jednak to mają. -l umożliwia prowadzenie log'u do plików typu syslog. 77..22..22.. JJaakk ddoocczzeeppiićć uurrzząąddzzeenniiee BBaayyccoomm Wbrew powszechnemu przekonaniu, że nie będzie to zbyt dobrze działać, Thomas Sailor podjął się rozbudowy obsługi modemów Baycom pod Linuxem. Jego sterowniki obsługują modemy Ser12 na port seryjny, oraz Par96 i udoskonalony PicPar na porty równoległe. Więcej informacji o samych modemach można uzyskać na Web Serverze Baycoma Najpierw musisz sprawdzić adres wejścia/wyścia oraz adresy bazowe portu seryjnego lub równoległego, do którego masz doczepiony modem Baycom. Z tą informacją możesz dopiero konfigurować sterownik samego Baycom'a. Programik sethdlc pozwala na użycie tych parametrów ze sterownikiem, lub, jeśli masz tylko jeden modem Baycom i używasz modułów w Linuxie to można te parametry podać ręcznie jako opcje dla programu 'insmod' ładującego moduł Baycom'a. Dla przykladu, prosty układ. Wyłączenie sterownika urządzenia seryjnego COM1:, a następnie ustawienie tam sterownika modemu Baycom Ser12 na COM1: z użyciem detekcji typu software DCD: # setserial /dev/ttyS0 uart none # insmod baycom mode="ser12*" iobase=0x3f8 irq=4 Albo modem Par96 na porcie równoległym LPT1: z użyciem detekcji hardware DCD: # insmod baycom mode="par96" iobase=0x378 irq=7 options=0 Nie jest to jednak najlepszy sposób. Programik sethdlc działa dobrze zarówno z jednym jak i z wieloma urządzeniami. Podręcznik systemowy 'man' programiku sethdlc opisuje szczegóły na ten temat, jednak kilka przykładów pozwoli zilustrować ważniejsze aspekty tejże konfiguracji. Poniższy przykład zakłada, że załadowałeś już moduł Baycom'a poleceniem: # insmod baycom Ustawienie sterownika dla interfejsu bc0 stusując równoległy modem Baycom na LPT1: detekcja typu software DCD: # sethdlc -p -i bc0 mode par96 io 0x378 irq 7 Ustawienie sterownika dla interfejsu bc1 stosując seryjny modem Baycom na COM1:: # sethdlc -p -i bc1 mode "ser12*" io 0x3f8 irq 4 77..22..33.. JJaakk uussttaawwiićć ppaarraammeettrryy ddoossttęęppuu ddoo kkaannaałłuu AAXX..2255?? Parametry dostępu do kanałów AX.25 są analogiczne do parametrów KISS, takich jak ppersist, txdelay, slottime. Tutaj też używamy programiku sethdlc. I znów podręcznik systemowy 'man' jest głównym źródłem informacji na temat sethdlc, ale jak zwykłe jeden czy drugi przykład nie zaszkodzi: Ustawienie interfejsu bc0 z wartością 200ms dla TxDelay, 100ms dla Slottime, wartość 40 dla ppersist oraz half-duplex: # sethdlc -i bc0 -a txd 20 slot 10 ppersist 40 half Zauważ, że wartości licznika są tutaj podane w 10-tkach milisekund. 77..22..44.. JJaakk ddoocczzeeppiićć uurrzząąddzzeenniiee DDźźwwiięękkooMMooddeemm?? Thomas Sailor napisał nowy sterownik dla jądra Linuxa pozwalający na użycie karty dźwiękowej komputera jako modemu do packet radio. Można teraz podłączyć radio bezpośrednio do karty dźwiękowej i zabawić się w packet!! Thomas poleca przynajmniej procesor 486DX/66 ponieważ cały ciężar obliczeniowy sygnału cyfrowego spada w tym wypadku na CPU. Obecnie sterownik emuluje takie typy modemów: 1200 bps AFSK, 4800 HAPN and 9600 FSK (G3RUH compatible). Jedyne karty, które są obługiwane tym sterownikiem to te, zgodne z SoundBlaster oraz WindowsSoundSystem. Karty dźwiękowe potrzebują dodatkowego układu wspomagającego układ PTT a informację na ten tema można zasięgnąć na domowej stronie Thomas'a Sailora, tutaj. Istnieje szereg możliwości: detekcja syganłu z karty dźwiękowej, lub przez port równoległy, seryjny, port midi. Przykłady schematów są na stronie Thomas'a. Przy załączeniu sterownik DźwiękoModemu dołącza interfejsy sieciowe: sm0, sm1, sm2, itp. Uwaga: Sterownik DźwiękoModemu współzawodniczy w zagarnianiu zasobów komputera ze sterownikiem karty dźwiękowej. Jeśli więc planujesz używać sterownik DźwiękoModemu to upewnij się, czy sterownik karty dźwiękowej jest wyinstalowany. Jak zwykłe możesz obydwa skompilować jako moduły i używać je wtedy, gdy jest to wygodne. 77..22..44..11.. KKoonnffiigguurroowwaanniiee kkaarrttyy ddźźwwiięękkoowweejj.. Sterownik DźwiękoModemu nie wzbudza karty dźwiękowej przy ładowniu się systemu. Pakiet ax25-utils zawiera programik 'setcrystal', który obluguje karty oparte o Crystal Chipset. jeśli posiadasz inną kartę to potrzebujesz innego oprogramowania, aby ją pobudzić. Składnia programiku jest oczywista: setcrystal [-w wssio] [-s sbio] [-f synthio] [-i irq] [-d dma] [-c dma2] Jeśli, zatem życzysz sobie doczepić kartę soundblaster na adresie 0x388, irq 10 i DMA 1, to dj tak: # setcrystal -s 0x388 -i 10 -d 1 Jeśli ustawiasz kartę WinSoundSystem na adresie 0x534, irq 5, DMA 3, to daj tak: # setcrystal -w 0x534 -i 5 -d 3 Parametr -f synthio służy do zdeklarowania adresu syntezatora, a -c dma2 do podania drugiej wartości dla DMA, ktora pozwala na operację full-duplex. 77..22..44..22.. JJaakk uussttaawwiićć iinntteerrffeejjss DDźźwwiięękkooMMooddeemmuu?? Po skonfigurowaniu karty dźwiękowej musisz teraz powiedzieć strownikowi DźwiękoModemu gdzie może jej szukać oraz jakiego rodzaju modem ma emulować. Parametry te mogą zostać zdeklarowane programikiem 'sethdlc', lub, jeśli używać będziesz tylko jednej karty można je podać ręcznie programowi 'insmod', który ładuje sterownik Dźwiękomodemu. Dla przykładu, prosta konfiguracja: jedna karta dźwiękowa SoundBlaster ustawiona według powyższego przykładu i emulująca modem 1200 pbs: # insmod soundmodem mode="sbc:afsk1200" iobase=0x220 irq=5 dma=1 Nie jest to jednak najlepszy sposób. Programik sethdlc działa dobrze zarówno z jednym jak i z wieloma urządzeniami. Man pages programiku sethdlc piszą w szczegółach na ten temat, jednak kilka przykładów pozwoli zilustrować ważniejsze aspekty tejże konfiguracji. Poniższy przykład zakłada, ze załadowałeś już moduł sterownika DźwiękoModemu poleceniem: # insmod soundmodem Ustawienie sterownika do obługi uprzednio skonfigurowanej karty Win­ SoundSystem, aby emulował modem G3RUH 9600 jako interfejs sieciowy sm0, na porcie równoległym z układem PTT o adresie 0x378: # sethdlc -p -i sm0 mode wss:fsk9600 io 0x534 irq 5 dma 3 pario 0x378 # ifconfig sm0 up Ustawienie sterownika uprzednio skonfigurowanej karty SoundBlaster, aby emulował modem HAPN 4800 bps jako interfejs sieciowy sm1 z ukladem PTT na porcie seryjnym o adresie 0x2f8: # sethdlc -p -i sm1 mode sbc:hapn4800 io 0x388 irq 10 dma 1 serio 0x2f8 # ifconfig sm1 up Ustawienie sterownika uprzednio skonfigurowanej karty SoundBlaster, aby emulował modem AFSK 1200 bps jako interfejs sieciowy sm1, na seryjnym porcie z układem PTT o adresie 0x2f8: # sethdlc -p -i sm1 mode sbc:afsk1200 io 0x388 irq 10 dma 1 serio 0x2f8 # ifconfig sm1 up 77..22..44..33.. JJaakk uussttaawwiićć ppaarraammeettrryy ddoossttęęppuu ddoo kkaannaałłuu AAXX..2255?? Parametry dostępu do kanałów AX.25 są analogiczne do parametrów KISS, takich jak ppersist, txdelay, slottime. Tutaj też używamy programiku sethdlc. I znów man pages są głównym źródłem informacji na temat sethdlc, ale jak zwykle jeden czy drugi przykład nie zaszkodzi: Ustawienie interfejsu sm0 z wartością 100ms dla TxDelay, 50ms dla Slottime, wartość 128 dla ppersist oraz half-duplex: # sethdlc -i sm0 -a txd 10 slot 5 ppersist 128 full Zauważ, że wartości licznika są tutaj podane w 10-tkach milisekund. 77..22..44..44.. UUssttaalleenniiee ppoozziioommuu aauuddiioo ii ddoossttrroojjeenniiee sstteerroowwnniikkaa Każdy modem radiowy domaga się do poprawnej pracy właściwej regulacji poziomu audio. Dotyczy to również DźwiękoModem'u. Thomas napisał programy narzędziowe, które ułatwiają to zadanie. Są to: 'smdiag' i 'smmixer'. smdiag dostarcza dwóch typów wyświetlacza, typu oscyloskopowego i typu "eye pattern" smmixer pozwała na właściwe wyregulowanie poziomu nadawania i odbioru. To polecenie odpala programik 'smdiag' w trybie "eye" dla interfejsu sm0: # smdiag -i sm0 -e To polecenie odpala programik 'smmixer' dla interfejsu sm0: # smmixer -i sm0 77..22..44..55.. PPrrzzyyggoottoowwaanniiee cczzęęśśccii AAXX..2255 jjąąddrraa ddoo wwyykkoorrzzyyssttaanniiaa DDźźwwiięękkooMMooddeemmuu.. Sterownik DźwiękoModemu powoduje dołączenie standardowego interfejsu sieciowego, gotowego do wykorzystania przez jądro. Konfiguracja przypomina tę, jaką stosujemu przy kartach PacketTwin oraz PI. Najpierw, interfejsowi trzeba przypisać znak/identyfikator. Używamy programu 'ifconfig'. Polecenie: # /sbin/ifconfig sm0 hw ax25 VK2KTJ-15 up przypisze interfejsowi sm0, należącemu do DźwiękoModemu, znak/identy­ fikator VK2KTJ-15 w protokole AX.25. Następny krok to dokonanie wpisu do pliku /etc/ax25/axports podobnie jak dla innych urządzeń fizycznych. Tenże wpis w pliku ax25ports jest powiązany z interfejsem sieciowym, który powyżej skonfigurowałeś na tymże znaku/identyfikatorze. Wpis w pliku axports noszący znak/identyfikator, ktorego użyłeś przy DźwiękoModemie będzie używany jako odnośnik do tego modemu. Tak ustawione urządzenie AX.25 możesz teraz spożytkować jak każde inne. Skonfiguruj je do pracy w TCP/IP, dodaj je do demona ax25d, użyj do NetRom lub Rose, jak tylko chcesz. 77..22..55.. JJaakk ddoołłaacczzyyćć uurrzząąddzzeenniiee zz kkaarrttąą PPII?? Sterownik karty PI generuje powstanie interfejsów sieciowych typu `pi[0-9][ab]. Pierwszej wykrytej karcie PI zostanie przypisany interfejs pi0, kolejnej pi1, itd. Literki 'a' i 'b' odnoszą sie do fizycznych portów znajdujących się na karcie PI. Jeśli zbudowałeś jądro z obsługą karty PI, oraz jeśli została ona poprawnie wykryta to możesz skonfigurować sobie interfejs sieciowy w taki sposób: # /sbin/ifconfig pi0a hw ax25 VK2KTJ-15 up Polecenie to skonfigurowałoby pierwszy port pierwszej wykrytej karty PI przypisując jej znak/identyfikator VK2KTJ-15 i uczyniłoby go akty­ wnym. Zauważ, że znak musi mieć swój odpowiednik w pliku /etc/ax25/axports, aby móc używać tego portu. Sterownik do karty PI napisany został przez David'a Perry, dp@hydra.carleton.edu 77..22..66.. JJaakk ddoocczzeeppiićć uurrzząąddzzeenniiee zz kkaarrttąą PPaacckkeettTTwwiinn.. Sterownik karty PacketTwin generuje powstanie interfejsów sieciowych typu `pt[0-9][ab]. Pierwszej wykrytej karcie PacketTwin zostanie przypisany interfejs pt0, kolejnej pt1, itd. Literki 'a' i 'b' odnoszą sie do fizycznych inerfejsów znajdujących się na karcie PacketTwin. Jeśli zbudowałeś jądro z obsługą karty PacketTwin, oraz jeśli została ona poprawnie wykryta to możesz skonfigurować sobie interfejs sieciowy w taki sposób: # /sbin/ifconfig pt0a hw ax25 VK2KTJ-15 up Polecenie to skonfigurowałoby pierwszy port pierwszej wykrytej karty PacketTwin przypisując jej znak/identyfikator VK2KTJ-15 i uczyniłoby go aktywnym. Zauważ, że znak musi mieć swój odpowiednik w pliku /etc/ax25/axports, aby móc używać tego portu. Sterownik karty PacketTwin został napisany przez Craig Small, VK2XLZ, csmall@triode.apana.org.au. 77..22..77.. JJaakk ddoocczzeeppiićć ggeenneerryycczznnee uurrzząąddzzeenniiee SSCCCC?? Joerg Reuter, DL1BKE, jreuter@lykos.tng.oche.de wypracował sterownik do generycznej obsługi kart opartych o scalak Z8520 SCC. Sterownik ten daje się konfigurować do obsługi wielorakich kart oferując interfejs, który zachowuje się tak jak TNC w trybie KISS. Traktuj więc go tak, jakby to był TNC w trybie KISS. 77..22..77..11.. GGddzziiee uuzzyysskkaaćć ii jjaakk zzbbuuddoowwaaćć ppaakkiieett ddoo nnaarrzzęęddzzii kkoonnffiigguurraa­­ ccyyjjnnyycchh?? Choć sterownik zawarty jest w standardowym żródle jądra to jednak Joerg uwalnia wciąż nowsze wersje źródłowe razem ze specjalnymi narzędziami do konfiguracji, które również potrzebujesz. Pakiet z narzędziami do konfiguracji znajdziesz tutaj: db0bm.automation.fh-aachen.de /incoming/dl1bke/ lub: insl1.etec.uni-karlsruhe.de /pub/hamradio/linux/z8530/ lub: ftp.ucsd.edu /hamradio/packet/tcpip/linux /hamradio/packet/tcpip/incoming/ Znajdziesz tam różnorakie wersje, więc wybierz te, które odpowiadają twojej wersji jądra: z8530drv-2.4a.dl1bke.tar.gz 2.0.* z8530drv-utils-3.0.tar.gz 2.1.6 lub nowsze Oto polecenia, które musiałem wykonać, aby skompilować i zainstalować ów pakiet z jądrem 2.0.25: # cd /usr/src # gzip -dc z8530drv-2.4a.dl1bke.tar.gz | tar xvpofz - # cd z8530drv # make clean # make dep # make module # jeśli chcesz aby sterownik był modułem # make for_kernel # Jeśli chcesz, aby sterownik był wbudowany w jądro # make install Po zakończonej operacji powinieneś mieć trzy programy w katalogu /sbin: gencfg, sccinit i sccstat. To właśnie one nadają się do tego, aby skonfigurować sterownik dla twojej karty. Zostanie rownież utworzona specjalna grupa plików w katalogu /dev/ zwanych scc0 .. scc7. Zostaną one później użyte jako urządzenia KISS i właśnie te będziesz stosował. Jeśli zdecydujesz sie na polecenie 'make for_kernel', wówczas będziesz musiał przebudować jądro. Przy budowaniu jądra po wydaniu polecenia 'make config' zadbaj o to, abyś odpowiedział "Y" na pytanie o obsługę `Z8530 SCC kiss emulation driver for AX.25'. Nie potrzebyjesz przebudowywać jądra jeśli wybierzesz polecenie 'make module', wówczas plik scc.o zostanie umieszczony w odpowiednim katalogu /lib/modules. Nie zapomnij o poleceniu 'insmod' przed próbą użycia i konfiguracji starownika. 77..22..77..22.. JJaakk sskkoonnffiigguurroowwaaćć sstteerroowwnniikk ddoo ttwwoojjeejj kkaarrttyy?? Sterownik Z8530 SCC został pomyślany, tak aby dał się nagiąć do niemalże każdej karty. Lecz z elastycznością idzie w parze trud jej konfiguracji. Bardziej pouczającej lektury dostarczą pliki samego pakietu i powinieneś tam szukać informacji. A w szczególności należy zajrzeć tutaj: doc/scc_eng.doc or doc/scc_ger.doc. Zparafrazowałem poniżej parę ważniejszych detali, lecz w rezultacie pominąłem szczegóły niższego rzędu. Program sccinit czyta najpierw plik /etc/z8530drv.conf. Plik dzieli się na dwa etapy: ustawienie parametrów dla sprzętu i dla kanału AX.25. Po tym wystarczy tylko dać polecenie: # sccinit 77..22..77..22..11.. UUssttaawwiieenniiee ppaarraammeettrróóww sspprrzzęęttuu.. pierwsza sekcja dzieli się na strofy, każda strofa reprezentuje scalak 8530. Strofy to poprostu lista 'słów' i 'argumentów'. Można w tym pliku zdeklarować do 4 scalaków SCC. Jeśli potrzebujesz więcej to da się to zrobić w pliku scc.c ustawiając żądaną wartosć w #idef MAXSCC 4. Dozwolone 'słowa' i 'argumenty' to: chip słowo chip służy do oddzielania strof. jego argumentem może być wszys­ tko. Argumenty nie są używane. data_a używane do zdeklarowania adresu portu "data" dla kanału 'A'. Argument w formie hexadecymalnej, tj. 0x300. ctrl_a używany do zdeklarowania adresu portu "control" dla kanału 'A'. Argu­ ment w formie hexadecymalnej, tj. 0x304 data_b używany do zdeklarowania adresu portu "data" dla kanału 'B'. Argument w formie hexadecymalnej, tj. 0x301. ctrl_b używany do zdeklarowania adresu portu "control" dla kanału 'B'. Argu­ ment w formie hexadecymalnej, tj. 0x305 irq używany do zdeklarowania IRQ używanego przez 8530 SCC w beżącej strofie. Argument w formie liczby całkowitej, tj. 5 pclock używany do zdeklarowania częstotliwości zegara na igle PCLK w 8530.. Argument w formie liczby całkowitej w Hz. Wartość domyślna wynosi 4915200. board typ płyty. Argumentem jest napis. A oto dozwolone wartości: PA0HZP karta PA0HZP SCC EAGLE karta Eagle PC100 karta DRSI PC100 SCC PRIMUS karta PRIMUS-PC (DG9BL) BAYCOM karta BayCom (U)SCC escc jest nie dobowiązkowe i dołącza obsługę polepszonych scalaków, takich jak:8580, 85180, lub 85280. Argumentem jest tylko 'yes' lub 'no'. vector dla kart PA0HZP jest to wartość tzw. "intack port". Może być tylko jeden dla wszystkich scalaków. Wartość domyślna = 0. Nieobowiązkowy. special określa rejestry funkcyjne na niektórych kartach. Nieobowiązkowy. Wartość domyślna = 0. option jest nieobowiązkowy i przyjmuje warość domyślną 0. Oto przykładowe konfiguracje dla najbardziej popularnych kart: BayCom USCC chip 1 data_a 0x300 ctrl_a 0x304 data_b 0x301 ctrl_b 0x305 irq 5 board BAYCOM # # SCC chip 2 # chip 2 data_a 0x302 ctrl_a 0x306 data_b 0x303 ctrl_b 0x307 board BAYCOM PA0HZP SCC chip 1 data_a 0x153 data_b 0x151 ctrl_a 0x152 ctrl_b 0x150 irq 9 pclock 4915200 board PA0HZP vector 0x168 escc no # # # chip 2 data_a 0x157 data_b 0x155 ctrl_a 0x156 ctrl_b 0x154 irq 9 pclock 4915200 board PA0HZP vector 0x168 escc no DRSI SCC chip 1 data_a 0x303 data_b 0x301 ctrl_a 0x302 ctrl_b 0x300 irq 7 pclock 4915200 board DRSI escc no Jeśli twoja karta pracuje pod NOS'em i masz do niej konfigurację, to możesz użyć polecenia 'gencfg' do konwersji poleceń sterownika PE1CHL NOS. Powstaje wtedy plik przydatny do załączenia w pliku konfigura­ cyjnym dla sterownika z8530. Polecenia 'gencfg' odpala się z tymi samymi paramatrami co sterownik PE1CHL pod NET/NOS, np.: # gencfg 2 0x150 4 2 0 1 0x168 9 4915200 Powyższe wygeneruje szkic konfiguracyjny dla karty OptoSCC. 77..22..77..33.. KKoonnffiigguurraaccjjaa kkaannaałłuu.. Sekcja Konfiguracji Kanału zajmuje się zdeklarowniem tych wszystkich parametrów, które rządzą portem , na którym chcesz pracować. Znów mamy tutaj strofy. Każda strofa reprezentuje jeden logiczny port, zatem będziemy mieli dwie strofy ponieważ każda karta 8530 SCC może mieć dwa porty. Poniższe 'słowa' i 'argumenty' są również zapisywane do pliku /etc/z8530drv.conf i muszą występować za sekcją o parametrach sprzętu. Kolejność w tej sekcji jest bardzo istotna, lecz jeśli będziesz podążał za sugerowaną sekwencją to powinno działać wszystko w porządku. Dozwolone 'słowa' i 'argumenty to: device musi stać w pierszym wierszu deklaracji portu i określa nazwę pliku w katalogu /dev/ stanowiącego podstawę dalszej konfiguracji, tj. /dev/scc0 speed określa prędkość interfejsu w bitach na sekundę. Argumentem jest liczba calkowita, np. 1200. clock określa w parametry dla zegara. Dozwolone wartości to: dpll normalny tryb halfduplex external MODEM dostarcza swój własny zegar Rx/Tx divider użycie devidera fullduplex, jeśli jest zainstalowany mode określa czy kodowanie danych ma być załaczone. Argumentami są: nrzi lub nrz rxbuffers określa liczbę buforów odbioru, dla których należy rezerwować pamięć. Argumentem jest liczba całkowita, np. 8. txbuffers określa liczbę buforów nadawania, dla których należy rezerwować pamięć. Argumentem jest liczba całkowita, np. 8. bufsize określa rozmiary buforów odbioru i transmisji. Argumentem jest liczba bytów i stanowi on od sumę wszystkich 'ramek', zatem trzeba więc wziąć pod uwagę również nagłówki protokołu AX.25 a nie li tylko pole danych. Słowo to jest nieobowiązkowe i przyjmuje wartość domyślną 384. txdelay to wartość opóżnienia transmisji dla KISS, argumentem jest liczba całkowita. persist to wartość parametru persist dla KISS, argumentem jest liczba całkowita. slot to jest wartość slottime dla KISS. argumentem jest liczba całkowita w mS. tail to jest wartość tail dla KISS. argumentem jest liczba całkowita w mS. fulldup to jest oznaczenie fullduplex dla KISS, argumentem jest liczba całkowita. 1==Full Duplex, 0==HALF DUPLEX. wait to jest wartość wait dla KISS, argumentem jest liczba całkowita w mS. min to jest wartość min dla KISS, argumentem jest liczba całkowita w S. maxkey to jest wartość maximum keyup dla KISS, argumentem jest liczba całkowita w S. idle to jest wartość licznika idle dla KISS, argumentem jest liczba całkowita w S. maxdef to jest wartość maxdef dla KISS, argumentem jest liczba całkowita. group to jest wartość group dla KISS, argumentem jest liczba całkowita. txoff to jest wartość txoff dla KISS, argumentem jest liczba całkowita w mS. softdcd to jest wartość softdcd dla KISS, argumentem jest liczba całkowita. slip to jest oznaczenie slip dla KISS, argumentem jest liczba całkowita. 77..22..77..44.. UUżżyywwaanniiee sstteerroowwnniikkaa.. Przy używaniu sterownika traktujemy urządzenia /dev/scc* tak, jak urządzenie seryjne tty z doczepionym TNC w trybie KISS. Na przykład, aby skonfigurować jądro do obługi sieci pod Linuxem przy użyciu swojej karty należy użyć polecenia: # kissattach -s 4800 /dev/scc0 VK2KTJ Można też doczepić NOS'a w dokładnie taki sam sposób. Z JNOS'a, np. wykonać mógłbyś polecenie: attach asy scc0 0 ax25 scc0 256 256 4800 77..22..77..55.. NNaarrzzęęddzziiaa ''ssccccssttaatt'' oorraazz ''ssccccppaarraamm''.. Pomocnym przy diagnostyce urządzenia SCC jest program 'sccstat'. Wyświetla on bieżącą konfigurację. Spróbuj go tak uruchomić: # sccstat /dev/scc0 wyświetli to szeroką gamę informacji związanych z ustawieniem i ogólną kondycją portu /dev/scc0 SCC. Polecenie 'sccparam' pozwala na zmianę i modyfikowanie parametrów podczas pracy. Składnia przypomina polecenie 'param' z NOS'a, zatem aby ustawić txtail urządzenia na 100mS, należałoby napisać: # sccparam /dev/scc0 txtail 0x8d 77..22..88.. JJaakk uuttwwoorrzzyyćć uurrzząąddzzeenniiee BBPPQQ zz eetthheerrnneetteemm?? Linux jest kompatybilny z BPQ Ethernet. Umożliwia to na przepust protokołu AX.25 po Lokalnej Sieci ethernetowej i doczepienie swojej maszyny do innej obsługującej BPQ na Lokalnej Sieci. Interfejsy sieciowe typu BPQ noszą nazwę 'bpq[0-9]'. Interfejs 'bpq0' powiązane jest z interfejsem 'eth0', a 'bpq1' z interfejsem 'eth1', itd. Konfiguracja jest trywialna. Najpierw trzeba ustawić standardowe urządzenie Ethernet. To oznacza, że po wkompilowaniu obsługi karty Ethernet do jądra należy zobaczyć czy pracuje poprawnie. Zajrzyj do Ethernet-HOWTO jak tego dokonać. Aby ustawić obsługę BPQ potrzebujesz przypisać interfejsowi Ethernet znak/identyfikator AX.25. Oto polecenie, które to spowoduje: # /sbin/ifconfig bpq0 hw ax25 vk2ktj-14 up I znów, nie zapomnij, że znak/identyfikator, który tutaj podajesz musi zgadzać się z wpisem w pliku /etc/ax25/axports dla portu, którego chcesz używać. 77..22..99.. UUssttaawwiieenniiee wwęęzzłłaa BBPPQQ ddoo wwssppóółłpprraaccyy zz oobbssłłuuggąą AAXX..2255 ppoodd LLiinn­­ uuxxeemm.. W normalnych warunkach BPQ Ethernet stosuje adres multicast. Pod Linuxem tak nie jest, zamiast tego stosowany jest zwyczajny Ethernetowy adres broadcast. Należy zatem zmodyfikować plik NET.CFG dla sterownika BPQ ODI w nasępujący sposób: LINK SUPPORT MAX STACKS 1 MAX BOARDS 1 LINK DRIVER E2000 ; lub inne MLID według własnej karty INT 10 ; PORT 300 ; według własnej karty FRAME ETHERNET_II PROTOCOL BPQ 8FF ETHERNET_II ; wymagane dla BPQ - zmienić PID BPQPARAMS ; nieobowiązkowe - tylko wtedy, ; gdy znieniasz docelowy adres ETH_ADDR FF:FF:FF:FF:FF:FF ; docelowy adres 77..33.. UUssttaawwiieenniiee ppaarraammeettrróóww ooppeerraaccyyjjnnyycchh ddllaa iinntteerrffeejjssuu AAXX..2255 Pakiet ax25-utils zawiera w sobie program narzędziowy 'axctl', który pozwala na ustawienie różnorodnych parametrów interfejsu AX.25. Polecenie to jest zupełnie proste w użyciu a podręcznik systemowy 'man' dostarcza kompletnego opisu, przykładowym jednak sposobem użycia tego programu może być: # /usr/sbin/axctl radio -window 2 -t1 5 -n2 10 Powyższe polecenie ustawiłoby wartości takie jak Window, T1 oraz N2 dla portu AX.25 nazwanego tu 'radio'. 77..44.. UUssttaawwiieenniiuu rroouuttiinngguu AAXX..2255.. Jeśli jest potrzeba można ustawić domyślne ścieżki do digipeaterów dla konkretnych węzłow. Przydaje się to przy zarówno czystych łączach AX.25 jak i opartych o IP. Robimy to poleceniem 'axparms'. Znowu, podręcznik systemowy 'man' podaje wszystkie szczegóły, lecz prosty przykład może być taki: # /usr/sbin/axparms -route add radio VK2XLZ VK2SUT Polecenie to utworzyłoby ścieżkę digipeatera dla stacji VK2XLZ przez stację VK2SUT na porcie AX.25 noszącego nazwę 'radio'. 88.. UUssttaawwiiaanniiee iinntteerrffeejjssuu AAXX..2255 ddoo pprraaccyy ww TTCCPP//IIPP.. Ustawienie portu AX.25 do pracy w TCP/IP jest bardzo proste. Jeśli posiadasz interfejs KISS to masz dwie metody do ustawienia adresu IP. Polecenie 'kissattach' posiada opcję, która pozwala na określenie adresu IP. Metoda konwencjonalna przy użyciu polecenia 'ifconifg' zadziała na wszystkich typach interfejsów. A zatem, zmieniając poprzedni przykład dla KISS: # /usr/sbin/kissattach -i 44.136.8.5 -m 512 /dev/ttyS0 radio # /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 ax0 # /sbin/route add default ax0 utworzy to interfejs AX.25 z adresem IP 44.136.8.5 oraz MTU 512 bytów. Jeśli zachodzi potrzeba to należy inne parametry ustawić tez polece­ niem 'ifconfig' raz jeszcze. Jeśli posiadasz jakikolwiek inny typ interfejsu to stosujesz polecenie 'ifconfig' do ustawienia adresu ip i netmask dla danego portu i dodajesz routing przez ów port, tak jak zrobiłbyś to dla każdego jednego interfejsu TCP/IP. Poniższy przykład jest dla interfejsu Karty PI, ale zadziała równie dobrze dla każdego interfejsu sieciowego AX.25: # /sbin/ifconfig pi0a 44.136.8.5 netmask 255.255.255.0 up # /sbin/ifconfig pi0a broadcast 44.136.8.255 mtu 512 # /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 pi0a # /sbin/route add default pi0a Polecenia powyższe powinny być znane dla tych, którzy używali NOS lub jego pochodne lub jakiekolwiek inne oprogramowanie TCP/IP. Zauważ, że jeśli masz już ustawione jakiś interfejs sieciowy to routing domyślny nie jest ci potrzebny. Aby to wypróbować zpróbuj 'zapingować' lub zrób telnet do lokalnego węzła: # ping -i 5 44.136.8.58 Zauważ zastosowanie '-i 5', które sprawia, że pingowanie odbywa się co 5 sekund, a nie jak pierwotnie co 1 sekundę. 99.. UUssttaawwiieenniiee ppoorrttuu ddllaa NNeettRRoomm.. Protokół Netrom wykorzystuje i zależy od portów AX.25, które utworzyłeś uprzednio. Protokół NetRom biega po plecach protokołu AX.25. Należy zrobić edycję dwóch plików, aby ustawić sobie NetRom na interfejsie AX.25. Jeden plik określa interfejsy NetRomu, a drugi porty AX.25, po których NetRom będzie biegał. 99..11.. EEddyyccjjaa pplliikkuu //eettcc//aaxx2255//nnrrppoorrttss Na początek plik /etc/ax25/nrports. Plik ten określa porty NetRomu podobnie jak plik /etc/ax25/axports określa porty AX.25. Każde urządzenie NetRom musi zawierać swój wpis w pliku /etc/ax25/nrports. Normalnie, na Linuxie spotykamy tylko jedno urządzenie Netrom, które używa wielu zdeklarowanych portów AX.25. W niektórych tylko wypadkach, jak np. z BBS'em, można utworzyć dodatkowy pseudonim dla węzła NetRom, wówczas będzie więcej niż jeden. Plik ten ma taką formę: name callsign alias paclen description Gdzie: name to tekst, według którego chcesz odwoływać sie do tego portu. callsign to jest znak/identyfikator, na którym pracować będzie protokół NetRom. Uwaga: nie jest to znak, do którego użytkownicy będą się łączyć, aby wejść do twojego węzła. (program 'node' opisany jest dalej). Znak ten powinien być unikalny i nie powinien powtarzać się nigdzie w pliku /etc/ax25/axports lub /etc/ax25/nrports. alias to jest przypisany pseudonim dla portu NetRom paclen to jest maksymalny rozmiar ramek NetRom transmitowanych przez ten port description dowolna nazwa dla tego portu Oto jak może to wyglądać: netrom VK2KTJ-9 LINUX 236 Linux Switch Port Plik ten używany jest m. in. przez program _c_a_l_l. 99..22.. UUssttaawwiieenniiee pplliikkuu //eettcc//aaxx2255//nnrrbbrrooaaddccaasstt Następny plik to /etc/ax25/nrbroadcast. Zawiera on parę wpisów. Normalnie potrzebny jest jeden apis dla każdego portu AX.25 po którym puszczany będzie protokół NetRom. Plik przyjmuje taki format: axport min_obs def_qual worst_qual verbose Gdzie: axport to nazwa portu uzyskana z pliku /etc/ax25/axports. Jeśli w pliku /etc/ax25/axports nie ma wpisu dla danego portu oznacza to, że zabraknie routingu dla NetRom na tym porcie oraz, że broadcasts będą ignorowane. min_obs jest to wartość dla min obscelecence dla tego portu def_qual określa wartość default quality dla NetRomu na tym porcie worst_qual określa wartość 'worst quality' dla NetRomu na tym porcie, wszystki routingi o tej wartości będą ignorowane verbose to jest oznakowanie czy z tego portu wychodzić będzie NetRom broadcast w pełnej formie czy też jednynie broadcast o tym wężle. Oto przykład: radio 1 200 100 1 99..33.. JJaakk uuttwwoorrzzyyćć iinntteerrffeejjss ssiieecciioowwyy ddllaa NNeettRRoomm.. Po ustawieniu powyższych dwóch plików należy teraz utworzyć urządzenie NetRom w bardzo podobny sposób do tego, w jaki czyniliśmy do dla urządzeń AX.25. Tym razem stosujemy polecenie 'nrattach'. Działa ono tak samo jak 'axattach' z tą różnicą, że powoduje doczepienie sieciowych interfejsów zwanych 'nr[0-9]'. I znów, przy pierwszym użyciu utworzon zostaje interfejs 'nr0', przy następnym użyciu, 'nr1' itd. Zatem, aby doczepić sieciowy interfejs do portu NetRom, który zdefiniowaliśmy uprzednio, wydalibyśmy polecenie: # nrattach netrom Polecenie to wygenerowało by pojawienie się interfejsu (nr0), z parametrami według szczegółów określonych w pliku /etc/ax25/nrports dla portu 'netrom'. 99..44.. OOddppaalleenniiee ddeemmoonnaa NNeettRRoomm.. Jądro Linuxa obsługuje wszystkie mechanizmy protokołu NetRom, nie potrafi tylko wykonać niektórych funkcji. Demon NetRomu bierze na siebie tablice routingowe i broadcasty NetRomu. Uruchamiamy go poleceniem: # /usr/sbin/netromd -i Po pewnej chwili powinieneś zobaczyć jak plik /proc/net/nr_neigh wypełnia się powoli informacjami o sąsiednich stacjach NetRom. Nie zapomnij umieścić polecenia /usr/sbin/netromd w jednym z plików *rc, aby zostało odpalone przy ładowaniu systemu operacyjnego. 99..55.. uussttaawwiieenniiee rroouuttiinngguu ddllaa NNeettRRoomm Możliwe jest ustawienie statycznych ścieżek NetRom do poszczególnych węzłów. Pozwala na to polecenie 'nrparms'. podręcznik systemowy 'man' podaje kompletny opis, a tutaj mamy prosty przkład: # /usr/sbin/nrparms -nodes VK2XLZ-10 + #MINTO 120 5 radio VK2SUT-9 Polecenie to utworzyłoby ścieżkę statyczną #MINTO:VK2XLZ-10 poprzez sąsiada VK2SUT-9 na porcie AX.25 o nazwie 'radio'. Można też ręcznie dokonać wpisu dla sąsiednich stacji przy użyciu polecenia nrparms, Przyklad: # /usr/sbin/nrparms -routes radio VK2SUT-9 + 120 polecenie to wpisałoby VK2SUT-9 jako sąsiada z wartością 'quality' 120, wpis nie zostanie usunięty automatycznie lecz jest stały. 1100.. UUssttaawwiieenniiee iinntteerrffeejjssuu NNeettRRoomm ddllaa pprraaccyy ww TTCCPP//IIPP.. Ustawianie interfejsu NetRom dla pracy w TCP/IP przypomina zupełnie konfigurowanie interfejsu AX.25 dla pracy w TCP/IP. Tutaj też, można albo określić adres IP i wartość MTU w wierszu poleceń dla 'nrattach', albo zastosować polecenie 'ifconfig' i 'route'. Należy jednak ręcznie wprowadzić wpisy ARP dla węzłów, do których chcesz mieć routing ponieważ brakuje mechanizmu, dzięki któremu twój komputer mógłby dowiedzieć się o adresach NetRom, które powinien użyć aby dotrzeć do poszczególnego węzła IP. Zatem, doczepimy teraz interfejs nr0 z adresem IP 44.136.8.5 i MTU 512 oraz ustawimy go według szczegółów zawartych w pliku /etc/ax25/nrports na porcie NetRom o nazwie "netrom": # /usr/sbin/nrattach -i 44.136.8.5 -m 512 netrom # route add 44.136.8.5 nr0 lub można zrobić to tak, ale ręcznie: # /usr/sbin/nrattach netrom # ifconfig nr0 44.136.8.5 netmask 255.255.255.0 hw netrom VK2KTJ-9 # route add 44.136.8.5 nr0 Następnie, dla każdego węzła IP, który chesz aby był osiągalny, potrzeba dopisać recznie wartości dla ARP i route. Dopiszmy zatem węzeł docelowy z adresem IP 44.136.80.4 o adresie NetRom BBS:VK3BBS osiągalnego przez sąsiada VK2SUT-0: # route add 44.136.80.4 nr0 # arp -t netrom -s 44.136.80.4 vk2sut-0 # nrparms -nodes vk3bbs + BBS 120 6 sl0 vk2sut-0 Argumenty '120' i '6' podane dla 'nrparms' to 'quality' i 'absole­ cence' dla NetRomu, który używa ich dla tej ścieżki. 1111.. UUssttaawwiieenniiee ppoorrttuu RRoossee Sieciowa warstwa packet protokołu Rose przypomina trzecią warstwę specyfikacji protokołu X.25. Obsługa Rose w jądrze Linuxa jest odmianą implementacji Rose przyjętej przez FPAC. Sieciowa warstwa packet protokołu Rose używa i polega na portach AX.25, które uprzednio utworzyłeś. Protokół Rose biega po plecach protokołu AX.25. Aby ustawić Rose potrzeba dopisać plik konfiguracyjny dla portów Rose. 1111..11.. UUssttaawwiieenniiee pplliikkuu //eettcc//aaxx2255//rrssppoorrttss.. Plikiem, gdzie dopisujemy interfejsy dla Rose jest /etc/ax25/rsports. Określa on porty Rose w podobny sposób jak plik /etc/ax25/axports robi to dla portów AX.25. Oto jego format: name addresss description Gdzie: name jest tekstem, według którego chcesz odwoływać się do tego portu. address jest 10-cio cyfrowym adresem Rose, który przypisujesz temu portowi. description jest dowolnym tekstem opisującym port. Oto jak można to wpisać: rose 5050294760 Rose Port Zauważ, że Rose używać będzie domyślnie znaku/identyfikatora podanego dla portu AX.25 , chyba że specjalnie podasz inny. Aby podać osobny znak/identyfikator dla Rose, który używany będzie na każdym używanym porcie, trzeba wydać polecenie 'rsparms' w taki sposób: # /usr/sbin/rsprams -call VK2KTJ-10 Przykład ten spowodowałby, że Linux słuchałby na znaku/identyfikatorze VK2TKJ-10 i używałby tegoż znaku na wszystkich portach AX.25 ustaw­ ionych dla łączności drogą Rose. 1111..22.. JJaakk ddoocczzeeppiićć ssiieecciioowwyy iinntteerrffeejjss RRoossee?? Po utworzeniu pliku /etc/ax25/rsports można doczepić urządzenie Rose w taki sam spoób jak urządzeia AX.25. Tym razem używa się polecenia 'rsattach'. Polecenie 'rsattach' doczepia sieciowe interfejse zwane 'rose[0-5]'. Przy pierwszym poleceniu rsattach powstaje interfejs 'rose0', przy drugim, 'rose1', itd. Przykład: # rsattach rose Polecenie to wygeneruje interfejs Rose (rose0) ustawiony według szczegółów podanych w pliku /etc/ax25/rsports dla wpisu nazwanego 'rose'. 1111..33.. UUssttaawwiieenniiee rroouuttiinngguu ddllaa RRoossee.. Obecnie, protokół Rose obsługuje jedynie ścieżki statyczne. Program 'rsparms' pozwala na zapisanie tablic routingowych dla Rose pod Linuxem. Na przykład: # rsparms -nodes add 5050295502 radio vk2xlz Powyższe dodałoby ścieżkę do węzła Rose 5050295502 na porcie AX.25 'radio' znajdującego w pliku /etc/ax25/axports przez stację sąsiednią o znaku VK2XLZ. Możliwe jest ustawienie ścieżki, która uchwyci wiele docelowych stacji Rose w formacie jednego wpisu. Składnia wygląda następująco: # rsparms -nodes add 5050295502/4 radio vk2xlz co jest jednoznaczne w wyżej podanym przykładem z tą różnicą, że uch­ wycone zostają tutaj wszystkie stacje docelowe rozpoczynające się od 4 cyfr początkowych, w tym wypadku 5050. Jeszcze inaczej można zapisać to tak: # rsparms -nodes add 5050/4 radio vk2xlz co jest chyba mniej dwuznaczne. 1122.. ŁŁąącczznnoośśccii AAXX..2255//NNeettRRoomm//RRoossee.. Po zaktywizowaniu i ustawieniu wszystkich interfejsów AX.25, NetRom i Rose można w końcu popróbować łaczności. Pakiet programów narzędziowych AX.25 zawiera program zwany 'call', który jest programem terminala z rozłącznym ekranem dla AX.25, NetRom i Rose. Prosta łączność wygląda tak: /usr/bin/call radio VK2DAY via VK2SUT Łączność z węzłem NetRom o pseudonimie SUNBBS wygląda tak: /usr/bin/call netrom SUNBBS Łączność przez Rose do stacji HEARD o węźle 5050882960, w ten sposób: /usr/bin/call rose HEARD 5050882960 Uwaga: 'call' musi wiedzieć na jakim porcie odbywa się łączność ponieważ te same stacje mogą być przecież osiągalne przez jakikolwiek port uprzednio skonfigurowany. Więcej informacji można znaleźć w podręczniku systemowym 'man'. 1133.. UUssttaawwiieenniiee LLiinnuuxxaa ddoo pprrzzyyjjmmoowwaanniiaa łłąącczznnoośśccii.. Linux jako system operacyjny posiada ogromne możliwości i nagina się do wielu sytuacji, gdy trzeba go konfigurować. Z elastycznością przychodzi też trud ustawiena go tak, żeby robił to czego chcemy. Trzeba zadać sobie wiele pytań przed rozpoczęciem ustawienia Linuxa do przyjmowania łączności z zewnątrz przez Rose, AX.25 i NetRom. Najważniejszym z nich jest:"Co chcę, aby użytkownicy zobaczyli podczas łączności?". Ludzie piszą rozmaite ciekawe programy, które mogą służyć użytkownikom, na przykład 'pms' zawarty w ax25-utils, lub 'node', bardziej rozbudowany' też dostępny w ax25-utils. Można też dać użytkownikom szansę zalogowania sie i użycia powłoki systemowej lub napisać własny program, jakąś grę lub bazę danych i pozwolić użytkownikom zrobić do niej łączność. Cokolwiek postanowisz musisz określić to oprogramowaniu AX.25, aby wiedziało co odpalić podczas wchodzących łączności. Program 'ax25d' przypomina 'inetd' stosowany powszechnie do przyjmowania wchodzących łączności TCP/IP na unixach. Czuwa on i nasłuchuje na wchodzące łączności. Jeśli ją wykryje to sprawdza swój plik systemowy, aby zdecydować jakim programem usłużyć tej konkretnej łączności. Wytłumaczymy zatem jak ustawić ten plik, który jest standardowy, narzędziem do przyjmowania wchodzących łączności. 1133..11.. EEddyyccjjaa pplliikkuu //eettcc//aaxx2255//aaxx2255dd..ccoonnff.. Plik ten ustawia demona 'ax25d' protokołu AX.25, który to demon zajmuje się wchodzącymi łącznościami AX.25, NetRom i Rose. Na perwszy rzut oka jest troche powikłane ale po chwili przekonasz się, że "nie taki diabeł czarny, jak go malują". Trzeba być tylko świadomy paru małych pułapek. Ogólny format pliku ax25d.conf jest taki: # This is a comment and is ignored by the ax25d program. [port_name] || <port_name> || {port_name} <peer1> window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments> <peer2> window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments> parameters window T1 T2 T3 idle N2 <mode> <peer3> window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments> default window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments> Gdzie: # stając na początku wiersza oznacza komentarz i jest całkowicie pomi­ jane przez program 'ax25d'. <port name> nazwa portu AX.25, NetRom lub Rose korespondująca kolejno do plików /etc/ax25/axports, /etc/ax25/nrports and /etc/ax25/rsports. Nazwa portu objęta jest nawiasem '[]' dla portu AX.25, '<>' dla NetRom, '{}' dla Rose. Można też inaczej zapisać to pole stosując 'znak/identyfika­ tor via' przed nazwą portu, pokazując w ten sposób, że będzie można łączyć się do tego interfejsu przez podany tutaj znak. Podamy dalej przykład, który to zilustruje. <peer> znak/identyfikator węzła wchodzącego, dla którego te ustawienia będą obowiązywać. Jeśli nie podasz tutaj numerycznego identyfikatora to każdy będzie pasował. window parametr Window dla AX.25 (K) lub MAXFRAME dla tego ustawienia T1 licznik retransmisji Ramki (T1) w jednoskach półsekundowych T2 czas wyczekiwania oprogramowania AX.25 na następną ramkę przed przygo­ towaniem odpowiedzi, w jednostkach jednosekundowych. T3 czas wyczekiwania zanim oprogramowanie AX.25 zamknie bezczynną łączność, mierzone w jednostkach 1 sekundy. idle wartość licznika braku akrywności w sekundach N2 liczba kolejnych retransmisji, które nastąpią zanim łącze zostanie zamknięte. <mode> dostarcza mechanizmu pozwalającego na określenie pewnego typu zez­ woleń. Podając rozmaite literki, każda reprezentuje jakieś zezwolenie, można manipulować tą funkcją. Literki muszą być albo małe albo duże i muszą być w jednym ciągu bez spacji. Oto do one: u/U UTMP - nie używane v/V Validate call - nie używane q/Q Quiet - nie prowadzi log-u dla łączności n/N check NetRom Neighbour - nie używane d/D Disallow Digipeaters - łączność musi być bezpośrednia, bez digi l/L Lockout - odrzuca łączność */0 marker - ustawia znaczek, nie zmienia zezwoleń <uid> 'userid' w Linuxie dla programu, który będzie obsługiwał wchodzącą łącznśść <cmd> pełna ścieżka dostępu programu, bez żadnych argumentów <cmd-name> tekst, który wystąpi dla tego programu po wydaniu polecenia systemowego 'ps' (Najczęsciej nazwa własna programu bez ścieżki dostępu). <arguments> są to argumenty podawane w wierszu poleceń dla <cmd>. Argumenty te przybierają rozmaite znaczenie w zależności od poniższych ustawień: %d Nazwa portu, na którym przyjęto łączność. %U znak/identyfikator AX.25 dołączonej stacji bez numerka SSID, dużymi literami. %u znak/identyfikator AX.25 dołączonej stacji bez numerka SSID, małymi literami. %S znak/identyfikator AX.25 dołączonej stacji z numerkiem SSID, dużymi literami. %s znak/identyfikator AX.25 dołączonej stacji z numerkiem SSID, małymi literami. %P znak/identyfikator węzła, od którego dokonuje się łączność, bez numerka SSID, dużymi literami %p znak/identyfikator węzła, od którego dokonuje się łączność, bez numerka SSID, małymi literami %R znak/identyfikator węzła, od którego dokonuje się łączność, z numerkiem SSID, dużymi literami %r znak/identyfikator węzła, od którego dokonuje się łączność, z numerkiem SSID, małymi literami Potrzebna jest jedna sekcja według powyższego formatu dla każdego interfejsu AX.25, NetRom i Rose, na którym przyjmowane mają być wchodzące łączności typu AX.25, NetRom i Rose. W paragrafie tym są jeszcze dwa specjalne wiersze, jeden rozpoczyna się od słowa 'parameters' a drugi od 'default' (tak, tak, różnią się). Wiersze te służą do specjalnych cełów. Wiersz 'default' służy jako siatka-na-wszystko. Wchodzące łączności, które nie mają własnych zezwoleń na danym interfejsie <interface_call> dostaną wartości domyślne podane w 'default'. Jeśli wpisu 'default' nie ma w ogóle to wszystkie wchodzące łączności nie posiadające własnych zezwoleń będą natychmiast odrzucone bez ostrzeżenia. Wiersz 'parameters' jest trochę bardziej subtelny i to tutaj jest ta pułapka, o której wspominałem u początku. Jakiekolwiek pole, którejkolwiek deklaracji dla węzła wchodzącego można wypełnić znaczekiem '*' by uzyskać 'wartość domyślną'. Wiersz 'parameters' jest wierszem, który deklaruje wspomniane 'wartości domyślne'. Oprogramowanie jądra z kolei posiada swoje własne wartości domyślne, których użyje jeśli nic nie określisz w wierszu 'parameters'. Pułapka polega na tym, że wartościustawione wierszem 'parameters' działają tylko w dól, a nie w górę. Można mieć więcej niż tylko jeden wpis 'parameters' dla poszczególnych interfejsów grupując sobie wartości domyślne. 1133..22.. PPrroossttyy pprrzzyykkłłaadd pplliikkuu aaxx2255dd..ccoonnff ffiillee.. No dobrze, teraz ilustracja: # ax25d.conf for VK2KTJ - 02/03/97 # This configuration uses the AX.25 port defined earlier. # <peer> Win T1 T2 T3 idl N2 <mode> <uid> <exec> <argv[0]>[<args....>] [VK2KTJ-0 via radio] parameters 1 10 * * * * * root /usr/sbin/axspawn axspawn %u + VK2XLZ * * * * * * * VK2DAY * * * * * * * NOCALL * * * * * * L default 1 10 5 100 180 5 * root /usr/sbin/pms pms -a -o vk2ktj [VK2KTJ-1 via radio] default * * * * * 0 root /usr/sbin/node node <netrom> parameters 1 10 * * * * * NOCALL * * * * * * L default * * * * * * 0 root /usr/sbin/node node {VK2KTJ-0 via rose} parameters 1 10 * * * * * root /usr/sbin/axspawn axspawn %u + VK2XLZ * * * * * * * VK2DAY * * * * * * * NOCALL * * * * * * L default 1 10 5 100 180 5 * root /usr/sbin/pms pms -a -o vk2ktj {VK2KTJ-1 via rose} default * * * * * 0 root /usr/sbin/node node radio Powyżej ukazane jest, że ktokolwiek usiłujący łączności do znaku `VK2KTJ-0' na porcie AX.25 o nazwie 'radio' otrzyma takie zezwolenia: Jeśli ktoś ma ustawione 'NOCALL' zostanie odrzucony, patrz użycie literki 'L'. Wiersz 'parameters' zmienia dwie wartości spośród domyślnych wartości jądra (Windows i T1) oraz wyznacza program /usr/sbin/axspawn program, aby był odpalony. Ktorakolwiek instancja programu 'axspawn' uruchomiona w ten sposób będzie widoczna po wydaniu polecenia 'ps' w Linuxie jako axspawn. Dwa następne wiersze dostarczają definicji dla dwóch stacji, do których powyższe reguły zostaną zastosowane. Ostatni wiersz w paragrafie jest definicją typu siatka-na-wszystko i zostanie zastosowana do wszystkich innych stacji (łącznie z VK2XLZ i VK2DAY jeśli mieć będą inne numerki SSID niż -1). Definicja ta ustawia wprost wszystkie wartości, dodatkowo odpala wchodzącym łącznościom typu AX.25 program 'pms' informując go, że łączność jest typu AX.25 i że właścicielem jest znak VK2KTJ. (Patrz 'Ustawianie PMS'a' poniżej). Następna konfiguracja przyjmuje łączności do znaku VK2KTJ-1 przez port 'radio'. Odpala ona program 'node' dla wszystkich, którzy się do niego łączą. Kolejna konfiguracja obsługuje NetRom. Zauważ zastosowanie nawiasów znaku-większości i znaku-mniejszości zamiast nawiasów kwadratowych. One właśnie deklarują wejście do NetRom. Ustawienie jest prostsze i mówi tylko tyle, że ktokolwiek wchodzi do stacji przez NetRom na porcie zwanym 'netrom' otrzyma program 'node', chyba że ma znak 'NOCALL' i wtedy zostanie odrzucony. Dwie ostanie konfiguracje przeznaczone są dla wchodzących łączności Rose. Pierwsza dla ludzi, którzy poprzez adres naszego węzła Rose wołają znak 'vk2ktj-0' a druga dal tych, co wołają znak 'VK2KTJ-1'. Działają one w dokładnie ten sam sposób. Zauważ zastosowane nawiasy, które odróżniają port Rose. Powyższy przykład jest zmyślony ale myślę, że jasno ilustruje ważne cechy składni pliku konfiguracyjnego. Pełny opis pliku znajdziesz w podręczniku systemowym 'man' dla ax25d.conf. Załączono bardziej szczegółowy przykład w pakiecie ax25-utils, który też się może przydać. 1133..33.. UUrruucchhaammiiaanniiee ddeemmoonnaa aaxx2255dd.. Po edycji wspomnianych dwóch plików można odpalić program ax25d poleceniem: # /usr/sbin/ax25d Gdy program pracuje, wówczas użytkownicy powinni móc łączyć się przez AX.25 do twojego Linuxa. Pamiętaj, abyś umieścił polecenie ax25d w plikach rc, aby startowało za każdym razem gdy właczasz komputer. 1144.. UUssttaawwiieenniiee wwęęzzłłaa.. Oprogramowanie węzła zostało zrobione przez Tomi'ego Manninen tomi.manninen@hut.fi i opierało się głownie na programie PMS. Dostarcza ono dość elastycznych i kompletnych możliwości dla węzła, które łatwo ustawić. Użytkownicy, po ustaleniu łączności, mogą odpalić Telnet, wykonać dalsze łączności NetRom, Rose lub AX.25 jak również uzuskiwać rozmaite informacje tak jak Finger, lista Węzłow i stacji ostanio słyszanych, itp. Węzeł można ustawić dość prosto tak, że zaserwuje on jakąkolwiek usługę dostępną pod Linuxem. Normalnie, 'node' wywoływany może być przez program 'ax25d', odpowie on też na wezwania wchodzące drogą TCP/IP dzięki 'inetd', który wpuści użytkownika i odpali go dla niego, lub można go uruchomić z wiersza poleceń. 1144..11.. UUttwwoorrzzeenniiee pplliikkuu //eettcc//aaxx2255//nnooddee..ccoonnff.. Plik node.conf decyduje o głównej konfiguracji węzła. Jest prostym plikiem tekstowym, a jego składnia jest taka: # /etc/ax25/node.conf # configuration file for the node(8) program. # # Linie rozpoczynające się od # są komentarzami i są ignorowane. # Hostname # deklaruje nazwę 'hostname' dla węzła hostname radio.gw.vk2ktj.ampr.org # Local Network # pozwala na określenie tego co 'local' w celach rewizji zezwoleń # przy użyciu node.perms localnet 44.136.8.96/29 # Hide Ports # Jeśli wpisane, pozwala na ukrycie portów przed użytkownikami. Podane porty # nie będą wyświetlane poleceniem (P)orts. hiddenports rose netrom # Callserver # jeśli wpisane, pozwoli użytkownikom na dostęp do callserver'a. callserver zone.oh7rba.ampr.org # Node Identification. # to pojawi się w zachęcie systemowej węzła NodeId LINUX:VK2KTJ-9 # NetRom port # To jest nazwa portu NetRom, który używany będzie do wychodzących łączności # z węzła 'node'. NrPort netrom # Node Idle Timeout # Określa w sekundach wartość "idle time" dla łączności z tym węzłem idletimout 1800 # Connection Idle Timeout # określa licznik "idle" dla łączności uczynionych przez ten węzeł, w sekundach # seconds. conntimeout 1800 # Reconnect # Określa czy łączność z użytkownikami powinna być ponowiona gdy ich łączność # z innymi stacjami została przerwana czy też mają być rozłączeni na dobre. # reconnect on # Pseudonimy dla poleceń # pozwala na uproszczenie uwikłanych poleceń węzła alias CONV "telnet vk1xwt.ampr.org 3600" alias BBS "connect radio vk2xsb" # Pseudonimy dla poleceń zewnętrzych # Pozwala na odpalanie programów z zewnątrz spod węzła 'node'. # extcmd <cmdname> <flag> <userid> <command> # Flag == 1 to jest jedyna dotychczas stosowana funkcja. # <command> jest pisane tak jak dla ax25d.conf extcmd PMS 1 root /usr/sbin/pms pms -u %U -o VK2KTJ # Logging # Ustawienie log-u do log-u systemowego. 3 - najbardziej gadatliwe, # 0 - wyłączone. loglevel 3 1144..22.. UUttwwoorrzzeenniiee pplliikkuu //eettcc//aaxx2255//nnooddee..ppeerrmmss.. Węzeł 'node' pozwala na ustawienie pewnych zezwoleń dla użytkowników. Zezwolenia te pozwalają ci decydować, którzy użytkownicy mogą używać opcji takich jak (T)elnet, i (C)onnect, na przykład, a którzy nie mogą. Plik node.perms zawiera właśnie te informacje i składa się z pięciu kluczowych pól. Jeśli pole zawiera znaczek '*' to zastępuje cokolwiek. Przydaje się to do definicji reguł domyślnych. user zawiera znak lub użytkownik do którego kolejne zezwolenia się tyczą. Numerki SSID są ignorowane, zatem umieścić tutaj należy goły znak. method każdy protokól i metoda dostępu może otrzymać swoje zezwolenia. Na przyklad możesz zezwolić użytkownikom dołączonym protokołem AX.25 i NetRom używać opcji (C)onnect, ale zabronić tego innym, którzy weszli telnetem z nie-lokalnego węzła. Drugie pole zatem pozwala określenie reguł dla łączności, które weszły różnymi metodami. Oto te metody: method description ------ ----------------------------------------------------------- ampr Użytkownik wszedł telnetem z adresu amprnet (44.0.0.0) ax25 Użytkownik wszedł drogą AX.25 host Użytkownik wszedł odpalając 'node' z wiersza poleceń inet Użytkownik wszedł telnetem z adresu 'non-local'i z poza amprnet local Użytkownik wszedł telnetem z komputera typu 'local' netrom Użytkownik wszedł drogą NetRom rose Użytkownik wszedł drogą Rose * Użytkownik wszedł jakkolwiek. port Dla użytkowników wchodzących przez AX.25 można udzielać zezwoleń osobno każdy port Ax.25. Pozwala to decydować co użytkownicy AX.25 mogą robić zależnie od tego do jakiego portu się podłączyli. Trzecie pole zawiera nazwę owych portów, jeśli używasz tej funkcji. Działa to tylko dla łączności przez AX.25. password nieobowiązkowo, można ustawić węzeł tak, że przedstawi on użytkownikom zachętę systemową, aby wprowadzili hasło zanim się dołączą. Przydaje się to do ochrony tych użytkowników, którzy ustawiony mają wysoki stopień zezwoleń. Jeśli czwarte pole ma być wypełnione to jego wartość jest hasłem, które będzie przyjęte. permissions to pole stoi jako ostanie dla każdego wpisu w pliku. Jest ono kodowane bitowo tak, że każda usługa posiada swoją wartość bitową, której wpisanie powoduje, że zezwolenie na usługę jest udzielone lub zabronione. Oto lista usług i im korespondujących warości bitowych: value description ----- ------------------------------------------------- 1 Zezwolenie na Login 2 Zezwolenie na (C)onnect drogą AX.25 4 Zezwolenie na (C)onnect drogą NetRom 8 Zezwolenie na (T)elnet do 'lokalnych' węzłów 16 Zezwolenie na (T)elnet do węzłów z sieci amprnet (44.0.0.0) 32 Zezwolenie na (T)elnet do 'nie-lokalnych', węzłów z poza amprnet 64 Zezwolenie na (C)onnect drogą AX.25 przez ukryte porty 128 Zezwolenie na (C)onnect drogą Rose Aby zakodować wartość zezwoleń dla danej reguły poprostu wybierz te zezwolenia, które chcesz, aby użytkownik miał i dodaj ich wartości bitowe. Otrzymaną w ten sposób cyfrę należy umieścić w polu nr. 5. Oto jak można ustawić plik node.perms: # /etc/ax25/node.perms # # Operatorem węzła jest VK2KTJ, posiada hasło 'secret' i wolno mu szystko # jakąkolwiek metodą wszedł vk2ktj * * secret 255 # Ci użytkownicy są nie wejdą w ogóle NOCALL * * * 0 PK232 * * * 0 PMS * * * 0 # Użytkownicy INET też nie wejdą w ogóle * inet * * 0 # Ci, którzy weszli drogą AX.25,NetRom, Local, Host i AMPR mają zezwolenie # na (C)onnect i (T)elnet do węzłów 'lokalnych' i amprnet, ale nie innych # adresów IP. * ax25 * * 159 * netrom * * 159 * local * * 159 * host * * 159 * ampr * * 159 1144..33.. UUssttaawwiieenniiee wwęęzzłłaa,, aabbyy bbyyłł uurruucchhaammiiaannyy zz aaxx2255dd.. Program 'node' powinien normalnie być uruchamiany przez program 'ax25d'. Dokonujemy tego wpisując odpowiednie reguły w pliku /etc/ax25/ax25d.conf. Na mojej maszynie chcialem, aby użytkownicy mieli wybór łączności do węzła lub innych programów usługowych. 'ax25d' pozwala właśnie na to jeśli sprytnie powpisujesz pseudonimy portów. Dla przykładu, stosując powyższą konfigurację ax25d chcę ustawić 'node' tak, aby użytkownicy łączący się do VK2KTJ-1 dostali się do węzła 'node'. Wpisałem zatem takie wiersze do pliku /etc/ax25/ax25d.conf: [vk2ktj-1 via radio] default * * * * * 0 root /usr/sbin/node node To oznacza, że oprogramowanie jądra Linuxa odpowie na prośbę o łączność dla znaku 'VK2KTJ-1' na porcie AX.25 nazwanego 'radio', i odpali potem program node. 1144..44.. UUssttaawwiieenniiee wwęęzzłłaa,, aabbyy bbyyłł uurruucchhaammiiaannyy zz ''iinneettdd''.. Jeśli chcesz, aby użytkownicy mogli wejść telnetem do twojej maszyny i uzyskać dostęp do węzła 'node' to nie ma nic prostszego. Najpierw zdecyduj na jaki port użytkownicy powinni się łaczyć. W tym wypadku wybrałem arbitralny numer 4000, choć Tomi podaje w swojej dokumentacji szczegóły na temat jak podmienić zwyczajnego demona telnetu na demona węzła 'node'. Potrzebujesz zmodyfikować dwa pliki. Do pliku /etc/services powinieneś dodać: node 4000/tcp #OH2BNS's node software a do pliku /etc/inetd.conf dodaj: node stream tcp nowait root /usr/sbin/node node Po wykonaniu tego i po restarcie programu 'inetd' użytkownicy, którzy wchodzą telnetem na port 4000 w twojej maszynie dostaną zachętę syste­ mową, aby się zalogować, i jeśli zostało to dla nich skonfigurowane to hasło, po podaniu którego podłączeni zostaną do węzła 'node'. 1155.. UUssttaawwiieenniiee pprrooggrraammuu aaxxssppaawwnn.. Program axspawn pozwala wchodzącym drogą AX.25 stacjom na zalogowanie się do twojego komputera. Może on zostać wywołany programem ax25d w taki sam sposób jak program 'node'. Należy dodać tego typu zapis do pliku /etc/ax25/ax25d.conf, jeśli pragniesz, aby użytkownicy mogli logować się do twojego komputera: default * * * * * 1 root /usr/sbin/axspawn axspawn %u Jeśli wiersz zakończony zostanie znaczniek '+' to użytkownicy, przed zalogowaniem, będą musieli uderzyć przycisk 'Return'. Wartość domyślna ma to wyłączone. Poszczególne zapisy dla stacji, które występują pod tym wierszem spowodują uruchomienie programu 'axspawn' podczas wchodzącej łączności. Po uruchomieniu, 'axspawn' najpierw sprawdza czy na wierszu poleceń ukazał się legalny znak/edentyfikator, pozbawia go numerka SSID, a potem sprawdza plik /etc/passwd czy użytkownik posi­ ada założone konto. Jeśli tak, i hasło jest ""(puste) lub '+', wtedy wpuszcza użytkownika. Jeśli w polu hasła jest cokolwiek innego to użytkownik jest odpytywany o swoje hasło. Przy nieistaniejących kon­ tach w pliku /etc/passwd 'axspawn' można ustawić tak, że utworzy je sam. 1155..11.. UUttwwoorrzzeenniiee pplliikkuu //eettcc//aaxx2255//aaxxssppaawwnn..ccoonnff.. Zachowanie programu axspawn można zmieniać plikiem /etc/ax25/axspawn.conf. Plik ten ma formę: # /etc/ax25/axspawn.conf # # pozwala na automatyczne zakładanie kont dla użytkowników create yes # # wpuszcza użytkownika 'gość' jeśli wyżej jest 'no' lub niepowiodły sie # inne rzeczy. Wyłacza sie 'no'. guest no # # ID dla groupy lub nazwa konta dla samozakładania konta group ax25 # # first user id to use first_uid 2001 # # maximum user id max_uid 3000 # # gdzie umieszczać katalog domowy dla nowych użytkowników home /home/ax25 # # powłoka systemowa dla użytkownika shell /bin/bash # # kojarzenie znaków z użytkownikami dla łączności wychodzących. associate yes Powyższe osiem ustawialnych przełaczników mają takie znaczenie: # wskazuje, ze to komentarz create jeśli ustawione na 'yes' to 'axspawn usiłuje sam założyć konto dla użytkownika, który jeszcze nie ma wpisu w pliku /etc/passwd. guest pole to określa nazwę login-u konta dla ludzi włączających się ale nie mających jeszcze konta przy 'create' ustawionym na 'no'. Zwykle jest to ax25 lub guest group to pole określa nazwę grupy, jaka zostanie użyta dla włączających się użytkowników nie mających jeszcze wpisu w pliku /etc/passwd. first_uid jest to cyfra pierwszego userid wybieranego automatycznie dla nowych użytkowników. max_uid jest to najwyższy numer, jaki będzie użyty dla userid nowych użytkowników home to jest katalog domowy (login) dla nowych uzytkowników shell to określa powłokę systemową dla nowych użytkowników associate to oznaczenie wskazuje czy użytkownik, po zalogowaniu się, wykonujący łączność wychodzącą będzie miał swój własny znak, czy też znak twojej stacji. 1166.. UUssttaawwiieenniiee PPMMSS.. Program pms to implementacja prostego 'personal message system' napisanego początkowo przez Alan'a Cox. Dalszy rozwój podjęty został przez David'a Brown, N2RGT, dcb@vectorbd.com. Obecnie jest nadal bardzo prosty mający mozliwość wysłania e-mail'a do właściciela systemu i uzyskać ograniczone informacje maszynie lecz David pracuje nad tym, jak poszerzyć jego możliwości i uczynić go bardziej użytecznym. Pozostało więc teraz parę prostych plików do stworzenia, które udzielą użytkownikom pewnych informacji o samym systemie, a potem dodać odpowiedni zapis do pliku ax25d.conf, aby dołączający się użytkownicy dostali się do PMS. 1166..11.. UUttwwoorrzzeenniiee pplliikkuu //eettcc//aaxx2255//ppmmss..mmoottdd.. Plik /etc/ax25/pms.motd zawiera 'wiadomość dnia', którą użytkownicy ujrzą po ustaleniu łączności i zwykłym nagłóku BBS. Ten prosty plik jest tekstowy i wiadomość w nim zawarta będzie wysłana do użytkowników. 1166..22.. UUttwwoorrzzeenniiee pplliikkuu //eettcc//aaxx2255//ppmmss..iinnffoo.. Plik /etc/ax25/pms.info również ma zawierać tekstowe, bardziej szczegółowe informacje na tremat twojej stacji. Informacja w nim zawarta przedstawiana jest użytkownikom w odpowiedzi na ich polecenie 'Info' z zachęty PMS>. 1166..33.. KKoojjaarrzzeenniiee zznnaakkóóww AAXX..2255 zz kkoonnttaammii uużżyyttkkoowwnniikkóóww Gdy jakiś użytkownik wysyła pocztę do znaku AX.25 to 'pms' spodziewa się, że znak ten jest własnością prawdziwego użytkownika z kontem na twojej maszynie. Opisane jest to w osobnej sekcji. 1166..44.. DDooddaanniiee PPMMSS ddoo pplliikkuu //eettcc//aaxx2255//aaxx2255dd..ccoonnff.. Dodanaie programu 'pms' do pliku /etc/ax25/ax25d.conf jest bardzo proste. Trzeba jednak pamiętać o jednej malutkiej rzeczy. Dave dodał możliwość podania argumentów dla PMS na wierszu poleceń, które kontrolują kilkanaście konwencji związanych z końcem wiersza. Konwencje AX.25 i NetRom oczekują, że 'end-of-line' to 'carriage return', 'linefeed' podczas gdy w unixach to jest poprostu 'newline'.Więc, dla przykładu, jeśli checiałbyś dodać zapis, który oznaczałby, że należy odpalić PMS dla wchodzącej łączności przez port AX.25, to dadaj taki wiersz: default 1 10 5 100 5 0 root /usr/sbin/pms pms -a -o vk2ktj To poprostu odpala program pms mówiąc mu, że jest to łączność wchodząca drogą AX.25 i że właścicielem PMS'a jest vk2ktj. Popatrz na podręcznik systemowy 'man' w sprawie innych argumentów dla innych metod dostępu. 1166..55.. SSpprraawwddzzeenniiee PPMMSS''aa Aby sprawdzić czy PMS działa sprubuj taką komendę z wiersza poleceń: # /usr/sbin/pms -u vk2ktj -o vk2ktj Podstaw swój własny znak w miejsce mojego. Polecenie to odpali PMS mówiąc mu, że ma używać uniksowych konwencji end-of-line, i że użytkownikiem logującym się jest vk2ktj. Możesz zrobić teraz wszystko to, co użytkownicy łączący się z zewnątrz. Dodatkowo mógłbyś poprosić jakąś inną stację, aby się do ciebie dołączyła, aby potwierdzić, że ustawienie pliku ax25d.conf działa poprawnie. 1177.. UUssttaawwiieenniiee pprrooggrraammóóww uusseerr__ccaallll.. Programy 'user_call' to w rzeczywistości są 'ax25_call' i 'netrom_call'. Pomuślane są one tak, że mogą być wezwane z 'ax25d', w celu zautomatyzowania łączności z odległymi komputerami. Naturalnie można je wywołać z wielu innych miejsc, np. z powłoki systemowej, lub innych demonów, jak np. programu 'node'. Przupominają w swej prostocie program 'call'. Nie zajmują się obróbką żadnych danych, zatem sam musisz zadbać o to jak traktowane będzie end-of-line. Rozpocznijmy od tego jak można ich używać. Wyobraź sobie, że posiadasz małą sieć w domu i że jednym komputerem jest Linux spelniający rolę bramki radiowej, oraz drugi komputer, który jest węzłem BPQ. Komputery złączone są razem ethernetem. Noramlnie, użytkownicy radiowi, aby móc łączyć się z węzłem BPQ musieliby robić to przez digipeating poprzez twojego linuxa, lub połączyć się wpierw z programem 'node' na twoim linuxie, a stamtąd wykonać następne połączenie do węzła BPQ. Wyobraź sobie, że węzeł BPQ ma znak VK2KTJ-9 a linux ma port o nazwie 'bpq' obsługujący AX.25/ethernet. Również dodajmy, że bramka radiowa Linux posiada port radiowy 'radio'. Zapis do pliku /etc/ax25/ax25d.conf wyglądałby w ten deseń: [VK2KTJ-1 via radio] default * * * * * * * root /usr/sbin/ax25_call ax25_call bpq %u vk2ktj-9 i umożliwiłby użytkownikom połączenie wprost do `VK2KTJ-1' co w grun­ cie rzeczy jest demonem ax25d pod Linuxem a następnie przełoczyłoby ich na łączność AX.25 do `VK2KTJ-9' przez interfejs 'bpq'. Jest cały asortyment innych możliwych kombinacji, które są do wypróbowania. Programy 'netrom_call' oraz 'rose_call' pracują w podobny sposób. Jeden z radioamatorów wykorzystał tę funkcję, aby ułatwić łączność do odległego BBS-u. Noramalnie użytkownik musiałby wprowadzić dlugą strunę poleceń, aby wykonać tę łączność więc on dokonał wpisu, który sprawiał, że wspomniany BBS wyglądał tak, jakby dostępny on był na sieci lokalnej; demon ax25d pośredniczył w łączności do odległego BBS-u. 1188.. KKoojjaarrzzeenniiee zznnaakkóóww AAXX..2255 zz kkoonnttaammii uużżyyttkkoowwnniikkóóww LLiinnuuxxaa.. Istnieje wiele sutuacji, w których pożądane jest, aby powiązać znak z kontem użytkownika Linuxa. Jedną z takich sutuacji byłaby, gdy wielu radioamatorów dzielą ze sobą tę samą maszynę a chcą używać swoich znaków dla wychodzących łączności. Innym przykładem jest PMS, którego użytkownicy chcieliby rozmawiać z jakimś użytkownikiem na twoim komputerze. Oprogramowanie AX.25 dostarcza sposobu pozwalającego na skojarzenie znaku z kontem użytkownika. Wspominaliśmy to już wcześniej w sekcji o PMS, ale podkreślam to raz jeszcze, żeby nie umknęło to twej uwadze. Kojarzenia dokonujemy poleceniem 'axparms'. Ota jak wygląda przykład: # axparms -assoc vk2ktj terry Polecenie to kojarzy powyższy znak AX.25 vk2ktj z kontem 'terry' na tym komputerze. Więc przykładowo, każda poczta dla vk2ktj z pms-u będzie dostarczona do konta 'terry' pod Linuxem. Zapamiętaj, aby wpisać te kojarzenia do plików rc, aby dostępne były za każdym razem, gdy odpalasz komputer. Zauważ, że nigdy nie powinieneś kojarzyć znaku z kontem 'root' ponieważ spowoduje to dużo problemów konfiguracyjnych w innych programach. 1199.. JJaakk ppoołłąącczzyyćć ssiieecciioowwee oopprrooggrraammoowwaanniiee NNOOSS zz jjąąddrreemm lliinnuuxxaa?? Wielu ludzi preferuje którąś z wersji NOS uruchamianą w Linuxie ponieważ oferują one wiele cech funkcji, do któtych przywykli. Większość tych ludzi chciałoby również mieć taką mozliwość, aby NOS mógł mówić do jądra Linuxa po to, by móc zaoferować jego niektóre usługi dla użytkowników radiowych. 1199..11.. ŁŁąącczzeenniiee NNOOSS--aa ii LLiinnuuxxaa zzaa ppoommooccąą ''ffaajjkkii''.. Następująca informacja jest wkładem Brandon'a S. Albery, KF8NH, który wytłumaczył jak wzajemnie połączyć NOS'a uruchomionego pod Linuxem z samym jądrem Linuxa przy użyciu urządzenia 'fajka'. Ponieważ zarówno Linux jak NOS obsługują protokół 'slip' możliwe jest połączenie nich obu ustawiając łącze slip. Kosztownym sposobem możnaby to zrobić za pomocą pętli kablowej i dwóch portów seryjnych; byłoby to powolne łącze. Linux dostarcza funkcji, która dostępna jest na wielu innych Unixo-podobnych systemach operacyjnych, zwanej 'fajką'. Są to specjalne pseudo interfejsy, które przedstawiają się dla oprogramowania jako standardowe urządzenia tty, lecz faktycznie są tylko pętlami do następnej 'fajki'. Urządzenia te mogą być używane jeśli program pierwszy otworzy je ze strony 'master', a następnie program drugi ze strony 'slave'. Gdy oba końce zostaną otworzone, wówczas programy mogą się komunikować ze sobą pisząc poprostu literki przez 'fajkę' jakby to było normalne urządzenie terminalowe. Zanim połączysz jakąś wersję NOS-a lub innego programu z jadrem Linuxa, wpierw musisz wybrać jakąś 'fajkę'. Znajdziesz ją szukając w katalogu '/dev'. Końcówki 'master' nazywają się ptyp[1-f] a końcówki 'slave' znane są jako: ttyp[1-f]. Pamiętaj, że występują parami. Jeśli weźmiesz 'fajkę' /dev/ptypf jako końcówkę 'master' to musisz dobrać 'fajkę' /dev/ttypf jako 'slave'. Po wybraniu pary urządzeń 'fajka', należy przypisać końcówkę 'master' dla jądra a końcówkę 'slave' dla programu NOS ponieważ jądro Linuxa rozpoczyna jako pierwsze, a 'master' musi być otworzone na początku. Linux, warto wiedzieć, powinien mieć odmienny IP adres od adresu NOS- a, zatem musisz mu przypisać unikalny adres, jeśli jeszcze tego nie uczyniłeś. # /sbin/slattach -s 38400 -p slip /dev/ptypf & # /sbin/ifconfig sl0 broadcast 44.255.255.255 pointopoint 44.70.248.67 / mtu 1536 44.70.4.88 # /sbin/route add 44.70.248.67 sl0 # /sbin/route add -net 44.0.0.0 netmask 255.0.0.0 gw 44.70.248.67 W tym przykładzie jądro linuxa otrzynało adres IP 44.70.4.88 a program NOS adres IP 44.70.248.67. Polecenie 'route' w ostatnim wierszu instruuje jądro linuxa, że wszelkie datagramy z przeznaczeniem dla amprnet-u mają iść poprzez łącze slip utworzone poleceniem slattach. Zwykle polecenia powyższe umieścić należałoby w w plikach /etc/rc.d/rc.inet2 po tym jak wszystkie inne ustawienia siciowe zostaną wykonane, po to, aby łącze slip było dostępne po przeładowaniu komputera. Uwaga: nie ma powodów, aby używać cslip zamiast slip gdyż to właściwe redukuje osiągi ponieważ łącze to jest virtualne i zachodzi wystarczająco szybko, a uprzenia kompresja nagłówków zabiera więcej czasu aniżeli przesył nieskompresowanych datagramów. Ustawienie łącza po stronie NOS-a można pokusić się i zrobić tak: # interfejs można nazwać jak ci się podoba. ja nazwałem go dla wygody # 'linux' # attach asy ttypf - slip linux 1024 1024 38400 route addprivate 44.70.4.88 linux Polecenia te utworzą port slip zwany 'linux' na 'fajce' z końcówką 'slave' i dołączą go do jadra linuxa, dodadzą 'ścieżkę', aby łącze pracowało. Po wystartowaniu NOS-a pod Linuxem powinieneś móc 'zapin­ gować' Linuxa i odwrotnie. Jeśli nie, posprawdzaj, że nie popełniłeś żadnych błędów, szczególnie przy adresach i na końcówkach 'fajek'. 2200.. ZZaappiissyy ww pplliikkuu //pprroocc.. System plików /proc zawiera pewną liczbę plików związanych bezpośrednio z oprogramowaniem jądra dla AX.25 i NetRom. Używane są one głownie przez programy z pakietu ax25-utils ale mają taki format,że być może chciałbyś je przeczytać. Foramt jest naprawdę łatwy i nie sądzę, że trzeba wiele tłumaczyć. /proc/net/arp zawiera mapę dla protokołu Address Resolution pomiędzy adresami IP a adresami protokołu warstwy MAC. Te obejmują AX.25, ethernet i niektóre protokoły wartstwy MAC /proc/net/ax25 zawiera listę otwartych gniazd AX.25. Mogą one albo sluchać na nadchodzące łączności lub są aktywne. /proc/net/ax25_bpqether zawiera mapę dla AX.25 a BPQ o znakach /proc/net/ax25_calls zawiera mapę o userid i znakach ustawioną przez polecenie axparms -assoc command. /proc/net/ax25_route zawiera informację na temat ścieżki digipeaterów /proc/net/nr zawiera listę gniazd NetRom, które są otwarte na skutek tego, że sluchają lub, że są aktywne. /proc/net/nr_neigh zawiera informacje o sąsiadach, o których NetRom jest świadome. /proc/net/nt_nodes zawiera informacje o węzłach znanych dla oprogramowania NetRom /proc/net/rose zawiera listę otwartych gniazd Rose na skutek tego, że albo słuchają albo są aktywne /proc/net/Rose_nodes zawiera mapę o docelowych stacjach Rose przez sąsiadów Rose /proc/net/rose_neigh zawiera listę węzłów, które Rose zna /proc/net/rose_routes zawiera listę wszystkich aktywnych łączy Rose 2211.. PPrrzzyykkłłaaddoowwee kkoonnffiigguurraaccjjee.. Podane są poniżej przykłady niektórych typowych konfiguracji. Są to tylko rady ponieważ jest tyle sposobów ustawienia swojej sieci ile istnieje sieci do skonfigurawania, ale te mogą przydać ci się na początek. 2211..11.. MMaałłaa ssiieećć zz lliinnuuxxeemm jjaakkoo rroouutteerreemm ddllaa llookkaallnneejj ssiieeccii rraaddiioowweejj Wielu z was posiada małe, lokalne sieci w domu i chcecie podłaczyć te komputery do swojej lokalnej sieci radiowej. Właśnie takiego układu używam sam w domu. Zadbałem o to, aby dostać odpowiednią liczbę właściwych adresów, tak, aby można było je uchwycić jednym routingiem dla wygody i używam ich na swojej lokalnej sieci ethernet. Wasz koordynator adresów IP pomoże wam w tym również jeśli chcecie tego sprobować. Adresy mojej lokalne sieci Ethernet tworzą podsekcję adresów sieci radiowej. Następujące ustawienie jest rzeczywistę dla linuxa jako routera na mojej sieci w domu: --- . | Network /---------\ . Network | 44.136.8.96/29| | . 44.136.8/24 \ | / | | Linux | . \|/ | | | . | | eth0 | Router | . /-----\ /----------\ | |---------------| |-----| TNC |----| Radio |---/ | 44.136.8.97 | and | . \-----/ \----------/ | | | sl0 | | Server | 44.136.8.5 | | | . | | | . | \_________/ . --- . . . . . . #!/bin/sh # /etc/rc.net # To ustawienie dostarcza jednego portu AX.25 w KISS i jednego interfejsu # Ethernet. echo "/etc/rc.net" echo " Configuring:" echo -n " loopback:" /sbin/ifconfig lo 127.0.0.1 /sbin/route add 127.0.0.1 echo " done." echo -n " ethernet:" /sbin/ifconfig eth0 44.136.8.97 netmask 255.255.255.248 \ broadcast 44.136.8.103 up /sbin/route add 44.136.8.97 eth0 /sbin/route add -net 44.136.8.96 netmask 255.255.255.248 eth0 echo " done." echo -n " AX.25: " kissattach -i 44.136.8.5 -m 512 /dev/ttyS1 4800 ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.8.255 route add -host 44.136.8.5 sl0 route add -net 44.136.8.0 window 1024 sl0 echo -n " Netrom: " nrattach -i 44.136.8.5 netrom echo " Routing:" /sbin/route add default gw 44.136.8.68 window 1024 sl0 echo " default route." echo done. # end /etc/ax25/axports # name callsign speed paclen window description 4800 VK2KTJ-0 4800 256 2 144.800 MHz /etc/ax25/nrports # name callsign alias paclen description netrom VK2KTJ-9 LINUX 235 Linux Switch Port /etc/ax25/nrbroadcast # ax25_name min_obs def_qual worst_qual verbose 4800 1 120 10 1 W jądrze trzeba uaktywnić IP_FARWARDING. Pliki konfiguracyjne AX.25 są mniej więcej takie same ja przykłady we wcześniejszych sekcjach, więc zajrzyj do nich gdy trzeba. Zdecydowałem się przypisać adres IP dla portu radiowego, który nie nałeży do bloku mojej domowej sieci. Nie musiałem tak robić, można było śmiało użyć 44.136.8.97 na tym porcie. 44.136.8.68 to moja lokalna bramka do enkapsulacji IPIP, zatem tutaj kieruję ścieżkę domyślną. Każdy komputer na sieci Ethernet ma ścieżkę: route add -net 44.0.0.0 netmask 255.0.0.0 \ gw 44.136.8.97 window 512 mss 512 eth0 Stosowanie parametrów mss i window oznacza, że uzyskuję maksymalne osiągi zarówno na płączeniach Ethernet jak i radiowych. - na routerze mam odpalone rzownież ftp, http, smail i inne demony więc jest on jedynym komputerem, który innym serwuje usługi - mój router to pokorne 386DX20 z 20 Mb twardego dysku i bardzo minimalną wersją linuxa. 2211..22.. KKoonnffiigguurraaccjjaa pprrzzyykkłłaaddoowwaa ddllaa bbrraammkkii zz eennkkaappssuullaaccjjąą IIPPIIPP.. Linux jest obecnie pospolicie używany jako bramka dla enkapsulacji TCP/IP po całym świecie. Nowy sterownik 'tunnel' obsługuje wielokrotne ścieżki enkapsulacji i sprawia, że demon ipip jest przestarzały. Typowa konfiguracja wygłądałaby w takowy sposób: --- . | Network /---------\ . Network | 154.27.3/24 | | . 44.136.16/24 \ | / | | Linux | . \|/ | | | . | | eth0 | IPIP | . /-----\ /----------\ | ---|---------------| |-----| TNC |----| Radio |---/ | 154.27.3.20 | Gateway | . \-----/ \----------/ | | | sl0 | | | 44.136.16.1 | | | . | | | . | \_________/ . --- . . . . . . Pliki którymi trzeba się zająć to: # /etc/rc.net # ustawiamy tutaj jeden port radiowy AX.25 w trybie KISS, jeden Ethernet, # używamy sterownika 'tunnel' do IPIP encap/decapsulation # # echo "/etc/rc.net" echo " Configuring:" # echo -n " loopback:" /sbin/ifconfig lo 127.0.0.1 /sbin/route add 127.0.0.1 echo " done." # echo -n " ethernet:" /sbin/ifconfig eth0 154.27.3.20 netmask 255.255.255.0 \ broadcast 154.27.3.255 up /sbin/route add 154.27.3.20 eth0 /sbin/route add -net 154.27.3.0 netmask 255.255.255.0 eth0 echo " done." # echo -n " AX.25: " kissattach -i 44.136.16.1 -m 512 /dev/ttyS1 4800 /sbin/ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.16.255 /sbin/route add -host 44.136.16.1 sl0 /sbin/route add -net 44.136.16.0 netmask 255.255.255.0 window 1024 sl0 # echo -n " tunnel:" /sbin/ifconfig tunl0 44.136.16.1 mtu 512 up # echo done. # echo -n "Routing ... " source /etc/ipip.routes echo done. # # end. and: # /etc/ipip.routes # This file is generated using the munge script # /sbin/route add -net 44.134.8.0 netmask 255.255.255.0 tunl0 gw 134.43.26.1 /sbin/route add -net 44.34.9.0 netmask 255.255.255.0 tunl0 gw 174.84.6.17 /sbin/route add -net 44.13.28.0 netmask 255.255.255.0 tunl0 gw 212.37.126.3 ... ... ... /etc/ax25/axports # name callsign speed paclen window description 4800 VK2KTJ-0 4800 256 2 144.800 MHz Niektóre uwagi do zanotowania: - Nowy sterownik 'tunnel' używa pola gw w tablicach routingowych w miejsce parametru 'pointopoint' do określenia adresu odległej bramki IPIP. Oto dlaczego obecnie obsługuje wielokrotne ścieżki na każdym interfejsie. - Można ustawić dwa interfejsy sieciowe z tym samym adresem. W tym przykładzie zarówno interfejs sl0 jak i tunl0 przyjęły adres IP portu radiowego. Czyni się tak w tym celu, aby odległa bramka widziała poprawne adresy na enkapsulo- wanych datagramach wysyłanych do niej z twojej bramki. - polecenia 'route' do określania enkapsulowanych ścieżek można wygenerować używając modyfikowanej wersji "skryptu munge". Podane jest to niżej. Polecenia route wpisane byłyby potem do osobnego pliku i czytane przez bash z /etc/ipip.routes (założywszy, że nazwałeś plik z poleceniami routingu nazwą /etc/ipip.routes) tak jak na ilustracji. Plik źródłowy musi mieć format w stylu poleceń 'route' pod NOS-em. - Zauważ stosowanie argumentu 'window' dla polecenia 'route'. Ustawienie tego parametru na właściwą wartość polepsza osiągi na łączu radiowym Oto nowy skrypt 'tunnel-munge': #!/bin/sh # # From: Ron Atkinson <n8fow@hamgate.cc.wayne.edu> # # This script is basically the 'munge' script written by Bdale N3EUA # for the IPIP daemon and is modified by Ron Atkinson N8FOW. It's # purpose is to convert a KA9Q NOS format gateways route file # (usually called 'encap.txt') into a Linux routing table format # for the IP tunnel driver. # # Usage: Gateway file on stdin, Linux route format file on stdout. # eg. tunnel-munge < encap.txt > ampr-routes # # NOTE: Before you use this script be sure to check or change the # following items: # # 1) Change the 'Local routes' and 'Misc user routes' sections # to routes that apply to your own area (remove mine please!) # 2) On the fgrep line be sure to change the IP address to YOUR # gateway Internet address. Failure to do so will cause serious # routing loops. # 3) The default interface name is 'tunl0'. Make sure this is # correct for your system. echo "#" echo "# IP tunnel route table built by $LOGNAME on `date`" echo "# by tunnel-munge script v960307." echo "#" echo "# Local routes" echo "route add -net 44.xxx.xxx.xxx netmask 255.mmm.mmm.mmm dev sl0" echo "#" echo "# Misc user routes" echo "#" echo "# remote routes" fgrep encap | grep "^route" | grep -v " XXX.XXX.XXX.XXX" | \ awk '{ split($3, s, "/") split(s[1], n,".") if (n[1] == "") n[1]="0" if (n[2] == "") n[2]="0" if (n[3] == "") n[3]="0" if (n[4] == "") n[4]="0" if (s[2] == "1") mask="128.0.0.0" else if (s[2] == "2") mask="192.0.0.0" else if (s[2] == "3") mask="224.0.0.0" else if (s[2] == "4") mask="240.0.0.0" else if (s[2] == "5") mask="248.0.0.0" else if (s[2] == "6") mask="252.0.0.0" else if (s[2] == "7") mask="254.0.0.0" else if (s[2] == "8") mask="255.0.0.0" else if (s[2] == "9") mask="255.128.0.0" else if (s[2] == "10") mask="255.192.0.0" else if (s[2] == "11") mask="255.224.0.0" else if (s[2] == "12") mask="255.240.0.0" else if (s[2] == "13") mask="255.248.0.0" else if (s[2] == "14") mask="255.252.0.0" else if (s[2] == "15") mask="255.254.0.0" else if (s[2] == "16") mask="255.255.0.0" else if (s[2] == "17") mask="255.255.128.0" else if (s[2] == "18") mask="255.255.192.0" else if (s[2] == "19") mask="255.255.224.0" else if (s[2] == "20") mask="255.255.240.0" else if (s[2] == "21") mask="255.255.248.0" else if (s[2] == "22") mask="255.255.252.0" else if (s[2] == "23") mask="255.255.254.0" else if (s[2] == "24") mask="255.255.255.0" else if (s[2] == "25") mask="255.255.255.128" else if (s[2] == "26") mask="255.255.255.192" else if (s[2] == "27") mask="255.255.255.224" else if (s[2] == "28") mask="255.255.255.240" else if (s[2] == "29") mask="255.255.255.248" else if (s[2] == "30") mask="255.255.255.252" else if (s[2] == "31") mask="255.255.255.254" else mask="255.255.255.255" if (mask == "255.255.255.255") printf "route add -host %s.%s.%s.%s gw %s dev tunl0\n"\ ,n[1],n[2],n[3],n[4],$5 else printf "route add -net %s.%s.%s.%s gw %s netmask %s dev tunl0\n"\ ,n[1],n[2],n[3],n[4],$5,mask }' echo "#" echo "# default the rest of amprnet via mirrorshades.ucsd.edu" echo "route add -net 44.0.0.0 gw 128.54.16.18 netmask 255.0.0.0 dev tunl0" echo "#" echo "# the end" 2222.. PPrrooggrraammoowwaanniiee wwaarrssttwwyy ssiieecciioowweejj AAXX..2255,, NNeettRRoomm ii RRoossee.. Największą bodajże zaletą stosowania protokołów radioamatorskiego radia packet opartego o jądro linuxa jest łatwość, z jaką możesz pisać aplikacje i programy i je na nim używać. Choć temat Programowania Sieci pod Unixem przekracza ramy tegoż dokumentu, to jednak opiszę tutaj elementarne szczegóły dotyczące jak wykorzystać protokoły AX.25, NetRom i Rose wewnątrz swojego oprogramowania. 2222..11.. RRooddzziinnyy aaddrreessóóww.. Programowanie sieciowe pod Linuxem dla AX.25, NetRom i Rose przypomina programowanie dla TCP/IP. Najwięszą różnicą jest stosowana rodzina adresu i jego struktura, którą należy poprzekręcać w odpowiednie miejsce. Nazwy rodziny adresów dla AX.25, NetRom i Rose to kolejno AF_AX25, AF_NETROM oraz AF_ROSE. 2233.. PPlliikkii nnaaggłłóówwkkoowwee.. Zawsze należy dołączyć plik 'ax25.h', 'netrom.h' i rose.h' jeśli masz do czynienia z tymi protokołami. Prosty szkielet górnej części wyglądałby tak: Dla AX.25: #include <ax25.h> int s, addrlen = sizeof(struct full_sockaddr_ax25); struct full_sockaddr_ax25 sockaddr; sockaddr.fsa_ax25.sax25_family = AF_AX25 Dla NetRom: #include <ax25.h> #include <netrom.h> int s, addrlen = sizeof(struct full_sockaddr_ax25); struct full_sockaddr_ax25 sockaddr; sockaddr.fsa_ax25.sax25_family = AF_NETROM; Dla Rose: #include <ax25.h> #include <rose.h> int s, addrlen = sizeof(struct sockaddr_rose); struct sockaddr_rose sockaddr; sockaddr.srose_family = AF_ROSE; 2233..11.. KKwweessttiiaa zznnaakkóóww ii pprrzzyykkłłaaddyy.. W bibliotekach /lib/ax25.a zawartych w pakiecie progamów narzędziowych ax25-utils znajdują się wbudowane rutyny konwerujące znaki wywoławcze. Jeśli chcesz możesz napisać swoje własne. Program narzędziowy user_call jest wyśmienitym przykładem na początek. Źródła dla tych rutyn zawarte są w pakiecie programów narzędziowych AX.25-utils. Po spędzeniu paru chwil pracując nad nimi zauważysz, że 90 procent roboty to przygotowanie otworzenia 'socket-u'. Wykonanie łączności jest łatwe podczas gdy przygotowanie zajmuje trochę czasu. Przykłady są na tyle proste, że nie wprowadzają zamieszania. Jeśli masz jakieś pytanie to kieruj je na listę linux-hams, gdzie znajdą się ludzie gotowi udzielć ci odpowiedzi. 2244.. DDyysskkuussjjaa zzwwiiąązzaannaa zz RRaaddiieemm AAmmaattoorrsskkiimm ii LLiinnuuxxeemm.. Jest wiele miejsc, gdzie dyskutuje się na temat Radio Amatorskiego i Linuxa, na przykład na comp.os.linux.* lub na liście pocztowej vger.rutgers.edu. Inne miejsca, gdzie się to czyni, to listy pocztowe tcp-group na ucsd.edu (ojczyzna dyskusji na temat TCP/IP i radia amatorskiego), jak również kanał #linpeople w sieci linuxnet na IRC. Aby zapisać się na listę dyskusyjną linux-hams, wyślij pocztę do: Majordomo@vger.rutgers.edu z tekstem: subscribe linux-hams w częsci listu. Wiersz 'subject:' jest pomijany. Archiwum listy linux-hams znajduje się na: http://zone.pspt.fi/archive/linux-hams/ oraz na http://zone.oh7rba.ampr.org/archive/linux-hams/. Staraj się zajrzeć tam zanim rozpoczniesz dyskusję ponieważ odpowiedziano tam na wiele powszechnych pytań. Aby zapisać się na listę tcp-group, wyślij list do: listserver@ucsd.edu z tekstem: subscribe tcp-group w częsci listu. Zauważ, że lista tcp-group jest przeznaczona głównie do dyskusji o zaawansowanych protokołach, których TCP/IP jest przykładem, w Radiu Amatorskim. Nie zadaje się tam pytań dotyczących Linuxa. 2255.. PPooddzziięękkoowwaanniiaa.. Następujące osoby przyczyniły się do stworzenia tego dokumentu na przeróżne sposoby, w sposób świadomy lub nieświadomy. Podaję ich bez szczególnego uszeregowania (tak jak pamiętam): Jonathon Naylor, Thomas Sailer, Joerg Reuter, Rot Atkinson, Alan Cox, Craig Small, John Tanner, Brandon Allbery. 2266.. PPrraawwaa aauuttoorrsskkiiee.. AX25-HOWTO, informacja na temat jak zainstalować i ustawić niektóre z ważniejszych pakietów obsługujących AX.25 pod Linuxem. Copyright Š 1996 Terry Dawson. Jest to oproramowanie darmowe; może być modyfikowane i rozprowadzane na warunkach Ogólnej Licencji Publicznej GNU opublikowanej przez Free Software Foundation; licencja o wersji numer 2, lub dowolnie, jakakolwiek późniejsza. Program ten rozprowadzany jest z nadzieją, że będzie użyteczny, lecz BEZ JAKIEJKOLWIEK GWARANCJI; nawet bez gwarancji, że moze być SPRZEDAWANY lub UŻYTECZNY DLA JAKIEGOKOLWIEK CELU. Więcej szczegółów znajdzesz w Ogólnej Licencji Publicznej GNU. Powinieneś był otrzymać egzemplarz Ogólnej Licencji Publicznej z tym programem; jeśli nie to napisz do: Free Software Foundation, Inc., 657 Mass Ave, Cambridge, MA 02139, USA. 2277.. OOdd ttłłuummaacczzaa.. AX25-HOWTO - tłumaczenie na język polski. Informacja jak zainstalować i ustawić niektóre z najważniejszym pakietów do obsługi protokołu AX.25 pod Linuxem. Copyright Š 1997 Benedict P. Barszcz. Wiele terminów, które w tym dokumencie zastosowałem może brzmieć dziwnie w uszach polskiego czytelnika. Przepraszam, wynika to z tego, że polska terminologia radia packet jest mi zupełnie nie znana. Radioamatorem zostałem tutaj w USA i polskie nazewnictwo nie było wymogiem do egzaminu. To jest błąd. Niektórych zwrotów nie tłumaczyłem ze wzgłędow na ich ewidentność, ale na pewno w tym miejscu się grubo mylę. Inne zwroty są niezgrabne i w tym miejscu masz szerokie pole do popisu, czytelniku. Ślij poprawki do poseidon@ziplink.net. Zwroty idiomatyczne starałem się zastępować naszymi, polskimi odpowiednikami. Czasem przesadziłem, albo zupełnie minąłem się z celem:-) Mam wrażenie, że popełniłem też błędy merytoryczne. Nie poprawiłem ich bo nie wiem gdzie:-). Są też neologizmy, które nie zostały konsekwentnie używane w dokumencie, np. DźwiękoModem. Fragmenty w skrypcie 'munge' nie są tlumaczone ponieważ należą do pliku i są komentarzem autora pliku. Zmiany w stosunku do oryginału: ppoorrtt 44000000.. Port 4000 i port 3694/tcp dla node przez inetd; autor nie był konsekwentny. Wybrałem port 4000. ooddwwoołłaanniiaa.. Odwałanie do Net-2-HOWTO zamieniłem na NET-3-HOWTO wskazując jednocześnie na jego polskie tłumaczenie. Zdaje się, że Net-2-howto już nie istnieje. nnaazzwwiisskkoo PPaannaa RReeuuggeerr.. W jednym z odwołań, Terry podał tylko imię, a na innym miejscu również nawisko. Dla czytelności w pierwszym wypadku podałem zarówno imię jak i nazwisko. bbuuddoowwaa jjąąddrraa.. kolejność komend budowy jądra poprawiona, aby faktycznie działalo tak, jak autor zamierzył. cd /usr/src postawione przed mv linux linux.old. Odciąłem też ścieżkę od nazwy pliku ax25-utils-12.tar.gz tak, aby zadziałało zgodnie z zamierzeniem autora. 2277..11.. PPooddzziięękkoowwaanniiaa.. Bardzo serdecznie chciałbym podziękować Terry'emu Dawson, że napisał ten dokument. Dopiero przy tłumaczeniu go, zrozumiałem jaki kawał roboty odwalił! Chciałbym podziękować Bartkowi Maruszewskiemu, Piotrowi Tęczyńskiemu oraz Piotrowi Pogorzelskiemu za (świadomą i nie świadomą) pomoc i natchnienie, aby ten dokument powstał. Jednocześnie chciałbym przypomnieć Waldkowi Ogonowskiemu, SP2ONG, że to on jest wszystkiemu winiem - zaraził mnie Linuxem i nie wskazał kliniki, gdzie sie to paskuctwo leczy:-). Oraz dziękuje wszystkim, którzy nadeślą poprawki, które na pewno udoskonalą to tłumaczenie. ����������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Alpha-HOWTO.pl.txt�����������������������������������������������������0100664�0001750�0001750�00000061713�06717116340�017504� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Alpha HOWTO Autor: Neal Crook neal.crook@reo.mts.digital.com, Digital Equipment (edycja: David Mosberger davidm@azstarnet.com) v0.11, 6 Czerwca 1997 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v0.1, 22 Lipca 1998 Ten dokument jest ogólnym przedstawieniem istniejących procesorów Alpha, chipsetów do nich, oraz systemów opartych na tych procesorach. Opisuję sprzęt, a nie oprogramowanie, ukazując mój obszar doświad­ czenia. Chociaż jestem pracownikiem Digital Equipment Corporation, nie jest to oficjalna wypowiedź Digitala, a wszystkie opinie tu wyrażone są moimi opiniami, nie zaś Digitala. Dokument został napisany w stan­ dardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://www.azstarnet.com/~axplinux/. ______________________________________________________________________ Table of Contents: 1. Co to jest Alpha 2. Czym jest Digital Semiconductor 3. Procesory Alpha 4. Wydajność 21064 i 21066 5. Kilka uwag o zegarach 6. Chipsety 7. Płyty główne 8. O bajtach 9. PALcode 10. Przenoszenie systemu na Alphę 11. Więcej informacji 12. Bibliografia 13. Od tłumacza ______________________________________________________________________ 11.. CCoo ttoo jjeesstt AAllpphhaa Alpha jest 64-bitową architekturą RISC Digitala. Projekt Alpha został rozpoczęty w połowie 1989 roku, jego celem było stworzenie wysokowydajnej alternatywy dla użytkowników VAX'a. Nie była to pierwsza architektura RISC zaprojektowana przez Digitala, ale jako pierwsza osiągnęła sukces rynkowy. Kiedy Digital ogłosił wyprodukowanie Alphy w marcu 1992, zdecydował się wejść na rynek półprzewodników, sprzedając mikroprocesory Alpha. Alpha jest czasami nazywana Alphą AXP, z tajemniczych powodów, które nie są warte wyjaśniania. Wystarczy powiedzieć, że jest to jedno i to samo. 22.. CCzzyymm jjeesstt DDiiggiittaall SSeemmiiccoonndduuccttoorr Digital Semiconductor (DS) jest oddziałem firmy Digital Equipment Corporation (Digital - nie lubimy nazwy DEC), który sprzedaje półprzewodniki. Do produktów Digitala zaliczają się procesory (CPU), chipsety, mostki PCI-PCI i układy peryferyjne PCI dla telekomunikacji i multimediów. 33.. PPrroocceessoorryy AAllpphhaa Obecnie istnieją dwie generacje rdzenia CPU (core), które są implementacją architektury Alpha: ˇ EV4 ˇ EV6 Są różne opinie na temat znaczenia ,,EV'' (uwaga D.M.: prawdziwa odpowiedź to oczywiście ,,Electro Vlassic" ``[1]''), numer odpowiada generacji technologii CMOS Digitala, w której został wykonany rdzeń. A więc EV4 był pierwotnie zaimplementowany w CMOS4. Z biegiem czasu, procesor zwiększa swoją wydajność, poprzez optyczne pomniejszenie do następnej generacji procesu CMOS. EV45 jest więc rdzeniem EV4 zaimplementowanym w technologii CMOS5. Istnieje duża różnica pomiędzy dostosowywaniem projektu do danej technologii, a implementowaniem go od podstaw w tej technologii (nie będę się jednak teraz w to wgłębiał). Jest też parę innych symboli: CMOS4S (pomniejszenie CMOS4) i CMOS5L. Prawdziwi technofile będą chcieli wiedzieć, że CMOS4 jest technologią 0.75 mikronową, CMOS5 jest technologią 0.5 mikronową, a CMOS6 0.35 mikronową. A oto konkretne procesory z różnymi rdzeniami: 2211006644--115500,,116666 EV4 (pierwotnie), EV4S (obecnie) 2211006644--220000 EV4S 2211006644AA--223333,,227755,,330000 EV45 2211006666 LCA4S (rdzeń EV4, z jednostką zmiennoprzecinkową EV4) 2211006666AA--223333 LCA45 (rdzeń EV4, ale z jednostką zmiennoprzecinkową EV45) 2211116644--223333,,330000,,333333 EV5 2211116644AA--441177 EV56 2211226644 EV6 Rdzeń EV4 jest dwuinstrukcyjny (dual-issue), znaczy to, że może wykonać dwie instrukcje na jednostkę zegara, posiada superpotokowy rdzeń z jednostką liczb całkowitych (superpipelined core with integer unit), jednostkę zmiennoprzecinkową i przewidywanie instrukcji (branch prediction). Jest w pełni krosowalny (bypassed), korzysta z technologii 64-bitowej i ośmiokilobajtowych pamięci cache, po jednej dla Instrukcji i Danych. Jednostki cache obsługują technologię ,,write-through'' - nigdy nie zostają ,,zanieczyszczone''. Rdzeń EV45 ma parę usprawnień w stosunku do EV4 - usprawniono trochę jednostkę zmiennoprzecinkową i dodano 16KB cache (po jednym dla Instrukcji i Danych, obsługuje parzystość). (uwaga D.M.: w wiadomości email Neil Crook zauważył, że zmiany w jednostce FPU (jednostka zmiennoprzecinkowa, ang. floating point unit) poprawiają wydajność podzielnika. Podzielnikowi FPU EV4 dzielenie o pojedyńczej precyzji zabiera 34 cykle zegara, a dzielenie o podwójnej precyzji 63 cykle (niezależnie od danych). Dla porównania FPU EV45 zabiera to zwykle 19 cykli (do 34) i 29 cykli (do 63) (zależnie od danych).) Rdzeń EV5 jest czteroinstrukcyjny, superpotokowany, w pełni krosowalny itp. Posiada 8 kilobajtowe pamięci cache, po jednej dla I i D. Cache te obsługują metodę ,,write-through''. Ma też 96 kilobajtowy trójdrożny cache drugiego poziomu Scache (w procesorze), używający metody ,,write-back'' (może zostać zanieczyszczony). Całkowity wzrost wydajności EV4->EV5 jest większy niż wzrost spowodowany samym zwiększeniem szybkości zegara. Została też ulepszona mikroarchitektura, dla zmniejszenia opóźnień producenta/klienta na niektórych trasach danych. EV56 posiada mikroarchitekturę podobną do EV5, jednakże dodaje nowe instrukcje dla 8 i 16-bitowych obciążeń (zobacz sekcję ,,``O bajtach''''. Instrukcje te znajdują zastosowanie głównie w sterownikach urządzeń. Rdzeń EV56 jest zaimplementowany w CMOS6, który jest technologią 2.0V. 21064 został ukończony w marcu 1992. Używa rdzenia EV4, ze 128-bitową szyną danych. Szyna obsługuje ,,łatwe'' podłączenie zewnętrznego cache'u drugiego poziomu, z rozmiarem bloku 256 bitów. Zegar Bcache jest konfigurowalny całkowicie programowo. 21064 może też być skonfigurowana do używania 64-bitowej szyny zewnętrznej (nie jestem jednak pewien, czy jakakolwiek płyta główna dostępna w sprzedaży używa tego trybu). 21064 nie wymusza żadnego sposobu używania Bcache'u, jednakże zazwyczaj jest on skonfigurowany jako write-back cache. 21064 zawiera obejścia pozwalające zewnętrznemu sprzętowi utrzymać zgodność cache'u z Bcache'm i wewnętrzną pamięcią podręczną, ale nie polecam tego sposobu. 21066 używa rdzenia EV6; zawiera wewnętrzny kontroler pamięci oraz mostek PCI. Dla oszczędzania wyprowadzeń procesora, kontroler pamięci ma 64-bitową szynę danych (ale wewnętrzne pamięci podręczne mają rozmiar blokowy 256 bitów, tak jak 21064, a więc wypełnienie bloku zajmuje 4 cykle zegara szyny). Kontroler pamięci obsługuje zewnętrzny Bcache i zewnętrzne DRAM'y. Częstotliwość zegara Bcache i DRAM'ów jest konfigurowana całkowicie programowo, może być dostosowana do rozdzielczości cyklu zegara CPU. Czterocyklowy proces wypełniania bloku cache nie jest taki zły, na jaki wygląda, ponieważ dostęp do DRAM'u działa w trybie stronicowania. Niestety, kontroler pamięci nie obsługuje żadnego z nowych ezoterycznych DRAM'ów (SDRAM, EDO lub BEDO), ani synchronicznych RAM pamięci podręcznej. Interfejs szyny PCI jest w pełni zgodny z normą rev2.0 i działa na częstotliwości 33MHz. 21164 ma 128-bitową szynę danych; obsługuje odczyt rozdzielony (split read), do 2 odczytów na raz (pozwala to na stuprocentowe wykorzystanie szyny danych w idealnych warunkach - można teoretycznie przesyłać 128 bitów danych w każdym cyklu zegara szyny). 21164 pozwala na łatwe podłączenie zewnętrznego cache'u trzeciego poziomu (Bcache), pozwala na synchronizację zewnętrznych systemów ze wszystkimi pamięciami podręcznymi. Rozwiązania wieloprocesorowe są więc łatwe do zaimplementowania. 21164A został ukończony w październiku 1995. Używa rdzenia EV56; jego wyprowadzenia są kompatybilne z 21164, jednak wymaga on oddzielnych szyn zasilających - wszystkie piny zasilania pobierające +3.3V w 21164 zostały podzielone na dwie grupy; jedna pobiera 2.0V dla rdzenia CPU, a druga 3.3V dla sekcji I/O (wejścia-wyjścia). Inaczej niż w innych implementacjach, wyprowadzenia 21164 nie tolerują pięciu woltów. Rezultatem tych zmian jest niekompatybilność płyt głównych 21164 z procesorami 21164A (zauważ jednak, że zaprojektowanie płyty 21164A obsługującej 21164 nie byłoby trudne). 21164A ma też kilka nowych wyprowadzeń dla obsługi nowych 8 i 16-bitowych obciążeń. Polepsza też obsługę synchronicznych SRAM'ów do implementacji zewnętrznego Bcache. 44.. WWyyddaajjnnoośśćć 2211006644 ii 2211006666 21064 i 21066 mają ten sam rdzeń (EV4). Jeżeli ten sam program zostanie uruchomiony na 21064 i 21066, przy takiej samej szybkości zegara, różnica w wydajności jest tylko rezultatem większej przepustowości Bcache/pamięci. Każdy wątek kodu, mający duży współczynnik współpracy z _w_e_w_n_ę_t_r_z_n_y_m_i pamięciami cache, będzie wykonywał się tak samo na obu jednostkach. Istnieją dwa główne ograniczniki wydajności: 1. Kod który wykonuje dużą liczbę zapisywań. Chociaż 21064 i 21066 mają bufory zapisu, żeby pokryć niektóre opóźnienia to i tak kod który intensywnie zapisuje będzie zdławiony przez przepustowość zapisu na szynie systemowej. To zjawisko zwiększa się, ponieważ wewnętrzna pamięć podręczna cache działa w trybie ,,write- through''. 2. Kod, który chce traktować liczby zmiennoprzecinkowe (float) jako całkowite (integer). Architektura Alphy nie pozwala na przysyłanie w trybie rejestr-rejestr z rejestrów całkowitych na zmiennoprzecinkowe. Taka konwersja musi być dokonana w pamięci (i dlatego, ponieważ wewnętrzna pamięć podręczna działa w trybie w-t, w Bcache). (uwaga D.M.: wygląda na to, że zarówno EV4, jak i EV45 mogą wykonać konwersję przez podstawowy cache danych (Dcache), zakładając, że pamięć jest już stronicowana. W takim przypadku, zawartość sekwencji konwersji będzie uaktualniać Dcache, a kolejne obciążenie jest w stanie, pod pewnymi warunkami, odczytać uaktualnioną wartość d-cache, zapobiegając każdorazowemu obejściu trasy przez Bcache. W praktyce, najlepiej jest wykonywać instrukcje stq/ldt lub stt/ldq jednocześnie, co jest jednak nieintuicyjne. Jeżeli porównasz 21064A i 21066A, powstaje dodatkowy czynnik w postaci różnych rozmiarów Icache i Dcache w tych procesorach. 21164 rozwiązuje oba problemy: osiąga _z_n_a_c_z_n_i_e większe przepustowości szyny systemowej (pomimo tego, że ma taką samą ilość wyprowadzeń sygnałowych - tak, _w_i_e_m, że ma dwa razy więcej pinów niż 21064, ale wszystkie dodatkowe to zasilanie i masa! (tak, naprawdę!!)), posiada również pamięć podręczną pracującą w trybie write-back. Jedyny problem, który pozostaje, to odpowiedź na pytanie ,,ile kosztuje?''. 55.. KKiillkkaa uuwwaagg oo zzeeggaarraacchh Wszystkie obecnie produkowane procesory Alpha używają szybkich zegarów, ponieważ ich mikroarchitektury zostały zaprojektowane w tzw. systemie krótkich cykli zegara (short-tick design). Dlatego też żadna z szyn systemowych nie musi działać z potwornymi prędkościami. ˇ W 21066(A), 21064(A) i 21164 zewnętrzna pamięć cache (Bcache) jest całkowicie pogramowalna, nawet do rozdzielczości zegara CPU. Na przykład w 275MHz-owym procesorze czas dostępu czytania Bcache może być kontrolowany z szybkością 3.6ns. ˇ W 21066(A) zegar DRAM jest także programowalny, do rodzielczości zegara CPU (_n_i_e zegara PCI, zegara procesora). ˇ W 21064(A) i 21164(A), częstotliwość szyny systemowej jest mnożnikiem częstotliwości zegara CPU. Większość płyt głównych 21064 taktuje szynę systemową zegarem o częstotliwości 33MHz. ˇ Płyty główne, używające 21066 mogą taktować PCI każdą częstotliwością relatywną do częstotliwości CPU. Jednakże PCI powinno być taktowane częstotliwością 33MHz. ˇ Płyty używające chipsetu APECS (zobacz sekcję ``Chipsety'') taktują szynę systemową częstotliwością równą częstotliwości szyny PCI. Znaczy to, że obie szyny działają zwykle na 25 lub 33MHz (ponieważ te częstotliwości po pomnożeniu są równe częstotliwości procesora). Zegar kontrolera DRAM na płytach APECS jest ustawiany programowo w granicach częstotliwości szyny systemowej procesora. UUwwaaggaa:: Ktoś zasugerował, że wydajność jego 21066 była za niska, ponieważ kontroler pamięci tego procesora pracował tylko na 33MHz. Jednak superszybkie systemy 21064A posiadają kontrolery pamięci taktowane ,,tylko'' 33MHz. 66.. CChhiippsseettyy DS sprzedaje dwa chipsety wspomagające CPU. Chipset 2107x (APECS) obsługuje 21064(A), a 2117x (ALCOR) obsługuje 21164. Zapowiadany jest 2117xA (ALCOR 2), stosowany w 21164A. Oba chipsety posiadają kontrolery pamięci i mostki PCI dla procesorów. APECS korzysta z 32-bitowego mostka PCI, ALCOR natomiast z 64-bitowego, który (zgodnie z wymaganiami specyfikacji PCI) może obsługiwać zarówno 32, jak i 64-bitowe urządzenia PCI. APECS składa się z 6 208-pinowych układów (cztery 32-bitowe przełączniki danych (DECADE), jeden kontroler systemu (COMANCHE), jeden kontroler PCI (EPIC)). Zapewnia kontroler DRAM (128-bitowa szyna pamięci) i interfejs PCI. Wykonuje też całą pracę potrzebną do utrzymania zgodności pamięci, kiedy urządzenie PCI wykonuje bezpośredni dostęp do/z pamięci (ang. DMA, Direct Memory Acces). ALCOR zawiera 5 układów (4 64-bitowe przełączniki danych (Data Switch, DSW) - 208-pinowe PQFP i jeden kontrolny (Kontrola, Adresy I/O, CIA) - 383-pinowy plastykowy PGA). Zapewnia kontroler DRAM (265-bitowa szyna pamięci), oraz interfejs PCI. W ten sam sposób co APECS obsługuje DMA. Nie istnieje chipset dla 21066, ponieważ kontroler pamięci i mostek PCI są zintegrowane z procesorem. 77.. PPłłyyttyy ggłłóówwnnee Grupa inżynieryjna DS produkuje wzorcowe projekty, używające Alphy i w/w chipsety. Są to w większości płyty rozmiaru PC-AT, z funkcjonalnością nowoczesnej płyty głównej do Pentium. Pierwotnie te przykładowe płyty miały być używane jako punkty startu dla firm produkujących tego typu produkty. Te projekty pierwszej generacji były nazywane płytami ewaluacyjnymi (Evaluation Board, EB). Ponieważ ilość czynności inżynieryjnych potrzebnych do wykonania płyty głównej wzrosła (z powodu zegarów o dużych prędkościach i norm emisji i podatności na zakłócenia), nacisk został postawiony na produkcję płyt głównych nadających się do sprzedaży detalicznej. Oddziały płyt głównych Digitala wyprodukowały kilka generacji maszyn używających procesorów Alpha. Niektóre z tych systemów używają logiki wspomagającej zaprojektowanej przez te oddziały, a inne chipsetów DS. W niektórych przypadkach, płyty używają kombinacji obu tych technik. Rózne firmy produkują płyty używające procesorów Alpha. Niektóre projektują systemy od podstaw, inne zaś używają chipsetów DS, powielają lub modyfikują przykładowe projekty Digitala, a nawet produkują komputery oparte na zbudowanych i przetestowanych płytach DS. EEBB6644: Nie używana już płyta do 21064 z kontrolerem pamięci wykorzystującym logikę programowalną. Wejście/Wyjście jest zapewnione przez użycie logiki programowalnej do interfejsowania układu-mostu 486<->ISA. Wbudowany Ethernet, SuperI/O (2 p. szeregowe, 1 p. równoległy, FDD) i ISA. Rozmiar PC-AT. Wykorzystuje standardowe zasilacze PC. EEBB6644++: Do 21064/21064A (wykorzystuje APECS). Posiada szyny ISA i PCI (3 ISA, 2 PCI, jedna para jest dzielona). Obsługuje 36-bitowe SIMM'y DRAM. Most do ISA'y jest tworzony za pomocą mostka Intel SaturnI/O PCI-ISA. Płyta posiada wbudowany kontroler SCSI (NCR 810 na PCI), Ethernet (Digital 21040), kontroler klawiatury i myszy (złącze PS/2), SuperI/O (2 sz. 1 r., FDD), RTC (ang. Real Time Clock - zegar czasu rzeczywistego - przyp. tłum.)/NVRAM. Boot ROM to EPROM (to niedobrze - vide MILO HOWTO - przyp. tłum.). Rozmiar PC-AT. Wykorzystuje standardowe zasilacze PC. EEBB6666: Do 21066 lub 21066A. Podsystem Wejścia/Wyjścia jest identyczny do EB64+. Rozmiar PC-AT. Wykorzystuje standardowe zasilacze PC. Schemat EB66 został opublikowany jako plakat reklamowy dla 21066 jako "pierwszy mikroprocesor na świecie posiadający wewnętrzny kontroler PCI" (dla fanów plotek: są dwie wersje tego plakatu - ja narysowałem obwody i napisałem hasło reklamowe dla pierwszej, a jacyś Amerykanie zmienili hasło dla drugiej wersji). EEBB116644: Do 21164 (i to jest w IMHO najlepszy wybór - sam na takim systemie pracuję - a pracowałem na wielu alfach - przyp. tłum.), używa ALCOR'a. Posiada szyny ISA i PCI (3 sloty ISA, 2 64-bitowe sloty PCI (jeden jest współdzielony ze slotem ISA) i dwa 32-bitowe sloty PCI). Używa SIMM'ów ,,plug-in'' do Bcache. Podsystem I/O zawiera SuperI/O (2 sz., 1 r., FDD), kontroler klawiatury i myszy (złącze PS/2), RTC/NVRAM. Boot ROM to Flash (EEPROM - przyp. tłum.). Rozmiar płyty PC-AT. Wymaga zasilacza o napięciu 3.3V. AAllpphhaaPPCC6644 (CCaabbrriioolleett): pochodzi od EB64+, ale teraz to płyta baby-AT z Flash Boot ROM. Nie posiada kontrolera SCSI ani Ethernetu. Trzy sloty ISA, cztery sloty PCI (jedna para to slot dzielony), używa SIMM'ów Bcache typu ,,plug-in''. Wymaga zasilacza o napięciu 3.3V. AAXXPPppccii3333 (NNooNNaammee): jest bazowany na EB66. Ta płyta jest produkowana przez Techniczny OEM (TOEM) Digitala. Jest przeznaczona dla procesora 21066 o szybkości 166MHz albo 233MHz. Jest to płyta rozmiaru baby-AT i wykorzystuje standardowe zasilacze PC. Posiada 5 slotów ISA i 3 sloty PCI (jedna para jest dzielona). Są dwie wersje płyty - ze złączami klawiatury typu PS/2 lub dużego DIN. Inne płyty główne dla procesorów 21066: większość, jeżeli nie wszystkie płyty dla 21066 są bazowane na EB66 - nie ma wielu rozwiązań systemowych dla płyt 21066, ponieważ kontrola jest wykonywana w procesorze. MMuullttiiaa (UUnniivveerrssaall DDeesskkttoopp BBooxx): Jest to bardzo mały system podstawowy, wykorzystujący 21066. Na płycie znajdują się: 2 gniazda PCMCIA, chip grafiki TGA (21030), Ethernet (chip 21040), kontroler SCSI NCR 810, oraz kontroler stacji dysków, dwa porty szeregowe i jeden równoległy. Ma małe możliwości rozszerzenia (jeden slot PCI), ze względu na mały rozmiar. (Jest jakieś ograniczenie w używaniu slotu PCI, nie pamiętam jakie) (Zauważ, że są też Multie do 21066A i Pentium). DDEECC PPCC 115500 AAXXPP (JJeennsseenn): Jest to bardzo stary system Digitala - jeden z systemów Alpha pierwszej generacji. Jest tutaj załączony tylko z powodu dostępności takich płyt na rynku komputerów używanych. Jensen jest stojącą na podłodze wieżą. Używa 150MHz 21064 (późniejsze wersje używały szybszych procesorów, ale nie jestem pewien co do prędkości). Płyta używała logiki programowalnej do interfejsowania mostu 486 EISA - CPU. Inne systemy 21064(A): Istnieją 3 lub 4 płyty (nie załączam tu _s_y_s_t_e_m_ó_w Digitala) i wszystkie, które znam, wyeluowały z EB64+. Są to: ˇ EB64+ (niektórzy sprzedawcy pakowali płytę i sprzedawali ją bez modyfikacji); rozmiar AT. ˇ Krewny EB64+ firmy Aspen Systems; rozmiar baby-AT. ˇ Płyta serwera firmy Aspen Systems; dużo slotów PCI (razem z mostem PCI). ˇ AlphaPC64 (Cabriolet), rozmiar baby-AT. Inne systemy 21164(A): Jedyne, które znam, a nie są klonami EB164, to płyta wykonana przez DeskStation. System ten został zaimplementowany przy użyciu kontrolerów I/O oraz pamięci stosowanych przez DeskStation. Nie znam ich stosunku do Linuxa. 88.. OO bbaajjttaacchh Kiedy architektura Alpha została przedstawiona, była unikalna pośród innych architektur RISC z powodu przetwarzania 8 i 16-bitowych obciążeń i zmiennych. Wspomagała też 32 i 64-bitowe. (,,longword'' i ,,quadword'' wg. nomenklatury Digitala). Projektanci (Dick Sites, Rich Witek) wyjaśnili tą decyzję następującymi zaletami: 1. Obsługa bajtów w pamięci podręcznej i podsystemie pamięci zwykle zwalnia dostęp do 32 i 64-bitowych danych. 2. Obsługa bajtów czyni ciężkim zbudowanie układu korekcji błędów cache/pamięci o dużej prędkości. Alpha kompensuje to przez zapewnienie silnych instrukcji manipulujących grupami bajtów w rejestrach 64-bitowych. Standardowe programy testujące operacje na łańcuchach (strings) (np. programy testujące magazynu ,,Byte'') pokazują, że wydajność Alphy jest bardzo wysoka przy operacjach na bajtach. Absencja bajtowych obciążeń i ładunków zmienia działanie przełączników (semaphores) w oprogramowaniu, oraz podsystemów wejścia/wyjścia. Rozwiązanie problemu I/O Digitala, to użycie kilku niskopoziomowych linii adresowych do zdefiniowania rozmiaru danych podczas przesyłania I/O, oraz do dekodowania tych danych jako bajtów. Jest to tzw. rozproszone adresowanie (sparse addressing). Marnuje ono przestrzeń adresową i powoduje fragmentację pamięci I/O (więcej o skutkach rozproszonego adresowania kiedy uda mi się coś o tym napisać). Zauważ, że pamięć I/O w tym kontekście odnosi się do wszystkich zasobów systemowych PCI i dlatego odnosi się zarówno do pamięci PCI, jak i do przestrzeni adresowej PCI. Kiedy na rynek wyszedł 21164A, architektura Alphy musiała już zawierać adresowanie bajtów. Wykonywanie tych nowych instrukcji na wcześniejszych procesorach spowoduje wyjątek ,,OPCDEC'' kodu PAL, a wtedy kod będzie obsługiwał ten wyjątek, co będzie miało wpływ na wydajność. Skutkiem tego powninno być (wg. mnie) ograniczenie korzystania z tych instrukcji do sterowników urządzeń, a nie kodu aplikacji. Te nowe bajtowe obciążenia i ładunki znaczą, że przyszłe chipsety będą w stanie obsługiwać zdefragmentowaną przestrzeń I/O. 99.. PPAALLccooddee To jest miejsce na sekcję opisującą kod PAL. Napiszę ją, jeżeli będzie wystarczające zainteresowanie. 1100.. PPrrzzeennoosszzeenniiee ssyysstteemmuu nnaa AAllpphhęę Możliwość uruchamiania Linuxa na każdej maszynie z Alphą jest ograniczona tylko twoimi możliwościami zdobycia informacji małych detali jej wnętrza. Ponieważ istnieją wersje Linuxa na EB66, EB64+ i EB164, wszystkie systemy oparte na 21066, 21064/APECS lub 21164/ALCOR powinny działać pod Linuxem z małymi albo bez żadnych modyfikacji. Główna różnica pomiędzy tymi płytami głównymi, to sposób, w jaki route'ują przerwania. Są trzy źródła przerwań: ˇ urządzenia na płycie ˇ urządzenia PCI ˇ urządzenia ISA Wszystkie systemy użwają mostku Intel System I/O (SIO), jako mostu PCI <-> ISA (główna szyna I/O to PCI, ISA jest drugorzędną szyną używaną do obsługi wolniejszych i ,,wywłaszczających'' (ang. legacy) urządzeń). SIO składa się z tradycyjnej, połączonej pary 8259-tek. Niektóre systemy (np. NoName) route'ują wszystkie przerwania przez SIO do procesora, a inne mają oddzielny kontroler przerwań i route'ują wszystkie przerwania PCI i przerwanie SIO (wyjście 8295) przez niego, a wszystkie przerwania ISA przez SIO. Inne różnice pomiędzy systemami to: ˇ liczba slotów ˇ posiadane urządzenia wbudowane w płytę ˇ posiadany Boot ROM - Flash lub EPROM 1111.. WWiięęcceejj iinnffoorrmmaaccjjii Wszystkie płyty ewaluacyjne Digital Semiconductor oraz projekty płyt głównych nie są zastrzeżone, a cały zestaw dokumentacji do jednego projektu kosztuje około 50$. Składają się na niego wszystkie schematy, źródła części programowalnych, arkusze danych dla procesora i chipsetu. Zestawy dokumentacji można zakupić u dystrybutorów Digital Semiconductors. Nie sugeruję tutaj, żeby szybko iść i kupić te zestawy, ale chcę zaznaczyć, że takie informacje są dostępne. Mam nadzieję, że to HOWTO było pomocne. Komentarze/uaktualnienia/sugestie rozwoju przesyłaj do Neala Crooka. 1122.. BBiibblliiooggrraaffiiaa [1] Bill Hamburgen, Jeff Mogul, Brian Reid, Alan Eustace, Richard Swan, Mary Jo Doherty i Joel Bartlett. _O_p_i_s _O_r_g_a_n_i_c_z_n_y_c_h _S_y_s_t_e_m_ó_w _I_l_u_m_i_n_a_c_y_j_n_y_c_h. DEC WRL, Uwaga Techniczna 13, Kwiecień 1989. 1133.. OOdd ttłłuummaacczzaa Ponieważ było to HOWTO dosyć skomplikowane pod względem technicznym, użyłem tutaj wielu wyrażeń niezrozumiałych dla ludzi nie zajmujących się elektroniką cyfrową. Jeden rzut oka do książki o elektronice dla początkujących powinien rozwiać te wątpliwości. To HOWTO jest jednym z dwóch potrzebnych do uruchomienia Linuxa na Alfie. Drugie to MILO-HOWTO, które znajduje się w wersji polskiej na serwerze projektu JTZ (http://www.jtz.org.pl/). Opisuje ono program ładujący Linuxa na Alfę (odpowiednik LILO). Jak zwykle, jeżeli znajdziesz jakieś błędy albo masz ciekawe sugestie, napisz do mnie. �����������������������������������������������������doc-linux-pl-2002.06.14.orig/BootPrompt-HOWTO.pl.txt������������������������������������������������0100644�0001750�0001750�00000302751�06717116340�020562� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Jakie argumenty można przekazać do jądra podczas startu. Autor: Paul Gortmaker, gpg109@rsphy1.anu.edu.au v1.14, 1 Lutego 1998 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii,, BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.4, 16 Sierpnia 1998 Dokument ten jest zestawieniem wszystkich możliwych argumentów podawanych w czasie startu systemu (Boot prompt). Dotyczy to wszyst­ kich parametrów jądra jak i sterowników urządzeń. Zawarte są tutaj także opisy jak jądro sortuje te argumenty oraz najpopularniejszego oprogramowania służącego do startu jądra. Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna tego dokumentu znajduje się pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sun­ site/docs/HOWTO. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie 1.1. Disclaimer i Prawa autorskie. 1.2. Dokumenty związane z poniższym. 1.3. Grupy dyskusyjne dotyczące Linux-a. 1.4. Nowe wersje tego dokumentu. 2. Przegląd argumentów podawanych w czasie startu systemu. 2.1. LILO. (LInux LOader) 2.2. LoadLin. 2.3. Narzędzie "rdev". 2.4. Jak jądro sortuje argumenty. 2.5. Ustawianie zmiennych środowiskowych. 2.6. Przekazywanie argumentów do programu "init". 3. Ogólne argumenty nie dotyczące sterowników. 3.1. Argumenty dotyczące głównego systemu plików. 3.1.1. Argument "root=". 3.1.2. Argument "ro". 3.1.3. Argument "rw". 3.2. Argumenty dotyczące RAM-dysku. 3.2.1. Argument "ramdisk_start=". 3.2.2. Argument "load_ramdisk=". 3.2.3. Argument "prompt_ramdisk=". 3.2.4. Argument "ramdisk_size=". 3.2.5. Argument "ramdisk=". 3.2.6. Argument "noinitrd". 3.3. . Argumenty dotyczące obsługi pamięci. 3.3.1. Argument "mem=". 3.3.2. Argument "swap=". 3.3.3. Argument "buff=". 3.4. Argumenty dotyczące głównego systemu plików montowanego poprzez NFS. 3.4.1. Argument "nfsroot=". 3.4.2. Argument "nfsaddrs=". 3.5. Inne argumenty. 3.5.1. Argument "debug". 3.5.2. Argument "init=". 3.5.3. Argument "no387". 3.5.4. Argument "no-hlt". 3.5.5. Argument "no-scroll". 3.5.6. Argument "panic=". 3.5.7. Argument "profile=". 3.5.8. Argument "reboot=". 3.5.9. Argument "reserve=". 3.5.10. Argument "vga=". 4. Argumenty startowe dla urządzeń peryferyjnych SCSI. 4.1. Argumenty dla sterowników średniego poziomu. 4.1.1. Maksymalna liczba sprawdzanych urządzeń LUN. ("max_scsi_luns=") 4.1.2. Parametry dla sterownika taśm SCSI. ("st=") 4.2. Argumenty kontrolerów SCSI. 4.2.1. Kontrolery aha151x, aha152x, aic6260, aic6360, SB16-SCSI (`aha152x=') 4.2.2. Kontroler aha154x. ("aha1542=") 4.2.3. Kontrolery aha274x, aha284x, aic7xxx ("aic7xxx=") 4.2.4. Kontroler SCSI AdvanSys. ("advansys=") 4.2.5. Kontroler Always IN2000. ("in2000=") 4.2.6. Sprzęt na podstawie AMD AM53C974. ("AM53C974=") 4.2.7. Kontrolery SCSI BusLogic z jądrem w wersji 1.2. ("buslogic=") 4.2.8. Kontroler SCSI BusLogic z jądrem w wersji 2.x. ("BusLogic=") 4.2.9. Karty EATA SCSI. ("eata=") 4.2.10. Future Domain TMC-8xx, TMC-950. ("tmc8xx=") 4.2.11. Future Domain TMC-16xx, TMC-3260, AHA-2920. ("fdomain=") 4.2.12. Port równoległy IOMEGA / sterownik ZIP. ("ppa=") 4.2.13. Kontrolery oparte na NCR5380. ("ncr5380=") 4.2.14. Kontrolery oparte na NCR53c400. ("ncr53c400=") 4.2.15. Kontrolery oparte na NCR53c406a. ("ncr53c406a=") 4.2.16. Pro Audio Spectrum. ("pas=16") 4.2.17. Seagate ST-0x ("st0x=") 4.2.18. Trantor T128. ("t128=") 4.2.19. Karta Ultrastor SCSI. ("u14-34f=") 4.2.20. Karty Western Digital WD7000. ("wd7000=") 4.3. Kontrolery SCSI nie przyjmujące parametrów. 5. Dyski twarde. 5.1. Parametry dla dysków i CD-ROM-ów IDE. 5.2. Parametry standardowego sterownika ST-506. ("hd=") 5.3. Parametry sterownika dysku XT. ("xd=") 6. CD-ROM-y (Napędy inne niż SCSI/ATAPI/IDE). 6.1. Interfejs Aztech. ("aztcd=") 6.2. Interfejs Sony CDU-31A i CDU-33A. ("cdu31a=") 6.3. Interfejs Sony CDU-535. ("sonycd535=") 6.4. Interfejs GoldStar. ("gscd=") 6.5. Interfejs ISP16. ("isp16=") 6.6. Interfejs Mitsumi Standard. ("mcd=") 6.7. Interface Mitsumi XA/MultiSession. ("mcdx=") 6.8. Optics Storage Interface. ("optcd=") 6.9. Interfejs Philips CM206. ("cm206=") 6.10. Interfejs Sanyo. ("sjcd=") 6.11. Interfejs SoundBlaster Pro. ("sbpcd=") 7. Inne urządzenia. 7.1. Urządzenia Ethernet. ("ether=") 7.2. Sterownik do dyskietek. ("floppy=") 7.3. Sterownik do dźwięku. ("sound=") 7.4. Sterownik do myszy Bus. ("bmouse=") 7.5. Sterownik do myszy MS Bus. ("msmouse=") 7.6. Sterownik do drukarki, ("lp=") 7.7. Sterownik do ICN ISDN. ("icn=") 7.8. Sterownik do PCBIT ISDN. ("pcbit=") 7.9. Sterownik do Teles ISDN. ("teles=") 7.10. Sterownik do DigiBoard. ("digi") 7.11. Sterownik wieloportowej karty szeregowej RISCom/8. ("riscom8=") 7.12. Baycom Serial/Paralell Radio Modem. ("baycom=") 8. Zakończenie. 9. Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee Jądro ma ograniczoną możliwość przyjmowania informacji podczas startu w formie poleceń wydawanych z wiersza poleceń, podobnych do listy argumentów jakie podałbyś do zwykłego programu. W ogólności stosuje się to do przekazywania pewnych informacji do jądra na temat przyłączonych urządzeń, których ono samo nie mogłoby wykryć, lub w celu zmiany ustawień, tych urządzeń. Jeśli skopiujesz jądro bezpośrednio na dyskietkę, (np. cp zImage dev/fd0) wtedy nie masz możliwosci przekazania żadnych argumentów do tego jądra. Dlatego większość użytkowników Linux-a używa specjalnych programów takich jak _L_I_L_O czy _l_o_a_d_l_i_n służących do przekazywania tych argumentów do jądra i do ładowania go. _W_A_Ż_N_A _U_W_A_G_A _D_L_A _U_Ż_Y_T_K_O_W_N_I_K_Ó_W _M_O_D_U_Ł_Ó_W_: Argumenty podczas ładowania jądra odnoszą się zwykle do sterowników sprzętowych wkompilowanych w jądro na stałe. _N_i_e _o_d_n_o_s_z_ą one żadnego skutku w stosunku do sterowników łądownych jako moduły. Większość dystrybucji używa modułów. Jeśli nie jesteś pewien, to spójrz do man depmod i man nmodprobe jak również do /etc/conf/modules. Bieżąca wersja tego dokumentu dotyczy jądra do wersji 2.0.33 włącznie oraz wersji rozwojowych do 2.1.84. Dokument ten został pierwotnie napisany i opiekuje się nim: Paul Gortmaker, _g_p_g_1_0_9_@_r_s_p_h_y_1_._a_n_u_._e_d_u_._a_u ***** UWAGA !!!!! ***** Argumenty jądra nie dotyczące urządzeń i portów specyficznych dla maszyn typu i386 (szczególnie Atari/Amiga) nie są obecnie udokumentowane. *********************** 11..11.. DDiissccllaaiimmeerr ii PPrraawwaa aauuttoorrsskkiiee.. Dokument ten _n_i_e _j_e_s_t idealny i najlepszy. Aczkolwiek jest on przypuszczalnie najświeższym, i zawiera najświeższe dane, które będziesz w stanie znaleźć. Nikt nie jest odpowiedzialny za to co stanie się z twoimi urządzeniami poza tobą. Jeśli twój komputer zacznie się palić (... co jest raczej niemożliwe!) ja nie biorę odpowiedzialności, tzn: AUTOR NIE JEST ODPOWIEDZIALNY ZA JAKIEKOLWIEK ZNISZCZENIA POWSTAŁE NA SKUTEK PODJĘTYCH DZIAŁAŃ NA PODSTAWIE TEGO DOKUMENTU. (Tłumacz też nie ;)) ) Dokument ten jest chroniony prawami autorskimi (C) 1995-1998 Paula Gortmakera. Dokument ten może być kopiowany zgodnie z warunkami licencji GNU, v2, która jest tu zawarta poprzez odwołanie się do niej. Więcej na temat szczegółów znajdziesz w pliku linux/COPYING, który jest zawarty w dystrybucji źródeł jądra. Jeśli zamierzasz wydać ten dokument jako pracę drukowaną, skontaktuj się z autorem, a on postara się sprawdzić czy masz najświeższe dostępne informacje. W przeszłości publikowane były przestarzałe dokumenty, które powodowały zasypywanie programistów pytaniami, które zostały już rozwiązane w najnowszych dokumentach. 11..22.. DDookkuummeennttyy zzwwiiąązzaannee zz ppoonniiżżsszzyymm.. Najświeższą dokumentacją będzie zawsze wersja źródłowa jądra. Ale poczekaj, nie uciekaj ! Nie musisz znać żadnego języka programowania, aby czytać komentarze zawarte w źródłach. Na przykład jeśli szukasz jakie argumenty mogą być przekazane do sterownika AHA1542 SCSI, zajrzyj do katalogu linux/drivers/scsi i pliku aha1542.c - a w pierwszych 100 liniach znajdziesz czysty tekst w języku angielskim (niestety, ale nie ma fizycznej możliwosci na tłumaczenie tych tekstów) opisujący argumenty, których szukasz. Następnymi najlepszymi dokumentami będą te, dystrybuowane ze źródłami jądra. Jest tam ich teraz nawet całkiem sporo, a większość z nich znajduje się w podkatalogu Documentation i jego dalszych podkatalogach. Źródła jądra znajdują się zwykle w katalogu /usr/src/linux. Czasami można znaleźć pliki README.xx w odpowiednich podkatalogach. Jeśli już wiesz jakich parametrów chcesz używać i chcesz teraz wiedzieć jak przekazać je do jądra to spójrz na dokumentację, która przychodzi razem z oprogramowaniem, którego będziesz używał, aby załadować jądro (najczęściej jest to LILO lub loadlin). Krótki przegląd znajduje się poniżej, ale nie zastępuje on dokumentacji dostarczanej wraz z danym oprogramowaniem. 11..33.. GGrruuppyy ddyysskkuussyyjjnnee ddoottyycczząąccee LLiinnuuxx--aa.. Jeśli masz jakieś pytania dotyczące przekazywania parametrów do jądra, PRZECZYTAJ najpierw ten dokument. Jeśli ten i związane z nim wymienione wcześniej dokumenty nie odpowiedzą na twoje pytania wtedy możesz spróbować poczytać grupy dyskusyjne. Jednak zanim zaczniesz na ślepo wysyłać listy najpierw poczytaj przez kilka dni daną grupę, bo może akurat ktoś już zaczął ten temat, a może nawet twoje pytanie zalicza się do często zadawanych pytań _(_F_r_e_q_u_e_n_t_l_y _A_s_k_e_d _Q_u_e_s_t_i_o_n_s _- _F_A_Q_). Szybkie przejrzenie jakiegoś dokumentu FAQ może być dobrym pomysłem zanim zaczniesz wysyłać pytania do grup dyskusyjnych. Ogólne pytania jak skonfigurować swój system kieruj na grupę _p_l_._c_o_m_p_._o_s_._l_i_n_u_x. Przestrzegaj poprzedniego paragrafu oraz nie wysyłaj pytań do wielu grup na raz ponieważ z reguły czytają je te same osoby. 11..44.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu.. Nowe wersje będą się znajdować pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO. Będą one sukcesywnie uaktualniane jak tylko będą się pojawiać nowe sterowniki bądź informacje. Dokument ten został stworzony przy pomocy systemu SGML, który został przygotowany specjalnie dla projektu Linux HOWTO. Dzięki temu dostępne są różne wersje tego dokumentu takie jak: postscript, dvi, ascii, html a wkrótce także Texinfo. Wszystkie te wersje są dostępne na ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/doc/HOWTO. Zalecałbym przeglądanie tego dokumentu jako html lub postscript, gdyż jest tu wiele odwołań, których brakuje w zwykłym tekście. 22.. PPrrzzeegglląądd aarrgguummeennttóóww ppooddaawwaannyycchh ww cczzaassiiee ssttaarrttuu ssyysstteemmuu.. Ta sekcja podaje kilka przykładów oprogramowania, które może być użyte do przekazywania argumentów do jądra i do ładowania go. Podaje także sposób interpretacji argumentów, jakie są na nie ograniczenia i jak są filtrowane dla odpowiedniego urządzenia. Ważne jest aby _N_I_E używać odstępów w argumentach, tylko pomiędzy nimi. Wartości jakie mają być przekazane mają być oddzielone przecinkami _b_e_z _ż_a_d_n_y_c_h _o_d_s_t_ę_p_ó_w. Spójrz na następujący przykład: ______________________________________________________________________ ether=9,0x300,0xd0000,0xd4000,eth0 root=/dev/hda1 *DOBRZE* ether = 9, 0x300, 0xd0000, 0xd4000, eth0 root = /dev/hda1 *ŹLE* ______________________________________________________________________ 22..11.. LLIILLOO.. ((LLIInnuuxx LLOOaaddeerr)) Najczęściej używanym programem służącym do ładowania Linux-a jest LILO (LInux LOader), napisany przez Wernera Amesbergera. Ma możliwość ładowania różnych jąder (jak i systemów) a swoją konfigurację zapisuje w pliku tekstowym. Większość dystrybucji jest rozprowadzana z LILO jako domyślnym programem ładującym. LILO umie załadować DOS-a, OS/2, Linux-a, FreeBSD i wiele innych systemów bez żadnych trudności i jest dość elastyczny. W typowej konfiguracji LILO zatrzyma się krótko po włączeniu komputera i wyświetli _L_I_L_O_:. Przez następnych kilka sekund będzie czekać na podanie ewentualnych argumentów a następnie zacznie ładować domyślny system. Typowymi etykietami opisującymi systemy i używanymi w LILO są linux, backup, linux-old, old, dos, msdos. Jeśli chcesz wpisać jakieś argumenty, wpisujesz je zaraz po nazwie systemu jaki chcesz załadować, tak jak w przykładzie poniżej: ______________________________________________________________________ LILO: linux root=/dev/hda1 ______________________________________________________________________ Bardzo przydatne jest polecenie append= jeśli ktoś chce dodać jakiś argument na stałe. Tak więc aby nie wpisywać go za każdym razem wystarczy po prostu dodać linijkę append = "xxx=yyy" do plik /etc/lilo.conf. Może być ona dodana albo na początku pliku, wtedy będzie się odnosić do wszystkich sekcji, albo w danej sekcji image, tak aby odnosiła się tylko do niej. Zajrzyj do dokumentacji LILO aby dowiedzieć się więcej szczegółów. 22..22.. LLooaaddLLiinn.. Innym często używanym programem do ładowania Linux-a jest _l_o_a_d_l_i_n_._e_x_e. Jest to DOS-owy program, który potrafi załadować jądro (wraz z argumentami startowymi) z wiersza poleceń DOS-a zakładając, że są dostępne pewne zasoby. Jest to dobre rozwiązanie dla tych, którzy używają DOS-a i chcą się z niego szybko (lub niekoniecznie) przełączyć na Linux-a. Jest on także bardzo przydatny jeśli masz jakieś urządzenie, które aby było przydatne do użycia musi zostać ustawione przez sterownik DOS- owy. Dobrym przykładem mogą być tutaj karty kompatybilne z SoundBlaster, które muszą mieć ustawione kilka rejestrów przez sterownik DOS-owy aby ustawić je w tryb kompatybilności z SoundBlaster. Ładowanie DOS-a wraz ze sterownikiem, a potem ładowanie Linux-a z wiersza poleceń DOS-a programem LOADLIN.EXE zapobiega zresetowaniu karty, co miałoby miejsce gdybyśmy zresetowali komputer, aby uruchomić Linux-a. W ten sposób karta zostaje w trybie kompatybilności z SoundBlaster i jest przydatna do użycia pod Linux- em. Są także inne programy służące do ładowania Linux-a. Aby poznać kompletną listę takich programów zajrzyj do swojego lokalnego serwera ftp do katalogu system/Linux-boot. 22..33.. NNaarrzzęęddzziiee ""rrddeevv"".. Jest kilka argumentów startowych, których wartości domyślne są zapisane w różnych bajtach w samym jądrze. Jest narzędzie zwane rdev zainstalowane na większości systemów, które wie gdzie te bajty się znajdują i jak je zmienić. Potrafi ono także zmienić różne rzeczy, które nie mają swoich argumentów startowych, jak na przykład domyślny tryb wyświetlania. Narzędzie rdev może być zwykle zastąpione przez swapdev, ramsize, vidmode i rootflags. Jest to pięć rzeczy, które rdev potrafi zmienić: główny system plików (katalog "/"), urządzenie swap, parametry RAM- dysku, domyślny tryb graficzny i ustawienia głównego systemu plików jako tylko-do-odczytu bądź w tryb odczytu-zapisu. Więcej informacji na temat rdev można znaleźć pisząc w wierszu poleceń rdev -h bądź w podręczniku systemowym man. 22..44.. JJaakk jjąąddrroo ssoorrttuujjee aarrgguummeennttyy.. Większość argumentów startowych ma następującą składnię: ______________________________________________________________________ nazwa=[wartość_1][,wartość_2]...[,wartość_11] ______________________________________________________________________ gdzie "nazwa" jest unikalnym słowem kluczowym identyfikującym część jądra, do którego odnoszą się podane wartości. Większa ilość argumentów startowych to lista powyższych wywołań oddzielonych od siebie odstępem. Zauważ, że maksymalna ilość wartości to 11. Jądro rzeczywiście rozpoznaje tylko 11 elementów oddzielonych przecinkami przy danym słowie kluczowym. (Chociaż możesz użyć ponownie tego samego słowa kluczowego z dodatkowymi 11 argumentami w jakichś niezwykle skomplikowanych sytuacjach, zakładając, że dane funkcja ustawiająca (patrz niżej) to dopuszcza). Zwróć uwagę na fakt, iż jądro dzieli tę listę na maksimum 10 argumentów typu integer, i następujący po nich łańcuch, więc tak naprawdę nie możesz podać 11 argumentów typu integer o ile nie przerobisz sterownika tak, aby sam sobie zamienił ten 11 element na liczbę typu integer. Wiekszość sortowania odbywa się w linux/init/main.c. Najpierw jądro sprawdza czy argument jest jednym ze specjalnych argumentów: root=, ro, rw, debug. Znaczenie tych parametrów jest opisane dalej w tym dokumencie. Następnie sprawdza listę argumentów zawartych w tablicy bootsetups czy podany łańcuch nie został przypisany którejś z funkcji ustawiającej konkretne urządzenie bądź część jądra. Jeśli przekazałeś do jądra linię xxx=3,4,5,6,yyy wtedy jądro przeszukałoby tablicę bootsetups aby zobaczyć czy xxx jest tam wymienione. Jeśli byłoby wymienione wtedy uruchomiłoby funkcję związaną z xxx i przekazałoby jej argumenty typu integer: 3,4,5,6 oraz ostatni łańcuch yyy. 22..55.. UUssttaawwiiaanniiee zzmmiieennnnyycchh śśrrooddoowwiisskkoowwyycchh.. Wszystko w formie "xxx=yyy", co nie jest funkcją ustawiającą opisaną powyżej jest interpretowane jako zmienna środowiskowa, mająca być ustawiona. (bezużytecznym?) Przykładem mogłoby być użycie TERM=vt100 jako argumentu startowego. 22..66.. PPrrzzeekkaazzyywwaanniiee aarrgguummeennttóóww ddoo pprrooggrraammuu ""iinniitt"".. Wszystkie pozostałe argumenty startowe, które nie zostały rozpoznane jako funkcje ustawiające, czy zmienne środowiskowe są przekazywane do procesu o numerze 1, którym zazwyczaj jest init. Najczęstszym przekazywanym argumentem do programu init jest słowo single oznaczające uruchomienie systemu w trybie jednego użytkownika nie uruchamiając demonów, które zwykle są uruchamiane. Sprawdź w podręczniku man jaką masz wersję programu "init" i jakie argumenty możesz mu przekazać. 33.. OOggóóllnnee aarrgguummeennttyy nniiee ddoottyycczząąccee sstteerroowwnniikkóóww.. Są to argumenty nie dotyczące żadnych konkretnych sterowników czy urządzeń peryferyjnych. Odnoszą się natomiast do wewnętrznych parametrów jądra, takich jak: obsługa pamięci, obsługa RAM-dysku, obsługa głównego systemu plików itd. 33..11.. AArrgguummeennttyy ddoottyycczząąccee ggłłóówwnneeggoo ssyysstteemmuu pplliikkóóww.. Następujące argumenty mają wpływ na to jak jądro będzie obsługiwać główny system plików: 33..11..11.. AArrgguummeenntt ""rroooott=="".. Poprzez ten argument możemy przekazać do jądra które urządzenie ma być użyte jako główny system plików. Domyślnym ustawieniem jest tutaj urządzenie, na którym był główny system plików, podczas tworzenia (kompilacji) jądra. Na przykład jeśli dane jądro było utworzone na systemie, w którym główny system plików był na urządzeniu /dev/hda1 wtedy domyślnym ustawieniem będzie "/dev/hda1". Aby to zmienić i ustawić drugą stację dyskietek jako główny system plików trzeba użyć argumentu root= w następujący sposób: ______________________________________________________________________ root=/dev/fd1 ______________________________________________________________________ Główny system plików może być zamontowany na następujących urządzeniach: (1) /dev/hdaN do /dev/hddN, gdzie N jest numerem partycji na dysku pierwszym, drugim, trzecim lub czwartym kompatybilnym z ST-506. (2) /dev/sdaN do /dev/sdeN, gdzie N jest numerem partycji na dysku pierwszym, drugim, trzecim, czwartym lub piątym kompatybilnym z SCSI. (3) /dev/xdaN do /dev/xdbN, gdzie N jest numerem partycji na dysku pierwszym lub drugim kompatybilnym z XT. (4) /dev/fdN, gdzie N jest numerem stacji dyskietek (N=0 - A:, N=1 - B:) (5) /dev/nfs, co raczej nie jest urządzeniem a argumentem, który mówi, żeby zamontować główny system plików poprzez sieć. Inna znacznie bardziej kłopotliwa i skomplikowana metoda przekazania, na którym urządzeniu ma być główny system plików jest podanie liczby głównej i pobocznej (np. /dev/sda3 to liczba główna - 8, liczba poboczna - 3 a więc mógłbyś napisać root=0x803. To jest jeden z kilku argumentów startowych, który ma zapisaną domyślną wartość w jądrze, i który przez to może być zmieniany za pomocą rdev. 33..11..22.. AArrgguummeenntt ""rroo"".. Kiedy jądro ładuje system, potrzebuje głównego systemu plików, aby odczytać z niego podstawowe informacje. To jest główny system plików montowany podczas ładowania. Chociaż, jeśli system ten jest zamontowany z możliwoscią zapisu, nie możesz dokładnie sprawdzić jego integralności (poprawności) jeśli akurat trwa zapis pliku. Argument ro przekazuje do jądra informację, aby zamontować główny system plików jako tylko-do-odczytu, tak więc jakikolwiek program sprawdzający poprawność systemu plików może założyć, że nie ma żadnych częściowo zapisanych plików podczas sprawdzania. Żaden program ani proces nie może zapisać niczego do pliku dopóki system plików nie zostanie przemontowany w tryb odczytu-zapisu (read-write). To jest jeden z kilku argumentów startowych, który ma zapisaną domyślną wartość w jądrze, i który przez to może być zmieniany za pomocą rdev. 33..11..33.. AArrgguummeenntt ""rrww"".. To jest dokładną odwrotnością poprzedniego argumentu, czyli przekazuje do jądra, aby zamontować główny system plików z możliwoscią zapisu. Tak czy inaczej ostatecznie chcemy mieć możliwość zapisu na głównym systemie plików. Ale pamiętaj, aby nie uruchamiać żadnych programów testujących (typu fsck) system plików kiedy jest on zamontowany z możliwością zapisu. Ta sama wartość zapisana w jądrze wspomniana wyżej jest używana do tego argumentu, dostępna przez rdev. 33..22.. AArrgguummeennttyy ddoottyycczząąccee RRAAMM--ddyysskkuu.. Następujące argumenty są związane z tym jak jądro obsługuje RAM-dysk, który jest zwykle używany do bootstrappingu podczas instalacji lub na maszynach ze sterownikami w postaci modułów, które muszą być zainstalowane aby mieć dostęp do głównego systemu plików. 33..22..11.. AArrgguummeenntt ""rraammddiisskk__ssttaarrtt=="".. Aby pozwolić obrazowi jądra na przebywanie na dyskietce wraz ze skompresowanym obrazem RAM-dysku dodany został argument `ramdisk_start=<offset>'. Jądro nie może być zawarte w skompresowanym obrazie głównego systemu plików na RAM-dysku, ponieważ musi ono być zapisane poczynając od bloku 0, tak aby BIOS mógł załadować bootsektor i wtedy jądro może zacząć się ładować. Uwaga: Jeśli używasz rozpakowanego obrazu RAM-dysku, wtedy jądro może być częścią obrazu głównego systemu plików, który jest ładowany do RAM-dysku i system może wystartować z tej dyskietki, albo obraz głównego systemu plików i jądro mogą być dwiema oddzielnymi dyskietkami, tak jak w przypadku skompresowanego obrazu. Jeśli używasz dwóch dyskietek (bootdysk z jądrem i rootdysk z obraze RAM-dysku) wtedy RAM-dysk zaczyna się od bloku 0 i jako offset w naszym przykładzie trzeba wpisać 0. Ponieważ jest to domyślna wartość nie musisz w tym przypadku używać tego argumentu. 33..22..22.. AArrgguummeenntt ""llooaadd__rraammddiisskk=="".. Ten argument informuje jądro czy ma ono ładować RAM-dysk czy nie. Pisząc load_ramdisk=1 informujesz jądro, aby załadować zawartość dyskietki do RAM-dysku. Domyślną wartością jest 0, czyli jądro nie ma ładować zawartości dyskietki do RAM-dysku. Dokładny opis argumentów startowych dotyczących RAM-dysku znajdziesz w linux/Documentation/ramdiskt.txt. Jest tam także opisane w jaki sposób można zapisać w jądrze wartość tego parametru poleceniem rdev. 33..22..33.. AArrgguummeenntt ""pprroommpptt__rraammddiisskk=="".. Ten argument informuje jądro czy wypisywać prośbę o włożenie dyskietki z zawartością RAM-dysku czy nie. W konfiguracji z jedną dyskietką zawartość RAM-dysku jest na tej samej dyskietce co jądro, które się właśnie przestało ładować, a więc prośba nie jest potrzebna. W tym wypadku można użyć prompt_ramdisk=0. W konfiguracji z dwiema dyskietkami potrzebujesz czasu na zamianę dyskietek a więc należy użyć prompt_ramdisk=1. Ponieważ to jest wartość domyślna nie trzeba tego pisać. (Uwaga historyczna: Co sprytniejsi używali opcji LILO vga=ask, aby na chwilę przerwać start systemu i zamienić dyskietki.) Dokładny opis argumentów startowych dotyczących RAM-dysku znajdziesz w linux/Documentation/ramdiskt.txt. Jest tam także opisane w jaki sposób można zapisać w jądrze wartość tego parametru poleceniem rdev. 33..22..44.. AArrgguummeenntt ""rraammddiisskk__ssiizzee=="".. Ponieważ prawdą jest, że zawartość RAM-dysku rośnie dynamicznie wraz z coraz nowszymi wersjami systemu, jest górne ograniczenie jego rozmiaru, tak aby nie zabrał całej pamięci RAM i nie zostawił nas na lodzie. Domyślną wartością jest 4096 (czyli 4MB), która powinna być wystarczająco duża dla większości potrzeb. Możesz zmienić tę wartość zależnie od potrzeb na mniejszą lub większą przy pomocy tego argumentu. Dokładny opis argumentów startowych dotyczących RAM-dysku znajdziesz w linux/Documentation/ramdiskt.txt. Jest tam także opisane w jaki sposób można zapisać w jądrze wartość tego parametru poleceniem rdev. 33..22..55.. AArrgguummeenntt ""rraammddiisskk=="".. (UWAGA: Ten argument jest przestarzały i nie powinien być używany z jądrami w wersji wyższej niż 1.3.47. Argumenty, których należy używać zostały opisane powyżej.) Argument ten określa rozmiar RAM-dysku w kB. Na przykład jeśli ktoś chciałby mieć główny system plików na dyskietce 1.44MB załadowanej do RAM-dysku użyłby następującego argumentu: ______________________________________________________________________ ramdisk=1440 ______________________________________________________________________ To jest jeden z kilku argumentów startowych, który ma zapisaną domyślną wartość w jądrze, i który przez to może być zmieniany za pomocą rdev. 33..22..66.. AArrgguummeenntt ""nnooiinniittrrdd"".. Jądra w wersji 2.x i wyższej mają możliwość wykonywania /linuxrc z zawartości RAM-dysku. Możliwość ta jest zwykle wykorzystywana, aby umożliwić ładowanie modułów potrzebnych do zamontowania rzeczywistego głównego systemu plików (np. załaduj sterownik SCSI zapisany w RAM- dysku, a potem zamontuj rzeczywisty główny system plików znajdujący się na dysku SCSI.) Właściwy argument "noinitrd" określa co dzieje się z danymi initrd po tym jak jądro się załadowało. Jeśli podamy ten argument dane te staną się dostępne poprzez urządzenie specjalne /dev/initrd, które może być czytane zanim pamięć RAM zostanie przywrócona systemowi, zamiast być zapisanymi do RAM-dysku. Odnośnie szczegółów dotyczących używania startowego RAM-dysku, przeczytaj linux/Documentation/initrd.txt. Najnowsza wersja LILO oraz loadlin.exe powinna mieć także dodatkowe informacje na ten temat. 33..33.. Następujące argumenty określają jak Linux wykrywa i obsługuje pamięć fizyczną i wirtualną w twoim systemie. 33..33..11.. AArrgguummeenntt ""mmeemm=="".. Ten argument ma dwa przeznaczenia: Pierwotnym założeniem było określenie ilości zainstalowanej pamięci (lub wartość mniejsza jeśli chciałeś użyć mniej pamięci niż masz w rzeczywistości). Drugim (prawie wcale nie używanym) przeznaczeniem jest podanie mem=nopentium co informuje jądro, aby nie używało stron pamięci o rozmiarze 4MB. Oryginalne odwołanie do BIOS-u w specyfikacji PC, które zwraca ilość zainstalowanej pamięci zostało tak zaprojektowane, że było w stanie zwrócić co najwyżej 64MB. (Tak! Następny przykład na brak patrzenia w przyszłość, zupełnie tak samo jak w przypadku ilości cylindrów dysku ograniczonej do 1024... eh). Linux używa tego odwołania BIOS-u podczas startu, aby określić ilość zainstalowanej pamięci. Jeśli masz więcej niż 64MB RAM-u, możesz użyć tego argumentu, aby poinformować jądro, ile rzeczywiście masz pamięci RAM. Oto cytat Linusa na temat jak używać tego argumentu: "Jądro zaakceptuje jakikolwiek argument "mem=xx" jaki mu podasz, a jeśli stwierdzi, że je okłamałeś, wywali się z wielkim hukiem wcześniej czy później. Argument ten określa najwyższy dostępny adres pamięci RAM, więc mem=0x1000000 znaczy, że masz 16MB RAM-u na przykład. Dla maszyny z 96MB RAM-u byłoby to: mem=0x6000000. UWAGA UWAGA UWAGA: niektóre maszyny mogą używać najwyższych adresów do cache'owania BIOS-u czy czegoś podobnego, więc mógłbyś nie mieć pełnych 96MB RAM-u dostępnego. I na odwrót: niektóre procesory odwzorowują pamięć fizyczną, która jest zakryta przez BIOS tuż za najwyższym dostępnym adresem, tak więc ten najwyższy adres mógłby być np: 96MB + 384kB. Jeśli poinformujesz Linux-a, że ma więcej pamięci niż w rzeczywistości, będą się dziać złe rzeczy: może nie od razu, ale kiedyś na pewno." Zauważ, że wartość tego argumentu nie musi być podana szesnastkowo a przyrostki "k" i "M" (wielkość liter nie ważna) mogą być użyte do określenia odpowiednio kilobajtów i Megabajtów. ("k" spowoduje przesunięcie 10 bitowe podanej wartości, a "M" - 20 bitowe) Powyższe ostrzeżenie jest wciąż ważne, ponieważ maszyna z 96MB pamięci może działać z argumentem mem=97920k ale może nie działać z mem=98304k lub mem=96M. 33..33..22.. AArrgguummeenntt ""sswwaapp=="".. Argument ten pozwala użytkownikowi podać kilka parametrów pamięci wirtualnej, które są związane z pamięcią swap. Można tu podać następujące parametry: ______________________________________________________________________ MAX_PAGE_AGE PAGE_ADVANCE PAGE_DECLINE PAGE_INITIAL_AGE AGE_CLUSTER_FRACT AGE_CLUSTER_MIN PAGEOUT_WEIGHT BUFFEROUT_WEIGHT ______________________________________________________________________ Zainteresowani hackerzy proszeni są o przeczytanie linux/mm/swap.c a także /proc/sys/vm. 33..33..33.. AArrgguummeenntt ""bbuuffff=="".. Podobnie do argumentu "swap=" ten pozwala użytkownikowi podać kilka parametrów związanych z obsługą pamięci buforowej. Akceptuje następujące parametry: ______________________________________________________________________ MAX_BUFF_AGE BUFF_ADVANCE BUFF_DECLINE BUFF_INITIAL_AGE BUFFEROUT_WEIGHT BUFFERMEM_GRACE ______________________________________________________________________ Zainteresowani hackerzy proszeni są o przeczytanie linux/mm/swap.c a także /proc/sys/vm. 33..44.. AArrgguummeennttyy ddoottyycczząąccee ggłłóówwnneeggoo ssyysstteemmuu pplliikkóóww mmoonnttoowwaanneeggoo ppoopprrzzeezz NNFFSS.. Linux obsługuje bezdyskowe stacje robocze, które mają zamontowany główny system plików jako NFS (Network File System). Argumenty te używane są, aby przekazać systemowi z jakiego komputera ma sobie zamontować główny system plików. Zauważ także, że wymagany jest w tym przypadku argument root=/dev/nfs. Szczegóły na temat używania głównego systemu plików zamontowanego jako NFS znajdują się w pliku linux/Documentation/nfsroot.txt. Powinieneś go przeczytać, gdyż ten paragraf jest tylko streszczeniem tamtego pliku. 33..44..11.. AArrgguummeenntt ""nnffssrroooott=="".. Argument ten informuje jądro jakiej maszyny użyć, jakiego katalogu na niej i jakich opcji NFS podczas montowania głównego systemu plików. Argument ten ma następującą postać: ______________________________________________________________________ nfsroot=[<serwer-ip>:]<gł.sys.pl.>[,<opcje-nfs>] ______________________________________________________________________ Jeśli argument nfsroot nie jest podany wtedy użyte zostanie "/tftpboot/%s". Kolejne opcje tego argumentu oznaczają: <serwer-ip> - Określa adres IP serwera NFS. Jeśli to pole nie jest podane, użyta zostanie wartość zmiennej nfsaddrs (patrz poniżej). Jedną z możliwości użycia tego parametru jest na przykład pozwolenie na użycie różnych serwerów dla RARP i NFS. Zwykle możesz zostawić ten parametr pusty. <gł.sys.pl.> - Nazwa katalogu na serwerze, który ma być zamontowany jako główny system plików. Jeśli użyty jest znak "%s", zostanie on zamieniony na znakową reprezentację numeru IP klienta. <opcje-nfs> - Standardowe opcje NFS. Wszystkie opcje są oddzielone od siebie przecinkami. Jeśli pole "opcje-nfs" nie jest podane, zostaną użyte następujące wartości domyślne: port = podany przez demona "portmap" z serwera rsize = 1024 wsize = 1024 timeo = 7 retrans = 3 acregmin = 3 acregmax = 60 acdirmin = 30 acdirmax = 60 flags = hard, nointr, noposix, cto, ac 33..44..22.. AArrgguummeenntt ""nnffssaaddddrrss=="".. Ten argument ustawia różne adresy interfejsu sieciowego, które są wymagane do komunikacji przez sieć. Jeśli argument ten nie jest podany, wtedy jądro próbuje użyć protokołów RARP bądź BOOTP, aby znaleźć te parametry. Argument ten ma następująca postać: ______________________________________________________________________ nfsaddrs=<mój-ip>:<serw-ip>:<r-ip>:<netmask>:<nazwa>:<urz>:<auto> ______________________________________________________________________ <mój-ip> - Adres IP klienta. Jeśli jest on pusty, zostanie wykryty przy pomocy RARP albo BOOTP. Jaki protokół jest używany, zależy od tego co zostało udostępnione podczas kompilacji jądra i od parametru <auto>. Jeśli parametr ten nie jest pusty, ani RARP ani BOOTP nie zostanie użyty. <serw-ip> - Adres IP serwera NFS. Jeśli RARP został użyty do wykrycia adresu klienta i parametr ten nie jest pusty akceptowane będą odpowiedzi tylko z wyspecyfikowanego serwera. Aby użyć różnych serwerów RARP i NFS, podaj swój serwer RARP tutaj (lub zostaw pusty), a serwer NFS podaj w argumencie nfsroot (patrz wyżej). Jeśli parametr ten jest pusty, użyty jest adres serwera, który odpowiedział na pytanie RARP lub BOOTP. <r-ip> - Adres IP rutera jeśli serwer jest w innej podsieci. Jeśli opcja ta jest pusta żaden ruter nie jest używany i przyjmowane jest, że serwer znajduje się w sieci lokalnej, o ile nie odebrano wartości poprzez BOOTP. <netmask> - Maska sieci dla lokalnego interfejsu sieciowego. Jeśli opcja ta jest pusta, maska jest wyprowadzana z numeru IP klienta, o ile nie otrzymano wartości poprzez BOOTP. <nazwa> - Nazwa klienta. Jeśli opcja ta jest pusta, adres IP klienta używany jest w notacji znakowej lub wartość otrzymana poprzez BOOTP. <urz> - Nazwa urządzenia sieciowego, które ma zostać użyte. Jeśli opcja ta jest pusta, wszystkie urządzenia są używane do żądań RARP, a pierwsze znalezione dla BOOTP. Dla NFS używane jest to urządzenie, dla którego zostały otrzymane odpowiedzi RARP lub BOOTP. Jeśli masz tylko jedno urządzenie możesz spokojnie zostawić tę opcję pustą. <auto> - Metoda, która ma być użyta do autokonfiguracji. Jeśli jest to "rarp" lub "bootp" używany jest podany protokół. Jeśli wartością jest "both" lub opcja ta jest pusta, oba protokoły są używane jeśli tylko są wkompilowane w jądrze. Używając "none" informujesz, aby nie używać autokonfiguracji. W tym przypadku musisz podać wszystkie potrzebne wartości poprzednich pól. Parametr <auto> może pojawić się samotnie jako wartość argumentu "nfsaddrs" (bez tych wszystkich ":" znaków przedtem) wtedy używana jest autokonfiguracja. Aczkolwiek wartość "none" nie jest dostępna w tym przypadku. 33..55.. IInnnnee aarrgguummeennttyy.. Te różne argumenty startowe pozwalają użytkownikowi ustawić pewne wewnętrzne parametry jądra. 33..55..11.. AArrgguummeenntt ""ddeebbuugg"".. Jądro podaje ważne (i mniej ważne) informacje do użytkownika poprzez funkcję printk(). Jeśli informacja jest rozpoznawana jako ważna, funkcja printk() umieści kopię na bieżącej konsoli jak również przekaże ją do demona klogd tak aby wiadomość ta została zapisana na dysk. Powód, dla którego informacje te są wysyłane na konsolę jak i zapisywane na dysk jest taki, że w pewnych nieszczęśliwych warunkach (np: awaria dysku) informacje te mogą nie dotrzeć na dysk i zostałyby stracone. Próg, wg. którego informacja jest uważana za ważną lub nie ustawiany jest przez zmienną console_loglevel. Wartością domyślną jest zapisywanie wszystkiego ważniejszego (o mniejszym poziomie, a tym samym większym priorytecie) niż DEBUG (poziom 7) na konsolę. (poziomy te zdefiniowane są w pliku nagłówkowym kernel.h). Podanie argumentu startowego debug ustawi poziom logowania na konsolę na 10, tak, że _w_s_z_y_s_t_k_i_e informacje z jądra pojawią się na konsoli. Poziom logowania na konsolę może zwykle być ustawiony także podczas normalnej pracy systemu poprzez opcję programu klogd. Sprawdź w systemie pomocy "man" jak to zrobić. 33..55..22.. AArrgguummeenntt ""iinniitt=="".. Jądro standardowo po załadowaniu się uruchamia program "init", który następnie zajmuje się przygotowaniem systemu dla użytkownika poprzez uruchomienie programów getty, skryptów "rc" itp. Jądro najpierw szuka /sbin/init, następnie /etc/init a na końcu spróbuje użyć /bin/sh (możliwie w /etc/rc). Jeśli na przykład twój program init popsuł się i nie jest możliwy restart systemu, możesz użyć argumentu init=/bin/sh, który spowoduje uruchomienie shell-a natychmiast po załadowaniu jądra, umożliwiając ci zamianę popsutego programu na dobry. 33..55..33.. AArrgguummeenntt ""nnoo338877"".. Niektóre koprocesory i387 mają błędy, które pojawiają się jeśli używamy 32-bitowego trybu chronionego. Na przykład niektóre wczesne procesory ULSI-387 mogą powodować poważne zawieszenia podczas używania operacji zmiennoprzecinkowych, widocznie z powodu błędu w instrukcjach FRSAV/FRRESTOR. Użycie argumentu startowego "no387" spowoduje ignorowanie koprocesora przez Linux-a nawet jeśli go masz. Oczywiście musisz mieć wkompilowaną emulację koprocesora w jądrze! Może to być także przydatne jeśli masz jedną z tych _n_a_p_r_a_w_d_ę starych maszyn 386, które mogą używać 80287 FPU, a Linux nie umie tego używać. 33..55..44.. AArrgguummeenntt ""nnoo--hhlltt"".. Rodzina procesorów i386 (a co za tym idzie i nowsze) mają instrukcję "hlt", która informuje procesor, że nic się nie stanie dopóki jakieś zewnętrzne urządzenie (klawiatura, modem, dysk, itp.) nie zażąda jakiejś akcji. To pozwala na użycie trybu "low-power", który powoduje, że procesor siedzi jak zombi i czeka aż coś zażąda jakiejś akcji (zwykle poprzez przerwanie), co powoduje mniejsze zużycie prądu. Niektóre z wczesnych procesorów i486DX-100 miały problem z tą instrukcją, przez co nie mogły niezawodnie powrócić do trybu działania po użyciu tej instrukcji. Używając argumentu "no-hlt" informujesz Linux-a, aby po prostu robił sobie nieskończoną pętlę jeśli nie ma nic mądrzejszego do roboty, a nie zatrzymywał procesora jeśli nic się nie dzieje. To pozwala ludziom z tymi popsutymi procesorami używać Linux- a, chociaż lepiej, żeby spróbowali wymienić ten procesor. 33..55..55.. AArrgguummeenntt ""nnoo--ssccrroollll"".. Użycie tego argumentu startowego powoduje wyłączenie możliwości scrolowania, która powoduje utrudnienie użycia terminali Braille'a. 33..55..66.. AArrgguummeenntt ""ppaanniicc=="".. W nieprawdopodobnym przypadku paniki jądra (tj. wewnętrznego błędu, który został wykryty przez jądro, i który jądro decyduje się uważać na tyle poważnie, aby głośno jęknąć i wszystko zatrzymać) domyślnym zachowaniem się jądra jest po prostu siedzieć i czekać aż ktoś przyjdzie i zauważy informację o panice i zresetuje maszynę. Aczkolwiek jeśli maszyna jest rzadko odwiedzana, sensowny jest automatyczny reset. Na przykład używając "panic=30" podczas startu informujemy jądro aby po 30 sekundach spróbowało zresetować maszynę. Wartość 0 powoduje zachowanie domyślne. Zauważ, że wartość ta może być także podana poprzez funkcję sysctl wywołaną na interfejsie /proc/sys/kernel/panic. 33..55..77.. AArrgguummeenntt ""pprrooffiillee=="".. Ci, którzy chcą ingerować w wewnętrzne działanie jądra, mogą podać argument, który pozwala na określenie jak i gdzie jądro ma spędzać cykle procesora, aby doprowadzić do maksymalnego wykorzystania jego możliwości. Ten argument pozwala ustawić licznik przesunięć podczas startu. Typowo ustawiony jest on na dwa. Możesz także skompilować jądro z domyślnie ustawioną możliwością profilowania. W każdym z tych przypadków potrzebujesz takiego narzędzia jak readprofile.c, które umie używać /proc/profile. 33..55..88.. AArrgguummeenntt ""rreebboooott=="".. Opcja ta kontroluje sposób w jaki Linux restartuje komputer (typowo poprzez /sbin/init, który obsługuje kombinację klawiszy Control-Alt- Delete). Domyślnym zachowaniem co do późnych jąder jest tzw. "zimny" restart (tzn. pełen restart, wraz ze sprawdzaniem pamięci przez BIOS itp.) zamiast "ciepłego" restartu (tj. niepełen restart, bez testowania pamięci). Wartość domyślną zmieniono na "zimny" ponieważ taki restart, w przeciwieństwie do "ciepłego", wydaje się działać na tanim/popsutym sprzęcie. Aby przywrócić dawne zachowanie (tj. "ciepły" restart) użyj reboot=w albo właściwie jakiekolwiek słowo zaczynające się na w zadziała. Po co zawracać sobie głowę? Niektóre kontrolery dysków z własną pamięcią cache może wykrywać "ciepły" restart, i zapisywać wszystkie dane z pamięci cache na dysk. Podczas "zimnego" restartu, karta może zostać zrestartowana i wszystkie dane z cache'u zostaną stracone. Inni raportowali systemy, którym sprawdzanie pamięci zabierało dużo czasu czy dłuższy czas inicjalizacji BIOS-ów SCSI. 33..55..99.. AArrgguummeenntt ""rreesseerrvvee=="".. Argument ten jest używany do _o_c_h_r_o_n_y obszarów portów I/O przed przeszukiwaniem. ______________________________________________________________________ reserve=iobase,extent[,iobase,extent]... ______________________________________________________________________ W niektórych maszynach może być konieczne, aby powstrzymać sterowniki urządzeń przed automatyczną próbą wykrycią urządzenia w konkretnych obszarach. Może to być spowodowane źle zrobionymi urządzeniami, które powodują zawieszanie podczas startu (tak jak niektóre karty Ethernetowe), urządzeniami błędnie rozpoznanymi, urządzeniami, których stan został zmieniony podczas wcześniejszej próby wykrycia, albo po prostu tym, że nie chcesz aby jakieś urządzenie zostało wykryte. Argument startowy reserve eliminuje te problemy przez podanie obszaru adresów I/O, który nie ma być sprawdzany. Obszar ten jest oznaczany w tablicy rejestracyjnej portów jądra tak jakby jakieś urządzenie zostało już w tym obszarze wykryte (słowem reserved). Zauważ, że ten proceder nie jest konieczny na wszystkich maszynach. Tylko jeśli występuje problem lub sytuacja wyjątkowa, wymagająca użycia tego argumentu. Porty I/O w podanym obszarze są chronione przed próbą automatycznego wykrywania, która używa funkcji check_region() przed wykrywaniem na ślepo w pewnym regionie adresów I/O. Argument ten wprowadzono, aby używać go kiedy jakiś sterownik wisi na karcie NE2000 lub identyfikuje jakieś inne urządzenie jako swoje. Poprawny sterownik nie powinien przeszukiwać zarezerwowanego obszaru, o ile inny argument startowy nie poinformuje go wyraźnie, że ma to zrobić. Wynika z tego, że argument reserve jest najczęściej używany w konfiguracji z innymi argumentami startowymi. Tak więc jeśli podasz jakiś obszar, aby chronić jakieś urządzenie, musisz zwykle podać wyraźnie port tego urządzenia. Większość sterowników ignoruje tablicę rejestracji portów jeśli mają podany konkretny adres. Na przykład poniższa linia: ______________________________________________________________________ reserve=0x300,32 bla=0x300 ______________________________________________________________________ powstrzymuje wszystkie sterowniki poza sterownikiem do urządzenia bla przed przeszukiwaniem adresu 0x300-0x31F. Jako zwykły argument startowy argument reserve ma limit na ilość parametrów (11), tak więc możesz podać tylko 5 obszarów zarezerwowanych przez każdy argument reserve. Jeśli masz powód, aby użyć więcej argumentów reserve możesz to zrobić. 33..55..1100.. AArrgguummeenntt ""vvggaa=="".. Zauważ, że tak naprawdę to nie jest argument startowy. Jest to opcja, która jest interpretowana przez LILO, a nie przez jądro, tak jak wszystkie inne argumenty startowe. Jednak jej użycie stało się tak popularne, że wymaga ona tutaj wzmianki. Można to także ustawić przy pomocy rdev -v albo równoważnie vidmode w pliku vmlinuz. Argument ten pozwala na zmianę trybu wyświetlania poprzez BIOS jeszcze przed załadowaniem jądra. Typowe tryby to 80x50, 132x44 itd. Najlepszym sposobem jest użycie tego argumentu w postaci vga=ask. Wyświetli on wtedy listę dostępnych trybów i będzie czekał na podanie jednego z nich. Później, jak już będziesz znał numer trybu jaki chcesz używać możesz go wpisać zamiast słowa "ask". Jeśli chcesz wiedzieć więcej zajrzyj do pliku linux/Documentation/svga.txt, który przychodzi wraz ze źródłami jądra. Zauważ, że nowsze jądra (v2.1 i nowsze) mają kod ustawiania, który zmienia tryb video jako opcję, pokazaną jako _V_i_d_e_o _m_o_d_e _s_e_l_e_c_t_i_o_n _s_u_p_p_o_r_t więc musisz włączyć tę opcję jeśli chcesz używać tej właściwości. 44.. AArrgguummeennttyy ssttaarrttoowwee ddllaa uurrzząąddzzeeńń ppeerryyffeerryyjjnnyycchh SSCCSSII.. Sekcja ta zawiera opis argumentów startowych używanych do przekazywania informacji na temat dołączonych adapterów i urządzeń SCSI. 44..11.. AArrgguummeennttyy ddllaa sstteerroowwnniikkóóww śśrreeddnniieeggoo ppoozziioommuu.. Sterowniki średniego poziomu obsługują takie rzeczy jak dyski, CD-ROM- y i taśmy bez wdawania się w szczegóły kontrolerów. 44..11..11.. MMaakkssyymmaallnnaa lliicczzbbaa sspprraawwddzzaannyycchh uurrzząąddzzeeńń LLUUNN.. ((""mmaaxx__ssccssii__lluunnss=="")) Każde urządzenie SCSI może mieć pewną ilość "pod-urządzeń" zawartych w nim. Najpopularniejszym przykładem może być tutaj jeden z nowych CD- ROM-ów SCSI, który obsługuje więcej niż jeden dysk na raz. Każdy z tych dysków jest adresowany numerem logicznej jednostki (ang. Logical Unit Number LUN) danego urządzenia. Ale większość urządzeń takich jak dyski twarde, taśmy to pojedyncze urządzenia a zatem ich numer logicznej jednostki będzie wynosił 0. Problem powstaje przy pojedynczych źle wykonanych urządzeniach LUN. Niektóre źle zaprojektowane urządzenia SCSI (stare i niestety nowe) zawieszają się gdy przeszukuje się je w celu znalezienia urządzenia o numerze LUN różnym od zera, a czasami zawieszają także całą szynę SCSI. Nowsze jądra mają argument startowy, który pozwala ci podać maksymalny numer urządzenia LUN, które będzie szukane. Domyślny numer szukanego urządzenia to 0, aby zapobiec problemowi opisanemu powyżej. Aby podać ilość poszukiwanych urządzeń LUN przy starcie, podajemy jako argument startowy "max_scsi_luns=n", gdzie n jest liczbą pomiędzy 1 a 8. Aby zapobiec problemom opisanym wyżej podajemy n=1. 44..11..22.. PPaarraammeettrryy ddllaa sstteerroowwnniikkaa ttaaśśmm SSCCSSII.. ((""sstt=="")) Niektóre konfiguracje startowe sterownika taśm SCSI można podać w następujący sposób: ______________________________________________________________________ st=rozm_buf[,próg_zap[,max_bufs]] ______________________________________________________________________ Pierwsze dwie liczby są podawane w kilobajtach (kB). Domyślną wartością rozm_buf jest 32kB, a maksymalny rozmiar jaki może być podany to śmieszne 16384kB. próg_zap to wartość, przy osiągnięciu której zawartość bufora zapisywana jest na taśmę. Domyślną wartością jest 30kB. Maksymalna ilość buforów różni się w zależności od ilości wykrytych napędów i ma wartość domyślną = 2. Przykładem może być: ______________________________________________________________________ st=32,30,2 ______________________________________________________________________ Szczegóły można znaleźć w pliku README.st, który znajduje się w podkatalogu scsi źródeł jądra. 44..22.. AArrgguummeennttyy kkoonnttrroolleerróóww SSCCSSII.. Uwaga ogólna dla tej sekcji: IOBASE - pierwszy port I/O, który jest używany przez kontroler SCSI. Wartość ta podawana jest szesnastkowo, i zwykle mieści się w przedziale od 0x200 do 0x3FF. IRQ - przerwanie sprzętowe, na które jest skonfigurowana karta. Odpowiednie wartości są zależne od konkretnej karty, ale zwykle są to 5, 7, 9, 10, 11, 12 i 15. Pozostałe wartości są zwykle używane przez popularne urządzenia takie jak dyski twarde IDE, napędy dyskietek, porty szeregowe itp. dma - kanał DMA (Direct Memory Access), którego używa karta. W zasadzie odnosi się tylko do kart bus-mastering. Karty PCI i VLB mają domyślnie tryb bus-mastering i nie wymagają kanału ISA DMA. SCSI-ID - identyfikator, którego używa dany kontroler do samoidentyfikacji na szynie SCSI. Tylko niektóre kontrolery pozwalają na zmianę tej wartości, ponieważ większość ma ją zapisaną wewnątrz siebie. Standardową wartością jest 7, ale urządzenia Seagate i Future Domain TMC-950 używają 6. PARITY - czy dany kontroler spodziewa się od przyłączonych urządzeń kontroli parzystości przy wymianie wszystkich informacji. 1 oznacza włączenie sprawdzania parzystości, 0 je wyłącza. I znowu nie wszystkie kontrolery pozwalają na zmianę tej wartości. 44..22..11.. KKoonnttrroolleerryy aahhaa115511xx,, aahhaa115522xx,, aaiicc66226600,, aaiicc66336600,, SSBB1166--SSCCSSII ((``aahhaa115522xx=='')) Numery aha odnoszą się do kart a numery aic do właściwego procesora SCSI na kartach tego typu, włączając kartę SoundBlaster-16 SCSI. Podczas przeszukiwania tej karty, jądro próbuje znaleźć zainstalowany BIOS, a jeśli go nie ma, jądro nie znajdzie twojej karty. Wtedy musisz użyć argumentu startowego w postaci: ______________________________________________________________________ aha152x=IOBASE[,IRQ[,SCSI-ID[,powt[,parity]]]] ______________________________________________________________________ Zauważ, że jeśli sterownik został skompilowany z włączoną opcją debug, możliwa jest do podania także szósta wartość ustawiająca poziom śledzenia. Wszystkie parametry zostały opisane powyżej, a parametr powt pozwala na odłączenie lub ponowne podłączenie urządzenia jeśli jego wartością nie jest 0. Przykładowe użycie może być takie: ______________________________________________________________________ aha152x=0x340,11,7,1 ______________________________________________________________________ Zauważ, że parametry muszą być podane w odpowiedniej kolejności; to znaczy, że jeśli chcesz podać wartość parzystości musisz podać najpierw IOBASE, IRQ, SCSI-ID, i POWT. 44..22..22.. KKoonnttrroolleerr aahhaa115544xx.. ((""aahhaa11554422=="")) To są karty serii aha154x. Seria kart aha1542 ma w sobie wbudowany kontroler stacji dyskietek i82077, a aha1540 - nie ma. Są to karty typu busmaster i mają parametry do ustawienia swojej "uczciwości", która jest używana do dzielenia się szyną z innymi urządzeniami. Odpowiedni argument startowy wygląda następująco: ______________________________________________________________________ aha1542=IOBASE[,buson,busoff[,dmaspeed]] ______________________________________________________________________ Możliwe wartości IOBASE to: 0x130, 0x134, 0x230, 0x234, 0x330, 0x334. Klony oryginalnych kart mogą przyjmować inne wartości. Wartości buson i busoff odnoszą się do liczby mikrosekund przez jaką karta przejmuje kontrolę nad szyną ISA. Wartościami domyślnymi są: buson - 11us, busoff - 4us, tak aby inne karty (jak np. ISA LANCE Ethernet) miały szansę się dostać do szyny ISA. Wartość dmaspeed odnosi się do prędkości (w MB/s), z jaką działają transfery DMA (Direct Memory Access). Wartością domyślną jest 5 MB/s. Nowe typy kart pozwalają na ustawienie tej wartości programowo, starsze - poprzez zworki. Możesz podać wartość do 10 MB/s zakładając, że twoja płyta główna to wytrzyma. Eksperymentuj ostrożnie jeśli używasz wartości większych od 5 MB/s. 44..22..33.. KKoonnttrroolleerryy aahhaa227744xx,, aahhaa228844xx,, aaiicc77xxxxxx ((""aaiicc77xxxxxx=="")) Kontrolery te przyjmują argument w postaci: ______________________________________________________________________ aic7xxx=extended,no_reset ______________________________________________________________________ Wartość extended, jeśli jest różna od zera, określa czy tłumaczenie geometrii dużych dysków jest włączone czy nie. Argument no_reset, jeśli jest różny od zera, informuje sterownik, aby nie resetować szyny SCSI podczas ustawiania kontrolera. 44..22..44.. KKoonnttrroolleerr SSCCSSII AAddvvaannSSyyss.. ((""aaddvvaannssyyss=="")) Sterownik AdvanSys przyjmuje do czterech adresów I/O, które będą przeszukiwane w celu znalezienia karty SCSI AdvanSys. Zauważ, że wartości te (jeśli są używane) nie wpływają w żaden sposób na wykrywanie EISA czy PCI. Mają znaczenie tylko w przypadku kart ISA i VLB. Dodatkowo, jeśli sterownik został skompilowany z włączoną opcją śledzenia, poziom śledzenia może być ustawiony poprzez dodanie parametru 0xdeb[0-F]. Znaki 0-F pozwalają na ustawienie poziomu śledzenia na jeden z 16 poziomów. 44..22..55.. KKoonnttrroolleerr AAllwwaayyss IINN22000000.. ((""iinn22000000=="")) W przeciwieństwie do innych adapterów SCSI, ten adapter używa przedrostków w postaci łańcuchów ASCII dla swoich wartości liczbowych. Oto lista jego parametrów: IOPORT:ADDR - gdzie ADDR jest adresem I/O karty (zwykle bez ROM-u). NORESET - Nie ma dodatkowych parametrów. Zapobiega zresetowaniu szyny SCSI podczas startu. NOSYNC:X - X jest maską bitów, gdzie pierwsze siedem bitów odpowiada siedmiu możliwym sterownikom SCSI (bit 0 - urządzeniu #0, itd). Ustaw dany bit, aby zapobiec synchronicznym negocjacjom na tym urządzeniu. Standardowo synchroniczne negocjacje są wyłączone w sterowniku dla wszystkich urządzeń. PERIOD:NS - NS jest minimalną ilością nanosekund w cyklu transferu danych SCSI. Domyślną wartością jest 500; inne akceptowane wartości to 250 i 1000. DISCONNECT:X - X=0 - nie pozwalaj na odłączenia, X=1 - rób adaptacyjne odłączenia, X=2 - zawsze pozwalaj na odłączenia. DEBUG:X - jeśli zdefiniowano symbol "DEBUGGING_ON" X jest maską bitów, która ustawia różne sposoby wydruku śledzenia - odnośnie konkretnych wartości zajrzyj do pliku /linux/drivers/scsi/in2000.h. PROC:X - jeśli zdefiniowano symbol "PROC_INTERFACE", X jest maską bitów, która określa jak działa interfejs /proc i co robi - odnośnie konkretnych wartości zajrzyj do pliku /linux/drivers/scsi/in2000.h. Oto niektóre przykładowe użycia tego argumentu: ______________________________________________________________________ in2000=ioport:0x220,noreset in2000=period:250,disconnect:2,nosync:0x03 in2000=debug:0x1e in2000=proc:3 ______________________________________________________________________ 44..22..66.. SSpprrzzęętt nnaa ppooddssttaawwiiee AAMMDD AAMM5533CC997744.. ((""AAMM5533CC997744=="")) W przeciwieństwie do innych sterowników ten nie przyjmuje parametrów I/O, IRQ, czy DMA. (Ponieważ AM53C974 jest urządzeniem PCI, nie ma potrzeby tego robić) W zamian za to, podawane parametry używane są do ustawiania trybów i prędkości transferu, które mają być używane pomiędzy adapterem a urządzeniem docelowym. Najlepiej opisać to przykładem: ______________________________________________________________________ AM53C974=7,2,8,15 ______________________________________________________________________ Linijka ta zostałaby zinterpretowana następująco: Do komunikacji pomiędzy kontrolerem o numerze SCSI-ID 7 a urządzeniem o numerze SCSI- ID 2 mają być użyte: transfer - 8MHz w trybie synchronicznym z maksimum 15-bajtowym offsetem. Więcej szczegółów znajduje się w pliku linux/drivers/scsi/README.AM53C974. 44..22..77.. KKoonnttrroolleerryy SSCCSSII BBuussLLooggiicc zz jjąąddrreemm ww wweerrssjjii 11..22.. ((""bbuussllooggiicc=="")) W starszych wersjach jądra, sterownik buslogic akceptuje tylko jeden parametr, który jest adresem I/O. Ma to być jedna z następujących wartości: 0x130, 0x134, 0x230, 0x234, 0x330, 0x334. 44..22..88.. KKoonnttrroolleerr SSCCSSII BBuussLLooggiicc zz jjąąddrreemm ww wweerrssjjii 22..xx.. ((""BBuussLLooggiicc=="")) W wersjach jądra 2.x, sterownik BusLogic przyjmuje wiele parametrów. (!!! Uważaj na wielkość liter w argumencie !!!). Następujący opis jest wzięty bezpośrednio ze sterownika Leonarda N. Zubkoffa ze źródeł jądra 2.x. Argumentem startowym dla tego sterownika jest jego nazwa "BusLogic=" (jeszcze raz przypominam o zachowaniu wielkości liter), po której następuje lista parametrów liczbowych oddzielonych przecinkami oraz ewentualnie lista parametrów łańcuchowych także oddzielonych przecinkami. Większa ilość argumentów "BusLogic=" może być użyta w systemach z większą ilością adapterów BusLogic. Pierwsza liczba określa adres I/O, pod którym znajduje się kontroler. Jeśli nie jest podana, wartością domyślną jest 0, co oznacza aby resztę wartości odnieść do pierwszego znalezionego kontrolera BusLogic. Jeśli podane zostaną jakiekolwiek parametry adresowe I/O wtedy standardowe przeszukiwanie nie odbywa się. Druga liczba określa głębokość kolejki (Tagged Queue), która ma być użyta dla urządzenia docelowego, które obsługuje kolejkowanie. Głębokość kolejki jest ilością poleceń SCSI jaka jest możliwa do umieszczenia w kolejce poleceń do wykonania. Jeśli parametr ten nie jest podany, wartością domyślną jest 0, co oznacza użycie wartości wykrytej automatycznie opartej na całkowitej głębokości kolejki adaptera i numerze, typie, prędkości oraz możliwościach wykrytego urządzenia docelowego. Dla kontrolerów wymagających buforów bounce ISA, głębokość kolejki jest automatycznie ustawiana na BusLogic_TaggedQueueDepth_B, aby uniknąć nadmiernej prealokacji pamięci na bufory bounce DMA. Urządzenia docelowe, które nie obsługują kolejkowania, używają głębokości kolejki BusLogic_UntaggedQueueDepth. Trzecia liczba określa czas stabilizacji szyny w sekundach. Jest to ilość czasu do odczekania pomiędzy twardym resetem kontrolera, który inicjuje reset szyny SCSI a wykonaniem polecenia SCSI. Jeśli nie jest ona podana, wartością domyślną jest 0, co oznacza użycie BusLogic_DefaultBusSettleTime. Czwarta liczba określa opcje lokalne. Jeśli nie jest ona podana, wartością domyślną jest 0. Zauważ, że opcje lokalne odnoszą się tylko do specyficznych kontrolerów. Piąta liczba określa opcje globalne. Jeśli nie jest ona podana, wartością domyślna jest 0. Zauważ, że opcje globalne odnoszą się do wszystkich kontrolerów. Parametry łańcuchowe podaje się w celu kontrolowania kolejkowania, naprawy błędów i wyszukiwania kontrolera. Parametr odnośnie kolejkowania zaczyna się od "TQ:" i pozwala na wyraźne podanie czy kolejkowanie jest dopuszczone na urządzeniu docelowym, które je obsługuje. Następujące opcje tego parametru są dozwolone: TQ:Default - kolejkowanie będzie dopuszczone i oparte na firmowej wersji kontrolera BusLogic i na tym czy wartość głębokości kolejki pozwala na kolejkowanie poleceń. TQ:Enable - kolejkowanie będzie dozwolone dla wszystkich urządzeń docelowych na danym kontrolerze zamazując wszelkie limity, które wynikałyby z ustawień firmowych. TQ:Disable - kolejkowanie będzie niedozwolone dla wszystkich urządzeń docelowych na danym adapterze. TQ:<Per-Target-Spec> - kolejkowanie będzie kontrolowane indywidualnie dla każdego urządzenia docelowego. <Per-Target-Spec> - ciąg znaków "N" i "X". "Y" zezwala na kolejkowanie, "N" nie pozwala na nie, a "X" używa wartości domyślnej opartej na wersji firmowej. Pierwszy znak odnosi się do urządzenia 0, drugi - do urządzenia 1 itd. Jeśli ciąg znaków "Y", "N" i "X" nie pokrywa wszystkich urządzeń docelowych, dla urządzeń nie pokrytych używany jest znak "X" czyli wartość domyślna. Zauważ, że wyraźne żądanie kolejkowania może prowadzić do problemów; możliwość ta została wprowadzona, aby wyłączać kolejkowanie dla urządzeń docelowych, które nie obsługują go poprawnie. Parametr odnośnie naprawy błędów zaczyna się od "ER:" i pozwala na wyraźne zezwolenie uruchamiania sekwencji naprawy błędów kiedy wywołane zostanie polecenie ResetCommand z powodu niepowodzenia wykonania jakiegoś polecenia SCSI. Dostępne są następujące opcje dla tego parametru: ER:Default - sekwencja naprawy błędów wybierze pomiędzy twardym resetem a resetem szyny w zależności od zaleceń podsystemu SCSI. ER:HardReset - sekwencja naprawy błędów zainicjuje twardy reset adaptera, który także spowoduje reset szyny SCSI. ER:BusDeviceReset - sekwencja naprawy błędów wyśle do urządzenia docelowego powodującego błąd polecenie resetujące szynę. Jeśli sekwencja naprawy błędów jest ponownie inicjowana dla tego urządzenia docelowego i żadne polecenie SCSI do tego urządzenia nie wykonało się poprawnie od momentu wysłania polecenia resetującego, wtedy zostanie zainicjowany twardy reset. ER:None - sekwencja naprawy błędów zostanie zatrzymana. Opcja ta powinna być podana tylko jeśli reset szyny SCSI i reset szyny powodują całkowite i nieodwracalne zawieszenie urządzenia docelowego. ER:<Per-Target-Spec> - sekwencja naprawy błędów będzie kontrolowana indywidualnie dla każdego urządzenia docelowego. <Per-Target-Spec> jest ciągiem znaków "H", "B" i "N". "D" powoduje zachowanie domyślne, "H" - twardy reset, "B" - reset szyny, "N" - zatrzymanie sekwencji naprawy błędów. Pierwszy znak odnosi się do urządzenia 1, drugi - do drugiego, itd. Jeśli ciąg znaków nie pokrywa wszystkich urządzeń docelowych, wtedy dla urządzeń nie pokrytych przyjmuje się "D" czyli zachowanie domyślne. Parametry odnośnie przeszukiwania adaptera są następujące: NoProbe - nie przeprowadzać żadnego przeszukiwania - żadne kontrolery BusLogic nie zostaną znalezione. NoProbeISA - nie przeprowadzać standardowego przeszukiwania adresów I/O ISA - wykryte zostaną tylko kontrolery PCI. NoSortPCI - kontrolery PCI zostaną ponumerowane wg. porządku ustalonego przez PCI BIOS, ignorując jakiekolwiek ustawienia opcji AutoSCSI "Use Bus and Device # For PCI Scanning Seq.". 44..22..99.. KKaarrttyy EEAATTAA SSCCSSII.. ((""eeaattaa=="")) Od późnych wersji 2.0 jądra, sterownik EATA przyjmuje argument startowy, który specyfikuje adres bazowy I/O, który ma być przeszukiwany. Forma tego argumentu to: ______________________________________________________________________ eata=iobase1[,iobase2][,iobase3]...[,iobaseN] ______________________________________________________________________ Sterownik będzie przeszukiwał adresy w takiej kolejności w jakiej zostały podane. 44..22..1100.. FFuuttuurree DDoommaaiinn TTMMCC--88xxxx,, TTMMCC--995500.. ((""ttmmcc88xxxx=="")) Algorytm wyszukujący dla tych urządzeń SCSI szuka zainstalowanego BIOS-u, a jeśli taki nie jest zainstalowany, karta nie zostanie znaleziona. Albo jeśli sygnatura twojego BIOS-u nie zostanie rozpoznana wtedy karta także nie zostanie znaleziona. W tych przypadkach będziesz musiał użyć argumentu startowego w formie: ______________________________________________________________________ tmc8xx=mem_base,irq ______________________________________________________________________ Wartość mem_base określa ilość pamięci przeznaczonej na odwzorowanie obszaru I/O używanego przez daną kartę. Zwykle jest to jedna z poniższych wartości: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000.n 44..22..1111.. FFuuttuurree DDoommaaiinn TTMMCC--1166xxxx,, TTMMCC--33226600,, AAHHAA--22992200.. ((""ffddoommaaiinn=="")) Sterownik wykrywa te karty na podstawie znanych sygnatur ROM BIOS-ów. Pełną listę znanych BIOS-ów znajdziesz w pliku linux/drivers/scsi/fdomain.c, jak i wiele innych informacji. Jeśli twój BIOS nie jest znany, to możesz podać parametry bezpośrednio w formie: ______________________________________________________________________ fdomain=iobase,irq[,scsi_id] ______________________________________________________________________ 44..22..1122.. PPoorrtt rróówwnnoolleeggłłyy IIOOMMEEGGAA // sstteerroowwnniikk ZZIIPP.. ((""ppppaa=="")) Ten argument przeznaczony jest dla kontrolera SCSI portu równoległego SCSI, który jest wbudowany w sterownik IOMEGA ZIP. Może także działać z oryginalnym urządzeniem IOMEGA PPA3. Argument startowy dla tego sterownika ma formę: ______________________________________________________________________ ppa=iobase,speed_high,speed_low,nybble ______________________________________________________________________ Wszystkie wartości oprócz IOBASE są opcjonalne. Jeśli chcesz zmieniać którąś z tych trzech opcjonalnych wartości lepiej przeczytaj plik linux/drivers/scsi/README.ppa. 44..22..1133.. KKoonnttrroolleerryy ooppaarrttee nnaa NNCCRR55338800.. ((""nnccrr55338800=="")) W zależności od twojej karty, 5380 może odwzorowywać albo porty I/O albo pamięć. (Adres poniżej 0x400 zwykle oznacza odwzorowywanie adresów I/O, ale PCI i EISA używają adresów I/O powyżej 0x3FF.) W każdym z przypadków podajesz adres, numer IRQ i numer kanału DMA. Przykładem dla karty z odwzorowywaniem portów I/O może być: ______________________________________________________________________ ncr5380=0x350,5,3 ______________________________________________________________________ Jeśli karta nie używa IRQ, wtedy podajemy 255 (0xFF) jako numer IRQ. Wartość 254 (0xFE) oznacza automatyczne wykrycie numeru przerwania. Więcej szczegółów znajdziesz w pliku linux/drivers/scsi/README.g_NCR5380. 44..22..1144.. KKoonnttrroolleerryy ooppaarrttee nnaa NNCCRR5533cc440000.. ((""nnccrr5533cc440000=="")) Kontroler ten jest obsługiwany przez ten sam sterownik co opisany wyżej 5380. Argument startowy przyjmuje identyczne wartości za wyjątkiem DMA, którego 53c400 nie używa. 44..22..1155.. KKoonnttrroolleerryy ooppaarrttee nnaa NNCCRR5533cc440066aa.. ((""nnccrr5533cc440066aa=="")) Argument startowy tego sterownika ma formę: ______________________________________________________________________ ncr53c406a=PORTBASE,IRQ,FASTPIO ______________________________________________________________________ gdzie IRQ i FASTPIO są parametrami opcjonalnymi. Wartość przerwania = 0, wyłącza użycie przerwania. Wartość FASTPIO = 1 włącza użycie instrukcji insl i outsl zamiast instrukcji jedno-bajtowych inb i outb. Sterownik może także przyjmować DMA jako opcję podczas kompilacji. 44..22..1166.. PPrroo AAuuddiioo SSppeeccttrruumm.. ((""ppaass==1166"")) PAS16 używa układu SCSI NCR5380, a nowsze modele obsługują konfigurację bezzworkową. Argument startowy ma postać: ______________________________________________________________________ pas16=iobase,irq ______________________________________________________________________ Jedyną różnicą jest to, że możesz podać numer przerwania 255 (0xFF), które poinformuje sterownik, żeby pracował bez używania przerwania, aczkolwiek przy utracie jakości. IOBASE ma zwykle wartość 0x388. 44..22..1177.. SSeeaaggaattee SSTT--00xx ((""sstt00xx=="")) Algorytm wyszukiwania dla tych kontrolerów szuka zainstalowanego BIOS- u, a jeśli takiego nie znajdzie, lub jeśli sygnatura w BIOS-ie nie zostanie rozpoznana, karta nie zostanie zidentyfikowana. W takich przypadkach musisz użyć argumentu startowego w formie: ______________________________________________________________________ st0x=mem_base,irq ______________________________________________________________________ Wartość mem_base określa obszar adresów I/O odwzorowywany, którego używa karta. Jest to zwykle jedna z poniższych wartości: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000. 44..22..1188.. TTrraannttoorr TT112288.. ((""tt112288=="")) Te karty są także oparte na układzie NCR5280 i akceptują następujące parametry: ______________________________________________________________________ t128=mem_base,irq ______________________________________________________________________ Wartości dla mem_base to z reguły: 0xcc000, 0xc8000, 0xdc000, 0xd8000. 44..22..1199.. KKaarrttaa UUllttrraassttoorr SSCCSSII.. ((""uu1144--3344ff=="")) Zauważ, że zdaje się, że są dwa niezależne sterowniki dla tej karty, tj. CONFIG_SCSI_U14_34F, który używa u14-34f.c i CONFIG_SCSI_ULTRASTOR, który używa ultrastor.c. u14-34f jest tym (w późnych jądrach 2.0), który przyjmuje argument startowy w formie: ______________________________________________________________________ u14-34f=iobase1[,iobase2][,iobase3]...[,iobaseN] ______________________________________________________________________ Sterownik będzie przeszukiwał adresy w podanej kolejności. 44..22..2200.. KKaarrttyy WWeesstteerrnn DDiiggiittaall WWDD77000000.. ((""wwdd77000000=="")) Sterownik dla wd7000 szuka znanego łańcucha BIOS ROM i zna kilka standardowych ustawień konfiguracji. Jeśli ustawienia te nie są poprawne albo masz nierozpoznaną wersję BIOS-u, możesz użyć argumentu startowego w formie: ______________________________________________________________________ wd7000=irq,dma,iobase ______________________________________________________________________ 44..33.. KKoonnttrroolleerryy SSCCSSII nniiee pprrzzyyjjmmuujjąąccee ppaarraammeettrróóww.. Obecnie następujące karty nie przyjmują żadnych argumentów startowych. W niektórych wypadkach możesz _n_a _s_i_ł_ę zmienić wartości, edytując kod źródłowy sterownika, jeśli już musisz. Adaptec aha1740 (próbkowanie EISA), NCR53c7xx,8xx (PCI, oba sterowniki), Qlogic Fast (0x230, 0x330), Qlogic ISP (PCI) 55.. DDyysskkii ttwwaarrddee.. Ta sekcja wymienia wszystkie argumenty startowe związane ze standardowymi dyskami twardymi takimi jak: MFM/RLL, ST-506, XT i IDE. Zauważ, że oba sterowniki IDE jak i ST-506 akceptują ten sam argument: "hd=". 55..11.. PPaarraammeettrryy ddllaa ddyysskkóóww ii CCDD--RROOMM--óóww IIDDEE.. Sterownik IDE akceptuje wiele parametrów, od określenia geometrii dysku do obsługi zaawansowanych, czy źle wykonanych układów kontrolerów. Poniżej wymienione są wszystkie możliwe argumenty startowe. Aby dowiedzieć się więcej na temat szczegółowego opisu _n_a_p_r_a_w_d_ę powinienieś zajrzeć do pliku linux/Documentation/ide.txt, z którego to streszczenie zostało wyciągnięte. ______________________________________________________________________ "hdx=" - jest rozpoznawalny przez wszystkie "x" od "a" do "h", jak np. "hdc". "idex=" - jest rozpoznawalny przez wszystkie "x" od "0" do "3", jak np. "ide1". "hdx=noprobe" - napęd może być, ale go nie szukaj, "hdx=none" - napędu nie ma, zignoruj CMOS i nie szukaj go, "hdx=nowerr" - zignoruj bit WRERR_STAT w tym napędzie, "hdx=cdrom" - napęd jest obecny i jest CD-ROM-em, "hdx=cyl,head,sect" - napęd jest obecny z podaną geometrią, "hdx=autotune" - sterownik będzie próbował ustawić prędkość interfejsu na najszybsze obsługiwane PIO jeśli jest to możliwe tylko dla tego napędu. Nie jest to obsługiwane przez wszystkie układy, i całkiem prawdopodobne, że będzie sprawiało kłopoty przy starszych/dziwnych napędach IDE. "idex=noprobe" - nie próbuj używać tego interfejsu, "idex=base" - szukaj interfejsu w podanym adresie, gdzie base to przeważnie 0x1F0 lub 0x170 a "ctl" to "base"+0x206, "idex=base,ctl" - określenie base i ctl, "idex=base,ctl,irq - określenie base, ctl i irq, "idex=autotune" - sterownik będzie próbował ustawić prędkość interfejsu na najszybsze obsługiwane PIO, dla wszystkich napędów na tym interfejsie. Nie jest to obsługiwane przez wszystkie układy, i całkiem prawdopodobne, że będzie sprawiało kłopoty przy starszych/dziwnych napędach IDE, "idex=noautotune" - sterownik nie będzie próbował ustawić prędkości interfejsu. Jest to zachowanie standardowe większości układów oprócz cmd640. "idex=serialize" - nie nakładaj operacji na idex i ide(x^1). ______________________________________________________________________ Następujące parametry są ważne TYLKO dla ide0, a wartości domyślnych dla portów base i ctl nie wolno zmieniać. ______________________________________________________________________ "ide0=dtc2278" : szukaj/obsługuj interfejs DTC2278, "ide0=ht6560b" : szukaj/obsługuj interfejs HT6560B, "ide0=cmd640_vlb" : *WYMAGANE* dla kart VLB z układem CMD640, (nie dla PCI - wykrywane automatycznie) "ide0=qd6580" : szukaj/obsługuj interfejs qd6580, "ide0=ali14xx" : szukaj/obsługuj układy ali14xx (ALI M1439/M1445), "ide0=umc8672" : szukaj/obsługuj układy umc8672, ______________________________________________________________________ Wszystko inne jest odrzucane z informacją "BAD OPTION" (czyli "zła opcja"). 55..22.. PPaarraammeettrryy ssttaannddaarrddoowweeggoo sstteerroowwnniikkaa SSTT--550066.. ((""hhdd=="")) Standardowy sterownik dysku może zaakceptować parametry dotyczące geometrii dysków podobnych do sterownika IDE. Aczkolwiek zauważ, że spodziewa się on tylko trzech wartości (C/H/S) - jedna mniej lub więcej i po cichutku cię zignoruje. Akceptuje on tylko argument "hd=", tak, że "hda=", "hdb=" itd. nie są brane pod uwagę. Format tego argumentu to: ______________________________________________________________________ hd=cyls,heads,sects ______________________________________________________________________ gdzie cyls to ilość cylindrów, heads - głowic; sects - sektorów. Jeśli są zainstalowane dwa dyski, należy powyższe powtórzyć z geometrią dysku drugiego. 55..33.. PPaarraammeettrryy sstteerroowwnniikkaa ddyysskkuu XXTT.. ((""xxdd=="")) Jeśli jesteś na tak nieszczęśliwym miejscu i używasz jednej z tych starych kart, które przenoszą dane z zabójczą prędkością dochodzącą w porywach do 125kB/s WYRZUĆ JĄ NATYCHMIAT I KUP NOWĄ !!! A poważnie. Algorytm wyszukiwania dla tych kart szuka zainstalowanego BIOS-u, a jeśli takiego nie znajdzie, lub jeśli sygnatura w BIOS-ie nie zostanie rozpoznana, karta nie zostanie zidentyfikowana. W takich przypadkach musisz użyć argumentu startowego w formie: ______________________________________________________________________ xd=type,irq,iobase,dma_chan ______________________________________________________________________ Wartość type określa konkretnego wykonawcę karty, i jest jedną z: 0=generic; 1=DTC; 2,3,4=Western Digital, 5,6,7=Seagate; 8=OMTI. Jedyną różnicą pomiędzy różnymi typami tego samego wykonawcy jest łańcuch w BIOS-ie używany do autodetekcji, który nie jest używany jeśli jest podany typ. Funkcja xd_setup() nie sprawdza wartości, i przyjmuje, że wpisałeś wszystkie cztery. Nie załamuj się. Tutaj jest przykład dla kontrolera WD1002 z wyłączonym/usuniętym BIOS-em, używającym domyślnych parametrów kontrolera XT: ______________________________________________________________________ xd=2,5,0x320,3 ______________________________________________________________________ 66.. CCDD--RROOMM--yy ((NNaappęęddyy iinnnnee nniiżż SSCCSSII//AATTAAPPII//IIDDEE)).. Ta sekcja wymienia wszystkie możliwe argumenty startowe odnoszące się do CD-ROM-ów. Zauważ, że nie zawierają się tutaj CD-ROM-y typu SCSI czy IDE/ATAPI. Przeczytaj odpowiednią sekcję dla tych CD-ROM-ów. Zauważ też, że większość z tych CD-ROM-ów ma pliki z dokumentacją, które _p_o_w_i_n_i_e_n_e_ś przeczytać. Wszystkie są w katalogu linux/Documentation/cdrom. 66..11.. IInntteerrffeejjss AAzztteecchh.. ((""aazzttccdd=="")) Składnia argumentu dla tej karty to: ______________________________________________________________________ aztcd=iobase[,magic_number] ______________________________________________________________________ Jeśli ustawisz parametr magic_number na 0x79 sterownik będzie próbował się uruchomić i uruchomi się w przypadku nieznanego typu urządzenia firmowego. Wszystkie inne wartości są ignorowane. 66..22.. IInntteerrffeejjss SSoonnyy CCDDUU--3311AA ii CCDDUU--3333AA.. ((""ccdduu3311aa=="")) Ten interfejs CD-ROM-u znajduje się na niektórych kartach dźwiękowych Pro Audio Spectrum i innych kartach obsługujących interfejs Sony. Składnia tego argumentu to: ______________________________________________________________________ cdu31a=iobase,[irq[,is_pas_card]] ______________________________________________________________________ Podając wartość IRQ = 0 informujesz sterownik, że przerwania sprzętowe nie są obsługiwane (jak na niektórych kartach PAS). Jeśli twoja karta obsługuje przerwania, powinieneś ich użyć ponieważ zmniejszają użycie procesora na karcie. Jeśli używasz karty Pro Audio Spectrum podaj parametr "is_pas_card" jako PAS, a jeśli nie to nie powinieneś go wcale podawać. 66..33.. IInntteerrffeejjss SSoonnyy CCDDUU--553355.. ((""ssoonnyyccdd553355=="")) Składnia argumentu dla tego interfejsu to: ______________________________________________________________________ sonycd535=iobase[,irq] ______________________________________________________________________ Zero może być użyte dla wartości iobase jako "znak zajmujący miejsce" (bez żadnego znaczenia dla sterownika) jeśli ktoś chce podać wartość IRQ. 66..44.. IInntteerrffeejjss GGoollddSSttaarr.. ((""ggssccdd=="")) Składnia argumentu dla tego interfejsu to: ______________________________________________________________________ gscd=iobase ______________________________________________________________________ gdzie iobase jest adresem I/O. 66..55.. IInntteerrffeejjss IISSPP1166.. ((""iisspp1166=="")) Składnia argumentu dla tego interfejsu to: ______________________________________________________________________ isp16=[port[,irq[,dma]]][[,]drive_type] ______________________________________________________________________ Podając 0 dla IRQ lub DMA informujesz sterownik, że nie będą one używane. Wartość parametru drive_type to jedna z: noisp16, Sanyo, Panasonic, Sony i Mitsumi. Podanie wartości noisp16 wyłączy sterownik zupełnie. 66..66.. IInntteerrffeejjss MMiittssuummii SSttaannddaarrdd.. ((""mmccdd=="")) Składnia argumentu dla tego interfejsu to: ______________________________________________________________________ mcd=iobase,[irq[,wait_value]] ______________________________________________________________________ Wartość wait_value jest używana jako wewnętrzna wartość timeout dla tych, którzy mają problemy ze swoimi napędami i może, ale nie musi być zaimplementowana. Zależy to od definicji odpowiedniego symbolu podczas kompilacji. 66..77.. IInntteerrffaaccee MMiittssuummii XXAA//MMuullttiiSSeessssiioonn.. ((""mmccddxx=="")) Obecnie ten "eksperymentalny" sterownik ma funkcję ustawiającą, ale nie przyjmuje ona jeszcze żadnych parametrów (1.3.15). (Od tłumacza: W wersji jądra 2.0.18 także nie przyjmuje.) Odnosi się on do tego samego sprzętu co powyżej tyle, że ma trochę rozszerzone możliwości. 66..88.. OOppttiiccss SSttoorraaggee IInntteerrffaaccee.. ((""ooppttccdd=="")) Składnia argumentu dla tej karty to: ______________________________________________________________________ optcd=iobase ______________________________________________________________________ 66..99.. IInntteerrffeejjss PPhhiilliippss CCMM220066.. ((""ccmm220066=="")) Składnia argumentu dla tej karty to: ______________________________________________________________________ cm206=[iobase][,irq] ______________________________________________________________________ Sterownik zakłada, że liczby między 3 a 11 to numery przerwań IRQ, a liczby pomiędzy 0x300 a 0x370 to porty I/O, tak więc możesz podać jeden lub oba argumenty w jakimkolwiek porządku. Można także podać cm206=auto, aby sterownik sam znalazł kartę. 66..1100.. IInntteerrffeejjss SSaannyyoo.. ((""ssjjccdd=="")) Składania argumentu dla tej karty to: ______________________________________________________________________ sjcd=iobase[,irq[,dma_channel]] ______________________________________________________________________ 66..1111.. IInntteerrffeejjss SSoouunnddBBllaasstteerr PPrroo.. ((""ssbbppccdd=="")) Składnia argumentu dla tej karty to: ______________________________________________________________________ sbpcd=iobase,type ______________________________________________________________________ gdzie type jest jednym z łańcuchów: SounBlaster, LaserMate lub SPEA. (Wielkość liter jest ważna !!!). I/O base jest adresem I/O interfejsu CD-ROM-u, a _n_i_e interfejsu dźwiękowego. 77.. IInnnnee uurrzząąddzzeenniiaa.. Wszelkie urządzenia, które nie zaliczają się do wyżej wymienionych zostały wrzucone tutaj. 77..11.. UUrrzząąddzzeenniiaa EEtthheerrnneett.. ((""eetthheerr=="")) Różne sterowniki przyjmują różne parametry, ale wszystkie przyjmują przynajmniej nazwę, IRQ oraz adres I/O. W najbardziej ogólnej postaci wyglądą to mniej więcej tak: ______________________________________________________________________ ether=irq,iobase[,param_1[,param_2,...param_8]]],name ______________________________________________________________________ Pierwszy argument, który nie jest liczbą uznawany jest za nazwę. Wartości param_n zwykle mają różne znaczenie dla każdej karty czy sterownika. Typowe wartości to adres pamięci dzielonej, określenie interfejsu, kanały DMA itp. Najpopularniejszym użyciem tego parametru jest wymuszenie szukania drugiej karty Ethernet ponieważ domyślnie szuka się tylko jednej. Tak wyglądałby przykład: ______________________________________________________________________ ether=0,0,eth1 ______________________________________________________________________ Zauważ, że wartości 0 przy IRQ i adresie I/O w powyższym przykładzie informują sterownik, aby sam ich poszukał. WAŻNA UWAGA DLA UŻYTKOWNIKÓW MODUŁÓW: Powyższe _n_i_e wymusi poszukiwania drugiej karty jeśli używasz sterownik-a/ów jako moduł (zamiast wkompilować je w jądro). Większość dystrybucji Linux-owych jest zbudowana na bazie małego statycznego jądra i dużej ilości ładowalnych modułów. Parametr ether= odnosi się tylko do sterowników wkompilowanych w jądro. Zauważ też, że Ethernet-HowTo ma pełną dokumentację na temat używania większej ilości kart i na temat parametrów dla konkretnych kart. Zainteresowani powinni zajrzeć do tamtego dokumentu, aby dowiedzieć się szczegółów na temat swojej karty. 77..22.. SStteerroowwnniikk ddoo ddyysskkiieetteekk.. ((""ffllooppppyy=="")) Jest wiele parametrów do tego sterownika i wszystkie są wymienione w pliku /linux/drivers/block/README.fd. Następująca informacja została zaczerpnięta bezpośrednio stamtąd. ______________________________________________________________________ floppy=mask,allowed_drive_mask ______________________________________________________________________ Ustawia maskę bitów dopuszczonych napędów na mask. Domyślnie są to kanały 0 i 1 każdego kontrolera. Jest tak, ponieważ pewne niestandardowe urządzenia (płyty główne ASUS PCI) zmieniają układ znaków na klawiaturze kiedy próbują dostać się do kanału 2 czy 3. Ten parametr jest trochę przestarzały z powodu opcji CMOS-u. ______________________________________________________________________ floppy=all_drives ______________________________________________________________________ Ustawia maskę bitów dopuszczonych napędów na wszystkie napędy. Użyj tego jeśli masz więcej niż dwa napędy podłączone do kontrolera dyskietek. ______________________________________________________________________ floppy=asus_pci ______________________________________________________________________ Ustawia maskę bitów, aby dopuścić tylko kanały 0 i 1. (Wartość domyślna) ______________________________________________________________________ floppy=daring ______________________________________________________________________ Informuje sterownik, że masz "dobrze zachowujący się" kontroler do dyskietek. Pozwala to na bardziej wydajną i płynniejszą pracę, ale może się nie udać przy niektórych kontrolerach. Może to przyspieszyć pewne operacje. ______________________________________________________________________ floppy=0,daring ______________________________________________________________________ Informuje sterownik, aby używać kontrolera ostrożnie. ______________________________________________________________________ floppy=one_fdc ______________________________________________________________________ Informuje sterownik, że masz tylko jeden kontroler. (wartość domyślna) ______________________________________________________________________ floppy=two_fdc lub floppy=address,two_fdc ______________________________________________________________________ Informuje sterownik, że masz dwa kontrolery do dyskietek. Drugi sterownik znajduje się pod adresem address. Jeśli adres ten nie jest podany - przyjmuje się wartość domyślną, tj. 0x370. ______________________________________________________________________ floppy=thinkpad ______________________________________________________________________ Informuje sterownik, że masz kontroler Thinkpad, który używa odwrotnego oznaczenia linii zmiany dyskietek. ______________________________________________________________________ floppy=0,thinkpad ______________________________________________________________________ Informuje sterownik, że nie masz kontrolera Thinkpad. ______________________________________________________________________ floppy=drive,type,cmos ______________________________________________________________________ Ustawia typ CMOS-u napędu drive na type. Dodatkowo, napęd ten jest dopuszczony w masce bitów. Jest to przydatne jeśli masz więcej niż dwa napędy (w fizycznym cmos-ie można opisać tylko dwa), lub jeśli twój BIOS używa niestandardowych typów CMOS-u. Ustawienie CMOS-u na 0 dla pierwszych dwóch napędów (domyślnie) zmusza sterownik do czytania fizycznego CMOS-u dla tych napędów. ______________________________________________________________________ floppy=unexpected_interrupts ______________________________________________________________________ Wyświetl informację ostrzegającą jeśli odebrano niespodziewane przerwanie. (zachowanie domyślne) ______________________________________________________________________ floppy=no_unexpected_interrupts lub floppy=L40SX ______________________________________________________________________ Nie wyświetlaj informacji ostrzegającej kiedy odebrano niespodziewane przerwanie. Jest to potrzebne na niektórych laptopach IBM L40SX w pewnych trybach wyświetlania. (Wygląda na to, że jest jakaś interakcja pomiędzy grafiką a dyskietkami. Niespodziewane przerwania dotyczą wydajności i mogą być spokojnie ignorowane.) 77..33.. SStteerroowwnniikk ddoo ddźźwwiięękkuu.. ((""ssoouunndd=="")) Sterownik dźwięku może także przyjmować parametry, które zmieniają wartości zapisane podczas kompilacji. Nie jest to zalecane ponieważ jest to operacja skomplikowana. Jest (Była?) ona opisana w pliku linux/drivers/sound/Readme.Linux. Forma argumentu startowego dla sterownika dźwięku to: ______________________________________________________________________ sound=urz1[,urz2[,urz3...[,urz11]]] ______________________________________________________________________ gdzie każda wartość urzN ma postać 0xTaaaID. Symbole oznaczają w tym formacie: T - typ urządzenia: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401, aaa - adres I/O szesnastkowo, I - numer IRQ szesnastkowo (tj, 10=a, 11=b, ...), D - kanał DMA. Jak widzisz jest tu trochę bałaganu. Także lepiej wkompiluj swoje własne wartości w sterowniku. Podanie sound=0 spowoduje wyłączenie sterownika dźwięku zupełnie. 77..44.. SStteerroowwnniikk ddoo mmyysszzyy BBuuss.. ((""bbmmoouussee=="")) Ten sterownik przyjmuje tylko jeden parametr: jest to wartość IRQ. 77..55.. SStteerroowwnniikk ddoo mmyysszzyy MMSS BBuuss.. ((""mmssmmoouussee=="")) Ten sterownik przyjmuje tylko jeden parametr: jest to wartość IRQ. 77..66.. SStteerroowwnniikk ddoo ddrruukkaarrkkii,, ((""llpp=="")) Co do jąder w wersji większej niż 1.3.75, możesz przekazać sterownikowi jakich portów używać a jakich _n_i_e używać. To drugie jest przydatne jeśli nie chcesz, żeby sterownik zajął wszystkie dostępne porty, aby inne sterowniki (np.: PLIP, PPA) mogły ich używać. Forma tego argumentu to pary adres_I/O,IRQ. Na przykład takie wywołanie lp=0x3BC,0,0x378,7 spowoduje użycie portu o adresie 0x3BC w trybie bezprzerwaniowym, i przerwania 7 dla portu o adresie 0x378. Port o adresie 0x278 (jeśli taki by był) nie byłby przeszukiwany, ponieważ automatyczne przeszukiwanie ma miejsce tylko jeśli nie podano argumentu "lp". Aby wyłączyć sterownik od drukarki należy podać lp=0. 77..77.. SStteerroowwnniikk ddoo IICCNN IISSDDNN.. ((""iiccnn=="")) Argument startowy dla tego sterownika to: ______________________________________________________________________ icn=iobase,membase,icn_id1,icn_id2 ______________________________________________________________________ gdzie iobase jest adresem portu I/O karty, membase jest adresem pamięci dzielonej karty, a dwa ostatnie parametry są unikalnymi łańcuchami identyfikującymi. 77..88.. SStteerroowwnniikk ddoo PPCCBBIITT IISSDDNN.. ((""ppccbbiitt=="")) Argument ten przyjmuje pary liczb w postaci: ______________________________________________________________________ pcbit=membase1,irq1[,membase2,irq2] ______________________________________________________________________ gdzie membaseN jest adresem pamięci dzielonej N-tej karty, a irqN jest numerem przerwania N-tej karty. Wartościami domyślnymi są: IRQ = 5, membase = 0xD0000. 77..99.. SStteerroowwnniikk ddoo TTeelleess IISSDDNN.. ((""tteelleess=="")) Argument dla tego sterownika ma postać: ______________________________________________________________________ teles=iobase,irq,membase,protocol,teles_id ______________________________________________________________________ gdzie iobase jest adresem portu I/O karty, membase jest adresem pamięci dzielonej karty, irq jest kanałem przerwania używanym przez kartę, a teles_id jest unikalnym łańcuchem identyfikującym. 77..1100.. SStteerroowwnniikk ddoo DDiiggiiBBooaarrdd.. ((""ddiiggii"")) Sterownik ten przyjmuje łańcuch sześciu oddzielonych przecinkiem identyfikatorów lub liczb. Te sześć wartości to odpowiednio: Włącz/wyłącz kartę. (E/D) Typ karty: PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3) Włącz/wyłącz dodatkowe ustawienie zworkami. (E/D) Ilość portów na tej karcie. Adresy portów I/O tej karty (szesnastkowo jeśli używasz identyfikatorów łańcuchowych) Podstawa okna pamięci (szesnastkowo jeśli używasz identyfikatorów łańcuchowych). Oto poprawny przykład użycia tego argumentu (w obu formach: z łańcuchami i liczbami): ______________________________________________________________________ digi=E,PC/Xi,D,16,200,D0000 digi=1,0,0,16,512,851968 ______________________________________________________________________ Wartościami domyślnymi są: adres I/O - 0x200, adres pamięci dzielonej - 0xD0000. W przypadku tego sterownika nie jest dokonywane automatyczne wyszukiwanie urządzenia. Więcej szczegółów znajdziesz w pliku linux/Documentation/digiboard.txt. 77..1111.. SStteerroowwnniikk wwiieellooppoorrttoowweejj kkaarrttyy sszzeerreeggoowweejj RRIISSCCoomm//88.. ((""rriissccoomm88=="")) Jądro może obsłużyć do czterech kart podając cztery unikalne wartości dla portów I/O dla każdej indywidualnej karty. Dalsze szczegóły znajdziesz w pliku linux/Documentation/riscom8.txt. 77..1122.. BBaayyccoomm SSeerriiaall//PPaarraalleellll RRaaddiioo MMooddeemm.. ((""bbaayyccoomm=="")) Argument dla tego sterownika ma postać: ______________________________________________________________________ baycom=modem,io,irq,opcje[,modem,io,irq,opcje] ______________________________________________________________________ Podając modem=1 informujesz, że masz urządzenie ser12, modem=2 - urządzenie par96. Opcje=0 oznacza sprzęt DCD, opcje=1 - oprogramowanie DCD. I/O i IRQ są jak zwykle: adresem portów I/O i numerem IRQ. Więcej szczegółów na temat tego sterownika znajdziesz w pliku /linux/drivers/char/README.baycom. 88.. ZZaakkoońńcczzeenniiee.. Jeśli znalazłeś jakieś przestarzałe informacje, to napisz do autora tego dokumentu: gpg109@rsphy1.anu.edu.au 99.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl/pub/Linux/JTZ/ Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany wprowadzone przez tłumacza w tym dokumencie to odnośniki do polskich serwerów ftp i WWW. �����������������������doc-linux-pl-2002.06.14.orig/Bzip2-HOWTO.pl.txt�����������������������������������������������������0100664�0001750�0001750�00000055342�06717116340�017446� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Bzip2 Howto David Fetter dfetter@best.com <mailto:dfetter@best.com> v1.92 18 sierpnia 1998 WWeerrssjjaa ppoollsskkaa:: KKrrzzyysszzttooff PP.. JJaassiiuuttoowwiicczz kkppjjaass@@pprriivv..oonneett..ppll v0.99, 28 sierpnia 1998 Ten tekst wyjaśnia jak używać programu do kompresji bzip2. Lokalna wersja tego tekstu w sgml-u jest dostępna tu tu <Bzip2-HOWTO.sgml>, a "autor-ytatywna" pod tym adresem tu <http://www.best.com/~dfet­ ter/Bzip2-HOWTO/Bzip2-HOWTO.sgml>. Dokument ten został napisany w standardzie ISO-8859-2. ______________________________________________________________________ Table of Contents: 1. Wstęp 1.1. Revision History 1.1.1. v1.92 1.1.2. v1.91 1.1.3. v1.9 1.1.4. v1.8 1.1.5. v1.7 1.1.6. v1.6 1.1.7. v1.5 1.1.8. v1.4 1.1.9. v1.3 1.1.10. v1.2 1.1.11. v1.1 1.1.12. v1.0 2. Jak zdobyć bzip2 2.1. Bzip2-HOWTO w twoim języku 2.2. Jak zdobyć prekompilowane binaria bzip2-a 2.3. Jak zdobyć źródła bzip2-a 2.4. Kompilacja bzip2-a dla twojej maszyny 3. Używanie bzip2 4. Używanie bzip2 z tar-em 4.1. Najłatwiejsza do zrobienia: 4.2. Łatwa do zrobienia, dość łatwa w użyciu, nie trzba mieć uprawnień root-a: 4.3. Też łatwa do zrobienia, ale wymaga dostępu jako root. 5. Używanie bzip2 z less-em 6. Używanie bzip2 z emacs-em 6.1. Zmaina emacs-a dla wszystkich: 6.2. Zmiana emacs-a dla pojedyńczego użytkownika: 7. Używanie bzip2-a z wu-ftpd 8. Użycie bzip2 z grep-em 9. Używanie bzip2-a z Netscape-m pod X-ami. 10. Użycie bzip2-a do rekompresji plików skompresowanych w innych formatach ______________________________________________________________________ 11.. WWssttęępp Bzip2 to superowy nowy algorytm kompresji danych. Ogólnie rzecz biorąc tworzy pliki, które są 60-70% mniejsze od takich samych plików spakowanych gzip-em. Ten dokument opisze kilka typowych zastosowań bzip2-a. Przyszłe wersje tego dokumentu będą dotyczyły planowanej bzip2 library którą autor bzip2-a, Julian Seward <mailto:Julian_Seward@muraroa.demon.co.uk> opisuje następująco: Pracuję nad następną wersją bzip2-a, która będzie używać tego samego formatu pliku .bz2; główną nowością będzie biblioteka podobna do zlib służąca do odczytywania i zapisu danych w tym formacie z poziomu programu. Przyszłe wersje tego dokumentu mogą także zawierać podsumowanie dyskusji nad tym czy (i jak) bzip2 powinno być zastosowane w jądrze Linux-a. 11..11.. RReevviissiioonn HHiissttoorryy 11..11..11.. vv11..9922 Zaktualizowałem rozdział ``Pobieranie binariów bzip2'', dodałem S.u.S.E. 11..11..22.. vv11..9911 Poprawiłem błąd w pisowni i poprawiłem kilka idiomów shell-a w ``rozdziale o używaniu bzip2-a z tar-em''. Podziękowania dla Alessandro Rubini za nie. Poprawiłem aby narzędzie buzzit nie to stomp oryginalnego archiwum bzip2-a. Dodałem bgrep, narzędzie podobne do zgrep-a. 11..11..33.. vv11..99 Poprawiłem problem z gcc 2.7.*. Podziękowanie dla Ulrika Dickow-a za wskazanie go. Dodałem elegancki sposób Leonard-a Jean-Marc-a posługiwania się tar- em. Dodałem szwedzkie tłumaczenie Linus-a Ăkerlund-a. Poprawiłem rozdział o wu-ftpd np. sugestii Arnaud Launay-a. Przeniosłem tłumaczenia ich odpowiednich rozdziałów. 11..11..44.. vv11..88 Wstawiłem buzzit i tar.diff do sgml-a tam gdzie ich miejsceg. Poprawiłem interpunkcję i formatowanie. Podziękowania dla Arnaud Launay za jego pomoc w poprawianiu mojej własnej wersji. :-) Porzuciłem xv project na razie z powodu braku większego zainteresowania. Wspomniałem o tipsach w przyszłych wersjach tego dokumentu. 11..11..55.. vv11..77 Dodałem aplikację buzzit. Poprawiłem patch do nałożenia na gnu tar. 11..11..66.. vv11..66 Dodałem tip TenThumbs-a dot. Netscape. Także zmieniłem lesspipe.sh dzięki jego sugestii. Powinien teraz lepiej działać. 11..11..77.. vv11..55 Dodałem francuskie tłumaczenie Arnaud Launay-a, i jego plik wu-ftpd. 11..11..88.. vv11..44 Dodałem japońskie tłumaczenie Tetsu Isaji-ego. 11..11..99.. vv11..33 Dodałem plik Ulrik Dickow-a .emacs do emacs-a 19.30 lub wyższej wersji. (także poprawiłem patch jka-compr.el do emacs-a dzięki jego sugestii. Ojej! Bzip2 nie ma jeszcze(?) flagi "append".) 11..11..1100.. vv11..22 Zmienilem patch do emacs-a aby automagicznie rozpoznawał pliki .bz2. 11..11..1111.. vv11..11 Dodałem patch dla emacs-a. 11..11..1122.. vv11..00 Runda 1. 22.. JJaakk zzddoobbyyćć bbzziipp22 Home page Bzip2-a znajduje się na Home site w Wielkiej Brytanii <http://www.muraroa.demon.co.uk/>. Mirror site w U.S.A jest tu <http://www.digistar.com/bzip2/index.html>. Można też znaleźć go na site-cie FTP Red Hat-a tu <ftp://ftp.redhat.com/pub/contrib>. 22..11.. BBzziipp22--HHOOWWTTOO ww ttwwooiimm jjęęzzyykkuu Osoby posługujące się językiem francuskim mogą skierować się do francuskich dokumentów Arnaud Launay-a. Wersja WWW jest tu <http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html>, a ftp można użyć tu <ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz> Z Arnaud można skontaktować się pocztą elektroniczną pod tym adresem <mailto:zoro@mygale.org> Osoby posługujące się językiem japońskim mogą skierować się do japońskich dokumentów Tetsu Isaji tu <http://jf.gee.kyoto- u.ac.jp/JF/JF.html>. Z Isaji można skotaktować się na jego stronie WWW <http://www2s.biglobe.ne.jp/~kaien/>, lub pocztą elektroniczną pod tym adresem. <mailto:isaji@mxu.meshnet.or.jp> Osoby posługujące się językiem szwedzkim mogą skierować się do szwedzkich Linus-a Ăkerlund-a tu <http://user.tninet.se/~uxm165t/linux_doc.html>. Z Linus-em można się skontaktować pocztą elektroniczną pod tym adresem. <mailto:uxm165t@tninet.se> 22..22.. JJaakk zzddoobbyyćć pprreekkoommppiilloowwaannee bbiinnaarriiaa bbzziipp22--aa Zobacz Home site-y. Binarium Debian Intel jest tu <ftp://ftp.debian.org/debian/dists/stable/main/binary- i386/utils/bzip2_0.1pl2-5.deb>. Binarium alpha Red Hat-a jest tu <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/alpha/RedHat/RPMS/bzip2-0.1pl2-1.alpha.rpm>. Binarium Intel Red Hat-a jest tu <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/i386/RedHat/RPMS/bzip2-0.1pl2-1.i386.rpm>. Binarium SPARC Red Hat-a jest tu <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/sparc/RedHat/RPMS/bzip2-0.1pl2-1.sparc.rpm>. Binarium Intel Slackware jest tu <ftp://www.cdrom.com/pub/linux/slackware-3.5/slakware/a1/bzip2.tgz>. Binarium Intel S.u.S.E jest tu <ftp://ftp.suse.com/pub/SuSE- Linux/5.2/suse/ap1/bzip.rpm>. Wyżej wymienione są także dostępne w analogicznuch miejscach różnych lustrzanych site-ów. 22..33.. JJaakk zzddoobbyyćć źźrróóddłłaa bbzziipp22--aa Znajdują się na oficjalnych site-ach (zobacz w ``Jak zdobyć Bzip2'' gdzie, albo Red Hat ma je tu <ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm>). 22..44.. KKoommppiillaaccjjaa bbzziipp22--aa ddllaa ttwwoojjeejj mmaasszzyynnyy JJeeśśllii mmaasszz ggcccc 22..77..**, zmień linijkę która brzmi CFLAGS = -O3 -fomit-frame-pointer -funroll-loops na CFLAGS = -O2 -fomit-frame-pointer to jest, zamień -O3 na -O2 i pomiń -funroll-loops. You may also wish to add any -m* flags (like -m486, for example) you use when compiling kernels. Usunięcie -funroll-loops jest najistotniejszą częścią, ponieważ może to spowodować wiele gcc 2.7-ów będzie generowało nieprawidłowy kod, a wszystkie gcc 2.7-y będą większy i wolniejszy kod wynikowy. Dla innych kompilatorów (lcc, egcs, gcc 2.8.x) standartowe CFLAGS są w porządku. Potem, po prostu make i zainstaluj wg README. 33.. UUżżyywwaanniiee bbzziipp22 Przeczytaj Wspanaiałą Stronę Podręcznika Systemowego :) 44.. UUżżyywwaanniiee bbzziipp22 zz ttaarr--eemm Poniżej są opisane trzy metody używania bzip2 z tar-em, a mianowicie 44..11.. NNaajjłłaattwwiieejjsszzaa ddoo zzrroobbiieenniiaa:: Ta metoda nie wyamga wcale żadnych zmian. Aby od-tar-ować bzip2-owane archiwum tar-owe, foo.tar.bz2 w aktualnym katalogu, wykonaj /path/to/bzip2 -cd foo.tar.bz2 | tar xf - To działa, ale może być wnerwiające jeśli wypisuje się to zbyt często. 44..22.. ŁŁaattwwaa ddoo zzrroobbiieenniiaa,, ddoośśćć łłaattwwaa ww uużżyycciiuu,, nniiee ttrrzzbbaa mmiieećć uupprraawwnniieeńń rroooott--aa:: Dzięki dla Leonard Jean-Marc <mailto:leonard@sct1.is.belgacom.be> za ten tip. Dzięki także dla Alessandro Rubini <mailto:rubini@morgana.systemy.it> za wprawadzenie różnic specyficznych dla csh. W swoim .bashrc, możesz wstawić taką linijkę : alias btar='tar --use-compress-program /usr/local/bin/bzip2 ' W .tcshrc, lub .cshrc, analogiczna linijka wygląda tak: alias btar 'tar --use-compress-program /usr/local/bin/bzip2' 44..33.. TTeeżż łłaattwwaa ddoo zzrroobbiieenniiaa,, aallee wwyymmaaggaa ddoossttęęppuu jjaakkoo rroooott.. Nałóż poniższy patch na gnu tar 1.12 w następujący sposób: cd tar-1.12/src; patch < /path/to/tar.diff skompiluj go, i zainstaluj go, i wszystko już gotowe do działania. Upewnij się ze zarówno tar jak i bzip2 są w twojej $PATH poprzez "which tar" i "which bzip2." Aby użyć nowego tar-a, po prostu zrób tar xyf foo.tar.bz2 aby zdekompresować plik. Aby utworzyć nowe archiwum, podobnie zrób: tar cyf foo.tar.bz2 file1 file2 file3...directory1 directory2... A oto patch: *** tar.c Thu Jun 11 00:09:23 1998 --- tar.c.new Thu Jun 11 00:14:24 1998 *************** *** 196,201 **** --- 196,203 ---- {"block-number", no_argument, NULL, 'R'}, {"block-size", required_argument, NULL, OBSOLETE_BLOCKING_FACTOR}, {"blocking-factor", required_argument, NULL, 'b'}, + {"bzip2", required_argument, NULL, 'y'}, + {"bunzip2", required_argument, NULL, 'y'}, {"catenate", no_argument, NULL, 'A'}, {"checkpoint", no_argument, &checkpoint_option, 1}, {"compare", no_argument, NULL, 'd'}, *************** *** 372,377 **** --- 374,380 ---- PATTERN at list/extract time, a globbing PATTERN\n\ -o, --old-archive, --portability write a V7 format archive\n\ --posix write a POSIX conformant archive\n\ + -y, --bzip2, --bunzip2 filter the archive through bzip2\n\ -z, --gzip, --ungzip filter the archive through gzip\n\ -Z, --compress, --uncompress filter the archive through compress\n\ --use-compress-program=PROG filter through PROG (must accept -d)\n"), *************** *** 448,454 **** Y per-block gzip compression */ #define OPTION_STRING \ ! "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxz" static void set_subcommand_option (enum subcommand subcommand) --- 451,457 ---- Y per-block gzip compression */ #define OPTION_STRING \ ! "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxyz" static void set_subcommand_option (enum subcommand subcommand) *************** *** 805,810 **** --- 808,817 ---- case 'X': exclude_option = 1; add_exclude_file (optarg); + break; + + case 'y': + set_use_compress_program_option ("bzip2"); break; case 'z': 55.. UUżżyywwaanniiee bbzziipp22 zz lleessss--eemm Aby dekompresować pliki bzip2 w locie, tj. aby móc używać less-a do czytania ich bez wcześniejszego bunzip2-owania ich, należy zrobić lesspipe.sh (man less) w ten sposób: #!/bin/sh # To jest preprocessor dla 'less-a'. Jest on używany, gdy ta zmienna # środowiskowa jest ustawiona: LESSOPEN="|lesspipe.sh %s" case "$1" in *.tar) tar tvvf $1 2>/dev/null ;; # Oglądaj zawartość różnych plików tar-owych *.tgz) tar tzvvf $1 2>/dev/null ;; # Działa dla niezmodyfikowanej wersji tar-a *.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tzvvf - ;; # Działa z spatchowaną wersją tar-a # *.tar.bz2) tyvvf $1 2>/dev/null ;; *.tar.gz) tar tzvvf $1 2>/dev/null ;; *.tar.Z) tar tzvvf $1 2>/dev/null ;; *.tar.z) tar tzvvf $1 2>/dev/null ;; *.bz2) bzip2 -dc $1 2>/dev/null ;; # Oglądaj spakowane pliki *.Z) gzip -dc $1 2>/dev/null ;; *.z) gzip -dc $1 2>/dev/null ;; *.gz) gzip -dc $1 2>/dev/null ;; *.zip) unzip -l $1 2>/dev/null ;; *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1` ; # groff src FILE=`echo $FILE | cut -d ' ' -f 2` if [ "$FILE" = "troff" ]; then groff -s -p -t -e -Tascii -mandoc $1 fi ;; *) cat $1 2>/dev/null ;; # *) FILE=`file -L $1` ; # Check to see if binary, if so -- view with 'strings' # FILE1=`echo $FILE | cut -d ' ' -f 2` # FILE2=`echo $FILE | cut -d ' ' -f 3` # if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \ # -o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then # strings $1 # fi ;; esac 66.. UUżżyywwaanniiee bbzziipp22 zz eemmaaccss--eemm 66..11.. ZZmmaaiinnaa eemmaaccss--aa ddllaa wwsszzyyssttkkiicchh:: Napisalem ten patch do jka-compr.el który dodaje bzip2 do auto- compression-mode. DDiissccllaaiimmeerr:: Spawdziłem go tylko z emacs-20.2, ale nie mam powodów by sądzić, że podobne postępowanie nie będzie działać z innymi wersjami. By go użyć, 1. Przejdź do katalogu źródłowego emacs-20.2/lisp (tam gdzie go roztarowałeś) 2. Wstaw ten patch do pliku jka-compr.el.diff ( powinien być sam w tym pliku ;). 3. Wykonaj patch < jka-compr.el.diff 4. Wystartuj emacs-a, i wykonaj M-x byte-compile-file jka-compr.el 5. Wyjdź z emacs-a. 6. Przenieś pierwotny jka-compr.elc w bezpieczne miejsce gdyby były bug-i. 7. Zastąp go new jka-compr.elc. 8. Baw się dobrze! --- jka-compr.el Sat Jul 26 17:02:39 1997 +++ jka-compr.el.new Thu Feb 5 17:44:35 1998 @@ -44,7 +44,7 @@ ;; The variable, jka-compr-compression-info-list can be used to ;; customize jka-compr to work with other compression programs. ;; The default value of this variable allows jka-compr to work with -;; Unix compress and gzip. +;; Unix compress and gzip. David Fetter dodał bzip2 support :) ;; ;; If you are concerned about the stderr output of gzip and other ;; compression/decompression programs showing up in your buffers, you @@ -121,7 +121,9 @@ ;;; I have this defined so that .Z files are assumed to be in unix -;;; compress format; and .gz files, in gzip format. +;;; compress format; and .gz files, in gzip format, and .bz2 files, +;;; in the snappy new bzip2 format from http://www.muraroa.demon.co.uk. +;;; Keep up the good work, people! (defcustom jka-compr-compression-info-list ;;[regexp ;; compr-message compr-prog compr-args @@ -131,6 +133,10 @@ "compressing" "compress" ("-c") "uncompressing" "uncompress" ("-c") nil t] + ["\\.bz2\\'" + "bzip2ing" "bzip2" ("") + "bunzip2ing" "bzip2" ("-d") + nil t] ["\\.tgz\\'" "zipping" "gzip" ("-c" "-q") "unzipping" "gzip" ("-c" "-q" "-d") 66..22.. ZZmmiiaannaa eemmaaccss--aa ddllaa ppoojjeeddyyńńcczzeeggoo uużżyyttkkoowwnniikkaa:: Podziękowania za to mależą się Ulrik-owi Dickow-owi, ukd@kampsax.dk <mailto:ukdATkampsax.dk>, programiście systemowemu w Kampsax Technology: Aby móc używać bzip2 automatycznie gdy nie jesteś sysadmin-em, po prostu dodaj co następuje do swojego pliku .emacs. ;; Automatic (un)compression on loading/saving files (gzip(1) and similar) ;; We start it in the off state, so that bzip2(1) support can be added. ;; Code thrown together by Ulrik Dickow for ~/.emacs with Emacs 19.34. ;; Should work with many older and newer Emacsen too. No warranty though. ;; (if (fboundp 'auto-compression-mode) ; Emacs 19.30+ (auto-compression-mode 0) (require 'jka-compr) (toggle-auto-compression 0)) ;; Now add bzip2 support and turn auto compression back on. (add-to-list 'jka-compr-compression-info-list ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'" "zipping" "bzip2" () "unzipping" "bzip2" ("-d") nil t]) (toggle-auto-compression 1 t) 77.. UUżżyywwaanniiee bbzziipp22--aa zz wwuu--ffttppdd Podziękowania dla Arnaud Launay za tego oszczędzacza bandwidth-u. To co następuje powinno się znaleźć w /etc/ftpconversions aby wykonywać kompresję i dekompresję on-the-fly za pomocą bzip2. Upewnij się, że ścieżki takie jak (like /bin/compress) są poprawne. :.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS : : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS :.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP : : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP :.bz2: : :/bin/bzip2 -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:BUNZIP2 : : :.bz2:/bin/bzip2 -9 -c %s:T_REG:O_COMPRESS:BZIP2 : : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR : : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS : : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP : : :.tar.bz2:/bin/tar -c -y -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+BZIP2 88.. UUżżyycciiee bbzziipp22 zz ggrreepp--eemm Ten użytek, który nazwałem bgrep, jest niewielką modyfikacją zgrep który jest dostarczany z Linux-em. Można go używać do grep-owania plików bez bunzip2-owania ich najpierw. #!/bin/sh # bgrep -- a wrapper around a grep program that decompresses files as needed PATH="/usr/bin:$PATH"; export PATH prog=`echo $0 | sed 's|.*/||'` case "$prog" in *egrep) grep=${EGREP-egrep} ;; *fgrep) grep=${FGREP-fgrep} ;; *) grep=${GREP-grep} ;; esac pat="" while test $# -ne 0; do case "$1" in -e | -f) opt="$opt $1"; shift; pat="$1" if test "$grep" = grep; then # grep is buggy with -e on SVR4 grep=egrep fi;; -*) opt="$opt $1";; *) if test -z "$pat"; then pat="$1" else break; fi;; esac shift done if test -z "$pat"; then echo "grep through bzip2 files" echo "usage: $prog [grep_options] pattern [files]" exit 1 fi list=0 silent=0 op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'` case "$op" in *l*) list=1 esac case "$op" in *h*) silent=1 esac if test $# -eq 0; then bzip2 -cd | $grep $opt "$pat" exit $? fi res=0 for i do if test $list -eq 1; then bzip2 -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i r=$? elif test $# -eq 1 -o $silent -eq 1; then bzip2 -cd "$i" | $grep $opt "$pat" r=$? else bzip2 -cd "$i" | $grep $opt "$pat" | sed "s|^|${i}:|" r=$? fi test "$r" -ne 0 && res="$r" done exit $res 99.. UUżżyywwaanniiee bbzziipp22--aa zz NNeettssccaappee--mm ppoodd XX--aammii.. tenthumbs@cybernex.net pisze: Znalazłem sposób aby spowodować żeby Linux-owy Netscape używał bzip2-a do Content-Encoding tak jak używa gzip-a. Dodaj to do $HOME/.Xdefaults lub $HOME/.Xresources Używam opcji -s ponieważ wolę stracić trochę z szybkości dekompresji na korzyść zużycia RAM-u. Możn pominąć tą opcję, jeśli ktoś tak chce. Netscape*encodingFilters: \ x-compress : : .Z : uncompress -c \n\ compress : : .Z : uncompress -c \n\ x-gzip : : .z,.gz : gzip -cdq \n\ gzip : : .z,.gz : gzip -cdq \n\ x-bzip2 : : .bz2 : bzip2 -ds \n 1100.. UUżżyycciiee bbzziipp22--aa ddoo rreekkoommpprreessjjii pplliikkóóww sskkoommpprreessoowwaannyycchh ww iinnnnyycchh ffoorrmmaattaacchh Ten program w perl-u pobiera plik skompresowany w innych formatach (.tar.gz, .tgz. .tar.Z, and .Z ) i przepakowuje je dla lepszej kompresji. Kod żródłowy w perl-u ma wiele porządnej dokumentacji dotyczącej tego co robi i jak to robi co robi. #!/usr/bin/perl -w ####################################################### # # # Ten program pobiera pliki skompresowane programami # # compress i gzip w aktualnym katalogu i zamienia je # # do formatu bzip2. Obsługuje rozdszerzenie .tgz w # # prawidłowy sposób, tworząc plik .tar.bz2. # # # ####################################################### $counter = 0; $saved_bytes = 0; $totals_file = '/tmp/machine_bzip2_total'; $machine_bzip2_total = 0; while(<*[Zz]>) { next if /^bzip2-0.1pl2.tar.gz$/; push @files, $_; } $total = scalar(@files); foreach (@files) { if (/tgz$/) { ($new=$_) =~ s/tgz$/tar.bz2/; } else { ($new=$_) =~ s/\.g?z$/.bz2/i; } $orig_size = (stat $_)[7]; ++$counter; print "Repacking $_ ($counter/$total)...\n"; if ((system "gzip -cd $_ |bzip2 >$new") == 0) { $new_size = (stat $new)[7]; $factor = int(100*$new_size/$orig_size+.5); $saved_bytes += $orig_size-$new_size; print "$new is about $factor% of the size of $_. :",($factor<100)?')':'(',"\n"; unlink $_; } else { print "Arrgghh! Something happened to $_: $!\n"; } } print "You've ", ($saved_bytes>=0)?"saved":"lost", " $saved_bytes bytes of storage space :", ($saved_bytes>=0)?")":"(", "\n"; unless (-e '/tmp/machine_bzip2_total') { system ('echo "0" >/tmp/machine_bzip2_total'); system ('chmod', '0666', '/tmp/machine_bzip2_total'); } chomp($machine_bzip2_total = `cat $totals_file`); open TOTAL, ">$totals_file" or die "Can't open system-wide total: $!"; $machine_bzip2_total += $saved_bytes; print TOTAL $machine_bzip2_total; close TOTAL; print "That's a machine-wide total of ",`cat $totals_file`," bytes saved.\n"; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/CD-Writing-HOWTO.pl.txt������������������������������������������������0100664�0001750�0001750�00000163451�06753376740�020404� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Jak zapisać dane na CD pod Linuksem. Autor: Winfried Trümper, winni@xpilot.org v2.7, 11 Kwietnia 1999 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v2.01, 6 Sierpnia 1999 Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem www.shop.de. ______________________________________________________________________ Spis treści 1. Wprowadzenie. 1.1 Prawa autorskie, licencja i warunki korzystania. 1.2 Zastrzeżenie. 1.3 Proponowane dokumenty do przeczytania. 1.4 Terminologia ... lasery na max ... ognia! 1.5 Obsługiwane zapisywarki. 1.6 Obsługiwane "zalety". 1.7 Listy dyskusyjne. 1.8 Najnowsza wersja. 2. Konfiguracja Linuksa do nagrywania płyt. 2.1 Konfiguracja jądra Linuksa. 2.1.1 Specjalne uwagi dla serii 2.2 2.1.2 Specjalne uwagi dla wersji 2.0 2.2 Sprzęt i pliki urządzeń. 2.2.1 Nagrywarki IDE/ATAPI. 2.2.2 Nagrywarki SCSI. 2.2.2.1 Ogólne urządzenia SCSI. 2.2.3 Nagrywarki podłączane przez porty równoległe. 2.3 Zdobądź oprogramowanie do wypalania CD-R. 2.3.1 Narzędzia obsługiwane z linii poleceń. 2.3.2 Graficzne interfejsy użytkownika. (opcjonalne) 3. Wypalanie płyt CD-R. 3.1 Zapis CD-ROM-ów (czyste dane). 3.2 Tworzenie obrazu późniejszej płyty. 3.2.1 Przetestuj obraz kompaktu. 3.3 Zapisz obraz CD na płytę. 3.4 Zapisywanie płyt audio. 3.5 CD-ROM-y mieszane. 4. Często zadawane pytania wraz z odpowiedziami. 4.1 Jak czuły jest proces wypalania? 4.2 Czy fragmentacja ma zły wpływ na prędkość przepływu danych? 4.3 Czy możliwe jest zapisanie obrazu CD na systemie plików UMSDOS? 4.4 Czy nie ma jakiegoś sposobu, żeby obejść ograniczenia ISO 9660? 4.5 Jak czytać ścieżki z płyt audio? 4.6 Jak automatycznie wykrywać urządzenia SCSI po starcie? 4.7 Czy możliwe jest zrobienie kopii 1:1 danych z płyty? 4.8 Czy Linux umie odczytać płyty Joliet? 4.9 Jak się czyta/montuje CD-ROM-y przez nagrywarkę? 4.10 Jak umieścić jeszcze więcej danych na płycie? 4.11 Jak utworzyć płytę startową (bootable). 4.12 Jak zrobić zapisywalny CD-ROM? 4.13 Czy możliwe jest wykorzystanie kilku nagrywarek na raz? 4.14 Które nośniki są najlepsze? 5. Rozwiązywanie problemów. 5.1 Nie działa: pod Linuksem. 5.2 Błąd: No read access for 'dev=2,0'. 5.3 Nie działa: pod DOS-em i przyjaciółmi. 6. Podziękowania. 6.1 Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Wielu ludzi wypala płyty CD przy pomocy Linuksa ponieważ jest to sposób niezawodny i łatwy. Nie ma "niebieskich ekranów" podczas wypalania i nie musisz się przejmować tym, żeby dobrać odpowiedni sprzęt i oprogramowanie do niego. Po prostu jak wszystko raz poprawnie ustawisz tak działa. Dokument ten omawia konfigurację, jak umieścić dane na medium i podaje trochę ciekawych aplikacji, który zostały wspomniane przez uprzejmych czytelników. 11..11.. PPrraawwaa aauuttoorrsskkiiee,, lliicceennccjjaa ii wwaarruunnkkii kkoorrzzyyssttaanniiaa.. Prawa autorskie (C) posiada Winfried Trümper 1996,1997,1998,1999. Wszystkie prawa zastrzeżone. Redystrybucja i użytkowanie, z modyfikacjami lub bez, jest dozwolone o ile nazwisko autora nie jest wykorzystywane do promocji czy sygnowania wszelkich produktów powstałych z tego dokumentu bez konkretnego, wcześniejszego, pisemnego pozwolenia. 11..22.. ZZaassttrrzzeeżżeenniiee.. Autor zrzeka się wszelkich gwarancji odnośnie tego dokumentu, włącznie z wszystkimi włączonymi gwarancjami handlowymi. W żadnym wypadku nie jestem odpowiedzialny za jakiekolwiek bezpośrednie i pośrednie zniszczenia, w wyniku których nastąpiła utrata używalności, danych czy dochodów wynikające z używania tego dokumentu. Krótko: używaj na własną odpowiedzialność. 11..33.. PPrrooppoonnoowwaannee ddookkuummeennttyy ddoo pprrzzeecczzyyttaanniiaa.. CD-R FAQ, to ogólny dokument zawierający często zadawane pytania na temat płyt CD do nagrywania (CD-R), nagrywarek płyt i wymaganego oprogramowania. Ponieważ wiekszość nagrywarek CD można używać także do czytania płyt CD; możliwe, że będziesz chciał przeczytać także _C_D_R_O_M_-_H_O_W_T_O, _S_C_S_I_- _H_O_W_T_O i _K_e_r_n_e_l_-_H_O_W_T_O 11..44.. TTeerrmmiinnoollooggiiaa ...... llaasseerryy nnaa mmaaxx ...... ooggnniiaa!! CD-ROM to skrót od "Compact Disc Read Only Memory", nośnik danych wykorzystujący laser optyczny do wyczuwania mikroskopijnych zagłębień na srebrnym, błyszczącym dysku. Błyszczenie pochodzi od aluminiowej warstwy, która jest nośnikiem. Zaglebienia reprezentują bity informacji (w pewien sposób) i są takie malutkie, że jakieś kilka bilionów mieści się na płycie. Przez to CD jest nośnikiem dużych ilości danych. Termin CD-R jest skrótem od "CD-ROM Recordable" i odnosi się do płyty CD, która nie ma tych mikrospijnych zagłębień na powierzchni... i przez to jest pusta. Zamiast srebrnej aluminiowej warstwy ma specjalny "film" (kolorowy), w którym "mikroskopijne zagłębienia)" mogą być wypalone. Robi się to przez nadanie laserowi, który normalnie tylko wykrywa zagłębienia, trochę większej mocy, tak że zagłębienia są wypalane. Takie działanie może być podjęte ttyyllkkoo rraazz na CD-R. Jednak można sobie zostawić miejsce na późniejsze nagrywanie, tworząc wielosesyjną płytę CD. _C_D_-_R_O_M _r_e_w_r_i_t_a_b_l_e (czyli CD do wielokrotnego zapisu; w skrócie _C_D_-_R_W zostały wynalezione, aby obejść ograniczenia CD-R. W tych płytach laser nie tylko może wypalić takie mikroskopijne zagłębienia, ale może także przywrócić płytę do oryginalnego stanu sprzed zapisu. Jest to możliwe, ponieważ laser tak naprawdę nie wypala dziur - nie widzisz przecież dymu podczas wypalania i żaden głos z góry nie mówi ci "cel zniszczony". To co laser robi naprawdę, to wyzwala zmianę fazy (trigger a phase change), i stąd nazwa dla nagrywarek CD-RW "urządzenia do zmiany fazy". Przykład bardzo podobnej procedury, to samochód czyszczący na lodowisku hokejowym; w czasie przerw samochód ten przejeżdża przez lodowisko i wypełnia zadrapania w lodzie (cząstki zawierające rodzaj informacji o grze... :) ) roztopionymi kawałkami lodu. [Od tłumacza] Dobra... Wiem, że przetłumaczyłem to ... powiedzmy nieciekawie... Jeśli masz ciekawsze tłumaczenie tego fragmentu, to zapraszam. To HOWTO objaśnia zadanie zapisu na CD-R i CD-RW. Witamy na pokładzie, kapitanie! 11..55.. OObbssłłuuggiiwwaannee zzaappiissyywwaarrkkii.. Szczegółowa lista modeli, które zostały podane jako działające lub nie z różnymi unix-ami jest dostępna pod adresem (www.guug.de). Oto obszerne zestawienie napędów, które zdają się działać z cdrecord: Acer: CDRW 6206A BTC: BCE 621E (IDE) Compro: CW-7502, CW-7502B Dysan: CRW-1622 Elite: Elite b444.41 Grundig: CDR 100 IPW Guillemot: Maxi CD-R 4X/8X HP: SureStore 4020i, SureStore 6020i, C4324, C4325 CD-Writer+ 7100, CD-Writer+ 7200i, CD-Writer+ 8100i, CD-Writer+ 8110i, Hi-Val: CDD-3610 JVC: XR-W2001, XR-W2010, XR-W2042, R-2626 Kodak: PCD 200, PCD 225, PCD 260, PCD 600 Matsushita: CW-7502 Memorex: CRW-620, CRW-1622 Microboards: PlayWrite 2000, PlayWrite 4000RW, PlayWrite 4001RW MicroNet: MasterCD Plus 4x4, MasterCD Plus 4x6 Mitsubishi: CDRW-226 Mitsumi: CR-2401-TS, CR-2600 TE, CR-2801 TE, CR-4801 TE Nomai: 680.RW OTI: CDRW 965 Olympus: CDS 615E, CDS 620E Optima: DisKovery 650 CD-R OTI: CDRW 965 Panasonic: CW-7502, CW-7582 Philips: CDD-521/10, CDD-522 CDD-2000, CDD-2600, CDD-3600, CDD-3610 Omniwriter 26, Omniwriter 26A Plasmon: CDR 480, CDR 4220, RF-4100, RF-4102, CDR 4400 Plextor: CDR PX-24 CS, PX-412 C, PX-R412 C PX-R810Ti, PleXwriter 412C Procom: PCDR 4 Ricoh: RO-1420C+, MP 1420C, MP 6200S, MP 6201S Sanyo: CRD-R24S Smart and Friendly: CD-RW226, CD-R1002, CD-R1002/PRO, CD-R1004, CD-R2004, CD-R2006 PLUS, CD-R2006 PRO, CD-R4000, CD-R4006, CD-R4012 Sony: CDU 920S, CDU 924, CDU 926S, CDU-928E, CDU 948S, CDRX 100E Taiyo Yuden: EW-50 TEAC: CD-R50S, CD-R55S, CDR-55S Traxdata: CRW 2260, CDR 4120, CDRW 4260, Turtle Beach: 2040R WPI (Wearnes): CDRW-622, CDR-632P YAMAHA: CDR-100, CDR 102, CDR-200, CDR-200t, CDR-200tx CDR-400, CDR-400c, CDR-400t, CDR-400tx, CDR-400Atx CRW-2260, CRW-2260t, CRW-4250tx, CRW-4260 t, CRW-4260 tx, CRW-4261, CRW-4416 S _T_a_b_e_l_a _1_: _N_a_g_r_y_w_a_r_k_i _o_b_s_ł_u_g_i_w_a_n_e _p_r_z_e_z _L_i_n_u_k_s_a Jeśli twój sprzęt nie jest obsługiwany, to wciąż możesz użyć Linuksa do przygotowania materiału na CD. Możesz tak postąpić, ponieważ większość oprogramowania DOS-owego nie umie obsłużyć RockRidge Extensions. Ale musisz wtedy użyć DOS-owego oprogramowania do wypalenia płyty. 11..66.. OObbssłłuuggiiwwaannee ""zzaalleettyy"".. Są dwie klasy narzędzi do zapisywania CD-R: sterowniki sprzętowe i formatery danych. Sterowniki sprzętowe obsługują następujące cechy: Cecha cdwrite-2.1 cdrecord-1.7 -------------------------------------------- IDE/ATAPI nie tak Port równoległy nie tak CD-RW nie tak Wielosesyjność tylko częściowo tak _T_a_b_e_l_a _2_: _C_e_c_h_y _s_t_e_r_o_w_n_i_k_ó_w _s_p_r_z_ę_t_o_w_y_c_h cdwrite to stare oprogramowanie i wzmiankowane jest tylko dla zachowania kompletności. Używaj proszę zamiast tego cdrecord, ponieważ obsługuje on znacznie więcej sprzetu i ma o wiele więcej możliwości. Celem formaterów danych jest organizacja danych na płycie (umieszczenie na nich systemu plików). Cecha mkisofs mkhybrid -------------------------------------------- ISO9660 tak tak RockRidge tak tak El Torito tak tak HFS nie tak Joliet nie tak _T_a_b_e_l_a _3_: _C_e_c_h_y _f_o_r_m_a_t_e_r_ó_w _d_a_n_y_c_h Najbardziej oczywistą różnicą między systemem plików ISO9660 a Extended-2 jest możliwość modyfikacji plików na tym drugim po zapisaniu ich. Ograniczenia na ISO9660 to: ˇ Tylko 8-poziomowa struktura podkatalogów (licząc od głównego katalogu na płycie) (aby zwiększyć tę liczbę użyj RockRidge Extensions) ˇ maksymalna długość nazwy pliku: 32 znaki ˇ pojemność 650 MB RockRidge jest rozszerzeniem pozwalającym na dłuższe nazwy i głębszą strukturę katalogów dla systemu plików ISO9660. Rozszerzenia te (RockRidge) nie są dostepne pod DOS-em czy Windows. El Torito może być używane do tworzenia startowych (bootable) płyt CD. BIOS twojego komputera musi mieć możliwość uruchamiania takich płyt. Mówiąc wprost: pierwsze 1,44 MB na płycie zawiera dyskietkę startową zrobioną przez ciebie. Obraz takiej dyskietki jest traktowany jako dyskietka i system z niej startuje. HFS pozwala na odczytanie CD-ROM-u na Macintosh-u, tak jakby był to wolumin HFS (rodzinny system plików MacOS). Joliet pozwala na długie nazwy (między innymi) dla Windows (95, 98, NT). Autor nie zna żadnego narzędzia, które pozwalałoby mieć dłuższe nazwy pod DOS-em czy Windows 3.11. Sekcja 2.8 pokazuje skąd można pobrać wspomniane oprogramowanie. 11..77.. LLiissttyy ddyysskkuussyyjjnnee.. Jeśli chcesz się przyłączyć do grupy rozwojowej (w celu aktywnej _p_o_m_o_c_y), wyślij list na adres cdwrite-request@other.debian.org <mailto:cdwrite-request@other.debian.org> i umieść słowo subscribe w treści listu. 11..88.. NNaajjnnoowwsszzaa wweerrssjjaa.. Najnowsza wersja tego dokumentu jest zawsze dostępna pod adresem www.guug.de. 22.. KKoonnffiigguurraaccjjaa LLiinnuukkssaa ddoo nnaaggrryywwaanniiaa ppłłyytt.. Jesli uda ci się pokonfigurować sprzęt i system, to polecenie cdrecord -scanbus wyświetli ci listę urządzeń, dostępnym do zapisu. Celem tego rozdziału jest poprowadzenie cię poprzez konfigurację Linuksa, tak abyś na końcu zobaczył coś takiego: $> cdrecord -scanbus Cdrecord release 1.7a1 Copyright (C) 1995-1998 Jörg Schilling scsibus0: 0) 'Quantum ' 'XP34300 ' 'F76D' Disk 1) 'SEAGATE ' 'ST11200N ' '8334' Disk 2) * 3) 'TOSHIBA ' 'MK537FB/ ' '6258' Disk 4) 'WANGTEK ' '5150ES SCSI-36 ' 'ESB6' Removable Tape 5) 'EXABYTE ' 'EXB-8500-85QUE ' '0428' Removable Tape 6) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Removable CD-ROM 7) * scsibus1: 100) 'Quantum ' 'XP31070W ' 'L912' Disk 101) * 102) * 103) 'TEAC ' 'CD-R55S ' '1.0H' Removable CD-ROM 104) 'MATSHITA' 'CD-R CW-7502 ' '4.02' Removable CD-ROM 105) * 106) 'YAMAHA ' 'CDR400t ' '1.0d' Removable CD-ROM 107) * _L_i_s_t_i_n_g _1_: _W_y_k_r_y_w_a_n_i_e _u_r_z_ą_d_z_e_ń _n_a _k_o_n_t_r_o_l_e_r_z_e _S_C_S_I_. Przykład ten został dostarczony przez Jörga Schillinga. Widać tutaj cztery nagrywarki. Nie można rozróżnić zwykłego CD-ROMu od nagrywarek. Ale identyfikator produktu ma często w sobie wskazówki w stylu R, -R czy -RW. 22..11.. KKoonnffiigguurraaccjjaa jjąąddrraa LLiinnuukkssaa.. Jądro można wyposażyć w sterowniki służące do różncyh celów. Można je wkompilować na stałe lub jako moduły ładowane na żądanie. Ta druga metoda jest preferowana dla sterowników niekrytycznych dla systemu. Np. jeśli masz system na dysku IDE, to sterownik do tego dysku musisz mieć w jądrze (a nie jako moduł). Są trzy rodzaje nagrywarek: SCSI, IDE/ATAPI i zewnętrzne podłączane do portu równoległego. Tabela 4 pokazuje jak skonfigurować jądro dla tych typów nagrywarek. Pierwsza kolumna, to sekcja w menu konfiguracji jądra, gdzie można znaleźć dane ustawienie. Druga kolumna, to opis tej opcji. Trzecia kolumna, to nazwa modułu powstałego po kompilacji. Y to tak (yes) i oznacza, że masz to wkompilować w jądro. M to moduł, i oznacza, że ma to być wkompilowane jako moduł. Y/M pozwala tobie wybrać czy ma to być moduł czy wkompilowanie w jądro. Puste ustawienia oznaczają, że nie trzeba tego modyfikować. Nie zmienianie tego ustawienia zwiększa szanse, że jadro będzie działać (jeśli działało wcześniej). Aby sprawdzić jakie sterowniki są aktywne (tak statyczne jak i dynamiczne) w twoim jądrze, możesz odczytać plik /proc/devices. Aby sprawdzić jakie moduły są załadowane wydaj plecenie 'lsmod'. Aby sprawdzić jakie moduły są dostępne do załadowania wydaj polecenie systemie, musisz przekompilować jądro. Przeczytaj Kernel-HOWTO na temat szczegółów kompilacji. Najświeższe informacje na temat obsługi modułów jądra znajdziesz w Module-HOWTO. Sekcja Opis Moduł SCSI IDE PP ------------------------------------------------------------ BLOCK Enhanced IDE/MFM/RLL... Y BLOCK IDE/ATAPI CDROM ide-cd M/N/Y BLOCK SCSI hostadaptor emulation ide-scsi M BLOCK Loopback device loop M M M PARIDE Parallel port IDE device paride Y/M PARIDE Parallel port ATAPI CD-ROMs M PARIDE Parallel port generic ATAPI M PARIDE (select a low-level driver) Y SCSI SCSI support scsi_mod Y/M Y/M SCSI SCSI CD-ROM support sr_mod Y/M Y/M SCSI Enable vendor-specific Y Y SCSI SCSI generic support sg Y/M Y/M SCSI (select a low-level driver) Y FS ISO 9660 CDROM filesystem iso9660 Y Y Y FS Microsoft Joliet cdrom... joliet M M M _T_a_b_e_l_a _4_: _K_o_n_f_i_g_u_r_a_c_j_a _j_ą_d_r_a Jeśli udało ci się już skompilować jądro czy znaleźć potrzebne moduły, to albo dodaj je do /etc/modules albo pozwól ładować je automatycznym narzędziom (kmod, kerneld). Jeśli nie jesteś pewien, skonsultuj to z dokumenctacją swojej dystrybucji. Opcja "SCSI hostadaptor emulation" we wczesniejszych jądrach nazywa się "SCSI emulation" (około 2.0.36). Jeśli jądro na to pozwala, skompiluj sterownik dla CD-ROM-ów IDE/ATAPI jako moduł. Jeśli nie, to wyłącz go (N) i użyj zamiast niego sterownika do CD-ROM-ów SCSI. W jądrach serii 2.2, nie możliwe jest uruchamianie sterowników do IDE i SCSI na tym samym fizycznym urządzeniu w tym samym czasie (jeśli masz 2.0.36, to przeczytaj poniżej). Urządzenie _l_o_o_p_b_a_c_k jest opcjonalne i pozwala przetestować obraz płyty przed zapisaniem. Jeśli chcesz móc czytać płyty, to potrzebujesz obsługi systemu plików ISO 9660. Sterownik ten zawiera w sobie obsługę RockRidge Extensions. Jeśli chcesz mieć także obsługę MS Joliet ERxtensions, to skompiluj je jako moduł i załaduj. [Od tłumacza] O ile się nie mylę, to Joliet jest obsługiwany przez jądro 2.0.36... W każdym przypadku potrzebujesz sterownik niskiego poziomu dla swojego sprzętu. "Niskiego poziomu" odnosi się do sterownika, który komunikuje się bezpośrednio ze sprzętem. Dla urządzeń SCSI i podłączanych przez port równoległy jest wiele sterowników niskiego poziomu. Są one opisane poniżej. 22..11..11.. SSppeeccjjaallnnee uuwwaaggii ddllaa sseerriiii 22..22 W jądrze 2.2.1 nie włączaj na raz opcji CONFIG_SCSI_MULTI_LUN ('probe for multiple luns') i obsługi ide-scsi. Znany jest błąd ide-scsi, który nie pozwala na to. W każdym razie zaleca się uaktualnienie do wersji 2.2.5. Niektórzy użytkownicy zgłaszali konflikty między prekompilowanymi binariami a jądrem 2.2. Jest to problem z jądrem. Oto rozwiązania: ˇ Może to przejść po kompilacji cdrecord, tak aby dostosował się do wartości w linux/include/scsi/sg.h. Wartości te muszą być tymi z działającego jądra z powodu interfejsu użytkownika dla sg. ˇ Może być to spowodowane ładowalnym sterownikiem dla sg, który nie ma odpowiednio dużo pamięci dla DMA. Zdobądź łatę do sg_buffer z serwera FTP <ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha/> Jörga Schillinga. 22..11..22.. SSppeeccjjaallnnee uuwwaaggii ddllaa wweerrssjjii 22..00 Jądra w wersji wcześniejszej niż 2.0.31 mają kilka błedów i nie mogą czytać ostatniego pliku na płycie. Uaktualnij je do wersji 2.0.36. W jądrze 2.0.36 możesz podać który sterownik (IDE czy SCSI) użyć do którego urządzenia ATAPI. Dokładniej: możesz włączyć opcję "SCSI emulation" w jądrze i uaktywnić ją dla konkretnego urządzenia przed lub podczas ładowania jądra. Np. jesli twojej nagrywarce odpowiada plik /dev/hdb, to dodaj polecenie hdb=ide-scsi. image=/boot/zImage-2.0.36 label=Linux read-only append="hdb=ide-scsi" _L_i_s_t_i_n_g _2_: _P_r_z_y_k_ł_a_d_o_w_a _k_o_n_f_i_g_u_r_a_c_j_a _d_l_a _l_i_l_o _(_/_e_t_c_/_l_i_l_o_._c_o_n_f_) linux "Linux 2.0.36" { image=/boot/zImage-2.0.36 cmdline= root=/dev/hda5 readonly hdb=ide-scsi } _L_i_s_t_i_n_g _3_: _P_r_z_y_k_ł_ą_d_o_w_a _k_o_n_f_i_g_u_r_a_c_j_a _d_l_a _c_h_o_s _(_/_e_t_c_/_c_h_o_s_._c_o_n_f_) 22..22.. SSpprrzzęętt ii pplliikkii uurrzząąddzzeeńń.. Jak już zainstalowałeś wszystkie potrzbne sterowniki, wystartuj nowe jądro. Powinno się tam już znajdować wszystko czego będziesz potrzebować do do następnych rozdziałów. [Użytkownicy _d_e_v_f_s nie muszą się przejmować następnymi krokami (ręczną konfiguracją plików urządzeń. Jeśli używasz _d_e_v_f_s, wszystko pojawi się automagicznie na swoim miejscu.] Przejdź do katalogu /dev i sprawdź czy masz urządzenia loopback. Nie jest to konieczne, żebyś musiał je mieć ale wygodniejsze (zobacz punkt 3.5). Jeśli już je masz, to polecenie _l_s powinno pokazać loop0 - loop7: $ > cd /dev $ > ls loop* loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7 _L_i_s_t_i_n_g _4_: _p_l_i_k_i _u_r_z_ą_d_z_e_n_i_a _l_o_o_p_b_a_c_k Jeśli nie masz tych urządzeń, to stwórz je przy pomocy skryptu /dev/MAKEDEV: $ > cd /dev/ $ > modprobe loop $ > ./MAKEDEV loop _L_i_s_t_i_n_g _5_: _p_o_l_e_c_e_n_i_a _d_o _t_w_o_r_z_e_n_i_a _p_l_i_k_ó_w _u_r_z_ą_d_z_e_ń _l_o_o_p_b_a_c_k Ostatnie polecenie powiedzie się tylko jeśli masz skompilowany moduł loop. To co przeczytałeś dotąd na temat obsługi plików urzdzenia loopback odnosi się do wszystkich plików urządzeń (sg*, pg*, hd*, ...) i nie piszę wyraźnie o tym dalej. 22..22..11.. NNaaggrryywwaarrkkii IIDDEE//AATTAAPPII.. ATAPI oznacza "polecenia SCSI przez szynę IDE". Innymi słowy napędy IDE/ATAPI porozumiewają się poprzez protokół SCSI (z pewnymi ograniczeniami) i w ten sposób mogą imitować urządzenia SCSI. W Linuksie nagrywarka IDE może pojawić się jako SCSI dzięki opcji "SCSI (hostadaptor) emulation". Tak więc uaktywnij odpowiedni moduł jądra ide-scsi, jak to opisano powyżej i potem możesz robić wszystko tak jakbyś miał nagrywarkę SCSI. 22..22..22.. NNaaggrryywwaarrkkii SSCCSSII.. Upewnij się, że twoja nagrywarka jest rozpoznawana przez BIOS twojego komputera. Nie ma sensu robić czegokolwiek dalej jeśli twój komputer nie zaakceptuje sprzętu. (fakt, że komputer nie wypluje nagrywarki nie jest potwierdzeniem; na ekranie musi pojawić się odpowiedni napis). Jeśli planujesz podłączyć swój napęd SCSI do portu równoległego, będziesz potrzebował specjalnego kabla i specjalnego sterownika w jądrze. Więcej na ten temat możesz poczytać pod adresem www.torque.net/parport/parscsi.html. 22..22..22..11.. OOggóóllnnee uurrzząąddzzeenniiaa SSCCSSII.. Pliki urządzeń /dev/sd* i /dev/sr* używane do komunikacji z dyskami i CD-ROM-ami SCSI mają zaimplementowany tylko transfer zorientowny na bloki danych. To właśnie czyni je tak szybkimi i idealnymi do zapisu danych. Sterowanie laserem nagrywarki to bardziej skomplikowane zadanie i wymaga trochę więcej niż transferu danych w postaci bloków. Aby utrzymać tę jakość urządzeń sd* i sr* stworzono nowy rodzaj plików urządzeń SCSI; tzw _o_g_ó_l_n_e _u_r_z_ą_d_z_e_n_i_a _S_C_S_I. Ponieważ poprzez ogólne urządzenia SCSI można zrobić wszystko ze sprzętem SCSI nie są one przeznaczone do jakiegoś konkretnego celu - stąd nazwa ogólne (generic). Tak jak inne pliki urządzeń i te można znaleźć w katalogu /dev/: $ > cd /dev $ > ls sg* sg0 sg1 sg2 sg3 sg4 sg5 sg6 sg7 Jeśli nie masz tych plików urządzeń, to stwórz je używając skryptu /dev/MAKEDEV: $ > cd /dev/ $ > ./MAKEDEV sg 22..22..33.. NNaaggrryywwaarrkkii ppooddłłąącczzaannee pprrzzeezz ppoorrttyy rróówwnnoolleeggłłee.. Przykro mi, ale nie mam pojęcia na ten temat. Przeczytaj informacje zawarte na stronie WWW poświęconej temu tematowi albo plik na swoim dysku /usr/src/linux/Documentation/paride.txt. 22..33.. ZZddoobbąąddźź oopprrooggrraammoowwaanniiee ddoo wwyyppaallaanniiaa CCDD--RR.. Przegląd narzędzi służących do nagrywania płyt znajduje się pod adresem www.fokus.gmd.de <http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html>. Project tworzenia CD dla Unix-a. 22..33..11.. NNaarrzzęęddzziiaa oobbssłłuuggiiwwaannee zz lliinniiii ppoolleecceeńń.. Jedno z poniższych narzędzi potrzebne jest aby wygenerować obraz płyty. mkisofs <ftp://tsx-11.mit.edu:/pub/linux/packages/mkisofs> mkhybrid <ftp://ftp.man.torun.pl:/pub/Linux/mkhfs> W zależności od modelu twojej nagrywarki (zobacz 1.3) potrzebne jest jedno z poniższych narzędzi do zapisania danych na CD: ˇ cdrecord <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/utils/disk- management/cdrecord/> Nie wierz podręcznikowi systemowemu od (starego) mkisofs, który stwierdza, że potrzebujesz wersji 1.5. Po prostu użyj programu cdrecord i będzie w porządku. Zauważ, że program mkisofs dostarczany wraz z cdrecord ma kilka rozszerzeń wspomnianych w dokumentacji programu. 22..33..22.. GGrraaffiicczznnee iinntteerrffeejjssyy uużżyyttkkoowwnniikkaa.. ((ooppccjjoonnaallnnee)) Front-endy w Linuksie to rzeczywiste front-endy. Oznacza to, że ciągle musisz zainstalować narzędzia obsługiwane z linii poleceń, ale masz do nich dostęp w ładniejszy sposób. _X_-_C_D_-_R_o_a_s_t to pakiet stworzony do ułatwienia tworzenia płyt w Linuksie. Łączy on narzędzia sterowane z linii poleceń jak _c_d_r_e_c_o_r_d i _m_k_i_s_o_f_s z ładnym graficznym interfejsem. www.fh-muenchen.de _B_u_r_n_I_T to front-end napisany w Javie do cdrecord, mkisofs i cdda2wav-0.95, co czyni z niego kompletny pakiet do wypalania płyt CD na platformach unixowych. Ściągnąć go można z adresu sunsite.auc.dk <http://sunsite.auc.dk/BurnIT/>. 33.. WWyyppaallaanniiee ppłłyytt CCDD--RR.. Imperator Nero na temat palenia swoich własnych klasycznych CD [AD64; on się na tym kompletnie nie zna] "Jeśli do ognia się obrócisz, zabawiać się nie przestanę póki się palisz." [tłum.: Z góry przepraszam za tłumaczenie, ale poetą nie jestem.] Zapis CD w Linuksie składa się z dwóch kroków: ˇ pakowanie programów do plików ze specjalnym formatem ˇ zapisywanie danych z takich plików na płytę CD-R przy pomocy cdrecord. Rozdział ten opisuje kroki tworzenia płyt z danymi i audio. 33..11.. ZZaappiiss CCDD--RROOMM--óóww ((cczzyyssttee ddaannee)).. Pamiętaj, że zebranie wszystkiego do płyty zabiera o wiele więcej niż się można spodziewać. Jednak pamiętaj też, że brakujących plików nie można dopisać do płyty jak jest już zapisana i zakończona. Pamiętaj także, że pewna ilość miejsca na płycie jest używana do przechowywania informacji na temat systemu plików iso9660 (zwykle kilka MB). 620 MB danych zawsze się zmieści na 650MB płycie CD-R. 33..22.. TTwwoorrzzeenniiee oobbrraazzuu ppóóźźnniieejjsszzeejj ppłłyyttyy.. Zanim jakiś nośnik danych (dyskietka, dysk twardy czy kompakt) będzie mógł być użyty trzeba na nim założyć system plików (mówiąc po DOS- owemu: trzeba go sformatować). System plików jest odpowiedzialny za organizację i zapis plików na nośniku. Zwykle, narzędzia do tworzenia systemu plików na partycji dyskowej, zapisuja na niej pusty system plików, który jest potem montowany i wypełniany plikami przez użytkownika. Zapisywalne płyty CD są zapisywalne ttyyllkkoo rraazz, więc jeśli zapisałbyś na nim pusty system plików, zostałoby sformatowane - ale pozostałoby puste na zawsze. Jest to także prawda dla nośników wielokrotnego zapisu, ponieważ nie można zmienić dowolnie zawartości sektorów, ale trzeba ją całą najpierw skasować. Więc to czego potrzebujemy, to narzędzie, które tworzy system plików podczas nagrywania plików na płycie. Narzędzie to nazywa się _m_k_i_s_o_f_s. Przykładowe użycie może być takie: mkisofs -r -o obraz_cd moja_kolekcja/ `---------' `-------------' | | dokąd zapisać nagraj z tego katalogu Opcja --rr ustawia prawa dostępu wszystkich plików na odczyt dla wszystkich i włącza RockRidge Extensions. To jest zwykle to, co chcesz osiągnąć i użycie tej opcji jest zalecane, no chyba, że wiesz dokładnie co robisz. (wskazówka: bez --rr pliki na kompakcie będą miały prawa jak moja_kolekcja!). _m_k_i_s_o_f_s spróbuje odwzorować wszystkie nazwy plików na format 8.3 używany przez DOS, aby zapewnić jak największą kompatybilność. W razie gdy pliki w formacie 8.3 nazywają się tak samo, używane są liczby, a informacja o takich plikach wysyłana jest do _S_T_D_E_R_R - zwykle ekran. Nie panikuj: Pod Linuksem nigdy nie zobaczysz tych nazw w formacie 8.3, ponieważ Linux umie korzystać z RockRidge Extensions, które zawierają oryginalne atrybuty pliku (prawa dostępu, nazwy, itp.). Teraz możesz się zastanawiać dlaczego rezultat nie jest wysyłany bezpośrednio do nagrywarki. Z dwóch powodów: ˇ mkisofs nie wie nic na temat obsługi nagrywarek CD. ˇ możesz chcieć przetestować obraz płyty zanim go nagrasz. ˇ Na wolnych komputerach nie byłoby to rozsądne. Metodę zapisu płyty w jednym kroku opiszę poniżej. Możnaby stworzyć dodatkową partycję na dysku i tam zapisywać wynik działania _m_k_i_s_o_f_s. Jednak ja jestem przeciwny takiemu rozwiązaniu ponieważ jedną literówką możnaby sobie zniszczyć całą partycję Linuksową (czytaj: co mi się przytrafiło...). Co więcej, to jest marnowanie miejsca na dysku, bo dane te są tylko czasowe i można je usunąć po zapisaniu na płytę. Jednak jeśli masz wystarczająco dużo miejsca na dysku, dodatkowa partycja może ci zaoszczędzić czasu na kasowanie obrazu. 33..22..11.. PPrrzzeetteessttuujj oobbrraazz kkoommppaakkttuu.. Linux ma możliwość montowania plików tak jakby były one partycją. Cecha ta przydaje się do testowania obrazu płyty, czy prawa dostępu są takie jak chcesz. Pomimo, iż nośniki są teraz bardzo tanie, to zapis płyty zabiera trochę czasu i możesz chociaż zaoszczędzić swój czas sprawdzając obraz. Aby zamontować w katalogu /cdrom taki plik stworzony wcześniej wpisz: ______________________________________________________________________ mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom ______________________________________________________________________ Teraz możesz sprawdzić pliki w katalogu /cdrom - pojawią się tam dokładnie tak samo jak będą wyglądać na płycie. Aby odmontować ten plik po prostu napisz _u_m_o_u_n_t _/_c_d_r_o_m. Uwaga: Jeśli masz jądro starsze niż 2.0.31, to ostatni plik na płycie może nie być czytany. Użyj nowszego jądra, jak np. 2.0.36. Opcja -pad w programie cdrecord odnosi się tylko do płyt audio, a dodatkowa opcja -pad programu mkisofs wymaga łaty, co jest taką samą pracą jak uaktualnienie do nowego jądra. Uwaga: Niektóre stare wersje _m_o_u_n_t nie umieją obsługiwać urządzeń loopback. Jeśli masz taką starą wersję _m_o_u_n_t, to jest to wskazówka, żeby uaktualnić swoją dystrybucję. Kilku ludzi sugerowało już, żeby zamieścić tu informację skąd wziąć najnowsze narzędzia do montowania, ale ja zawsze odmawiam. Jeśli twoja dystrybucja dostarcza takiej starej wersji _m_o_u_n_t, to zgłoś to do nich jako błąd. Jeśli twoja dystrybucja nie jest łatwa do uaktualnienia, zgłoś to jako błąd. Jeśli dołączyłbym tutaj wszystkie informacje potrzebne do poprawienia błędów w źle zaprojektowanej dystrybucji to HOWTO byłoby o wiele większe i trudniejsze do czytania. 33..33.. ZZaappiisszz oobbrraazz CCDD nnaa ppłłyyttęę.. Już nie ma dużo do zrobienia. Jeśli jeszcze nie próbowałeś, to jest dobra chwila na polecenie: cdrecord -scanbus Polecenie to pokaże ci do którego urządzenia SCSI dołączona jest twoja nagrywarka. Wszystkie inne metody zgadywania informacji wyświetlanych przez cdrecord zostały usunięte z tego HOWTO (szczególnie ten cokolwiek niebezbieczny schemat nazewnictwa ogólnych urządzeń SCSI). Zanim pokażę ci ostatnie polecenie, pozwól się ostrzec, że nagrywarki "lubią być karmione" ciągłym strumieniem danych ponieważ mają tylko mały bufor danych. Tak więc proces zapisu obrazu CD na płytę nie może być przerwany, bo w wyniku otrzymamy źle nagraną płytę. Łatwo jest przerwać taki strumień danych np. przez skasowanie dużego pliku. Przykład: Jeśli skasujesz plik o rozmiarze 650 MB, to jądro musi uaktualnić informacje o 650.000 bloków na dysku (zakładając, że masz na swoim systemie plików bloki 1 kB). Zajmuje to trochę czasu i bardzo prawdopodobne, że zwolni działalność dysku na tyle, że strumień danych zostanie przerwany na kilka sekund. Jednak na szybkich maszynach czytanie poczty, surfowanie po sieci czy nawet kompilacja jądra nie mają wpływu na nagrywanie. Zauważ proszę, że żadna nagrywarka nie potrafi ponownie ustawić lasera i nie może kontynuować od miejsca, w którym zostało przerwane nagrywanie. Przez to każda silniejsza wibracja a nawet wstrząs zniszczy płytę. Jeśli jesteś już psychicznie przygotowany, ubierz się w czarną szatę, pomnóż numer SCSI-ID nagrywarki przez numer SCSI-revision i zapal tyleż samo świeczek, wymów dwa wiersze z "_A_S_R_-_F_A_Q" (grupa dyskusyjna alt.sysadmin.recovery) i ostatecznie wpisz: $ > SCSI_BUS=0 # wzięte z listingu "scsibus0:" $ > SCSI_ID=6 # wzięte z listingu "TOSHIBA XM-3401" $ > SCSI_LUN=0 $ > cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN \ -data cd_image # to samo co wyżej, ale krótsze $ > cdrecord -v speed=2 dev=0,6,0 -data cd_image Dla zwiększenia czytelnośći, namiary na nagrywarkę zapisane są do trzech zmiennych o wymownych nazwach: SCSI_BUS, SCSI_ID, SCSI_LUN. Opcja -data nie jest konieczna, ale została tutaj podana, aby odróżnić tę linijkę o linijki służącej do nagrywania płyt audio. Jeśli używasz programu cdrecord do nadpisania płyty CD-RW, musisz podać opcję blank=..., aby skasować poprzednią zawartość. Poczytaj stronę podręcznika man, aby dowiedzieć się więcej na temat różnych metod zerowania płyty CD-RW. W czasach kiedy wszyscy oprócz mnie posiadają 400 MHz maszyny, ludzie nagrywają płyty w locie bez tworzenia obrazu. Czyli łączą wyjście programu mkisofs z wejściem programu cdrecord: $ > IMG_SIZE=`mkisofs -R -q -print-size private_collection/` $ > mkisofs -r private_collection/ \ |cdrecord speed=2 dev=0,6,0 tsize=${IMG_SIZE}s -data - # nie zapomnij o s --^ ^-- czytaj dane z STDIN Pierwsze polecenie jest pustym poleceniem służącym do określenia rozmiatu obrazu (potrzebujesz mkisofs z pakietu cdrecord, aby to działało). Może twoja nagrywarka nie musi znać rozmiaru obrazu, który będzie zapisany, wtedy możesz to opuścić. Wyświetlony rozmiar musi być przekazany jako parametr tsize do polecenia cdrecord (jest zapisany w zmiennej środowiskowej IMG_SIZE). Ostatnie polecenie to połączenie poleceń mkisofs i cdrecord przez potok. 33..44.. ZZaappiissyywwaanniiee ppłłyytt aauuddiioo.. Zapisanie takiej płyty jest bardzo podobne do wymienionych powyżej kroków/ Dwie główne różnice, to fakt, że płyty audio składają się ze ścieżek audio, które są zorganizowane w osobne obrazy. Więc jeśli chcesz mieć 10 ścieżek, to musisz mieć 10 obrazów. Drugą różnicą jest format tych obrazów. Już nie ISO 9660 (czy jaki tam system plików wolisz), ale 16-bitowe sample w kodowaniu PCM z częstotliwością próbkowania 44,1 kHz. Jednym z narzędzi do zamiany twoich plików dźwiękowych do wymaganego formatu jest _s_o_x. Użycie jest bardzo proste: $ > sox killing-my-software.wav killing-my-software.cdr Polecenie to zamienia utwór killing-my-software z formatu WAV na format CDR. Poczytaj stronę podręcznika systemowego man programu sox na temat rozszerzeń i formatów plików rozpoznawanych przez niego. Z powodu sporej ilości dysku potrzbnej na konwersję, jest to wbudowana cecha programu cdrecord dla formatów WAV i AU. Tak więc dopóki twoje pliki muzyczne są w postaci plików .wav czy .au i są to 16-bitowe próbki z częstotliwością 44,1 kHz możesz ich używać bez ręcznej zamiany. Cdrecord zapisuje obrazy jako ścieżki audio jeśli podamy opcję -audio. Inne opcje są identyczne z tymi do zapisywania danych (o ile nie masz jakichś bardzo specyficznych wymagań). Poniższe trzy przykłady robią to samo, ale czytają obrazy z innych plików: $ > cdrecord -v speed=2 dev=0,6,0 -audio track1.cdr track2.cdr... $ > cdrecord -v speed=2 dev=0,6,0 -audio track1.wav track2.wav... $ > cdrecord -v speed=2 dev=0,6,0 -audio track1.au track2.au... Szczególnym przypadkiem są pliki MPEG3, które mogą być zamienione przy pomocy programu 'mpg123 -s track1.mp3 > track1.cdr'. W drugą stronę działa 8hz-mp3 dla plików WAV. W takim układzie jak powyżej wypalisz płyty z 2-sekundową przerwą pomiędzy każdymi dwoma ścieżkami audio. Jeśli twoja nagrywarka umożliwia nagrywanie w trybie "disc at once" (DAO), możesz wypróbować najnowszej wersji cdrecord, aby się tych przerw pozbyć. 33..55.. CCDD--RROOMM--yy mmiieesszzaannee.. Niewiele do powiedzenia. Po prostu określ typ oklejnych obrazów opcjami -data lub -audio. Przykład: cdrecord -v dev=0,6,0 -data cd_image -audio track*.cdr 44.. CCzzęęssttoo zzaaddaawwaannee ppyyttaanniiaa wwrraazz zz ooddppoowwiieeddzziiaammii.. 44..11.. JJaakk cczzuułłyy jjeesstt pprroocceess wwyyppaallaanniiaa?? Odpowiedź: To zależy od twojej nagrywarki. Nowsze powinny mieć bufor danych o pojemności ok. 1MB lub coś koło tego i może wytrzymać jakieś 1-2 sekund bez dopływu danych. Jeśli chcesz znać jakieś szczegóły, to zajrzyj do podręcznika albo zapytaj producenta. Niezależnie od rozmiaru tego bufora musisz zagwarantować stały przepływ danych w granicach 300 kb/s - 600 kb/s. Procesy intensywnie wykorzystujące dysk, jak np. uaktualnianie bazy "locate", obniżają maksymalny przepływ i mogą zniszczyć płytę; lepiej sprawdź czy takie procesy nie są uruchamiane przez cron-a, at lub anacron-a podczas gdy wypalasz płytę. Z drugiej strony niektórzy kompilowali jądro podczas wypalania płyty i nic ich płytom się nie działo. Do takich eksperymentów potrzebujesz jednak szybkiej maszyny. 44..22.. CCzzyy ffrraaggmmeennttaaccjjaa mmaa zzłłyy wwppłłyyww nnaa pprręęddkkoośśćć pprrzzeeppłłyywwuu ddaannyycchh?? Fragmentacja jest zwykle taka mała, że jej wpływ jest niezauważalny. Jednak możesz łatwo skonstruować patologiczne przypadki fragmentacji, które obniżą prędkość przepływu danych do 100 kb/s. Więc nie rób tego. :-) Tak, pliki przez lata fragmentują się na dysku. Tym szybciej, im szybciej system plików jest pełny. Zostawiaj zawsze 10% - 20% wolnego miejsca i powinno być dobrze. Jeśli nie jesteś pewny, to spójrz na komunikaty wypisywane podczas startu, procent fragmentaji jest podawany podczas sprawdzania systemu plików. Możesz sprawdzić tę wartość bardzo niebezpiecznym poleceniem ______________________________________________________________________ $ > e2fsck -n /dev/sda5 # '-n' jest ważne! [różne komunikaty usunięte - zignoruj wszelkie błędy] /dev/sda5: 73/12288 files (12.3% non-contiguous) ______________________________________________________________________ W tym przykładzie fragmetacja jest bardzo wysoka - ale na tym systemie plików są tylko 73 małe pliki (użyte w /tmp) więc wartość ta nie jest alarmująca. Jest eksperymentalne narzędzie zwane _e_2_d_e_f_r_a_g służące do defragmentacji systemu plików Extended-2. Obecna wersja nie działa zbyt pewnie, aby używać jej nawet w domowych komputerach. Jeśli naprawdę chcesz zdefragmentować swój system plików, zrób kopię zapasową (lepiej: dwie kopie), poćwicz odzyskiwanie danych, stwórz nowy system plików (to zniszczy ten stary) i odtwórz dane. Jest to najbezpieczniejsza technika. 44..33.. CCzzyy mmoożżlliiwwee jjeesstt zzaappiissaanniiee oobbrraazzuu CCDD nnaa ssyysstteemmiiee pplliikkóóww UUMMSSDDOOSS?? Tak. Jedyny system plików, który jest nieodpowiedni do tego celu to NFS (sieciowy system plików). Ja używam UMSDOS, żeby dzielić mejsce na dysku pomiędzy Linuksem a DOS/Win na PC-cie (486/66) przeznaczonym do nagrywania płyt. 44..44.. CCzzyy nniiee mmaa jjaakkiieeggoośś ssppoossoobbuu,, żżeebbyy oobbeejjśśćć ooggrraanniicczzeenniiaa IISSOO 99666600?? Tak. Na płycie możesz umieścić jakikolwiek system plików. Ale inne systemy operacyjne nie będą potrafiły obsłużyć takiej płyty. Oto przepis: ˇ Stwórz pusty plik o rozmiarze 650 MB. ___________________________________________________________________ dd if=/dev/zero of="empty_file" bs=1024k count=650 ___________________________________________________________________ ˇ Stwórz "na" tym pliku system plików EXT2. ___________________________________________________________________ $ > /sbin/mke2fs -b 2048 pusty_plik pusty_plik is not a block special device. Proceed anyway? (y,n) y ___________________________________________________________________ ˇ Zamontuj ten pusty plik przy pomocy urządzenia loopback ___________________________________________________________________ mount -t ext2 -o loop=/dev/loop1 empty_file /mnt ___________________________________________________________________ ˇ Skopiuj to co chcesz do /mnt i odmontuj potem ten katalog. ˇ Użyj _c_d_r_e_c_o_r_d na pustym_pliku (który już nie jest pusty) tak jakby był to obraz ISO 9660. Jeśli chcesz wstawić pozycję do /etc/fstab dla takich płyt, to wyłącz ich sprawdzanie, np. /dev/cdrom /cdrom ext2 defaults,ro 0 0 Pierwsze 0 oznacza "nie dołączaj tego systemu plików do kopii zapasowych", drugie (ważne) oznacza, "nie sprawdzaj błędów podczas startu" (polecenie fsck nie powiedzie się podczas sprawdzania błędów na płycie). 44..55.. JJaakk cczzyyttaaćć śścciieeżżkkii zz ppłłyytt aauuddiioo?? Jest kilka dostępnych pakietów. Najnowszym jest "cdparanoia"; ściągnąć go można z www.mit.edu <http://www.mit.edu/afs/sipb/user/xiph­ mont/cdparanoia/index.html> Albo możesz spróbować kombinację programów "cdda2wav" i "sox" dostępne z serwera w Polsce: ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sun­ site/apps/sound/>. Pierwszy w podkatalogu cdrom/ a drugi w convert/. Pakiet cdda2wav umożliwia odczytanie podanego przedziału czasowego (albo całej ścieżki) z płyty muzycznej i zamianę odczytanych danych na format pliku WAV. sox natomiast zamienia format pliku WAV na format zapisu na płytach muzycznych, tak że dane te mogą zostać zapisane na płytę przy pomocy _c_d_r_e_c_o_r_d. Nie potrzebujesz koniecznie sox jeśli używasz nowszej wersji cdrecord, ponieważ program ten posiada wbudowaną opcję zamiany plików .wav i .au na odpowiedni format. 44..66.. JJaakk aauuttoommaattyycczznniiee wwyykkrryywwaaćć uurrzząąddzzeenniiaa SSCCSSII ppoo ssttaarrcciiee?? Plik drivers/scsi/scsi.c zawiera taką informację: "Użycie: echo "SCSI add-single-device 0 1 2 3" >/proc/scsi/scsi Zamień "0 1 2 3" na swoje numery "Host Channel Id Lun". Ta cecha jest BETĄ. UWAGA: Programu tego nie można używać do podłączania urządzeń SCSI podczas działania systemu ponieważ urządzenia te nie zostały przygotowane do tego i możesz sobie zniszczyć sprzęt! Ale może można włączyć już podłączone urządzenie. Jednak nie ma żadnej gwarancji, że urządzenie to nie zniszczy nadchodzących danych." Używać tego można tylko jeśli dodajesz urządzenia SCSI na końcu łańcucha. Jeśli umieścisz urządzenie SCSI gdzieś w istniejący łańcuch, to popsuje to kolejność w katalogu /dev/ i można zniszczyć całą zawartość twojego dysku. 44..77.. CCzzyy mmoożżlliiwwee jjeesstt zzrroobbiieenniiee kkooppiiii 11::11 ddaannyycchh zz ppłłyyttyy?? Tak. Ale powinieneś zdawać sobie sprawę z tego, iż wszelkie błędy podczas odczytu oryginału (z powodu kurzu czy rys) spowodują błędy także w kopii. Pierwszy przypadek: masz nagrywarkę i oddzielny napęd CDROM. Wykonując polecenie: ______________________________________________________________________ cdrecord -v dev=3,0 speed=2 -isosize /dev/scd0 ______________________________________________________________________ odczytujesz strumień danych z CD-ROM-u podłączonego jako /dev/scd0 i zapisujesz go bezpośrednio poprzez urządzenie SCSI o ID=3 na nagrywarkę. Drugi przypadek: nie masz oddzielnego napędu CD-ROM. W tym przypadku musisz użyć nagrywarki, żeby odczytać dane: ______________________________________________________________________ dd if=/dev/scd0 of=obraz_cd ______________________________________________________________________ Polecenie to jest równoważne _m_k_i_s_o_f_s więc powinieneś postępować dalej tak, jak to opisano w rozdziale 3. Zauważ, że ta metoda nie zadziała w przypadku płyt muzycznych. 44..88.. CCzzyy LLiinnuuxx uummiiee ooddcczzyyttaaćć ppłłyyttyy JJoolliieett?? Tak. Nowsze jądra (2.0.36 i seria 2.2) mają wbudowaną obsługę systemu plików Joliet. Pamiętaj, że musisz użyć obu opcji w pliku /etc/fstab: iso9660 i joliet (to drugie, to rzeczywiste rozszerzenie). Więcej szczegółów przeczytasz na stronie www- plateau.cs.berkeley.edu/people/chaffee/joliet.htm <http://www- plateau.cs.berkeley.edu/people/chaffee/joliet.html>. 44..99.. JJaakk ssiięę cczzyyttaa//mmoonnttuujjee CCDD--RROOMM--yy pprrzzeezz nnaaggrryywwaarrkkęę?? Tak jak to robisz ze zwykłymi napędami. Żadnych sztuczek. Zauważ, że musisz użyć urządzeń _s_c_d (SCSI CD-ROM), aby zamontować płytę do czytania. Przykładowa pozycja z /etc/fstab: /dev/scd0 /cdrom iso9660 ro,user,noauto 0 0 44..1100.. JJaakk uummiieeśścciićć jjeesszzcczzee wwiięęcceejj ddaannyycchh nnaa ppłłyycciiee?? Użyj bzip2 zamiast jakiegoś innego kompresora jak np.: gzip czy pkzip. Zaoszczędzi ci to przy większych plikach (100 kB) około 30% miejsca na dysku. Można go ściągnąć z: www.muraroa.demon.co.uk/ <http://www.muraroa.demon.co.uk/> Zamiast nagrywać prawdziwe płyty audio możesz zamienić swoje pliki .wav w .mp3 i zapisać je na systemie plików ISO 9660 jako zwykłe pliki. Format MPEG III umożliwia kompresję około 1:10. Oczywiście większość odtwarzaczy CD nie umie czytać plików... i to jest wada. Jednak z drugiej strony, dlaczego na następnej prywatce nie puszczać muzyki z twardego dysku ? 18 GB to wystarczająco dużo miejsca na 3000-4000 plików .mp3. :-) Program do tworzenia plików MPEG III można ściągnąć z www.stud.ifi.uio.no/~larsi/other/ <http://www.stud.ifi.uio.no/~larsi/other/8hz- mp3-cheng.tar.gz> Odtwarzacz do MPEG III można ściągnąć z homepages.uni-tuebingen.de/student/michael.hipp/mpg123/ <http://homepages.uni-tuebingen.de/stu­ dent/michael.hipp/mpg123/> Jeśli masz nagraną mowę, to możesz spróbować zredukować jej rozmiar algorytmem "GSM lossy speech compression": <ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/> kbs.cs.tu-berlin.de/~jutta/toast.html <http://kbs.cs.tu- berlin.de/~jutta/toast.html> 44..1111.. JJaakk uuttwwoorrzzyyćć ppłłyyttęę ssttaarrttoowwąą ((bboooottaabbllee)).. Musisz mieć dyskietkę startową. Stwórz jej dokładny obraz poleceniem: dd if=/dev/fd0 of=boot.img bs=18k Umieść ten obraz w katalogu z danymi do płyty (albo w jakimś jego podkatalogu). Poinformuj mkisofs o tym pliku poprzez opcję -b i użyj także opcji -c. Szczegóły znajdziesz w pliku README.eltorito w pakiecie mkisofs. Interesującym zastosowaniem może być system DOS czy Windows zabezpieczony przed wirusami. Zaoszczędza to pieniędzy na dyski (jeśli masz sieć i używasz samby do wsytawiania danych użytkowików na serwerze plików). Jednak jest to czysta teoria, bo nikt mi jak dotąd nie dostarczył konkretów. Trochę szczegółów na temat startowych płyt z RedHatem można poczytać po adresem www.channel1.com/users/rodsmith/rhjol-technical.html <http://www.channel1.com/users/rodsmith/rhjol-technical.html>. 44..1122.. JJaakk zzrroobbiićć zzaappiissyywwaallnnyy CCDD--RROOMM?? Jest dostępna taka nakładka na system plików Linuksa, która montowana jest na CD-ROM i przyjmuje wszystkie operacje zapisu. Nowe i zmodyfikowane pliki zapisywane są gdzie indziej, ale dla użytkownika wygląda to, tak jakby operacje były wykonywane na płycie. Więcej informacji znajdziesz pod adresem home.att.net/~artnaseef/ovlfs/ovlfs.html. Jeśli to ci nie wystarczy, to poczekaj na system plików UDF, który ma być obsługiwany przez Linuksa. Albo pomóż go rozwijać trylinux.com/projects/udf/. 44..1133.. CCzzyy mmoożżlliiwwee jjeesstt wwyykkoorrzzyyssttaanniiee kkiillkkuu nnaaggrryywwaarreekk nnaa rraazz?? Tak. Chociaż zostało to przetestowane na razie z dwoma nagrywarkami. I potrzebujesz też łaty na jądro zapewniającej więcej buforów dla sterownika ogólnego urządzenia SCSI ( <ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha>). 44..1144.. KKttóórree nnoośśnniikkii ssąą nnaajjlleeppsszzee?? Niemiecki magazyn komputerowy "c't" ma listę wskazówek dotyczących kompaktów "noname" w wydaniu listopadowym 1996: ˇ płyty "noname" ogólnie nie są najwyższej jakości i nie powinny być używane ˇ jeśli nagrywalna płyta jest zniszczona, to odnosi się to pewnie do całej paczki (jeśli kupiłeś więcej); może masz szczęście i możesz użyć przynajmniej pierwsze 500MB tej płyty... ˇ nie dotykaj błyszczącej powierzchni przed nagraniem. 55.. RRoozzwwiiąązzyywwaanniiee pprroobblleemmóóww.. Zawsze pamiętaj, że popsutą płytę można wciąż użyć jako podstawki. :-) 55..11.. NNiiee ddzziiaałłaa:: ppoodd LLiinnuukksseemm.. Sprawdź najpierw czy nagrywarka działa w innych systemach. A konkretnie: ˇ Czy kontroler rozpoznaje nagrywarkę jako urządzenie SCSI? ˇ Czy oprogramowanie do nagrywarki ją rozpoznaje? ˇ Czy możliwe jest nagranie płyty przy pomocy dostarczonego oprogramowania? Jeśli "to nie działa" nawet w innych systemach, to masz jakiś konflikt sprzętowy albo popsuty sprzęt. Jeśli działa w innych systemach operacyjnych i używasz loadlina, aby startować Linuksa, to tu masz problem. Loadlin robi gorący reset i zostawia cały sprzęt już zainicjalizowany a to przeszkadza jądru Linuksa. 55..22.. BBłłąądd:: NNoo rreeaadd aacccceessss ffoorr ''ddeevv==22,,00''.. W Linuksie niektóre wersje bibilioteki C są niekompatybilne (mają błędy), i program skompilowany z jedną nie będzie działał z inną. Przykładem może być: [root@Blue /dev]# cdrecord -eject dev=2,0 cdrecord: No such file or directory. No read access for 'dev=2,0'. 55..33.. NNiiee ddzziiaałłaa:: ppoodd DDOOSS--eemm ii pprrzzyyjjaacciióółłmmii.. Najprzypuszczlaniej błędy te są powodowane: ˇ brakiem polecenia odłączenia/ponownego podłączenia na szynie SCSI ˇ niewystarczająco chłodzonym sprzętem ˇ popsutym sprzętem (to powinno być wykryte w punkcie 5.1) W różnych warunkach urządzenia SCSI odłączają się i podłączają ponownie samemu (elektronicznie) do szyny SCSI. Jeśli taka cecha nie jest dostępna (sprawdź parametry kontrolera i jądra) niektóre nagrywarki mają problemy podczas wypalania czy utrwalania danych na kompakcie. Szczególnie sterownik NCR 53c7,8xx SCSI ma standardowo wyłączoną tę cechę, więc możesz najpierw to sprawdzić: NCR53c7,8xx SCSI support [N/y/m/?] y always negotiate synchronous transfers [N/y/?] (NEW) n allow FAST-SCSI [10MHz] [N/y/?] (NEW) y allow DISCONNECT [N/y/?] (NEW) y 66.. PPooddzziięękkoowwaanniiaa.. AAllaann BBrroowwnn <<aallaann@@mmaannaawwaattuu..nneett..nnzz>> AArrtt SSttoonnee <<ssttoonnee@@mmaatthh..uubbcc..ccaa dostarczył pomysł na umieszczanie systemów plików innych niż ISO 9660 na płytach. BBaarrttoosszz MMaarruusszzeewwsskkii <<BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll>> zgłosił literówki BBeerrnnhhaarrdd GGuubbaannkkaa <<bbeegg@@iipppp--ggaarrcchhiinngg..mmppgg..ddee>> zauważył potrzebę posiadania nowszych narzędzi mount do montowania przy pomocy urządzenia loopback. RRoobbeerrtt DDoooolliittttllee <<bboobb..ddoooolliittttllee@@ssuunn..ccoomm>> dobra argumentacja, żeby wyrzucić cdwrite z tego HOWTO. BBrriiaann HH.. TToobbyy wygładził słownictwo. MMaarrttiinn SScchhuullzzee <<jjooeeyy@@IInnffooddrroomm..NNoorrtthh..DDEE>> podał informację o liście dyskusyjnej programu cdwrite. DDaallee SScchheeeettzz <<ddwwaarrff@@ppoollaarriiss..nneett>> pomógł w ulepszeniu sekcji na temat tworzenia obrazu CD. DDoonn HH.. OOlliivvee <<ddoonn@@aannddrroommeeddaa..ccaammppbbeellllssvviill..eedduu>> URL do narzędzia mkhybrid EErrwwiinn ZZooeerr <<eezzooeerr@@wwxxss..nnll>> GGeerraalldd CC SSnnyyddeerr <<ggccssnnyydd@@lloooopp..ccoomm>> sprawdził nagrywanie CD-ROM-u EXT2 (zobacz 4.4) JJaannnnee HHiimmaannkkaa <<sshheemm@@ooyytt..oouulluu..ffii>> adres do łaty dla jądra potrzebnej do czytania płyt Joliet. JJooeerrgg SScchhiilllliinngg <<sscchhiilllliinngg@@ffookkuuss..ggmmdd..ddee>> informacje na temat cdrecord. JJooss vvaann GGeeffffeenn <<jjooss@@ttnnjj..pphhyyss..ttuuee..nnll>> zauważył problem w 4.9 MMaarrkkuuss DDiicckkeebboohhmm <<mm..ddiicckkeebboohhmm@@uunnii--kkooeellnn..ddee>> JJeessppeerr PPeeddeerrsseenn <<jjeewwss@@iimmaaddaa..oouu..ddkk>> PPiieerrrree PPffiisstteerr <<pppp@@uupplliifftt..ffrr>> pomógł przy tworzeniu przepisu jak zrobić kopię 1:1 RRiicckk CCoocchhrraann <<rriicckk@@mmsscc..ccoorrnneellll..eedduu>> wskazówka na temat domyślnego wyłączenia cechy rozłączania/ponownego podłączania w sterowniku ncr. SStteepphhaann NNooyy <<ssttnnooyy@@mmii..uunnii--kkooeellnn..ddee>> informacje i doświadczenia na temat nagrywania płyt muzycznych. SStteepphheenn HHaarrrriiss <<sswweehh@@mmppnn..ccoomm>> dostarczył wskazówkę na temat zapisu płyt muzycznych. TThhee SShheeeeppyy OOnnee <<kkeerroo@@eessccaappee..ccoomm>> zasugerował użycie popsutych płyt jako podstawkę pod napoje. MMaarrttttii..RRaahhkkiillaa@@hhuutt..ffii zgłosił problem z wcześniej zainicjalizowanymi nagrywarkami przy starcie przy pomocy loadlin. 66..11.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego 1997-1999. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez tłumacza to: ˇ odwołania do polskich zasobów. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/CDROM-HOWTO.pl.txt�����������������������������������������������������0100664�0001750�0001750�00000235417�06717116340�017327� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ CDROM w Linux-ie Autor: Jeff Tranter, tranter@pobox.com v1.13, 23 Stycznia 1998 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.1, 28 Sierpnia 1998 Dokument ten opisuje jak zainstalować, skonfigurować i używać napędy CD-ROM pod Linux-em. Znajduje się tu lista obsługiwanego sprzętu oraz odpowiedzi na wiele często zadawanych pytań. Celem tego dokumentu jest jak najszybsze wprowadzenie nowego użytkownika oraz zmniejszenie ruchu na grupach i listach dyskusyjnych. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem www.shop.de. 11.. WWpprroowwaaddzzeenniiee.. To jest dokument "Linux CD-ROM HOWTO". Przeznaczony on jest jako szybki podręcznik zawierający wszystko co musisz wiedzieć, aby zainstalować i skonfigurować CD-ROM pod Linux-em. Zawarte są tutaj także odpowiedzi na często zadawane pytania oraz podane są odwołania do innych źródeł informacji związanych z aplikacjami i techniką CD- ROM. 11..11.. PPooddzziięękkoowwaanniiaa.. Większość z tych informacji pochodzi z dokumentaji, z plików źródłowych dostarczanych wraz z jądrem Linux-a, z FAQ grupy dyskusyjnej alt.cd-rom <news:alt.cd-rom> oraz od użytkowników Linux-a. Dzięki pakietowi sgml-tools <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/utils/text/> dokument ten jest dostępny w kilku formatach, wszystkie wygenerowane z jednego pliku źródłowego. 11..22.. HHiissttoorriiaa ddookkuummeennttuu.. WWeerrssjjaa 11..00 Pierwsza wersja dostępna publicznie. WWeerrssjjaa 11..11 CDU33A jest wyraźnie obsługiwany od jądra 1.1.20; uwagi na temat Reveal FIX; info na temat czytania ścieżek audio; info na temat kilku sterowników alfa; dodano sekcję Rozwiązywanie problemów; kilka innych mniejszych dodatków. WWeerrssjjaa 11..22 system plików ISO-9660 musi być montowany tylko-do-odczytu począwszy od jądra 1.1.33; wyjaśnione, że SB16 SCSI jest obsługiwane i nowsze napędy Aztech nie są; odwołania do programów photocd i xpcd; notka na temat nowej cechy SBPCD "auto eject". WWeerrssjjaa 11..33 Mała zmiana co do tego, że cecha "eject" w SBPCD jest domyślnie wyłączona od jądra 1.1.49; dodana informacja o dyskach XA i jak je zidentyfikować WWeerrssjjaa 11..44 HOWTO dostępne jest teraz w innych językach; napędy IBM i Longshine są obsługiwane przez SBPCD; alfa sterownik dla napędów Aztech; sterownik CDU-33 już nie szuka automatycznie, obsługuje PhotoCD i audio; obsługiwane są więcej niż 2 napędy SCSI; nowy sterownik dla IDE; przypomnienie o sprawdzeniu ustawienia zworek; można już ustawić SBPCD auto-eject przez IOCTL; lista napędów z obsługą wielosesyjności; pytanie na temat błyskania światełka na CDU-33 WWeerrssjjaa 11..55 Duża aktualizacja (byłem zajęty); dokument umieszczony w warunkach GPL; informacja na temat wielu nowych sterowników w jądrze; więcej informacji na temat konfiguracji i rozwiązywania problemów; dodano wiele odwołań HTML; i wiele innych mniejszych zmian. WWeerrssjjaa 11..66 Dodane odwołanie do programu eject; pytanie o łatę dla praw dostępu plików; odwołanie do strony Creative Labs; odwołanie do FAQ ATA/EIDE i serwera FTP; uwaga, że wiele napędów Creative Labs i Mitsumi to już EIDE; wzmianka o Supermount; napędy podane jako obsługujące dane cyfrowe są przestarzałe, zobacz cdda2wav; więcej informacji na temat zapisu płyt CD; informacja o wielodyskowych napędach EIDE; poprawione kilka lietrówek. WWeerrssjjaa 11..77 nowa wersja jądra; większość plików README zostałą przeniesiona do /usr/src/linux/Documentation; niektóre sterowniki nie są już eksperymentalne; kilka następnych obsługiwanych napędów; wyraźne wskazanie, że większość napędów jest teraz IDE/ATAPI; dodane pytania o obsługę Plug and Play i identyfikacji prędkości napędu; listy dyskusyjne vger zostały zamknięte; inne różne drobne zmiany. WWeerrssjjaa 11..88 pytania o to czemu CD-ROM przestaje pracować po zainstalowaniu; sterownik aztcd obsługuje teraz dwa napędy CyCDROM; kolejne prośby, żeby nie używać sterownika SBPCD z napędami IDE; obsługa zmiany dysków w niektórych napędach ATAPI; uwaga na temat (braku) obsługi napędów podłączanych przez port równoległy; najnowsze stabilne jądro to 2.0; inne różne drobne zmiany. WWeerrssjjaa 11..99 kilka starych pytań usunięte; nowy adres pocztowy autora; dostępne tłumaczenie Chińskie; zmienione kilka odwołań, aby wskazywały na najnowsze pakiety programów; więcej informacji na temat książek multimedialnych; małe zmiany literówek i gramatyczne. WWeerrssjjaa 11..1100 wyjaśnienie, że nowe napędy Aztech są ATAPI; dodane opcje CDU31A dla modularnego sterownika; opcja montowania do czytania plików ukrytych; dodałem sześciomiesięczną "datę ważności"; nowy URL do strony WWW o książce; mniejsze zmiany literówek i gramatyczne. WWeerrssjjaa 11..1111 dodane odwołania na temat napędów podłączanych przez porty równoległe; dodana informacja o sterowniku bpcd; nowy URL dla wersji Chińskiej; kolejny sterownik CR-56x; informacje na temat startowalnych (bootable) płyt; odpowiedź na pytanie o CD-ROM API; "Linux Multimedia Guide" jest teraz dostępny po japońsku i francusku. WWeerrssjjaa 11..1122 dodany odwołanie do polskiego tłumaczenia; CD-Writing już nie jest mini-HOWTO; dodane dwa pytania odnośnie systemu plików Joliet WWeerrssjjaa 11..1133 dodane pozycje dla indeksu [Od tłum.: jeszcze nie w polskiej wersji.]; HOWTO umieszczone pod licencją LDP zamiast GPL; SuperProbe zamienione na odwołanie do automountera opartego na jądrze. 11..33.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu.. Nowe wersje będą wysyłane okresowo na grupę dyskusyjną comp.os.linux.answers <news:comp.os.linux.answers>. Będą także umieszczane w różnych archiwach składujących takie dokumenty włącznie z ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/> - polską kopią SunSITE. Hipertekstowe wersje tego i wielu innych HOWTO są dostępne na wielu strona WWW, włączając http://sunsite.icm.edu.pl/ <http://sunsite.icm.edu.pl/pub/Linux/Documentation>. Większość dystrybucji Linux-a na CD-ROM-ach zawiera HOWTO, często w katalogu /usr/doc/, można także kupić drukowane wersje u różnych dystrybutorów. Czasami wersje dostępne na kompaktach, serwerach ftp, drukowane są przestarzałe. Jeśli data tego HOWTO jest starsza niż 6 miesięcy, to przypuszczalnie dostępna jest już nowsza wersja. Francuskie tłumaczenie Bruno Corneca <mailto:cornec@stna7.stna.dgac.fr> dostępne jest pod adresem ftp.ibp.fr <ftp://ftp.ibp.fr/pub2/linux/french/docs/HOWTO/>. Japońskie tłumaczenie Itsushi Minoura <mailto:minoura@uni.zool.s.u- tokyo.ac.jp> dostępne jest pod adresem jf.linux.or.jp <http://jf.linux.or.jp/JF/JF.html/>. Chińskie tłumaczenie (kodowanie BIG-5) Yung-kang Wu <mailto:yorkwu@ms4.hinet.net> dostępne jest pod adresem linux.ntcic.edu.tw <http://linux.ntcic.edu.tw/~yorkwu/linux/howto/cdrom/>. Polskie tłumaczenie właśnie czytasz. Większość tłumaczeń tego i innych HOWTO można także znaleźć pod adresem ftp.icm.edu.pl <ftp://ftp,icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/translations> Jeśli przetłumaczyłeś to HOWTO na inny język, daj mi znać a dołączę tutaj odwołanie. 11..44.. KKoommeennttaarrzzee.. Polegam na tobie, czytelniku, aby uczynić to HOWTO użytecznym. Jeśli masz jakieś sugestie, poprawki, czy komentarze, proszę przyślij mi je tranter@pobox.com <mailto:tranter@pobox.com>, a spróbuje zawrzeć je w następnej wersji. Jestem także chętny odpowiadać na ogólne pytania dotyczące CD-ROM-ów w Linux-ie. Zanim zadasz takie pytanie, przeczytaj proszę wszystkie informacje zawarte tutaj, a potem wyślij mi szczegółowe informacje o twoim problemie. Nie zadawaj proszę pytań na temat używania CD-ROM-ów w innych systemach niż Linux. Jeśli wydasz ten dokument na CD-ROM-ie albo w jakiejś trwałej kopii, to prosiłbym o przysłanie mi autorskiej kopii; zapytaj mnie pocztą elektroniczną o zwykły adres pocztowy. Rozważ także czy możesz udzielić jakiejś dotacji na rzecz "Linux Documentation Project", aby wspomóc darmową dokumentację dla Linux-a. Skontaktuj się z koordynatorem Linux HOWTO, Timem Bynamem <mailto:linux- howto@sunsite.unc.edu>, aby uzyskać więcej informacji. 11..55.. WWaarruunnkkii ddyyssttrryybbuuccjjaa.. Prawa autorskie należą do Jeffa Trantera (C) 1995-1998. Dokument ten może być dystrybuowany na warunkach ustalonych w licencji LDP ( <http://sunsite.icm.edu.pl/pub/Linux/Documentation/COPYRIGHT.html>) 22.. TTeecchhnnoollooggiiaa CCDD--RROOMM.. "CD-ROM jest pamięcią tylko-do-odczytu a system audio dla płyt kompaktowych jest dostępny jako pakiet danych cyfrowych. Kiedy słuchasz płyt z muzyką, włóż proszę wtyczkę od słuchawek do karty dźwiękowej." -- z podręcznika CD-ROM-u Nie panikuj! Świat technologii CD-ROM nie jest taki skomplikowany jak twój podręcznik. CD-ROM to skrót od "Compact Disc Read Only Memory", nośnik danych wykorzystujący laser optyczny, aby mikroskopijne zagłębienia na aluminiowanej warstwie dysku poliwęglanowego. Ten sam format używany jest dla płyt muzycznych. Z powodu dużej pojemności, niezawodności i niskiego kosztu, CD-ROM stał się najbardziej popularnym medium do zapisywania danych. Pojemność CD-ROM-u to około 650 MB, równowartość 500 dyskietek 3,5" lub 250.000 wklepanych stron. Napędy pierwszej generacji (znane jako _p_o_j_e_d_y_n_c_z_e_j _p_r_ę_d_k_o_ś_c_i), pracowały z prędkością ok. 150 kb/s. Producenci sprzętu zaprezentowali potem napędu podwójnej prędkości (300 kb/s), czterokrotnej prędkości (600 kb/s) i szybsze. Kiedy ja to piszę, są już dostępne napędu o prędkości 24-krotnej. Większość napędów CD-ROM używa albo "Small Computer Systems Interface" (SCSI), ulepszony interfejs IDE ATAPI, albo interfejs sprzedawcy. Mają zwykle także możliwość słuchania płyt muzycznych poprzez zewnętrzne słuchawki, albo wyjście zewnętrzne. Niektóre kompakty pozwalają także na czytanie ramek danych z kompaktu muzycznego w formie cyfrowej. CD-ROM-y są zwykle sformatowane systemem plików ISO-9660 (wcześniej zwanym _H_i_g_h _S_i_e_r_r_a). Format ten ogranicza nazwy plików do stylu MS- DOS-a (8+3). _R_o_c_k _R_i_d_g_e _E_x_t_e_n_s_i_o_n_s wykorzystuje niezdefiniowane pola w standardzie ISO-9660, aby obsługiwać dłuższe nazwy i dodatkowo informacje typowo unix-owe (właściciel pliku, symboliczne dowiązania itp.) _P_h_o_t_o_C_D to standard rozwinięty przez Kodak-a dla zapisywania fotografii jako danych cyfrowych na CD-ROM-ach. Posiadając odpowiednie oprogramowanie, możesz te obrazki oglądać, obrabiać je lub wysłać na drukarkę. Informacje mogą być później dodane do PhotoCD; jest to znane jako _w_i_e_l_o_s_e_s_y_j_n_o_ś_ć. Nagrywarki CD (CD-R) są także dostępne i są coraz bardziej opłacalne. Używają one innych środków i specjalizowanego wyposażenia do nagrywania, ale płyta wynikowa może być odczytana przez jakikolwiek napęd CD-ROM. W przyszłości spodziewa się, że sprzedawy CD-ROM-ów zaoferują nowe technologie, które będą zwiększały pojemność wraz ze wzrostem zapotrzebowania. 33.. OObbssłłuuggiiwwaannyy sspprrzzęętt.. W sekcji tej znajdują się sterowniki oraz interfejsy, które są obecnie obsługiwane przez Linux-a. Informacje oparte są na najnowszym stabilnym jądrze - 2.0.33. Rozwojowe jądra (2.1.x) są także dostępne, ale nie ma gwarancji, że będą stabilne. Informacje te są ważne tylko dla Linux-a na platformie Intel. Wiele z nich można także zastosować dla innych platform, ale nie mam żadnych doświadczeń czy informacji z pierwszej ręki. 33..11.. NNaappęęddyy AATTAAPPII CCDD--RROOMM.. ATAPI (ATA Packet Interface) jest protokołem do kontrolowania urządzeń masowego zapisu. Tworzy on interfejs ATA (AT Attachment), oficjalna standardowa nazwa ANSI dla intrfejsów IDE rozwijanych dla napędów dysków twardych. ATAPI jest popularnie stosowany do dysków twardych, CD-ROM-ów, taśm i innych urządzeń. Obecnie najbardziej popularny interfejs - oferuje większość funkcji SCSI, bez drogich kontrolerów czy kabli. Jądro Linux-a ma sterownik urządzenia, który powinien współpracować z każdym napędem CD-ROM ATAPI. Sprzedawcy dostarczający kompatybilne napędy to: Aztech, Mitsumi, NEC, Sony, Creative Labs i Vertos. Jeśli nabyłeś ostatnio napęd CD-ROM, szczególnie jeśli jest on czterokrotnej prędkości lub szybszy, to jest to prawie na pewno IDE/ATAPI. 33..22.. NNaappęęddyy SSCCSSII.. SCSI (Small Computer Systems Interface) jest popularnym formatem dla napędów CD-ROM. Głównymi zaletami są rozsądnie szybka prędkość działania, możliwość podłączania wielu urządzeń, i obsługa na wielu platformach komputerowych. Jedną z wad jest droga karta kontrolera i kabli. Każdy napęd CD-ROM SCSI z blokami o rozmiarze 512 lub 2048 bajtów powinien działać pod Linxu-em; zawiera się tu stanowcza większość napędów CD-ROM dostępnych na rynku. Będziesz także potrzebował obsługiwanej karty SCSI; w SCSI HOWTO <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/SCSI-HOWTO> znajdziesz więcej informacji na temat interfejsów sprzętowych. Zauważ, że niektóre CD-ROM-y zawierają swoje własne kontrolery ze zmodyfikowanym interfejsem, który nie jest w peni kompatybilny z SCSI (np. może nie pozwalać na dodawanie innych urządzeń na szynie SCSI). Taki sprzęt raczej _n_i_e będzie działać na Linux-ie. 33..33.. NNaappęęddyy CCDD--RROOMM zz wwłłaassnnyymm iinntteerrffeejjsseemm.. Dostępne jest kilka takich CD-ROM-ów; interfejs jest z reguły dostarczany na karcie dźwiękowej. Proste karty z takimi interfejsami równorzędnymi do tych na kartach dźwiękowych są także dostępne. Napędy te są z reguły tańsze i mniejsze niż napędy SCSI. Głównymi ich wadami są brak stadaryzacji i możliwości rozszerzania. Zauważ, że własne interfejsy są czasami mylnie nazywane interfejsami IDE, ponieważ tak jak dyski IDE, używają prostego interfejsu opartego na szynie PC/AT. Żeby zwiększyć całe zamieszanie niektórzy dostawcy, najczęściej Creative Labs, dostarczyli wiele różnych typów napędów CD- ROM i oferowali swoje interfejsy, interfejsy SCSI i ATAPI na swoich kartach dźwiękowych. W tabeli poniżej znajdują się napędy CD-ROM z własnymi interfejsami, które działają pod Linux-em. Sterowniki dla dodatkowych urządzeń mogą być dostępne w ostatniej wersji rozwojowej jądra albo jako łaty do jądra. Te drugie można najczęściej znaleźć na ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/kernel/patches/cdrom/>. Sprawdź także ostatnie informacje zawarte w plikach README dostarczanych wraz z jądrem Linux-a umieszczonych w katalogu /usr/src/linux/Documentation/cdrom. Napędy CD-ROM ze swoimi interfejsami Sprzedawca Model Sterownik w jądrze Uwagi ------ ----- ------------- -------- Panasonic CR-521 sbpcd 1 Panasonic CR-522 sbpcd 1 Panasonic CR-523 sbpcd 1 Panasonic CR-562 sbpcd 1 Panasonic CR-563 sbpcd 1 Creative Labs CD-200 sbpcd IBM External ISA sbpcd 2 Longshine LCS-7260 sbpcd Teac CD-55A sbpcd Sony CDU-31A cdu31a Sony CDU-33A cdu31a Sony CDU-535 sonycd535 3 Sony CDU-531 sonycd535 Aztech CDA268-01A aztcd 4 Orchid CDS-3110 aztcd Okano/Wearnes CDD110 aztcd Conrad TXC aztcd CyCDROM CR520ie aztcd CyCDROM CR940ie aztcd GoldStar R420 gscd 5 Philips/LMS CM206 cm206 6 Mitsumi CRMC LU005S mcd/mcdx 7, 8 Mitsumi FX001 mcd/mcdx 7, 8 Optics Storage Dolphin 8000AT optcd Lasermate CR328A optcd Sanyo H94A sjcd various various isp16 9 MicroSolutions Backpack bpcd Uwagi: 1. Te napędy mogą być sprzedawane pod nazwą Creative labs, Panasonic, matsushita lub Kotobuki. 2. Ten napęd jest taki sam jak Panasonic CR-562. 3. Może być także sprzedawany jako Procomm. 4. Ten sterownik jest tylko do CDA268-01A. Inne modele, włącznie z CDA268-03I i CDA269-031SE nie mają własnych interfejsów i powinny używać sterownika IDECD (ATAPI) zawartego w jądrze. 5. Może być także sprzedawany jako część pakietu Reveal Multimedia Kit 6. Philips CM205 nie jest obsługiwany przez ten sterownik, ale jest osobny sterownik alfa lmscd0.4.tar.gz dostępny na ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/kernel/patches/cdrom/>. 7. Może być także sprzedawany jako Radio Shack. 8. Są dostępne dwa sterowniki. "mcd" jest oryginalny i "mcdx" jest nowszym z większą ilością funkcji (ale możliwe, że mniej stabilny). 9. Ten sterownik działa z napędami CD-ROM, które są dołączone do interfejsu na kartach dźwiękowych ISP16, MAD16 albo Mozart. Jeśli napęd podany w powyższej liście nie jest obsługiwany przez jądro, to pewnie musisz uaktualnić je do nowszej wersji. Jeśli twój napęd nie jest którymś z podanych wyżej, szczególnie jeśli został kupiony ostatnio i jest czterokrotnej prędkości lub szybszy, to najprzypuszczalnej używa on interfejsu IDE/ATAPI, wymienionego w poprzedniej sekcji. _P_r_o_s_t_y_m _n_a_j_p_o_p_u_l_a_r_n_i_e_j_s_z_y_m _b_ł_ę_d_e_m _p_o_p_e_ł_n_i_a_n_y_m _p_r_z_e_z _u_ż_y_t_k_o_w_n_i_k_ó_w _C_D_-_R_O_M_-_u _n_a _L_i_n_u_x_-_i_e _j_e_s_t _z_a_k_ł_a_d_a_n_i_e_, _ż_e _k_a_ż_d_y _n_a_p_ę_d _p_o_d_ł_ą_c_z_o_n_y _d_o _k_a_r_t_y _S_o_u_n_d_B_l_a_s_t_e_r _p_o_w_i_n_i_e_n _u_ż_y_w_a_ć _s_t_e_r_o_w_n_i_k_a _S_B_P_C_D. Creative Labs i większość innych sprzedawców nie sprzedają już napędów z własnymi interfejsami, przychylają się do standardu ATAPI/IDE. 33..44.. NNaappęęddyy ppooddłłąącczzaannee pprrzzeezz ppoorrttyy rróówwnnoolleeggłłee.. Niektórzy sprzedawcy sprzedają takie właśnie CD-ROM-y. Jedyny napęd tego rodzaju obsługiwany obecnie przez Linux-a, to MicroSolutions Backpack. Sterowniki dla jeszcze kilku takich napędów są dostępne osobno jako łaty na jądro albo ładowalne moduły. Najnowsze informacje na ten temat możesz znaleźć pod adresem <http://www.torque.net/linux-pp.html>. 33..55.. KKoolleejjnnee sstteerroowwnniikkii.. Jest jeszcze jeden sterownik w jądrze dla napędów Panasonic/Matsushita CR-56x - pcd-0.29.tar.gz. Napisany został przez Zoltana Vorosbaranyi. Można go znaleźć pod adresem ftp.tarki.hu <ftp://ftp.tarki.hu/pub/linux/pcd/>. 44.. IInnssttaallaaccjjaa.. 1. Instalacja sprzętu. 2. Konfiguracja i kompilacja jądra. 3. Tworzenie plików urządzeń i ustawianie parametrów startowych. 4. Startowanie jądra. 5. Montowanie nośnika. Kolejne sekcje omawiają każdy ten punkt w szczegółach. 44..11.. IInnssttaallaaccjjaa sspprrzzęęttuu.. Postępuj zgodnie ze wskazówkami producenta, albo poproś sprzedawcę o zainstalowanie. Szczegóły będą się różniły w zależności od tego czy napęd jest wewnętrzny czy zewnętrzny, od typu interfejsu. Nie ma żadnych specjalnych wymagań instalacyjnych co do Linux-a. Możesz musieć poustawiać odpowiednio zworki na napędzie i/lub karcie z interfejsem; niektóre sterowniki w jądrze zawierają pliki README, w których są takie informacje. Jak to jest wyjaśnione w pliku ide-cd, CD-ROM-y ATAPI powinny być ustawione jako "single" lub "master", a nie "slave" jeśli tylko jedno urządzenie IDE jest podłączone do interfejsu (chociaż w ostatnich jądrach to ograniczenie nie jest już stosowane). 44..22.. KKoonnffiigguurraaccjjaa ii kkoommppiillaaccjjaa jjąąddrraa.. Jeśli instalujesz Linux-a z CD-ROM-u to najprawdopodobniej użyjesz dyskietek "boot" i/lub "root" dostarczonych jako część dystrybucji Linux-a. Jeśli jest to możliwe, powinieneś wybrać dyskietkę startową z jądrem zawierającym sterownik dla twojego CD-ROM-u. Jeśli nie możesz znaleźć takiej dyskietki, to jest kilka rozwiązań: 1. Instalacja przez sieć. 2. Wystartuj DOS-a i zainstaluj pliki Linux-a na swoim dysku twardym 3. Wystartuj DOS-a i stwórz odpowiednie dyskietki do instalacji Linux- a 4. Znajdź kogoś, kto może ci zrobić dyskietkę startową z odpowiednim sterownikiem. W Installation-HOWTO <http://www.jtz.org.pl/Html/Install- HOWTO.pl.html> (dostępnym również w języku polskim) znajdziesz więcej informacji na temat instalacji Linux-a. Jeśli kupiłeś Linux-a na CD- ROM-ie, to przypuszczalnie zawarte są jakieś informacje dotyczące instalacji (taka mała książeczka wewnątrz skrzyneczki na biżuterię i/lub pliki na płycie). Po zainstalowaniu Linux-a, większość użytkowników chce skompilować jądro, zwykle z jednego z tych powodów: ˇ aby obsługiwać napęd CD-ROM albo inny sprzęt ˇ żeby mieć nowsze jądro ˇ żeby zwolnić pamięć minimalizując rozmiar jądra Szczegóły na temat kompilacji jądra można znaleźć w Kernel-HOWTO <http://www.jtz.org.pl/Html/Kernel-HOWTO.pl.html> dostępnym w języku polskim. Ja wspomnę tutaj tylko kilka rzeczy specyficznych dla CD- ROM-ów. Oczywiście, musisz zaznaczyć obsługę swojego CD-ROM-u podczas wykonywania polecenia "make config". Jeśli masz CD-ROM ATAPI, to musisz odpowiedzieć "yes" na te pytania: Enhanced IDE/MFM/RLL disk/cdrom/tape support (CONFIG_BLK_DEV_IDE) [Y/n/?] Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [Y/n/?] dla napędów SCSI włącz te opcje: SCSI support (CONFIG_SCSI) [Y/n/m/?] SCSI CD-ROM support (CONFIG_BLK_DEV_SR) [Y/n/m/?] Włącz także obsługę swojego kontrolera: Adaptec AHA152X support (CONFIG_SCSI_AHA152X) [Y/n/m/?] Dla napędów z własnymi interfejsami włącz odpowiedni sterownik. Możesz użyć tabeli podanej wcześniej, aby zobaczyć jaki sterownik jest potrzebny dla twojego modelu. Wirtualnie wszystkie CD-ROM-y używają systemu plików ISO-9660, więc musisz także włączyć jego obsługę: ISO9660 cdrom filesystem support (CONFIG_ISO9660_FS) [Y/n/m/?] Chociaż nie jest to potrzebne do działania CD-ROM-u, jeśli masz kartę dźwiękową, która jest obsługiwana przez Linux-a, to możesz także dołączyć jej obsługę. Odpowiednim dokumentem będzie tutaj Sound-HOWTO <http://www.jtz.org.pl/Html/Sound-HOWTO.pl.html> dostępne także w języku polskim. Powinieneś potem postępować zgodnie ze zwykłą procedurą kompilacji i instalacji jądra. Nie startuj nowego jądra dopóki nie stworzysz plików urządzeń i nie ustawisz parametrów startowych tak jak to jest opisane w następnej sekcji. Obsługa systemu plików ISO-9660, tak jak prawie wszystkie sterowniki do CD-ROM-ów może być stworzona jako ładowalny moduł. Pozwala to na ładowanie i usuwanie go z pamięci bez potrzeby restartu komputera, uwalniając pamięć. Polecam, zebyś spróbował najpierw zainstalować CD- ROM ze sterownikami wkompilowanymi w jądro. Jak używać modułów opisane jest w dokumentaji dołączonej do nich i w Kernel-HOWTO <http://www.jtz.org.pl/Html/Kernel-HOWTO.pl.html>. Jeśli twój napęd nie jest obsługiwany przez twoje jądro, to musisz pewnie uaktualnić je. Możliwe też, że musisz użyć sterownika, który dostarczany jest osobno. To z reguły łączy się z łataniem jądra. Jeszcze raz Kernel-HOWTO <http://www.jtz.org.pl/Html/Kernel-HOWTO.pl.html> wyjaśnia jak się to robi. Zauważ, że możesz także wybrać konfigurację a'la menu poleceniem "make menuconfig" oraz konfigurację w okienkach X11 "make xconfig". Wszystkie trzy rodzaje konfiguracji mają podręczną pomoc. 44..33.. TTwwoorrzzeenniiee pplliikkóóww uurrzząąddzzeeńń ii uussttaawwiiaanniiee ppaarraammeettrróóww ssttaarrttoowwyycchh.. Jądro używa plików urządzeń aby zidentyfikować którego sterownika urządzeń użyć. Jeśli masz standardową dystrybucję, to możliwe, że stworzyłeś te pliki podczas instalacji. Na przykład w Slackware jest narzędzie setup w postaci menu, które zawiera ustawienie CD-ROM-u oraz większość systemów ma skrypt /dev/MAKEDEV. Jeśli nie użyjesz tych metod, to możesz to zrobić ręcznie, jak to jest opisane dalej w tym dokumencie. Nawet jeśli skorzystasz z tych metod, to zaleca się żebyś chociaż zweryfikował te pliki z informacjami zawartymi tutaj. Pliki urządzeń tworzy się poleceniami wykonywanymi w powłoce, w zależności od twojego napędu. Powinieneś to robić jako root. Zauważ, że niektóre dystrybucje Linux-a mogą używać trochę innego nazewnictwa niż podane tutaj. Zaleca się także, żebyś zrobił symboliczne dowiązanie do urządzenia CD-ROM-u, aby łatwiej je zapamiętać. Na przykład, dowiązanie dla napędu IDE, który jest drugim urządzeniem na drugim interfejsie, należy zrobić poleceniem: # ln -s /dev/hdd /dev/cdrom Jeśli chcesz słuchać płyt audio, to będziesz musiał ustawić odpowiednie prawa dostępu dla pliku urządzenia (tego prawdziwego, a nie dowiązania), aby pozwolić wszystkim użytkownikom z niego czytać, np. # chmod 664 /dev/hdd # ls -l /dev/hdd brw-rw-r-- 1 root disk 22, 64 Feb 4 1995 /dev/hdd Podczas startu Linux-a, sterownik urządzenia próbuje sprawdzić czy obecne są odpowiednie urządzenia, zwykle robi to, sprawdzając specyficzne adresy. Wiele z tych sterowników sprawdza kilka adresów, ale z powodu różnic w konfiguracji, możliwych konfliktów urządzeń, ograniczeń sprzętowych, potrzebują one czasami pomocy w identyfikacji adresów i innych parametrów. Większość sterowników obsługuje opcje podawane w linii poleceń jądra, aby przekazać te informacje do sterownika urządzenia. Może się to odbyć interaktywnie, albo częściej, wpisując tę informację do konfiguracji programu ładującego system. Np. przy LILO, dodałbyś do swojego pliku /etc/lilo.conf polecenie append, takie jak poniżej: append = "sbpcd=0x230,SoundBlaster" Więcej informacji znajdziesz w dokumentacji do LILO. W następnej sekcji omówię sprawy dotyczące konkretnych sterowników, włącznie z plikami urządzeń, parametrami startowymi i możliwościami poszczególnych sterowników. Przypuszczalnie powinieneś przeczytać tylko sekcję dla twojego typu napędu. Pliki README są zwykle w katalogu /usr/src/linux/Documentation/cdrom. 44..33..11.. SStteerroowwnniikk ssbbppccdd.. Autor główny: Eberhard Moenkeberg (emoenke@gwdg.de) Obsługa wielosesyjności: tak (but not all drives) Obsługa wielu napędów: tak Obsługa ładowalnego modułu: tak Czytanie ramek audio: tak (CR-562, CR-563, CD-200 only) Automatyczne wykrywanie: tak Plik urządzenia: /dev/sbpcd, major 25 Plik konfiguracyjny: sbpcd.h Opcja konfiguracyjna dla jądra: Matsushita/Panasonic CDROM support? Plik README: sbpcd Sterownik ten przyjmuje następujące parametry: sbpcd=<io-address>,<interface-type> Pierwszy parametr to adres bazowy urządzenia (np. 0x230) a <interface- type> to jedno z "SoundBlaster", "LaserMate" lub "SPEA". W pliku sbpcd.h znajdziesz wskazówki którego typu interfejsu użyć. Parametr sbpcd=0 wyłącza automatyczne wykrywanie, wyłączając tym samym sterownik. Plik urządzenia może być stworzony poleceniem: # mknod /dev/sbpcd b 25 0 Obsługiwane jest do czterech napędów na kontrolerze. Następne trzy napędy na pierwszym kontrolerze miałyby numery poboczne urządzenia od 1 do 3. Jeśli masz więcej niż jeden kontroler, stwórz urządzenia z liczbą główną 26, 27 i 28, aż do maksimum 4 kontrolerów (to w sumie 16 napędów CD-ROM; mam nadzieję, że dla większości użytkowników to wystarczająco :-). Więcej informacji na temat tego sterownika znajdziesz w pliku sbpcd. _J_e_ś_l_i _k_u_p_i_ł_e_ś _o_s_t_a_t_n_i_o _n_a_p_ę_d _C_D_-_R_O_M_, _t_o _n_i_e _z_a_k_ł_a_d_a_j_, _ż_e _j_e_ś_l_i _p_o_d_ł_ą_c_z_y _s_i_ę _g_o _d_o _k_a_r_t_y _S_o_u_n_d_B_l_a_s_t_e_r_, _t_o _p_o_w_i_n_i_e_n _o_n _u_ż_y_w_a_ć _t_e_g_o _s_t_e_r_o_w_n_i_k_a_. _W_i_ę_k_s_z_o_ś_ć _n_a_p_ę_d_ó_w _s_p_r_z_e_d_a_w_a_n_y_c_h _t_e_r_a_z _p_r_z_e_z _C_r_e_a_t_i_v_e _L_a_b_s _t_o _n_a_p_ę_d_y _E_I_D_EATAPI. 44..33..22.. SStteerroowwnniikk SSoonnyyccdduu553355.. Autor główny: Ken Pizzini (ken@halcyon.com) Obsługa wielosesyjności: nie Obsługa wielu napędów: nie Obsługa ładowalnego modułu: tak Czytanie ramek audio: nie Automatyczne wykrywanie: nie Plik urządzenia: /dev/sonycd535, major 24 Plik konfiguracyjny: sonycd535.h Opcja konfiguracyjna dla jądra: Sony CDU535 CDROM support? Plik README: sonycd535 Sterownik ten przyjmuje parametry w postaci: sonycd535=<io-address> <io-address> oznacza adres bazowy kontrolera (np. 0x320). Alternatywnie możesz ustawić ten adres w pliku sonycd535.h i wkompilować tę wartość na stałe. Plik urządzenia może być stworzony poleceniem: # mknod /dev/sonycd535 b 24 0 Niektóre dystrybucje Linux-a używają /dev/sonycd dla tego urządzenia. Starsze wersje sterownika używały głównego numeru 21; upewnij się, że twój plik urządzenia jest poprawny. Sterownik ten był wcześniej dystrybuowany jako łata, ale teraz jest częścią standardowego jądra. Więcej informacji na temat tego strownika znajdziesz w pliku sonycd535. 44..33..33.. SStteerroowwnniikk ccdduu3311aa Autor główny: Corey Minyard (minyard@-rch.cirr.com) Obsługa wielosesyjności: tak Obsługa wielu napędów: nie Obsługa ładowalnego modułu: tak Czytanie ramek audio: tak Automatyczne wykrywanie: nie Plik urządzenia: /dev/cdu31a, major 15 Plik konfiguracyjny: cdu31a.h Opcja konfiguracyjna dla jądra: Sony CDU31A/CDU33A CDROM support? Plik README: cdu31a Sterownik ten przyjmuje opcje w postaci: cdu31a=<io-address>,<interrupt>,PAS Pierwszy numer, to adres bazowy I/O karty (np. 0x340). Drugi jest numerem przerwania, którego należy użyć (0 oznacza próbkowanie(polling) i/o). Opcjonalny trzeci parametr pownien mieć wartość PAS jeśli napęd podłączony jest do karty dźwiękowej Pro Audio Spectrum 16, w innym przypadku należy go opuścić. Jeśli sterownik jest modułem, to używa on trochę innego formatu. Podczas ładowania modułu programem modprobe lub insmod parametry przyjmują postać: cdu31a_port=<io-address> cdu31a_irq=<interrupt> Adres bazowy I/O jest wymagany, ale numer przerwania - nie. Plik urządzenia może być stworzony przy pomocy: # mknod /dev/cdu31a b 15 0 Więcej informacji na temat tego sterownika znajdziesz w pliku cdu31a. Zajrzyj także na stronę WWW zrobioną przez Jeffreya Oxenreidera (zureal@infinet.com <mailto:zureal@infinet.com>), która zawiera opis wielu problemów dotyczących tych sterowników. Można ją znaleźć pod adresem www.infinet.com <http://www.infinet.com/~zureal/cdu31a.html>. 44..33..44.. SStteerroowwnniikk aazzttccdd.. Autor główny: Werner Zimmermann (zimmerma@rz.fht-esslingen.de) Obsługa wielosesyjności: tak Obsługa wielu napędów: nie Obsługa ładowalnego modułu: tak Czytanie ramek audio: nie Automatyczne wykrywanie: nie Plik urządzenia: /dev/aztcd0, major 29 Plik konfiguracyjny: aztcd.h Opcja konfiguracyjna dla jądra: Aztech/Orchid/Okano/Wearnes (non IDE) CDROM support? Plik README: aztcd Sterownik ten przyjmuje parametry w postaci: aztcd=<io-address> Parametrem jest tutaj adres bazowy I/O karty (np. 0x340). Plik urządzenia może być stworzony przy pomocy: # mknod /dev/aztcd0 b 29 0 Zauważ, że sterownik ten jest przeznaczony tylko dla modelu CDA268-01A. Inne modele, włącznie z CDA268-03I i CDA269-031SE, nie posiadają własnych interfejsów i powinny używać standardowego sterownika IDECD (ATAPI). Więcej informacji na temat tego sterownika znajdziesz w pliku aztcd. 44..33..55.. SStteerroowwnniikk ggssccdd.. Autor główny: Oliver Raupach (raupach@nwfs1.rz.fh-hannover.de) Obsługa wielosesyjności: nie Obsługa wielu napędów: nie Obsługa ładowalnego modułu: tak Czytanie ramek audio: nie Automatyczne wykrywanie: nie Plik urządzenia: /dev/gscd0, major 16 Plik konfiguracyjny: gscd.h Opcja konfiguracyjna dla jądra: Goldstar R420 CDROM support? Plik README: gscd Sterownik ten przyjmuje parametry w postaci: gscd=<io-address> Jedynym parametrem jest tutaj adres bazowy I/O karty (np. 0x340). Plik urządzenia może być stworzony przy pomocy: # mknod /dev/gscd0 b 16 0 Więcej informacji na temat tego sterownika znajdziesz w pliku gscd oraz na stronie WWW linux.rz.fh-hannover.de <http://linux.rz.fh- hannover.de/~raupach/>. 44..33..66.. SStteerroowwnniikk mmccdd.. Autor główny: Martin (martin@bdsi.com) Obsługa wielosesyjności: nie bsługa wielu napędów: nie Obsługa ładowalnego modułu: tak Czytanie ramek audio: nie Automatyczne wykrywanie: nie Plik urządzenia: /dev/mcd, major 23 Plik konfiguracyjny: mcd.h Opcja konfiguracyjna dla jądra: Standard Mitsumi CDROM support? Plik README: mcd To jest starszy sterownik dla napędów Mitsumi, który był dostępny przez jakiś czas. Możesz spróbować nowszego sterownika mcdx, który ma kilka nowych funkcji, ale jest przypuszczalnie mniej stabilny. Sterownik ten przyjmuje następujące parametry: mcd=<io-address>,<irq> Kolejne parametry to adres bazowy I/O karty (np. 0x340) oraz numer przerwania. Plik urządzenia można stworzyć poleceniem: # mknod /dev/mcd b 23 0 Więcej informacji na temat tego sterownika znajdziesz w pliku mcd. 44..33..77.. SStteerroowwnniikk mmccddxx.. Autor główny: Heiko Schlittermann Obsługa wielosesyjności: tak Obsługa wielu napędów: tak Obsługa ładowalnego modułu: tak Czytanie ramek audio: nie (brak obsługi sprzętowej) Automatyczne wykrywanie: nie Plik urządzenia: /dev/mcdx0, major 20 Plik konfiguracyjny: mcdx.h Opcja konfiguracyjna dla jądra: Experimental Mitsumi support? Plik README: mcdx Jest to nowszy sterownik dla napędów Mitsumi. Starszy i przypuszczalnie bardziej stabilny - mcd - jest nadal dostępny. Sterownik ten przyjmuje następujące parametry: mcdx=<io-address>,<irq> Kolejne parametry to adres bazowy I/O karty (np. 0x340) i numer przerwania. Plik urządzenia można stworzyć poleceniem: # mknod /dev/mcdx0 b 20 0 Jeśli kupiłeś ostatnio napęd CD-ROM Mitsumi, to nie zakładaj, że powinien on używać tego sterownika. Niektóre modele mitsumi są teraz typu EIDE/ATAPI i powinny używać standardowego sterownika idecd. Więcej informacji na temat tego sterownika znajdziesz w pliku mcdx. 44..33..88.. SStteerroowwnniikk ccmm220066 Autor główny: David A. van Leeuwen (david@tm.tno.) Obsługa wielosesyjności: tak Obsługa wielu napędów: nie Obsługa ładowalnego modułu: tak Czytanie ramek audio: nie Automatyczne wykrywanie: tak Plik urządzenia: /dev/cm206cd, major 32 Plik konfiguracyjny: cm206.h Opcja konfiguracyjna dla jądra: Philips/LMS CM206 CDROM support? Plik README: cm206 Sterownik ten przyjmuje następujące parametry: cm206=<io-address>,<interrupt> Pierwszy numer jest adresem bazowym I/O karty (np. 0x340). Drugi to numer przerwania. Plik urządzenia może być stworzony poleceniem: # mknod /dev/cm206cd b 32 0 Więcej informacji na temat tego sterownika znajdziesz w pliku cm206. 44..33..99.. SStteerroowwnniikk ooppttccdd.. Autor główny: Leo Spiekman (spiekman@dutette.et.tudelft.nl) Obsługa wielosesyjności: tak Obsługa wielu napędów: nie Obsługa ładowalnego modułu: tak Czytanie ramek audio: nie Automatyczne wykrywanie: nie Plik urządzenia: /dev/optcd0, major 17 Plik konfiguracyjny: optcd.h Opcja konfiguracyjna dla jądra: Experimental Optics Storage ... CDROM support? Plik README: optcd Sterownik ten przyjmuje następujące parametry: optcd=<io-address> Parametrem jest tutaj adres bazowy I/O karty (np. 0x340). Plik urządzenia można stworzyć: # mknod /dev/optcd0 b 17 0 Więcej informacji na temat tego sterownika znajdziesz w pliku optcd. 44..33..1100.. SStteerroowwnniikk ssjjccdd.. Autor główny: Vadim V. Model (vadim@rbrf.msk.su) Obsługa wielosesyjności: nie Obsługa wielu napędów: nie Obsługa ładowalnego modułu: tak Czytanie ramek audio: nie Automatyczne wykrywanie: nie Plik urządzenia: /dev/sjcd, major 18 Plik konfiguracyjny: sjcd.h Opcja konfiguracyjna dla jądra: Experimental Sanyo H94A CDROM support? Plik README: sjcd Sterownik ten przyjmuje następujące parametry: sjcd=<io-address>,<interrupt>,<dma> Kolejne parametry to: adres bazowy, przerwanie i kanał DMA (np. sjcd=0x340,10,5). Plik urządzenia może być stworzony poleceniem: # mknod /dev/sjcd b 18 0 Więcej informacji na temat tego sterownika znajdziesz w pliku sjcd. 44..33..1111.. SStteerroowwnniikk bbppccdd.. Autor główny: Grant R. Guenther (grant@torque.net) Obsługa wielosesyjności: nie wiadomo Obsługa wielu napędów: nie Obsługa ładowalnego modułu: tak Czytanie ramek audio: nie Automatyczne wykrywanie: tak Plik urządzenia: /dev/bpcd, major 41 Plik konfiguracyjny: bpcd.h Opcja konfiguracyjna dla jądra: MicroSolutions backpack CDROM support? Plik README: bpcd Sterownik ten przyjmuje parametry w postaci: bpcd=<io-address> Parametr oznacza tu adres bazowy (np. bpcd=0x3bc). Plik urządzenia można stworzyć poleceniem: # mknod /dev/bpcd b 41 0 Sterownik ten jest zawarty w jądrach wersji 2.1. Więcej informacji na temat tego sterownika znajdziesz w pliku bpcd. 44..33..1122.. SStteerroowwnniikk SSCCSSII.. Autor główny: David Giller Obsługa wielosesyjności: tak (zależy od napędu) Obsługa wielu napędów: tak Obsługa ładowalnego modułu: tak Czytanie ramek audio: nie Automatyczne wykrywanie: tak Plik urządzenia: /dev/scd0, major 11 Plik konfiguracyjny: cdrom.h Opcja konfiguracyjna dla jądra: SCSI CDROM support? Plik README: brak Parametry podawane podczas startu są zależne od typu kontrolera SCSI. Więcej informacji znajdziesz w SCSI HOWTO <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/SCSI-HOWTO>. Obsługiwana jest większa ilość sterowników (ilość ograniczona jest maksymalną ilością urządzeń na szynie SCSI). Stwórz pliki urządzeń z liczbą główną 11 i liczbą poboczną począwszy od 0: # mknod /dev/scd0 b 11 0 # mknod /dev/scd1 b 11 1 Sterownik sam z siebie nie ma możliwości czytania cyfrowych ramek audio, ale niektóre napędy SCSI mają taką możliwość i będą działać z programem cdda2wav (który używa ogólnego interfejsu SCSI jądra). 44..33..1133.. SStteerroowwnniikk iiddeeccdd.. Autor główny: Scott Snyder (snyder@fnald0.fnal.gov) Obsługa wielosesyjności: tak Obsługa wielu napędów: tak Obsługa ładowalnego modułu: nie Czytanie ramek audio: tak (w obsługiwanych napędach) Automatyczne wykrywanie: tak Plik urządzenia: /dev/hd{a,b,c,d}, major 22 Plik konfiguracyjny: cdrom.h Opcja konfiguracyjna dla jądra: Include support for IDE/ATAPI CDROMs? Plik README: ide-cd Sterownik ten jest przeznaczony dla CD-ROM-ów ATAPI. Sterownik przyjmuje następujące parametry: hdx=cyls,heads,sects,wpcom,irq lub hdx=cdrom hdx może być jednym z: hda,hdb,hdc,hdd, albo po prostu hd i wtedy oznacza kolejny napęd. Tylko pierwsze trzy parametry są wymagane (cyls,heads,sects). Np. hdc=1050,32,64 hdd=cdrom. Zmuszenie sterownika IDE, aby rozpoznał twój CD-ROM, może przysparzać trochę kłopotów, szczególnie jeśli masz więcej niż 2 urządzenia albo więcej niż 1 kontroler IDE. Zwykle wszystko co jest wymagane, to podać poprawne opcje z LILO. Szczegółówe informacje jak to zrobić znajdziesz w pliku /usr/src/linux/Documentation/ide-cd. Przeczytaj go dokładnie. Nowsze jądra mają lepszą obsługę dla większej ilości urządzeń IDE. Jeśli masz problemy ze starszym jądrem, to uaktualnienie może pomóc. Niektóre kontrolery mają problemy sprzętowe, które sterownik może obejść. Możliwe, że musisz podać dodatkowe parametry sterownikowi, aby to umożliwić. Zajrzyj do dokumenctaji. 44..44.. SSttaarrttoowwaanniiee jjąąddrraa.. Możesz teraz wystartować system z nowym jądrem. Pilnuj czy nie pojawi się komunikat podobny do tego: hdd: NEC CD-ROM DRIVE:282, ATAPI CDROM drive który informuje, że CD-ROM został odnaleziony przez sterownik (komunikat będzie się różnił w zależności od napędu). Jeśli komunikaty podczas startu pojawiają się zbyt szybko, to możesz do nich powrócić wciskając SHIFT-PgUp (jeśli nie przełączałeś konsol), albo wyświetlić je poleceniami dmesg lub tail /var/adm/messages. Jeśli napęd nie może być odnaleziony, to jest problem. Zobacz sekcję na temat rozwiązywania problemów.. 44..55.. MMoonnttoowwaanniiee,, ooddmmoonnttoowwyywwaanniiee ii wwyyjjmmoowwaanniiee uurrzząąddzzeeńń.. Aby zamontować CD-ROM, włóż płytę do napędu, i uruchom polecenie mount jako root (zakłąda się tutaj, że stworzyłeś symboliczne dowiązanie do twojego pliku urządzenia tak jak to było zalecane powyżej oraz że istnieje pusty katalog /mnt/cdrom): # mount -t iso9660 -r /dev/cdrom /mnt/cdrom Zawartość kompaktu znajduje się teraz w katalogu /mnt/cdrom. Są jeszcze inne opcje dla polecenia mount, które możesz użyć; zobacz w podręczniku systemowym "man" mount(8). Możesz dodać pozycję do pliku /etc/fstab, aby automatycznie montować CD-ROM podczas startu, albo żeby podać parametry jakie mają być użyte podczas montowania; zobacz w podręczniku systemowym "man" fstab(8). Zauważ, że żeby odtwarzać płyty myzyczne _n_i_e powinieneś próbować ich montować. Aby odmontować CD-ROM, użyj jako root polecenia umount: # umount /mnt/cdrom Płyta może być odmontowana tylko wtedy kiedy żaden proces nie żąda do niego dostępu (włączając w to przypadek, kiedy bieżącym katalogiem jest któryś z podkatalogów płyty lub jej katalog główny). Możesz potem wyjąć płytę. Większość napędów ma przycisk do wyjmowania płyt; Jest także osobny program służący do tego celu - eject <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/utils/disk-management/>. Pamiętaj, że nie możesz wyjmować płyty podczas gdy jest ona zamontowana (to może lub nie być możliwe w zależności od rodzaju napędu jaki posiadasz). Niektóre sterowniki CD-ROM potrafią automatycznie wysuwać szufladkę jeśli płyta jest odmontowywana i wsuwać ją kiedy jest montowana (można wyłączyć tę funkcję podczas kompilacji albo przy pomocy programu). Możliwe jest, że po słuchaniu płyty muzycznej nie będziesz mógł zamontować płyty. Musisz wysłać polecenie audio "stop" (przy pomocy jakiegoś programu do odtwarzania) przed próbą montowania. Problem ten wydaje się pojawiać tylko ze sterownikiem SBPCD. Ostatnie wersje jądra 2.0 i 2.1 obsługują automounter oparty na jądrze, który dostarcza przeźroczyste dla użytkownika montowanie usuwalnych mediów włącznie z CD-ROM-em. Potrzebne narzędzia znajdziesz pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/Linux/kernel/autofs/>. 44..66.. RRoozzwwiiąązzyywwaanniiee pprroobblleemmóóww.. Jeśli wciąż masz problemy po przejściu przez instalację wg. tego HOWTO, to tutaj jest kilka rzeczy, które należy sprawdzić. Punkty są umieszczone wg. narastającej złożoności. Jeśli któryś z nich zawiedzie, to rozwiąż ten problem zanim posuniesz się dalej. 44..66..11.. KKrrookk 11:: UUppeewwnniijj ssiięę,, żżee nnaa ppeewwnnoo uużżyywwaasszz nnoowwoosskkoommppiilloowwaanneeggoo jjąąddrraa.. Możesz sprawdzić datę jądra, aby zobaczyć czy jest to to z obsługą CD- ROM-u. Można to zrobić poleceniem uname: % uname -a Linux fizzbin 2.0.18 #1 Fri Sep 6 10:10:54 EDT 1996 i586 albo wyświetlając zawartość pliku /proc/version: % cat /proc/version Linux version 2.0.18 (root@fizzbin) (gcc version 2.7.2) #1 Fri Sep 6 10:10:54 EDT 1996 Jeśli data się nie zgadza, to masz cały czas stare jądro. Czy aby na pewno zresetowałeś komputer? Jeśli używasz LILO, czy przeinstalowałeś je (z reguły pisząc /sbin/lilo)? Jeśli startujesz z dyskietki, czy zrobiłeś nową dyskietkę i użyłeś jej podczas startu? 44..66..22.. KKrrookk 22:: UUppeewwnniijj ssiięę,, żżee ooddppoowwiieeddnniiee sstteerroowwnniikkii ssąą wwkkoommppiilloowwaannee Sprawdzić to możesz wyświetlając zawartość pliku /proc/devices: % cat /proc/devices Character devices: 1 mem 2 pty 3 ttyp 4 ttyS 5 cua 7 vcs Block devices: 3 ide0 22 ide1 Najpierw poszukaj sterownika swojego CD-ROM-u. Są to wszystko urządzenia blokowe, w tym przypadku widać, że obecny jest sterownik idecd z numerem głównym 22. Upewnij się także, że wkompilowana jest obsługa systemu plików ISO-9660 przez wyświetlenie zawartości pliku /proc/filesystems: % cat /proc/filesystems ext2 msdos nodev proc iso9660 Możesz też sprawdzić, które adresy I/O są używane przez sterownik zaglądając do pliku /proc/ioports: howto % cat /proc/ioports ... 0230-0233 : sbpcd ... Jeśli któryś ze sterowników, który myslałeś, że wkompilowałeś, się nie pojawia, to coś poszło nie tak z konfiguracją lub kompilacją jądra. Zacznij proces instalacji jeszcze raz począwszy od konfiguracji i kompilacji jądra. 44..66..33.. KKrrookk 33:: CCzzyy jjąąddrroo wwyykkrryyłłoo ttwwóójj nnaappęędd ppooddcczzaass ssttaarrttuu?? Upewnij się, że CD-ROM został wykryty podczas startu jądra. Powinieneś zobaczyć odpowiedni komunikat. Jeśli komunikat ten przesunął się poza ekran, to możesz go sprawdzić poleceniem dmesg. % dmesg lub % tail /var/adm/messages Jeśli twój napęd nie został zidentyfikowany, to coś jest nie tak. Upewnij się, że jest podłączony do prądu i że wszystkie kable są poprawnie podłączone. Jeśli twój napęd posiada zworki do przełączania zakresów adresów, to sprawdź czy są poprawnie ustawione (np. napęd 0 jeśli masz tylko jeden napęd). CD-ROM-y ATAPI muszą być ustawione jako "single" lub "master", a nie "slave" jeśli do interfejsu jest podłączone tylko jedno urządzenie. Jeśli napęd działa pod DOS-em, to jest pewne, że sprzęt działa. Wiele sterowników używa automatycznego wykrywania, ale niektóre nie i wykrywanie to nie zawsze działa. Użyj parametrów startowych podanych dla twojego typu sterownika. Jeśli nie jesteś pewien co do adresów I/O czy innych parametrów, to popróbuj kilka razy. LILO może być (i zwykle jest) tak skonfigurowane, żeby przyjmować parametry wpisane ręcznie podczas startu. Inna możliwość jest taka, że użyłeś złego sterownika. Czasami dokumentacja może odwoływać się do interfejsów własnych jako do IDE, myląc użytkownika, który myśli, że jego napęd jest ATAPI. Jeszcz inna możliwość to: twój napęd (albo karta interfejsu) jest jedną z "kompatybilnych", która potrzebuje inicjalizacji przez sterownik DOS-owy. Spróbuj wystartować DOS-a i załadować sterownik dostarczony przez sprzedawcę. Potem zresetuj miękko przy pomocy klawiszy Control-Alt-Delete. Jeśli twojego napędu nie ma w tym dokumencie, to możliwe jest, że po prostu nie ma sterownika pod Linux-a dla niego. Możesz sprawdzić w adresach podanych pod koniec tego dokumentu. 44..66..44.. KKrrookk 44:: CCzzyy mmoożżeesszz cczzyyttaaćć ddaannee zz nnaappęędduu?? Spróbuj odczytać coś z CD-ROM-u. Przy następującym poleceniu światełko (jeśli je masz) powinno się zapalić i nie powinno być żadnych błędów. Upewnij się, że płyta jest włożona i użyj odpowiedniego dla siebie pliku urządzenia. # dd if=/dev/cdrom of=/dev/null bs=2048 ^C 124+0 records in 124+0 records out Jeśli to działa, to jądro porozumiewa się z napędem i możesz przejść do kroku 5. Jeśli nie, to możliwą przyczyną jest plik urządzenia. Upewnij się, że plik urządzenia w katalogu /dev ma poprawne liczby główną i poboczną zgodnie z tym co był podane wcześniej dla twojego typu napędu. Sprawdź czy prawa dostępu pozwalają na odczyt i zapis. Raczej mniej prawdopodobnym jest żebyś miał jakiś problem sprzętowy. Spróbuj potestować napęd pod DOS-em, jeśli to możliwe, żeby sprawdzić czy to mogłoby być przyczyną. 44..66..55.. KKrrookk 55:: CCzzyy mmoożżeesszz zzaammoonnttoowwaaćć nnaappęędd?? Jeśli możesz czytać z napędu, ale nie możesz go zamontować, to sprawdź najpierw czy wkompilowałeś obsługę systemu plików ISO-9660 wyświetlając zawartość pliku /proc/filesystems jak poprzednio. Upewnij się, że montujesz napęd z opcjami "-t iso9660" i "-r" i że dobry i znany ci kompakt ISO-9660 (nie muzyczny) jest w napędzie. Normalnie musisz montować napęd jako użytkownik root. Upewnij się, że katalog, do którego montujesz, istnieje i że jest pusty. Jeśli CD-ROM jest montowany automatycznie podczas startu, to upewnij się, że masz poprawny wpis w pliku /etc/fstab. Jeśli jest u ciebie uruchomiony syslog demon, to mogą być komunikaty o błędach pochodzące od jądra, których nie widzisz. Spróbuj użyć polecenia dmesg: % dmesg SBPCD: sbpcd_open: no disk in drive W zależności od konfiguracji twojego systemu, błędy mogą być także zapisane w katalogu /var/adm. 44..66..66.. SSpprraawwddzzaanniiee pprroobblleemmóóww aauuddiioo.. Jeśli napęd działa z CD-ROM-ami, ale nie odtwarza płyt audio, oto kilka możliwych rozwiązań. Potrzebujesz programu do odtwarzania płyt muzycznych. Niektóre z nich mogą być popsute, albp mogą nie współpracować z twoim napędem. Spróbuj użyć innych i/lub przekompilować je samemu. Dobrym miejscem do poszukania takich programów jest ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/apps/sound/cdrom/>. Kilka sterowników nie obsługuje odtwarzania płyt audio. Sprawdź plik README albo źródło sterownika czy to ten przypadek. Sprawdź czy płytę słychać przez wejście słuchawkowe. Jeśli tak to problem leży tu raczej w twojej karcie muzycznej. Użyj programu miksującego, aby ustawić urządzenie wejściowe i poziom głośności. Upewnij się, że założyłeś kabel audio z napędu CD-ROM-u do karty muzycznej. Upewnij się, że sterownik do karty dźwiękowej działa (zobacz Sound-HOWTO <http://www.jtz.org.pl/Html/Sound-HOWTO.pl.html> dostępne po polsku). 44..66..77.. KKiieeddyy wwsszzyyssttkkoo iinnnnee zzaawwiieeddzziiee.. Jeśli ciągle masz problemy to tutaj jest jeszcze kilka ostatnich rzeczy, których możesz spróbować: ˇ przeczytaj jeszcze raz dokładnie ten dokument. ˇ poczytaj odwołania wymienione pod koniec tego dokumentu, szczególnie odpowiednie pliki README dostarczane wraz ze źródłami jądra. ˇ wyślij zapytanie na grupę dyskusyjną pl.comp.os.linux albo jakąś inną związaną z Linux-em. ˇ wyślij zapytanie na listę dyskusyjną o Linux-ie (w przypadku Polski lista dyskusyjna jest połączona z grupą dyskusyjną) ˇ spróbuj użyć najnowszej wersji jądra. ˇ skontaktuj się ze swoim sprzedawcą. ˇ skontaktuj się z producentem CD-ROM-u. ˇ wyślij list do opiekuna twojego sterownika (sprawdź w pliku /usr/src/linux/MAINTAINERS) ˇ przyślij list do mnie. ˇ odpal emacs-a i wpisz Esc-x doctor :-) 55.. AApplliikkaaccjjee.. W sekcji tej znajdują się niektóre aplikacje związane z CD-ROM-ami dostępne pod Linux-a. Najnowsze informacje na temat archwiów oprogramowania znajdziesz w "Linux Software Map". 55..11.. OOddttwwaarrzzaacczzee ppłłyytt mmuuzzyycczznnyycchh.. Jest kilka programów umożliwiających słuchanie płyt muzycznych zarówno poprzez wyjście słuchawkowe jak przez kartę muzyczną. WWoorrkkmmaann - graficzna odtwarzarka pod X11, z bazą kompaktów i wieloma innymi funkcjami. WWoorrkkBBoonnee - interaktywna odtwarzarka tekstowa. xxccddppllaayyeerr - prosta odtwarzarka pod X11. ccddppllaayyeerr - bardzo prosta odtwarzarka obsługiwana z linii poleceń. XXmmccdd - odtwarzarka pod X11 napisana dla Motif-a xxmmiittssuummii - inna odtwarzarka pod X11 dla napędów Mitsumi xxppllaayyccdd - inna odtwarzarka pod X11 połączona z mikserem dźwięku i programem do pomiaru VU. ccddttooooll - narzędzia obsługiwane z linii poleceń do odtwarzania płyt audio. Niektóre z tych programów są zaprogramowane, aby używać konkretnego urządzenia dla CD-ROM-u (np. /dev/cdrom). Możliwe, że możesz podać prawidłowe urządzenie jako parametr, albo możesz stworzyć symboliczne dowiązanie w katalogu /dev. Jeśli wysyłasz wyjście do karty muzycznej, to możliwe, że chcesz użyć miksera, aby ustawić głośność, albo żeby podać wejście z kompaktu, żeby coś nagrać. 55..22.. PPhhoottooCCDD.. Płyty PhotoCD używają systemu plików ISO-9660 zawierający pliki z obrazami we własnym formacie. Nie wszystkie napędy CD-ROM pozwalają na czytanie w tym formacie. Program Hadmuta Danischa - hpcdtoppm - zamienia pliki PhotoCD na przenośny format pixmap. Można go ściągnąć z ftp.gwdg.de <ftp://ftp.gwdg.de/pub/linux/> albo jako część narzędzi PBM (Portable Bit Map) dostępnych w wielu archiwach (poszukaj "pbm" lub "netpbm"). Program photocd Gerda Knorra kraxel@cs.tu-berlin.de może zamieniać obrazy PhotoCD w pliki Targa lub bitmapy Windows i OS/2. Ten sam autor napisał program xpcd pod X11 obsługujący obrazy PhotoCD. Możesz wybrać obraz myszką, zobaczyć widok roboczy w małym okienku i załadować go w pięciu możliwych rozdzielczościach. Możesz także zaznaczyć część obrazu i załadować tylko tę zaznaczoną część. Pakietów tych możesz poszukać w ftp.cs.tu-berlin.de <ftp://ftp.cs.tu- berlin.de/pub/linux/Local/misc/>. Program do obróbki obrazów ImageMagic także obsługuje pliki PhotoCD. Jest dostępny z ftp.x.org <ftp://ftp.x.org:/contrib/applications/ImageMagic/> 55..33.. MMkkiissooffss.. Pakiet mkisofs Erica Youngdale'a pozwala tworzyć system plików ISO-9660 na partycjach twardego dysku. Może to być wykorzystane później przy sprawdzaniu systemu plików CD-ROM-u przed zapisaniem go na płytę. Narzędzia dla właściwego zapisu danych na nagrywarkach są raczej specyficzne dla danego sprzedawcy. Wymagają także zapisu danych bez przerywania, tak że wielozadaniowy system taki jak Linux nie jest dobrym wyborem. 55..44.. NNaarrzzęęddzziiaa IISSOO--99666600.. Są pewne narzędzia służące do weryfikowania kompaktu sformatowanego na ISO-9660; możesz ich użyć do sprawdzania podejrzanych płyt. Pakiet można znaleźć na ftp.cdrom.com <ftp://ftp.cdrom.com/pub/cdrom/ptf/>. Napisane zostały przez Billa Siegmunda i Richa Morina. 66.. OOddppoowwiieeddzzii nnaa cczzęęssttoo zzaaddaawwaannee ppyyttaanniiaa.. 66..11.. JJaakk iinnnnyy uużżyyttkkoowwnniikk nniiżż rroooott mmoożżee mmoonnttoowwaaćć ii ooddmmoonnttoowwyywwaaćć ppłłyyttyy?? Większość poleceń mount posiada opcję _u_s_e_r. Jeśli zrobisz taką pozycję w /etc/fstab: /dev/sbpcd /mnt/cdrom iso9660 user,noauto,ro to zwykły użytkownik będzie mógł zamontować i odmontować płytę poleceniami: % mount /mnt/cdrom % umount /mnt/cdrom Płyta zostanie zamontowana z pewnymi opcjami, które zwiększają bezpieczeństwo (np. programy nie mogą być wykonywane, pliki urządzeń są ignorowane); w niektórych przypadkach może to być zbyt rygorystyczne. Inną metodą jest zdybycie pakietu usermount, który pozwala użytkownikom innym niż root montować i odmontowywać urządzenia wyjmowalne takie jak dyskietki i CD-ROM-y, ale zmniejsza dostęp do innych urządzeń (takich jak partycje twardych dysków). Dostępny jest na większości serwerów ftp. Pod adresem ftp.cdrom.com znajduje się plik źródłowy mount.c, który pozwala na montowanie i odmontowywanie CD-ROM-ów (tylko) przez normalnych użytkowników. Uruchamiany jest z prawami root-a. 66..22.. DDllaacczzeeggoo ddoossttaajjęę kkoommuunniikkaatt ""ddeevviiccee iiss bbuussyy"" kkiieeddyy ooddmmoonnttoowwuujjęę CCDD--RROOMM?? Płyta nie może być odmontowana jeśli jakikolwiek proces żąda do niej dostępu, włącznie z przypadkiem kiedy bierzącym katalogiem jest któryś z podkatalogów płyty lub jej katalog główny. Jeśli nie możesz znaleźć procesu używającego płytę, to możesz użyć polecenia fuser tak jak to pokazano poniżej: % umount /cdrom umount: /dev/hdd: device is busy % fuser -v /cdrom USER PID ACCESS COMMAND /mnt/cdrom tranter 133 ..c.. bash Na niektórych systemach możliwe, że musisz być root-em, żeby uruchomić polecenie fuser, żeby zobaczyć procesy innych użytkowników. 66..33.. JJaakk mmaamm eekkssppoorrttoowwaaćć CCDD--RROOMM ddllaa iinnnnyycchh kkoommppuutteerróóww pprrzzeezz NNFFSS?? Musisz dodać pozycję do pliku /etc/exports. Wtedy użytkownicy na tamtej maszynie będą mogli zamontować to urządzenie. Szczegóły znajdziesz w poleceniu "man 5 exports". 66..44.. CCzzyy mmooggęę ssttaarrttoowwaaćć LLiinnuuxx--aa zz CCDD--RROOMM--uu?? Przy instalacji Linux-a najpopularniejszą metodą jest użycie dyskietki startowej. Niektóre dystrybucje pozwalają na start Linux-a bezpośrednio z płyty. Michael Fulbright (msf@redhat.com) zgłosił, że jeśli posiada się dobry CD-ROM, ROM BIOS i napęd CD-ROM ATAPI, to jest możliwe startowanie z płyty. Najnowsza wersja mkisofs także obsługuje tworzenie takich dysków. Dodał on jakieś łaty do obsługi standardu El Torito dla startowalnych CD-ROM-ów. 66..55.. JJaakk mmooggęę pprrzzeecczzyyttaa ddaannee ccyyffrroowwee zz ppłłyyttyy mmuuzzyycczznneejj?? Heiko Eissfeldt (heiko@colossus.escape.de) i Olaf Kindel napisali narzędzie, które czyta dane audio i zachowuje je jako pliki dźwiękowe w formacie .wav. Pakiet nazywa się cdda2wav.tar.gz i można go pobrać z ftp.icm.edu.pl. Ponieważ napędy CD-ROM zmieniają się bardzo szybko, trudno jest powiedzieć które modele obsługują czytanie danych cyfrowych. Najlepiej zdobyć najnowszy pakiet cdda2wav i przeczytać zawartą tam dokumentację. Więcej informacji na ten temat znajdziesz na stronie www.tardis.ed.ac.uk <http://www.tardis.ed.ac.uk/~psyche/cdda/> oraz w FAQ grupy alt.cd-rom wymienionym w referencjach. 66..66.. DDllaacczzeeggoo ppoolleecceenniiee ffiinndd nniiee ddzziiaałłaa?? Jeśli używasz tego polecenia na kompakcie w formacie ISO-9660 bez Rock Ridge Extensions, to musisz dodać opcję -noleaf. Więcej szczegółów w poleceniu "man find". (Z moich doświadczeń wynika, że prawie wszystkie nowsze płyty Linux-a używają Rock Ridge Extensions, więc ten problem powinien występować bardzo rzadko.) 66..77.. CCzzyy LLiinnuuxx oobbssłłuugguujjee jjaakkiieeśś nnaaggrryywwaarrkkii?? Pakiet X-CD-Roast jest graficznym interfejsem do obsługi nagrywarek CD. Pakiet można znaleźć na ftp.icm.edu.pl w kataloogu /pub/Linux/sunsite/utils/disk-management/. Zobacz także "Linux CD-Writing HOWTO" pod adresem www.jtz.org.pl <http://www.jtz.org.pl/Html/CD-Writing-HOWTO.pl.html> dostępne w języku polskim. 66..88.. DDllaacczzeeggoo ppoojjaawwiiaa ssiięę ttaakkii kkoommuunniikkaatt ""mmoouunntt:: RReeaadd--oonnllyy ffiillee ssyyss­­ tteemm wwhheenn mmoouunnttiinngg aa CCDD--RROOMM""?? CD-ROM jest nośnikiem tylko do odczytu. We wcześniejszych wersjach jądra można było zamontować płytę CD do zapisu i odczytu, ale zapis był po prostu ignorowany. Od wersji 1.1.33 zostało to poprawione i CD- ROM-y muszą być montowane tylko-do-odczytu (np. z opcją -r). 66..99.. DDllaacczzeeggoo wwyyssuuwwaa mmii ssiięę sszzuuffllaaddkkaa kkiieeddyy zzaammyykkaamm ssyysstteemm?? Od wersji jądra 1.1.38, sterownik sbpcd wysuwa szufladkę kiedy płyta jest odmontowywana. Jeśli zamykasz system, to zamontowana płyta zostanie odmontowana i szufladka wysunięta. Funkcja ta ma pomóc przy zmianie płyt. Jeśli szufladka jest wysunięta, to przy próbie odczytu lub zamontowania zostanie zamknięta automatycznie. Stwierdziłem, że to powoduje problemy z niektórymi programami (np. cdplay i workbone). Od wersji 1.1.60 jądra można tę funkcję kontrolować programowo. Przykładowy program zawarty jest w dokumentacji do sterownika sbpcd programu (albo użyj eject <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/utils/disk-management/>). 66..1100.. MMaamm ""ssppeeccjjaallnnyy"" kkoommppaakktt,, kkttóórreeggoo nniiee mmoożżnnaa zzaammoonnttoowwaaćć?? Ten specjalny kompakt to pewnie płyta XA (jak wszystkie PhotoCD czy "one-offs" stworzone przy użyciu nagrywarek). Większość sterowników CD-ROM-ów nie obsługuje płyt XA, chociaż może znajdziesz gdzieś jakąś łatę, która dodaje obsługę takich płyt. Sterownik sbpcd _o_b_s_ł_u_g_u_j_e XA. Jeśli używasz tego sterownika, to możesz sprawdzić czy płyta jest XA w ten sposób: otwórz plik sbpcd.c i włącz wyświetlanie "Table of Contents" (DBG_TOC). Skompiluj i zainstaluj nowe jądra i wystartuj je. Podczas każdego montowania TOC będzie wyświetlane na konsoli, albo logowane do pliku). Jeśli pierwszą wartością w TOC jest 20, to jest to płyta XA. Bajt ten ma wartość 00 w normalnych płytach. Jeśli TOC pokazuje różne ścieżki, to jest to także znak, że jest to płyta XA. (dzięki dla Eberharda Moenkeberga za powyższą informację) Innymi możliwościami dla nieodczytywalnych CD-ROM-ów są: 1. Płyta nie używa systemu plików ISO-9660 (np. niektóre używają SunOS lub HFS). 2. Jest to płyta muzyczna. 3. Włożyłeś ją do napędu "do góry nogami" :-) 66..1111.. CCzzyy wwiieellooppłłyyttoowwee nnaappęęddyy CCDD--RROOMM ddzziiaałłaajjąą zz LLiinnuuxx--eemm?? Kilku użytkowników zgłosiło, że osiągnęło jakieś sukcesy z wielopłytowymi napędami CD-ROM SCSI. Musisz przypuszczalnie włączyć opcję "Probe all LUNs on each SCSI device" przy konfiguracji jądra. Przynajmniej jeden użytkownik musiał także zwiększyć wartość oczekiwania (timeout) dla SCSI w sterowniku. Zgłoszono mi, że Nakamichi MBR-7 7 i Pioneer 12 działają. Dostępne są także napędy wielopłytowe EIDE/ATAPI. Jądro w wersji 2.0 ma szczątkową obsługę dla napędów korzystających z funkcji ioctl CDROM_SELECT_DISC. Plik z dokumentacją do sterownika IDE-CD zawiera źródła krótkiego programu do wybierania kompaktów, albo możesz użyć nowszej wersji opisanego wcześniej programu eject. 66..1122.. DDoossttaajjęę bbłłęęddyy:: ""//ccddrroomm:: PPeerrmmiissssiioonn ddeenniieedd"" Niektóre płyty mają tak ustawione prawa dostępu do swojego głównego katalogu, że tylko użytkownik root może go czytać. Przykładem może tutaj być płyta InfoMagic z marca 1995. Jest to wyraźna niedogodność. Następująca łata, grzeczność ze strony Christopha Lametera (clameter@waterf.org) obchodzi ten problem w jądrze. From: clameter@waterf.org (Christoph Lameter) Newsgroups: comp.os.linux.setup Subject: InfoMagic Developers Set: Fix for CD-ROM permissions Date: 12 Apr 1995 20:32:03 -0700 Organization: The Water Fountain - Mining for streams of Living Water NNTP-Posting-Host: waterf.org X-Newsreader: TIN [version 1.2 PL2] Zbiór płyt "InfoMagic Developers" z marca 1995 ma błędy ponieważ informacja o prawach dostępu zapisana w katalogu głównym przysparza następujących problemów: 1. Płyta 1 będzie zawsze miała właściciela/grupę 5101/51 i ma dozwolony zapis (?) 2. Płyta 2 i 3 mają ustawione prawa rwx dla root-a i żadnych praw dla innych użytkowników/grupy. Płyty tej nie można odczytać z innego użytkownika niż root! Mam uruchomionego BBS-a i muszę je udostępnić do zgrywania dla innych. Widziałem już gdzieś tam kilka poprawek do tego. Jednak kłopot w tym, że poprawki te zmieniają prawa dla WSZYSTKICH katalogów na płycie. Ta poprawka zmienia TYLKO prawa dostępu do katalogu głównego płyty. Jeśli chcesz uruchamiać części Linux-a bezpośrednio z tej płyty to możesz wpaść w kłopoty jeśli wszystkie katalogi są czytelne dla wszystkich i jeśli właścicielem wszystkich jest root. Poprawka ta zmieni prawa dostępu dla katalogu głównego na r-xr-xr-x i właściciela/grupę na wartości odpowiadające opcjom uid i gid polecenia mount. Aby założyć poprawkę: cd /usr/src/linux/fs/isofs patch <**TEN LIST** i skompiluj ponownie jądro (możliwe, że musisz poprawić trochę tę poprawkę w zależności od wersji twojego jądra). Poprawka ta powinna się przypuszczalnie znaleźć w jądrze. Jaki interes mają dane na płycie w grzebaniu prawami/właścicielem katalogu do zamontowania? --- inode.c.ORIG Wed Apr 12 17:24:36 1995 +++ inode.c Wed Apr 12 17:59:12 1995 @@ -552,7 +552,15 @@ these numbers in the inode structure. */ if (!high_sierra) - parse_rock_ridge_inode(raw_inode, inode); + { parse_rock_ridge_inode(raw_inode, inode); + /* check for access to the root directory rights/owner CL */ + if((inode->i_sb->u.isofs_sb.s_firstdatazone) == inode->i_ino) + { /* Change owner/rights to the ones demanded by the mount command */ + inode->i_uid = inode->i_sb->u.isofs_sb.s_uid; + inode->i_gid = inode->i_sb->u.isofs_sb.s_gid; + inode->i_mode = S_IRUGO | S_IXUGO | S_IFDIR; + } + } #ifdef DEBUG printk("Inode: %x extent: %x\n",inode->i_ino, inode->u.isofs_i.i_first_extent); @@ -805,4 +813,3 @@ } #endif - Zauważ, że powyższa łata jest raczej stara i przypuszczalnie nie zainstaluje się gładko w jądrze wersji 2.0. Zobacz także pytanie na temat plików ukrytych w dalszej części tego dokumentu. 66..1133.. JJaakk mmaamm iinntteerrpprreettoowwaaćć kkoommuunniikkaattyy oo bbłłęęddaacchh IIDDEE CCDD?? Co to znaczy jak otrzymam komunikat o błędzie od sterownika CD-ROM-u - np. taki: "hdxx: code: xx key: x asc: xx ascq: x"? To jest komunikat o statusie/błędzie od napędu IDE CD-ROM. Domyślnie sterownik IDECD wypisuje informacje otrzymane przez napęd bez "zawracania jądru głowy". Możesz zmienić to domyślne zachowanie, aby wyświetlał właściwy komunikat o błędzie, przez zmianę wartości VERBOSE_IDE_CD_ERRORS w pliku /usr/src/linux/drivers/block/ide-cd.c na 1 i rekompilację jądra. 66..1144.. JJaakk mmooggęę ppoowwiieeddzziieećć jjaakkąą pprręęddkkoośśćć mmaa mmóójj CCDD--RROOMM?? Oto jeden sposób. Polecenie to mierzy jaki czas przeznaczony jest na odczytanie 1500K danych z płyty: % time -p dd if=/dev/cdrom of=/dev/null bs=1k count=1500 1500+0 records in 1500+0 records out real 5.24 user 0.03 sys 5.07 Prędkość CD-ROM-u o pojedynczej prędkości wynosi 150 kb na sekundę, co powinno zabrać około 10 sekund. Przy prędkości podwójnej zabrałoby to 5 sekund, przy czterokrotnej - 2,5, itd... Czas "real" powyżej jest przypuszczalnie tym, na który należy patrzeć - w tym przypadku jest to CD-ROM podwójnej prędkości. Możesz zwiększyć ilość danych, aby otrzymać bardziej dokładną wartość (w razie gdybyś pytał, to te dane nie są cache'owane). Przypuszczalnie powinieneś uruchomić to polecenie kilka razy i wziąć średnią z nich wszystkich. 66..1155.. MMóójj CCDD--RROOMM pprrzzeessttaałł ddzziiaałłaaćć ooddkkąądd zzaaiinnssttaalloowwaałłeemm LLiinnuuxx--aa.. Zwykłym symptomem jest to, że dysk startowy użyty do instalacji rozpoznał twój CD-ROM, ale po tym jak Linux został zainstalowany na dysku twardym czy dyskietce i zrestartowany - przestał rozpoznawać twój napęd. Najpopularniejszym powodem jest tutaj fakt, że w niektórych dystrybucjach jądro instalowane nie zawsze jest tym samym jądrem, które znajduje się na twojej dyskietce startowej. Wybrałeś dyskietkę, która obsługiwała twój CD-ROM, podczas gdy jądro, które zainstalowałeś, jest jądrem "ogólnym" i nie ma w nim obsługi CD-ROM-u. Możesz to sprawdzić postępując zgodnie ze wskazówkami zawartymi w sekcji Rozwiązywanie problemów wcześniej w tym dokumencie (np. zacznij od sprawdzenia /proc/devices). Rozwiązaniem jest ponowna kompilacja jądra, upewniając się jednocześnie, że wszystkie sterowniki jakie potrzebujesz są włączone. Zobacz Kernel-HOWTO <http://www.jtz.org.pl/Html/Kernel-HOWTO.pl.html> (po polsku) jeśli nie wiesz jak to zrobić. Jeśli przekazałeś jakieś parametry startowe do dyskietki (np. "hdc=cdrom"), to musisz je dodać do konfiguracji twojego programu startującego (zwykle jest to plik /etc/lilo.conf). 66..1166.. NNaa ppłłyycciiee ssąą ""uukkrryyttee"" pplliikk,, kkttóórryycchh nniiee mmooggęę ooddcczzyyttaaćć.. Niektóre płyty posiadają pliki z ustawionym bitem "hidden". Normalnie nie można zobaczyć tych plików. Jeśli zamontujesz płytę z opcją "unhide", to wtedy pliki te powinny być dostępne (jakoś nie widać, żęby to było gdziekolwiek udokumentowane). 66..1177.. GGddzziiee jjeesstt uuddookkuummeennttoowwaannee CCDD--RROOMM AAPPII?? Jeśli chcesz napisać własną aplikację, jak np. odtwarzarka audio, to będziesz musiał zrozumieć API - interfejs programowana aplikacji (application programming interface). Oryginalnie sterownik CD-ROM-u używał swojej własnej funkcji ioctl(), aby obsłużyć funkcje specyficzne dla każdego napędu. Pliki nagłówkowe takie jak /usr/include/linux/sbpcd.h opisują je. Ponieważ wiele sterowników bazowało na innych sterownikach, interfejsy, jeśli nie są identyczne, to mają wiele wspólnego. Ostatnio powstała inicjatywa ustandaryzowania interfejsu dla napędów CD-ROM kierowana przez Davida van Leeuwena (david@tm.tno.nl). Polega ona na umieszczeniu ogólnego kodu w jednym miejscu i upewnieniu się, że wszystkie sterowniki zachowują sie tak samo Jest to udokumentowane w pliku /usr/src/linux/Documentation/cdrom/cdrom-standard.tex. Kilka sterowników to obsługuje. Spodziewam się, że w następnej głównej wersji jądra (3.0?) wszyskie sterowniki CD-ROM-ów dostosują się do tego API. Moja książka, _L_i_n_u_x _M_u_l_t_i_m_e_d_i_a _G_u_i_d_e, poświęca o wiele więcej miejsca tematowi programowania CD-ROM-ów, szczególnie jeśli chodzi o funkcje audio. Zobacz na koniec sekcji Referencje. 66..1188.. DDllaacczzeeggoo nniiee wwiiddzzęę ddłłuuggiicchh nnaazzww nnaa CCDD--RROOMM--aacchh zz WWiinnddoowwss--óóww?? Jeśli masz CD-ROM, który ma długie nazwy pod Windows, ale nie pod Linux-em, może on być zformatowany do Microsoft-owego systemu plików Joliet. Rozwiązanie znajdziesz w odpowiedzi na następne pytanie. 66..1199.. CCzzyy oobbssłłuuggiiwwaannyy jjeesstt MMiiccrroossoofftt--oowwyy ssyysstteemm pplliikkóóww JJoolliieett?? Microsoft stworzył rozszerzenie do formatu ISO CD-ROM o nazwie Joliet. W czasie pisania obsługa dla Joliet była w trakcie opracowywania; łaty były dostępne z adresu url url="http://www- plateau.cs.berkeley.edu/people/chaffee/joliet.html"> lub <ftp://www- plateau.cs.berkeley.edu/pub/multimedia/linux/joliet/>. 77.. RReeffeerreennccjjee.. Wspomniałem już o plikach README, zwykle zainstalowanych w /usr/src/linux/Documentation/cdrom. Mogą być one "kopalnią złota" jeśli chodzi o informacje. Następujące dokumenty FAQ są okresowo wysyłane na grupę dyskusyjną news.answers i archiwizowane w takich miejscach w Internecie jak rtfm.mit.edu <ftp://rtfm.mit.edu/>: ˇ SCSI-HOWTO <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/SCSI-HOWTO> ˇ Hardware-HOWTO <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/Hardware-HOWTO> ˇ Sound-HOWTO <http://www.jtz.org.pl:/Html/Sound-HOWTO.pl.html> (po polsku) ˇ Kernel-HOWTO <http://www.jtz.org.pl:/Html/Kernel-HOWTO.pl.html> (po polsku) ˇ Distribution-HOWTO <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/Distribution- HOWTO> ˇ CD-Writing-HOWTO <http://www.jtz.org.pl:/Html/CD-Writing- HOWTO.pl.html> (po polsku) Przynajmniej tuzin firm sprzedaje dystrybucje Linux-a na CD-ROM-ach; większość z nich jest podana w Distribution HOWTO. Następujące grupy dyskusyjne mają coś wspólnego z CD-ROM-ami: ˇ comp.publish.cdrom.hardware ˇ comp.publish.cdrom.multimedia ˇ comp.publish.cdrom.software ˇ comp.sys.ibm.pc.hardware.cd-rom ˇ alt.cd-rom ˇ alt.cd-rom.reviews ˇ pl.comp.os.linux - polskojęzyczna grupa dotycząca Linux-a w ogólności Dobrym źródłem informacji są także grupy comp.os.linux. Duże archiwum informacji z CD-ROM-ów jest na ftp.cdrom.com <ftp://ftp.cdrom.com:/pub/cdrom/>. [Od tłumacza.] W Polsce polecam wspomniane już wcześniej ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/>. Dokument FAQ na temat urządzeń IDE i ATA można zanleźć pod adresem rtfm.mit.edu <ftp://rtfm.mit.edu/pub/usenet/news.answers/pc-hardware- faq/enhanced-IDE/> oraz www.seagate.com <http://www.seagate.com/techsuppt/faq/faqlist.html>. Western Digital- firma, która zapoczątkowała protokół IDE - ma informacje na temat tego protokołu na swoim serwerze ftp <ftp://fission.dt.wdc.com/pub/standards/atapi>. Stronę WWW poświęconą multimediom można także znaleźć na viswiz.gmd.de <http://viswiz.gmd.de/MultimediaInfo/>. Creative Labs ma swoją stronę pod adresem www.creaf.com <http://www.creaf.com/>. W Linux Documentation Project powstało kilka książek na temat Linux-a, włączając _L_i_n_u_x _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _G_e_t_t_i_n_g _S_t_a_r_t_e_d. Są one dostępne za darmo poprzez anonimowane FTP z większości archiwów Linux-owych albo można je otrzymać w formie trwałej. _L_i_n_u_x _S_o_f_t_w_a_r_e _M_a_p (LSM), czyli mapa oprogramowania pod Linux-a jest nieocenionym źródłem. LSM można znaleźć na różnych serwerach ftp włącznie z ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/LSM/>. Lista dyskusyjna na temat Linux-a ma kilka "kanałów" poświęconych różnym tematom. Aby się dowiedzieć jak się dołączyć, wyślij list ze słowem "help" w treści na adres majordomo@vger.rutgers.edu. (Zauważ, że podczas pisania tego dokumentu listy te były porządnie przeciążone i szukano jakiegoś miejsca zastępczego.) Na koniec bezwstydna reklama: Jeśli chcesz się dowiedzieć o wiele więcej na temat multimediów pod Linux-em (szczególnie na temat aplikacji i programowania CD-ROM-ów i kart muzycznych), zobacz moją książkę _L_i_n_u_x _M_u_l_t_i_m_e_d_i_a _G_u_i_d_e, ISBN 1-56592-219-0, wydaną przez O'Reilly and Associates. Tak jak oryginalna wersja angielska, w druku są wersje francuska i japońska. Po szczegóły zadzwoń 800-998-9938 w Północnej Ameryce, albo sprawdź adres www.ora.com <http://www.ora.com/catalog/multilinux/noframes.html> albo moją stronę domową www.pobox.com <http://www.pobox.com/~tranter/>. 77..11.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@jtz.org.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez tłumacza to: - cofnięcie ekranu SHIFT-PgUp - info o polskiej liście i grupie dyskusyjnej. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Cyrillic-HOWTO.pl.txt��������������������������������������������������0100664�0001750�0001750�00000207052�06717116340�020227� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ The Cyrillic HOWTO Autor: Aleksander L. Belikoff, v3.0, 13 sierpień 1995 WWeerrssjjaa ppoollsskkaa:: GGwwiiddoonn SS.. NNaasskkrreenntt nnaasskkrreenntt@@hhootthh..aammuu..eedduu..ppll v2.0, luty 1998 Dokument ten opisuje jak skonfigurować swój system linuxowy aby móc pisać, oglądać i drukować dokumenty w języku rosyjskim. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ______________________________________________________________________ Table of Contents: 1. 1. Uwagi ogólne 1.1. 1.1 Wstęp 1.2. 1.2 Dostępność i uwagi 2. 2. Znaki i zestawy znaków 3. 3. Ustawianie trybu tekstowego 3.1. 4.1. Konsola 3.2. Konsola FreeBSD 3.3. System X Window 3.3.1. Xowe czcionki 3.3.2. Tłumaczenie danych wprowadzanych 3.3.2.1. Tablica znaków 3.3.2.2. Zasady przełączania trybów 4. Obsługa cyrylicy w LaTeXie 4.1. Używanie Washington Cyryliic 4.2. Pakiet KOI-8 dla LaTeXa 4.3. Używanie pakietu cmcyralt dla LaTeXa 4.4. Pakiet CyrTUG 5. Cyrylica w PostScriptcie 5.1. Dodawanie czcionek cyrylicowych do Ghostscripta 6. Drukowanie 6.1. Ładowanie czcionek cyrylicowych do drukarki niepostscriptowej 6.2. Drukowanie różnymi czcionkami 6.3. Konwersja tekstu do TeXa 6.4. Konwersja tekstu do postscriptu 7. Konfiguracja różnych narzędzi 7.1. 6.1. bash 7.2. 6.2. csh/tcsh 7.3. 6.3. emacs 7.4. 6.4. ispell 7.5. joe 7.6. ksh 7.7. less 7.8. lynx 7.9. mc (Midnight Commander) 7.10. Netscape Navigator 7.10.1. Konfiguracja podstawowa 7.10.2. Konfiguracja zaawansowana 7.11. pine 7.12. rlogin 7.13. sendmail (aka 'zguba sysadmina') 8. zsh 9. Użyteczne narzędzia 9.1. Narzędzia do konwersji 9.2. Narzędzia programisty 10. Wykaz użytecznych zasobów ______________________________________________________________________ 11.. 11.. UUwwaaggii ooggóóllnnee 11..11.. 11..11 WWssttęępp Dokument ten obejmuje to czego potrzebujesz aby skutecznie pisać, oglądać i drukować dokumenty po rosyjsku pod Linuxem. Chociaż dokument ten zakłada że jako systemu operacyjnego używasz Linuxa, większość z przedstawionych informacji stosuje się także do innych odmian Unixa. Postaram się zachować rozróżnienie tak widocznym jak to możliwe. Istnieje pewna liczba popularnych dystrybucji linuxowych. Jako system przykładowy opiszę Linuxa Red Hat 3.0.3 (Picasso) oraz Red Hat 4.1 (Vanderbildt) - tego którego osobiście używam. Niemniej jednak postaram się zaznaczyć różnice, jeśli takowe istnieją, w instalacji Linux Slackware. Ponieważ taka instalacja bezpośrednio modyfikuje i rozszerza system operacyjny, powinieneś zdawać sobie sprawę z tego co robisz. Chociaż starałem się sprawy maksymalnie uprościć, posiadanie pewnego doświadczenia z danym programem jest korzystne. Nie zamierzam opisywać czym jest system X Windows i jak składać dokumenty używając TeXa lub LaTeXa, albo jak zainstalować drukarkę w Linuxie. Problemy te omawiane są w innych dokumentach. Z tych samych powodów opisuję instalację na skalę systemową, domyślnie wymagającą uprawnień administratora. Jeśli jednak istnieje możliwość instalacji na poziomie użytkownika, nie omieszkam jej wspomnieć. Uwaga: system X Windows, TeX i inne składniki Linuxa są złożonymi systemami z wyrafinowaną konfiguracją. Jeśli coś sknocisz, możesz nie tylko nie dokonać instalacji cyrilicy, ale popsuć składnik, jeśli nie cały system. Nie ma to na celu cię odstraszać, lecz tylko sprawić abyś zrozumiał powagę operacji i był ostrożnym. Wstępna kopia zapasowa plików konfiguracyjnych jest wielce pożądana. Posiadanie pod ręką jakiegoś guru zawsze się przydaje. 11..22.. 11..22 DDoossttęęppnnoośśćć ii uuwwaaggii Dokument ten dostępny jest na sunsite.unc.edu lub tsx-11.mit.edu jako część Linux Documentation Project. Może także być dostępny w różnych archiwach zawierających Linuxa. Co więcej, może także wchodzić w skład dystrybucji Linuxa. Można go wreszcie otrzymać bezpośrednio od autora, na ftp.netvision.net.il. Jeśli masz jakieś pytania dotyczące tego dokumentu, nie wahaj się, proszę, skontaktować się ze mną pod adresem belikoff@netvision.net.il. Każda nowa i użyteczna informacja na temat obsługi Cyrilicy w różnych Unixach jest mile widziana. Pamiętaj, pomoże to innym. Wielu ludzi pomogło mi (i nie tylko mi) wartościowymi informacjami oraz sugestiami. Jeszcze więcej ludzi dołożyło oprogramowania na użytek publiczny. Przepraszam jeżeli zapomniałem kogoś wymienić. Oto więc oni: Bas v. de Bakker, David Daves, Siergiej Wakulenko, Siergiej O. Naoumow, Winfried Trümper, Michael van Canneyt. Ten dokument jest (c) 1995 Aleksander L. Belikoff. Można go używać i rozpowszechniać zgodnie ze zwykłymi warunkami Linux HOWTO opisanymi poniżej. Poniższe jest notką o prawach autorskich Linux HOWTO: Dokumenty Linux HOWTO stanowią prawną własność ich autorów, chyba że zaznaczono inaczej. Dokumenty Linux HOWTO mogą być reprodukowane i rozposzechniane w całości lub części, w każdym fizycznym lub elektronicznym środku przekazu, tak długo jak w każdej kopii pozostaje niniejsza notka o prawach autorskich. Redystrybucja komercyjna jest dozwolona i popierana; autorzy jednak woleliby zostać o takich dystrybucjach powiadomieni. Wszystkie tłumaczenia, prace pochodne i zbiorowe zawierające dokumenty Linux HOWTO muszą podlegać po tą notkę o prawach autorskich. To jest, nie możesz stworzyć z HOWTO pracy pochodnej i nałożyć dodatkowe ograniczenia na jej dystrybucję. Wyjątki do tych reguł mogą być udzielone pod pewnymi warunkami; proszę skontaktować się z koordynatorem Linux HOWTO pod adresem podanym poniżej. W skrócie, chcielibyśmy promować rozprzestrzenianie się tych informacji tak wieloma kanałami jak to możliwe. Pragnęlibyśmy jednakże zachować prawa autorskie do dokumentów HOWTO, i być powiadamianymi o każdych planach ich redystrybucji. Jeśli masz pytania, skontaktuj się proszę z Gregiem Hankinsem, koordynatorem Linux HOWTO, pod adresem gregh@sunsite.unc.edu. Możesz użyć tego adresu z programem finger by zdobyć numer telefonu i inne dodatkowe informacje dotyczące kontaktu. Unix jest zastrzeżonym znakiem przemysłowym X/Open Ltd.; MS-DOS, Windows, Windows NT i Windows 95 są zastrzeżonymi znakami Microsoft Corp.; System X Windows jest znakiem zastrzeżonym Consortium X, Inc. Wszystkie inne znaki zastrzeżone należą do ich odpowiednich posiadaczy. 22.. 22.. ZZnnaakkii ii zzeessttaawwyy zznnaakkóóww Ażeby zrozumieć i wyświetlać znaki różnych języków, system i programy muszą być zdolne odróżniać je od innych znaków. To jest, każdy pojedynczy znak musi mieć odrębną reprezentację wewnątrz systemu operacyjnego, bądź konkretnego pakietu programów. Taka kolekcja wszystkich odrębnych znaków które jakiś system jest w stanie reprezentować w danym momencie nazywa się zestawem znaków. W czasie tworzenia największych systemów operacyjnych nikt nie dbał o to aby programy były wielojęzyczne. Dlatego też najpopularniejszym zestawem znaków był (i ciągle jest) ASCII (American Standard Code for Information Interchange). Standardowy ASCII (aka siedmiobitowy ASCII) zawiera 128 odrębnych kodów. Niektóre z nich ASCII definiuje jako faktyczne drukowalne znaki, a niektóre są tak zwanymi znakami kontrolnymi, które posiadały specjalne znaczenia w starszych protokołach komunikacyjnych. Każdy element zestawu identyfikuje kod będący liczbą całkowitą (0-127). Podzbiór znaków drukowalnych przedstawia te które znaleźć można na klawiaturze maszyny do pisania, z niewielkimi dodatkami. Każdy znak zajmuje siedem najmniej znaczących bitów bajtu, podczas gdy najbardziej znaczący używany był dla celów kontrolnych (np. kontroli transmisji w starszych pakietach komunikacyjnych). Koncepcję ASCII siedmiobitowego rozszerzył ASCII ośmiobitowy (aka rozszerzony ASCII). W tym zestawie zakres kodów znaków to 0-255. Dolna połowa (0-127) to czysty ASCII, podczas gdy górna zawiera 127 dodatkowych znaków. Ponieważ zestaw ten jest wstecznie kompatybilny z ASCII (znak ciągle zajmuje osiem bitów, kody odpowiadają staremu ASCII), zyskał on sobie szeroką popularność. ASCII ośmiobitowe nie definiuje zawartości górnej połówki zestawu. Dlatego ISO powzięło zadanie ustalenia rodziny standardów znanych jako rodzina ISO-8859-X. Jest to zbiór kodowań ośmiobitowych, w których niższa połowa każdego kodowania (0-127) odpowiada ASCII, a wyższa definiuje znaki dla różnych języków. Zdefiniowano na przykład następujące kodowania: ˇ 8859-1 - Europa Zachodnia, Ameryka Łacińska (znany też jako Latin 1) ˇ 8859-2 - Europa Środkowa i Wschodnia ˇ 8859-5 - cyrylica ˇ 8859-8 - hebrajski W Latin 1 górna połowa tabeli definiuje różne znaki które nie są częścią alfabetu angielskiego, ale znajdują się w różnych językach zachodnioeuropejskich (umlauty niemieckie, akcenty francuskie). Programy które nie zakładają nic co do ósmego bitu danych ASCII zwane są ośmiobitowo czystymi. Niektóre starsze programy, napisane z myślą o ASCII 7-bitowym, nie są czyste ośmiobitowe i mogą działać niepoprawnie z danymi ośmiobitowymi. Większość jednak pakietów domyślnie radzi sobie z ośmiobitowym ASCII, albo wymaga bardzo prostego ustawienia. UWAGA: zanim wyślesz pytanie "Wszystko ustawiłem poprawnie, a nie mogę wprowadzać/oglądać znaków cyrylicowych!", zajrzyj do sekcji 8 co do uwag o programie którego używasz. Ponieważ na większości systemów ASCII zajmuje osiem bitów, nie ma już możliwość aby ciągle je rozszerzać. Sposobem na zaimplementowanie nowych symboli w kodowaniach opartych na ASCII jest stworzenie innej implementacji rozszerzonego ASCII. W taki właśnie sposób zaimplementowane zostało kodowanie cyrylicy w ASCII. Wspomnieliśmy już o standardzie ISO-8859-5 jako określającym kodowanie cyrylicy. Lecz jak to często bywa ze standardami, stworzono go nie biorąc pod uwagę istniejącej praktyki w byłym ZSRR. Jedyną więc rzeczą jaką ten standard osiągnął było spotęgowanie zamieszania. Nie powiedziałbym że gdzieś się znacząco używa ISO-8859-5. Innymi standardami kodowania cyrylicy są tak zwane kodowanie Alt i strona kodowa 1251 Microsoftu. Ta pierwsza stworzona została (przez kogo?) dość dawno temu na potrzeby MS-DOS. W tamtych czasach nie było jeszcze tego całego szumu o internetowaniu, intencją więc było uczynienie jej jak najbardziej kompatybilnej ze standardem IBM. Dlatego kodowanie Alt jest w rzeczywistości stroną kodową IBM, gdzie wszystkie specjalne znaki europejskie w górnej połówce zastąpiono cyrylicznymi, z wyłączeniem pseudografiki. Nie rujnowało to łatwego tworzenia okienek i dawało także znaki cyrylicowe. Standard Alt ciągle żyje i jest niesłychanie popularny w świecie MS-DOSa. Strona kodowa 1251 to po prostu próba Microsoftu pokazania nowego standardu dla kodowania cyrylicy w Windows. Na ile wiem, nie jest ona kompatybilna z czymkolwiek (niezbyt dziwne, co?) I w końcu istnieje KOI-8. Jest ono również stare, ale zaprojektowano je mądrze i dzisiaj założenia tego projektu wyglądają naprawdę użytecznie. I znów, jest ono kompatybilne z ASCII, a znaki cyrylicy umieszczone są w górnej połówce. Lecz głównym założeniem projektowania KOI-8 jest to że pozycje znaków cyrylicy muszą odpowiadać znakom angielskim o zbliżonej wymowie. Konkretnie, jeśli ustawimy ósmy bit w angielskim 'a', dostaniemy możemy uciąć ósmy bit z każdego znaku i dalej mieć czytelny tekst. Bardzo to dzisiaj ważne, ponieważ w Internecie jest wiele węzłów pocztowych które po prostu po cichu obcinają ósmy bit, pewne że wszyscy na całej Ziemi mówią po angielsku. Nic dziwnego że KOI-8 szybko stał się de facto standardem dla cyrylicy w Internecie. Andriej A. Czernow poczynił ogromne nakłady pracy aby ustalić w tym obszarze standard. Jest on autorem RFC 1489 ("Registration of a Cyrillic character set"). Te dwa standardy Alt i KOI-8 różnią się tylko pozycjami znaków cyrylicowych w tabeli (to jest kodami znaków cyrylicowych)/ Główną różnicą jest to że kodowanie Alt używane jest tylko przez użytkowników MS-DOS, podczas gdy KOI-8 używane jest w Unixie, a także w MS-DOSie (chociaż w tym drugim jest znacznie mniej popularne). Ponieważ robimy to co trzeba (to znaczy pracujemy w systemie Unixowym) skupimy się głównie na KOI-8. Co do standardu ISO, jest on bardziej popularny jako standard cyrylicy. w Europie i USA. W Rosji zdecydowanie przoduje KOI-8. Istnieją i inne standardy, różne od ASCII i o wiele bardziej elastyczne. Najbardziej znanym jest Unicode. Nie są jednak one zaimplementowane tak dobrze jak te podstawowe w Unixie w ogólności i Linuxie w szczególności. Dlatego też nie będę ich tu opisywał. 33.. 33.. UUssttaawwiiaanniiee ttrryybbuu tteekkssttoowweeggoo Zasadniczo tryb tekstowy jest najprostszą metodą pokazywania i wprowadzania znaków cyrylicy. Istnieje jednak jedna zasadnicza komplikacja: fonty w trybie tekstowym i operacje na układzie klawiatury zależą od implementacji sterownika terminala. Nie ma więc przenośnej metody dla osiągnięcia tego celu między różnymi systemami. Za chwilę opiszę sposób radzenia sobie ze sterownikiem konsoli Linuxa. Tak więc jeśli masz inny system, nie spodziewaj się że będzie to działać u ciebie. Zajrzyj raczej do dokumentacji swojego sterownika terminala. Poślij mi jednakże jakiekolwiek informacje jakie znajdziesz, tak aby mógł włączyć je do przyszłych wersji tego dokumentu. 33..11.. 44..11.. KKoonnssoollaa Sterownik konsoli Linuxa jest dość elastycznym kawałkiem software'u. Potrafi on zmieniać fonty oraz układy klawiatury. Aby to osiągnąć, będziesz potrzebował pakietu kbd. RedHat i Slackware instalują kbd jako część systemu. Pakiet kbd zawiera narzędzia do kontrolowania klawiatury oraz znaczny zbiór fontów i układów klawiatury. By ustawić cyrylicę, trzeba wykonać dwie rzeczy: 1. Ustawienie czcionki ekranowej. Wykonywane jest to za pomocą programu setfont. Pliki z czcionkami umieszczone są w /usr/lib/kbd/consolefonts. UWAGA: Nigdy nie uruchamiaj programu setfont pod X, ponieważ zawiesi on twój system. Dzieje się tak ponieważ działa on z odwołaniami niskiego poziomu do karty graficznej, których nie lubi X. 2. Załadować odpowiedni układ klawiatury programem loadkeys. UWAGA: W RedHat 3.0.3 /usr/bin/loadkeys ma zbyt zawężone prawa dostępu, konkretnie 700 (rwx------). Nie ma powodu aby tak było, ponieważ każdy może skompilować swoją własną kopię i uruchomić ją (odpowiednie odwołania do systemu nie są zarezerwowane tylko dla administratora). Poproś więc swojego sysadmina aby ustawił dlań bardziej sensowne prawa dostępu (na przykład 755). Oto wyciąg z mojego skryptu cyrload, który ustawia tryb cyrylicy dla konsoli linuxowej. if [ notset.$DISPLAY != notset. ]; then echo "`basename $0`: nie działa pod X" exit fi loadkeys /usr/lib/kbd/keytables/ru.map setfont /usr/lib/kbd/consolefonts/Cyr_a8x16 mapscrn /usr/lib/kbd/consoletrans/koi2alt echo -ne "\033(K" # magiczna sekwencja echo "Użyj prawego Ctrl aby zmienić tryb" Pozwól mi to nieco wyjaśnić. Ładujesz odpowiednie mapowanie klawiatury. Następnie ładujesz font odpowiadający zestawowi znaków Alt. Później, aby móc poprawnie wyświetlać tekst w KOI-8, ładujesz tablicę przekodowywania ekranowego. Dokonuje ona translacji niektórych znaków z górnej połówki kodowania na kodowanie Alt. Kluczowe znaczenie ma słowo 'niektóre' - nie wszystkie znaki podlegają translacji, dlatego też niektóre z nich, jak pseudograficzne znaki IBM, trafiają na ekran niezmodyfikowane i wyświetlają się poprawnie, ponieważ są one kompatybilne z kodowaniem Alt, w przeciwieństwie do KOI-8. Aby się upewnić, uruchom mc i udawaj że jesteś znów w MS-DOS 3.3... W końcu, owa magiczna sekwencja jest ważna, ale nie mam żadnego pojęcia co takiego robi resetuje konsolę i mapy odwzorowań; patrz Keyboard-HOWTO - przyp. GSN. Pożyczyłem/podkradłem ją z German-HOWTO jeszcze w 1994, kiedy było no chyba jedynym HOWTO zorientowanym na języki narodowe. Jeśli masz jakiś pomysł co do tej magicznej sekwencji, powiadomij mnie, proszę. Dla tych purystów którzy nie chcą próbować kodowania Alt dołączam jeszcze jedną wersję powyższego skryptu, używającą rdzennych fontów KOI-8. if [ notset.$DISPLAY != notset. ]; then echo "`basename $0`: cannot run under X" exit fi loadkeys /usr/lib/kbd/keytables/ru.map setfont /usr/lib/kbd/consolefonts/koi-8x16 echo "Użyj prawego Ctrl aby zmienić tryb" Nie spodziewaj się jednak ładnych ramek w swoich okienkowych aplikacjach tekstowych. Chcesz to pewnie teraz wypróbować. Ustaw bash lub tcsh jak trzeba, uruchom je ponownie, potem naciśnij prawy klawisz Ctrl i upewnij się że otrzymujesz prawidłowe znaki cyrylicy. Klawisz 'q' musi dawać rosyjskie 'krótkie i', w generować 'c' itd. Jeśli coś pokręciłeś, najlepszą rzeczą jest przywrócenie ustawień oryginalnych (tj. amerykańskich). Wykonaj następujące komendy: loadkeys /usr/lib/kbd/keytables/defkeymap.map setfont /usr/lib/kbd/consolefonts/default8x16 UWAGA: niestety sterownik konsoli nie jest w stanie zachować swojego statusu (a przynajmniej nie w prosty sposób) podczas uruchamiania X Windows. Dlatego, kiedy wyjdziesz z X (albo przełączysz zeń na konsolę), będziesz musiał ponownie załadować rosyjski font konsolowy. 33..22.. KKoonnssoollaa FFrreeeeBBSSDD Nie używam FreeBSD, tak więc nie mogłem przetestować poniższej informacji. Trzeba zacząć od tego że wszystkie dane w tej sekcji należy traktować jako wskaźniki. Strona domowa projektu FreeBSD może mieć jakieś informacje na ten temat. Innym dobrym źródłem jest grupa newsowa relcom.fido.ru.unix. Sprawdź także zasoby wyliczone w sekcji 11. W każdym razie, oto co Ilja K. Orechow sugeruje zrobić aby konsola FreeBSD mówiła po rosyjsku: 1. dodaj w /etc/sysconfig: keymap=ru.koi8-r keyrate=fast # UWAGA: ^[ poniżej to pojedynczy znak kontrolny [ESC] keychange="61 ^[[K" cursor=destructive scrnmap=koi8-r2cp866 font8x16=cp866b-8x16 font8x14=cp866-8x14 font8x8=cp866-8x8 2. w /etc/csh.login: setenv ENABLE_STARTUP_LOCALE setenv LANG ru_SU.KOI8-R setenv LESSCHARSET latin1 33..33.. SSyysstteemm XX WWiinnddooww Podobnie jak tryb konsoli, środowisko X również wymaga nieco konfiguracji. Zawiera się w niej ustawienie trybu wprowadzania i Xowych czcionek. Oba aspekty omówione są poniżej. 33..33..11.. XXoowwee cczzcciioonnkkii Po pierwsze zdobyć musisz kolekcję czcionek posiadających znaki cyrylicy w odpowiednich miejscach. Jeśli używasz najnowszej dystrybucji X (lub XFree86), istnieje szansa że masz już takie czcionki. W końcu 1995 X Windows System włączył zestaw czcionek cyrylicowych, stworzonych przez Cronyxa. Zapytaj swojego administratora systemu, albo jeśli to ty nim jesteś, sprawdź swój system, to jest: 1. Uruchom xlsfonts | grep koi8. Jeśli wyliczono jakieś czcionki, twój X-serwer już o nich wie. 2. W przeciwnym razie wykonaj find /usr -name crox\*.pcf\* aby znaleźć miejsce czcionek cyrylicowych na serwerze. Będziesz musiał włączyć te czcionki dla X-serwera, jak wyjaśniam poniżej. Jeśli nie znalazłeś takich fontów zainstalowanych, będziesz musiał to sam zrobić. Istnieje pewna rozbieżność co do czcionek. XFree86 twierdzi że kolekcję czcionek rosyjskich zamieszczonych w dystrybucji stworzył Cronyx. Niemniej na sieci znaleźć można inne czcionki cyrylicowe Cronyxa (np. na ftp.klae.su), znane jako pakiet xrus (nie myl go z programem xrus, który używany jest do ustawienia układu klawiatury cyrylicy). Na szczęście ten drugi został ostatnio przemianowany na xruskb. xrus ma mniej czcionek niż kolekcja w XFree86 (38 wobec 68), ale te drugie czcionki nie chciały działać z moim ustawieniem Netscape - dawały mi jakąś strasznie dużą czcionkę w pasku menu. Pakiet xrus nie stwarzał tego problemu. Sugerowałbym ściągnięcie i wypróbowanie obydwu. Wybierz ten który bardziej ci się podoba. Mam także zamiar wkrótce stworzyć pakiety RPM dla obu kolekcji i podładować je do ftp.redhat.com oraz mojego FTP. Istnieją także starsze rzeczy, na przykład pakiet VakuFonts, stworzony przez Sergieja Wakulenko (), który tworzył podstawę dla tego w dystrubucji X. Istnieją też inne. Ważną rzeczą jest to że nazwy czcionek w starszych kolekcjach nie całkiem ściśle stosowały się do standardów. Późniejsze są w zasadzie w porządku, ale czasami wywołać mogą różne dziwne błędy. Miałem na przykład niemiłe doświadczenia z Maple V dla Linuxa, który wykładał się tajemniczo z pakietem VakuFonts, ale działał bez zarzutu ze "standardowymi". Zacznijmy więc od czcionek: 1. Ściągnij odpowiednią kolekcję czcionek. Pakiet dla XFree86 można znaleźć w każdym FTP zawierającym dystrybucję Xa, na przykład możesz ją ściągnąć bezpośrednio z FTP XFree86. Pakiet xrus znaleźć można na ftp.klae.su. 2. Teraz kiedy masz czcionki, stwórz dla nich jakiś katalog. Zwykle złym pomysłem jest wsadzanie nowych czcionek do już istniejącego katalogu. Umieść je więc w, powiedzmy, /usr/lib/X11/fonts/cyrillic dla instalacji całosystemowej, albo po prostu utwórz katalog prywatny dla użytku osobistego. 3. Jeśli nowe czcionki są w formacie BDF (pliki *.bdf), musisz je skompilować. Wykonaj dla każdej czcionki bdftopcf -o name.pcf name.bdf Jeśli twój serwer obsługuje czcionki skompresowane, skompresuj je używając programu compress compress name.pcf Jeśli chcesz wsadzić nowe czcionki do już istniejącego katalogu, będziesz musiał połączyć stary i nowy font.alias. w przypadku gdy oba istnieją, np. cat font.alias.new >> font.alias Teraz, żeby wszystko ustawić, powinieneś wykonać trzy rzeczy: 4. Każda katalog z czcionkami w X musi zawierać listę znajdujących się w nim czcionek. Lista ta przechowywana jest w fonts.dir. Nie musisz jej tworzyć ręcznie. Zamiast tego, wykonaj cd <katalog_z_nowymi_czcionkami> mkfontdir 5. Musisz teraz powiadomić X-serwer o tym katalogu z czcionkami. Masz tu kilka opcji: ˇ Instalacja dla całego systemu XFree86. Jeśli uruchamiasz tą wersję X, dołącz nowy katalog do listy katalogów w XF86Config. Aby znaleźć położenie tego pliku spójrz na wyjście startx. Patrz też XF86Config{4,5} po szczegóły. ˇ Instalacja dla całego systemu poprzez xinit. Dodaj katalog startowy do pliku startowego xinit. Patrz xinit(1x) i następny punkt po szczegóły. ˇ Instalacja osobista. Masz specjalny plik startowy dla X - ~/.xinitrc (albo ~/.Xclients, albo ~/.xsession dla użytkowników RedHata). Dodaj do niego następujące komedy: xset +fp katalog_z_czcionkami xset fp rehash ˇ Zrestartuj teraz X. Jeśli wykonałeś wszystko prawidłowo, testy na początku sekcji powiodą się. Pobaw się także xfontsel(1x), aby się upewnić że możesz wybierać czcionki cyrylicowe. Aby klienci X używali czcionek cyrylicowych, musisz ustawić odpowiednie X-zasoby. Na przykład, ustawiam czcionkę rosyjską jako domyślną w swoim /.Xdefaults: *font 6x13 Ponieważ moje czcionki cyrylicowe są pierwsze na liście ścieżek do czcionek (patrz rezultaty xinit, wybrana zostanie pierwsza czcionka o aliasie 6x13) To prostszy przykład. Jeśli chcesz ustawić odpowiednią część X-klienta by używała czcionek cyrylicowych, musisz znaleźć nazwę zasobu (np. za pomocą editres(1x) i ustalić go albo w bazie danych zasobów, albo w linii komend. Oto kilka przykładów: $ xterm -font '-cronyx-*-bold-*-*-*-19-*-*-*-*-*-*-*' $ xfontsel -xrm '*quitButton.font: -*-times-*-*-*-*-13-*-*-*-*-*-koi8-*' 33..33..22.. TTłłuummaacczzeenniiee ddaannyycchh wwpprroowwaaddzzaannyycchh W najnowszych wersjach X (X11R61 i wyższych) istnieją dwie "standardowe" metody wprowadzania znaków: pierwotna, działająca z użyciem programu xmodmap, oraz nowa, zwana (Xkb) XKeyBoard. Pierwsze co powinieneś zrobić to wyłączyć metodę Xkb! Nie daj się oczarować jej możliwościami ustawienia "cyrylicznej klawiatury". Wygląda na to że ta metoda używa klawsymów zdefiniowanych w keysymdef.h. Plik ten definiuje klawsymy dla wielu języków. Jednym problemem jest to że te definicje nie mają nic wspólnego z rozszerzonym zestawem znaków ASCII - jedynym na którym potrafi wyłącznie operować większość programów! Ledwie wiem o jakiś programach które zdolne są przetworzyć klawsymy z keysymdef.h różne od ośmiobitowego ASCII. Jednakowoż naszym celem jest sprawienie żeby obsługa KOI-8 zadziałała. Aby wyłączyć obsługę Xkb, przeglądnij sekcję Keyboard w swoim pliku XF86Config i wykomentuj wszystkie linie zaczynające się od Xkb (wielkość liter bez znaczenia). Zamiast nich, wstaw następującą linię: XkbDisable Program xmodmap pozwala na dopasowanie kodów które wysyłają różne znaki i ich kombinacje. Ustawia on to opierając się na pliku zawierającym tabelę tłumaczeń. Jeśli nie chcesz zajmować się wszystkimi tymi trikami i wolisz rozwiązanie od ręki, bądź to ściągnij odpowiednią tablicę xmodmapową, dostępną na wielu ftpach zajmujących się cyrylicą, na przykład ftp.kiae.su albo ftp.funet.fi. Sam sporządziłem również mapę opisaną poniżej, dostępną przez mój ftp. Bardziej odpowiednią alternatywą jest instalacja pakietu xruskb, który pozwala ci skonfigurować większość parametrów translacji wejściowej bez potrzeby obeznania się z xmodmap. Poniżej uproszczony opis przystosowania wejścia. Jeśli chcesz jakiś bardziej wyrafinowanych trików, zajrzyj do xmodmap(1) lub, jeszcze lepiej, poczekaj na następną wersję główną X, która miejmy nadzieję zajmie się bieżącymi problemami ze wprowadzaniem danych. W naszym przypadku, tablica tłumaczeń powinna definiować dwie rzeczy: ˇ kody znaków wysyłane przez klawisze alfanumeryczne, oraz ˇ zasady przełączania się między trybami 33..33..22..11.. TTaabblliiccaa zznnaakkóóww Jest to w zasadzie sekwencja dyrektyw które przypisują pewne klawsymy określonym kodom klawiszy. Ogólna składnia to: keycode kod = sym1 sym2 sym3 sym4 gdzie kod to numeryczny kod określonego klawisza na klawiaturze (zajrzyj do tablicy standardowej dla twojego systemu. W moim przypadku znajduje się ona w pliku /usr/lib/X11/etc/xmodmap.std). "Symy" definiują klawsymy wysyłane przez ten klawisz w różnych stanach. Sym1 jest klawsymem wysyłanym w stanie normalnym, sym2 odpowiada klawiszowi z naciśniętym Shift (zwykle), Sym3 i sym4 definiują klawsymy wysyłane przy aktywnym Mode_switch dla stanów normalnych i ze Shiftem odpowiednio (grupa 2, zgodnie z X Protocol Specification). W naszym przypadku aktywny Mode_switch odpowiada wprowadzaniu w trybie cyrylicy. Wartościami powinny być albo kody szesnastkowe, albo stałe symboliczne z /usr/include/X11/keysymdef.h (bez początkowego "XK_"). Tak więc jeżeli chcielibyśmy aby klawisz odpowiadający łacińskiemu "a" wypisywał "a" rosyjskie w trybie alternatywnym, napisalibyśmy jak niżej: keycode 38 = a A 0xC1 0xE1 Czytelnik ciekaw być może dlaczego nie użyłem stałych Cyrillic_a oraz Cyrillic_A, odpowiednio. Odpowiedż brzmi: nie działają one dla mnie. Nie jestem zbyt obeznany z wnętrznościami specyfikacji systemu X Windows, ale mam następujące wytłumaczenie: symboliczne stałe powyżej mają wartości 0x6C1 oraz 0x6E1 odpowiednio. Oznacza to że w rzeczywiście multijęzykowym środowisku możnaby używać ich bez ich nakładania się na inne zestawy znaków. Jednak standard KOI-8 nie jest szczególnie przystosowany do takiego środowiska. Ponieważ więc chcemy pozostać kompatybilni z przeszłością, naruszymy reguły obsługi wielu języków w systemie X Windows. Oto tabela dla najbardziej popularnej rosyjskiej klawiatury w układzie JCUKEN (tabele te pochodzą od tych z pakietu VakuFonts). keysym 4 = 4 dollar 4 quotedbl keysym 5 = 5 percent 5 colon keysym 6 = 6 asciicircum 6 comma keysym 7 = 7 ampersand 7 period keysym q = q Q 0xCA 0xEA keysym w = w W 0xC3 0xE3 keysym e = e E 0xD5 0xF5 keysym r = r R 0xCB 0xEB keysym t = t T 0xC5 0xE5 keysym y = y Y 0xCE 0xEE keysym u = u U 0xC7 0xE7 keysym i = i I 0xDB 0xFB keysym o = o O 0xDD 0xFD keysym p = p P 0xDA 0xFA keysym bracketleft = bracketleft braceleft 0xC8 0xE8 keysym bracketright = bracketright braceright 0xDF 0xFF keysym a = a A 0xC6 0xE6 keysym s = s S 0xD9 0xF9 keysym d = d D 0xD7 0xF7 keysym f = f F 0xC1 0xE1 keysym g = g G 0xD0 0xF0 keysym h = h H 0xD2 0xF2 keysym j = j J 0xCF 0xEF keysym k = k K 0xCC 0xEC keysym l = l L 0xC4 0xE4 keysym semicolon = semicolon colon 0xD6 0xF6 keysym apostrophe = apostrophe quotedbl 0xDC 0xFC keysym grave = grave asciitilde 0xA3 0xB3 keysym z = z Z 0xD1 0xF1 keysym x = x X 0xDE 0xFE keysym c = c C 0xD3 0xF3 keysym v = v V 0xCD 0xED keysym b = b B 0xC9 0xE9 keysym n = n N 0xD4 0xF4 keysym m = m M 0xD8 0xF8 keysym comma = comma less 0xC2 0xE2 keysym period = period greater 0xC0 0xE0 Dla używających rosyjskiego układu JAWERTY dołączyłem następującą tabelę: keysym q = q Q 0xD1 0xF1 keysym w = w W 0xD7 0xF7 keysym e = e E 0xC5 0xE5 keysym r = r R 0xD2 0xF2 keysym t = t T 0xD4 0xF4 keysym y = y Y 0xD9 0xF9 keysym u = u U 0xD5 0xF5 keysym i = i I 0xC9 0xE9 keysym o = o O 0xCF 0xEF keysym p = p P 0xD0 0xF0 keysym bracketleft = bracketleft braceleft 0xDB 0xFB keysym bracketright = bracketright braceright 0xDD 0xFD keysym a = a A 0xC1 0xE1 keysym s = s S 0xD3 0xF3 keysym d = d D 0xC4 0xE4 keysym f = f F 0xC6 0xE6 keysym g = g G 0xC7 0xE7 keysym h = h H 0xC8 0xE8 keysym j = j J 0xCA 0xEA keysym k = k K 0xCB 0xEB keysym l = l L 0xCC 0xEC keysym z = z Z 0xDA 0xFA keysym x = x X 0xD8 0xF8 keysym c = c C 0xC3 0xE3 keysym v = v V 0xD6 0xF6 keysym b = b B 0xC2 0xE2 keysym n = n N 0xCE 0xEE keysym m = m M 0xCD 0xED keysym backslash = backslash bar 0xDC 0xFC keysym grave = grave asciitilde 0xC0 0xE0 keysym equal = equal plus 0xDE 0xFE keysym 3 = 3 numbersign 3 0xDF keysym 4 = 4 dollar 4 0xFF 33..33..22..22.. ZZaassaaddyy pprrzzeełłąącczzaanniiaa ttrryybbóóww Jest to zasadniczo część konfiguracji Xowej cyrylicy wymagająca najwięcej wiedzy. Zdefiniować powinieneś warunki w których tryb bieżący przełączany jest między trybem zwykłym i cyrylicy. Dzięki mądremu zaprojektowaniu translacji wejścia w X, jest ona nieprzenośna, nieelastyczna, niekompletna i ogólnie mówiąc do kitu. Nic dziwnego że ludzie przenoszą się na MS Windows. Obecnie dużo się dzieje w rozwijaniu XFree86 w ogólności i modelu wejścia w X w szczególności. Rezultat jest taki że twoja konfiguracja może działać z jedną wersją XFree86 i nie działać z inną. Co gorsza, czasami rzeczy różnią się między różnymi serwerami w tej samej dystrybucji. Najpierw opiszę moje ustawienia, które w obecnej chwili działają dla mnie. Pracuję w XFree86 3.3, serwer SVGA. W moim pliku XF86Config (w dystrybucji RedHata umieszczony jest on w /etc/X11, w sekcji "Keyboard" mam następujące dyrektywy: Istnieją dwa sposoby osiągnięcia tego w Linuxie. Jedna jest specyficzna dla XFree86, podczas gdy druga jest bardziej ogólna (nie za bardzo może, jak i pokażę niżej). LeftAlt Meta RightAlt ModeShift ScrollLock ModeLock RightCtl Control UWAGA: Metoda ustawiania reguł przełączania trybów poprzez plik XF86Config jest specyficzna dla XFree86. Nie będzie ona działać w innych wersjach X. Teraz ładuję tabelę opisaną w poprzedniej sekcji i zachowaną w jakimś pliku używając narzędzia xmodmap(1x): xmodmap <plik_z_tabelą> Teraz mam możliwość zaznaczenia trybu wprowadzania cyrylicy używając prawego klawisza Alt oraz przełączenia na cyrylicę i z powrotem używając ScrollLock. Zdziwisz się jeśli zobaczysz że ani CapsLock ani klawisze Control nie działają w trybie wprowadzania cyrylicy. Cóż, powiem to raz jeszcze: model wejścia X jest do kitu! Resztę tej sekcji zajmuje zwięzły opis zwykłej konfiguracji translacji wejścia w X. Działała ona dla starszych wydań XFree86, ale teraz wykazuje rozmaite problemy. Pozostawiłem ją tutaj, tak aby co bardziej ciekawi z was mogli spróbować części tego i zużytkować to. Powinieneś zrobić co następuje: ˇ przypisać klawsym Mode_switch jakiemuś klawiszowi, oraz ˇ dodać Mode_switch do jakieś nieużywanego układu Teraz klawisz do którego przypisany jest ModeShift będzie działał jako przełącznik trybów. Oznacza to że gdy jest przyciśnięty, klawiatura znajduje się w trybie alternatywnym. Co więcej, jeśli dodasz klawsym Mode_lock do tego układu, będzie on ustawiał na stałe tryb alternatywny. Uwaga: są jednak pewne problemy. Siergiej Wakulenko (vax@cronyx.com) wskazał że różne implementacje X-serwerów mają różne zasady przypisywania przełączników trybu (np. niektóre serwery ograniczają zestaw klawiszy które mogą działać w trybie przełącznika do, powiedzmy, CapsLock, NumLock oraz ScrollLock). Na szczęście ma się to zmienić w następnym wydaniu systemu X Windows. Po szczegóły patrz specyfikacja X Protocol. Niestety nie udało mi się zmusić CapsLock aby miał tą samą funkcjonalność w trybie alternatywnym, konkretnie aby na stałe włączał duże litery. Wydaje mi się że nie można tego dokonać z powodu idiotycznego zaprojektowania translacji wejścia w X. Jeśli się mylę, proszę mnie poprawić. Zobaczmy przykład. Załóżmy że chce się używać prawego Alt jako przełącznika trybów i ScrollLock do ustawiania trybu na stałe. Najpierw powinno się sprawdzić domyślny układ modyfikatorów. Osiąga się to uruchamiając xmodmap bez argumentów. $ xmodmap xmodmap: up to 2 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25) mod1 Alt_L (0x40), Alt_R (0x71) mod2 Num_Lock (0x4d) mod3 mod4 mod5 Zgodnie z powyższym, plan ataku wygląda jak następuje: 1. usunąć klawisz Alt_R z klawsymu mod1 2. przypisać klawsym Mode_switch klawiszowi Alt_R 3. przypisać klawsym Scroll_Lock do kodu klawisza 78 (kodu rzeczywistego ScrollLock) 4. dodać Mode_switch do nieużywanego klawsymu mod3 i 5. dodać klawsym Scroll_Lock do mod3 Oto więc rozwiązanie: remove mod1 = Alt_R keysym Alt_R = Mode_switch keycode 78 = Scroll_Lock add mod3 = Mode_switch add mod3 = Scroll_Lock Jeśli użyjesz tego drugiego rozwiązania, możesz połączyć tabelę i dyrektywy dotyczące trybów w swoim pliku ~/.Xmodmap. Pliki takie dostarczane są przeważnie razem z różnymi pakietami do obsługi cyrylicy pod X. Dobrym przykładem są tabele w doskonałym pakiecie Siergieja Wakulenki, opisanym wyżej. Gdy już masz taki plik zawierający tabelę, powinieneś wykonać komendę: xmodmap filename Plik dla całego systemu to /usr/lib/X11/xinit/xinitrc; osobisty to albo ~/.xinitrc, albo ~/.Xclients, albo ~/.xsession, zależnie od tego co masz zainstalowane. UWAGA: Jeśli xmodmap narzeka na twoją tabelę, spróbuj załadować najpierw domyślną. Tabela domyślna znajduje się zwykle w /usr/lib/X11/etc/xmodmap.std. 44.. OObbssłłuuggaa ccyyrryylliiccyy ww LLaaTTeeXXiiee W tej sekcji opiszę kilka sposobów nakłonienia TeXa i LaTeXa do składania tekstu w cyrylicy. Istnieje kilka sposobów, które różnią się wyrafinowaniem instalacji i wygodą w obsłudze. Dla przykładu, jedną z możliwości jest zacząć bez żadnej wstępnej instalacji i użyć fontów cyrylicowych Washington AMSTeX. Z drugiej strony, możesz zainstalować pakiet LaTeX, który zapewnia wysoki stopień ustawień dotyczących cyrylicy. Mam pewne doświadczenia z dwoma pakietami. Pierwszy to pakiet cmcyralt autorstwa Wadima W. Żytnikowa () i Aleksandra Harina (), a ten drugi to pakiet LH autorstwa CyrTUG Cyrillic TeX Users Group ze stylami i dzieleniem wyrazów dla LaTeX2e autorstwa Sergieja O. Naoumowa (). Opiszę obydwa. Zauważ że dostępne są dwie wersje LaTeXa : 2.09 jest wersją starszą, podczas gdy 2e jest nowszym wydaniem pre-3.0. Jeśli używasz LaTeXa 2.09, przestaw się szybko na 2e. Ten drugi pozostaje kompatybilny z tym pierwszym, ale ma o wiele więcej funkcji. Miejmy nadzieję że wersja 3 zostanie wkrótce wypuszczona. Opiszę ustawienia dla LaTeXa 2e. Uwaga: oba te pakiety wymagają aby tekst w cyrylicy składany był z użyciem zestawu znaków Alt, nie KOI-8! Spowodowane jest to przyczynami historycznymi, ponieważ twórcy tych pakietów pracowali byli z EmTeXem - MS-DOSową wersją TeXa (nie wiedzieli jeszcze o Linuxie :-). Przestawienie ich na KOI-8 wymaga nieco wysiłku i spodziewane jest niebawem. Na razie, używaj jakiegoś narzędzia do konwersji tekstu rosyjskiego z KOI-8 do Alt. Patrz sekcja "Narzędzia użytkownika". 44..11.. UUżżyywwaanniiee WWaasshhiinnggttoonn CCyyrryylliiiicc Pakiet ten został stworzony przez American Mathematics Society w celu uzupełnienia dokumentów o odnośniki po rosyjsku. Dlatego też autorzy nie byli zbyt uważni, a czcionki wyglądają raczej niezręcznie. Pakiet ten określa się zwykle jako 'całkiem kiepski pakiet cyrylicy dla TeXa'. Niemniej jednak omówimy go, ponieważ jest on bardzo łatwy w użyciu i nie wymaga żadnej konfiguracji - kolekcja ta dostarczana jest z większością dystrybucji TeXa. Oczywiście nie będziesz mógł sobie pozwolić na taki luksus jak automatyczne przenoszenie wyrazów, ale jednak... 1. Poprzedź swój dokument następującymi dyrektywami: \input cyracc.def \font\tencyr=wncyr10 \def\cyr{\tencyr\cyracc} 2. Teraz aby napisać literę w cyrylicy, wprowadzasz \cyr i używasz odpowiedniej litery łacińskiej albo komendy TeXa. I tak małe litery rosyjskiego alfabetu wyrażają następujące kody: a b v g d e { Jest bardzo niewygodnym przekonwertować twoje teksty rosyjskie na takie kodowanie, lecz proces można zautomatyzować. Program translit (sekcja 11) obsługuje wynik w postaci TeXowej. 44..22.. PPaakkiieett KKOOII--88 ddllaa LLaaTTeeXXaa Pojawił się jakiś nowy pakiet teTeX-rus. Podobno obsługuje on zestaw znaków KOI-8 i ma wszystkie podstawowe rzeczy wymagane dla TeXa i LaTeXa. Osobiście jeszcze go nie próbowałem, chociaż słyszałem o pomyślnym go używaniu. 44..33.. UUżżyywwaanniiee ppaakkiieettuu ccmmccyyrraalltt ddllaa LLaaTTeeXXaa Pakiet cmcyralt znaleźć można na każdym z węzłów CTAN (Comprehensive TeX Archive Network), jak ftp.dante.de. Powinieneś zdobyć dwie kolekcje: kolekcję fontów z katalogu /fonts/cmcyralt oraz style i reguły dzielenia wyrazów z katalogu /macros/latex/contrib/others/cmcyralt. Uwaga: upewnij się że masz zainstalowany pakiet Sauter, bowiem cmcyralt potrzebuje z niego niektórych fontów. Pakiet ten możesz również zdobyć z węzła CTAN. Powinieneś teraz zrobić co następuje: 1. Umieścić nowe czcionki w drzewie czcionek TeXa. W moim systemie (Slackware 2.2) stworzyłem podkatalog cmcyralt w /usr/lib/texmf/fonts/cm/. Utwórz w nim podkatalogi src, tfm i vf. Umieść tam pliki .mf, .tfm oraz 2. Umieść pliki sterowników czcionek (*.fd) z archiwum stylów w odpowiednim miejscu (w moim przypadku był to /usr/lib/texmf/tex/latex/fd). 3. Umieść pliki stylów (*.sty) w odpowiednim katalogu stylów LaTeXa (w moim przypadku /usr/lib/texmf/tex/latex/sty). Teraz konfiguracja dzielenia wyrazów. Wymaga to przerobienia pliku bazowego LaTeXa. 1. Plik hyphen.cfg zawiera dyrektywy dla dzielenia wyrazów w angielskim i rosyjskim. Wytnij to co tyczy się rosyjskiego i umieść to w pliku konfiguracji dzielenia wyrazów LaTeXa, lthyphen.ltx. W moim przypadku plik ten znajdował się w /usr/lib/texmf/tex/latex/latex-base. 2. W tym samym katalogu umieść plik rhyphen.tex. Potrzebny jest on do stworzenia nowego pliku bazowego. Później możesz go usunąć. 3. Wykonaj w tym katalogu make. Nie zapomnij stworzyć odnośnika z Makefile do Makefile.unx. Podczas wykonywania make sprawdź komunikaty. Powinno się pojawić: Loading hyphenation patterns for Russian Jeśli wszystko pójdzie poprawnie, otrzymasz w tym katalogu nowy latex.fmt. Wstaw go w odpowiednie miejsce, tam gdzie znajdował się poprzedni (np. /usr/lib/texmf/ini/). Nie zapomnij zachować starego pliku! Otoż i to. Instalacja gotowa. Spróbuj przetworzyć przykłady z archiwum stylów. Jeśli możesz stworzyć pliki postscriptowe bez żadnych problemów, wszystko jest w porządku. Teraz aby używać cyrylicy w LaTeXie, wstaw na początek swojego dokumentu poniższą dyrektywę: \usepackage{cmcyralt} Po szczegóły patrz plik README w archiwum stylów cmcyralt. Uwaga: jeśli masz problemy z przykładami, założywszy że instalowałeś prawidłowo, to prawdopodobnie twój system TeX nie został zainstalowany poprawnie. Na przykład, przy mojej pierwszym teście każda próba stworzenia plików .pk dla czcionek rosyjskich nie udawała się (etap MakeTeXPK). Dokładne przyjrzenie się plikom wykryło pewien niejawny konflikt między konfiguracjami METAFONT localfont i ljfour. Kiedyś było to działało, ale rozpadło się po instalacji cmcyralt. Skontaktuj się ze swoim lokalnym guru od TeXa - TeX jest bardzo (czasami za bardzo) złożony aby rekonfigurować go bez wcześniejszej znajomości. 44..44.. PPaakkiieett CCyyrrTTUUGG Pakiet CyrTUG uzyskać możesz z archiwum SunSite (ftp://sunsite.unc.edu/pub/academic/russian-studies/Software <ftp://sunsite.unc.edu/pub/academic/russian-studies/Software>). Zrzuć stamtąd pliki CyrTUGfonts.tar.gz, CyrTUGmacro.tar.gz i hyphen.tar.Z. Proces instalacji nie różni się od opisanego powyżej. 55.. CCyyrryylliiccaa ww PPoossttSSccrriippttcciiee Eksperci powiadają że PostScript jest łatwy. Nie potrafię osądzić - mam zbyt wiele rzeczy do nauczenia się aby poświęcić trochę czasu na naukę PostScriptu. Spróbuję więc opisać moje smutne z nim doświadczenia. Mile widziałbym wsparcie od każdego kto wie więcej na ten temat ode mnie (ok. 99% ludzkości). Zasadniczo aby wydrukować tekst z użyciem PostScriptu, musisz się upewnić co do następujących rzeczy: ˇ Czcionka cyrylicowa jest załadowana lub zawarta w dokumencie ˇ W dokumencie zawarty jest tekst w cyrylicy ˇ Tekst w cyrylicy używa odpowiednich kodów które odpowiadają wymaganiom czcionki ˇ Wybrano odpowiednią czcionkę do drukowania tekstu w cyrylicy Nie ma rozwiązania na tyle ogólnego aby je polecić jako środek ostateczny, Spróbuję nakreślić różne sposoby radzenia sobie z różnymi problemami odnośnie tematu. Jednym ze sposobów podejścia do konfiguracji cyrylicy jest użycie Ghostscripta. Ghostscript (lub po prostu gs w nowomowie) to darmowy (no, quasi-darmowy) interpreter PostScriptu. Ma on wiele zalet, pomiędzy nimi: ˇ Możliwość działania na różnych platformach (Windows, różne Unixy) ˇ Obsługa szerokiego zakresu drukarek niepostscriptowych ˇ Duży stopień konfigurowalności To co ważne w naszym konkretnym przypadku to to że gdy już raz skonfigurujemy Ghostscripta, możemy za jego pomocą dokonywać całości drukowania, eliminując tym samym ekstra konfigurację dla innych urządzeń postscriptowych (np. HP Laserjet IV). 55..11.. DDooddaawwaanniiee cczzcciioonneekk ccyyrryylliiccoowwyycchh ddoo GGhhoossttssccrriippttaa Jest to ważne, ponieważ zapewne nie będziesz chciał polegać na innych programach przy umieszczaniu w wynikowym postscripcie czcionek cyrylicowych. Zamiast tego dodajesz je do gs. i po prostu zmuszasz programy aby generowały wyjście w cyrylicy kompatybilne z czcionkami. Aby dodać do gs nową czcionkę (w formacie .pfa lub .pfb), musisz: 1. Dodać ją do katalogu czcionek gs (np. /usr/lib/ghostscript/fonts). 2. Dodać odpowiednie nazwy i aliasy dla czcionki w pliku Fontmap w katalogu gs Ostatnio pojawił się porządny zestaw czcionek cyrylicowych dla GhostScripta. Znajduje się on na ftp.kapella.gpi.ru. Ma on nawet konieczny wpis który trzeba dodać do pliku Fontmap. Ściągnąć musisz zawartość katalogu /pub/cyrillic/psfonts/. Plik README opisuje niezbędne szczegóły. 66.. DDrruukkoowwaanniiee Drukowanie zawsze jest rzeczą zawiłą. Istnieją różne drukarki różnych producentów z różnymi możliwościami. Nawet co do drukowania w "gołym" formacie nie ma jednorodnego rozwiązania (odnosi się to nie tylko do Unixa, ale również do innych systemów operacyjnych). Drukarki mają różne języki kontrolne, a często mają bardzo różne poglądy na obsługę innych takich języków. Dobrą wiadomością jest to że jeden taki język kontrolny wydaje się być uznawany za de facto standard dla opisywania zadań związanych z drukiem - to język PostScript, stworzony przez Adobe Corporation. Innym problemem jest różnorodność wymagań związanych z usługą drukowania. Na przykład, czasem chcesz po prostu wydrukować kawałek programu w C z rosyjskimi komentarzami, więc nie potrzebujesz żadnego ładnego drukowania - po prostu czysty wydruk ASCII w pojedynczej czcionce. Innym razem, kiedy projektujesz pocztówkę dla swojej dziewczyny, będziesz zapewne musiał ją złożyć używając różnych czcionek, i tak dalej. Będzie to wymagało z pewnością więcej wysiłku w kwestii ustawienia obsługi cyrylicy. Aby podołać pierwszemu zadaniu będziesz musiał po prostu zmusić swoją drukarkę aby rozumiała jeden font cyrylicowy i (być może) zainstalować jakiś program filtrujący, który będzie wypisywał dane w odpowiednim formacie. Aby dokonać tego drugiego zadania, będziesz musiał nauczyć swoją drukarkę różnych czcionek i mieć specjalny software. Istnieje także sytuacja pośrodku, gdy masz program który wie jak wygenerować i fonty i odpowiednie dane dla drukarki, możesz więc, powiedzmy, wykonać parę ładnych wydruków kodu źródłowego bez wyrafinowanych systemów obróbki tekstu. Wszystkie te opcje zostaną mniej lub bardziej omówione poniżej. 66..11.. ŁŁaaddoowwaanniiee cczzcciioonneekk ccyyrryylliiccoowwyycchh ddoo ddrruukkaarrkkii nniieeppoossttssccrriippttoowweejj Jeśli masz starą dobrą drukarkę igłową i potrzebujesz tylko wydrukować czysty tekst w KOI-8, spróbuj poniższego: 1. Znajdź odpowiednią czcionkę KOI-8 dla swojej drukarki. Sprawdź kolekcje MS-DOSowe w Internecie (na przykład archiwum SimTel, ftp. simtel.net) 2. Dowiedz się z instrukcji jak załadować czcionkę do drukarki i, możliwie, napisz prosty program który to robi 3. Uruchom ten program z odpowiedniego pliku .rc w czasie startu systemu. Tak więc mając znaki cyrylicowe w górnej połówce zestawu znaków drukarki będziesz mógł drukować teksty po rosyjsku bez żadnych ceregieli. Alternatywnie z czcionkami KOI-8 możesz użyć czcionek Alt. Są ku temu dwa powody: ˇ Może być łatwiej znaleźć czcionkę Alt, bowiem takowe były bardzo rozpowszechnione w kulturze MS-DOSowej ˇ Posiadanie odpowiedniej czcionki Alt pozwoli ci drukować również pseudografikę Niemniej w tym przypadku będziesz musiał przekodować swoje teksty z KOI-8 na Alt przed posłaniem ich do drukarki. Jest to całkiem łatwe, ponieważ pełno jest programów które to robią (patrz "translit", na przykład), tak więc wystarczy że właściwie wywołasz ten program w polu if /etc/ printcap. Na przykład dla programu translit napisać możesz: if=/usr/bin/translit -t koi8-alt.rus Patrz printcap(5) po szczegóły. 66..22.. DDrruukkoowwaanniiee rróóżżnnyymmii cczzcciioonnkkaammii Jednym świetnym sposobem poradzenia sobie z różnymi czcionkami i drukarkami jest użycie TeXa. Sterowniki TeXa zajmują się wszelkimi detalami, więc skoro już raz nauczyłeś TeXa rozumieć czcionki cyrylicowe, sprawa załatwiona. Inną możliwością jest użycie PostScriptu. Zdecydowałem się poświęcić temu cały rozdział, ponieważ nie jest to łatwe. W końcu, są i inne edytory tekstów które mają sterowniki drukarek. Nigdy nie próbowałem niczego poza TeXem, więc nie mogę niczego zasugerować 66..33.. KKoonnwweerrssjjaa tteekkssttuu ddoo TTeeXXaa Jeśli tym czego potrzebujesz jest wydrukowanie tekstu w ASCII bez żadnego dodatkowego przetworzenia, możesz spróbować użyć kilku programów które przerobią twój tekst w cyrylicy na gotowe do przetworzenia plik TeXa. Jednym z najlepszych programów do tego celu jest translit. W tym przypadku nie musisz się nawet kłopotać instalowaniem czcionek cyrylicowych dla TeXa, ponieważ translit używa pakietu Washington Cyriliic, który włączony jest do większości dystrybucji TeXa (a może się mylę?) 66..44.. KKoonnwweerrssjjaa tteekkssttuu ddoo ppoossttssccrriippttuu Czasami masz tekst w czystym KOI-8 i chcesz go wydrukować tylko po to żeby mieć go na papierze. Jedną z najprostszych metod osiągnięcia tego jest użycie specjalnych programów konwertujących tekst do postscriptu. Istnieje pewna liczba programów dokonujących takiej konwersji. Osobiście preferuję a2ps. Stworzony początkowo jako prosty konwerter tekstu do postscriptu, stał się on dużym i wysoce konfigurowalnym programem z wieloma opcjami, pozwalając ci obsłużyć różne wielkości strony, podświetlanie składni itp. Inne narzędzie (obecnie dostępne jako część projektu GNU) to enscript Głównym problemem z takimi programami jest to że nie wiedzą one nic o czcionkach cyrylicowych. Właśnie rozważam możliwość zawierania w nich czcionek cyrylicowych, tak aby rozumiały cyrylicę. Niemniej cała ta powyższa gadanina byłaby bezcelowa bez żadnej rzeczywistej rady. Oto więc ona: Jak zwykle, GNU wygrywa. GNUsowy program enscript zaprojektowany został do konwersji tekstu na postscript i ma doskonałą obsługę nie- ASCIIowych zestawów znaków. Nie zawiera on cyrylicowych czcionek postscriptowych, ale bardzo łatwo je zdobyć, jak wyjaśniono poniżej (podziękowania dla Michaela Van Canneyta). 1. Zainstaluj najnowszy enscript. Jak na razie najświeższą wersją jest 1.5. Możesz ściągnąć go albo z ftp GNU, albo jako pakiet RPM z ftp RedHata. 2. Teraz, jeśli masz szczęście być użytkownikiem RedHat Linuxa, ściągnij i zainstaluj czcionkę Cyriliic Textbook (ftp://ftp.redhat.com/pub/ contrib/i386/enscript-fonts- koi8-1.0.1-i386.rpm) 3. Jeśli nie używasz RPM, ściągnij plik textbook.tar.gz z Cyrillic Software Collection na ftp://sunsite.unc.edu/pub/academic/russian- studies/Software/). Rozpakuj go do katalogu w którym zainstalowane są czcionki enscripta. Przejdź teraz do tego katalogu i wykonaj: mkamfmap *.afm 4. Koniec konfiguracji. Spróbuj wydrukować jakiś tekst w KOI-8 poniższą komendą: enscript --font=Textbook8 --encoding=koi8 jakis_plik Jeśli chcesz jakiegoś szybkiego rozwiązania i nie dbasz o jakość wydruku, a wszystkim czego potrzebujesz jest cyrylica na papierze, spróbuj pakietu rtxt2ps. Jest to bardzo prosty i niewyszukany konwerter tekstu do postscriptu. Jakość wydruku jest nienajlepsza (albo, mówiąc szczerze, całkiem zła), ale robi on to co powinien. Jeszcze inną deską ratunku jest przerobiona wersja a2ps. Jest ona dość stara, więc nie spodziewaj się tych wszystkich fajerwerków z nowszych wersji. Ale drukuje ona tekst w cyrylicy, a jakość wydruku jest znacząco lepsza niż ta rtxt2ps. Doświadczyłem przy niej jednak różnych rodzajów problemów, np. nie mogłem wydrukować więcej niż dwóch stron (???) 77.. KKoonnffiigguurraaccjjaa rróóżżnnyycchh nnaarrzzęęddzzii Ogólnie, aby przestawić pewne narzędzia w trybie operowania cyrylicą wymagane jest po prostu umożliwienie danych ośmiobitowych. W kilku przypadkach wymagane jest powiedzenie aplikacji aby pokazała rozszerzone znaki ASCII w ich bazowej formie. 77..11.. 66..11.. bbaasshh Aby bash rozumiał ośmiobitowe znaki, powinieneś ustawić trzy zmienne, Najlepszym miejscem jest plik ~/.inputrc. Ustaw co następuje: set meta-flag on set convert-meta off set output-meta on 77..22.. 66..22.. ccsshh//ttccsshh Powinienieś ustawić poniższe w .cshrc: setenv LC_CTYPE iso_8859_5 stty pass8 Jeśli nie masz stty zgodnego z POSIX (niemożliwe w Linuxie), zastąp ostatnie wywołanie przez: stty -istrip cs8 77..33.. 66..33.. eemmaaccss Minimalną obsługę cyrylicy w emacsie zapewnia dodanie poniższych wywołań do pliku .emacs (zakładając że zainstalowana jest obsługa zestawu znaków cyrylicy dla konsoli lub X, odpowiednio). (standard-display-european t) (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) Umożliwia to użytkownikowi oglądanie i wprowadzanie rosyjskich dokumentów. Taki tryb nie jest jednak wielką wygodą, ponieważ emacs nie rozpoznaje zwykłych komend klawiatury gdy znajduje się w trybie wprowadzania cyrylicy. Istnieje pewna liczba pakietów które używają innego podejścia. Nie polegają one na "input mode" ustalonym przez środowisko (X lub konsolę). Zamiast tego, pozwalają użytkownikowi przełączać tryb wprowadzania specjalnymi komendami emacsa, a emacs sam jest odpowiedzialny za przedefiniowanie zestawu znaków. Autor miał szansę zaznajomić się z trzema takimi pakietami. Pakiet russian.el Walerego Aleksiejewa () pozwala użytkownikowi przełączać się między trybami cyrylicy i zwykłym oraz tłumaczyć zawartość bufora z jednego kodowania cyrylicy na drugie (co jest szczególnie użyteczne przy czytaniu tekstów przeniesionych z MS-DOS). rustable.el (nie znam niestety autora) dodaje do emacsa reguły składniowe zestawu znaków (granice słów, reguły zmiany wielkości liter itd.) Pakiety te znaleźć można w większości archiwów emacsowego Lispa. Jedyną niewygodą jest to że emacs ciągle traktuje znaki rosyjskie jako specjalne, nie rozpoznaje więc granic słów rosyjskich i zmian wielkości liter. Aby to poprawić, musisz zmodyfikować składnię i tablice wielkości liter emacsa: ;; w zmiennych poniżej znajdują się śmiecie, ponieważ SGML nie lubi ;; znaków cyrylicy. Będziesz musiał wstawić duże i małe litery ;; rosyjskiego alfabetu, odpowiednio (patrz faktyczne pliki) (setq *russian-abc-ucase* "tu wstaw duże litery") (setq *russian-abc-lcase* "tu wstaw małe litery") (let ((i 0) (len (length *russian-abc-ucase*))) (while (< i len) (modify-syntax-entry (elt *russian-abc-ucase* i) "w ") (modify-syntax-entry (elt *russian-abc-lcase* i) "w ") (set-case-syntax-pair (elt *russian-abc-ucase* i) (elt *russian-abc-lcase* i) (standard-case-table)) (setq i (+ i 1)))) Dla tego celu stworzyłem plik rusup.el który tego dokonuje, podobnie jak kilka poręcznych funkcji. Musisz załadować go w swoim ~/.emacs. Jeszcze jeden pakiet to remap, który próbuje bardziej utypowić obsługę cyrylicy. Pakiet ten napisał Per Abrahamsen (), i dostępny jest on na ftp.iesd.auc.dk. We własnej opinii, sugerowałbym zacząć od russian.el, bowiem jest on bardzo łatwy w konfiguracji i użyciu. 77..44.. 66..44.. iissppeellll Istnieje dodatek rspell do pakietu GNU ispell, stworzony przez Neala Daltona (nrd@cray.com), ale doświadczyłem z nim kilku problemów próbując go zmusić do natychmiastowego działania. Spróbuj go - może tobie się poszczęści. 77..55.. jjooee Spróbuj opcji -asis 77..66.. kksshh Co do implementacji public domain ksh, pdksh 5.1.3, możesz wprowadzać znaki ośmiobitowe tylko w trybie vi. Użyj set -o vi 77..77.. lleessss Jak na razie, less nie obsługuje zestawu znaków KOI-8, ale poniższa zmienna środowiskowa załatwia sprawę: LESSCHARSET=latin1 77..88.. llyynnxx Od wersji 2.6 możesz wybrać odpowiednią wartość dla opcji Display Character Set. 77..99.. mmcc ((MMiiddnniigghhtt CCoommmmaannddeerr)) Aby poprawnie wyświetlać znaki cyrylicy, zaznacz opcję 'full 8 bits' w menu Options/Display. Jeśli masz problem z brzydkimi ramkami okien, zobacz sekcję '' Off topic: jeśli chcesz zmusić mc do używania kolorów w oknie xterma, ustaw zmienną COLORTERM COLORTERM= ; export COLORTERM 77..1100.. NNeettssccaappee NNaavviiggaattoorr Upewnij się że używasz wersji Netscape'a większej niż 3. Jeśli twój Netscape jest starszy, ściągnij nowszego z www.netscape.com. 77..1100..11.. KKoonnffiigguurraaccjjaa ppooddssttaawwoowwaa Aby móc oglądać tekst cyrylicą w większej części dokumentów HTMLowych, zrób co następuje: ˇ W menu Options/Encoding Document wybierz Cyrillic (KOI-8) ˇ W menu Options/General Preferences/Fonts wybierz Cyrillic (KOI-8), Times(Cronyx) jako czcionkę proporcjonalną i Courier(Cronyx) jako czcionkę o stałej szerokości. ˇ Zachowaj ustawienia UWAGA: konfiguracja ta będzie działała z większą częścią dokumentu. Jednakże nie będziesz mógł wyświetlać tekstu cyrylicą w nagłówku okna, menu i niektórych dialogach. Aby naprawić te problemy: 77..1100..22.. KKoonnffiigguurraaccjjaa zzaaaawwaannssoowwaannaa Andriej A. Czernow wie więcej niż inni o KOI-8 w ogóle i o Netscape w szczególności. Odwiedź jego doskonałą stronę o KOI-8 i ściągnij łatę do pliku zasobów Netscape, co sprawi że Netscape będzie mówiło po rosyjsku na tyle na ile może. 77..1111.. ppiinnee Wstaw następującą dyrektywę do ~/.pinerc dla konfiguracji osobistej, albo do /usr/lib/pine.conf dla globalnej: character-set=ISO-8859-5 77..1122.. rrllooggiinn Upewnij się że powłoka na serwerze docelowym jest ustawiona poprawnie. Potem, jeśli twój rlogin nie działa domyślnie prawidłowo, użyj rlogin -8. 77..1133.. sseennddmmaaiill ((aakkaa ''zzgguubbaa ssyyssaaddmmiinnaa'')) Od wersji 8 sendmail domyślnie prawidłowo radzi sobie z 8-bitowymi danymi. Jeśli nie jest tak u ciebie, sprawdź opcję EightBitMode i opcję -7 przekazywaną mailerom w twoim /etc/sendmail.cf. Patrz "Sendmail; Installation and Operation Guide" po szczegóły. 88.. zzsshh Używaj w ten sam sposób jak csh (patrz sekcja o csh). Plikami startowymi w tym przypadku są .zshrc oraz /etc/zshrc. 99.. UUżżyytteecczznnee nnaarrzzęęddzziiaa 99..11.. NNaarrzzęęddzziiaa ddoo kkoonnwweerrssjjii Istnieje pewna liczba programów zdolna konwertować z KOI-8 na Alt i z powrotem. Poszukaj w SovInformBureau albo na ftp.funet.fi listy poręcznych małych programików. Możesz też użyć specjalnego trybu emacsa (patrz sekcja o emacsie). Szczególnie polecałbym jednakże pakiet translit. Obsługuje on wiele popularnych zestawów znaków i potrafi nawet stworzyć pliki TeXa (patrz sekcja 5.1). z tekstu rosyjskiego. Użytkownicy RedHata mają do dyspozycji translit w postaci pliku RPM. 99..22.. NNaarrzzęęddzziiaa pprrooggrraammiissttyy Jak dotąd objaśniałem sposoby zmuszenia programów do akceptowania i wyświetlania zestawu znaków cyrylicy. Niemniej pełne przystosowanie systemu do warunków lokalnych obejmuje o wiele więcej. To co omówiono powyżej nie wystarcza. System powinien być przyjazny dla użytkownika, który niekoniecznie musi znać angielski. W mojej opinii, nie jest wielką sprawą obeznanie się z angielskim na poziomie komunikatów programów. Jednakże nie jest całkiem fair tego wymagać. Tak więc następny poziom przystosowania wymaga aby programy były dostosowywalne do wymagań różnych języków i zwyczajów w przedstawianiu danych. Wcześniej dokonywano tego poprzez rozwijanie pewnej abstrakcji komunikatów będących rezultatem kodu programu. Teraz ten mechanizm jest (mniej czy więcej) ustandaryzowany. I, oczywiście, istnieją jego darmowe implementacje! Dobra wiadomość to to że GNU w końcu przyjęło sposób tworzenia zinternacjonalizowanych aplikacji. Ulrich Drepper () stworzył pakiet gettext, dostępny we wszystkich repozytoriach GNU, takich jak ftp://prep.ai.mit.edu/pub/gnu/ <ftp://prep.ai.mit.edu/pub/gnu/>. Pozwala on tworzyć programy w sposób który łatwo można roszerzyć na obsługę wielu języków. Nie zamierzam opisywać technik programistycznych, zwłaszcza że pakiet gettext zawiera doskonały podręcznik. Tak więc jeżeli tworzysz programy które wypisują jakieś komunikaty (a stworzyłeś kiedyś taki który by ich wypisywał?), nie leń się i włóż ociupinę (naprawdę ociupinę) wysiłku w uczynienie swojego programu świadomym locale. Prośba o współpracę: jeśli chcesz nauczyć się pakietu gettext i równocześnie dołożyć coś do projektu GNU; lub nawet jeśli tylko chcesz dołożyć, możesz to zrobić! GNU się internacjonalizuje, więc wszystkie narzędzia przerabiane są na świadome locale. Problemem jest przetłumaczenie komunikatów z angielskiego na rosyjski (i inne języki, jak wam się podoba). Zasadniczo, to co trzeba zrobić to zdobyć specjalny plik .po, składający się z angielskich komunikatów konkretnego narzędzia i dołączyć do każdego komunikatu jego odpowiednik po rosyjsku. W ostatecznym rozrachunku sprawi to że system będzie odzywał się po rosyjsku, jeśli zechce tego użytkownik! Po więcej szczegółów i dalsze wskazówki skontaktuj się z Ulrichem Drepperem () 1100.. WWyykkaazz uużżyytteecczznnyycchh zzaassoobbóóww Strona domowa a2ps: http://www-inf.enst.fr/~demaille/a2ps.html <http://www-inf.enst.fr/~demaille/a2ps.html> Strona A. Czernowa o KOI-8: http://www.nagual.ru/~ache/koi8.html <http://www.nagual.ru/~ache/koi8.html> Ogólna informacja o Linuxie: http://sunsite.unc.edu/mdw/linux.html <http://sunsite.unc.edu/mdw/linux.html> Moja kolekcja rzeczy związanych z konfiguracją cyrylicy: ftp://netvision.net.il/pub/home/b/belikoff/cyrillic/ <ftp://netvision.net.il/pub/home/b/belikoff/cyrillic/> Kolekcja cyrylicowa na ftp.kiae.su: ftp://ftp.kiae.su/cyrillic <ftp://ftp.kiae.su/cyrillic/> Kolekcja cyrylicowa na ftp.relcom.ru: ftp://ftp.relcom.ru/cyrillic/ <ftp://ftp.relcom.ru/cyrillic/> Kolekcja programów cyrylizujących ftp://ftp.funet.fi/pub/culture/russian/comp/ <ftp://ftp.funet.fi/pub/culture/russian/comp/> Cronyx http://www.cronyx.ru/ <http://www.cronyx.ru/> - twórcy czcionek cyrylicowych dla systemu X Windows. Pakiet remap dla emacsa ftp://frp.iesd.auc.dk/ <ftp://ftp.iesd.auc.dk/> Czcionki cyrylicowe dla Ghostscripta: ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts <ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts> Czcionki cyrylicowe dla X: ftp://ftp.kiae.su/cyrillic/x11/fonts/xrus-2.1.1-src.tgz <ftp://ftp.kiae.su/cyrillic/x11/fonts/xrus-2.1.1-src.tgz> Ghostscript: http://www.cs.wisc.edu/~ghost/index.html <http://www.cs.wisc.edu/~ghost/index.html> GNU nenscript: ftp://ftp.prep.ai.mit.edu/pub/gnu <ftp://prep.ai.mit.edu/pub/gnu/> Informacja o Cyrlillic Software: http://sunsite.oit.unc.edu/sergei/Software/Software.html <http://sunsite.oit.unc.edu/sergei/Software/Software.html> Grupa newsowa relcom.fido.ru.unix. RFC 1489: http://ds.internic.net/rfc/rfc1489.txt <http://ds.internic.net/rfc/rfc1489.txt> Użyteczne pakiety obsługujące cyrylicę: ftp://sunsite.unc.edu/pub/academic/russian-studies/Software <ftp://sunsite.unc.edu/pub/academic/russian-studies/Software> Pakiet kbd dla Linuxa: ftp://sunsite.unc.edu/pub/Linux/system/Keyboards/ <ftp://sunsite.unc.edu/pub/Linux/system/Keyboards/> Kolekcje czcionek X: ftp://ftp.switch.ch/mirror/linux/X11/fonts/ <ftp://ftp.switch.ch/mirror/linux/X11/fonts/> SovInformBureau: http://www.siber.com/sib/russify/ <http://www.siber.com/sib/russify/> Pakiet rusyfikujący teTeX: ftp://xray.sai.msu.su/pub/outgoing/teTeX- rus/ <ftp://xray.sai.msu.su/pub/outgoing/teTeX-rus/> rtxt2ps i przerobiony a2ps: http://www.siber.com/sib/russify/converters/ <http://www.siber.com/sib/russify/converters/> Pakiet translit: ftp://ftp.osc.edu/pub/russian/translit/translit.tar.Z <ftp://ftp.osc.edu/pub/russian/translit/translit.tar.Z> Pakiet xruskb: ftp://ftp.relcom.ru/x11/cyrillic/ <ftp://ftp.relcom.ru/x11/cyrillic/> rspell: ftp://sunsite.unc.edu/pub/academic/russian- studies/Software/rspell.tar.gz <ftp://sunsite.unc.edu/pub/academic/russian- studies/Software/rspell.tar.gz> FTP XFree86: http://www.xfree86.org <http://www.xfree86.org> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/DNS-HOWTO.pl.txt�������������������������������������������������������0100644�0001750�0001750�00000222455�06717116340�017103� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ DNS HOWTO Autor: Nicolai Langfeldt janl@math.uio.no v2.0.6, 22 Lipca 1998 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v2.1, 4 Sierpnia 1998 Jak zostać małoetatowym administratorem DNS. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/. ______________________________________________________________________ Table of Contents: 1. Preambuła 1.1. Legalność 1.2. Osoby pracujące nad tym dokumentem; prośba o pomoc 1.3. Dedykacja 2. Wprowadzenie 3. Serwer nazw z pamięcią podręczną (cache) 3.1. Uruchamianie named 4. (EM 4.1. Ale najpierw trochę czystej teorii 4.2. Własna domena 4.3. Strefa odwrotna 5. Prawdziwa domena 5.1. /etc/named.conf (lub /var/named/named.conf) 5.2. /var/named/root.hints 5.3. /var/named/zone/127.0.0 5.4. /var/named/zone/land-5.com 5.5. /var/named/zone/206.6.177 6. Nadzór 7. Przejście z wersji 4 na wersję 8 8. FAQ 9. Jak zostać pełnoetatowym administratorem DNS 10. Od tłumacza ______________________________________________________________________ 11.. PPrreeaammbbuułłaa Słowa kluczowe: DNS, bind, bind-4, bind-8, named, dialup, ppp, slip, isdn, Internet, domain, name, hosts, resolving 11..11.. LLeeggaallnnoośśćć (C)opyright 1995 Nicolai Langfeldt. Nie zmieniać bez zachowania praw autorskich. Dokument ten może być dowolnie rozpowszechniany dotąd, dokąd zostanie zachowana wiadomość o prawach autorskich. 11..22.. OOssoobbyy pprraaccuujjąąccee nnaadd ttyymm ddookkuummeenntteemm;; pprroośśbbaa oo ppoommoocc Chciałbym podziękować Arntowi Gulbrandsenowi, który przeczytał szkice tej pracy niezliczoną ilość razy i dostarczył wielu przydatnych sugestii. Chcę też podziękować ludziom, którzy wysyłali mi e-mailem sugestie i uwagi. Ten dokument nigdy nie będzie ukończony - wysyłaj mi listy o twoich problemach i sukcesach, może to sprawić, że HOWTO będzie dokładniejsze. Pieniądze, komentarze i/lub pytania możesz wysyłać do janl@math.uio.no. Jeżeli wyślesz mi e-mail i będziesz żądał odpowiedzi, _u_p_e_w_n_i_j _s_i_ę, że adres zwrotny jest poprawny i działający. PPrroosszzęę, przeczytaj sekcję ``FAQ'' przed wysłaniem do mnie listu. Jeśi chcesz przetłumaczyć to HOWTO, zawiadom mnie, abym mógł śledzić, w jakich językach zostałem opublikowany, mogę też zawiadamiać cię, kiedy HOWTO będzie uaktualniane. 11..33.. DDeeddyykkaaccjjaa To HOWTO jest dedykuję dla Anne Line Norheim Langfeldt. Zresztą pewnie nigdy tego nie przeczyta, bo nie jest tego rodzaju dziewczyną. 22.. WWpprroowwaaddzzeenniiee CCzzyymm tteenn ddookkuummeenntt jjeesstt,, aa cczzyymm nniiee.. Dla początkujących: DNS to System Nazw Domen (Domain Name System). DNS przekształca nazwy maszyn na numery IP, które są ich adresami, mapuje z nazwy na adres i odwrotnie. To HOWTO opisuje, jak zdefiniować takie mapowanie używając systemu Linux. Mapowanie to po prostu związek jednej rzeczy z drugą, w tym przypadku nazwy maszyny, jak ftp.linux.org i jej adresu IP, 199.249.150.4. DNS jest dla początkujących (ciebie ;-)) jednym z najtrudniejszych zagadnień administracji sieci. To HOWTO wyjaśnia parę rzeczy - opisuje jak postawić _p_r_o_s_t_y serwer nazw DNS, zaczynając z serwerem cache i przechodząc do ustawiania podstawowego (primary) serwera DNS dla domeny. Żeby uzyskać informację o bardziej złożnonych konfiguracjach, zobacz sekcję ``FAQ'' tego dokumentu. Jeżeli i tam nie znajdziesz potrzebnego opisu, bedziesz musiał _p_r_z_e_c_z_y_t_a_ć Prawdziwą Dokumentację. Powrócę do jej składników w ``ostatnim rodziale''. Zanim zaczniesz, powinieneś tak skonfigurować swoją maszynę, żebyś mógł telnetować się na nią i z niej, oraz z powodzeniem przeprowadzić wszystkie rodzaje połączeń z siecią, a zwłaszcza móc wykonać telnet 127.0.0.1 i uzyskać połączenie z własnym komputerem (przetestuj to teraz!). Potrzebne będą też poprawne: /etc/nsswitch.conf (lub /etc/host.conf), /etc/resolv.conf i /etc/hosts, jako punkt startowy, ponieważ nie będę wyjaśniał tu ich funkcji. Jeśli nie masz tego wszystkiego ustawionego i działającego, NET-3 HOWTO i/lub PPP-HOWTO wyjaśniają jak to ustawić. Przeczytaj je. Kiedy mówię ,,twoja maszyna'', mam na myśli komputer, na którym chcesz ustawić DNS, a nie żadną inną maszynę, jaką możesz mieć, która jest związana z twoją siecią. Przyjmuję, że nie jesteś za żadnym rodzajem ściany ognia (firewall), która blokuje zapytania (queries) o nazwy. Jeżeli jesteś, będziesz potrzebował specjalnej konfiguracji, przeczytaj sekcję ``FAQ''. Serwerem nazw w Unixie jest program nazywany named. Jest on częścią pakietu bind, który jest koordynowana przez Paula Vixie z Internet Software Consortium. Named jest załączony w większości dystrybucji Linuxa i zazwyczaj zainstalowany jako /usr/sbin/named. Jeżeli masz już named, możesz go prawdopodobnie używać; jeśli nie, możesz wziąć binaria z jakiegoś Linuxowego serwera ftp, lub najnowsze i najlepsze źródła z ftp.isc.org/isc/bind/src/cur/bind-8/. To HOWTO opisuje wersję 8 bind'a. Stara wersja tego HOWTO (o bind 4) jest dostępna na http://www.math.uio.no/~janl/DNS/. Jeżeli strona man named'a mówi o named.conf masz bind'a 8, a jeżeli o named.boot, bind 4. Jeśli masz 4 i obchodzi cię bezpieczeństwo, naprawdę powinieneś dokonać rozszerzenia do nowego 8. DNS to baza danych szeroka jak sama sieć. Uważaj, co do niej wkładasz. Jeżeli włożysz do niej śmieci, ty i inni wyjmą także śmieci. Jeżeli utrzymasz swój DNS w czystości i ciągłości, będzie ci dobrze służył. Naucz się go używać, administrować i znajdować błędy, a zostaniesz kolejnym dobrym administratorem, utrzymującym sieć przed upadnięciem na kolana z powodu przeładowania niedobrym zarządzaniem. W tym dokumencie napisałem parę wyjaśnień, które nie są całkowicie prawdziwe (jednakże są przynajmniej w połowie prawdą). Wszystko w interesie uproszczenia. Wszystko będzie (prawdopodobnie ;-)) działać, jeżeli uwierzysz w to, co mówię. PPooddppoowwiieeddźź:: Zrób kopie zapasowe wszystkich plików, które będziesz zmieniać, żebyś mógł wrócić do starej, działającej konfiguracji, jeżeli nic się nie powiedzie. 33.. SSeerrwweerr nnaazzww zz ppaammiięęcciiąą ppooddrręęcczznnąą ((ccaacchhee)) PPiieerrwwsszzyy kkrrookk ww kkoonnffiigguurroowwaanniiuu DDNNSS''uu,, bbaarrddzzoo pprrzzyyddaattnnyy ddllaa kkoorrzzyyssttaajjąąccyycchh zz mmooddeemmuu.. Serwer z pamięcią podręczną będzie szukał odpowiedzi na zapytania o nazwy i pamiętał odpowiedź, żebyś mógł jej użyć następnym razem, kiedy będziesz jej potrzebował. To skróci czas oczekiwania za drugim razem kiedy będziesz potrzebował nazwy, zwłaszcza jeżeli korzystasz z wolnego połączenia. Po pierwsze, potrzebujesz pliku /etc/named.conf. Jest on czytany, kiedy named zostaje uruchamiany. Narazie powinien po prostu zawierać: ______________________________________________________________________ // Plik konfiguracyjny dla serwera nazw ,,caching'' options { directory "/var/named"; // Odkomentowanie tego może pomóc, jeżeli musisz przejść przez // ścianę ognia (firewall), a coś nie działa: // query-source address * port 53; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; }; ______________________________________________________________________ Linia directory mówi named'owi, gdzie szukać plików. Wszystkie pliki w podkatalogach będą odpowiadały tej zmiennej. A więc pz jest podkatalogiem w /var/named, czyli /var/named/pz. /var/named to odpowiedni katalog, zgodnie z _L_i_n_u_x _F_i_l_e _s_y_s_t_e_m _S_t_a_n_d_a_r_d. Plik o nazwie /var/named/root.hints jest zdefiniowany w named.conf. Powinien on zawierać następujące rekordy: ______________________________________________________________________ \&. 6D IN NS G.ROOT-SERVERS.NET. \&. 6D IN NS J.ROOT-SERVERS.NET. \&. 6D IN NS K.ROOT-SERVERS.NET. \&. 6D IN NS L.ROOT-SERVERS.NET. \&. 6D IN NS M.ROOT-SERVERS.NET. \&. 6D IN NS A.ROOT-SERVERS.NET. \&. 6D IN NS H.ROOT-SERVERS.NET. \&. 6D IN NS B.ROOT-SERVERS.NET. \&. 6D IN NS C.ROOT-SERVERS.NET. \&. 6D IN NS D.ROOT-SERVERS.NET. \&. 6D IN NS E.ROOT-SERVERS.NET. \&. 6D IN NS I.ROOT-SERVERS.NET. \&. 6D IN NS F.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4 J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10 K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129 L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12 M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33 A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4 H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53 B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107 C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12 D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90 E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10 I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17 F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241 ______________________________________________________________________ BBAARRDDZZOO WWAAŻŻNNEE:: W niektórych wersjach tego dokumentu zawartość powyższego pliku będzie posiadać kilka spacji albo tab przed pierwszym wypełnionym (non blank) znakiem. Nie powinny się one znaleźć w pliku. SSkkaassuujj kkaażżddąą ppoopprrzzeeddzzaajjąąccąą ssppaaccjjęę w plikach, które wycinasz i wklejasz z tego HOWTO. PPaammiięęttaajj,, ccoo ppoowwiieeddzziiaałłeemm oo ppoopprrzzeeddzzaajjąąccyycchh ssppaaccjjaacchh!! Plik opisuje główne serwery (root servers) na świecie. Dane zmieniają się z biegiem czasu i _m_u_s_z_ą być nadzorowane. Przeczytaj ``sekcję o nadzorze'', żeby uzyskać informacje o uaktualnianiu serwera. Następna linia w named.conf to linia primary. Wyjaśnię jej funkcję w następnym rozdziale, a teraz tylko utwórz plik 127.0.0 w podkatalogu pz: ______________________________________________________________________ @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 1 ; Numer seryjny 8H ; Odświeżenie 2H ; Powtórzenie 1W ; Przedawnienie 1D) ; Minimalny TTL NS ns.linux.bogus. 1 PTR localhost. ______________________________________________________________________ Następnie, potrzebujesz pliku /etc/resolv.conf, wyglądającego następująco: ______________________________________________________________________ search poddomena.twoja-domena.edu twoja-domena.edu nameserver 127.0.0.1 ______________________________________________________________________ Linia ,,search'' ustala, które domeny powinny być przeszukane dla jakichkolwiek nazw węzłów, z jakimi chcesz się połączyć. Linia nameserver definiuje adres twojego serwera nazw, w tym przypadku twoją własną maszynę, ponieważ tu pracuje named (127.0.0.1 wystarczy, nie ma znaczenia, czy twój komputer ma inny adres). Jeśli chcesz wyznaczyć kilka serwerów nazw, wstaw oddzielną linię ,,nameserver'' dla każdego. (Zauważ: Named nigdy nie czyta tego pliku, robi to resolver, który używa named.) Żeby zilustrować, co ten plik robi: Jeśli klient próbuje znaleźć foo, wtedy jako pierwsze próbowane jest foo.poddomena.twoja-domena.edu, potem foo.twoja-domena.edu, a w końcu foo. Jeżeli klient próbuje szukać sunsite.unc.edu, najpierw próbowane jest sunsite.unc.edu.poddomena.twoja-domena.edu (tak, to jest głupie, ale w ten sposób działa), potem sunsite.unc.edu.twoja-domena.edu, a w końcu sunsite.unc.edu. Nie wpisuj za wielu domen w linii search, ponieważ zabiera to trochę czasu, żeby je wszystkie przeszukać. Przykład przyjmuje, że należysz do domeny poddomena.twoja-domena.edu, twój komputer jest wtedy prawdopodownie nazwany twój- komputer.poddomena.twoja-domena.edu. Linia search nie powinna zawierać twojej TLD (Top Level Domain, Domena Najwyższego Poziomu, w tym przypadku edu). Jeżeli często łączysz się z węzłami w innej domenie, możesz dodać tą domenę do linii search w ten sposób: ______________________________________________________________________ search poddomena.twoja-domena.edu twoja-domena.edu inna-domena.com ______________________________________________________________________ i tak dalej. Oczywiście musisz wpisać prawdziwe nazwy domen zamiast podanych. Zauważ brak kropek na końcach nazw domen. Następnie, zależnie od twojej wersji libc, musisz poprawiać albo /etc/nsswitch.conf, albo /etc/host.conf. Jeżeli już masz nsswitch.conf, będziemy poprawiać właśnie ten plik, a jeśli nie, host.conf. (NAPRAWDĘ zalecam poprawianie hhoosstt..ccoonnff we wszystkich systemach, w których istnieje, np. u mnie jest i jeden i drugi - przyp. tłum.) //eettcc//nnsssswwiittcchh..ccoonnff Jest to długi plik, który ustala, skąd wziąć różne rodzaje typów danych, z jakiego pliku lub bazy. Zazwyczaj zawiera on na górze pomocne komentarze, które powinieneś teraz przeczytać. Potem znajdź linię zaczynającą się na ,,hosts:'' - powinna zawierać: ______________________________________________________________________ hosts: files dns ______________________________________________________________________ Jeżeli nie ma linii zaczynającej się na ,,hosts:'', wpisz powyższą. Mówi, że programy powinny najpierw spojrzeć do pliku /etc/hosts, potem sprawdzić DNS zgodnie z resolv.conf. //eettcc//hhoosstt..ccoonnff Prawdopodobnie zawiera kilka linii, jedna powinna zaczynać się na order i wyglądać następująco: ______________________________________________________________________ order hosts,bind ______________________________________________________________________ Jeżeli nie ma linii ,,order'' powinieneś ją dopisać. Mówi ona procedurom szukającym nazw, żeby najpierw zajrzeć do /etc/hosts, a potem spytać serwer nazw (który ustaliłeś w pliku resolv.conf jako 127.0.0.1). Te dwa pliki są omówione w podręczniku man resolv(8) (wykonaj polecenie ,,man 8 resolv'') w większości dystrybucji Linuxa. Ta strona man jest według mnie całkiem możliwa do zrozumienia, a każdy, zwłaszcza administratorzy DNS, powinni ją przeczytać. Zrób to teraz - jeżeli powiesz sobie ,,później'', nigdy nie będziesz miał okazji ich przeczytać. 33..11.. UUrruucchhaammiiaanniiee nnaammeedd Po tym wszystkim nadszedł czas, aby uruchomić named. Jeżeli używasz połączenia modemowego, połącz się najpierw. Wpisz ,,ndc start'', bez opcji, i naciśnij enter. Jeżeli to nie działa, spróbuj ,,/usr/sbin/ndc start''. Jeśli to też nie działa, zobacz sekcję ``FAQ''. Teraz możesz przetestować swoją konfigurację. Jeżeli obejrzysz plik z komunikatami sysloga (zazwyczaj /var/adm/messages, inny katalog w którym można ich szukać to /var/log, inną nazwą pliku jest syslog) kiedy uruchamiasz named (wykonaj tail -f /var/log/messages), powinieneś ujrzeć coś takiego: (linie kończące się na są kontynuowane w następnej linii) Feb 15 01:26:17 roke named[6091]: starting. named 8.1.1 Sat Feb 14 \ 00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0) Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \ (IN) loaded (serial 1) Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo) Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0) Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040 Feb 15 01:26:17 roke named[6092]: Ready to answer queries. Jeżeli pojawią się jakieś komunikaty o błędach, popełniłeś jakiś. Named powie, w którym pliku jest błąd (mam nadzieję, że jest to named.conf albo root.hints :-)). Zabij named i sprawdź plik. (jest też bardziej ,,humanitarny'' :-) od zabijania sposób - napisz ,,ndc stop'', odczekaj dłuższą chwilę i nameserver zostanie wyłączony - przyp. tłum.) Teraz uruchom nslookup, żeby sprawdzić twoje robótki ręczne. $ nslookup Default Server: localhost Address: 127.0.0.1 > Jeżeli otrzymałeś takie coś, to znaczy, że działa. Miejmy nadzieję. Jeśli co innego, sprawdź wszystko od początku. Za każdym razem, kiedy zmienisz plik named.conf musisz ponownie uruchomić named komendą ndc restart. Teraz możesz wprowadzić zapytanie. Spróbuj poszukać jakiegoś komputera blisko ciebie. pat.uio.no jest blisko mnie, na Uniwersytecie w Oslo: > pat.uio.no Server: localhost Address: 127.0.0.1 Name: pat.uio.no Address: 129.240.130.16 Nslookup poprosił twojego named'a o poszukanie maszyny pat.uio.no. Połączył się wtedy z jednym z serwerów nazw w twoim pliku root.hints i zapytał stamtąd o drogę. Może to zająć troszeczkę czasu, zanim otrzymasz wynik, ponieważ szuka we wszystkich domenach, które wymieniłeś w /etc/resolv.conf. Jeżeli zapytasz znowu o to samo, otrzymasz coś takiego: > pat.uio.no Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: pat.uio.no Address: 129.240.2.50 Zwróć uwagę na linię ,,Non-authoritative answer:'', która pojawiła się tym razem. Znaczy to, że named nie szukał nazwy w sieci, tylko popatrzył w swojej pamięci podręcznej i tam ją znalazł. Ale informacja z pamięci podręcznej _m_o_ż_e być przedawniona. Zostajesz więc poinformowany o tym (bardzo niewielkim) niebezpieczeństwie, poprzez komunikat ,,Non-authorative answer:''. Kiedy nslookup mówi to za drugim razem, kiedy pytasz o komputer, jest to pewny znak, że named zapamiętuje informacje i działa. Możesz wyjść z nslookup wydając komendę exit. Teraz już wiesz, jak postawić przyspieszający (caching) named. Wypij piwo, mleko, lub cokolwiek innego, żeby to uczcić. 44.. _P_r_o_s_t_a ddoommeennaa JJaakk sskkoonnffiigguurroowwaaćć wwłłaassnnąą ddoommeennęę.. 44..11.. AAllee nnaajjppiieerrww ttrroocchhęę cczzyysstteejj tteeoorriiii Zanim _n_a_p_r_a_w_d_ę zaczniemy ten rozdział, zamierzam podać ci trochę teorii o działaniu DNSu. A ty to przeczytasz, ponieważ jest to przydatne. Jeśli nie chcesz, powinieneś przynajmniej przejść przez to bardzo szybko. Przestań przeglądać, kiedy dojdziesz do opisu, mówiącego co powinieneś wstawić do pliku named.conf. DNS to system hierarchiczny. Najwyższa pozycja to ,,.'', nazywa się ,,root''. Pod . istnieje kilka Domen Najwyższego Poziomu (Top Level Doamins, TLD), najpopularniejsze to ORG, COM, EDU i NET, ale jest jeszcze wiele innych. (np. MIL, GOV, ART, NOM, PRIV - przyp. tłum.) Kiedy poszukiwany jest komputer, zapytanie jest przeprowadzane rekursywnie, zgodnie z hierarchią, począwszy od góry. Jeżeli chcesz znaleźć adres komputera prep.ai.mit.edu, twój serwer nazw musi znaleźć serwer obsługujący domenę edu. Pyta serwer . (zna już serwery . - po to jest plik root.hints), serwer . zwraca listę serwerów edu: $ nslookup Default Server: localhost Address: 127.0.0.1 Zacznij pytać server root: > server c.root-servers.net. Default Server: c.root-servers.net Address: 192.33.4.12 Ustaw typ zapytania na NS (rekordy serwerów nazw): %gt; set q=ns Spytaj o edu: > edu. Końcowa kropka jest wymagana, mówi serwerowi, że edu jest pod . (to zawęża obszar poszukiwań). edu nameserver = A.ROOT-SERVERS.NET edu nameserver = H.ROOT-SERVERS.NET edu nameserver = B.ROOT-SERVERS.NET edu nameserver = C.ROOT-SERVERS.NET edu nameserver = D.ROOT-SERVERS.NET edu nameserver = E.ROOT-SERVERS.NET edu nameserver = I.ROOT-SERVERS.NET edu nameserver = F.ROOT-SERVERS.NET edu nameserver = G.ROOT-SERVERS.NET A.ROOT-SERVERS.NET internet address = 198.41.0.4 H.ROOT-SERVERS.NET internet address = 128.63.2.53 B.ROOT-SERVERS.NET internet address = 128.9.0.107 C.ROOT-SERVERS.NET internet address = 192.33.4.12 D.ROOT-SERVERS.NET internet address = 128.8.10.90 E.ROOT-SERVERS.NET internet address = 192.203.230.10 I.ROOT-SERVERS.NET internet address = 192.36.148.17 F.ROOT-SERVERS.NET internet address = 192.5.5.241 G.ROOT-SERVERS.NET internet address = 192.112.36.4 Wynik mówi nam, że *.root-servers.net podaje edu., możemy więc dalej pytać c. Teraz chcemy wiedzieć, kto obsługuje następny poziom nazwy domeny: mit.edu.: > mit.edu. Server: c.root-servers.net Address: 192.33.4.12 Non-authoritative answer: mit.edu nameserver = W20NS.mit.edu mit.edu nameserver = BITSY.mit.edu mit.edu nameserver = STRAWB.mit.edu Authoritative answers can be found from: W20NS.mit.edu internet address = 18.70.0.160 BITSY.mit.edu internet address = 18.72.0.3 STRAWB.mit.edu internet address = 18.71.0.151 STRAWB, W20NS i BITSY obsługują mit, wybierz jeden i pytaj o ai.mit.edu: > server W20NS.mit.edu. Serwery nazw nie rozróżniają wielkości liter, ale używam myszki do wycinania i wklejania, więc kopiuje wynik prosto z ekranu. Server: W20NS.mit.edu Address: 18.70.0.160 > ai.mit.edu. Server: W20NS.mit.edu Address: 18.70.0.160 Non-authoritative answer: ai.mit.edu nameserver = ALPHA-BITS.AI.MIT.EDU ai.mit.edu nameserver = GRAPE-NUTS.AI.MIT.EDU ai.mit.edu nameserver = TRIX.AI.MIT.EDU ai.mit.edu nameserver = MUESLI.AI.MIT.EDU ai.mit.edu nameserver = LIFE.AI.MIT.EDU ai.mit.edu nameserver = BEET-CHEX.AI.MIT.EDU ai.mit.edu nameserver = MINI-WHEATS.AI.MIT.EDU ai.mit.edu nameserver = COUNT-CHOCULA.AI.MIT.EDU ai.mit.edu nameserver = MINTAKA.LCS.MIT.EDU Authoritative answers can be found from: AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU AI.MIT.EDU nameserver = LIFE.AI.MIT.EDU AI.MIT.EDU nameserver = BEET-CHEX.AI.MIT.EDU AI.MIT.EDU nameserver = MINI-WHEATS.AI.MIT.EDU AI.MIT.EDU nameserver = COUNT-CHOCULA.AI.MIT.EDU AI.MIT.EDU nameserver = MINTAKA.LCS.MIT.EDU ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5 GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4 TRIX.AI.MIT.EDU internet address = 128.52.37.6 MUESLI.AI.MIT.EDU internet address = 128.52.39.7 LIFE.AI.MIT.EDU internet address = 128.52.32.80 BEET-CHEX.AI.MIT.EDU internet address = 128.52.32.22 MINI-WHEATS.AI.MIT.EDU internet address = 128.52.54.11 COUNT-CHOCULA.AI.MIT.EDU internet address = 128.52.38.22 MINTAKA.LCS.MIT.EDU internet address = 18.26.0.36 A więc muesli.ai mit.edu jest serwerem nazw dla ai.mit.edu: > server MUESLI.AI.MIT.EDU Default Server: MUESLI.AI.MIT.EDU Address: 128.52.39.7 Teraz zmieniamy typ zapytania - znaleźliśmy serwer nazw, więc teraz zapytajmy go o wszystko, co wie o prep.ai.mit.edu. > set q=any > prep.ai.mit.edu. Server: MUESLI.AI.MIT.EDU Address: 128.52.39.7 prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix prep.ai.mit.edu inet address = 18.159.0.42, protocol = tcp ftp telnet smtp finger prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu prep.ai.mit.edu internet address = 18.159.0.42 ai.mit.edu nameserver = beet-chex.ai.mit.edu ai.mit.edu nameserver = alpha-bits.ai.mit.edu ai.mit.edu nameserver = mini-wheats.ai.mit.edu ai.mit.edu nameserver = trix.ai.mit.edu ai.mit.edu nameserver = muesli.ai.mit.edu ai.mit.edu nameserver = count-chocula.ai.mit.edu ai.mit.edu nameserver = mintaka.lcs.mit.edu ai.mit.edu nameserver = life.ai.mit.edu gnu-life.ai.mit.edu internet address = 128.52.32.60 beet-chex.ai.mit.edu internet address = 128.52.32.22 alpha-bits.ai.mit.edu internet address = 128.52.32.5 mini-wheats.ai.mit.edu internet address = 128.52.54.11 trix.ai.mit.edu internet address = 128.52.37.6 muesli.ai.mit.edu internet address = 128.52.39.7 count-chocula.ai.mit.edu internet address = 128.52.38.22 mintaka.lcs.mit.edu internet address = 18.26.0.36 life.ai.mit.edu internet address = 128.52.32.80 Zaczynając od ., znaleźliśmy sukcesywne serwery nazw dla następnych poziomów w nazwie domeny. Jeżeli używałbyś własnego serwera DNS zamiast wszystkich innych, twój named zapisałby wszystkie informacje w czasie poszukiwań, nie musiałbyś więc znowu ich pytać przez jakiś czas. O wiele mniej mówi się o, tak samo ważnej domenie in-addr.arpa. Jest ona też podzielona jak normalne domeny. in-addr.arpa pozwala otrzymywać nazwy maszyn kiedy posiadamy ich adresy. Ważne: numery IP w domenie in-addr.arpa są pisane w odwrotnej kolejności. Jeżeli adres maszyny to 192.128.52.43, named poszukuje tak, jak dla przykładu z prep.ai.mit.edu: znaleźć serwery arpa.. Znaleźć seerwery in- addr.arpa., znaleźć serwery 192.in-addr.arpa., znaleźć serwery 128.192.in-addr.arpa., znaleźć serwery 52.128.192.in-addr.arpa.. Znaleźć potrzebne rekordy dla 43.52.128.192.in-addr.arpa.. Sprytne, no nie? (Powiedz ,,tak''.) Odwracanie numerów IP może sprawiać kłopoty przez pierwsze dwa lata. Właśnie skłamałem. DNS nie działa dokładnie tak jak przedstawiłem. Ale byłem wystarczająco blisko. 44..22.. WWłłaassnnaa ddoommeennaa Teraz zdefiniujemy naszą własną domenę. Nazwijmy ją _l_i_n_u_x_._b_o_g_u_s (,,bogus'', to po angielsku coś fałszywego, bzdurnego - przyp. tłum.) i zdefiniujemy w niej maszyny. Używam całkowicie bzdurnej (bogus) nazwy domeny, żeby upenić się, że nie przeszkadzamy nikomu Gdzieś Tam. Jeszcze jedna rzecz zanim zaczniemy: Nie wszystkie znaki mogą wchodzić w skład nazw komputerów. Jesteśmy ograniczeni do znaków angielskiego alfabetu, tzn. a-z, numerów 0-9 i znaku ,,-'' (łącznika). Trzymajmy się tych znaków. Wielkie i małe litery nie są rozróżniane przez DNS, a więc pat.uio.no jest identyczne z Pat.UiO.No. Już zaczeliśmy część z linią 0.0.127 w pliku named.conf: ______________________________________________________________________ zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; }; ______________________________________________________________________ Zauważ brak kropki na końcu nazw domen w tym pliku - definiujemy strefę 0.0.127.in-addr.arpa, że jesteśmy głównym jej serwerem i jest zapisana w pliku pz/127.0.0. Mamy już ten plik, zawiera on: ______________________________________________________________________ @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost. ______________________________________________________________________ Zauważ znak ,,.'' na końcu wszystkich pełnych nazw domen w tym pliku, kontrastuje to z plikiem named.conf powyżej. Niektórzy ludzie lubią rozpocząć każdą strefę z dyrektywą $ORIGIN, ale to już ekstrawagancja. Origin (pochodzenie - gdzie znajduje się w hierarchii DNS), pliku strefy jest zdefiniowany w linii strefy w pliku named.conf, w tym przypadku 0.0.127.in-addr.arpa. Ten ,,plik strefy'' zawiera 3 ,,rekordy zasobów'' (resource records, RR): RR SOA, RR NS i RR PTR. SOA to skrót od Start of Authority. Znak ,,@'' jest specjalną notacją znaczącą pochodzenie (origin), a jeżeli kolumna domeny dla tego pliku to ,,0.0.127.in-addr.arpa'', pierwsza linia tak naprawdę znaczy 0.0.127.in-addr.arpa. IN SOA ... NS to RR Name Server - rekord serwera nazw. _N_i_e _j_e_s_t potrzebne ,,@'' na końcu tej linii, ponieważ ostatnia linia zaczęła sie na ,,@''. Oszczędza to trochę pisania. A więc linia NS tak naprawdę znaczy 0.0.127.in-addr.arpa. IN NS ns.linux.bogus Mówi DNS'owi, która maszyna jest serwerem nazw domeny 0.0.127.in- addr.arpa - jest to ns.linux.bogus. ,,ns'' to zazwyczaj stosowana nazwa serwera nazw, ale skoro serwery www są nazywane www._c_o_ś_t_a_m, nazwą może być cokolwiek. I w końcu rekord PTR. Mówi, że komputer o adresie 1 w podsieci 0.0.127.in-addr.arpa, np. 127.0.0.1, nazywa się localhost. Rekord SOA jest początkiem _w_s_z_y_s_t_k_i_c_h plików stref. W każdym pliku musi być dokładnie jeden, jako pierwszy rekord. Opisuje strefę, z której pochodzi (z maszyny nazwanej ns.linux.bogus), osobę, która jest za nią odpowiedzialna (hostmaster@linux.bogus), wersję pliku strefy (numer seryjny: 1) i inne rzeczy mające związek z zapamiętywaniem (caching) i drugorzędnymi (secondary) serwerami DNS. Dla reszty pól: odświeżenia, powtórzenia, przedawnienia i minimalnego TTL użycie wartości podanych w tym HOWTO powinno być bezpieczne. Teraz uruchom ponownie named'a (komendą ndc restart) i użyj nslookup, żeby sprawdzić, co zrobiłeś: $ nslookup Default Server: localhost Address: 127.0.0.1 > 127.0.0.1 Server: localhost Address: 127.0.0.1 Name: localhost Address: 127.0.0.1 a więc udaje mu się otrzymać localhost ze 127.0.0.1, to dobrze. Teraz nasze główne zadanie, domena linux.bogus. Wstaw nową sekcję ,,zone'' w pliku named.conf: ______________________________________________________________________ zone "linux.bogus" { notify no; type master; file "pz/linux.bogus"; }; ______________________________________________________________________ Zauważ dalszy brak kończącej kropki w nazwie domeny w pliku named.conf. W pliku strefy linux.bogus umieścimy pewne całkowicie bzdurne (bogus) dane: ______________________________________________________________________ ; ; Plik strefy dla linux.bogus ; ; Pełny plik strefy ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; numer seryjny, dzisiejsza data i numer zmiany 8H ; odświeżanie, w sekundach 2H ; powtórzenie, w sekundach 1W ; przedawnienie, w sekundach 1D ) ; minimum, w sekundach ; NS ns ; Adres Internetowy serwera nazw MX 10 mail.linux.bogus ; Podstawowy serwer poczty MX 20 mail.friend.bogus. ; Drugorzędny serwer poczty ; localhost A 127.0.0.1 ns A 192.168.196.2 mail A 192.168.196.4 ______________________________________________________________________ Należy zwrócić uwagę na dwie rzeczy w rekordzie SOA. ns.linux.bogus _m_u_s_i być prawdziwą maszyna z rekordem A. Nie jest dozwolone wpisaanie rekordu CNAME dla maszyny w rekordzie SOA. Jej nazwą nie musi być ,,ns'', może być jakąkolwiek dozwoloną nazwą komputera. Po drugie, hostmaster.linux.bogus powinien być odczytany jako hostmaster@linux.bogus, a powinien być to alias pocztowy lub oddzielna skrzynka, gdzie osoba(y) nadzorujące DNS powinny często czytać pocztę. Jakikolwiek list w sprawie domeny będzie wysłany na adres podany w tej linii. Nazwą nie musi być ,,hostmaster'', może to być jakikolwiek dozwolony adres e-mail, ale adres ,,hostmaster'' _b_ę_d_z_i_e również działał. Jest jeden nowy typ RR w tym pliku, MX czyli Mail eXchanger. Mówi systemom pocztowym gdzie wysyłać pocztę zaadresowaną do ktośtam@linux.bogus, odpowiednio do mail.linux.bogus lub mail.friend.bogus. Liczba przed każdą nazwą maszyny oznacza priorytet MX'ów. RR z najmniejszą liczbą (10) jest tym, do którego poczta powinna być wysyłana najpierw. Jeżeli to się nie uda, może być wysłana do serwera z wyższą liczbą, drugorzędnego serwera poczty, np. mail.friend.bogus, który ma tu priorytet 20. Uruchom ponownie named, używając komendy ndc restart. Sprawdź wynik z nslookup: $ nslookup > set q=any > linux.bogus Server: localhost Address: 127.0.0.1 linux.bogus origin = ns.linux.bogus mail addr = hostmaster.linux.bogus serial = 199802151 refresh = 28800 (8 hours) retry = 7200 (2 hours) expire = 604800 (7 days) minimum ttl = 86400 (1 day) linux.bogus nameserver = ns.linux.bogus linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus linux.bogus preference = 20, mail exchanger = mail.friend.bogus linux.bogus nameserver = ns.linux.bogus ns.linux.bogus internet address = 192.168.196.2 mail.linux.bogus internet address = 192.168.196.4 Przy dokładnym sprawdzaniu, odkryjesz błąd. Linia linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus jest niepoprawna. Powinno być linux.bogus preference = 10, mail exchanger = mail.linux.bogus Specjalnie popełniłem błąd, żebyś mógł się z niego uczyć :-) Patrząc na plik strefy zobaczymy, że w linii MX 10 mail.linux.bogus ; Podstawowy serwer poczty brakuje kropki. Można też powiedzieć, że ma o jeden człon ,,linux.bogus'' za dużo. Jeżeli nazwa komputera nie kończy się kropką w pliku strefy, pochodzenie (origin) zostaje dodane do niej, powodując podwójny linux.bogus.linux.bogus. Więc piszemy albo ______________________________________________________________________ MX 10 mail.linux.bogus. ; Podstawowy serwer poczty ______________________________________________________________________ albo ______________________________________________________________________ MX 10 mail ; Podstawowy serwer poczty ______________________________________________________________________ Oba są poprawne. Wolę ostatnią formę, mniej pisania. Są znani użytkownicy bind'a którzy nie zgadzają się z tym, są też tacy, którzy zgadzają się z tą regułą. W pliku strefy domena powinna bądź to być całkowita i zakończona kropką, bądź to nie powinna być wogóle załączona, w tym przypadku zawiera domyślne pochodzenie (origin). Muszę zaznaczyć, że w pliku named.conf _n_i_e powinno być kropek po nazwach domen. Nie masz pojęcia, jak często ludzie głupieli i klęli na czym świat stoi z powodu znaku ,,.''. A więc po wyjaśnieniu mojej uwagi, mamy nowy plik strefy, zawierający trochę dodatkowych informacji: ______________________________________________________________________ ; ; Plik strefy dla linux.bogus ; ; Pełny plik strefy ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; numer seryjny, dzisiejsza data + numer zmiany 8H ; odświeżanie, w sekundach 2H ; powtórzenie, w sekundach 1W ; przedawnienie, w sekundach 1D ) ; minimum, w sekundach ; TXT "Linux.Bogus, twoi konsultanci DNS" NS ns ; Adresy Internetowe serwerów nazw NS ns.friend.bogus. MX 10 mail ; Podstawowy MX MX 20 mail.friend.bogus. ; Drugorzędny MX localhost A 127.0.0.1 gw A 192.168.196.1 HINFO "Cisco" "IOS" TXT "Router" ns A 192.168.196.2 MX 10 mail MX 20 mail.friend.bogus. HINFO "Pentium" "Linux 2.0" www CNAME ns donald A 192.168.196.3 MX 10 mail MX 20 mail.friend.bogus. HINFO "i486" "Linux 2.0" TXT "DEK" mail A 192.168.196.4 MX 10 mail MX 20 mail.friend.bogus. HINFO "386sx" "Linux 1.2" ftp A 192.168.196.5 MX 10 mail MX 20 mail.friend.bogus. HINFO "P6" "Linux 2.1.86" ______________________________________________________________________ Jest tu kilka nowych RR'ów: HINFO (Host INFOrmation) ma dwie części, dobrym zwyczajem jest branie każdej w cudzysłowy. Pierwsza część określa nazwę sprzętową lub procesor komputera, a druga oprogramowanie lub system operacyjny. Maszyna nazwana ,,ns'' ma procesor Pentium i Linuxa 2.0. CNAME (Canonical NAME) jest sposobem nadawania każdej maszynie kilku nazw. Www jest więc aliasem ns. Używanie rekordów CNAME jest trochę kontrowesyjne. Ale bezpiecznie jest przestrzegać zasady, że rekordy MX, CNAME lub SOA _n_i_g_d_y nie powinny odnosić się do rekordu CNAME, powinny odnosić się do czegoś z rekordem A, więc źle jest ______________________________________________________________________ foobar CNAME www ; NIE! ______________________________________________________________________ ale poprawnie ______________________________________________________________________ foobar CNAME ns ; Tak! ______________________________________________________________________ Jest też bezpiecznie przyjąć, że CNAME nie jest dozwoloną nazwą komputera dla adresu e-mail: webmaster@www.linux.bogus jest niedozwolonym adresem, jeżeli przyjąć powyższe ustawienia. Możesz się spodziewać, że wielu adminów Gdzieś Tam będzie wymagało tej zasady, nawet jeśli to działa u ciebie. Sposobem uniknięcia tego jest używanie rekordów A (i może innych, takich jak MX) zamiast CNAME: ______________________________________________________________________ www A 192.168.196.2 ______________________________________________________________________ Kilku ,,czarodziejów'' bind'a radzi, aby _n_i_e używać CNAME. Zastanów się więc nad tym _b_a_r_d_z_o poważnie. Ale jak widzisz, to HOWTO i wiele serwerów nie przestrzega tej zasady. Załaduj nową bazę danych komendą ndc reload, sprawi to, że named przeczyta ponownie swoje pliki. $ nslookup Default Server: localhost Address: 127.0.0.1 > ls -d linux.bogus Znaczy to, że wszystkie rekordy powinny być wymienione. Wyświetli: [localhost] $ORIGIN linux.bogus. @ 1D IN SOA ns hostmaster ( 199802151 ; numer seryjny 8H ; odświeżanie 2H ; powtórzenie 1W ; przedawnienie 1D ) ; minimum 1D IN NS ns 1D IN NS ns.friend.bogus. 1D IN TXT "Linux.Bogus, twoi konsultanci DNS" 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. gw 1D IN A 192.168.196.1 1D IN HINFO "Cisco" "IOS" 1D IN TXT "Router" mail 1D IN A 192.168.196.4 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "386sx" "Linux 1.0.9" localhost 1D IN A 127.0.0.1 www 1D IN CNAME ns donald 1D IN A 192.168.196.3 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "i486" "Linux 1.2" 1D IN TXT "DEK" ftp 1D IN A 192.168.196.5 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "P6" "Linux 1.3.59" ns 1D IN A 192.168.196.2 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "Pentium" "Linux 1.2" @ 1D IN SOA ns hostmaster ( 199802151 ; numer seryjny 8H ; odświeżanie 2H ; powtórzenie 1W ; przedawnienie 1D ) ; minimum To jest w porządku. Jak widzisz, wygląda prawie jak plik strefy. Sprawdźmy co powie o samym www: > set q=any > www.linux.bogus. Server: localhost Address: 127.0.0.1 www.linux.bogus canonical name = ns.linux.bogus linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus ns.linux.bogus internet address = 192.168.196.2 Inaczej mówiąc, prawdziwa nazwa www.linux.bogus to ns.linux.bogus. Daje ci to też trochę informacji, które ma o ns, wystarczjąco dużo, żeby się z nim połączyć, jeżeli byłbyś programem. Jesteśmy w połowie drogi. 44..33.. SSttrreeffaa ooddwwrroottnnaa Teraz programy mogą konwertować nazwy w linux.bogus na adresy, z którymi mogą się połączyć. Ale potrzebna jest też strefa odwrotna, która pozwala DNS'owi przekształcać adresy na nazwy (FTP, IRC, WWW i inne), żeby zdecydować, czy chcą z tobą rozmawiać, czy nie, a jeżeli tak, może nawet zdecydują jaki priorytet powinien być ci nadany. Strefa odwrotna jest wymagana dla pełnego dostępu do wszystkich usług Internetu. Wstaw następujące linie w named.conf: ______________________________________________________________________ zone "196.168.192.in-addr.arpa" { notify no; type master; file "pz/192.168.196"; }; ______________________________________________________________________ Tak samo jak z 0.0.127.in-addr.arpa, zawartość także jest podobna: ______________________________________________________________________ @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; Numer seryjny, data + numer 8H ; odświeżanie 2H ; powtarzanie 1W ; przedawnienie 1D) ; minimalny TTL NS ns.linux.bogus. 1 PTR gw.linux.bogus. 2 PTR ns.linux.bogus. 3 PTR donald.linux.bogus. 4 PTR mail.linux.bogus. 5 PTR donald.linux.bogus. ______________________________________________________________________ Teraz uruchom ponownie named (ndc restart) i sprawdź swoją pracę znowu korzystając z nslookup: ______________________________________________________________________ > 192.168.196.4 Server: localhost Address: 127.0.0.1 Name: mail.linux.bogus Address: 192.168.196.4 ______________________________________________________________________ Wygląda w porządku, spróbuj wyświetlić wszystko, żeby to sprawdzić: ______________________________________________________________________ > ls -d 196.168.192.in-addr.arpa [localhost] $ORIGIN 196.168.192.in-addr.arpa. @ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum 1D IN NS ns.linux.bogus. 1 1D IN PTR gw.linux.bogus. 2 1D IN PTR ns.linux.bogus. 3 1D IN PTR donald.linux.bogus. 4 1D IN PTR mail.linux.bogus. 5 1D IN PTR donald.linux.bogus. @ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; numer seryjny 8H ; odświeżanie 2H ; powtarzanie 1W ; przedawnienie 1D ) ; minimum ______________________________________________________________________ Wygląda dobrze! Jest kilka rzeczy, które powinienem tu dodać. Numery IP używane w przykładach pochodzą z jednego z bloków ,,sieci prywatnych'', tzn. nie wolno używać ich publicznie w internecie. Są bezpieczne do pokazania jako przykład w HOWTO. Druga rzecz, to linia notify no;. Mówi named, żeby nie zawiadamiać serwera drugorzędnego (secondary, slave), kiedy jeden z plików stref zostanie uaktualniony. W bind'dzie-8 named może zawiadamiać inne serwery wymienione w rekordach NS w pliku strefy, kiedy strefa zostanie uaktualniona. Jest to przydatne do użytku zwykłego, ale dla prywatnych eksperymentów ze strefami ta opcja powinna być wyłączona, nie chcemy przecież chyba, żeby nasz eksperyment zaśmiecał Internet, czyż nie tak? No i oczywiście ta domena jest nieprawdziwa (bogus) i takie też są wszystkie adresy w niej. Zobacz następny rozdział dla przykładu z prawdziwą domeną. 55.. PPrraawwddzziiwwaa ddoommeennaa TTuuttaajj ooppiissuujjeemmyy ttrroocchhęę _p_r_a_w_d_z_i_w_y_c_h pplliikkóóww ssttrreeff.. Użytkownicy zasugerowali, żebym załączył prawdziwy przykład działającej domeny razem z teoretycznym przykładem. Używam tego przykładu z zezwoleniem Davida Bullock'a z LAND-5. Te pliki były aktualne 24 Września 1996 i zostały zmienione przeze mnie, żeby pasowały do formatu bind-8, używają też moich rozszerzeń. A więc, to co tu widzisz różni się trochę od tego, co otrzymasz po wysłaniu zapytania do serwerów nazw LAND-5 obecnie. 55..11.. //eettcc//nnaammeedd..ccoonnff ((lluubb //vvaarr//nnaammeedd//nnaammeedd..ccoonnff)) Tutaj znajdziemy linie główne dla dwóch potrzebnych stref odwrotnych: sieci 127.0.0, jak i sieci 206.6.177 należącej do LAND-5, oraz linię primary dla przedniej strefy land-5.com. Zauważ także, że zamiast umieszczać pliki w katalogu o nazwie pz, jak robię to w tym HOWTO, znajdują się one w katalogu zone (strefa). ______________________________________________________________________ // Plik ładujący dla serwera nazw LAND-5 options { directory "/var/named"; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "zone/127.0.0"; }; zone "land-5.com" { type master; file "zone/land-5.com"; }; zone "177.6.206.in-addr.arpa" { type master; file "zone/206.6.177"; }; ______________________________________________________________________ Jeżeli wstawisz to do swojego named.conf, żeby się pobawić, _P_R_O_S_Z_Ę, wstaw notify no; w sekcji stref dla dwóch stref land-5, żeby uniknąć wypadków. 55..22.. //vvaarr//nnaammeedd//rroooott..hhiinnttss Pamiętaj, że ten plik zmienia się, a ten jest stary. Powinieneś używać nowszego pliku wyprodukowanego używając dig, będzie to wytłumaczone później. (UWAGA: autor napisał, że było to wytłumaczone wcześniej, ale jest to wytłumaczone PÓŹNIEJ - przyp. tłum.) ______________________________________________________________________ ; <<>> DiG 8.1 <<>> @A.ROOT-SERVERS.NET. ; (1 server found) ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opCODE: QUERY, status: NOERROR, id: 10 ;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13 ;; QUERY SECTION: ;; ., type = NS, class = IN ;; ANSWER SECTION: \&. 6D IN NS G.ROOT-SERVERS.NET. \&. 6D IN NS J.ROOT-SERVERS.NET. \&. 6D IN NS K.ROOT-SERVERS.NET. \&. 6D IN NS L.ROOT-SERVERS.NET. \&. 6D IN NS M.ROOT-SERVERS.NET. \&. 6D IN NS A.ROOT-SERVERS.NET. \&. 6D IN NS H.ROOT-SERVERS.NET. \&. 6D IN NS B.ROOT-SERVERS.NET. \&. 6D IN NS C.ROOT-SERVERS.NET. \&. 6D IN NS D.ROOT-SERVERS.NET. \&. 6D IN NS E.ROOT-SERVERS.NET. \&. 6D IN NS I.ROOT-SERVERS.NET. \&. 6D IN NS F.ROOT-SERVERS.NET. ;; ADDITIONAL SECTION: G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4 J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10 K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129 L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12 M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33 A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4 H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53 B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107 C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12 D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90 E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10 I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17 F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241 ;; Total query time: 215 msec ;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET. 198.41.0.4 ;; WHEN: Sun Feb 15 01:22:51 1998 ;; MSG SIZE sent: 17 rcvd: 436 ______________________________________________________________________ 55..33.. //vvaarr//nnaammeedd//zzoonnee//112277..00..00 Tylko podstawy, obowiązujący rekord SOA i rekord, który mapuje 127.0.0.1 na localhost. Oba są wymagane. Nic więcej nie powinno znajdować się w tym pliku. Prawdopodobnie nigdy nie będzie musiał być uaktualniany, chyba że twój serwer nazw lub hostmaster zmienią adres. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609203 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. 1 PTR localhost. ______________________________________________________________________ 55..44.. //vvaarr//nnaammeedd//zzoonnee//llaanndd--55..ccoomm Widzimy tu obowiązujący rekord SOA i potrzebne rekordy NS. Możemy zobaczyć, że drugorzędny serwer nazw ma adres ns2.psi.net. Jest tak, jak powinno być, _z_a_w_s_z_e musi być drugorzędny serwer w innym miejscu Internetu. Jest tu komputer główny o nazwie land-5, który zajmuje się wieloma różnymi usługami Internetowymi, jest to załatwione za pomocą rekordów CNAME (alternatywnie można używać rekordów A). Jak widzidsz z rekordu SOA, plik strefy pochodzi z land-5.com, osobą kontaktową jest root@land-5.com. hostmaster jest innym często używanym adresem. Numer seryjny składa się z daty w formacie yyyymmdd i dziennego numeru seryjnego; jest to prawdopodobnie szósta wersja pliku strefy z 20 Września 1996. Pamiętaj, że numer seryjny _m_u_s_i zwiększać się monotonicznie, tutaj jest tylko _j_e_d_n_a cyfra numeru seryjnego, więc po 9 zmianach trzeba czekać do następnego dnia z następnymi edycjami. Rozważ użycie dwóch cyfr. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; serial, todays date + todays serial # 8H ; refresh, seconds 2H ; retry, seconds 1W ; expire, seconds 1D ) ; minimum, seconds NS land-5.com. NS ns2.psi.net. MX 10 land-5.com. ; Primary Mail Exchanger localhost A 127.0.0.1 router A 206.6.177.1 land-5.com. A 206.6.177.2 ns A 206.6.177.3 www A 207.159.141.192 ftp CNAME land-5.com. mail CNAME land-5.com. news CNAME land-5.com. funn A 206.6.177.2 @ TXT "LAND-5 Corporation" ; ; Workstations ; ws-177200 A 206.6.177.200 MX 10 land-5.com. ; Primary Mail Host ws-177201 A 206.6.177.201 MX 10 land-5.com. ; Primary Mail Host ws-177202 A 206.6.177.202 MX 10 land-5.com. ; Primary Mail Host ws-177203 A 206.6.177.203 MX 10 land-5.com. ; Primary Mail Host ws-177204 A 206.6.177.204 MX 10 land-5.com. ; Primary Mail Host ws-177205 A 206.6.177.205 MX 10 land-5.com. ; Primary Mail Host ; {Many repetitive definitions deleted - SNIP} ws-177250 A 206.6.177.250 MX 10 land-5.com. ; Primary Mail Host ws-177251 A 206.6.177.251 MX 10 land-5.com. ; Primary Mail Host ws-177252 A 206.6.177.252 MX 10 land-5.com. ; Primary Mail Host ws-177253 A 206.6.177.253 MX 10 land-5.com. ; Primary Mail Host ws-177254 A 206.6.177.254 MX 10 land-5.com. ; Primary Mail Host ______________________________________________________________________ Jeżeli sprawdzisz serwer nazw land-5, zobaczysz, że nazwy komputerów składają się z ws__n_u_m_e_r. Późne wersje named'a w bind'dzie 4 zaczęły wymagać ograniczeń znaków składających się na nazwy komputerów. A więc wogóle nie działałoby to z bind-8, zamieniłem ,,_'' na ,,-''. Inna rzecz warta zauważenia to fakt, że stacje robocze nie mają własnych nazw, a raczej prefiks i dwie ostatnie części numeru IP. Używanie takiej konwencji może znacznie uprościć nadzór, ale jest trochę bezosobowe i może być źródłem niezadowolenia wśród twoich użytkowników. Możemy także zobaczyć, że funn.land-5.com jest aliasem land-5.com, ale używającym rekordu A, a nie CNAME. 55..55.. //vvaarr//nnaammeedd//zzoonnee//220066..66..117777 Skomentuję ten plik na jego końcu. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. NS ns2.psi.net. ; ; Servers ; 1 PTR router.land-5.com. 2 PTR land-5.com. 2 PTR funn.land-5.com. ; ; Workstations ; 200 PTR ws-177200.land-5.com. 201 PTR ws-177201.land-5.com. 202 PTR ws-177202.land-5.com. 203 PTR ws-177203.land-5.com. 204 PTR ws-177204.land-5.com. 205 PTR ws-177205.land-5.com. ; {Dużo powtarzających się rekordów - usunięto} 250 PTR ws-177250.land-5.com. 251 PTR ws-177251.land-5.com. 252 PTR ws-177252.land-5.com. 253 PTR ws-177253.land-5.com. 254 PTR ws-177254.land-5.com. ______________________________________________________________________ Strefa odwrotna jest kawałkiem ustawień wydającym się sprawiać najwięcej kłopotów. Jest używany do znalezienia nazwy komputera, jeżeli masz jego numer IP. Przykład: jesteś serwerem IRC i akceptujesz połączenia od klientów IRC. Jednakże jesteś serwerem norweskim, a więc chcesz akceptować połączenia tylko z Norwegii i innych krajów skandynawskich. Kiedy otrzymasz połączenie od klienta, biblioteka C jest w stanie przekazać ci numer IP łączącej się maszyny, ponieważ numer IP klienta jest zawarty we wszystkich pakietach przekazywanych przez sieć. Teraz możesz przywołać funkcję o nazwie gethostbyaddr, która szuka nazwy komputera z podanym numerem IP. Gethostbyaddr spyta serwer DNS, który wtedy przetrawersuje DNS, poszukując maszyny. Przyjmijmy, że połączenie nadeszło z ws-177200.land-5.com. Numer IP podany przez bibliotekę C serwerowi IRC to 206.6.177.200. Żeby poznać nazwę tej maszyny, musimy znaleźć 200.177.6.206.in-addr.arpa. Serwer DNS najpierw odwróci ścieżkę przez 206, potem przez 6, aż w końcu znajdzie serwer dla strefy 177.6.206.in-addr.arpa na land-5, z którego na końcu dostanie odpowiedź, że dla 200.177.6.206.in-addr.arpa mamy rekord ,,PTR ws-177200.land-5.com'', który znaczy, że nazwa 206.6.177.20 to ws-177200.land-5.com. Tak jak z wyjaśnieniem, jak zostaje znaleziony prep.ai.mit.edu, jest to trochę fikcyjne. Wracając do przykładu serwera IRC. Serwer IRC akceptuje połączenia tylko z krajów skandynawskich, tj. *.no, *.se, *.dk. Od razu widać, że nazwa ws-177200.land-5.com nie pasuje do żadnego z nich, a więc serwer odmówi połączenia. Jeżeli _n_i_e było mapowania odwrotnego dla 206.6.177.200 przez strefę in-addr.arpa, serwer nie mógłby znaleźć nazwy i porównałby 206.6.177.200 z *.no, *.se i *.dk, oczywiście żadna z nich nie będzie pasowała. Niektórzy ludzie będą mówili ci, że odwrotne mapowanie jest ważne tylko dla serwerów, albo _w_o_g_ó_l_e nie ważne. Nie zawsze: wiele serwerów ftp, news, IRC i nawet niektóre http (WWW) _n_i_e _b_ę_d_ą akceptowały połączeń z maszyn, których nazw nie będą w stanie znaleźć. A więc mapowanie odwrotne jest _o_b_o_w_i_ą_z_k_o_w_e. 66.. NNaaddzzóórr UUttrrzzyymmyywwaanniiee ww cciiąąggłłyymm ddzziiaałłaanniiuu Jest jedno zadanie nadzorcze, które musisz wykonywać z named'ami, inne niż utrzymywanie ich w działaniu, tzn. uaktualnianie pliku root.hints. Najłatwiej jest to zrobić używając dig'a. Najpierw uruchom dig bez żadnych argumentów, otrzymasz zawartość pliku root.hints zgodnie ze swoim własnym serwerem. Wtedy spytaj jeden z wymienionych serwerów głównych komendą dig @rootserver. Zauważysz, że to co otrzymasz będzie bardzo podobne do pliku root.hints. Zapisz to do pliku (dig @e.root- servers.net . ns >root.hints.new) i zamień na niego stary plik root.hints. Pamiętaj, żeby uruchomić ponownie named po zamianie pliku cache. Al Longyear wysłał mi ten skrypt. Może on być uruchamiany automatycznie w celu uaktualniania root.hints. Dodaj wpis do tablicy cron'a, żeby był uruchamiany raz na miesiąc. Ten skrypt przyjmuje, że masz działający system pocztowy i zdefniowany alias pocztowy ,,hostmaster''. Musisz zagłębić się w ten plik, żeby dostosować go do twoich ustawień. ______________________________________________________________________ #!/bin/sh # # Uaktualnianie pliku cache raz na miesiąc. # Ten skrypt jest uruchamiany automatycznie przez cron'a. # ( echo "To: hostmaster <hostmaster>" echo "From: system <root>" echo "Subject: Automatyczne uaktualnienie pliku named.conf" echo export PATH=/sbin:/usr/sbin:/bin:/usr/bin: cd /var/named dig @rs.internic.net . ns >root.hints.new echo "Plik named.conf został uaktualniony i zawiera następujące informacje:" echo cat root.hints.new chown root.root root.hints.new chmod 444 root.hints.new rm -f root.hints.old mv root.hints root.hints.old mv root.hints.new root.hints ndc restart echo echo "Serwer nazw został uruchomiony ponownie, aby wprowadzić zmiany" echo "Poprzedni plik nazywa się teraz /var/named/root.hints.old." ) 2>&1 | /usr/lib/sendmail -t exit 0 ______________________________________________________________________ Niektórzy z was mogli zauważyć, że plik root.hints jest też dostępny przez ftp z Internic'u. Proszę, _n_i_e używaj ftp do uaktualniania root.hints, powyższa metoda jest o wiele bardziej przyjazna dla sieci. 77.. PPrrzzeejjśścciiee zz wweerrssjjii 44 nnaa wweerrssjjęę 88 Poprzednio była to sekcja o używaniu bind'a 8 napisana przez David'a E. Smith'a (dave@bureau42.ml.org). Trochę ją zmieniłem, żeby pasowała do nowej nazwy sekcji. Nie ma tego wiele. Poza używaniem named.conf zamiast named.boot, wszystko jest identyczne. Bind-8 jest dostarczany ze skryptem konwertującym pliki w ,,starym stylu'' na nowe. Przykładowy named.conf (stary) dla serwera cache: ______________________________________________________________________ directory /var/named cache . root.hints primary 0.0.127.IN-ADDR.ARPA 127.0.0.zone primary localhost localhost.zone ______________________________________________________________________ W linii komend, w katalogu bind8/src/bin/named (_P_r_z_y_j_m_u_j_ę_, _ż_e _m_a_s_z _d_y_s_t_r_y_b_u_c_j_ę _ź_r_ó_d_ł_o_w_ą_. _J_e_ż_e_l_i _m_a_s_z _p_a_c_z_k_ę _z _b_i_n_a_r_i_a_m_i _s_k_r_y_p_t _t_e_ż _g_d_z_i_e_ś _m_u_s_i _b_y_ć_, _j_e_d_n_a_k_ż_e _n_i_e _j_e_s_t_e_m _p_e_w_i_e_n _g_d_z_i_e_. _-_e_d_.), napisz: ______________________________________________________________________ ______________________________________________________________________ Co stworzy named.conf: ______________________________________________________________________ // generated by named-bootconf.pl options { directory "/var/named"; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.IN-ADDR.ARPA" { type master; file "127.0.0.zone"; }; zone "localhost" { type master; file "localhost.zone"; }; ______________________________________________________________________ Metoda ta konwertuje wszystko, co można wpisać do named.conf, jednakże nie dodaje żadnych nowych rozszerzeń i opcji konfiguracji, które można uzyskać w bind-8. Oto bardziej kompletny named.conf, który robi te same rzeczy, ale trochę bardziej sprawnie. ______________________________________________________________________ // To jest plik konfiguracyjny named (bind-8 lub późniejszy) // Powinien być zainstalowany jako /etc/named.conf. // Jedyna zmiana pliku ,,fabrycznego'' (poza tym komentarzem :)) // to odkomentowanie linii directory, ponieważ mam już pliki stref // w /var/named. options { directory "/var/named"; check-names master warn; /* domyślne. */ datasize 20M; }; zone "localhost" IN { type master; file "localhost.zone"; check-names fail; allow-update { none; }; allow-transfer { any; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "127.0.0.zone"; check-names fail; allow-update { none; }; allow-transfer { any; }; }; zone "." IN { type hint; file "root.hints"; }; ______________________________________________________________________ bind8/src/bin/named/test ma ten plik oraz kopie plików stref, które wiele ludzi może skopiować i od razu używać. Formaty plików stref i root.hints są identyczne, tak jak komendy ich uaktualniania. 88.. FFAAQQ W tej sekcji wymienię kilka spośród najczęściej zadawanych pytań związanych z DNS'em i tym HOWTO, oraz odpowiedzi na nie. :-) Przeczytaj tą sekcję przed wysłaniem do mnie listu. 1. Mój named żąda pliku named.boot. Czytasz złe HOWTO. Przeczytaj starą wersję tego dokumentu, która opisuje bind 4, na http://www.math.uio.no/~janl/DNS/. 2. Jak używać DNS zza ściany ognia (firewall)? Kilka podpowiedzi: ,,forwarders'', ,,slave'' oraz spojrzenie na listę literatury na końcu tego HOWTO. 3. Jak sprawić, żeby DNS przełączał się między adresami usługi, np. www.zajęty.serwer, żeby uzyskać efekt wyrównania obciążenia, lub podobny? Utwórz kilka rekordów AA dla www.zajęty.serwer i użyj bind'a 4.9.3 lub późniejszego. Wtedy bind będzie pokolei przełączał adresy. _N_i_e _b_ę_d_z_i_e to działać z wcześniejszymi wersjami bind'a. 4. Chcę ustawić DNS w (zamkniętym) intranecie. Co mam zrobić? Nie zakładaj pliku root.hints, tylko pliki stref. To znaczy także, że nie będziesz musiał uaktualniać tego pliku. 5. Jak ustawić drugorzędny (secondary, slave...) serwer DNS? Jeżeli podstawowy (primary) serwer ma adres 127.0.0.1 wstaw następującą linię w named.conf drugorzędnego serwera: ___________________________________________________________________ zone "linux.bogus" { type slave; file "sz/linux.bogus"; masters { 127.0.0.1; }; }; ___________________________________________________________________ Możesz wymienić kilka alternatywnych serwerów głównych, z których strefa może być kopiowana w liście masters, oddzielone przez ,,;''. 6. Chcę, żeby bind działał nawet wtedy, kiedy jestem odłączony od sieci. Otrzymałem taki list od Ian'a Clark'a <ic@deakin.edu.au>, gdzie wyjaśnia on jego sposób dokonania tego: Uruchamiam named na mojej ,,maskującej się'' maszynie. Mam dwa pliki root.hints, jeden nazywa się root.hints.real i zawiera prawdziwe nazwy serwerów nazw głównych, oraz drugi, root.hints.fake, który zawiera... ---- ; root.hints.fake ; ten plik nie zawiera żadnych informacji ---- Kiedy rozłączam się, kopiuję root.hints.fake do root.hints i uruchamiam named ponownie. Kiedy łączę się, kopiuję root.hints.real do root.hints i restartuję named. To jest wykonywane odpowiednio przez ip-down i ip-up. Pierwszy raz, kiedy przeprowadzam zapytanie off-line o nazwę domeny, named nie ma szczegółów, a więc wstawia taki komunikat w pliku messgaes: Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN z czym można żyć. U mnie to działa. Mogę używać serwera nazw dla maszyn lokalnych bez opóźnienia, jak w przypadku zewnętrznych nazw domen, a kiedy jestem w sieci, zapytania o zewnętrzne domeny funkcjonują normalnie. 7. Gdzie serwer przyspieszający zapisuje swoją pamięć podręczną? W jaki sposób można ją kontrolować? Pamięć podręczna jest zapamiętywana całkowicie w pamięci, _n_i_e _j_e_s_t zapisywana na dysk. Za każdym razem kiedy zabijesz named cache będzie stracony. Cache _n_i_e _d_a_j_e się w żaden sposób kontrolować. Named zarządza nim zgodnie z pewnymi prostymi zasadami i nie da się tego ominąć. Nie możesz kontrolować cache'u ani jego rozmiaru w żaden sposób i z żadnego powodu. Jeżeli chcesz, możesz ,,naprawić'' to zmieniając kod named. Jednakże nie jest to zalecane. 8. Czy named zapisuje cache po zakończeniu działania? Czy mogę go jakoś do tego zmusić? Nie, named _n_i_e _z_a_p_i_s_u_j_e pamięci podręcznej kiedy umiera. Znaczy to, że cache musi być zbudowany od nowa za każdym razem, kiedy zabijasz i uruchamiasz named ponownie. _N_i_e _m_a sposobu, żeby zmusić go do zapisywania cache'u w pliku. Jeżeli chcesz, możesz to ,,naprawić'' zmieniając kod named. Nie jest to jednak zalecane. 99.. JJaakk zzoossttaaćć ppeełłnnooeettaattoowwyymm aaddmmiinniissttrraattoorreemm DDNNSS DDookkuummeennttaaccjjaa ii nnaarrzzęęddzziiaa Prawdziwa Dokumentacja istnieje. Online i drukowana. Przeczytanie kilku z tych publikacji jest wymagane, żeby zrobić krok od małoetatowego do pełnoetatowego administratora DNS. W druku, standardową książką jest _D_N_S _i _B_I_N_D, autorstwa C. Liu i P. Albitz'a, wydawnictwa O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X. Czytałem ją, jest świetna. Jest też sekcja o DNS w książce _T_C_P_/_I_P _- _A_d_m_i_n_i_s_t_r_a_c_j_a _s_i_e_c_i, autorstwa Craig'a Hunt'a z wydawnictwa O'Reilly..., ISBN 0-937175-82-X. Inna książka koniecznie do przeczytania przez dobrego admina DNS (lub kogokowiek dobrego z tej branży) jest _Z_e_n _i _S_z_t_u_k_a _N_a_p_r_a_w_y _M_o_t_o_c_y_k_l_i Roberta M. Prisiga, :-) dostępne pod ISBN 0688052304 i inne. Online znajdziesz różne rzeczy na http://www.dns.net/dnsrd/, http://www.isc.org/bind.html; FAQ, podręcznik (BOG - Bind Operators Guide), specyfikacje i definicje protokołów, oraz sztuczki DNS (te, i wiele, jeżeli nie wszystkie RFC wspomniane poniżej, także znajdują się w dystrybucji bind'a). Nie czytałem większości z nich, ale przez to nie jestem pełnoetatowym administratorem DNS. Natomiast Arnt Gulbrandsen przeczytał BOG i bardzo mu się on spodobał :-). Jest też grupa news news://comp.protocols.tcp-ip.domains o DNS. Dodatkowo, jest też trochę RFC o DNS'ie, najważniejsze są prawdopodobnie te: RRFFCC 22005522 A. Gulbrandsen, P. Vixie, _A _D_N_S _R_R _f_o_r _s_p_e_c_i_f_y_i_n_g _t_h_e _l_o_c_a_t_i_o_n _o_f _s_e_r_v_i_c_e_s _(_D_N_S _S_R_V_), October 1996 RRFFCC 11991188 Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear, _A_d_d_r_e_s_s _A_l_l_o_c_a_t_i_o_n _f_o_r _P_r_i_v_a_t_e _I_n_t_e_r_n_e_t_s, 02/29/1996. RRFFCC 11991122 D. Barr, _C_o_m_m_o_n _D_N_S _O_p_e_r_a_t_i_o_n_a_l _a_n_d _C_o_n_f_i_g_u_r_a_t_i_o_n _E_r_r_o_r_s, 02/28/1996. RRFFCC 11991122 EErrrroorrss B. Barr _E_r_r_o_r_s _i_n _R_F_C _1_9_1_2, jest on dostępny na <http://www.cis.ohio-state.edu/~barr/rfc1912-errors.html> RRFFCC 11771133 A. Romao, _T_o_o_l_s _f_o_r _D_N_S _d_e_b_u_g_g_i_n_g, 11/03/1994. RRFFCC 11771122 C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, _D_N_S _E_n_c_o_d_i_n_g _o_f _G_e_o_g_r_a_p_h_i_c_a_l _L_o_c_a_t_i_o_n, 11/01/1994. RRFFCC 11118833 R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, _N_e_w _D_N_S _R_R _D_e_f_i_n_i_t_i_o_n_s, 10/08/1990. RRFFCC 11003355 P. Mockapetris, _D_o_m_a_i_n _n_a_m_e_s _- _i_m_p_l_e_m_e_n_t_a_t_i_o_n _a_n_d _s_p_e_c_i_f_i_c_a_t_i_o_n, 11/01/1987. RRFFCC 11003344 P. Mockapetris, _D_o_m_a_i_n _n_a_m_e_s _- _c_o_n_c_e_p_t_s _a_n_d _f_a_c_i_l_i_t_i_e_s, 11/01/1987. RRFFCC 11003333 M. Lottor, _D_o_m_a_i_n _a_d_m_i_n_i_s_t_r_a_t_o_r_s _o_p_e_r_a_t_i_o_n_s _g_u_i_d_e, 11/01/1987. RRFFCC 11003322 M. Stahl, _D_o_m_a_i_n _a_d_m_i_n_i_s_t_r_a_t_o_r_s _g_u_i_d_e, 11/01/1987. RRFFCC 997744 C. Partridge, _M_a_i_l _r_o_u_t_i_n_g _a_n_d _t_h_e _d_o_m_a_i_n _s_y_s_t_e_m, 01/01/1986. 1100.. OOdd ttłłuummaacczzaa To jest druga wersja DNS-HOWTO. Pierwsza wersja, dotycząca bind'a 4 została przetłumaczona przez Piotra Pogorzelskiego <piotr.pogorzelski@ippt.gov.pl>. Prawa autorskie tłumaczenia pierwszej wersji należą właśnie do niego, a ponieważ ja przetłumaczyłem drugą wersję od początku, prawa autorskie tłumaczenia drugiej wersji należą do mnie. Wersja 2.1 jest _z_n_a_c_z_n_i_e poprawiona w stosunku do 2.0. Jak zwykle, jeżeli znajdziesz jakieś błedy, daj mi znać. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/DNS49-HOWTO.pl.txt�����������������������������������������������������0100664�0001750�0001750�00000210451�06717116340�017253� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ DNS HOWTO Nicolai Langfeldt janl@math.uio.no v1.3.2, 3 June 1997 tłumaczenie piotr.pogorzelski@ippt.gov.pl wersja 1.0.1, kwiecień 1998 Jak w zostać małoetatowym administratorem DNS. Dokument opisuje BIND-4.9.x. ______________________________________________________________________ Table of Contents: 1. Wstęp 1.1. Legal stuff 1.2. Podziękowania i prośby o pomoc. 1.3. Inne dokumenty 1.4. Dedykacja 2. Wprowadzenie. 3. Podręczny serwer DNS. 4. Całkiem prosta domena. 4.1. Wpierw troche teorii. 4.2. Nasza własna domena. 4.3. Co dalej. 5. Przykład, prawdziwa domena. 5.1. /etc/named.boto (lub /var/named/named.boot) 5.2. /var/named/root.cache 5.3. /var/named/zone/127.0.0 5.4. /var/named/zone/land-5.com 5.5. /var/named/zone/206.6.177 6. Utrzymanie i konserwacja 7. Automatyczna konfiguracja połączeń modemowych. 8. FAQ 9. Jak zostać pełno etatowym administratorem DNSu. 10. Od tłumacza ______________________________________________________________________ 11.. WWssttęępp Słowa kluczowe: DNS, bind, named, dialup, ppp, slip, Internet, domain, name, hosts, resolving 11..11.. LLeeggaall ssttuuffff (C)opyright 1995 Nicolai Langfeldt. Do not modify without amending copyright, distribute freely but retain copyright message. 11..22.. PPooddzziięękkoowwaanniiaa ii pprroośśbbyy oo ppoommoocc.. Chciałbym podziękować Arnt Gulbrandsen, który niezliczoną liczbę razy czytał ten dokumend dostarczając wielu pożytecznych sugestii. Dziękuję również ludziom, którzy przysłali swoje sugestie pocztą elektroniczną. Dziękuje. Pomogliście mi w pracy nad tym dokumentem. 11..33.. IInnnnee ddookkuummeennttyy Ten dokument nigdy nie będzie skończony, wszelkie uwagi (ogólne - nie dotyczące polskiej wersji tego dokumentu) proszę przesyłać autorowi. Czeka na uwagi o sukcesach i kłopotach, dzięki nim dokument stanie się pełniejszy i lepszy. Tak więc pieniądze, pytania/uwagi kierujcie na adres janl@ifi.uio.no. Jeśli wysyłacie pocztą elektroniczną, upewnijcie się, że adres zwrotny jest poprawny. Proszę, przed wysłaniem listu zapoznajcie się wcześniej z rodziałem ``FAQ'' dotyczącym najczęsciej pojawiających się pytań. 11..44.. DDeeddyykkaaccjjaa Ten dokument HOWTO jest dedykowany Anne Line Norheim. Pomimo, że prawdopodobnie nigdy go nie przeczyta. 22.. WWpprroowwaaddzzeenniiee.. CCoo ttuu zznnaajjddzziieecciiee,, aa cczzeeggoo nniiee.. Dla początkujących, DNS oznacza Domain NAme System, Zasady i programy umożliwiające odwzorowanie (zamianę) nazw symbolicznych nadawnych komuterom na odpowiadające imadresy IP. Niniejszy dokument przedstawia w jaki sposób stworzyć takie odwzrowanie wykorzystując do tego Linuxa. Wspomniane odwzorowanie to proste skojarzenie dwóch rzeczy, symbolicznej nazwy komputera np. ftp.linux.org z adresem IP tego komputera, 199.249.150.4. DNS to jeden z bardziej niezauważalnych obszarów zarządzania siecią. Niniejszy dokument postara się wyjaśnić kilka pojęć. Opisuje w jaki sposób zestawić _p_r_o_s_t_y serwer DNS. Rozpoczynając od podręzcnego serwera DNS aż do uruchomienia podstawowego serwera domeny. Bardziej skomplikowane konfiguracje mogą być opisane w rozdziale ``FAQ''. Jeśli nie znajdziesz tam rozwiązania swoich problemów, musisz zapoznać się z Prawdziwą Dokumentacją. Później napiszę co to jest Prawdziwa dokumentacja ``the last chapter''. Zanim zaczeniesz działać musisz wpierw skonfigurować swój komputer, tak abyć mógł łączyć się z niego i do niego za pomocą programu telnet, oraz wykonywać inne różnego rodzaju połączenia sieciowe. W szczególności powinieneś móc połączyć sie ze swoim komputerem wydając polecenie telnet 127.0.0.1 (sprawdź to teraz!). Potrzebujesz poprawnie skonfigurowanych plików /etc/host.conf (lub /etc/nsswitch.conf), /etc/resolv.conf i /etc/hosts ponieważ nie będę w tym dokumencie omawiał ich funkcji. Jeśli nie masz potrzebnej konfiguracji sieciowej pomże ci dokument NET-2-HOWTO. Przeczytaj go. Jeśli korzystasz ze SLIPa lub PPP, muszą poprawnie działać. Jeśli tak nie jest przeczytaj PPP-HOWTO. Kiedy mówię `twój komputer', to znaczy, że mam na myśli komputer na którym próbujesz uruchomić serwer DNS, a nie jakikolwiek inny komputer który może być pośrednio związany z działaniem sieci. Zakładam, że nie znajdujesz się za żadną 'ścianą ogniową', która uniemożliwia komuniekację DNS ze światem zewnętrznym. Jeśli tak nie jest, będziesz potrzebował specjalnej konfiguracji, zapoznaj się z rozdziałem ``FAQ''. Serwowanie nazw pod systemem UNIX jest wykonywane przez program o nazwie named. Jest to część pakietu bind, który prowadzi i którym opiekuje się Paul Vixie z The Internet Software Consortium. Named jest dostarczany przez większość dystrybucji Linuxa i zwykle można go znaleźć w /usr/sbin/named. Jeśli jest on zainstalowany na twoim komputerze, prawdopodobnie możesz z niego skorzystać, jeśli nie, możesz zainstalować jego najnowszą wersje, którą znajdziesz w ftp.vix.com:/pub/bind. DNS jest ogólnosieciową bazą danych. Trzeba uważać co się do niej wkłada. Jeśłi włoży się śmiecie, ty i inni otrzymacie z niej śmiecie. Muszisz utrzymywać swoją część DNSu uporządkowaną i poprawną. Wtedy będzie ci dobrze służyć. Naucz się jak z niej korzystać, jak nią zarządzać, jak ją odpluskwiać, a staniesz się kolejnym dobrym administratorem zapobiegając przeciązenim sieci wywołanym jej złym zarządzaniem. W tym dokumencie wypowiadam sądy o pewnych rzeczach, które nie są do końca prawdziwe (choć są co najmniej w połowie prawdziwe). Wszystko po to, aby zachować prostotę tego dokumentu. Jeśli mi uwierzysz wszystko powinno działać. WWsskkaazzóówwkkaa:: Zrób kopie wszystkich plików, które każe zmienić, tak aby w przypadku niepowodzenia całej konfiguracji bys mógł wrócić do stanu pierwotnego. 33.. PPooddrręęcczznnyy sseerrwweerr DDNNSS.. PPiieerrwwsszzyy eettaapp kkoonnffiigguurraaccjjii DDNNSS,, ppoożżyytteecczznnyy ddllaa oossóóbb łłąącczząąccyycchh ssiięę zz IInntteerrnneetteemm pprrzzeezz mmooddeemm.. Podręczny serwer DNS znajdzie odpowiedzi na pytania o nazwy komputerów i zapamięta je, tak aby mógł natychmiast odpowiedzieć, gdy będziesz ich potrzebował ponownie. Po pierwsze potrzebny jest plik /etc/named/.boot. Jest czytany podczas uruchamiania programu named. W naszym przypadku powienien po prostu zawierać: ______________________________________________________________________ ; Plik startowy podręcznego serwera DSN ; directory /var/named ; ; rodzaj domena plik lub komputer źródłowy cache . root.cache primary 0.0.127.in-addr.arpa pz/127.0.0 ______________________________________________________________________ BBAARRDDZZOO WWAAŻŻNNEE:: W niektórych formatach tego dokumentu, zawartość wspomnianego pliku będzie poprzedzona kilkoma spacjami lub znakami tabulacji. Znaki te nie mogą znależć się w prawdzimym pliku konfiguracyjnym. UUssuuńń wwsszzeellkkiiee wwiiooddąąccee ssppaaccjjee w plikach utworzonych na podstawie tego dokumnetu (np przez kopiowanie fragmentów). Wiersz z poleceniem `directory' wskazuje, gdzie program named powienien szukać plików. Wszystkie podawane póżniej nazwy plików będą nazwami względem tego katalogu. /var/named jest właściwym miejscem, zgodnym ze _S_t_a_n_d_a_r_d_e_m _s_y_s_t_e_m_ó_w _p_l_i_k_ó_w _w _s_y_s_t_e_m_i_e _L_i_n_u_x _(_F_S_S_). Plik o nazwie /var/named/root.cache powienien zawierać: ______________________________________________________________________ . 518400 NS D.ROOT-SERVERS.NET. . 518400 NS E.ROOT-SERVERS.NET. . 518400 NS I.ROOT-SERVERS.NET. . 518400 NS F.ROOT-SERVERS.NET. . 518400 NS G.ROOT-SERVERS.NET. . 518400 NS A.ROOT-SERVERS.NET. . 518400 NS H.ROOT-SERVERS.NET. . 518400 NS B.ROOT-SERVERS.NET. . 518400 NS C.ROOT-SERVERS.NET. ; D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ______________________________________________________________________ PPaammiięęttaajj ccoo mmóówwiiłłeemm oo wwiiooddąąccyycchh ooddssttęęppaacchh!!. Plik określa główne serwery DNS na świecie. Ta informacja zmienia się z czasem i _m_u_s_i być poprawiana. Patrz ``Rozdziało utrzymaniu serwera'', znajdziesz tam rady skąd uzyskiwać aktualne informacje. Jest to opisane na stronie podręcznika dotyczącej programu named, lecz IMHO nadaje się dla ludzi, którzy już rozumieją jak pracuje named. Kolejny wiersz w named.boot zawiera słowo kłuczowe primary. Później opiszę jego zadanie, teraz po prostu utwórz w katalogu pz plik o nazwie 127.0.0 zawierający: ______________________________________________________________________ @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost. ______________________________________________________________________ Do tego potrzebujesz jeszcze plik /etc/resolv.conf, który by wyglądał mniej więcej tak: ______________________________________________________________________ search poddomena.twoja.domena. twoja.domena nameserver 127.0.0.1 ______________________________________________________________________ Wiersz `search' określa, które domeny powinny być przeglądane w poszukiwaniu komputera z którym chcemy nawiązać połączenie. Wiersz `nameserver' zawiera adres IP komputera, serwera DNS, z którego może korzystać twój komputer. W tym przypadku jest to twój komputer ponieważ to właśnie na nim chcesz uruchomić program named. (Uwaga: Ten plik jest czytany przez procedury resolwera biblioteki libc, program named nie zagląda do tego pliku.) Mała ilustracja do czego służy ten plik: jeśli program otrzyma za zadanie znalezienie adresu komputera foo, najpierw jest sprawdzane czy istnieje komputer foo.poddomena.twoja.domena, a w przypadku niepowodzenia następnie sprawda się foo.twoja.domena, a na końcu foo. Jeśli należy znaleźć sunsite.unc.edu wpierw sprawdza się istnienie sunsite.unc.edu.poddomena.twoja.domena (tak, jest to glupie, ale tak musi być), następnie sunsite.unc.edu.twoja.domena, a na końcu sunsite.unc.edu. Możesz nie chcieć umieszczać w tym pliku zbyt wielu domen, każde wyszukanie zajmuje trochę czasu. W kolejnym przykładzie zakładamy, że należysz do domeny poddomena.twoja.domena, twój komputer nowsi nazwę twój- komputer.poddomena.twoja.domena. Wiersz z poleceniem search nie powinien zawierać domeny najwyższego poziomu (TLD -Top Level Domain) (a w Polsce domeny drugiego poziomu np. edu.pl, /com.pl/). Jeśli bardzo często łączysz się z komputerami należącymi do innej domeny, możesz ją dodać do wiersza z poleceniem search: ______________________________________________________________________ search poddomena.twoja.domena. inna-domena.com.pl. ______________________________________________________________________ itd. Oczywiście należy wpisać istniejące domeny. Zwróć uwagę na brak kropki kończącej nazwę domeny. Następnie, zależnie od wersji biblioteki libc, której używasz musisz poprawić albo plik /etc/nsswitch.conf lub /etc/host.conf. Jeśli w twoim systemie już jest plik /etc/nsswitch.conf to znaczy, że należy poprawić ten właśnie plik, jęsli go nie ma, będziemy poprawiwać /etc/hosts.conf. //eettcc//nnsssswwiittcchh..ccoonnff To spory plik okreśłający skąd system ma pobierać różnego rodzaju informacje, z których plików, lub sieciowychs baz danych. Zwykle zawiera pomocne komentarze. Znajdź wiersz zaczywnający się słowem `hosts:', powinien wyglądać następująco: ______________________________________________________________________ hosts: files dns ______________________________________________________________________ Jeśli nie ma wiersza zaczynającego się od `hosts', to dodaj przedstawiony powyżej. Deiniuje on, że programy wpierw powinny zajżeć do pliku /etc/hosts i dopiero w następnej kolejności sprawdzać w DNSie, w sposób zgodny z wytycznymi znajdującymi się w pliku /etc/resolv.conf. //eettcc//hhoosstt..ccoonnff Prawdopodowbie zawiera kilkanaście wierszym jeden z nich powinien wyglądać następująco: ______________________________________________________________________ order hosts,bind ______________________________________________________________________ Jeśli nie ma wiersza rozpoczynającego się słowem order powinno się taki dodać. Określa on sposób działania procedur rozwiązujących nazwy komputerów, które w podanej konfiguracji wpierw sprawdzają plik /etc/hosts , a następnie pytają serwer DNS (który jest zdefiniowany w pliku /etc/resolv.conf jako 127.0.0.1). Te pliki są dokładniej opisane na stronach podręcznika, można je przeczytać pisząc `man 8 resolv (w większości dystrybucji Linuxa). IMHO jest to całkiem zrozumiały tekst i powinien się z nim zapoznać każdy administrator DNSu. Zrób to teraz, jeśli odłożysz to na później, nigdy tego nie zrobisz. Cect1>Uruchamianie programu named. Przyszedł nareszcie czas uruchomic program named. Jeśli korzystasz z połączenia dzwonionego, przed uruchomieniem programu zestaw połaczenie. Nastepnie uruchom `ndc start' i wciśnij ENTER. Gdyby powloka nie mogła znaleźć progrmu ndc, spróbuj `/usr/sbin/ndc start'. Jeśli tam też nie ma tego programu zajżyj do rozdziału ``FAQ''. Teraz możesz przetestować swoją konfigurację. Jeśli podczas uruchamiania programu named będziesz podglądał plik dziennika (zwykle tail -f /var/log/messages ) powinieneś zobaczyć komunikaty podobne do tych poniżej: Jun 30 21:50:55 roke named[2258]: starting. named 4.9.4-REL Sun Jun 30 21:29:03 MET DST 1996 janl@roke.slip.ifi.uio.no:/var/tmp/bind/named Jun 30 21:50:55 roke named[2258]: cache zone "" loaded (serial 0) Jun 30 21:50:55 roke named[2258]: primary zone "0.0.127.in-addr.arpa" loaded (serial 1) Jeśli zobaczysz jakiekolwiek komunikaty o błędach, named wskaże plik zawierający błąd (mam nadzieję, że named.boot lub named.cache :-). Zabij proces named (ndc stop) i sprawdź wskazany plik. $ nslookup Default Server: localhost Address: 127.0.0.1 > Jeśli wyświetlone komunikaty są zbliżone do tych powyżej, to znaczy, że wszystko działa. Mamy taką nadzieję. W każdym innym przypadku musisz wrócić i sprawdzić raz jeszcze pliki konfiguracyjne. Po każdej modyfikacji pliku /etc/named.boot musisz zrestartować program wydając polecenie ndc restart. Teraz możesz wydawać zapytania. Spróbuj odnaleźć komputer blisko ciebie. pat.uio.no jest blisko mnie, Uniwersytet w Oslo: > pat.uio.no Server: localhost Address: 127.0.0.1 Name: pat.uio.no Address: 129.240.2.50 nslookup poprosił nameda o wyszukanie komputera pat.uio.no. Named skontaktował się z jednym z serwerów nazw wymienionych w pliku root.cache i tam rozpoczął swą drogę. Zanim zobaczysz rezultat zapytania, może upłynąć całkiem spora chwila, ponieważ named przeszukuje wszystkie domeny wymienione w pliku /etc/resolv.conf/ Jeśli spróbujesz raz jeszcze otrzymasz taką odpowiedź: > pat.uio.no Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: pat.uio.no Address: 129.240.2.50 Zwróć uwagę na frazę `Non-authoritative answer:'. Oznacza, że tym razem named skorzystał ze swojej pamięci podręcznej i nie przeszukiwał sieci w poszukiwaniu odpowiedzi na twoje pytanie. Lecz informacja z pamięci podręcznej _m_o_ż_e być nieaktualna. Dlatetgo jesteś informowany o tym (pomijalnym) niebezpieczeństwie właśnie frazą `Non-authoritative answer:' (Odpwowiedź z nieautoryzowanego źródła). Jeśli nslookup w taki sposób odpowie na drugie zapytanie o ten sam komputer, jest to znak, że zapamiętuje odpowiedzi przychodzące z sieci, a to znaczy, że działa poprawnie. Aby zakończyć pracę z programem nslookup należy wydać polecenie exit. Jeśli korzystasz z protokołów ppp, slip, zapoznaj się z rozdziałem ``o połączeniach modemowych'', znajdziesz tam dla siebie kilka porad. Teraz już wiesz jak skonfigurować podręczny serwer nazw (DNS). Polecam piwo, mleko lub inny ulubiony napój aby uczcić to wydarzenie. 44.. CCaałłkkiieemm pprroossttaa ddoommeennaa.. JJaakk sskkoonnffiigguurroowwaaćć wwłłaassnnąą ddoommeennęę.. 44..11.. WWppiieerrww ttrroocchhee tteeoorriiii.. Zanim _n_a_p_r_a_w_d_ę rozpoczniemy ten rozdział, mam zamiar przedstawić ci trochę teorii na temat pracy DNSu. A ty to przeczytasz, ponieważ jest to ci potrzebne. Jeśli ci się nie chce, powinieneś choć zapoznać się z nim powierzchownie. Możesz przestać, gdy dojdziesz do wyjaśnień, co należy umieścić w pliku named.boot. DNS jest systemem hierarchicznym. Domena główna (najwyższego poziomu) jest oznaczana kropką `.' i nazywana `root'. W domenie . można znaleźć kilka "Domen najwyższego poziomu (TLD)" np. ORG, COM, EDU czy NET. Lecz jest ich znacznie więcej. Gdy chcesz znaleźć adres kompuera prep.ai.mit.edu twój serwer musi odnaleźć komputer obsługujący domenę edu. Zadaje pytanie serwerowi domeny . (serwery domeny . zna z pliku root.cache), otrzymuje listę serwerów obsługujących domenę edu. Oto mała ilustracja: $ nslookup Default Server: localhost Address: 127.0.0.1 rozpoczynamy od zapytania serwera domeny głównej > server c.root-servers.net. Default Server: c.root-servers.net Address: 192.33.4.12 Ustawiamy rodzj zapytania: rekordy NS (adresy serwrów DNS) > set q=ns pytamy się o domenę edu. > edu. Kropka po słowie edu ma znaczenie, informuje serwer, że pytamy się o edu, które jest bezpośrednio w domenie głównej, w ten sposób wyłączamy z przeszukiwania domeny podane w pliku /etc/resolv.conf. edu nameserver = A.ROOT-SERVERS.NET edu nameserver = H.ROOT-SERVERS.NET edu nameserver = B.ROOT-SERVERS.NET edu nameserver = C.ROOT-SERVERS.NET edu nameserver = D.ROOT-SERVERS.NET edu nameserver = E.ROOT-SERVERS.NET edu nameserver = I.ROOT-SERVERS.NET edu nameserver = F.ROOT-SERVERS.NET edu nameserver = G.ROOT-SERVERS.NET A.ROOT-SERVERS.NET internet address = 198.41.0.4 H.ROOT-SERVERS.NET internet address = 128.63.2.53 B.ROOT-SERVERS.NET internet address = 128.9.0.107 C.ROOT-SERVERS.NET internet address = 192.33.4.12 D.ROOT-SERVERS.NET internet address = 128.8.10.90 E.ROOT-SERVERS.NET internet address = 192.203.230.10 I.ROOT-SERVERS.NET internet address = 192.36.148.17 F.ROOT-SERVERS.NET internet address = 192.5.5.241 G.ROOT-SERVERS.NET internet address = 192.112.36.4 Otrzymaliśmy informacje, że domenę edu obsługują serwery *.root- servers.net, tak więc możemy kontynuować nasze pytanie kierując je nadal do serwera c.root-serwers.net. Teraz chcemy wiedzieć, kto obsługuje domenę następnego poziomu: mit.edu.: > mit.edu. Server: c.root-servers.net Address: 192.33.4.12 Non-authoritative answer: mit.edu nameserver = STRAWB.mit.edu mit.edu nameserver = W20NS.mit.edu mit.edu nameserver = BITSY.mit.edu Authoritative answers can be found from: STRAWB.mit.edu internet address = 18.71.0.151 W20NS.mit.edu internet address = 18.70.0.160 BITSY.mit.edu internet address = 18.72.0.3 steawb, w20ns i bitsy obsługują mit, wybierz jeden z nich i spytaj się o ai.mit.edu: > server W20NS.mit.edu. W nazwach kompyterów wielkość liter nie ma znaczenia, lecz ja do przenoszenia tekstu używam myszy, zapytanie ma taką samą formę jak poprzedzająca je odpowiedź. Server: W20NS.mit.edu Address: 18.70.0.160 > ai.mit.edu. Server: W20NS.mit.edu Address: 18.70.0.160 Non-authoritative answer: ai.mit.edu nameserver = WHEATIES.AI.MIT.EDU ai.mit.edu nameserver = ALPHA-BITS.AI.MIT.EDU ai.mit.edu nameserver = GRAPE-NUTS.AI.MIT.EDU ai.mit.edu nameserver = TRIX.AI.MIT.EDU ai.mit.edu nameserver = MUESLI.AI.MIT.EDU Authoritative answers can be found from: AI.MIT.EDU nameserver = WHEATIES.AI.MIT.EDU AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU WHEATIES.AI.MIT.EDU internet address = 128.52.32.13 WHEATIES.AI.MIT.EDU internet address = 128.52.35.13 ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5 ALPHA-BITS.AI.MIT.EDU internet address = 128.52.37.5 GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.32.4 GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4 TRIX.AI.MIT.EDU internet address = 128.52.32.6 TRIX.AI.MIT.EDU internet address = 128.52.38.6 MUESLI.AI.MIT.EDU internet address = 128.52.32.7 MUESLI.AI.MIT.EDU internet address = 128.52.39.7 Okazuje się, że weaties.ai.mit.edu jest serwerem nazw dla doemny ai.mit.edu: > server WHEATIES.AI.MIT.EDU. Default Server: WHEATIES.AI.MIT.EDU Addresses: 128.52.32.13, 128.52.35.13 Teraz zmieniam rodzaj zapytania. Znamy już nazwę serwera nazw dla interesującej nas domeny, spytamy sie o jakiekolwiek informacje jakie serwer posiada na temat prep.ai.mit.edu. > set q=any > prep.ai.mit.edu. Server: WHEATIES.AI.MIT.EDU Addresses: 128.52.32.13, 128.52.35.13 prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix prep.ai.mit.edu inet address = 18.159.0.42, protocol = tcp #21 #23 #25 #79 prep.ai.mit.edu preference = 1, mail exchanger = life.ai.mit.edu prep.ai.mit.edu internet address = 18.159.0.42 ai.mit.edu nameserver = alpha-bits.ai.mit.edu ai.mit.edu nameserver = wheaties.ai.mit.edu ai.mit.edu nameserver = grape-nuts.ai.mit.edu ai.mit.edu nameserver = mini-wheats.ai.mit.edu ai.mit.edu nameserver = trix.ai.mit.edu ai.mit.edu nameserver = muesli.ai.mit.edu ai.mit.edu nameserver = count-chocula.ai.mit.edu ai.mit.edu nameserver = life.ai.mit.edu ai.mit.edu nameserver = mintaka.lcs.mit.edu life.ai.mit.edu internet address = 128.52.32.80 alpha-bits.ai.mit.edu internet address = 128.52.32.5 wheaties.ai.mit.edu internet address = 128.52.35.13 wheaties.ai.mit.edu internet address = 128.52.32.13 grape-nuts.ai.mit.edu internet address = 128.52.36.4 grape-nuts.ai.mit.edu internet address = 128.52.32.4 mini-wheats.ai.mit.edu internet address = 128.52.32.11 mini-wheats.ai.mit.edu internet address = 128.52.54.11 mintaka.lcs.mit.edu internet address = 18.26.0.36 Jak widać rozpoczynając od domeny głównej . znaleźliśmy kolejne serwery DNS. Gdybyśmy skorzystali z własnego serwera DNS, named zpamiętałby wszystkie informacje otrzymywane z sieci i nie musiałby przej jakiś czas pytać się serwerów, korzystając z przechowywanych informacji. Mniej opisywaną lecz równie ważną domeną jest in-addr.arpa. Tak jak zwykłe domeny również posiada strukturę hierachiczną. in-addr.arpa pozwala na znalezienie nazwy komputera, jeśli tylko posiadamy jego adres IP. Należy tu zwrócić uwagę, że adres IP jest zapisywany w odwrotnej kolejności. Jeśli twój komputer posiada adres 192.128.52.43 named będzie się zachowywał tak samo jak w przykładzie poszukiwania informacji na temat komputera prep.ai.mit.edu: znajdź serwery domey arpa., znajdź serwery in-addr.arpa., znajdź serwery 192.in-addr.arpa., znajdź serwery 128.192.in-addr.arpa./, znajdź serwery 52.128.192.in- addr.arpa./, znjdź niezbędne rekordy dla 43.52.128.192.in-addr.arpa.. Jasne, nie ?! (opowiedz 'tak'). Przez pierwsze dwa lata odwracanie kolejności częsci adresu IP sprawia małe kłopoty. Właśnie skłamałem. DNS nie pracuje dokładnie w taki sposów jaki wam przed chwilą przedstawiłem. Lecz jest to bardzo dobre przbliżenie. 44..22.. NNaasszzaa wwłłaassnnaa ddoommeennaa.. Teraz zdefiniujemy naszą własną domenę. Nazwijmy ją _l_i_n_u_x_._b_o_g_u_s. Umieśćmy w niej jeden komputer. Specjalnie używam całkowicie bzdurną nazwę domeny, aby mieć pewność, że nie przeszkodzimy nikomu z Sieci. Rozpoczęliśmy tę część dodając do named.boot wiersz: ______________________________________________________________________ primary 0.0.127.in-addr.arpa pz/127.0.0 ______________________________________________________________________ Proszę zwrócić uwagę na brak kropki `.' kończącej nazwy domen. Pierwszy wiersz określa, że plik pz/127.0.0 zawiera informacje definiujące domenę 0.0.127.in-addr.arpa. Plik ten już został utworzony, wygląda następująco: ______________________________________________________________________ @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost. ______________________________________________________________________ Proszę zwrócić uwagę na kropkę `.' kończącą pełne nazwy domen, w przeciwieństwie do omawianego wcześniej pliku named.boot. Niektórzy wolą rozpoczynać każdy plik strefy dyrektywą $ORIGIN lecz nie jest to konieczne. Pochodzenie (miejsce w hierarchi DNS, do którego przynależy) pliku strefy jest określone w kolumnie `domain' w pliku named.boot, w tym przypadku jest to 0.0.127.in-addr.arpa. Powyższy plik strefy zawiera trzy rekordy (RR): SOA RR, NS RR i PTR RR. SOA jest skrótem Start Of Authority. Znak `@' jest znakiem specjalnym określającym pochodzenie, a ponieważ kolumna `domain' odpowiadająca temu plikowi mówi 0.0.127.in-addr.arpa, dlatego pierwszy wiersz tak naprawdę ma postać: 0.0.127.IN-ADDR.ARPA. IN SOA ... NS to rekord serwera nazw. Wskazuje komputer, który jest serwerem nazw dla tej domeny. I na koniec rekord PTR mówi, że 1 (w pełnej formie 1.0.0.127.in-addr-arpa, tzn. 127.0.0.1) nosi nazwę localhost. Rekord SOA stanowi nagłówek _w_s_z_y_s_t_k_i_c_h plików stref, w każdym z plików powinien znajdować się dokładnie jeden rekord SOA, powinien to być pierwszy rekord w pliku. Opisuje on strefę, z której pochodzi (komputer o nazwie linux.bogus), kto jest odpowiedzialny za jej zawartość (hostmaster@linux.bogus), numer wersji pliku strefy (serial 1) oraz inne informacje, mające znaczenie dla pracy serwerów drugorzędnych. Jeśli dla pól refresh, retry, expire i minimum będziesz używał wartości jakie występują w tym dokumencie wszystko powinno działać poprawnie. Rekord NS określna kto serwuje informacje DNS na temat 0.0.127.in- addr.arpa, jest to ns.linux.bogus. Rekord PTR mówi nam, że 1.0.0.127.in-addr.arpa (aka 127.0.0.1) jest znany pod nazwą localhost. Teraz zrestartuj proces named (poleceniem ndc restart) i sprawdź poczynione zmiany programem nslookup: $ nslookup Default Server: localhost Address: 127.0.0.1 > 127.0.0.1 Server: localhost Address: 127.0.0.1 Name: localhost Address: 127.0.0.1 jak widać udało się pobrać informacje o localhost z komputera 127.0.0.1, to dobrze. Teraz nasze podstawowe zadanie, domena linux.bogus, dodaj do pliku named.boot wiersz definiujący nową domenę: ______________________________________________________________________ primary linux.bogus pz/linux.bogus ______________________________________________________________________ Zwróć uwagę na powtarząjący sie brak znaku `.' kończących nazwy domen w pliku named.boot. In the linux.bogus zone file we'll put some totally bogus data: ______________________________________________________________________ ; ; Plik strefy linux.bogus ; ; Obowiązkowy zestaw minimum potrzebny do prawidłowej definicje domeny ; @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 199511301 ; serial, todays date + todays serial # 28800 ; refresh, seconds 7200 ; retry, seconds 3600000 ; expire, seconds 86400 ) ; minimum, seconds NS ns.linux.bogus. NS ns.friend.bogus. MX 10 mail.linux.bogus ; Primary Mail Exchanger MX 20 mail.friend.bogus. ; Secondary Mail Exchanger localhost A 127.0.0.1 ns A 127.0.0.2 mail A 127.0.0.4 ______________________________________________________________________ Należy zrócić uwagę na dwie rzeczy dotyczące rekordu SOA. ns.linux.bogus _m_u_s_i byc rekordem RR typu A, czyli nazwą komputera, która posiada przydzielony numer IP. Niedopuszczalne jest, aby nazwa uzywana w rekordzie SOA byla rekordem tymu CNAME. Sam komputer nie musi nosic nazwy 'ns', może to byc dowolna poprawna nazwa. hostamster.linux.bogus należy odczytać jako hostmaster@linux.bogus, musi to byc adres (lub alias do) osoby (lub osób) opiekujących się DNSem dla tej domeny (i czytajacyh regularnie tę pocztę). Wszelka korespondencja dotycząca tej domeny będzie wysyłana na ten adres, może to być dowolny adres e-mail, choć kązdy spodziewa się, że adres W powyższym pliku znalazł się rekord RR nowego typu, a mianowicie rekord MX, inaczej rekord Mail eXchanger. Dostarcza on systemowi pocztowemu informacji, dokąd wysyłać pocztę adresowaną ktoś@linux.bogus, w tym przypadku do mail.linux.bogud lub mail.friend.bogus. Liczba poprzedzająca nazwę komputera oznacza priorytet rekordu. System pocztowy powinien korzystać w pierwszej kolejności z rekordów o najmniejszym priorytecie (w naszym przypadku 10). Jeśli nie uda się dostarczyć poczty na ten adres, należy spróbować innego adresu, o wyższym priorytecie. W naszym przypadku byłby to mail.friend.bogus, który posiada priorytet 20. Teraz trzeba zrestartowac program named wydając polecenie ndc restart. Rezultaty naszej pracy mozemy sprawdzić programem nslookup. $ nslookup > set q=any > linux.bogus Server: localhost Address: 127.0.0.1 linux.bogus origin = linux.bogus mail addr = hostmaster.linux.bogus serial = 199511301 refresh = 28800 (8 hours) retry = 7200 (2 hours) expire = 604800 (7 days) minimum ttl = 86400 (1 day) linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus linux.bogus preference = 20, mail exchanger = mail.friend.bogus linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus ns.linux.bogus internet address = 127.0.0.2 mail.linux.bogus internet address = 127.0.0.4 Przypatrując się dokładnie widzimy, że popełniliśmy błąd. Wiersz linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus jest niepoprawny. powinien wyglądać następująco: linux.bogus preference = 10, mail exchanger = mail.linux.bogus Specjalnie popełniłem błąd, abyście mogli się na nim uczyć :-). Przyglądając się plikowi źródłowemu zauważamy, że w wierszu @ MX 10 mail.linux.bogus ; Primary Mail Exchanger brakuje kropki. Lub inaczej mówiać ma zbyt wiele członów strefy nie kończy się kropką, program na koniec dokleja 'origin' (pochodzenie, domenę definiowaną przez ten plik źródłowy). Dlatego nazwy komputerów należy podawać w sposób pełny, pilnując końcowej kropki ______________________________________________________________________ @ MX 10 mail.linux.bogus. ; Primary Mail Exchanger ______________________________________________________________________ lub uproszczony ______________________________________________________________________ @ MX 10 mail ; Primary Mail Exchanger ______________________________________________________________________ Oba sposoby są poprawne. Osobiście preferuje drugą metodę, mniej pisania. W pliku strefy domena powinna być podana w całości, razem z kończącą ją kropką (.) lub w ogole nie powinna być podawana. W takim przypadku domyślnie przyjmuje się tzw. origin. Muszę podkreślić, że nazwy domen w pliku named.boot nie powinny się kończyć kropką. Nie macie pojęcia, jak wiele razy nadmierna liczba kropek, lub ich brak spowodowała zamieszanie i ogłupiła mnóstwo ludzi. Skoro już powiedziłąem co miałęm do powiedzenia, poniżej przedstawiam nowy źródłowy plik strefy z nowymi, dodatkowymi informacjami: ______________________________________________________________________ ; ; Plik strefy dla linux.bogus ; ; Obowiązkowy zestaw minimum potrzebny do prawidłowej definicje domeny ; @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 199511301 ; serial, todays date + todays serial # 28800 ; refresh, seconds 7200 ; retry, seconds 604800 ; expire, seconds 86400 ) ; minimum, seconds NS ns ; Inet Address of name server NS ns.friend.bogus. MX 10 mail ; Primary Mail Exchanger MX 20 mail.friend.bogus. ; Secondary Mail Exchanger localhost A 127.0.0.1 ns A 127.0.0.2 mail A 127.0.0.4 ; ; Extras ; @ TXT "Linux.Bogus, your DNS consultants" ns MX 10 mail MX 20 mail.friend.bogus. HINFO "Pentium" "Linux 1.2" TXT "RMS" richard CNAME ns www CNAME ns donald A 127.0.0.3 MX 10 mail MX 20 mail.friend.bogus. HINFO "i486" "Linux 1.2" TXT "DEK" mail MX 10 mail MX 20 mail.friend.bogus. HINFO "386sx" "Linux 1.0.9" ftp A 127.0.0.5 MX 10 mail MX 20 mail.friend.bogus. HINFO "P6" "Linux 1.3.59" ______________________________________________________________________ Moglibyście chcieć przesując pierwsze trzy rekordy A, tak aby sąsiadowały z innymi rekordami tego typu, zamiast siedzieć na początku listy. W powyższym przykładzie pojawiły się rekordy nowego typu: HINFO (Host INFOrmation) składa się z dwóch częsci, dobrym zwyczajem jest umiesczenie obu w cudzysłowach. Pierwsza część określa hardware, lub procesor komputera, druga oprogramowanie lub pracujący na nim system operacyjny. Komputer ns to Pentium, pracujące pod Linuxem 1.2. Rekord TXT może zawierać dowolny tekst. Można go wykorzystywać do różnych celów. CNAME (Cannonical NAME) to sposób na nadanie wielu nazw jednemu komputerowi. Tak więc richard i www są aliasami komputera ns. To ważne aby pamiętać, że rekordy A, MX, CNAME i SOA _n_i_g_d_y nie powinny wskazywać na rekord CNAME. Zawsze powinny wsazywać na rekord A. Dlatego ta forma jest niepoprawna ______________________________________________________________________ foobar CNAME richard ; NO! ______________________________________________________________________ i powinna zostać zastąpiona przez ______________________________________________________________________ foobar CNAME ns ; Yes! ______________________________________________________________________ Równie ważne jest pamiętanie, że rekord CNAME nie jest poprawną nazwą, którą można stosować w adresach e-mail. Nawiązując do poprzedniego przykładu, adres wmail webmaster@www.linux.bogus nie jest niepoprawny. Możesz oczekiwać, że całkiem spora liczba administratorów pocztowych Stamtąd będzie wymagała popdorządkowania się tej regule pomimo, że w twoim przypadku wszystko może działać poprawnie. Sposobem na uniknięcie kłopotów jest stosowanie rekordów A (i być może również innych, np. rekordów MX): ______________________________________________________________________ www A 127.0.0.2 ______________________________________________________________________ Paul Vixie, największy z wizardów programu named, sugeruje aby _n_i_e korzystać z rekordów CNAME. Dlatego _b_a_r_d_z_o poważnie zastanów się nad ograniczeniem uzywania rekordów CNAME. Załaduj nową wersję bazy wydając polecenie ndc reload, wymusi ona na procesie ponowne odczytanie plików konfiguracyjnych. $ nslookup Default Server: localhost Address: 127.0.0.1 > ls -d linux.bogus Powyższe polecenie spowoduje przedstawienie wszystkich rekordów. [localhost] linux.bogus. SOA linux.bogus hostmaster.linux.bogus. (1995 11301 28800 7200 604800 86400) linux.bogus. NS ns.linux.bogus linux.bogus. NS ns.friend.bogus linux.bogus. MX 10 mail.linux.bogus linux.bogus. MX 20 mail.friend.bogus linux.bogus. TXT "Linux.Bogus, your DNS consultants" localhost A 127.0.0.1 mail A 127.0.0.4 mail MX 10 mail.linux.bogus mail MX 20 mail.friend.bogus mail HINFO 386sx Linux 1.0.9 donald A 127.0.0.3 donald MX 10 mail.linux.bogus donald MX 20 mail.friend.bogus donald HINFO i486 Linux 1.2 donald TXT "DEK" www CNAME ns.linux.bogus richard CNAME ns.linux.bogus ftp A 127.0.0.5 ftp MX 10 mail.linux.bogus ftp MX 20 mail.friend.bogus ftp HINFO P6 Linux 1.3.59 ns A 127.0.0.2 ns MX 10 mail.linux.bogus ns MX 20 mail.friend.bogus ns HINFO Pentium Linux 1.2 ns TXT "RMS" linux.bogus. SOA linux.bogus hostmaster.linux.bogus. (1995 11301 28800 7200 604800 86400) Jest dobrze. Zobaczmy jaką odpowiedź otrymamy pytając się wyłącznie o komputer www: > set q=any > www.linux.bogus. Server: localhost Address: 127.0.0.1 www.linux.bogus canonical name = ns.linux.bogus linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus ns.linux.bogus internet address = 127.0.0.2 a ns.linux.bogus ma adres 127.0.0.2. To również wygląda poprawnie. 44..33.. CCoo ddaalleejj.. Oczywiście powyższa domena jest nierzeczywista, jak również adresy IP podane w przykładzie, co może utrudniać zrozumienie. Przykład przwdziwej domeny znjdziecie w następnym rozdziale. 55.. PPrrzzyykkłłaadd,, pprraawwddzziiwwaa ddoommeennaa.. SSkkąądd wwzziiąąćć pplliikkii _p_r_a_w_d_z_i_w_e_j ddoommeennyy. UZytkownicy zwrócili mi uwagę, że powinienem dołączyć przykład plików definiujących prawdziwą domene, ponieważ różnica pomiędzy domeną przykładową i prawdziwą nie była do ońca jasna. Jedna uwaga dotycząca tego przykładu: _n_i_e wprowadzajcie tych plików do swoich serwerów DNS! Przedstawione pliki służą jedynie jako punkt odniesienia. Jeśli chcesz eksperymentować, wykorzystaj domenę przykładową linux.bogus. Korzystam z tego przykładau za pozwoleniem Davida Bullocka z LAND-5. Prezentowane informacje były aktualne 14 sierpnia 1196 roku, i mogą się róznić od aktualnych. Należy ciągle pamiętać o uwagach na temat wiodących odstępów w plikach przykładowych. 55..11.. //eettcc//nnaammeedd..bboottoo ((lluubb //vvaarr//nnaammeedd//nnaammeedd..bboooott)) Oto dwa wiersze potrzebne d ozdefiniowania dwóch stref (domen) odwrotnych.: siec 127.0.0 oraz siec LAND-5 o numerach 206.6.177. Oraz wiersz deklarujący, że nasz serwer jest serwerem podstawowym domeny land-5.com. Proszę zauważyc, że zamiast umieszczania plików z danymi w sugerowanym wcześcniej przeze mnie katalogu pz, tutaj pliki są umieszczane w katalogu zone. ______________________________________________________________________ ; Boot file for LAND-5 name server ; directory /var/named ; ; type domain source file or host cache . root.cache primary 0.0.127.in-addr.arpa zone/127.0.0 primary 177.6.206.in-addr.arpa zone/206.6.177 primary land-5.com zone/land-5.com ______________________________________________________________________ 55..22.. //vvaarr//nnaammeedd//rroooott..ccaacchhee Proszę pamiętać, że ten plik się zmienia, i ten przedstawiony tutaj jest już stary. Lepiej skorzystaj z tego, genrowanego programem dig. ______________________________________________________________________ ; <<>> DiG 2.1 <<>> ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6 ;; flags: qr rd ra; Ques: 1, Ans: 9, Auth: 0, Addit: 9 ;; QUESTIONS: ;; ., type = NS, class = IN ;; ANSWERS: . 518357 NS H.ROOT-SERVERS.NET. . 518357 NS B.ROOT-SERVERS.NET. . 518357 NS C.ROOT-SERVERS.NET. . 518357 NS D.ROOT-SERVERS.NET. . 518357 NS E.ROOT-SERVERS.NET. . 518357 NS I.ROOT-SERVERS.NET. . 518357 NS F.ROOT-SERVERS.NET. . 518357 NS G.ROOT-SERVERS.NET. . 518357 NS A.ROOT-SERVERS.NET. ;; ADDITIONAL RECORDS: H.ROOT-SERVERS.NET. 165593 A 128.63.2.53 B.ROOT-SERVERS.NET. 165593 A 128.9.0.107 C.ROOT-SERVERS.NET. 222766 A 192.33.4.12 D.ROOT-SERVERS.NET. 165593 A 128.8.10.90 E.ROOT-SERVERS.NET. 165593 A 192.203.230.10 I.ROOT-SERVERS.NET. 165593 A 192.36.148.17 F.ROOT-SERVERS.NET. 299616 A 192.5.5.241 G.ROOT-SERVERS.NET. 165593 A 192.112.36.4 A.ROOT-SERVERS.NET. 165593 A 198.41.0.4 ;; Total query time: 250 msec ;; FROM: land-5 to SERVER: default -- 127.0.0.1 ;; WHEN: Fri Sep 20 10:11:22 1996 ;; MSG SIZE sent: 17 rcvd: 312 ______________________________________________________________________ 55..33.. //vvaarr//nnaammeedd//zzoonnee//112277..00..00 Tylko podstawowe rekordy, obowiązkowo rekord SOA, rekord odwzorujący 127.0.0.1 na localhost. Oba są konieczne. Nic więcej w tym pliku nie jest potrzebne.PRzwdopodobnie nigdy już nie powinny byćmodyfikowane, cgyba, że zmieni się adres serwera DNS lub adres email uzywany w rekordzie SOA. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609203 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. 1 PTR localhost. ______________________________________________________________________ 55..44.. //vvaarr//nnaammeedd//zzoonnee//llaanndd--55..ccoomm Tutaj możemy zobaczyć obowiązkowy rekord SOA, potrzebne rekordy NS. Widzimy, że drugorzędny serwer DNS to ns1.psi.net. Jest tak, jak być powinno, _z_a_w_s_z_e musi być drugi, zapasowy serwer DNS umieszczony poza twoją siecią. Widzimy również, że komputergem głównym jest land-5, serwujący rózne usługi do których kierują odpowiednie rekorddy CNAME (alternatywa jest używanie rekordów A). Patrząc na rekord SOA widzimy, że ta strefa(domena) dns pochodzi z komutera land-5.com. W sprawach związanyc hz tą domeną należy kontaktować się z root@land-5.com. hostmaster to inny, często używany w takich przypadkach adres e-mail. Numer seryjny w powszechnie przyjętym formacie rrrrmmdd z dodaną liczbą zmian danego dnia wskazuje, że jest to prawdopodobnie szósta wersja tego pliku w dniu 20. września 1996. Pamiętaj, że numer seryjny _m_u_s_i monotonicznie rosnąć. W tym przypadku pozostawiono jedna cyfrę jalo kicznik zmian jednego dnia. Po wykonaniu dziewięciu poprawek, następną mozna wykonac dopiero następnego dnia. Dlatego rozważ stosowanie dwóch pozycji do oznaczania liczby modyfikacji jednego dnia. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; serial, todays date + todays serial # 10800 ; refresh, seconds 7200 ; retry, seconds 10800 ; expire, seconds 86400 ) ; minimum, seconds NS land-5.com. NS ns2.psi.net. MX 10 land-5.com. ; Primary Mail Exchanger localhost A 127.0.0.1 router A 206.6.177.1 land-5.com. A 206.6.177.2 ns CNAME land-5.com. ftp CNAME land-5.com. www CNAME land-5.com. mail CNAME land-5.com. news CNAME land-5.com. funn A 206.6.177.3 illusions CNAME funn.land-5.com. @ TXT "LAND-5 Corporation" ; ; Workstations ; ws_177200 A 206.6.177.200 MX 10 land-5.com. ; Primary Mail Host ws_177201 A 206.6.177.201 MX 10 land-5.com. ; Primary Mail Host ws_177202 A 206.6.177.202 MX 10 land-5.com. ; Primary Mail Host ws_177203 A 206.6.177.203 MX 10 land-5.com. ; Primary Mail Host ws_177204 A 206.6.177.204 MX 10 land-5.com. ; Primary Mail Host ws_177205 A 206.6.177.205 MX 10 land-5.com. ; Primary Mail Host ; {Many repetitive definitions deleted - SNIP} ws_177250 A 206.6.177.250 MX 10 land-5.com. ; Primary Mail Host ws_177251 A 206.6.177.251 MX 10 land-5.com. ; Primary Mail Host ws_177252 A 206.6.177.252 MX 10 land-5.com. ; Primary Mail Host ws_177253 A 206.6.177.253 MX 10 land-5.com. ; Primary Mail Host ws_177254 A 206.6.177.254 MX 10 land-5.com. ; Primary Mail Host ______________________________________________________________________ Można jeszcze zwrócić uwagę na to, że stacje robocze nie posiadają indywidualnych nazw, lecz raczej prefix po którym następuje dwuczłonowy fragmnet adresu IP. Korzystanie z takiej konwencji może znacznie ułatwić opiekę nad DNSem, lecz nie jest przez wszystkich najmilej widziane. 55..55.. //vvaarr//nnaammeedd//zzoonnee//220066..66..117777 Komentarz później. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. NS ns2.psi.net. ; ; Servers ; 1 PTR router.land-5.com. 2 PTR land-5.com. 3 PTR funn.land-5.com. ; ; Workstations ; 200 PTR ws_177200.land-5.com. 201 PTR ws_177201.land-5.com. 202 PTR ws_177202.land-5.com. 203 PTR ws_177203.land-5.com. 204 PTR ws_177204.land-5.com. 205 PTR ws_177205.land-5.com. ; {Many repetitive definitions deleted - SNIP} 250 PTR ws_177250.land-5.com. 251 PTR ws_177251.land-5.com. 252 PTR ws_177252.land-5.com. 253 PTR ws_177253.land-5.com. 254 PTR ws_177254.land-5.com. ______________________________________________________________________ definicja domeny odwrotnej powoduje zwykle najwięcej kłopotów. Służy do znajdywania nazwy komputera, znając jego adres IP. Przykład: Posiadasz serwer IRC i przyjmujesz połączenia od klientów. Jednakże jako serwer Norweski chcesz jedynie zezwalać na połączenia komputerów norweskich lub skandynawskich. Po nawiązaniu połączenia procedury biblioteki C są w stanie ustalić spod jakiego adresu IP zostało nawiązane nowe połączenie, ponieważ adres IP zdalnego komputera jest przekazywany w pakietach danych przesyłanych siecią. Teraz możesz skorzystać z funkcji gethostbyaddr, która znajduje nazwę odpowiadającą podanemu adresowi IP. Gethostbyaddr zapyta serwer DNS, który z kolei dokona całego wyszukania. Zakładając, że klient połączył się z komputera ws_177200.land-5.com, adres IP przekazany przez proceduty biblioteki lib C do serwera DNS będzie brzmiał: 206.6.177.200. Aby dowiedzieć się jaka nazwa odpowiada temu adresowi musimy znależć wartość rekordu 100.177.6.206.in-addr.arpa. Serwer DNS wpierw znajdzei serwery domane arpa, in-addr.arpa, 206.in-addr.arpa, 6.206.in- addr.arpa dochodząc do serwera 177.6.206.in-addr.arpa w land-5. Ostatecznie otrzyma stamtąd odpowiedź, że dla 200.177.6.206.in- addr.arpa istnieje rekord PTR o wartości ws_177200.land-5.com, co znaczy, że adresowi 206.6.177.200 odpowiada nazwa ws_177200.land-5.com. Podobnie jak w przypadku wyjaśnien odszukiwania adresu dla nazwy prep.ai.mit.edu, powuższe wyjaśnienie trochę mija się z rzeczywistością. Powracając do przykładu IRC. Serwer IRC akceptuje połączenia pochodzące z krajów skandynawskich, tzn. *.no, *.se, *.dk. Nazwa ws_177200.land-5.com nie pasuje do żadnego z powyższych wzorców i serwer odmówi połączenia. Gdyby _n_i_e istniało odwzorowanie odwrotne adresu 206.6.177.200 poprzez strefę in-addr.arpa, wtedy serwer nie miałby możliwości znalezienia nazwy łączącego się komputera a porównywanie adresów ip z wzorcami domen, nigdy nie przynosiłoby poprawnych rezultatów. Niektórzy twierdzą, żę odwrotne odwzorowanie adresów IP jest ważne jedynie dla serwerów, lub nie jest ważne w ogóle. Nie do końca: wiele serwerów ftp, news, irc, a nawet niektóre serwery http (WWW) _n_i_e zezwolą na połączenia z komputerów, których adresy nie są zarejestrowane w domenie odwrotnej. Dlatego faktem jest, że rejestracja w domenie odwrotnej jest _k_o_n_i_e_c_z_n_a. 66.. UUttrrzzyymmaanniiee ii kkoonnsseerrwwaaccjjaa UUttrrzzyymmyywwaanniiee ww pprraaccyy cciiąąggłłeejj.. Prócz pilnowania aby proces named byl zawsze katywny pozostaje jedynie pilnowanie, aby plik root.cache był zawsze aktualny. Najprostszą metodą jest skorzystanie z programu dig, wpierw należy go uruchomić bez żadnych argumentóww, otrzymamy plik root.cache uzywany przez nasz serwer. Następnie należy o to samo zapytać jeden z głównych serwerów DNS (root servers) wydając polecenie dig @rootserver. Zauważysz, że wynik tego polecenia bardzo przypomina plik root.cache z dokładnością do kilku liczb. Te liczby nie mogą uczynić nam żadnej szkody. Zapisz wynik polecenia do pliku (dig @e.root-servers.net >root.cache.new), a następnie zastąp nim stary plik root.cache. Pamiętaj, aby po zamianie pliku root.cache zrestartować proces named. Al Longyear przysłał mi poniższy skrypt, który można uruchamić i automatycznie uaktualniac plik root.cache. Zainstaluj go w crontabie i zpomnij. Niniejszy skrypt zakłada, że na twoim komputerze działa system poczty elektornicznej i istnieje alias pocztowy hostmaster. Przed uruchomieniem powinienes go dostosować so swoich ustawien. ______________________________________________________________________ #!/bin/sh # polish translation piotr.pogorzelski@ippt.gov.pl 1997 # Uaktualnianie informacji o głównych serwerach DNS. # Ten skrypt powinien byc uruchamiany automatycznie raz w miesiacu # przez program cron. # ( echo "To: hostmaster <hostmaster>" echo "From: system <root>" echo "Subject: Automatyczne uaktualnienie pliku named.cache" echo export PATH=/sbin:/usr/sbin:/bin:/usr/bin: cd /var/named dig @rs.internic.net . ns >named.cache.new echo "Plik named.cache zostal uwaktualniony i zawiera teraz następujące informacje:" echo cat named.boot.new chown root.root named.cache.new chmod 444 named.cache.new rm -f named.cache.old mv named.cache named.cache.old mv named.cache.new named.cache ndc restart echo echo "Program serwera DNS został uruchomiony na nowo, aby zapewnić korzystanie z nowych informacji." " echo "Stary plik został zachowany jako named.cache.old" /var/named/named.cache.old." ) 2>&1 | /usr/lib/sendmail -t exit 0 ______________________________________________________________________ Niektórzy z was mogłi zauważyć, że root.cahce jest również dostępny w Internicu przez ftp. Proszę _n_i_e korzystajcie z ftp aby uaktualnić plik root.cache, przedstawiona powyżej metoda jest bardziej przyjazna sieci. 77.. AAuuttoommaattyycczznnaa kkoonnffiigguurraaccjjaa ppoołłąącczzeeńń mmooddeemmoowwyycchh.. W tym rozdziale wyjaśnię w jaki sposób skonfigurowałem swój system, aby automatyzować wszsytkei zadania. Moj sposób rozwiązania problemu może zupełnie nie nadawać się do twojej konfiguracji, lecz zawsze możesz skorzystać z pomysłów. Poza tym ja korzystam z ppp, wiele osób używa slip lub cslip, tak więc niemal wszystkie szczegóły twojej konfiguracji mogą różnić się od mojej. Lecz program dip używany do obsługi połączeń slip powinien być w stanie zrealizować wiele pomysłów, z których korzystam. Zwykle, gdy nie jestem przyłączony do sieci, moj plik resolv.conf zawiera po prostu wiersz domain uio.no Taka konfiguracja zapewnia, że nie muszę czekać na gdy procedury biblioteki odpowiedzialne za rozwiązywanie nazw bedą staraly się nawiazac połączenia z zewnętrznymi serwerami DNS. Lecz gdy jestem połączony chce posiadać uruchomiony proces named, a plik resolv.conf powinien zawierac informacje niezbędne do poprawnej pracy DNSu. Rozwiązałem ten problem tworząc dwa wzorce pliku resolv.conf, resolv.conf.local i resolv.conf.connected. Ten ostatni wygląda jak opisywany wcześniej resolv.conf. Aby połączyć się z siecią uruchamiam skrypt o nazwie 'ppp-on': ______________________________________________________________________ #!/bin/sh echo calling... pppd ______________________________________________________________________ pakiet pppd posiada plik o nazwie options, w którym deklaruje się szczególy dotyczące sposobu nawiązywania połączeń. Tuż po zestawieniu połączenia PPP, pppd uruchamia skrypt o nazwie ip-up (jest to dokładnie opisane na stronie podręcznika programu pppd). Oto fragment powyższego skryptu: ______________________________________________________________________ #!/bin/sh interface="$1" device="$2" speed="$3" myip="$4" upip="$5" ... cp -v /etc/resolv.conf.connected /etc/resolv.conf ... /usr/sbin/named ______________________________________________________________________ To znaczy uruchom named. Kiedy PPP jest rozłączanie, pppd uruchamia skrypt ip-down: ______________________________________________________________________ #!/bin/sh cp /etc/resolv.conf.local /etc/resolv.conf read namedpid </var/run/named.pid kill $namedpid ______________________________________________________________________ W ten sposób named jest uruchamiany po nawiazaniu połączenia i zabijany po jego rozłączeniu. Niektóre programy, irc lub talk, przyjmują zbyt wiele założeń dlatego aby talk i udogodnienie dcc w irc działały poprawnie trzeba również poprawić plik hosts. Do swojego skryptu if-up dodałem polecenia: ______________________________________________________________________ cp /etc/hosts.ppp /etc/hosts echo $myip roke >>/etc/hosts ______________________________________________________________________ hosts.ppp zawiera po prostu ______________________________________________________________________ 127.0.0.1 localhost ______________________________________________________________________ ,a polecenie echo dodaje numer ip, ktory otrzymalem dla mojego komputera (roke). Zamiast tego powinieneś użyć nazwy komputera, którą sam używasz. Możesz ją poznaćwykonując polecenie hostname. Uruchamianie demona named gdy nie jest się przyłączonym do sieci prawdopodobnie nie jest najlepszym rozwiazaniem. Dlatego, że named będzie starał się wysłać zapytania, a ponieważ posiada dlugi czas oczekiwania, każdy program, który będzie próbował rozwiązać nazwę korzystając z dńśu będzie musiał równie długo oczekiwać na odpowiedź, która i tak nigdy nie nadejdzie. Jeśli przyłączasz się do Internetu przez łącze dzwonione, powinieneś uruchamiac named tuz po zestawieniu łącza i zabijać go w momencie rozłączenia. Dodatkowe wskazówki w tym temacie znajdziesz w rozdziale ``FAQ''. Niektórzy z pracujacych na wolnych łączach lubią korzystać z dyrektywy forwarders. Jeśli twój dostawca internetu posiada serwery DNS o adresach 1.2.3.4 i 1.2.3.5, możesz do pliku named.boot dodać wiersz ______________________________________________________________________ forwarders 1.2.3.4 1.2.3.5 ______________________________________________________________________ Plik named.cache powinien pozostać pusty. W ten sposób zmiejszysz ruch generowany przez twój komputer i prawdopodobnie wszystko zacznie działać szybciej. Jest to szczególnie ważne, gdy płacisz za przesłane bajty. Dodatkowa zaleta tego rozwiązania polega na tym, że pozwala pozbyć się obowiązku opieki i nadzorowania oprogramowania DNS, ponieważ pusty plik named.cache nie wymaga odświerzania. 88.. FFAAQQ W tym rozdziale przedstawię kilka z najczęściej zadawanych pytań dotyczących DNSu i tego dokumentu. Prócz pytań będą również odpowiedzi, przeczytaj dokładnie ten rozdział, zanim zdecydujesz się wysłać do mnie list. 1. Jak korzystać z DNS w sieci chronionej firewallem? Kilka wskazówek: `forwarders',`slave', zapoznaćsię z literaturą prezentowaną na końcu. 2. W jaki sposób zmusic DNS do rotacyjnego przekazywania adresu z puli adresów danej usługi, powiedzmy www.bardzo.zajety.serwer, w celu osiągnięcia równomiernego rozłożenia obciążenia na kilka serwerów. Nazwa www.bardzo.zajęty.serwer musi posiadać kilka rekordów AA. bind 4.9.3 i nowszy przekazuje kolejne adresy z puli. Takie rozwiązanie _n_i_e zadziała ze starszymi wersjami binda. 3. Chcę uruchomić DNS w zakmniętej sieci Intranetu. Co mam zrobić? Pomiń root.cahce, zajmij się jedynie plikami stref/domen. To znaczy, ze niu musisz już pilnować aby root.cache był aktualny. 4. W moim systemie nie ma programu ndc. Co mam zrobić? To znaczy, że w twoim komputerze jest zainstalowany stary, trochę przestarzały program bind. Jeśli bezopieczeństwo sieci jest dla ciebie ważne, natychmiast zainstaluj najnowszą wersję binda. Jeśli nie, możesz pracować dalej tak jak jest. Tylko zamiast uruchamiac ndc start muszisz wydać poleceni named. ndc reload to named.reload, a ndc restart to named.restart. Większość tych programów znajduje się w /usr/sbin. 5. Jak soknfigurować drugorzędny serwer domeny? Jeśłi serwer podstawowy posiada adres 127.0.0.1, to do pliku named.boot musisz dodac wiersz: ___________________________________________________________________ secondary linux.bogus 127.0.0.1 sz/linux.bogus ___________________________________________________________________ 6. Chciałbym aby named działał nawet wtedy, gdy nie ejstem przyłączony do internetu. Ian Clark przesłał mi następującą wiadomość, w której wyjaśnia jak to zrobić: Moj named działa na komputerze. ktory robi 'Masquerade'. Posiadam dwa pliki root.cache, jeden root.cache.real zawierający prawdziwe adresy serwerów głównych i drugi root.cache.fake zawierający ... -------------- ; root.cache.fake ; this file contains no information -------------- Po rozłączeniu kopiuje root.cache.fake na root.cache i restartuje named. Po podłączeniu, kopiuje root.cache.real na root.cache i restartuje named. Jest to robione automatycznie w skryptach, odpowiednio ip-down i ip-up. Przy pierwszym zapytaniu w trybie off-line, serwer nie posiada wszystkich niezbędnych informacji i raportuje t ow syslogu, ale jakoś mogę z tym żyć: Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN U mnie ten schemat działa poprwnie.Mogę korzystać z nameserwera na komputerach lokalnych bez dodatkowych czasów oczekiwania na połączenie z nieosiągalnymi serwerami zewnętrzymi w trybie off-line i poprawnie działającym DNSem w trybie on-line. 7. Gdzie serwer podręczny przechowuje zgromadzone w czasie pracy informacje? Czy jest jakaś metoda sterowania rozmiarem tych zasobów? Wszelkie pośrednie informacje są gromadzone w pamięci, nigdy _n_i_e są zachowywane na dysku. Za każdym razem, kedy named konćzy prace, inforamacje przechowywane w pamięci podręcznej są gubione. Administrator nie ma żadnej kontroli nad pamięcią podręczną, ani nad jej rozmiarem (najnowsze wersje pozwalaja sterowac rozmiarem pamieci cache pp). Możesz to naprawic "modyfikując" named. Nie jest to jednak zalecane. 8. Czy named między kolejnymi uruchomieniami zachowuje pamięc podręczną na dysku? Czy mogę go do tego zmusic? Nie, named _n_i_e zachowuje pamięci podręcznej na dysk w momencie zakończenia pracy. To znaczy, że informacje w pamięc podręczna muszą być odtwarzne od początku po każdym zrestartowaniu programu. Możesz to naprawic "modyfikując" named. Nie jest to jednak zalecane. 99.. JJaakk zzoossttaaćć ppeełłnnoo eettaattoowwyymm aaddmmiinniissttrraattoorreemm DDNNSSuu.. DDookkuummnneettaaccjjaa ii nnaarrzzęęddzziiaa.. Istnieje prwdziwa dokumentacja. Drukowana i OnLine. Aby stać się prawdziwym administratorem DNS należy przeczytać kilkanaście pozycji. Jeśli ktoś preferuje papier polecam _D_N_S _a_n_d _B_I_N_D by C. Liu and P. Albitz from O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X. Czytałem, jest doskonała. Rozdział poświęcony DNSowi można znaleźć w _T_C_P_/_I_P _N_e_t_w_o_r_k _A_d_m_i_n_i_s_t_r_a_t_i_o_n, by Craig Hunt from O'Reilly..., ISBN 0-937175-82-X. Dobry administrator DNS (lub jakikolwiek) musi również przeczytać _Z_e_n _a_n_d _t_h_e _A_r_t _o_f _M_o_t_o_r_c_y_c_l_e _M_a_i_n_t_e_n_a_n_c_e by Robert M. Prisig :-) Dostępne jako ISBN 0688052304 oraz inne pozycje. ONLine dostępne są na przykład takie pozycje: <http://www.dns.net/dnsrd/>, <http://www.vix.com/isc/bind.html>; FAQ, podręcznik (BOG; Bind Operations Guide) jak również dokumenty opisujące protokoły i chwyty dotyczące DNSu. Większości z tego nie przeczytałem, dlatego nie jestem pełnoetatowym administratorem DNS. Z drugiej strony Arnt Gulbrandsen przeczytał BOG i jest nim zachwycony. Grupa nowinkowa comp.protocols.tcp-ip.domains jest poświęcona DNSowi. I na koniec wiele dokumentów RFC dotyczy DNSu. Prawdopodobnie najważniejsze z nich to: RRFFCC 22005522 A. Gulbrandsen, P. Vixie, _A _D_N_S _R_R _f_o_r _s_p_e_c_i_f_y_i_n_g _t_h_e _l_o_c_a_t_i_o_n _o_f _s_e_r_v_i_c_e_s _(_D_N_S _S_R_V_), October 1996 RRFFCC 11991188 Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear, _A_d_d_r_e_s_s _A_l_l_o_c_a_t_i_o_n _f_o_r _P_r_i_v_a_t_e _I_n_t_e_r_n_e_t_s, 02/29/1996. RRFFCC 11991122 D. Barr, _C_o_m_m_o_n _D_N_S _O_p_e_r_a_t_i_o_n_a_l _a_n_d _C_o_n_f_i_g_u_r_a_t_i_o_n _E_r_r_o_r_s, 02/28/1996. RRFFCC 11771133 A. Romao, _T_o_o_l_s _f_o_r _D_N_S _d_e_b_u_g_g_i_n_g, 11/03/1994. RRFFCC 11771122 C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, _D_N_S _E_n_c_o_d_i_n_g _o_f _G_e_o_g_r_a_p_h_i_c_a_l _L_o_c_a_t_i_o_n, 11/01/1994. RRFFCC 11118833 R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, _N_e_w _D_N_S _R_R _D_e_f_i_n_i_t_i_o_n_s, 10/08/1990. RRFFCC 11003355 P. Mockapetris, _D_o_m_a_i_n _n_a_m_e_s _- _i_m_p_l_e_m_e_n_t_a_t_i_o_n _a_n_d _s_p_e_c_i_f_i_c_a_t_i_o_n, 11/01/1987. RRFFCC 11003344 P. Mockapetris, _D_o_m_a_i_n _n_a_m_e_s _- _c_o_n_c_e_p_t_s _a_n_d _f_a_c_i_l_i_t_i_e_s, 11/01/1987. RRFFCC 11003333 M. Lottor, _D_o_m_a_i_n _a_d_m_i_n_i_s_t_r_a_t_o_r_s _o_p_e_r_a_t_i_o_n_s _g_u_i_d_e, 11/01/1987. RRFFCC 11003322 M. Stahl, _D_o_m_a_i_n _a_d_m_i_n_i_s_t_r_a_t_o_r_s _g_u_i_d_e, 11/01/1987. RRFFCC 997744 C. Partridge, _M_a_i_l _r_o_u_t_i_n_g _a_n_d _t_h_e _d_o_m_a_i_n _s_y_s_t_e_m, 01/01/1986. 1100.. OOdd ttłłuummaacczzaa Zdaje sobie sprawę, że niniejsze tłumaczenie zawiera mnóstwo błędów. Niestety nie jestem w stanie dokładnie sprawdzić całego dokumentu i świadomie pozostawiam tę pracę czytelnikowi. Będę wdzięczny za wszelkie uwagi na temat tego dokumentu, wytykanie błędów, literówek, składni i wszelkie inne, które mogą przyczynić się do jego ulepszenia. Wszelkie tego typu uwagi proszę przesyłać na adres piotr.pogorzelski@ippt.gov.pl Inne przetłumaczone dokumenty można znaleźć na stronie http://www.jtz.org.pl/. Zapraszamy!. piotr.pogorzelski@ippt.gov.pl. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Dos2Linux-HOWTO.pl.txt�������������������������������������������������0100664�0001750�0001750�00000157564�06717116340�020320� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Szybkie przejście od DOS-a do Linux-a. Autor: Guido Gonzato, Guido@ibogfs.cineca.it v1.0 11 Grudnia 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii,, BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.31, 26 Lipca 1997 Dokument ten jest dedykowany tym wszystkim (wkrótce byłym) użytkown­ ikom DOS-a, którzy zdecydowali się przejść na Linux-a, system typu Unix pierwotnie przeznaczony na komputery klasy PC. Dokument ten został napisany w standardzie ISO-8859-2. Oryginalna wersja znajduje się pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/docs/HOWTO. Nowsza wersja zawiera uaktualnione wskazania na katalog z jądrami na ftp.icm.edu.pl. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie. 1.1. Czy Linux jest dla ciebie odpowiedni? 1.2. Tak jest. Powiedz mi jeszcze. 1.3. Dla niecierpliwych. 2. Pliki i programy. 2.1. Pliki: pojęcie ogólne. 2.2. Dołączenia symboliczne. 2.3. Atrybuty plików w Linux-ie. 2.4. Pliki: Porównanie podstawowych poleceń DOS-owych z Linux- owymi. 2.5. Wykonywanie programów: wielozadaniowość i sesje. 2.6. Uruchamianie programów na komputerach odległych. 3. Używanie katalogów. 3.1. Katalogi: pojęcie ogólne. 3.2. Prawa dostępu katalogów. 3.3. Katalogi: Porównanie podstawowych poleceń DOS-owych z Linux- owymi. 4. Dyskietki, dyski twarde i takie inne. 4.1. Urządzenia. 4.2. Archiwizacja. 5. Konfigurowanie systemu. 5.1. Pliki startowe systemu. 5.2. Pliki startowe programów. 6. Troszkę programowania. 6.1. Pisanie skryptów: takie .BAT-y tylko lepsze. 7. C dla ciebie. 8. Pozostały 1%. 8.1. "Odrootowić się". 8.2. Tworzenie wirtualnej pamięci. 8.3. Używanie tar-a i gzip-a. 8.4. Instalacja aplikacji. 8.5. Triki, bez których nie możesz się obejść. 8.6. Pożyteczne programy. 8.7. Pospolite rozszerzenia i programy z nimi związane. 9. To tyle. 9.1. Prawa autorskie. 9.2. Disclaimer. 9.3. Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. 11..11.. CCzzyy LLiinnuuxx jjeesstt ddllaa cciieebbiiee ooddppoowwiieeddnnii?? Więc chcesz przejść z DOS-a na Linux-a ? Dobry pomysł, ale ostrzegam: może ci to wyjść bokiem. Według mnie nie ma takiego czegoś jak "najlepszy komputer" czy "najlepszy system operacyjny"; wszystko zależy od tego do czego dana konfiguracja ma służyć. Dlatego też nie wierzę, że Linux jest najlepszym wyjściem dla każdego - nawet jeśli jest on technicznie lepszy od wielu komercyjnych systemów operacyjnych. Naprawdę nie pożałujesz Linux-a jeśli to czego szukałeś, to software do programowania, Internet, TeX... w ogóle techniczny software, ale jeśli w większości potrzebujesz software'u komercyjnego, jeśli nie czujesz się na siłach uczyć setek poleceń i wklepywać je z klawiatury, to szukaj gdzie indziej. Linux nie jest (jak na razie) tak łatwy w użytkowaniu i konfigurowaniu jak Windows czy Mac, tak więc przygotuj się do grzebania w plikach konfiguracyjnych. Pomimo tych przestróg, powiem ci, że jestem 100% przekonany, że jeśli należysz do tej dobrej grupy użytkowników, to odnajdziesz w Linux-ie swoją komputerową Nirvanę. Zakładam, że ˇ - Znasz podstawowe polecenia i założenia DOS-a, ˇ - Linux, ewentualnie z XWindows-ami, jest zainstalowany poprawnie na twoim komputerze, ˇ Twoją powłoką (odpowiednik COMMAND.COM) jest bash ˇ Rozumiesz, że ten dokument to dopiero niekompletny początek. Na temat większej ilości szczegółów przeczytaj podręcznik Matta Welsha "Linux Installation and Getting Started" i/lub Larry'ego Greenfielda "Linux User Guide". Można je znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/LDP/. To HOWTO zastępuje poprzednie mini-HOWTO o tym samym tytule. 11..22.. TTaakk jjeesstt.. PPoowwiieeddzz mmii jjeesszzcczzee.. Zainstalowałeś Linux-a na PC-cie. Założyłeś sobie konto, wykonując instrukcje podczas instalacji (jeśli nie, to wpisz adduser _t_e_r_a_z _!_!_!) i Linux działa. Właśnie wpisałeś swój login (indentyfikator) i hasło (password) i patrzysz na ekran myśląc: "No... i co teraz?" Teraz - nie rozpaczaj. Jesteś prawie gotów robić to samo co w DOS-ie i wiele więcej. Jeślibyś działał na DOS-ie a nie na Linux-ie zrobiłbyś jedną z tych rzeczy: ˇ 1. wykonywanie programów i tworzenie, kopiowanie, przeglądanie, kasowanie i zmienianie nazw plików; ˇ 2. cd, md, rd, i dir; ˇ 3. formatowanie dyskietek i kopiowanie na nie plików; ˇ 4. grzebanie w AUTOEXEC.BAT albo CONFIG.SYS; ˇ 5. pisanie własnych plików .BAT albo programów; ˇ 6. no i pozostały 1%. Ucieszysz się bardzo jeśli dowiesz się, że to samo można robić pod Linux-em w podobny sposób jak pod DOS-em. Pod DOS-em przciętny użytkownik używa tylko kilku poleceń z ponad 100 dostępnych; to samo można powiedzieć o Linux-ie. Jeśli przypadkowo nie znasz poleceń do wykonywania tego co jest w liście powyżej, to odpuść sobie - nie czytaj. Nie będę wyjaśniał co to katalog czy zmienna PATH. Kilka notek zanim pójdziemy dalej: ˇ 1. W przeciwieństwie do DOS-a Linux ma wbudowane mechanizmy zabezpieczające. Kiedy włączysz PC-ta i odpalisz Linux-a musisz się "zalogować", to znaczy zrobić się widocznym dla systemu. Pliki i katalogi mają odpowiednie prawa dostępu i niektóre nie są dostępne dla zwykłego użytkownika. (Zobacz sekcję ``Prawa dostępu''). Jest tak ponieważ Unix to system wieloużytkownikowy; poza tym zwykły użytkownik nie jest właścicielem systemu i nie może nim zarządzać czy sterować jego działaniem; tylko użytkownik o identyfikatorze "root" (ang. korzeń) ma władzę w tym systemie. (Ten facet jest administratorem systemu. Na swoim PC-cie ty będziesz root-em). Pliki i katalogi mają odpowiednie prawa dostępu i niektóre z nich nie są dostępne dla zwykłego użytkownika. A DOS pozwoliłby ci wyczyścić cały dysk twardy. ˇ 2. Kiedy już skończysz pracować, NNIIEE WWOOLLNNOO CCII WWYYŁŁĄĄCCZZYYĆĆ PPCC--TTAA OODD TTAAKK PPOO PPRROOSSTTUU Musisz w odpowiedni sposób "zamknąć system" (naciśnij CTRL-ALT-DEL, poczekaj aż system zrobi wszystko co powinien, aby bezpiecznie wyłączyć komputer i napisze, że jest w porządku i wtedy możesz wyłączyć komputer). Jeśli pracujesz pod XWindows to wciśnij CTRL-ALT-BACKSPACE, albo wybierz wyjście z Menu i dalej to samo co wyżej. Od tłumacza: Możesz też napisać shutdown -h now i czekać aż pojawi się napis _S_y_s_t_e_m _h_a_l_t_e_d_. ˇ 3. Usilnie zachęcam do eksperymentowania i próbowania samemu: Na pewno ci nie zaszkodzi. Pomoc znajdziesz w poleceniach takich jak: "man <polecenie>" - podręcznik systemowy (nie zadawaj pytań bez przeczytania; wyjście z niego to klawisz 'q'), "apropos <polecenie>" - to wyświetla wszystkie polecenia związane z danym słowem, "whatis <polecenie>" - podobnie do apropos. ˇ 4. Większość mocy Unix-ów pochodzi z prostej koncepcji strumieni i potoków, bardziej rozwiniętych niż pod DOS-em. Proste polecenia mogą być połączone w bardziej złożony potok i wykonywać dość skomplikowane zadania. (Bardzo dużo ludzi używa tych zalet; tobie też radzę się tego pouczyć. Proste przykłady można znaleźć w plikach Makefile przy ściganiu i instalacji nowych aplikacji) ˇ 5. Konwencja oznaczeń: a. <...> oznacza coś co musi być podane, natomiast [...] oznacza coś co może być podane, ale nie musi. Np.: tar -tf <plik.tar> [plik_log] plik.tar musi być podany, a przekierowanie wyjścia do pliku plik_log - nie. b. od teraz skrót "PPS" oznacza "Przeczytaj Podręcznik Systemowy man, aby uzyskać więcej informacji. (Od tłumacza: oto trzy najczęściej używane skróty wśród "Linux-owców": RTFM - Read The Fascinating (Fucking) Manual (Przeczytaj Fascynujący [albo jak kto woli Pieprzony] Manual [man]) FAQ - Frequently Asked Questions - dokukment z Często Zadawanymi Pytaniami HOWTO - dokument taki jak ten - Jak To Zrobić) Jesteś teraz gotowy, aby uczyć się Linux-a. 11..33.. DDllaa nniieecciieerrpplliiwwyycchh.. Nie możesz się już doczekać ? No to masz tu skrót poleceń Linux-a: DOS Linux Uwagi ------------------------------------------------------------------------------ BACKUP tar -Mcvf device dir/ zupełnie coś innego CD dirname\ cd dirname/ prawie ta sama składnia COPY file1 file2 cp file1 file2 ------ " ------ DEL file rm file UWAGA: nie ma UNDELETE DELTREE dirname rm -R dirname/ ------ " ------ DIR ls nie zupełnie ta sama składnia EDIT file vi file raczej ci się nie spodoba emacs file ten jest lepszy jstar file podobny do EDIT-a FORMAT fdformat, mount, umount raczej inna składnia HELP command man command ta sama filozofia MD dirname mkdir dirname/ prawie ta sama składnia MOVE file1 file2 mv file1 file2 ------ " ------ NUL /dev/null ------ " ------ PRINT file lpr file ------ " ------ PRN /dev/lp0, /dev/lp1 ------ " ------ RD dirname rmdir dirname/ ------ " ------ REN file1 file2 mv file1 file2 nie dotyczy wielu plików RESTORE tar -Mxpvf device inna składnia TYPE file less file o wiele lepszy WIN startx dwa różne bieguny !!! 22.. PPlliikkii ii pprrooggrraammyy.. 22..11.. PPlliikkii:: ppoojjęęcciiee ooggóóllnnee.. Linux posiada system plików - co oznacza "struktura katalogów i plików" - bardzo podobny do DOS-owego. Pliki posiadają nazwy, które podlegają specjalnym zasadom, są zapisywane w katalogach, niektóre są wykonywalne, a wśród tych większość ma różne opcje. Możesz też używać masek ('*', '?'), przekierowań strumieni oraz potoków. Jest tylko trochę mniejszych różnic. ˇ - Pierwsza różnica: W DOS-ie nazwy plików maja postać 8.3 - czyli 8 znaków na nazwę i 3 znaki na rozszerzenie. W Linux-ie jest inaczej (lepiej). Jeśli twój Linux używa systemu plików "ext2" (nie ważne w tej chwili co to znaczy) lub umsdos, to możesz używać dłuższych nazwa plików. Np. To_jest-bardzo.długa.nazwa.pliku. (nazwa może mieć do 255 znaków) (Od tłumacza: W tej chwili standardowo podczas instalacji Linux-a umieszczany jest na dysku system plików "ext2". W rzeczywistości Linux nie zna takiego czegoś jak rozszerzenie; w Linux-ie jest po prostu nazwa pliku nie ważne jakie znaki tam się znajdują - a mogą to być nawet znaki kontrolne, chociaż nie radzę ich używać, bo potem mogą być problemy z usunięciem takiego pliku) Zauważ, że użyłem tu małych jak i dużych liter. Otóż... ˇ - Druga różnica: Duże i małe litery są rozróżnianie przez Linux-a. To znaczy plik i Plik i PliK to trzy różne pliki. To samo odnosi się do poleceń: jeśli wykonasz polecenie ls (odpowiednik DOS-owego DIR) otrzymasz listę plików w bieżącym katalogu, ale jeśli napiszesz LS i wciśniesz <<ENTER>> to otrzymasz błąd mówiący, że nie ma takiego polecenia. ˇ - Trzecia różnica: jeśli zaczniesz nazwę pliku od kropki, plik ten będzie plikiem ukrytym. Na przykład: .Jestem.Plikiem.Ukrytym nie pokaże się po wydaniu polecenia ls. ˇ - Czwarta różnica: Nie ma obowiązkowych rozszerzeń .COM czy .EXE dla plików wykonywalnych (programów) albo .BAT dla plików wsadowych. Pliki wykonywalne mają ustawione odpowiednie prawa dostępu i są wyświetlane: - z gwiazdką (*) na końcu jeśli wydasz polecenie ls -F - na zielono jeśli masz kolorowy monitor i wydasz polecenie ls --color Pod DOS-em pliki z rozszerzeniem .BAK to kopie zapasowe; Pod Linux-em takie pliki kończą sie na ~ ˇ - Piąta różnica: opcje do programów DOS-owych podawane są ze znakiem / na początku np. dir /s; natomiast programy Linux-owe za opcję rozumieją ciąg znaków z myślnikiem - na początku, np. ls -R. Możesz teraz skoczyć do sekcji ``Tłumaczenie poleceń z DOS-a na Linux-a'', ale na twoim miejscu czytałbym dalej. 22..22.. DDoołłąącczzeenniiaa ssyymmbboolliicczznnee.. Systemy typu Unix mają taki typ pliku, który nie istnieje pod DOS-em - symboliczne dołączenie. Można to uważać za wskaźnik na plik lub katalog i może być używany zamiast tego pliku czy katalogu, na który wskazuje. Coś podobnego do skrótów w Win'95. Przykładami dołączeń symbolicznych mogą być: /usr/X11, który wskazuje na /usr/X11R6; /dev/modem, który wskazuje na /dev/cua0 lub /dev/cua1. Aby utworzyć symboliczne dołączenie napisz: ln -s <plik_lub_katalog> <nazwa_dołączenia> Na przykład: $ ln -s /usr/doc/g77/DOC g77podrecznik.txt Teraz możesz wykonywać operacje na g77podrecznik.txt zamiast na /usr/doc/g77/DOC. 22..33.. AAttrryybbuuttyy pplliikkóóww ww LLiinnuuxx--iiee.. Każdy plik i katalog w Linux-ie ma swoje prawa dostępu, zwane przez użytkowników DOS-a atrybutami. Postaram się przybliżyć to pojęcie i wyjaśnić co oznacza magiczne 755. Jak wydasz polecenie ls -l to wyświetli się coś na kształt: -rw-r--r-- 1 root root 32251 Feb 15 14:32 DOS2Linux -rw-r--r-- 1 root root 38338 Feb 20 13:15 DOS2Linux.pl.sgml -rw-r--r-- 1 root root 18144 Feb 19 18:34 Locales-HOWTO.sgml -rw-r--r-- 1 root root 1398 Feb 19 18:30 howto.dat -rw-r--r-- 1 root root 317 Feb 14 14:24 next.gif -rw-r--r-- 1 root root 37 Feb 19 20:03 plik_log -rw-r--r-- 1 root root 317 Feb 14 14:24 prev.gif -rw-r--r-- 1 root root 610 Feb 19 12:01 slowniczek -rw-r--r-- 1 root root 5655 Feb 16 21:54 slowniczek.uwagi -rw-r--r-- 1 root root 2601 Feb 18 22:29 tlumaczenie.howto -rw-r--r-- 1 root root 316 Feb 14 14:24 toc.gif -rw-r--r-- 1 root root 723 Feb 20 12:40 todo -rw-r--r-- 1 root root 1307 Feb 19 19:36 zasady Pierwsza kolumna z lewej to właśnie wspomniane prawa dostępu, 3. i 4. to właściciel i grupa do jakiej dany plik należy. Ogólnie wygląda to tak: - rwx rwx rwx r - read (możliwość czytania) w - write (możliwość zapisu) x - execute (możliwość wykonywania, bądź dla katalogów możliwość przeszukiwania i ustawienia go jako bieżący cd) Oczywiście w rzeczywostości nie ma tam spacji, ale je robię dla czytelności. W miejscu pierwszej kreski może znajdować się jedna z liter: d, l, b, c - są to tylko najpopularniejsze. I tak oznaczają one odpowiednio: katalog, symboliczne dołączenie, urządzenie blokowe, urządzenie znakowe. Dalej: od lewej: pierwsza trójka liter to prawa dla właściciela pliku, druga trójka - dla grupy do jakiej należy plik, trzecia - dla pozostałych użytkowników. W pierwszej i drugiej trójce mogą się pojawić litery s lub S zamiast x - oznacza to, żeby wykonać plik z takimi prawami jakie ma właściciel pliku albo grupa, a nie ten kto go uruchamia. Na przykład plik /usr/bin/passwd ma ustawione pierwsze x na s, żeby mógł dokonać zapisu do pliku /etc/passwd, do którego może pisać tylko root, a nie zwykły użytkownik, który uruchamia ten program. Polecenie chmod pozwala zmieniać te prawa dostępu - jeśli jesteś właścicielem pliku. Podstawmy sobie następujące wartośći: - rwx rwx rwx 421 421 421 4 2 1 - te wartości są dla s, S i t (na temat 't' zobacz "man chmod") Żeby ustawić jakieś prawa dostępu należy dodać do siebie te liczby, które stoją przy prawach, które chcemy ustawić, ale dla każdej trójki osobno. Trochę przykładów dla lepszego zrozumienia: - r-x --- --- nazwa_pliku 4 1 To będzie 4+0+1, 0+0+0, 0+0+0 czyli 500. chmod 500 nazwa_pliku zmieni prawa dostępu na odczyt i wykonywanie dla właściciela i zabierze wszystkie prawa dla grupy i innych użytkowników. - rwx r-x r-x nazwa_pliku 421 4-1 4-1 To będzie 4+2+1, 4+0+1, 4+0+1 czyli 755 - to jest chyba najczęstsze ustawienie. - rws r-x r-x 421 4 1 4 1 4 To będzie 4+0+0 - najważniejsze są wartości s, S, t chyba, że ich nie ma - 4+2+1 4+0+1, 4+0+1 czyli 4755 Teraz łatwiejszy sposób na zmianę praw dostępu. Polecenie chmod może też przyjmować takie parametry: chmod ugoa+-=rwx <plik> I tak: u - user (właściciel pliku), g - group (grupa do jakiej plik należy), o - others (pozostała część użytkowników). + ustawia podane prawa, a - zabiera. = czyni podane prawa jedynymi prawami jakie posiada dany plik. Przykłady: chmod u+x <plik> - nadaje właścicielowi pliku prawo do wykonywania go. chmod ug+rx <plik> - nadaje właścicielowi i grupie, do której należy plik prawa do odczytu i wykonywania To powinno wyjaśnić wiele spraw związanych z prawami dostępu. Więcej szczegółów znajdziesz w podręczniku systemowym "man". 22..44.. PPlliikkii:: PPoorróówwnnaanniiee ppooddssttaawwoowwyycchh ppoolleecceeńń DDOOSS--oowwyycchh zz LLiinnuuxx--oowwyymmii.. DOS Linux COPY cp DEL rm REN mv TYPE cat MORE more, less - można też używać jako polecenie, nie tylko jako filtr (ten drugi jest lepszy, ma więcej możliwości) Przekierowywanie strumieni i potoki wygladają tak samo. Maski: '*', '?' oraz [znaki] [znaki] - oznacza pokolei każdy, ale zawsze jeden, z wymienionych w środku znaków, np: ls *[abc] - wyświetl nazwy plików kończących się na 'a' lub 'b' lub 'c' ls *[a-g] - wyświetli nazwy plików kończących się na jedną z liter od a do g nul /dev/null prn,lst /dev/lp0, lpr PRZYKŁADY DOS Linux C:\GUIDO>copy joe.txt joe.doc $ cp joe.txt joe.doc C:\GUIDO>copy *.* total $ cat * > total C:\GUIDO>copy fractals.doc prn $ cat fractals.doc | lpr C:\GUIDO>del temp $ rm temp C:\GUIDO>del *.bak $ rm *~ C:\GUIDO>ren paper.txt paper.asc $ mv paper.txt paper.asc C:\GUIDO>type letter.txt $ more letter.txt C:\GUIDO>type letter.txt $ less letter.txt C:\GUIDO>type letter.txt > nul $ cat letter.txt >/dev/null n/d $ more *.txt *.asc n/d $ cat section*.txt n/d - niedostępne Uwagi: 1) * jest sprytniejszą maską pod Linux-em: - * oznacza jakąkolwiek nazwę nie zaczynającą się na . - *.* oznacza nazwę, która ma w środku kropkę - p*r oznacza nazwę zaczynająca się na p a kończącą na r - *c* oznacza nazwę zawierającą w środku c 2) Podczas używania less możesz poruszać się po pliku - w przód - spacja - w tył - b lub strzałkami - wszystkie dostępne funkcje otrzymasz naciskając h 3) W Linux-ie NNIIEE MMAA UUNNDDEELLEETTEE, więc pomyśl dwa razy zanim skasujesz. 4) W Linux-ie znaczek > przekierowuje standardowe wyjście, ale nie standardowe wyjście błędów; aby błędy także znalazły się w pliku musisz napisać np. cat plik >plik_log 2>&1 - ale to działa tylko w powłoce bash lub sh. Od tłumacza: aby dowiedzieć się jaką powłokę używasz napisz echo $shell 5) Nie ma polecenia DOS-owego RENAME; tzn. ren *.xxx *.yyy nie zadziała 6) Używaj cp -i oraz mv -i, aby zostać ostrzeżonym, kiedy plik ma zostać zmazany. 22..55.. WWyykkoonnyywwaanniiee pprrooggrraammóóww:: wwiieelloozzaaddaanniioowwoośśćć ii sseessjjee.. Aby uruchomić program podaj jego nazwę i wciśnij <<ENTER>>. Jeśli katalog (sekcja ``Katalogi''), w którym znajduje się dany program, jest w zmiennej PATH (sekcja ``Inicjacja systemu''), program się uruchomi. Wyjątek: W przeciwieństwie do DOS-a, pod Linux-em jeśli program znajduje się w katalogu bieżącym nie uruchomi się, o ile katalog bieżący nie jest w zmiennej PATH. Rozwiązanie: wpisz ./<prog>. Oto jak wygląda typowy wiersz poleceń: $ polecenie -o1 -o2 ... -on par1 par2 ... parn <wejście >wyjście gdzie o1,2,...,n to opcje polecenia, a par1,2,...,n to parametry. Możliwe jest uruchomienie kilku poleceń w jednym wierszu poleceń: $ polecenie1; polecenie2; ...; polecenien To by było wszystko na temat uruchamiania programów, gdyby nie jedna z najważniejszych zalet Unix-ów a tym samym i Linux-a czyli wielozadaniowość. Słowo to oznacza, że systemy operacyjne typu Unix mogą wykonywać kilka programów (od teraz procesów) na raz. Można uruchomić procesy w tle oraz w pierwszym planie. Można także działać na kilku sesjach na raz - to tak jakbyś pracował na kilku komputerach na raz ! - Na konsoli (czyli na komputerze, na którym jest zainstalowany Linux) dostępnych jest standardowo 6-7 wirtualnych ekranów (zwanych wirtualnymi konsolami); aby się pomiędzy nimi przełączać użyj klawiszy ALT+F1..6-7, albo ALT+strzałka - Aby uruchomić nową sesję bez opuszczania bieżącej napisz su - <identyfikator> Jest to pożyteczne kiedy na przykład jesteś zalogowany jako zwykły użytkownik, a chcesz zamontować dysk (sekcja ``Dyskietki'') - tylko root może to zrobić - Aby zakończyć sesję wpisz exit. Jeśli są jakieś zawieszone zadania (zobacz dalej) zostaniesz ostrzeżony - Aby odpalić proces w pierwszym planie napisz: $ program [-opcje] [parametry] [<wejście] [>wyjście] - Aby odpalić proces w tle napisz: $ program [-opcje] [parametry] [<wejście] [>wyjście] & - Aby zobaczyć ile jest procesów napisz: ps Polecenie to pokaże listę procesów aktualnie działających. Każdy z nich ma swój niepowtarzalny numer PID (Process IDentifier) - Aby zakończyć/zabić proces napisz $ kill <PID> Możesz zabić proces jeśli np. nie wiesz jak go normalnie zakończyć. Czasami proces się stawia i nie chce dać się zabić (no ja też bym się stawiał ;) ), ale i tak jest na niego sposób: $ kill -9 <PID> W dodatku powłoka (odpowiednik COMMAND.COM-u; większość używa bash-a) pozwala na zatrzymanie lub czasowe zawieszenie procesu, wysłanie procesu w tło, powrót procesu do pierwszego planu. W tym kontekście procesy nazywają się "jobs" (czyli zadania). - Aby zobaczyć ile jest zadań napisz $ jobs zadania są identyfikowane poprzez numer jaki nada im powłoka a nie poprzez PID - Aby zatrzymać proces uruchomiony w pierwszym planie wciśnij CTRL+C lub CTRL+D - nie zawsze zadziała - Aby zawiesić proces uruchomiony w pierwszym planie wciśnij CTRL+Z - Aby wysłać zawieszony proces w tło napisz $ bg <nr_zadania> - Aby przywrócić proces do pierwszego planu napisz $ fg <nr_zadania> - I jeszcze raz, aby zabić zadanie napisz: $ kill %<nr_zadania> Używając tych poleceń możesz jednocześnie formatować dysk, archiwizować jakieś pliki, kompresować jakieś pliki, kompilować program, albo kilka, rozpakowywać jakieś archiwum i jeszcze na dodatek mieć wiersz poleceń do swojej dyspozycji HA !! Spróbuj zrobić to pod DOS-em albo nawet Windowsami, a zobaczysz różnicę między Unixami a domowymi systemami operacyjnymi. 22..66.. UUrruucchhaammiiaanniiee pprrooggrraammóóww nnaa kkoommppuutteerraacchh ooddlleeggłłyycchh.. Aby uruchomić jakiś program na odległym komputerze, którego adres to daleko.wielki.pl, napisz: telnet daleko.wielki.pl Po zalogowaniu się uruchom swoje ulubione programy. Oczywiście nie muszę mówić, że trzeba mieć konto na odległym komputerze. Jeśli masz X11 możesz nawet uruchamiać aplikacje pod XWindows na tamtym komputerze i wyswietlać je na swoim ekranie. Niech daleko.wielki.pl będzie odłegłym komputerem obsługującym XWindows, a tutaj.linux.pl twoim komputerem. Aby uruchomić z tutaj.linux.pl program pod XWindows tak, aby uruchomił się on na daleko.wielki.pl ˇ uruchom X11, uruchom xterm lub jakiś inny emulator terminala i napisz: xhost +wielki.daleko.pl telnet wielki.daleko.pl ˇ po zalogowaniu się napisz: DISPLAY=tutaj.linux.pl:0.0 <nazwa_programu> & zamiast DISPLAY... możesz napisać setenv DISPLAY tutaj.linux.pl:0.0. To zależy od powłoki na komputerze odległym. Et voila! Teraz program będzie działał na komputerze odległym, a wyniki jego działania będą wyświetlane na twoim ekranie. Nie próbuj tego robić przez łącze PPP. 33.. UUżżyywwaanniiee kkaattaallooggóóww.. 33..11.. KKaattaallooggii:: ppoojjęęcciiee ooggóóllnnee.. Poznaliśmy już różnicę między plikami w DOS-ie i Linux-ie. Co do katalogów, to w DOS-ie katalogiem głównym jest natomiast w Linux-ie jest to /. Tak samo kolejne podkatalogi oznacza się aaa/sss/ddd. Przykłady: DOS: PROGRAMSRCESLO.CPP Linux: /home/guido/papers/geology/mid_eocene.tex Jak zwykle '..' to katalog nadrzędny, a '.' to katalog bieżący. Pamiętaj, że Linux nie pozwoli ci na wykonywanie poleceń cd, rd czy md, gdzie ci się podoba. Każdy użytkownik zaczyna pracę w systemie w swoim domowym katalogu nadanym mu przez administratora; np. u mnie jest to: /home/guido. 33..22.. PPrraawwaa ddoossttęęppuu kkaattaallooggóóww.. Katalogi także mają swoje prawa dostępu. To czego dowiedziałeś się z sekcji ``Prawa dostępu'' odnosi się również do katalogów. Atrybut 'x' oznacza, że możesz dany katalog uczynić katalogiem bieżącym (cd), w - możesz skasować z niego pliki (zależnie od ich praw dostępu) albo sam katalog. Na przykład, aby zabronić innym użytkownikom dostępu do swojego katalogu domowego /home/guido/ napisz: chmod o-rwx /home/guido 33..33.. KKaattaallooggii:: PPoorróówwnnaanniiee ppooddssttaawwoowwyycchh ppoolleecceeńń DDOOSS--oowwyycchh zz LLiinnuuxx-- oowwyymmii.. DOS Linux DIR ls, find, du CD cd, pwd MD mkdir RD rmdir PRZYKŁADY C:\GUIDO>dir $ ls C:\GUIDO>dir file.txt $ ls file.txt C:\GUIDO>dir *.h *.c $ ls *.h *.c C:\GUIDO>dir/p $ ls | more C:\GUIDO>dir \*.tmp /s $ find / -name "*.tmp" C:\GUIDO>cd $ pwd n/d - patrz uwaga $ cd n/d - patrz uwaga $ cd ~ n/d - patrz uwaga $ cd ~/temp C:\GUIDO>cd \other $ cd /other C:\GUIDO>cd ..\temp\trash $ cd ../temp/trash C:\GUIDO>md newprogs $ mkdir newprogs C:\GUIDO>md \progs\turbo $ mkdir /progs/turbo C:\GUIDO>rd newprogs $ rmdir newprogs C:\GUIDO>rd \progs\turbo $ rmdir /progs/turbo Uwaga 1: jeśli chcesz skasować katalog rmdir musi on być pusty; możesz skasować katalog wraz z zawartością poleceniem rm -r. Uwaga 2: znak ~ jest skrótem nazwy twojego katalogu domowego. Polecenia cd i cd ~ zmienią ścieżkę bieżącą na twój katalog domowy niezależnie od tego, gdzie jesteś w danym momencie; polecenie cd ~/tmp zmieni bieżący kata­ log na /home/twój_dom_kat/tmp. Rozumiesz zasadę ? Uwaga 3: cd - odwraca ostatnie polecenie cd. 44.. DDyysskkiieettkkii,, ddyysskkii ttwwaarrddee ii ttaakkiiee iinnnnee.. 44..11.. UUrrzząąddzzeenniiaa.. Nigdy o tym nie myślałeś, ale DOS-owe polecenie FORMAT A: robi o wiele więcej niż się wydaje. W rzeczywistości, kiedy wydajesz polecenie FORMAT, to: - sformatuje ono fizycznie dysk; - stworzy katalog A: (czyli utworzy system plików na dyskietce) - uczyni dyskietkę dostępną dla użytkownika (zamontuje ją). Te trzy kroki są oddzielnymi zadaniami w Linux-ie. Możliwe jest przygotowanie i używanie dyskietek w formacie MS-DOS, chociaż są także dostępne inne formaty; najpopularniejeszym jest ext2, ale dla dyskietek lepszy jest minix. Oto sposób w jaki można przygotować dyskietkę (standardową 1.44 MB) do pracy: - musisz się zalogować jako root, - fdformat /dev/fd0H1440 lub mformat a: - żeby mieć dyskietkę w formacie MS-DOS - przed rozpoczęciem używania dyskietki musisz ją zamontować: mount /dev/fd0 /mnt katalog /mnt musi istnieć. Teraz możesz używać dyskietki; jej obraz jest w katalogu /mnt. BBAARRDDZZOO WWAAŻŻNNEE - zanim wyjmiesz dyskietkę ze stacji - odmontuj ją: umount /mnt Oczywiście musisz formatować tylko nieużywane dyskietki. Jeśli chcesz korzystać ze stacji B: to zamień wszędzie fd0 na fd1. Wszystko co robiłeś poprzez A: czy B: robi się teraz poprzez katalog /mnt. Przykłady: DOS Linux C:\GUIDO>dir a: $ ls /mnt C:\GUIDO>copy a:*.* \docs\temp $ cp /mnt/* /docs/temp C:\GUIDO>copy *.zip a:\zip $ cp *.zip /mnt/zip C:\GUIDO>a: $ cd /mnt A:\> /mnt$ Nie muszę chyba mówić, że tak jak możesz zamontować dyskietkę tak i możesz zamontować dowolne urządzenie z danymi. (dysk twardy, CD-ROM, taśma itp.) Spójrz do katalogu /dev, żeby zobaczyć jakie możesz montować urządzenia. (UWAGA: jest tam około 1000 plików, lepiej użyj ls /dev | less). Np. Aby zamontować CD-ROM napisz mount -t iso9660 /dev/cdrom /cdrom To był "oficjalny" sposób na montowanie dyskietek, ale jest inny sposób - łatwiejszy. Ponieważ jest to uciążliwe ciągle się przełączać na root-a po to, aby zamontować dyskietkę - każdemu użytkownikowi możemy pozwolić na montowanie dyskietek. W taki sposób: ˇ stwórz katalogi /mnt/a, /mnt/a: i /mnt/cdrom ˇ dodaj w /etc/fstab nastepujące linie: /dev/cdrom /mnt/cdrom iso9660 ro,user,noauto 0 0 /dev/fd0 /mnt/a: msdos user,noauto 0 0 /dev/fd0 /mnt/a ext2 user,noauto 0 0 Teraz żeby zamontować dyskietkę z systemem MS-DOS, ext2 albo CD-ROM napisz: $ mount /mnt/a: $ mount /mnt/a $ mount /mnt/cdrom /mnt/a, /mnt/a: i /mnt/cdrom są teraz dostępne dla każdego użytkownika. Zauważyłem, że aby móc pisać do /mnt/a od razu po przygotowaniu dyskietki trzeba napisać: # mount /mnt/a # chmod 777 /mnt/a # umount /mnt/a Pamiętaj, że udostępniając w ten sposób użytkownikom dyskietki robisz wielką dziurę w bezpieczeństwie systemu. 44..22.. AArrcchhiiwwiizzaaccjjaa.. Teraz jak już umiesz się posługiwać dyskietką, kilka słów na temat archiwizacji danych. Jest kilka pakietów, które mogą ci pomóc, ale ten najpopularniejszy i najłatwiejszy do archiwizowania na wielu nośnikach to tar. # tar -M -cvf /dev/fd0H1440 /katalog_do_arch Upewnij się, że dyskietka jest sformatowana i kilka innych jest gotowych. Aby odarchiwizować dane włóż dyskietkę do stacji i napisz: # tar -M -xpvf /dev/fd0H1440 55.. KKoonnffiigguurroowwaanniiee ssyysstteemmuu.. 55..11.. PPlliikkii ssttaarrttoowwee ssyysstteemmuu.. W DOS-ie są dwa pliki systemowe, które sa odpowiedzialne za konfigurację systemu podczas startu, ustawienie zmiennych i ewentualnie uruchomienie jakichś programów. W Linux-ie jest o wiele więcej takich plików, z których kilku nie powinieneś ruszać dopóki nie będziesz wiedział dokładnie co robisz. Oto te najważniejsze: PLIKI UWAGI /etc/inittab nie dotykaj ! /etc/rc.d/* nie dotykaj ! Jeśli wszystko czego chcesz, to ustawienie zmiennej PATH czy innej albo zmiana wyglądu komunikatu "login" albo automatyczne odpalenie jakiegoś programu podczas wlogowywania się, to zajrzyj do tych plików: PLIK UWAGI /etc/issue ustawia format komunikatu "login" /etc/motd ustawia komunikat wyświetlający się zaraz po wlogowaniu się /etc/profile powłoka bash/sh - ustawia globalnie (dla wszystkich użytkowników) różne zmienne /etc/csh.cshrc to samo dla powłoki tcsh/csh - z tego pliku nie może być nic wyświetlane na ekran /etc/csh.login powłoka tcsh/csh - stąd możesz wyświetlać na ekran /home/twoj_dom_kat/.profile powłoka bash/sh - robi to co chcesz /home/t_d_k/.cshrc patrz wyżej - z tą różnicą, że ustawienia dotyczą tylko ciebie /home/t_d_k/.login -----"------ Jeśli pliki .login albo .profile istnieją, to zostaną przeczytane po zalogowaniu się na końcu i zostaną wykonane zawarte w nich polecenia (Coś jakby AUTOEXEC.BAT) Przykład - spójrz na ten plik .profile: ______________________________________________________________________ # Jestem sobie komentarzem echo Środowisko: printenv | more # ekwiwalent polecenia SET pod DOS-em alias d='ls -l' # chyba rozumiesz, co to jest alias alias up='cd ..' echo "Przypominam ci, że zmienna PATH zawiera: "$PATH echo "Miłego dnia, "$LOGNAME PATH i LOGNAME - tak, zgadłeś - to są zmienne środowiskowe # To jest funkcja w powłoce ctgz() # Wyświetla zawartość archiwum .tar.gz { for file in $* do gzip -dc ${file} | tar tf - done } # koniec pliku .profile ______________________________________________________________________ 55..22.. PPlliikkii ssttaarrttoowwee pprrooggrraammóóww.. Pod Linux-em wirtualnie wszysto można ustawić tak, jak chcesz. Większość programów ma jeden lub więcej plików startowych, w których możesz poustawiać różności. Często jest to ˇnazwa_programurc w twoim katalogu domowym. Zauważ, że są one ukryte; pliki ukryte wyświetla się ls -a. Niektóre programy, jak tin, elm, netscape, xfm tworzą katalogi .nazwa i tam umieszczają swoje pliki startowe. Pierwsze, które będziesz chciał modyfikować to: ~/.joerc - joe to bardzo popularny edytor - polecam ~/.xinitrc - używany podczas uruchamiania Xwindows (jeśli masz mniej niż 8MB RAM-u to lepiej nie uruchamiaj) poleceniem startx ~/.fvwmrc - używany przez menedżera okienek fvwm. Przykład możesz znaleźć w /usr/lib/X11/fvwm/system.fvwmrc ~/.xfm - używany przez menedżera plików xfm pod Xwindows ~/.Xdefault - używany przez emulator terminala pod X - rxvt Pamiętaj ! Dla tych wszystkich plików i innych, które spotkasz w przyszłości - PPS 66.. TTrroosszzkkęę pprrooggrraammoowwaanniiaa.. 66..11.. PPiissaanniiee sskkrryyppttóóww:: ttaakkiiee ..BBAATT--yy ttyyllkkoo lleeppsszzee.. Jeśli używałeś plików .BAT, aby ułatwić sobie życie (Ja używałem i to dużo), to to samo można zrobić w Linux-ie używając aliasów - zobacz przykład wyżej. Ale jeśli twoje pliki .BAT były bardziej skomplikowane, to polubisz programowanie w powłoce - jest tak samo wydajne jak QBasic, jeśli nie bardziej. (nawet jeśli nie używałeś bardziej skomplikowanych plików .BAT, to i tak będziesz z czasem programował w powłoce. Chociażby dlatego, że wszelkie wersje instalacyjne programów pod Linux-a są napisane w skryptach.) Powłoka ma takie elementy jak: zmienne, instrukcje while, case, for, if...then...else i wiele innych, co może być alternatywą nawet dla dobrego języka programowania. Aby napisać skrypt, wszystko co musisz zrobić, to napisać zwykły plik tekstowy zwierający polecenia, zapisać go i uczynić wykonywalnym. To ostatnie możesz zrobić poleceniem: chmod u+x <nazwa> Aby go wykonać wpisz jego nazwę - pamiętaj, że Linux nie widzi plików w katalogu bieżącym więc dodaj ./ na początku nazwy, albo dodaj katalog bieżący '.' do zmiennej PATH. Słowo ostrzeżenia: Standardowy edytor systemowy 'vi' nie jest najszczęśliwszym edytorem - szczególnie jeśli ktoś jest przyzwyczajony do takich edytorów jak ne.exe czy te spod środowiska Pascal/C++. Jak już to radziłem wcześniej lepiej używać joe, który jest dostępny w każdej standardowej dystrybucji. Na wszelki wypadek powiem, że: - aby coś wpisać w 'vi' trzeba najpierw nacisnąć 'i' - aby wyjść bez zachowania zmian: 'ESC:q!' - aby wyjść z zachowaniem zmian: 'ESC:x' Pisanie skryptów pod Unix-ami, to tak obszerny temat, że można by napisać książkę na ten temat (w istocie są książki na ten temat :) ), więc nie będę się tutaj dalej zagłębiaj, tylko podam przykład, który mam nadzieję przyda się i z którego możesz wyciągnąć kilka podstawowych zasad. ______________________________________________________________________ #!/bin/sh # Jestem sobie komentarzem # nie zmieniaj pierwszej linii !!! - musi tam być echo "To jest system: `uname -a`" # użyj wyjścia polecenia uname echo "Nazywam się $0" # zmienne wbudowane echo "Podałeś mi następujące $# parametry: "$* echo "Pierwszy parametr to: "$1 echo -n "Jak się nazywasz? " ; read imie echo spójrz na róznicę: "Cześć $imie" # cytowanie z " echo spójrz na różnicę: 'Cześć $imie' # cytowanie z ' DIRS=0 ; FILES=0 for file in `ls .` ; do if [ -d ${file} ] ; then # jeśli plik jest katalogiem DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1 elif [ -f ${file} ] ; then FILES=`expr $FILES + 1` fi case ${file} in *.gif|*jpg) echo "${file}: plik graficzny" ;; *.txt|*.tex) echo "${file}: plik tekstowy" ;; *.c|*.f|*.for) echo "${file}: plik żródłowy" ;; *) echo "${file}: inny plik" ;; esac done echo "Jest ${DIRS} katalogów i ${FILES} plików" ls | grep "ZxY--!!!WKW" if [ $? != 0 ] ; then # kod wyjścia ostatniego polecenia echo "ZxY--!!!WKW nie znaleziono" fi echo "wystarczy... jeśli chcesz wiedzieć więcej, to poczytaj" echo "podręcznik systemowy"" ______________________________________________________________________ 77.. CC ddllaa cciieebbiiee.. Chyba nie spodziewałeś się znaleźć GW czy QBasic-a na Linux-ie ?? W Unix-ach językiem systemowym i podstawowym jest C, pokochaj albo rzuć. Wiele innych języków (FORTAN, Pascal, Lisp, Basic, Perl, awk ale nie Turbo Pascal) są także dostępne. Zakładając, że znasz już C, oto kilka wytycznych dla tych, którzy wychowali się na Turbo C++ czy innym z DOS-owych braci C. Kompilator C pod Linux-em to gcc i wcale nie ma żadnych gwizdków, dzwonków i bajerów, ktore mają DOS-owe wersje. Żadnego środowiska, zintegrowanej pomocy (CTRL+F1) czy zintegrowanego debuggera itp. Jest to goły kompilator wywoływany z wiersza poleceń; bardzo wydajny z resztą. Żeby skompilować swoje standardowe hello.c napisz: gcc hello.c, a jeśli chcesz mieć nazwę pliku wynikowego taką samą jak plik źródłowy to napisz gcc -o hello hello.c. Pierwsze polecenie utworzy plik wykonywalny a.out. Żeby dołączyć jakąś bibliotekę dodaj opcję -l<arg>, np. gcc -o matma matma.c -lm Opcja -l<arg> zmusza gcc, aby dołączyło bibliotekę /usr/lib/lib<arg>.a, tak więc -lm dołączy /usr/lib/libm.a. To wszystko jest dobre dopóki piszesz małe programy. Ale kiedy twój program składa się z kilku plików źródłowych, musisz użyć narzędzia make. Załóżmy, że napisałeś jakiś interpreter: jego plik główny to parser.c i dołącza do siebie dwa pliki parser.h i xy.h. Chcesz używać procedur zawartych w parser.c, w programie calc.c, który znowu dołącza parser.h. Co za bałagan ! Co musisz zrobić aby skompilować calc.c ? Musisz napisać tzw. Makefile, który informuje kompilator o zależnościach pomiędzy poszczególnymi programami. W naszym przypadku to będzie: ______________________________________________________________________ # Oto plik Makefile używany do kompilacji calc.c # W miejsce <TAB> naciśnij tabulator calc: calc.o parser.o <TAB>gcc -o calc calc.o parser.o -lm # calc zależy od dwóch plików objektowych: calc.o i parser.o calc.o: calc.c parser.h <TAB>gcc -c calc.c # calc.o zależy od dwóch plików żródłowych: calc.c i parser.h parser.o: parser.c parser.h xy.h <TAB>gcc -c parser.c # parser.o zależy od trzech plików źródłowych # koniec pliku Makefile ______________________________________________________________________ Zapisz ten plik jako Makefile i napisz make aby skompilować calc.c; możesz także zapisać go jako calc.mak i wtedy napisać make -f calc.mak. No i oczywiście PPS :) na temat make. Wcześniej powiedziałem, że nie ma pomocy do C. To nie całkiem prawda... niektóre funkcje są opisane w podręczniku systemowym. Jest bardzo dużo bibliotek do C; wśród pierwszych, które będziesz chciał użyć mogą znaleźć się: ˇ ncurses - do zabawy z trybem tekstowym, ˇ svgalib - do grafiki, ˇ XForms - do programowania pod XWindows, ˇ MGUI - także do programowania pod XWindows. Dwie ostatnie można znaleźć pod adresami: bloch.phys.uwm.edu/pub/xforms www.volftp.vol.it/IT/IT/ITALIANI/MORELLO/index.htm Te biblioteki ułatwiają bardzo programowanie pod XWindows. Jeśli nie możesz przeżyć bez IDE a'la Borland, to zdobądź pakiet xwpe z ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/apps/editors. Powinieneś go polubić. 88.. PPoozzoossttaałłyy 11%%.. 88..11.. OOddrroooottoowwiićć ssiięę"".. Złym pomysłem jest logowanie się jako root, żeby robić zwykłe codzienne rzeczy. Używanie tego konta jest dość niebezpieczne i powinno być przeznaczone tylko do administracji. Aby utworzyć konto dla siebie wykonaj polecenie: adduser podając następnie informacje takie jak swój identyfikator, hasło, numer grupy itp. (wciśnij <<ENTER>> na pytania, których nie rozumiesz.) Od tłumacza: Może się tak zdarzyć, że pojawi się komunikat /etc i zobacz czy jest tam plik .passwd.lock lub o podobnej nazwie i skasuj go. 88..22.. TTwwoorrzzeenniiee wwiirrttuuaallnneejj ppaammiięęccii.. Teoretycznie Linux może być uruchomiony już na 2MB RAM-u. Od tłumacza: Ale ja bym nie radził uruchamiania go przy takiej ilości pamięci, z resztą obecnie chyba żadna dystrybucja nie da się zainstalować jeśli masz mniej niż 4MB RAM-u, a niektóre wymagają nawet 8MB. Ale im więcej pamięci masz tym więcej możesz zrobić. XWindows jak już wspomniałem nie będą działać w miarę sensowanie jeśli masz mniej niż 8MB RAM-u. Aby dodać sobie jeszcze 8MB wirtulanej pamięci wpisz jako root w wierszu poleceń: ______________________________________________________________________ # dd if=/dev/zero of=/swapfile bs=1024 count=8192 # mkswap /swapfile 8192 # sync # swapon /swapfile ______________________________________________________________________ Dodaj ostatnią linię do pliku /etc/rc.d/rc.local, aby udostępnić tę pamięć za każdym razem kiedy będziesz startował Linux-a. 88..33.. UUżżyywwaanniiee ttaarr--aa ii ggzziipp--aa.. W Unix-ach bardzo popularnymi programami do archiwizacji i kompresji są tar i gzip. Aby stworzyć archiwum wpisz w wierszu poleceń: tar cvf <nazwa_archiwum.tar> <pliki_do_zarchiwizowania> Aby wydobyć pliki z archiwum wpisz: tar xpvf <nazwa_archiwum.tar> <pliki> Aby wyświetlić zawartość archiwum napisz: tar tf <nazwa_archiwum> | less Opcja 'v' powoduje wyświetlenie plików archiwizowanych albo wyciąganych z archiwum, jeśli nie chcesz tego, możesz ja pominąć. Aby skompresować pliki możesz użyć compress albo gzip. Ten pierwszy jest już przestarzały i nie powinien być używany. compress <plik> albo gzip <plik> skompresuje plik. uncompress <plik>.Z albo gzip -d <plik>.gz odkompresuje plik. Jeśli ściągasz z sieci jakiś pakiet w 99% przypadków jest to skompresowane archiwum (xxx.tar.gz lub xxx.tgz). Żeby rozpakować i odarchiwizować za jednym zamachem wpisz: tar xzf xxx.tar.gz Opcji 'z' możesz także używać przy archiwizowaniu i przeglądaniu archiuwm skompresowanego. Przy okazji warto powiedzieć, że pakiety te są już tak przygotowane, że możesz je rozpakować w katalogu głównym - / i wszystkie programy znajdą się na swoim miejscu. Zakładając oczywiście, że nie pogrzebałeś za bardzo na swoim systemie. Programy arj, zip, unzip, rar, unrar także są dostępne pod Linux-em. 88..44.. IInnssttaallaaccjjaa aapplliikkaaccjjii.. Mieści się tutaj już to co wspomniałem o plikach xxx.tar.gz. Dystrybucja Slackware ma swój program, który pomaga przy instalacji pakietów - pkgtool. Dystrybucja Red Hat ma rpm - trochę mniej przyjazny. Dystrybucja Debian pewnie też coś takiego ma, ale ponieważ nie miałem z nią kontaktu, więc nie wiem. Są też aplikacje, które mają swoje własne systemy instalacji. Jak rozpakujesz jakiś pakiet przeczytaj zawsze pliki README albo INSTALLATION, a znajdziesz tam informacje na temat jak zainstalować dany pakiet. Duża część pakietów jest rozprowadzana jako źródła i musisz je najpierw skompilować. Najlepiej rozpakować je w katalogu /usr/src przeznaczonym na źródła i tam poczytać jak dany pakiet skompilować i zainstalować. Z reguły wszystko co musisz zrobić to rozpakować pakiet i napisać make albo make install. Oczywiście będziesz potrzebował kompilatora gcc. Pamiętaj, że instalacja pakietów to zadanie dla root-a. 88..55.. TTrriikkii,, bbeezz kkttóórryycchh nniiee mmoożżeesszz ssiięę oobbeejjśśćć.. Dopełnianie nazw poleceń i nazw plików/katalogów. Jeśli wpiszesz nie całą nazwę polecenia i naciśniesz <TAB> to powłoka dopełni za ciebie nazwę albo wyświetli wszystkie zaczynające się na podany ciąg. Np. zamiast pisać gcc dddddddllllllllluuuuga.nazwa.pliku - na dodatek nie pomylić się w ilości d l oraz u napisz gcc ddd<TAB>. Oglądanie zawartości ekranu, która się przesunęła do góry: Możesz to zrobić wciskając <SHIFT+PGUP> - ile możesz obejrzeć zależy od tego ile masz pamięci na karcie graficznej. Jeśli podasz polecenie script <plik> to wszystko co pojawi się na ekranie znajdzie się także w pliku <plik> dopóki nie podasz polecenia exit. Reset ekranu: jeśli zdarzy ci się wyświetlić plik binarny to może się to skończyć tym, że zamiast znaku zachęty będziesz miał jakieś krzaki. Napisz wtedy na ślepo, ale dokładnie, reset albo echo <CTRL+V> <ESC> c <ENTER> albo echo <CTRL+V> <CTRL+O> <ENTER> Komunikaty od jądra: spójrz do pliku /var/adm/messages albo /var/log/messages jako root, aby poczytać komunikaty od jądra włączając to co pojawiło się podczas startu systemu. 88..66.. PPoożżyytteecczznnee pprrooggrraammyy.. Po pierwsze - gdzie je znaleźć. Ponieważ wszyscy wiecie jak się poruszać po sieci i jak używać archie-go i ftp podam wam tylko najważniejsze adresy dla Linux-a. Są to: ˇ sunsite.unc.edu ˇ TSX-11.mit.edu ˇ nic.funet.fi Pierwsze dwa mają swoje kopie w Polsce pod adresem ftp.icm.edu.pl. Zalecam ich używać - o wiele szybszy transfer. I tak: ˇ sunsite.unc.edu to /pub/Linux/suniste/ ˇ TSX-11.mit.edu to /pub/Linux/tsx-11/ Programy: ˇ at - pozwala uruchamiać programy o podanej godzinie w podanym dniu, ˇ awk - bardzo dobry język do manipulacji plikami z danym (i nie tylko) Na przykład: awk '$2 ~ "abc" {print $1, "\t", $4}' dane.dat Wyświteli pola 1. i 4. każdej linii z pliku dane.dat, której drugie pole = abc ˇ delete-undelete - to chyba wiadomo, ˇ df - podaje informacje o ilości wolnego i zajętego miejsca na dysku ˇ dosemu - pozwala uruchamiać niektóre DOS-owe programy oraz Win 3.x przy odrobinie mieszania z konfiguracją, ˇ file <nazwa> - podaje rodzaj pliku - archiwum, gif, text itp. ˇ find (zobacz sekcja ``Katalogi'') jest jednym z najlepszych poleceń. Używany jest do wyszukiwania plików na dysku, które spełniają podane warunki i działania na nich. Ogólna postać polecenia find wygląda tak: find <katalog> <wyrażenie> gdzie wyrażenie zawiera kryteria wyszukiwania i działania. Przykłady: find . -type l -exec ls -l {} ; wyszukaj wszystkie dołączenia symboliczne w katalogu bieżącym i jego podkatalogach i pokaż na co wskazują. find / -name '*.old' -ok rm {} ; wyszukaj wszystkie pliki z całego dysku z rozszerzeniem .old i pytaj o skasowanie ich. find . -perm 755 wyszukaj wszystkie pliki z prawami dostępu 755 - wykonywalne (zobacz ``Prawa dostępu'') w bieżącym katalogu i jego podkatalogach. find . -user root wyszukaj pliki, których właścicielem jest root. Jest o wiele więcej możliwości, jak np. wyrażenia logiczne (and, or) - PPS. ˇ (f)grep - wyszukuje łańcuchy w plik-u/ach, np. grep -l "stdio" *.c - wyświetl nazwy plików .c, które zawierają ciąg stdio ˇ gnuplot - doskonały program do naukowego drukowania na ploterach ˇ gzexe - skompresuj program wykonywalny zachowując jego wykonywalność ˇ joe - wspaniały edytor. Uruchamiając go poleceniem jstar będziesz miał te same przypisania do klawiszy co w WordStar ˇ less - przypuszczalnie najlepszy do przeglądania plików tekstowych; jeśli jest dobrze skonfigurowany to możesz także oglądać pliki .gz, .z, .tar ˇ lpr <plik> - drukuje plik w tle. Aby sprawdzić status kolejki do drukowania napisz lpq ˇ mc - coś a'la Norton Commander ˇ pine - przyjazny program do obsługi poczty i nie tylko ˇ script <plik> - kopiuje to co się pojawia na ekranie do pliku dopóki nie wydasz polecenia exit. ˇ sudo - pozwala zwykłym użytkownikom na wykonywanie zadań root-a PPS ˇ uname -a - informacja o systemie ˇ zcat, zless - wyświetlają skompresowane za pomocą gzip-a pliki tekstowe ˇ Następujące polecenia są często potrzebne: bc, cal, chsh, cmp, cut, fmt, head, hexdump, nl, passwd, printf, sort, split, strings, tac, tail, tee, touch, uniq, w, wall, wc, whereis, write, xargs, znew. 88..77.. PPoossppoolliittee rroozzsszzeerrzzeenniiaa ii pprrooggrraammyy zz nniimmii zzwwiiąązzaannee.. W przyszłości na pewno zetkniesz się z wieloma rozszerzeniami. Oto lista tych najpopularniejszych: ˇ ˇ1 ... .8 - strony podręcznika systemowego. ˇ ˇarj - kompresja arj ˇ ˇdvi - plik wyjściowy TeX-a (patrz poniżej); xdvi - program do oglądania tych plików; dvips - program tłumaczący je na postscript .ps ˇ ˇgif - plik graficzny ˇ ˇgz - kompresja gzip ˇ ˇinfo - plik informacyjny (alternatywa dla "man-a") ˇ ˇjpg, .jpeg - plik graficzny ˇ ˇlsm - Linux Software Map. Plik tekstowy zawierający informacje o danym pakiecie ˇ ˇps - plik postscipt-owy. Aby je oglądać zdobądź gs i opcjonalnie ghostscript ˇ ˇtgz, tar.gz - skompresowane archiwum ˇ ˇtex - plik dla TeX-a - narzędzie do składania dokumentów ˇ ˇtexi - plik dla texinfo ˇ ˇxbm, .xpm, .xwd - plik graficzny ˇ ˇzip - archiwum zip ˇ ˇZ - kompresja compress 99.. TToo ttyyllee.. Gratulacje ! Łyknąłeś trochę Unix-a i jesteś gotów do pracy i eksperymentowania. Pamiętaj, że twoja wiedza na temat systemu jest bardzo mała i jesteś zobowiązany dużo ćwiczyć, żeby dobrze się posługiwać Linux-em. Ale jeśli wszystko co miałeś zrobić to pościągać aplikacje i pracować z nimi, to założę się, że to co napisałem tutaj to wystarczająco. Na dzisiaj nie wiem wiele więcej, a jakoś udaje mi się pracować z Linux-em codziennie ! Jestem pewien, że Linux ci się spodoba i dalej będziesz się go uczył i poznawał. Założę się też, że już nigdy nie wrócisz do DOS-a ! Mam nadzieję, że wyraziłem się dostatecznie jasno i zrozumiale i zrobiłem dobry uczynek dla moich trzech czy czterech czytelników. 99..11.. PPrraawwaa aauuttoorrsskkiiee.. O ile nie stwierdza się inaczej, dokumenty HOWTO są chronione prawami autorskimi ich autorów. Mogą one być rozprowadzane w całości lub w części, w jakiejkolwiek postaci fizycznej czy elektronicznej tak długo, dopóki znajduje się w nich ta wzmianka. Dystrybucja komercyjna jest dozwolona, a nawet zachęca się do niej; chociaż autor chciałby być poinformowany o takowej. Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem. Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO. Jeśli masz pytania skontaktuj się z Gregiem Hankisem, koordynatorem programu Linux HOWTO po adresem gregh@sunsite.unc.edu. 99..22.. DDiissccllaaiimmeerr.. "Szybkie przejście od DOS-a do Linux-a" zostało napisane przez Guido Gonzato, Guido@ibogfs.cineca.it. Wielkie dzięki dla Matta Welsha, autora podręcznika "Linux Installation and Getting Started", dla Ian Jackson, autora "Linux frequently asked questions with answers", dla Giuseppe Zanetti, autora "Linux - Il sistema operativo FREE SOFTWARE per personal computer 386/486", dla wszystkich, którzy przysłali mi pocztę z sugestiami no i szczególne podziękowania dla Linusa Torvaldsa i GNU, którzy dali nam Linuxa !!! Dokument ten dostarczany jest "taki jaki jest". Włożyłem wiele wysiłku, aby napisać go tak dokładnie jak tylko potrafiłem, ale wykorzystujesz informacje tu zawarte na własne ryzyko. Nie jestem odpowiedzialny w żadnym wypadku za jakiekolwiek zniszczenia wynikłe z winy korzystania z tego dokumentu. Tłumacz także nie jest odpowiedzialny za żadne zniszczenia. Wszelkie odzewy, prośby, sugestie, krytyki itd. są mile widziane. Ciesz się z życia ! (i z Linux-a) Guido =8-) 99..33.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl/pub/Linux/JTZ/ Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez tłumacza to: ˇ - wzmianka o systemie ext2 w nowych dystrybucjach, ˇ - wzmianka o najczęściej stosowanych skrótach, ˇ oraz inne pomniejsze dodatki. ��������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Firewall-HOWTO.pl.txt��������������������������������������������������0100644�0001750�0001750�00000166131�07477234140�020225� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Firewalle i proxy serwery Mark Grennan, markg@netplus.net v0.4, 8 listopad 1996 WWeerrssjjaa ppoollsskkaa:: ZZiieemmeekk BBoorroowwsskkii zziieemmbboorr@@zziieemmbboorr..wwaaww..ppll v0.1 8 lipiec 1997 Dokument ten powstał w celu uczenia podstaw systemów firewalli oraz dostarczenia niektórych szczegółów w zakresie ustawania (konfigurowa­ nia) filtrujących i posredniczacych firwalli na Linuxie. Oryginalna wersja tego dokumentu znajduje się pod adresem: <http://okcfo­ rum.org/~markg/Firewall-HOWTO.html> zaś polskie tłumaczenie: <http://www.ziembor.waw.pl/~ziembor/JTZ/Firewall-HOWTO.pl.html> NNiinniieejjsszzaa wweerrssjjaa ooppiissuujjee ssttaann zz 11999977 rrookkuu.. JJeeśśllii nnaaddaall uużżyywwaasszz jjąąddeerr zz sseerriiii 22..00 ((nniiee 22..22 lluubb 22..44)) ttoo jjeesstt ttoo ddookkuummeenntt ddllaa CCiieebbiiee.. NNaassttęęppnnaa wweerrssjjaa tteeggoo ddookkuummeennttuu ooppiissuujjee eeww.. ppoozzaa iippffwwaaddmm ttaakkżżee iippcchhaaiinnss ((ddoossttęęppnnee zz jjąąddrraammii 22..22)) ---- zzaawwiieerraa ttyyllee bbłłęęddóóww,, żżee nnaalleeżżaałłoobbyy jjee nnaappiissaaćć oodd nnoowwaa.. JJeeśśllii sszzuukkaasszz iinnffoorrmmaaccjjii nnaa tteemmaatt bbuuddoowwaanniiaa ffiirree­­ wwaallllii ppoodd lliinnuukksseemm ooddssyyłłaamm rraacczzeejj ddoo ttłłuummaacczzeeńń ddookkuummeennttaaccjjii IIPPttaabblleess wwyykkoonnaannyycchh pprrzzeezz ŁŁuukkaasszzaa BBrroommiirrsskkiieeggoo hhttttpp::////mmrr00vvkkaa..eeuu..oorrgg//.. ______________________________________________________________________ Spis treści 1. Wprowadzenie 1.1 Informacja zwrotna, uwagi. 1.2 Deklaracje 1.3 Copyright 1.4 Moje pobudki do tej pracy. 1.5 TODO (do zrobienia) 1.6 Zobacz także: 2. Understanding Firewalls 2.1 Wady firewalli 2.2 Typy firewalli 2.2.1 Filtujące firwalle 2.2.2 Serwery proxy 3. Ustawianie firewalla 3.1 Wymagania sprzętowe. 4. Oprogramowanie dla firewalli 4.1 Dostępne pakiety 4.2 TIS Firewall Toolkit kontra SOCKS 5. Przygotowanie Linuxa 5.1 Kompilacja jądra. 5.2 Ustawienie dwóch kart sieciowych 5.3 Ustawienie adresów sieciowych 5.4 Testowanie twojej sieci 5.5 Zabezpieczanie firewalla. 6. Konfigurowanie filtrowania IP (IPFWADM) 7. Instalowania serwera proxy - TIS 7.1 Pobranie oprogramowania 7.2 Kompilacja TIS FWTK 7.3 Instalacja TIS FWTK 7.4 Konfiguracja firewalla TIS FWTK 7.4.1 Plik netperm-table 7.4.2 Plik inetd.conf 7.4.3 Plik /etc/services 8. Serwer proxy SOCKS 8.1 Konfigurowanie serwera Proxy 8.2 Konfiguracja serwera proxy 8.2.1 Plik dostępu. Access File 8.2.2 Tablica trasowania 8.2.3 DNS zza firewalla Ustawienie usługi DNS zza firewalla jest prostym zadaniem. Potrzeba jedynie ustawienia DNS na maszynie z firewallem. I inne maszyny za firewallem będą go używały. 8.3 Współpraca z serwerami proxy 8.3.1 Unix 8.3.2 MS Windows i Trumpet Winsock 8.3.3 Ustawienie serwera pośredniczącego do pracy z pakietami UDP. 8.4 Wady serwerów proxych 9. Konfiguracja zaawansowana. 9.1 Wielkie sieci wymagają położenia nacisku na bezpieczeństwo 9.1.1 Konfiguracja sieci 9.1.2 Serwer proxy 10. Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee Dokument ten Firewall-HOWTO został napisany przez Davida Ruddera <mailto:drig@execpc.com>. Chciałbym Mu podziękować za zezwolenie na uaktualnienie jego pracy. Firewalle zyskały ostatnio wielką sławę jako defintywne rozwiązanie w dziedzinie bezpieczeństwa Internetu. Większość tej sławy jest zasłużona, jednak część wynika z nieporozumienia. To JTZ ma na celu przegląd: czym są firewalle, jak je konfigurować, czym są serwery proxy i jak je konfigurować oraz aplikacje (zastosowania) tej technologii poza zakresem bezpieczeństwa. 11..11.. IInnffoorrmmaaccjjaa zzwwrroottnnaa,, uuwwaaggii.. Wszelkie uwagi będą mile widziane. PPrroosszzęę:: DDOONNOOŚŚCCIIEE OO WWSSZZEELLKKIICCHH NNIIEEŚŚCCIISSŁŁOOŚŚCCIIAACCHH WW TTYYMM DDOOKKUUMMEENNCCIIEE . Jestem człowiekiem, i jestem omylny. Jeśli znajdziesz jakieś popraw je (w moim najwyższym interesie). Będę próbował odpowiedzieć na wszystkie listy, ale jestem zajętym człowiekiem, tak więc nie obrażaj się proszę jeśli nie odpowiem. _M_ó_j _a_d_r_e_s_: <<markg@netplus.net> 11..22.. DDeekkllaarraaccjjee NNIIEE OODDPPOOWWIIAADDAAMM ZZAA JJAAKKIIEEKKOOLLWWIIEEKK ZZNNIISSZZCCZZEENNIIAA WWYYNNIIKKAAJJĄĄCCEE ZZEE SSTTOOSSOOWWAANNIIAA TTEEGGOO DDOOKKUUMMEENNTTUU Dokument ten jest pomyślany jako wprowadzenie do technologii firewalli i serwerów proxy. Nie jestem, i nie zamierzam sobie rościć pretensji do bycia ekspertem w sprawach bezpieczeństwa. Jestem po prostu człowiekiem który przeczytał co nieco, i pasjonuje się komputerami bardziej niż inni. Proszę, pisząc ten tekst chcę pomóc ludziom zaznajomić się z tym tematem, i nie jestem gotów dawać głowy za dokładność podawanych przeze mnie danych. 11..33.. CCooppyyrriigghhtt Jeśli nie jest powiedziane inaczej, prawa autorskie dokumenty z serii _L_i_n_u_x _J_a_k _T_o _Z_r_o_b_i_ć należą do każdego z autorów. Mogą być powielane i rozpowszechniane w w całości w częściach, w formie ,,papierowej'' i elektronicznej dopóki wszędzie (w każdej z części) zachowana jest informacja o prawach i autorstwie. Komercyjna redystrybucja jest dozwolona i wskazana; jednakże, autor powinien być poinformowany o tym fakcie. Wszystkie tłumaczenia, poprawki językowe, i prace włączające muszą zawierać niniejszą notę o prawach autorskich. Jeśli masz jakieś zapytania, proszę o kontakt: Mark Grennan <mailto:markg@netplus.net>. 11..44.. MMoojjee ppoobbuuddkkii ddoo tteejj pprraaccyy.. Pomimo wielu dyskusji w grupach comp.os.linux.* (w ciągu ostatniego roku) na temat firewalli wydaje mi się trudnym znalezienie informacji których potrzebowałem do ustawienia i skonfigurowania firewalla. Oryginalna wersja tego HOWto była pomocna, ale nieaktualna. Mam nadzieję, że ta poprawiona wersja ,,Firewall HOWto'' autorstwa Davida Ruddera dostarczy wszystkim informacji jakiej potrzebują do stworzenia działających ,,ścian ognia'' w ciągu godzin, nie tygodni. Poza tym uważam że powinienem zwrócić mój dług społeczności Linuxowej. 11..55.. TTOODDOO ((ddoo zzrroobbiieenniiaa)) ˇ Instrukcje na temat ustawień klientów ˇ Znalezienie dobrych serwerów proxych dla usług bazujących na UDP działających na Linuxie. 11..66.. ZZoobbaacczz ttaakkżżee:: ˇ NET-3 HOWTO <http://www.jtz.org.pl/Html/NET-3-HOWTO.pl.html> ˇ The Multiple Ethernet Mini HOWTO ˇ Networking with Linux ˇ The PPP HOWTO ˇ TCP/IP Network Administrator's Guide by O'Reilly and Associates ˇ The Documentation for the TIS Firewall Toolkit Węzeł pajęczyny należący do Trusted Information System's (TIS) posiada wspaniała kolekcję dokumentacji dotyczącej firewalli i pokrewnych tematów. Poza tym pracuję na projektem dotyczącym bezpieczeństwa: ,,Bezpieczny Linux''. W miejscu tym zgromadziłem wszystkie informacje, dokumentacje i programy potrzebne do stworzenia bezpiecznego Linuxa. Napisz do mnie jeśli chcesz otrzymać więcej informacji. 22.. UUnnddeerrssttaannddiinngg FFiirreewwaallllss Firewall - ,,ściana ogniowa'' jest terminem wziętym z konstrukcji samochodu. W samochodach firewalle fizycznynie oddzielają silnik od pasażerów. To znaczy, że chronią one pasażerów w wypadku gdy silnik zapali się cały czas dostarczając kontroli nad nim. Komputerowe firewalle są urządzeniami, które chronią sieci prywatne od części publicznej (jakiej jak Internet). Komputer będący ,,ścianą ognia'' od tej chwili nazywany ,,firewallem'' może (musi) być obecny tak w sieci chronionej jak i w Internecie. Chroniona sieć nie może być osiągalna z Internetu, podobnie jak Internet nie może być osiągalny z chronionej sieci. Dla niektórych dosięgnięcie Internetu z izolowanej sieci jest możliwe jedynie poprzez zalogowanie się na firewallu (telnetem) i penetracja Sieci stamtąd. Najprostszą formą firewalla jest podwójnie zadomowiony system (tj. system z podwójnym połączeniem sieciowym). Jeśli możesz ZAUFAĆ WSZYSTKIM swoim użytkownikom, możesz prosto skonfigurować Linuxa (wyłączając przy kompilacji jądra forwarding / gatewaying) Mogą oni logować się na tym systemie i używać aplikacji sieciowych takich jak telnet, FTP, czytać pocztę i innych jakich dostarczasz. Z takim ustawieniem, tylko jeden komputer z twojej sieci widzi resztę świata poza firewallem. Pozostałe systemy w twojej chronionej sieci nie potrzebują nawet ustawienia domyślnego routingu. Aby powyższy firewall działał MMUUSSIISSZZ UUFFAAĆĆ WWSSZZYYSSTTKKIIMM SSWWOOIIMM UUŻŻYYTTKKOOWWNNIIKKOOMM Nie jest to zalecane rozwiązanie. 22..11.. WWaaddyy ffiirreewwaallllii Problemem filtrujących firewalli jest to, że ograniczają dostęp do twojej sieci z Internetu. Tylko usługi na filtrowanie których zezwoliłeś są dostępne. Na serwerach proxych użytkownicy mogą autoryzować się na firewallu i dopiero wtedy mają (z systemu wewnątrz sieci prywatnej) dostęp do Internetu. Poza tym, nowe typy klientów sieciowych i serwerów przybywają prawie codziennie. Musisz wtedy wynaleźć nowy sposób zezwolenia na kontrolowany ich dostęp do twojej sieci, zanim będą użyte. 22..22.. TTyyppyy ffiirreewwaallllii Istnieją dwa typy firewalli: 1. firewalle filtrujące IP - blokują cały ruch, ale przepuszczają dopuszczony. 2. serwery proxy - serwery połączeniowe - wykonują połączenie sieciowe za ciebie. 22..22..11.. FFiillttuujjąąccee ffiirrwwaallllee Firewalle filtrujące działają na poziomie pakietów IP. Są zaprojektowane do kontroli przepływu bazując na adresie źródłowym, docelowym, porcie i typie pakietu (zawartych w każdym z pakietów). Ten typ firewalli jest bardzo bezpieczny, ale traci wiele typów zapisu. Może zablokować ludziom z dostęp z sieci prywatnej, ale nie powie, kto dostał się do twojego systemu publicznego, ani kto wyszedł z sieci lokalnej do Internetu. Filtrujące firewalle są bezwzględnymi filtrami. Nawet jeśli chcesz dać komuś z zewnątrz dostęp do twoich serwerów ,,prywatnych'' nie jesteś w stanie bez dania tego dostępu wszystkim (tłum. jak rozumiem spod tego adresu) Linux posiada opcję filtrowania pakietów w jądrach powyżej 1.3.x. 22..22..22.. SSeerrwweerryy pprrooxxyy Serwery proxy pozwalają na niebezpośredni dostęp do Internetu, przez firewall. Najlepszym przykładem jak to pracuje jest osoba telnetująca się do systemu i stamtąd wykonująca następne połączenie. Tylko że w wypadku serwerów proxy proces ten następuje automatycznie. Gdy łączysz się z proxy serwerem za pomocą oprogramowania klienckiego startuje on swojego klienta i dostarcza ci danych których zarządzałeś. Ponieważ serwery proxy podwajają każde połączenie, możliwe jest zapisywanie każdego z nich. Wspaniałą rzeczą w serwerach proxy jest to, że są w pełni bezpieczne, gdy są prawidłowo ustawione. Nie pozwalają nikomu przejść. Nie dokonują bezpośredniego routingu. 33.. UUssttaawwiiaanniiee ffiirreewwaallllaa 33..11.. WWyymmaaggaanniiaa sspprrzzęęttoowwee.. Naszym przykładem nich będzie komputer i486-DX66 z 16 Mb RAMu oraz 500Mb partycją Linuxową. System ten posiada dwie karty sieciowe, jedną połączoną z naszą siecią prywatną, a drugą do sieci lokalnej nazywanej strefą zdemilitaryzowaną (DMZ). DMZ posiada router połączony do Internetu. Jest to całkiem przyjemny standard dla biznesu. Powinieneś użyć jednej karty sieciowej oraz modemu z PPP do intenetu. Firewall powinien posiadać dwa adresy IP. Znam wielu ludzi posiadających małe LANy w domu z dwoma lub trzema komputerami. Możesz rozpatrzyć następujący model: włożyć wszystkie modemy do komputera z Linuxem (np. starą i386) i połączyć wszystkie do Internetu łączem komutowanym. Z takim ustawieniem, gdy tylko jedna osoba ciągnie dane może użyć wszystkich modemów (a więc i działać 2-3 krotnie szybciej ; -). 44.. OOpprrooggrraammoowwaanniiee ddllaa ffiirreewwaallllii 44..11.. DDoossttęęppnnee ppaakkiieettyy Jeśli wszystkim czego potrzebujesz jest filtrujący firewall potrzebujesz jedynie Linuxa i podstawowych pakietów sieciowych. Jednym z pakietów który może nie zawierać się w twojej dystrybucji jest IP Firewall Administration tool (przyp. tłum. w RedHacie 4.0 i Debianie 1.2.* jest) (IPFWADM) z Jeśli chcesz postawić serwer proxy potrzebujesz jednego z niżej wymienionych pakietów: 1. SOCKS 2. TIS Firewall Toolkit (FWTK) 44..22.. TTIISS FFiirreewwaallll TToooollkkiitt kkoonnttrraa SSOOCCKKSS Trusted Information System ( <<http://www.tis.com>) jest fragmentem kolekcji programów zaprojektowanych dla firewalli. Program ten udostępnia podobne rzeczy jak SOCK, ale jest zbudowany na innych zasadach. Tam gdzie Socks posiada jeden program przeprowadzający wszystkie transakcje s internetem, TIS dostarcza jednego programu dla każdego z narzędzi których chcesz użyć w firrewallu. Dla pokazania kontrastu użyjmy przykładów WWW i dostępu za pomocą telnetu. Używając SOCKS, ustawiasz jeden plik konfiguracyjny i jednego demona. Używając tego pliku tak telnet jak i WWW są dostępne, podobnie jak inne usługi których nie zakazałeś. W pakiecie TIS ustawiasz jednego demona dla (osobno) WWW i Telnetu z osobnymi plikami konfiguracyjnymi. Po zrobieniu tego inne usługi internetowe są zakazane dopóki ich explicite nie ustawisz. Jeśli demon dla specyficznych usług jest niedostępny (tak jak talk), istnieją ,,plug-in-y'' dla demona, ale nie tak elastyczne i łatwe w konfiguracji jak inne narzędzia. Różnica wygląda na niewielką, jest jednak istotna. SOCKS pozwala Ci być spokojnym. Przy kiepsko ustawionym SOCKS serwerze ktoś z wewnątrz może uzyskać większy dostęp do Internetu niż było początkowo planowane. Z pakietem TIS ludzie wewnątrz sieci mają jedynie taki dostęp na jaki zezwolił administrator. SOCKS są łatwiejszy do konfiguracji, łatwiejszy do kompilacji i pozwala na większą elastyczność. TIS jest bardziej bezpieczny, jesli chcesz ustawiać użytkowników wewnątrz chronionej sieci. Oba dostarczają całkowitego bezpieczeństwa z zewnątrz. Opiszę proces instalacji obydwu. 55.. PPrrzzyyggoottoowwaanniiee LLiinnuuxxaa 55..11.. KKoommppiillaaccjjaa jjąąddrraa.. Zacznij od świeżej instalacji twojej dystrybucji Linuxowej (ja użyłem RedHata 3.0.3 (Picasso) i poniższe przykłady bazują na tej dystrybucji). Im mniej oprogramowania zainstalujesz tym mniej będzie w nim dziur, tylnych wejść i / lub błędów wprowadzających do twojego systemu problem bezpieczeństwa, więc zainstaluj jedynie minimalny zestaw aplikacji. Użyj stabilnego jądra. Ja użyłem 2.0.14. Oto jest dokumentacja podstawowych ustawień: Będziesz potrzebował rekompilować jądro sytemu z odpowiednimi opcjami. (patrz Kernel-HOWto, Ethernet-HOWto oraz NET-2 HOWto jeśli nie zrobiłeś tego wcześniej). Oto są sieciowe ustawienia które poznałem wykonując komendę make config 1. Under General setup a. Turn Networking Support ON 2. Under Networking Options a. Turn Network firewalls ON b. Turn TCP/IP Networking ON c. Turn IP forwarding/gatewaying OFF (UNLESS you wish to use IP filtering) d. Turn IP Firewalling ON e. Turn IP firewall packet loggin ON (this is not required but it is a good idea) f. Turn IP: masquerading OFF (I am not covering this subject here.) g. Turn IP: accounting ON h. Turn IP: tunneling OFF i. Turn IP: aliasing OFF j. Turn IP: PC/TCP compatibility mode OFF k. Turn IP: Reverse ARP OFF l. Turn Drop source routed frames ON 3. Under Network device support a. Turn Network device support ON b. Turn Dummy net driver support ON c. Turn Ethernet (10 or 100Mbit) ON d. Select your network card Teraz możesz dokonać rekompilacji i reinstalacji jądra oraz zrestartować system. Twoja karta/y sieciowa/e powinny pojawić się w trakcie procedury startowej. Jesli tak się nie dzieje sprawdź w innych JTZ, i próbuj dopóki nie będą działać. 55..22.. UUssttaawwiieenniiee ddwwóócchh kkaarrtt ssiieecciioowwyycchh Jeśli masz dwie kary sieciowe w swoim komputerze w większości przypadków potrzebujesz dodać twierdzenie w pliku /etc/lilo.conf opisujące ich IRQ i adresy. W moim wypadku wygląda to tak: append= " ether=12,0x300,eth0 ether=15,0x340,eth1 " 55..33.. UUssttaawwiieenniiee aaddrreessóóww ssiieecciioowwyycchh Jest to naprawdę interesująca część. Teraz jest czas na podjęcie kilku decyzji. Dopóki nie chcemy dać dostępu komputerom z Internetu do żadnej z części naszej sieci lokalnej nie musimy używać prawdziwych adresów. Istnieją numery wydzielone z internetowych do ustawienia odrębnych sieci prywatnych (przyp. tłumacza: klasa A 10.0.0.0-10.255.255.255, klasy B, i klasy C: 192.168.0.0.0-192.166.255.255) Ponieważ każdy potrzebuje więcej adresów i ponieważ adres nie mogą się powtarzać w Internecie jest to dobry wybór. Wybraliśmy jedną z tych klas: 192.168.2.xxx, i użyjemy jej w naszym przykładzie. Twój serwer proxy będzie członkiem obu sieci i będzie przekazywał dane do i z sieci prywatnej. 199.1.2.10 __________ 192.168.2.1 192.168.2.2 _ __ _ \ | | / ____/__________ | \/ \/ | \| Firewall |/ | Stacja | / Internet \--------| |------------| Robocza | \_/\_/\_/\_/ |__________| |_______________| Jeśli używasz filtrującego firewalla możesz używać tych numerów stosując IP masquearading Firewall będzie przesyłał pakiety i tłumaczył numery IP na ,,PRAWDZIWE'' adresy w Internecie. Musisz przydzielić prawdziwy adres IP karcie sieciowej widocznej z Internetu (na zewnątrz). I przydzielić adres 192.168.2.1 karcie Ethernetowej wewnątrz. To będzie adres IP twojego gatewaya/proxy. Możesz przydzielić pozostałym maszynom ze swojej sieci numery z zakresu 192.168.2.2-192.168.2.254. Odkąd używam RedHat Linux do ustawienia sieci przy starcie dodaję plik ifcfg-eth1 w katalogu /etc/sysconfig/network-scripts/. Jest on czytany w trakcie startu systemu i ustawiania sieci i tablic routingu. Mój ifcfg-eth1 wygląda następująco: #!/bin/sh #>>>Device type: ethernet #>>>Variable declarations: DEVICE=eth1 IPADDR=192.168.2.1 NETMASK=255.255.255.0 NETWORK=192.168.2.0 BROADCAST=192.168.2.255 GATEWAY=199.1.2.10 ONBOOT=yes #>>>End variable declarations Możesz także użyć tego skryptu do automatycznego połączenia mode­ mowego do twojego IPS. Spójrz na skrypt ipup-pop Jeśli używasz modemu do łączenia się z siecią twój zewnętrzny adres będzie przydzielony w trakcie połączenia. 55..44.. TTeessttoowwaanniiee ttwwoojjeejj ssiieeccii Zacznij od sprawdzenia ifconfig i trasowania (routingu) jeśli masz dwie karty wynik polecenia ifconfig powinien wyglądać następująco: #ifconfig lo Link encap:Local Loopback inet addr:127.0.0.0 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:1620 errors:0 dropped:0 overruns:0 TX packets:1620 errors:0 dropped:0 overruns:0 eth0 Link encap:10Mbps Ethernet HWaddr 00:00:09:85:AC:55 inet addr:199.1.2.10 Bcast:199.1.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:12 Base address:0x310 eth1 Link encap:10Mbps Ethernet HWaddr 00:00:09:80:1E:D7 inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:15 Base address:0x350 a twoja tablica trasowania mniej więcej tak: #route -n Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface 199.1.2.0 * 255.255.255.0 U 1500 0 15 eth0 192.168.2.0 * 255.255.255.0 U 1500 0 0 eth1 127.0.0.0 * 255.0.0.0 U 3584 0 2 lo default 199.1.2.10 * UG 1500 0 72 eth0 UUwwaaggaa:: 199.1.2.0 jest numerem interface po internetowej stronie firewalla zaś 192.168.2.0 jest wewnątrz. Teraz spróbuj pingnąć się do Internetu z firewalla. Ja zwykłem używać nic.dnn.mil jako punktu testowego (w Polsce doradzałbym bilbo.nask.org.pl 148.81.16.51). Jest to wciąż dobry test, ale nie dostarcza tylu informacji ile by się chciało. Jeśli nie rusza za pierwszym razem spróbuj zapukać do innych komputerów poza swoją siecią lokalną. Jeśli nie działa to znaczy że twoje połączenie PPP jest źle ustawione. Przeczytaj jeszcze raz Net-2 HOWto i spróbuj jeszcze raz. Następnie pingnij się z firewalla do komputera wewnątrz chronionej sieci. Każdy komputer powinien móc sondować inny. Jeśli nie spójrz jeszcze raz do Net-2 HOWto i popraw ustawienia w swojej sieci. Teraz spróbuj pingnąć zewnętrzny adres z wewnętrznej części chronionej sieci. (Notka: to nie jest żaden z numerów IP zaczynających się od: 192.168.2.xxx.) Jeśli jest to możliwe, to znaczy że nie wyłączyłeś przesyłania IP w konfiguracji jądra. Upewnij się, że tego chcesz. Jeśli zostawisz tę opcję włączoną, musisz zapoznać się z częścią tego dokumentu opisującą filtrowanie pakietów IP. Teraz spróbuj sondować internet zza swojego firewalla. Użyj tego samego adresu co poprzednio (np. bilbo.nask.org.pl). Znowu, jeśli wyłączyłeś IP Forwarding nie powinno działać. Albo powinno, jeśli włączyłeś. Jeśli masz ustawiony IP Forwarding i używasz ,,PRAWDZIWYCH'' (nie 192.168.2.*) adresów IP i nie możesz wyjść na zewnątrz, ale możesz się dostać do internetowej strony swego firewalla sprawdź czy następny router przepuszcza pakiety z twojej sieci lokalnej (twój dostawca usług internetowych powinien coś o tym wiedzieć). Jeśli przydzieliłeś swojej sieci adresy 192.168.2.* pakiety i tak nie będą filtrowane. Jeśli przechodzą mimo wszystko i masz IP masquerading włączone ten test też został zdany. Masz teraz podstawową konfigurację systemu. 55..55.. ZZaabbeezzppiieecczzaanniiee ffiirreewwaallllaa.. Firewall nie spełnia swojego zadania jeśli zostawia otwarte okno dla ataków przez nieużywane usługi. ,,Źli chłopcy'' mogą zdobyć twierdzę i zmodyfikować ją dla swoich potrzeb. Zacznij wyłączać niepotrzebne usługi. Spójrz na /etc/inetd.conf. Plik ten kontroluje coś co jest nazywane ,,super serwerem''. Kontroluje uruchamianie usług na żądanie. Kompletnie wyłącz: netstat, systat, tftp, bootp oraz finger. Aby wyłączyć usługę wystarczy postawić znak # (tzw. hash) jako pierwszy znak w linii. kiedy to zrobisz wyślij sygnał HUP do procesu inetd pisząc: "" kkiillll --HHUUPP << ppiidd >> "" , gdzie < pid > jest numerem procesu inetd. Spowoduje to powtórne przeczytanie przez inetd pliku konfiguracyjnego (inetd.conf) i restart. Sprawdź teraz czy jesteś w stanie dostać się do portu obsługującego netstat telnet localhost 15 Jeśli otrzymasz wynik z netstata nie zrestartowałeś inetd prawidłowo. 66.. KKoonnffiigguurroowwaanniiee ffiillttrroowwaanniiaa IIPP ((IIPPFFWWAADDMM)) By zacząć musisz włączyć przesyłanie pakietów IP w swoim jądrze i twój system powinien odsyłać wszystko co mu się prześle. Twoja tablica trasowania powinna być ustawiona i powinieneś miś dostęp tak wewnątrz jak do zewnętrznej Sieci. Ale budujemy firwalla tak więc trzeba ograniczyć wszystkim dostęp do niego. W moim systemie stworzyłem parę skryptów ustawiających zasady odsyłania pakietów i polityki dostępu. Wywołuję je z w skryptach z /etc/rc.d w czasie konfiguracji. Domyślnie IP Forwarding w jądrze systemu odsyła wszystko. Dlatego twoje skrypty startowe firewalla powinny rozpoczynać swoja pracę od zakazania dostępu dla wszystkich i zerwania wszelkich połączeń dozwolonych w poprzednim uruchomieniu ipfw. Skrypt ten wykorzystuje pewien trick. # # Ustawianie rozliczania i odsyłania pakietów IP # # Forwarding # # Domyślnie wszystkie usługi są zakazane. ipfwadm -F -p deny # Zerwij wszystkie połączenia ipfwadm -F -f ipfwadm -I -f ipfwadm -O -f Teraz mamy doskonały firewall. Nic nie przechodzi. Bez wątpliwości pewna cześć usług powinna być przesyłana (i tego dotyczy następny przykład). # przesyłanie poczty do twojego MTA ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25 # przesyłanie połączeń pocztowych do innych MTA ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535 # przesyłanie WWW do twojego serwera /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 196.1.2.11 80 # przesyłanie WWW do serwerów zewnętrznych /sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0 1024:65535 # przesyłanie ruchu DNS /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 196.1.2.0/24 Możesz byc zaintersowany w rozliczaniu ruchu przechodzącego przez twój firewall. Poniższy skrypt liczy każdy z pakietów. Powinieneś dodać linię albo liczyć ruch tylko dla jednego systemu. # Zerwanie wszystkich połączeń ipfwadm -A -f # Rozliczanie /sbin/ipfwadm -A -f /sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24 /sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24 Jeśli potrzebowałeś firewalla filtrującego możesz skończyć lekturę. Miłego konfigurowania. ; -) 77.. IInnssttaalloowwaanniiaa sseerrwweerraa pprrooxxyy -- TTIISS 77..11.. PPoobbrraanniiee oopprrooggrraammoowwaanniiaa TIS FWTK jest dostępny pod adresem: <<ftp://ftp.tis.com/>. Nie popełnij tego błędu co ja. Kiedy dostaniesz się na serwer TIS PPRRZZEECCZZYYTTAAJJ ,,,,RREEAADDMMEE'''' Pakiet TIS fwtk jest w ukrytym katalogu na ich serwerze. TIS wymaga być wwyyssłłaałł eemmaaiill ddoo ffwwttkk--rreeqquueesstt@@ttiiss..ccoomm zawierającego tylko słowo SSEENNDD w ,,ciele'' wiadomości aby poznać nazwę tego ukrytego katalogu (nie jest potrzebny temat dla tego listu). Ich system wyśle Ci wiadomość z nazwą katalogu w ciągu 12 godzin. Piszę o wersji 2.0 (beta) TIS FWTK. Wersja ta kompiluje się dobrze (z pewnymi wyjątkami) i wygląda że wszystko pracuje (u mnie). Gdy zostanie opublikowana wersja pełna uaktualnię to HowTo. Aby zainstalować FWTK stwórz katalog fwtk-2.0 w /usr/src. Przenieś tak kopię (fwtk-2.0.tar.gz) odpakuj ją (tar zxf fwtk-2.0.tar.gz). FWTK nie pośredniczy w przekazywaniu SSL (bezpieczne dokumenty w WWW) ale posiada dodatek napisany przez Jean-Christophe Touvet. Jest on dostępny pod adresem <<ftp://ftp.edelweb.fr/pub/contrib/fwtk/ssl- gw.tar.Z>. Touvet nie świadczy wsparcia technicznego dla tego kodu. Używam zmodyfikowanej wersji: włączyłem moduł dostępu do bezpiecznych serwerów news Netscape napisany przez Eric Wedel <ftp://mdi.meridian- data.com/pub/tis.fwtk/ssl-gw/ssl-gw2.tar.Z>. W naszych przykładach będę używał wersji Wedel'a. Aby go zainstalować po prostu strwóż katalog ssl-gw w katalogu /usr/src/fwtk-2.0 i wsadź tam odpowiednie pliki. Kiedy instalowałem tę bramę potrzebne były drobne zmiany zanim mogłem skompilować resztę zestawu. Pierwsza zmiana nastąpiła w pliku ssl-gw.c . Nie potrafił włączyć jednego z plików include. #if defined(__linux) #include <sys/ioctl.h> #endif Druga zmiana polegała na stworzeniu pliku Makefile. Skopiowałem jeden z innej ,,bramy'' i zastąpiłem nazwę tego modułu nazwą ssl-gw. 77..22.. KKoommppiillaaccjjaa TTIISS FFWWTTKK Wersja 2.0 FWTK kompiluje się łatwiej niż poprzednie. Wciąż jednak jest kilka rzeczy które powinny być zmienione zanim wersja beta będzie się kompilować bez przeszkód. Pozostaje mieć nadzieję, że do tak się stanie w pełnej wersji. Aby to poprawić zacznij zmiany od katalogu /usr/src/fwtk/fwtk i skopiuj plik Makefile.config.linux na Makefile.config. NNiiee uurruucchhaammiiaajj FFIIXXMMAAKKEE. Instrukcja mówi byś to zrobił. Jeśli chcesz zniszczyć Makefile we wszystkich podkatalogach... Wykonałem poprawkę do fixmake Problem polegał na tym, że fixmake dodawał '.' i '' do włączanych do Makefile linii. sed 's/^include[ ]*\([^ ].*\)/include \1/' $name .proto > $name Następnie będziemy musieli wyedytować Makeconfig.file. Potrzebne będą dwie zmiany. Autor programu ustawił źródła programu w swoim $HOME/. My kompilujemy w /usr/src i powinniśmy zmienić zmienną FWTKSRCDIR. FWTKSRCDIR=/usr/src/fwtk/fwtk Po drugie, przynajmniej niektóre Linuxy używają bazy danych w formacie gdbm. W Makefile.config jest używana dbm Zapewne będziesz musiał to zmienić. Ja w RedHacie 3.0.3 musiałem. DBMLIB=-lgdbm Ostania poprawka jest w katalogu x-gw. Błąd w wersji beta jest w pliku socket.c. Poprawka polega na usunięciu tych linii. #ifdef SCM_RIGHTS /* 4.3BSD Reno and later */ + sizeof(un_name->sun_len) + 1 #endif Jeśli dodałeś ssl-gw do swojego katalogu źródeł trzeba jeszcze dodać do listy katalogów w Makefile. DIRS= smap smapd netacl plug-gw ftp-gw tn-gw rlogin-gw http-gw x-gw ssl-gw Teraz uruchom mmaakkee. 77..33.. IInnssttaallaaccjjaa TTIISS FFWWTTKK Uruchom make install. Standardowo katalogiem instalacyjnym jest /usr/local/etc. Możesz to zmienić (ja tego nie zrobiłem) na bardziej bezpieczny katalog. Ja zmieniłem prawa dostępu do niego na chmod 700 . Na koniec pozostała nam konfiguracja firewalla. 77..44.. KKoonnffiigguurraaccjjaa ffiirreewwaallllaa TTIISS FFWWTTKK Teraz naprawdę rozpoczynamy. Musisz nauczyć system wywoływania tych nowych usług i stworzyć tablice do ich kontroli. Nie próbuję przepisywać tutaj dokumentacji do TIS FWTK. Chcę pokazać takie ustawienia jakie u mnie działały i wyjaśnić problemy jakie spotkałem. Istnieją trzy pliki kontrolujące firewalla. ˇ /etc/services ˇ mówiący systemowi jaki port obsługuje jaką usługę. ˇ /etc/inetd.conf ˇ mówiący serwerowi inetd jaki program wywołać gdy ktoś będzie się dobijał do zadanego portu. ˇ /usr/local/etc/netperm-table ˇ mówiący FWTK kto jest dopuszczony a kogo winno się odrzucać przy danej usłudze. Aby uzyskać poprawne funkcjonowanie FWTK powinieneś wyedytować te pliki poczynając od góry. Edycja jedynie services bez inetd.conf i netperm-table ustawionych prawidłowo uczyni twój system niedostępnym. 77..44..11.. PPlliikk nneettppeerrmm--ttaabbllee Plik ten odpowiada za kontrolę kto ma dostęp do usług nadzorowanych przez TIS FWTK. Powinieneś myśleć o ruch z obu stron firewalla. Ludzie z zewnątrz twojej sieci powinni zidentyfikować się przed otrzymaniem dostępu, ale ludzie z wewnątrz mogą zostać dopuszczeni od razu. Aby ludzie moli się zidentyfikować firewall używa programu o nazwie aauutthhssrrvv do trzymania bazy danych o użytkownikach i ich hasłach. Sekcja dotycząca autentyfikacji w netperm-table pozwala kontrolować gdzie jest trzymana baza danych i kto ma do niej dostęp. Miałem trochę kłopotów z blokowaniem dostępu do usług. Weź pod uwagę że linia którą pokazuję używa '*' do dawania dostępu dla każdego do tej usługi. Prawidłowe ustawienie tej linii jest następujące: ´ją pracującą. # # tablica konfiguracji serwera proxy # # Autentyfikacja: reguły serwera i klienta authsrv: database /usr/local/etc/fw-authdb authsrv: permit-hosts * authsrv: badsleep 1200 authsrv: nobogus true # Aplikacje klienckie używające serwera autentyfikacji *: authserver 127.0.0.1 114 Aby zaincjalizować bazę danych wykonaj su do root`a i uruchom ..//aauutthhssrrvv w katalogu /var/local/etc by stworzyć rekord opisujący administratora systemu. Oto jest przykładowa sesja. Przeczytaj dokumentację FWTK, by dowiedzieć się jak dodać użytkowników i grupy. # # authsrv authsrv# list authsrv# adduser admin " Auth DB admin " ok - user added initially disabled authsrv# ena admin enabled authsrv# proto admin pass changed authsrv# pass admin " plugh " Password changed. authsrv# superwiz admin set wizard authsrv# list Report for users in database user group longname ok? proto last ------ ------ ------------------ ----- ------ ----- admin Auth DB admin ena passw never authsrv# display admin Report for user admin (Auth DB admin) Authentication protocol: password Flags: WIZARD authsrv# ^D EOT # Kontrola przez bramę telnetu (tn-gw) polega na prostym przesłaniu i jest to pierwsza którą powinieneś ustawić. W moim przykładzie pozwoliłem komputerom z wnętrza sieci prywatnej na dostęp bez autentyfikacji (permit-hosts 19961.2.* -passok). Ale inni użytkownicy powinni wprowadzić swoją nazwę użytkownika i hasło. (permit-hosts * -auth) Poza tym pozwoliłem jednemu innemu systemowi (196.1.2.202) na dostęp do firewalla bezpośrednio, bez przechodzenia przez procedury na nim. Sprawiają to dwie linie z inetacl-in.telnetd Wyjaśnię ich działanie potem. Powinieneś zachować krótki czas timeoutu. # reguły dostępu telnetu do firewalla: tn-gw: denial-msg /usr/local/etc/tn-deny.txt tn-gw: welcome-msg /usr/local/etc/tn-welcome.txt tn-gw: help-msg /usr/local/etc/tn-help.txt tn-gw: timeout 90 tn-gw: permit-hosts 196.1.2.* -passok -xok tn-gw: permit-hosts * -auth # Tylko administrator może wykonać telnet na port 24 firewalla. netacl-in.telnetd: permit-hosts 196.1.2.202 -exec /usr/sbin/in.telnetd I to samo z r-command. # reguły dostępu rlogin do firewalla rlogin-gw: denial-msg /usr/local/etc/rlogin-deny.txt rlogin-gw: welcome-msg /usr/local/etc/rlogin-welcome.txt rlogin-gw: help-msg /usr/local/etc/rlogin-help.txt rlogin-gw: timeout 90 rlogin-gw: permit-hosts 196.1.2.* -passok -xok rlogin-gw: permit-hosts * -auth -xok # Tylko administrator może wykonać telnet na port 24 firewalla. netacl-rlogind: permit-hosts 196.1.2.202 -exec /usr/libexec/rlogind -a Nie powinieneś dawać nikomu bezpośredniego dostępu do firewalla, włączając w to dostęp prze FTP (tak pobieranie jak i wkładanie). Jeszcze raz, linie zawierające permit-hosts pozwalają każdemu w chronionej na wolny dostęp do Internetu, zaś wszyscy inni muszą się autentyfikować. Włączyłem zapisywanie każdego pliku pobranego i wysłanego do mojej konfiguracji. (-log { retr stor }) Timeouty FTP dają ci kontrolę nad tym jak długo będą utrzymywane ,,złe'' połączenia i jak długo będą utrzymywane połączenia bez żadnej aktywności. # reguły dostępu ftp do firewalla ftp-gw: denial-msg /usr/local/etc/ftp-deny.txt ftp-gw: welcome-msg /usr/local/etc/ftp-welcome.txt ftp-gw: help-msg /usr/local/etc/ftp-help.txt ftp-gw: timeout 300 ftp-gw: permit-hosts 196.1.2.* -log { retr stor } ftp-gw: permit-hosts * -authall -log { retr stor } WWW, Gopher i bazujące na przeglądarkach FTP jest kontrolowane przez http-gw. Pierwsze dwie linie tworzą katalog gdzie będą składowane pliki i dokumenty z FTP i WWW. Przy czym są one własnością root`a i są składowane w katalogu dostępnym tylko dla niego. Połączenia WWW powinny być bardzo krótki. W ten sposób można kontrolować jak długo użytkownicy będą utrzymywać błędne połączenia. # reguły dostępu dla WWW i Gophera http-gw: userid root http-gw: directory /jail http-gw: timeout 90 http-gw: default-httpd www.afs.net http-gw: hosts 196.1.2.* -log { read write ftp } http-gw: deny-hosts * ssl-gw ustawia się tak samo ja i inne bramy. Bądź z nią ostrożny. W tym przykładzie pozwalam wszystkim z sieci chronionej na łączenie się z każdym z serwerów na zewnątrz z wyjątkiem adresów 127.0.0.* i 192.1.1.* oraz (wtedy) na otwieranie portów 443 do 563 używanych jako znane porty dla SSL. # zasady dla bramy ssl: ssl-gw: timeout 300 ssl-gw: hosts 196.1.2.* -dest { !127.0.0.* !192.1.1.* *:443:563 } ssl-gw: deny-hosts * Poniżej znajduje się przykład jak użyć plug-gw aby pozwolić na połączenie do serwera news. W tym przykładzie zezwalam każdemu z sieci lokalnej na dostęp do tylko jednego systemu i tylko na porcie zajętym przez news. W drugiej linii pozwalam serwerowi news przesłać dane z powrotem do chronionej sieci. Ponieważ większość klientów spodziewa się, że pozostaje podłączenie w czasie gdy użytkownik czyta wiadomości timeout dla news powinien być długi. # brama dla modułu plug-gw i NetNews plug-gw: timeout 3600 plug-gw: port nntp 196.1.2.* -plug-to 199.5.175.22 -port nntp plug-gw: port nntp 199.5.175.22 -plug-to 196.1.2.* -port nntp Brama dla fingera jest prosta. Każdy z chronionej sieci powinien się załogować i wtedy pozwalamy mu na użycie fingera na firewallu. Pozostali nie po prostu dostają wiadomość. # uruchomienie usługi finger netacl-fingerd: permit-hosts 196.1.2.* -exec /usr/libexec/fingerd netacl-fingerd: permit-hosts * -exec /bin/cat /usr/local/etc/finger.txt Nie mam ustawionych usług dla poczty elektronicznej i X-Windows więc nie daję przykładów. Jeśli ktoś ma działający przykład, proszę o przysłanie mi. 77..44..22.. PPlliikk iinneettdd..ccoonnff Oto jest kompletny plik /etc/inetd.conf . Wszystkie niepotrzebne usługi zostały wykomentowane. Włączyłem pełny plik aby pokazać co wyłączyć i jak ustawić nową usługę w ścianie ognia. {od tłumacza: nie przekładam typowych dla tego pliku linii} #echo stream tcp nowait root internal #echo dgram udp wait root internal #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal # brama FTP w ścianie ognia ftp-gw stream tcp nowait.400 root /usr/local/etc/ftp-gw ftp-gw # brama Telnetu w ścianie ognia telnet stream tcp nowait root /usr/local/etc/tn-gw /usr/local/etc/tn-gw # local telnet services telnet-a stream tcp nowait root /usr/local/etc/netacl in.telnetd # brama Gophera w ścianie ognia gopher stream tcp nowait.400 root /usr/local/etc/http-gw /usr/local/etc/http-gw # brama WWW w ścianie ognia http stream tcp nowait.400 root /usr/local/etc/http-gw /usr/local/etc/http-gw # SSL w ścianie ognia ssl-gw stream tcp nowait root /usr/local/etc/ssl-gw ssl-gw # NetNews firewall proxy (using plug-gw) nntp stream tcp nowait root /usr/local/etc/plug-gw plug-gw nntp #nntp stream tcp nowait root /usr/sbin/tcpd in.nntpd # SMTP (email) w ścianie ognia #smtp stream tcp nowait root /usr/local/etc/smap smap # # Shell, login, exec and talk are BSD protocols. # #shell stream tcp nowait root /usr/sbin/tcpd in.rshd #login stream tcp nowait root /usr/sbin/tcpd in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd in.rexecd #talk dgram udp wait root /usr/sbin/tcpd in.talkd #ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd #dtalk stream tcp waut nobody /usr/sbin/tcpd in.dtalkd # # Pop and imap mail services et al # #pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d #imap stream tcp nowait root /usr/sbin/tcpd imapd # # The Internet UUCP service. # #uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l # # Tftp service is provided primarily for booting. Most sites # run this only on machines acting as " boot servers. " Do not uncomment # this unless you *need* it. # #tftp dgram udp wait root /usr/sbin/tcpd in.tftpd #bootps dgram udp wait root /usr/sbin/tcpd bootpd # # Finger, systat and netstat give out user information which may be # valuable to potential "system crackers." Many sites choose to disable # some or all of these services to improve security. # # cfinger is for GNU finger, which is currently not in use in RHS Linux # finger stream tcp nowait root /usr/sbin/tcpd in.fingerd #cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd #systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx #netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet # # Time service is used for clock syncronization. # #time stream tcp nowait root /usr/sbin/tcpd in.timed #time dgram udp wait root /usr/sbin/tcpd in.timed # # Authentication # auth stream tcp wait root /usr/sbin/tcpd in.identd -w -t120 authsrv stream tcp nowait root /usr/local/etc/authsrv authsrv # # End of inetd.conf 77..44..33.. PPlliikk //eettcc//sseerrvviicceess Tutaj się wszystko zaczyna. Gdy klient łączy się ze ścianą ognia dzieje się to na tzw. dobrze znanym porcie (niższym od 1024). Na przykład telnet łączy się na porcie 23. Serwer inetd słyszy prośbę o połączenie, i szuka nazwy tej usługi w /etc/services. Później wzywa programy wyznaczony dla tej usługi w /etc/inedt.conf Niektóre z usług nie są normalnie tworzone przez wywołanie w /etc/serwices. Można przydzielać niektóre porty jak chcemy, Na przykład ja przydziałem usłudze ,,telnet administratora'' (telnet-a) port 24. Ty możesz przydzielić tę usługę na portowi 2323, jeśli chcesz. Dla administratora (CIEBIE) bezpośrednie połączenie ze ścianą ognia na porcie 24 nie 23 noże być potrzebne, jeśli masz ustawioną swoją chronionej sieci. telnet-a 24/tcp ftp-gw 21/tcp # this named changed auth 113/tcp ident # User Verification ssl-gw 443/tcp 88.. SSeerrwweerr pprrooxxyy SSOOCCKKSS 88..11.. KKoonnffiigguurroowwaanniiee sseerrwweerraa PPrrooxxyy SOCKS proxy server dostępny jest z adresu: <ftp://sunsite.unc.edu/pub/Linux/system/Network/misc/socks-linux- src.tgz>. Zawiera przykładowy plik konfiguracyjny w katalogu nazwanym: " socks-conf " . Zdekompresuj i untaruj te pliki w dowolnym katalogu i postępuj według instrukcji. Miałem kilka problemów kiedy kompilowałem go. Upewnij się, że twój Makefile jest prawidłowy. Jedną z ważniejszych rzeczy jest pamiętanie o konieczności dodania serwera proxy do /etc/inetd.conf. Aby móc odpowiedzieć na żądania musisz dopisać następującą linię: socks stream tcp nowait nobody /usr/local/etc/sockd sockd 88..22.. KKoonnffiigguurraaccjjaa sseerrwweerraa pprrooxxyy Program SOCKS potrzebuje dwóch oddzielnych plików konfiguracyjnych. Jeden z nich mówi tym komu udzielić dostępu a drugi w jaki sposób przekazywać żądania do właściwego serwera proxy. Plik decydujący o dostępie powinien znajdować się na serwerze. Plik dotyczący przekazywania dostępu (routingu) powinien znajdować się na każdej z maszyn Unixowych. W wypadku DOSa i częściowo MaCów komputery powinny mieć swój własny routing. 88..22..11.. AAcccceessss FFiillee PPlliikk ddoossttęęppuu.. W wersji 4.2 Beta SOCSKsów plik dostępu nazywa się " sockd.conf " . powinien zawierać dwie linie: zezwolenia i zakazu. Każda z linii posiada trzy pozycje: ˇ identyfikator (permit/deny) ˇ adres IP ˇ modyfikator adresu Identyfikator to permit lub deny Powinieneś użyć obu: każdy we właściwej linii. Adres IP powinien zawierać czterobajtowy adres w typowej dal IP notacji. np. 192.168.2.0. Modyfikator adresu także jest normalnym IP i pracuje jak maska. Rozwinięcie tego adresu da 32 bity (1 albo zero). Na przykład, w tej linii: permit 192.168.2.23 255.255.255.255 zezwalam na dostęp maszynom w których adres pasuje co do bitu z zadanym: pasuje tu tylko 192.168.2.23 permit 192.168.2.0 255.255.255.0 zezwala na dostęp maszynom z gdyby od 192.168.2.0 do 192.168.2.255, w formie całej klasy C. Nie powinieneś mieć następującej linii: permit 192.168.2.0 0.0.0.0 dającej dostęp dla wszystkich adresów. Tak więc pierwsza linia daje zezwolenie dla tych adresów którym chcesz go dać, a druga zakazuje reszcie. Aby zezwolić na dostęp wszystkim z klasy 192.168.2.xxx potrzeba linii: permit 192.168.2.0 255.255.255.0 deny 0.0.0.0 0.0.0.0 Zwróć uwagę na pierwsze " 0.0.0.0 " w linii zakazu. Z maską 0.0.0.0 taki adres nie istnieje. Wszystkie zera zostały tam wprowadzone bo są łatwe do zapisu. Dopuszczalne jest umieszczenie większej ilości jeden zapisów w każdej z linii. Konkretni użytkownicy mogą ponadto otrzymać lub tracić prawo dostępu. jest to wykonywane przy pomocy autentyfikacji przy pomocy ident. Nie wszystkie systemu używają ident, włączając w to Trumpet Winsock , dlatego też nie włączam tu przykładów. Dokumentacja do SOCKS jest całkiem dobra w tej kwestii. 88..22..22.. TTaabblliiccaa ttrraassoowwaanniiaa Tablica routingu w SOCS jest niestety nazywana socks.conf. Tablica routingu mówi klientom SOCKS kiedy używać socks a kiedy nie. Na przykład, w twojej sieci 192.168.2.3 nie potrzebuje używania socks do połączenia z 192.168.2.1. Po prostu łączy się bezpośrednio, po Ethernecie. Definiuje się automatycznie 127.0.0.1 jako loopback. Oczywiste jest, że nie potrzebujesz rozmawiać przez ścianę ogniową z samym sobą... Są trzy typy rekordów: ˇ deny ˇ direct ˇ sockd Deny mówi SOCKS kiedy ma odmówić żądaniu. Rekord ten ma takie same trzy pola jak sockd.conf: identyfikator, adres i maska. Ogólnie, dopóki jest to modyfikowane przez sockd.conf, maska w pliku dostępu jest ustawiona na 0.0.0.0. Jeśli chcesz pozwolić na dzwonienie do siebie możesz to zrobić tutaj. Rekord direct mówi które do których adresów nie używać SOCKS. Te adresy będą doręczone bez serwera proxy. Jeszcze raz, mamy trzy pola: identyfikator, adres i maska. direct 192.168.2.0 255.255.255.0 W ten sposób kierujesz bezpośrednio cały ruch w chronionej sieci. Rekord z sockd mówi komputerowi które z hostów są serwerem SOCKS Składnia jest następująca: sockd @=<serverlist> <IP address> <modifier> Zwróć uwagę na fragment: @= . Pozwala on na wprowadzenie listy ser­ werów proxy. W naszym przykładzie używamy tylko jednego. Ale możesz mieć wiele w celu zwiększenia przepustowości i obniżenia możliwości awarii. Pola adresu IP i maski działają jak w innych przykładach. Specyfikujesz adres i zakres jego obowiązywania. 88..22..33.. zzaaddaanniieemm.. PPoottrrzzeebbaa jjeeddyynniiee uussttaawwiieenniiaa DDNNSS nnaa mmaasszzyynniiee zz ffiirree­­ wwaalllleemm.. II iinnnnee mmaasszzyynnyy zzaa ffiirreewwaalllleemm bbęęddąą ggoo uużżyywwaałłyy.. DDNNSS zzzzaa ffiirree­­ wwaallllaa UUssttaawwiieenniiee uussłłuuggii DDNNSS zzzzaa ffiirreewwaallllaa jjeesstt pprroossttyymm 88..33.. WWssppóółłpprraaccaa zz sseerrwweerraammii pprrooxxyy 88..33..11.. UUnniixx Aby twoje aplikacje działały z serwerami proxy potrzebujesz je zsockisy... ( " sockified " ). Będziesz potrzebował dwóch różnych telnetów (jeden do komunikacji bezpośredniej drugi przez serwer proxy). SOCKS przychodzą z instrukcją jak zSOCKifikować program, i z paroma programami przygotowanymi na tę modłę. Jeśli używasz zSOCKIfowanej wersji gdziekolwiek bezpośrednio SOCKS automatycznie przełączy cię na właściwą wersję. Z tego powodu trzeba zmienić nazwy wszystkich programów w naszej chronionej sieci i zstąpić je wersjami zSOCKisowanymi. Finger stanie się finger.orig, telnet stanie się telnet.orig i tak dalej. Musisz powiedzieć SOCKS o każdym w pliku include/socks.h. Dobre programy są w stanie dostarczać tablic trasowania i zsocksifikować się same. Jednym z nich jest Netscape Navigator. Możesz używać serwerów proxy przez wprowadzenie adresu serwera (192.168.2.1 w naszym wypadku) w polu SOCKs w Menu Proxies. Każda aplikacja potrzebuje przynajmniej minimalnej informacji o tym co jest serwerem proxy. 88..33..22.. MMSS WWiinnddoowwss ii TTrruummppeett WWiinnssoocckk Trumpet Winsock przychodzi z wbudowanymi możliwościami współpracy z serwerem proxy. W setup menu wprowadź adres serwera, i adresy komputerów dostępnych bezpośrednio. Program przekieruje na serwer wszystkie pakiety mające wyjść na zewnątrz. 88..33..33.. UUssttaawwiieenniiee sseerrwweerraa ppoośśrreeddnniicczząącceeggoo ddoo pprraaccyy zz ppaakkiieettaammii UUDDPP.. Pakiet SOCKS pracuje jedynie z pakietami TCP, pomijając UDP. Powoduje to trochę mniejszą jego użyteczność. Wiele użytecznych programów, takich jak na przykład talk i Archie używa UDP. Jest jednak pakiet który może być użyty jako serwer proxy dla UDP: UDPrelay stworzony przez Toma Fitzgeralda <fitz@wang.com>. Niestety w chwili pisania tego tekstu nie jest on zgodny z Linuxem. 88..44.. WWaaddyy sseerrwweerróóww pprrooxxyycchh Serwer proxy, jak pokazałem powyżej jest narzędziem bezpieczeństwa. Używanie go zwiększa dostępność do Internetu z ograniczoną liczbą adresów wiąże się jednak z wieloma niedogodnościami. Serwer proxy pozwala na większą dostępność internetu z sieci chronionej, ale pozostawia wnętrze całkowicie niedostępne z zewnątrz. Oznacza to brak możliwości uruchomienia wewnątrz sieci rozmaitych serwerów, talk i archie, oraz bezpośredniego wysyłania listów do chronionej sieci. Poniższe uchybienia wyglądają nieznacząca, ale sposób myślenia przebiega następująco: ˇ Otrzymałeś informację o błędach w twojej chronionej sieci. Jesteś w domu, i decydujesz się sprawdzić to. Ale nie możesz. Nie jesteś w stanie dostać się do żadnego z komputerów ponieważ znajdują się za ścianą ogniową. ˇ Twoja córka poszła do college`u. Chciałbyś wysłać jej list. Chcesz z nią porozmawiać o pewnych prywatnych sprawach, i wolałbyś raczej by twoja poczta była kierowana bezpośrednio na twój komputer. Ufasz swojemu administratorowi, ale to jednak prywatna poczta. ˇ Niemożliwość użycia usług działających z UDP jest wielką wadą serwerów proxych. Choć mam nadzieję, że już niedługo. Przypadek FTP pokazuje jeszcze jeden problem z serwerami proxymi. Kiedy pobieram pliki lub wydaję komendę ls, serwer FTP otwiera gniazdo (,,socket'') na maszynie klienckiej i wysyła o tym informację. Serwer proxy nie pozwala na to, tak więc FTP nie działa w sposób prawidłowy. Poza tym serwery pośredniczące działają powoli. Z powodu większej wydajności większość innych metod dostępu do Internetu będzie szybsza. Jeśli masz przydzielony adres IP, i nie martwisz się o bezpieczeństwo, nie używaj ścian ogniowych i/lub serwerów proxych. Jeśli nie masz nr. IP, i także nie martwisz się o bezpieczeństwo swojej sieci, możesz użyć jednego z ,,emulatorów IP'' takich jak Term, Slirp lub TIA. Term jest dostępny z <ftp://sunsite.unc.edu/>, Slirp z <ftp://blitzen.canberra.edu.au/pub/slirp>, zaś TIA z <http://markertplace.com/>. Pakiety te pracują szybciej, pozwalają na szybsze połączenia i na większy dostęp z sieci wewnętrznej do internetu. Serwery pośredniczące są dobre dla tych który mają duże sieci z komputerami mającymi mieć dostęp ,,w locie'' do internetu z jednorazowym ustawieniem, i minimalnym wkładem pracy potem. 99.. KKoonnffiigguurraaccjjaa zzaaaawwaannssoowwaannaa.. Przedstawiłem jedną konfigurację, którą wypróbowałem przez stworzeniem tego dokumentu. Przy czym ten zarys powinien wystarczyć dla większości ludzi. Myślę że poniższy opis zaawansowanych konfiguracji może rozwiać pozostałe wątpliwości. Jeśli oprócz tego masz jeszcze jakieś pytania poza tym co opisałem, albo cię to po prostu interesują cię szczegóły związane ze firewallami i serwerami proxy możesz przeczytać poniższy fragment. 99..11.. WWiieellkkiiee ssiieeccii wwyymmaaggaajjąą ppoołłoożżeenniiaa nnaacciisskkuu nnaa bbeezzppiieecczzeeńńssttwwoo Powiedzmy, na przykład, że jesteś szefem milicji obywatelskiej i chcesz ,,usieciowć'' swoją siedzibę. Masz pięćdziesiąt komputerów i 32 nr IP (5 bitów). Potrzebujesz możliwości dania różnych poziomów dostępu do sieci ponieważ powierzasz swoim współpracownikom różne zadania. Poza tym będziesz potrzebował izolacji określonych miejsc w sieci od reszty. Poziomy dostępu: 1. Poziom zewnętrzny - ukazywany wszystkim, tutaj werbujesz i zdobywasz nowych ochotników. 2. TTrroooopp poziom ten przeznaczony jest dla ludzi którzy otrzymali dostęp z poziomu zewnętrznego. Tutaj jest miejsce gdzie uczysz o rządzie dusz i jak zrobić bombę. 3. MMeerrcceennaarryy Tutaj jest miejsce gdzie _n_a_p_r_a_w_d_ę planujesz chronić. Tutaj składujesz wszelkie informacje o tym jak rządy trzeciego świata zamierzają podbić świat, twoje plany dla Newt Gingich, Oklahoma City, składujesz tajne informacje. 99..11..11.. KKoonnffiigguurraaccjjaa ssiieeccii Numery IP są ustawione w następujący sposób: ˇ 1 numer to 192.168.2.255, będący adresem rozgłoszeniowym nie używanym ˇ 23 z 32 adresów IP jest przydzielonych dla maszyn dostępnych w Internecie. ˇ 1 dodatkowy adres IP został przydzielony Linuxowi ˇ 1 dodatkowy adres IP został przydzielony innemu linuxowi ˇ 2 numery IP zostały przydzielone routerowi ˇ 4 pozostałe pozostają odłączone ale otrzymują nazwy domenowe: paul, ringo, john, george . ˇ chroniona sieć ma numer 192.168.2.xxx Teraz budujemy dwie izolowane sieci, każda w innym pokoju. Są one trasowane przez ekranowany ethernet i są kompletnie niewidoczne z innych pomieszczeń. Na szczęście ekranowany Ethernet zachowuje się tak samo jak zwyczajny ethernet. Każda z tych sieci jest połączona do jednej ze stacji linuxowych na dodatkowych adresach IP. Są to serwery plików połączone do obu chronionych sieci. Jest tak, ponieważ planujemy dać dostęp tak dla sieci Troops ja i wyższej. Serwer plików nosi numery 192.168.2.17 dla sieci Troop i 192.168.2.23 dla sieci Mercenary. Mają różne adresy ponieważ mają dwie różne karty sieciowe. network. IP Forwarding jest wyłączony. IP Forwarding na obu stacjach linuxowych także jest wyłączony. Router nie powinien przesyłać pakietów przeznaczonych dla sieci 192.168.2.xxx dopóki mu tego wprost nie powiemy, tak więc dostęp do internetu pozostaje wyłączony. Wyłączenie przesyłania IP ma na celu zablokowanie połączeń z sieci Troop do sieci Mercenary na odwrót. Serwer NFS może ponadto oferować różne pliki dla różnych sieci. To łatwe przy drobnych operacjach z symbolicznymi odniesieniami można zrobić w ten sposób że wspólne pliki są dzielone przez wszystkich. Użycie tego typu ustawień i różnych kart sieciowych umożliwia Ci zastosowanie jednego serwera plików dla trzech sieci. 99..11..22.. SSeerrwweerr pprrooxxyy Teraz, dopóki wszystkie trzy poziomu będą możliwe do pracy w ramach wyznaczonych zadań będą potrzebowały dostępu do sieci. Zewnętrzna sieć jest połączona bezpośrednio z internetem, tak więc nie ma tu zastosowania dla serwera pośredniczącego. Sieci Mercenary i Troop znajdują się za ścianą ogniową więc potrzebny im serwer proxy. Konfiguracja obu jest bardzo podobna. Oba mają takie same adresu IP. Jedyna różnica polega na nieco innych parametrach. 1. Nie każdy może użyć serwera plików dla dostępu do Interntu. Wystawia to go na wirusy i inne brzydkie rzeczu. 2. Nie chcemy zezwolić sieci Troop na dostęp do WWW. Przechodzą szkolenie I jaki kolwiek przepły informacji mógłby zniszczyć jego efekty. Tak więc w pliku sockd.conf w linuxie w sieci Troop znajdzie się następująca linia. deny 192.168.2.17 255.255.255.255 a w stacji przeznaczonej dla Mercenary: deny 192.168.2.23 255.255.255.255 Teraz w stacji linuxowej sieci Troop wpisujemy: deny 0.0.0.0 0.0.0.0 eq 80 Ten tekst mówi że zabraniamy dostępu wszystkich maszynom próbującym się dostać do portu równego (eq) 80 (http). Nadal pozwala się na dostęp do wszystkich usług z wyjątkiem WWW. Teraz oba pliki powinny zawierać linie: permit 192.168.2.0 255.255.255.0 by zezwolić wszystkim komputerom z sieci 192.168.2.xxx na użycie tego serwera pośredniczącego zamiast tego który został zakazany (np. ser­ wer plików i dostęp do WWW z sieci Troop). W sieci Troop w pliku sockd.conf powinien wyglądać w ten sposób: deny 192.168.2.17 255.255.255.255 deny 0.0.0.0 0.0.0.0 eq 80 permit 192.168.2.0 255.255.255.0 a w sieci Mercenary mniej więcej tak: deny 192.168.2.23 255.255.255.255 permit 192.168.2.0 255.255.255.0 To powinno zakończyć konfigurację wszystkiego. Każda z sieci jest izolowana, z prawidłowymi ustawieniami interakcji. Każdy powinien być szczęśliwy. Dalej... Podbij świat... 1100.. OOdd ttłłuummaacczzaa.. Zdaję sobie sprawę ile w tym tekscie jest potknięć językowych, przeinaczeń. Jeśli któreś cię drażnią prześlij mi swoje uwagi. Aha, jeszcze jedno. Wyrażenia firewall i ściana ogniowa oraz proxy i serwer pośredniczący traktuję (przynajmniej na razie) zamiennie. (choc już większość polskich odpowiedników (na życzenie publiczności) usunąłem. Celowo pozostawiam tekst bez zwyczajowego (c) tłumacza ;-) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Ftape-HOWTO.pl.txt�����������������������������������������������������0100664�0001750�0001750�00000201264�06717116340�017513� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ftape-HOWTO - streamery w Linuxie - jak to zrobić Autor : Kevin Johnson, <kjj@pobox.com> v2.0, 15 Marca 1997 _W_e_r_s_j_a _p_o_l_s_k_a _: _J_a_k_u_b _C_h_m_i_e_l_e_w_s_k_i _y_a_c_o_o_b_@_m_a_n_a_g_e_r_._a_e_._w_r_o_c_._p_l _v_0_._9_9_._1_, _6 _l_i_p_c_a _1_9_9_7 _r_o_k_u_. Dokument ten zawiera najważniejsze przykazania dotyczące sterownika ftape. Sterownik ten obsługuje napędy zgodne z QIC-40, QIC-80, QIC-3010 i QIC-3020. Standardy QIC-3010 i QIC-3020 znane są też jako Niniejszy tekst nniiee ddoottyycczzyy urządzeń SCSI ani streamerów zgodnych z QIC-02. Napędy DAT zazwyczaj (zawsze?) komunikują się z komputerem przez sterownik SCSI. Tekst ten jest jednym z wielu dokumentów HOWTO. Listę tych prac można znaleźć tutaj <http://sun­ site.icm.edu.pl/pub/Linux/doc/HOWTO> a same dokumenty można ściągnąć przez ftp z ftp.icm.edu.pl, ftp.pwr.wroc.pl (to są polskie mirrory) lub z sunsite.unc.edu:pub/Linux/doc/HOWTO. Można też je oglądać na WWW - każdy mirror LDP ______________________________________________________________________ Table of Contents: 1. Legalności 2. Historia uaktualnień 3. Wstęp 3.1. Co to jest 4. Instalacja 4.1. Gdzie można znaleźć 4.2. Instalacja sterownika 4.3. Śledzenie rozwoju 4.4. Współpraca 5. Taśmy i streamer w użyciu 5.1. Formatowanie 5.1.1. Czy można formatować taśmy pod Linuxem? 5.1.2. Jakich programów używać do formatowania taśm (dla DOS'u)? 5.2. Retenstioning 5.3. Czyszczenie napędu 5.4. Napędy współpracujące z 5.5. kontrolery współpracujące z 5.5.1. Iomega Ditto Dash i inne kontrolery 2Mbps 5.6. Napędy 5.7. Współpraca zewnętrznego streamera z 5.8. Płyty główne PCI i 6. Archiwizowanie i odtwarzanie danych 6.1. Archiwizowanie 6.2. Odtwarzanie danych 6.3. Weryfikacja archiwum 6.4. Zapisywanie kilku(nastu) archiwów na jednej taśmie 6.5. Dołączanie nowych plików do archiwum 6.6. Montowanie/demontowanie 7. Tworzenie dyskietki systemowej (startowej) dla 8. Często zadawane pytania (FAQ) 8.1. Czy 8.2. Jak szybki jest 8.3. Jak zmienia się ,,trace-level''? 8.3.1. Sposób 1. 8.3.2. Sposób 2. Zmiana ,,trace-level'' przy pomocy 8.3.3. Sposób 3. Rekompilacja sterownika 8.4. Czy mogę wymieniać taśmy z kimś, kto używa MS-DOS? 8.5. Jak to zrobić ... z 8.6. Transfer danych przez DMA powoduje pojawianie się błędów ECC 8.7. (TT 8.8. Co to są te ,,versioned symbols''? 8.9. (TT 8.10. (TT 8.11. Gdzie mogę znaleźć binaria/kody źródłowe/strony podręcznika programów 8.12. Gdzie można znaleźć informacje na temat standardu QIC? 8.13. Jaką wielkość bloku powinienem stosować używając 8.14. (TT 8.15. Syslogd przesadza z ilością komunikatów 8.16. ,,Polerowanie'' 8.17. Próbując skompilować 8.18. Co robi ' 8.19. Help! W pliku syslogu system raczy mnie komunikatem 8.20. Czy wszysko jest w porządku, gdy wykonując komendę 9. Odpluskwianie sterownika 9.1. Jądro/ 9.2. No dobra, to błąd - jak go zgłośić? 10. Podziękowania 11. Od tłumacza 11.1. Obsługa napędów podłączanych do portu równoległego 11.2. Słowo o Ftape-HOWTO-pl 11.2.1. Zmiany 11.2.2. Adres 11.2.3. ,,Feedback'' czyli wszelkie ______________________________________________________________________ 11.. LLeeggaallnnoośśccii Niniejszy dokument (ftape-HOWTO) może być reprodukowany i rozprowadzany w całości pod następującymi warunkami: Copyright (c) 1993-1996 by Kai Harrekilde-Petersen Email: khp@dolphinics.no Copyright (c) 1996-1997 by Kevin Johnson Email: kjj@pobox.com Tłumaczenie na język polski: Copyright (c) 1997 by Jakub Chmielewski Email: yacoob@manager.ae.wroc.pl Linux ftape-HOWTO jest darmowy; możesz go kopiować, modyfikować zachowując jednak postanowienia wesji drugiej (i następnych) Licencji GNU General Public Licence opublikowanej przez Free Software Foundation. Dokument ten został napisany aby pomóc/usprawnić pracę użytkowników systemu Linux, jednak autor NIE DAJE ŻADNYCH GWARANCJI. Więcej szczegółów znajdziesz w GNU General Public Licence. Autor zachęca do kopiowania i dytrybucji niniejszego dokumentu w celach prywatnych jak i komercyjnych, pod warunkiem, że pozostają one w zgodzie z zaleceniami GNU General Public Licence. Oznacza to, że można go kopiować jednak bez żadnych opłat (z wyjątkiem tych pokrywających koszty reprodukcji) - czyli bez zysku. Autor (no i tłumacz) wyraża niniejszym zgodę na reprodukowanie swojej pracy w jakiejkolwiek postaci - fizycznej bądź elektronicznej. Uwaga! Prace oparte na Linux ftape-HOWTO (w szczególności tłumaczenia) muszą być dostępne zgodnie z GNU General Public Licence i oryginalny copyright musi zostać nienaruszony. Jeśli dodałeś nowe informacje do tego dokumentu, musisz utworzyć jego tekst źródłowy (tzn w formacie SGML) aby móc go uaktualniać. Prześlij, proszę swoje uaktualnienia do autora: kjj@pobox.com. Pozwoli to na dołączenie twoich informacji do oryginału i pozwoli wszystkim się z nimi zapoznać. Autor zachęca do załączania niniejszego dokumentu do dokumentacji twoich programów. Zgodnie z wcześniejszym zezwoleniem możesz ten tekst drukować lub w innej formie przekazywać osobom trzecim (oczywiście zachowując copyright). Możesz także, jeśli uznasz to za stosowne dołączyć odpowiedni ,,dodatek instalacyjny'' dotyczący twojego programu lub zmienić treść odpowiednich rozdziałów. Autor chciałby być informowany o jakichkolwiek planach publikowania tego tekstu w celach komercyjnych. Zapewni to Tobie dostęp do aktualnych wersji dokumentu. Jeśli zdarzy się, że jego nowsza wersja będzie miała ukazać się lada dzień, może zechcesz poczekać z publikacją twojej pracy do czasu ukazania się najświeższej wersji. Jeśli rozprowadzasz ten dokument w celach komercyjnych, wszelkie wartości materialne (finansowo płynne) jak i wydrukowane egzemplarze dokumentu przekazane autorowi spotkają się z jego wielką wdzięcznością. Wesprzesz w ten sposób autorów darmowego oprogramowanie oraz Linux Documentation Project. Jeśli masz pytania, komentarze, oto adres autora: kjj@pobox.com. 22.. HHiissttoorriiaa uuaakkttuuaallnniieeńń wweerrssjjaa 22..00 ((1155..33..11999977)) ˇ opis ftape w wersji 2.11 i 3.xx ˇ mnóstwo innych uaktualnień wweerrssjjaa 11..99 ((2200..99..11999966)) ˇ Nowy administrator ftape i HOWTO. ˇ Kilka drobnych poprawek w formatowaniu i ortografii. ˇ Uaktualnienie do wersji 2.0 jądra. ˇ Dodane niektóre informacje o ftape autorstwa Andrewa Martina. wweerrssjjaa 11..88 ((2222..55..11999966)) ˇ Zmieniony Copyright (zgodny z GNU GPL v2) ˇ Zmienił się adres email administratora. ˇ uaktualnienie do ftape-2.08 ˇ ftape jest teraz częścią jądra. wweerrssjjaa 11..77..11 ((1133..22..11999966)) ˇ Uaktualnienie do ftape-2.06b wweerrssjjaa 11..77 ((JJaannuuaarryy 2288..11..11999966)) ˇ Uaktualnienie do ftape-2.06 i modułów-1.3.57 wweerrssjjaa 11..66..22 ((2233..11..11999966)) ˇ Dodano opis Connor TST3200R. ˇ Uaktualnino informacje o 2Mbps FDC. wweerrssjjaa 11..66..11 ((1166..11..11999966)) ˇ drobne poprawki wweerrssjjaa 11..66 ((1100..11..11999966)) ˇ Nowy administrator ftape'a ˇ Uaktualnienie do w2.05 ˇ Dodane nowe napędy 33.. WWssttęępp Sterownikiem ftape i jego źródłami administruje Claus Heine <claus@momo.math.rwth-aachen.de>. Jego strona WWW znajduje się w http://samuel.math.rwth-aachen.de/~LBFM/claus/ftape/ftape-page.html. Jeśli masz jakieś problemy, pytania związane z ftape, spróbuj umieścić je na liście linux.dev.tape. Jest to lista Usenet, która jest kopią listy dyskusyjnej linux-tape@vger.rutger.edu (zobacz też punkt ``Śledzenie rozwoju ftape'a'') Polecam korzystanie z grup dyskusyjnych zamiast bezpośrednio z listy, ponieważ serwer vger jest co nieco przeciążony listami. Wracając do streamerów osobiście używam ftape (to mój głównym środek archiwizacji danych na mojej maszynce :-). Nie chciałbym tutaj polecać jakiegokolwiek sprzętu. Ja używam Iomega Ditto Tape Insider 3200 i jest dla mnie wystarczający. Lista urządzeń obsługiwanych przez sterownik znajduje się w punkcie ``Napędy współpracujące z ftape'm''. Jeśli masz jakieś kłopoty ze streamerem a znalazłeś jakieś rozwiązanie podziel się swoimi uwagami z innymi (lista dyskusujna - linux.dev.tape) oraz ze mną (<kjj@pobox.com>). Swoją pocztę przeglądam zwykle kilka razy na tydzień, staram się też odpowiadać na każdy list, ale nie mogę gwarantować, że odpiszę natychmiast. Często też przeglądam listy dyskusyjne linux.dev.tape oraz kernel'a Jeśli niniejszy tekst dotarł do ciebie w formie drukowanej, lub też tylko w części odwiedź proszę stronę the Linux Documentation home page <http://sunsite.unc.edu/mdw/linux.html> lub ftp to <ftp://sunsite.unc.edu:/pub/Linux/doc/HOWTO> aby dowiedzieć się czy nie ma nowszej wersji tego tekstu. Może to zaoszczędzić ci wiele kłopotu. Jeśli zechcesz do mnie napisać, umieść proszę nagłówek ftape w linijce tematu listu. Może to uchronić twój list przed wirtualną śmiercią, 33..11.. CCoo ttoo jjeesstt ffttaappee ftape jest sterownikiem, który obsługuje różne typy tanich streamerów podłączanych do kontrolera dyskietek. ftape nie jest programem archiwizującym - jest tylko sterownikiem, który pozwala używać tasiemca (tak samo jak sterownik SoundBlaster'a pozwala wykorzystać tę kartę) poprzez pliki /dev/[n]rft[0-3]. Pierwsze wersje ftape zostały napisane przez Bas'a Laarhoven'a z ,,niewielką pomocą ze strony przyjaciół'', którzy pomogli rozgryźć ECC (Error Correcting Code). Prawa autorskie do ftape'a należą do Bas'a i są zgodne z GNU Genral Public Licence, która to mówi: ,,spoko, możesz kopiować i rozdawać ttoo, tylko pozwól i innym to robić''. ftape jest już od dłuższego całkiem stabilnym sterownikiem. Jest wystarczająco bezpieczny aby na taśmach można było składować ważne dane (chociaż dobrym nawykiem jest sprawdzać swoje archiwa co jakiś czas, żeby nie być (nie)mile zaskoczonym pewnego pięknego poranka...). ftape współpracuje z napędaami zgodnymi ze specyfikacją QIC-117 oraz z jednym z następujących standardów: QIC-80, QIC-40, QIC-30101 lub QIC-3020. ftape nie współpracuje z napędami QIC-02, IDE (ATAPI) ani SCSI. Współpraca z napędami SCSI jest możliwa dzięki plikom /dev/[n]st[0-70 oraz jądru, które zawiera sterowniki SCSI. Informacje o napędach SCSI można znaleźć w SCSI-howto. Urządzenia ATAPI są obsługiwane przez kernel (jądro) od wersji 1.3.46. Zajrzyj do punktów ``Napędy współpracujące z ftape'' oraz ``Napędy nie współpracujące z ftape'', w których znajduje się spis tych urządzeń. 44.. IInnssttaallaaccjjaa ffttaappee'a 44..11.. GGddzziiee mmoożżnnaa zznnaalleeźźćć ffttaappee Wersje 2.0.x jądra zawierają sterownik ftape w wersji 2.08. Jednak najlepiej zdobyć najnowszą wersję kodu źródłowego. Nowsza wersja zawiera pliki nie dołączone do jądra oraz dużo bogatszą dokumentację dotyczącą instalacji itd. Najświeższe wersje sterownika (2.11a i wyżej) dostępne są na stronie http://samuel.math.rwth-aachen.de/~LBFM/claus/ftape/ftape-page.html. Gdy piszę ten dokument dostępna jest już wersja 3.xx ftape'a. Niemniej polecam starsze wydanie (2.xx), chyba że masz ochotę igrać z ogniem (3.xx jest wersją rozwojową i z pewnością ma kilka robaczków :-) ). 44..22.. IInnssttaallaaccjjaa sstteerroowwnniikkaa Niniejszy punkt zawiera informacje dotyczące instalacji sterownika w2.11a i czynnościach, które muszą ją poprzedzać. Zakładam, że masz już skompresowany kod źródłowy (najprawdopodobniej ftape-2.11a.tar.gz). Umieść go w katalogu docelowym (np /usr/src lub ~/src) rozpakuj komendą tar xvzf ftape-2.11a.tar.gz Wszystkie pliki zostaną umieszczone w podkatalogu ftape-2.11a czyli w /usr/src/ftape-2.11a albo ~/src/ftape-2.11a. Można też wrzucić cały pakiet do /usr/src/linux/drivers/char/ftape ale osobiście radzę najpierw przeczytać dokumentację a potem zdecydować gdzie go umieścić. Na początek przeczytaj plik README - zawiera on bardzo ważne informacje. Jeśli autor radzi zajrzeć do innych plików i zapoznać się z ich treścią - zrób to. Uchroni cię to przed przykrymi niespodziankami później i znacznie uprości dalszą instalację. Dobra rada: NIE rozpoczynaj instalacji (kompilacji) pakietu jeśli dokładnie nie przeczytałeś README lub Install-guide. W pliku README autor wspomina o liście dyskusyjnej linux-tape. Ja radzę jednak zapisać się na linux.dev.tape, ponieważ serwer obsługujący tą pierwszą jest, jak już wspominałem, przeładowany. Są dwa sposoby korzystania z ftape'a ˇ Skompilować sterownik jako stałą część jądra. ˇ Skompilować go jako moduł. Pierwsza metoda będzie zapewne nastręczać mniej kłopotów. Zaletą drugiej jest fakt, że moduł ładowany jest do pamięci tylko wtedy, gdy jest potrzebny (zawsze można go zdeinstalować bez konieczności przeładowania systemu). Autor wczesnych wersji sterownika (Bas Laarhoven) twierdzi jednak, że nie był on przeznaczony do kompilacji jako moduł (_o_d _t_e_g_o _c_z_a_s_u _w_i_e_l_e _s_i_ę _z_m_i_e_n_i_ł_o _i _t_e_r_a_z _f_t_a_p_e działa bez zarzutu w obydwu wersjach - przynajmniej u mnie - tłumacz :) ). Na swoim komputerze sterownik kompiluję bezpośrednio do jądra. Myślę, że jest to lepsze rozwiązanie, ponieważ mniej jest z tym problemów. Radzę tak właśnie zrobić, chyba że masz dobry powód aby postąpić inaczej i jesteś przygotowany na komplikacje, które mogą wyniknąć podczas przygotowywania modułów. Jeśli zdecydujesz się kompilować sterownik bezpośrednio do jądra, to: ˇ pamiętaj że nie można używać zftape zamiast ftape ponieważ obydwa te programy używają tego samego bardziej znaczącego numeru sterownika, ˇ możesz pominąć większość instrukcji dotyczących przygotowywania modułów. Jeśli używasz jądra w wersji 1.2, powinieneś zaopatrzyć się także w pakiet modules-1.3.57 a nie modules-1.2.8. (Bjř rn Ekwall, administrujący pakietem modules to właśnie zaleca). Jeśli masz wersję 1.3.x jądra, powinieneś rozważyć przejście na wersję 2.0.x. Jądro 1.3.x było wersją rozwojową zanim powstała stabilna 2.0.x. 44..33.. ŚŚlleeddzzeenniiee rroozzwwoojjuu ffttaappee'a Rozwój ftape'a można śledzić dzięki liście Usenet linux.dev.tape. Jak już wcześniej wspomniałem jest to kopia linux-tape@vger.rutgers.edu ale ze względu na przeciążenie tego serwera, radzę korzystać z Usenet'u. Jeśli nie masz dostępu do Usenet'u możesz zapisać się na tę listę wysyłając e-mail'a do majordomo@vger.rutgers.edu o następującej treści: subscribe linux-tape'. Na początek otrzymasz list zawierający informacje o sposobie korzystania z listy (wysyłanie własnych uwag, sposób wypisania się z listy itd.) Miej jednak na uwadze, że nie mam (NIE MAM) żadnych przywilejów jeśli chodzi o tę listę. Nie jestem w stanie wypisać cię z niej, jeśli serwer nie chce zrobić tego automatycznie, mogę co najwyżej wysłać ci list z kondolencjami (co ci w niczym nie pomoże). 44..44.. WWssppóółłpprraaccaa ffttaappee i stacji dyskietek Jako, że streamer i stacja dysków łączą się z tym samym kontrolerem (i wykorzystują to samo przerwanie - IRQ6) nie mogą pracować równolegle. Dlatego, jeśli zamontowałeś już (mount) stację dysków i spróbujesz odwołać się do streamera, ftape wyświetli komunikat, że nie może przejąć przerwania IRQ6 i odmówi współpracy. Staje się to szczególnie uciążliwe, gdy chcesz stworzyć dyskietkę systemową (ratunkową), która korzystałaby z ftape'a. Rozwiązaniem jest albo ładowanie dyskietki startowej do ramdysku i wtedy odłączenie stacji dysków (umount) albo zaopatrzenie się w dwa kontrolery FDC. 55.. TTaaśśmmyy ii ssttrreeaammeerr ww uużżyycciiuu 55..11.. FFoorrmmaattoowwaanniiee Zanim taśma jest zdatna do użytku, musi zostać najpierw sformatowana. Proces formatowania dzieli taśmę na sektory i zapisuje najważniejsze informacje na nośniku. Inne streamery (SCSI itd) zwykle nie wymagają formatowania, ale te podłączane do FDC muszą po prostu udawać dyskietki (trochę to dziwne, ale tak to już jest). 55..11..11.. CCzzyy mmoożżnnaa ffoorrmmaattoowwaaćć ttaaśśmmyy ppoodd LLiinnuuxxeemm?? Nie. (Na razie, bo trwają już prace nad tym) Dopóki nie można tego robić pod Linuxem, trzeba niestety używać M* DOSa (Tfu!Błeeh...) albo kupować taśmy już sformatowane. Trzeba jednak pamiętać, że niektóre preformatowane taśmy zostały przygotowane bbeezz sprawdzania czy nie zawierają błędnych sektorów!. Jeśli ftape stwierdzi, że taśma nie ma zaznaczonych żadnych błędnych sektorów, poinformuje cię o tym specjalnym ostrzeżeniem. Jeśli ftape będzie miał kłopoty z odczytem/zapisem twojej nowej taśmy, spróbuj sprawdzić ją pod DOS'em. Jeśli i dosowskiemu oprogramowaniu nie spodoba się twoja taśma, rozwiązaniem może być przeformatowanie jej. Pamiętaj jednak, że zanim będziesz mógł używać nowo sformatowane taśmy, musisz je najpierw wyczyścić poleceniem: # mt -f /dev/nftape erase 55..11..22.. JJaakkiicchh pprrooggrraammóóww uużżyywwaaćć ddoo ffoorrmmaattoowwaanniiaa ttaaśśmm ((ddllaa DDOOSS''uu))?? Poniżej wymienione zostały programy, które zostały sprawdzone i chodzą: ˇ Colorado Memory System's software (tape.exe) ˇ Conner Backup Basics v1.1 i wszystkie wersje pod Windowsy ˇ Norton Backup ˇ QICstream wersja 2 ˇ Tallgrass FileSecure v1.52 ˇ Escom Powerstream 3.0 (qs3.exe -- QICstream v3?) A te programy są mniej lub bardziej pewne: ˇ Conner Backup Basics 1.0 ˇ Colorado Windows tape ˇ CP Backup (marnuje miejsce na taśmie, ale poza tym jest w porządku) W zasadzie większość programów pod DOS'em całkiem nadaje się do formatowania taśm. Program Conner Backup Basics v1.0 miał błąd spowodowany złą interpretacją specyfikacji QIC przez programistów (sic). Błąd ten został poprawiony w wersji 1.1. ftape wykryje tę usterkę i nie ,,wysypie'' się na niej. Od Dennisa T. Flaherty (<dennisf@denix.elk.miles.com>) dowiedziałem się ostatnio, że posiadacze Connera C260MQ (niestety tylko w USA) mogą otrzymać wersję 1.1 tego programu dzwoniąc pod numer 1-800-4Conner za darmo lub płacąc tylko za dyskietkę. Dla innych pocieszenie - wersja dla Windows nie ma tego błędu i powinna działać dobrze. Niektóre wersje oprogramowania pod Windows'y dla streamerów Colorado mają błąd, ale ftape rozpoznaje i ,,obchodzi'' go. Dobrym programem jest także Central Point Backup ale ten znów marnuje drogocenne miejsce na taśmie gdy znajdzie jakiś uszkodzony sektor. UWAGA: Jeśli używasz innego oprogramowania pod DOS'a, nie wymienionego przeze mnie, napisz do mnie (<kjj@pobox.com> żebym mógł uaktualnić powyższą listę. 55..22.. RReetteennssttiioonniinngg Taśmy QIC są szczególnie wrażliwe na rozciąganie. Powodem tego jest fakt, że podczas preformatowania zapisywana jest na nich informacja o sektorach, podczas gdy w innych rodzajach streamerów informacje synchronizacji (pozycjonowania) są zapisywane wraz z twoimi danymi. Jeśli taka taśma rozciągnie się, mogą wystąpić przekłamania odczytu (sektor się wydłuża). Oczywiście im dłuższa taśma, tym większe niebezpieczeństwo uszkodzenia nośnika. Dobrym rozwiązaniem jest więc kilkuktrotne ,,retensionowanie'' (czyli rozprężanie) nowej taśmy przed pierwszym użyciem (zapisem danych albo formatowaniem). Retensionowanie taśmy zalecane jest także wtedy, gdy podczas odczytu występują błędy oraz przed każdym dokonaniem zapisu na taśmę. # mt -f /dev/nftape retension 55..33.. CCzzyysszzcczzeenniiee nnaappęędduu Powierzchnia taśmy pokryta jest związkiem tlenu. Kiedy nośnik styka się z głowicą zostawia na jej powierzchni niewielką ilość osadu. Co jakiś czas powinieneś ją czyścić. najlepiej użyć miękkiej szmatki lub czegoś z naturalnych włókien (żeby nie porysować głowicy) oraz płynu czyszczącego zalecanego przez producenta streamera. (Producent Jumbo-250 poleca zwykły czysty spirytus - swój chłop - tłumacz). Sposób czyszczenia powinien być opisany w instrukcji. Jeszcze jedna uwaga: jeśli zacząłeś korzystać z zupełnie nowej taśmy, powinieneś także wyczyścić głowicę - nowe taśmy zostawiają więcej osadu po pierwszym użyciu. Podziękowania dla Neal'a Friedman'a za doradzenie aby te informacje umieścić w tym dokumencie. 55..44.. NNaappęęddyy wwssppóółłpprraaccuujjąąccee zz ffttaappee Wszystkie napędy zgodne z QIC-117 _o_r_a_z zgodne z QIC-40, 80, 3010 lub 3020 powinny działać. ftape rozpoznaje także streamery QIC-WIDE i Travan (TR-1 to po prostu QIC-80 na 8 mm taśmie, TR-2 i TR-3 to odpowiednio QIC-3010 i 3020). Na dzień dzisiejszy znane mi są następujące urządzenia współpracujące z ftape AAllllooyy RReettrriieevveerr 225500 AArrcchhiivvee 55558800ii,, XXLL99225500ii CCoolloorraaddoo DDJJ--1100,, DDJJ--2200 ((ttzznn:: JJuummbboo 112200,, JJuummbboo 225500)) CCoolloorraaddoo 11440000 <kosowsky@bellini.harvard.edu> poinformował mnie o kłopotach podczas archiwizowania 1GB danych za pomocą tapera. HHPP CCoolloorraaddoo TT11000000 działa z taśmami 3M Travan 400M (TR-1) 120M. Zgłoszono już kilkukrotnie, że mt zawiesza się, ale działa z archiwami utworzonymi przez tar. Jeśli chcesz posługiwać się cpio, korzystaj raczej z ftape a nie z zftape. (<millner@millner.bevc.blacksburg.va.us>) Wiele osób miało problemy z zftape - napęd ciągle zatrzymywał się i wznawiał pracę (<75104.1756@compuserve.com>). Wydaje się, że winny jest napęd, który zbyt szybko czyta dane i komputer gubi je; bufory DMA są opróżniane zanim zdążą się zapełnić. Rozwiązanie jest tu proste - użyć nowszej wersji zftape albo stosować większe bufory DMA. (<millner@millner.bevc.blacksburg.va.us>). CCoonnnneerr CC225500MMQQ((TT)) Napęd ten zgłasza błedy zapisu i często repozycjonuje taśmę (Frank Stuess z Nacamar Data Communications). CCoonnnneerr TTSSMM442200RR,, TTSSMM885500RR Modele 400 i 800 współpracują tylko z taśmami TR-1. CCoonnnneerr TTSSTT33220000RR Pracuje z taśmami TR-3 (tzn. tylko pojemność 1600MB) przy prędkości 1Mbps. Współpracuje też z QIC-WIDE 400m (Sony 5122?) (<chris@cs.wmich.edu>). Obsługuje też taśmy TR-3, QIC-3010 oraz QIC-3020. Napęd dostarczany jest z kontrolerem FDC z 2MB RAMU na pokładzie. Prawdopodobnie współpracuje z ftape 2.05 jeśli podłączony jest do szybkiego kontrolera (żeby móc korzystać z QIC-3020). Niektórzy nie mogą odczytywać rzadkich dyskietek. Prawdopodobnie trzeba grzebać w IRQ/portach/DMA (<chris@yakkocs.wmich.edu>). CCoonnnneerr TTSSTT880000RR Działą z taśmami TR-1, Sony QW5122F (210m) i DC2120. Ponoć pracuje z ftape 2.02e (ale nie 2.03b) oraz z v2.05 (<khp@pip.dknet.dk>). Wymaga patcha ''the length patch''. Zgłoszono mi, że możesz potrzebować zmodyfikować Makefile żeby upewnić się, że ftape odwołuje się do pierwszego (PRIMARY) kontrolera dyskietek (<jzc@primenet.com>). Pojawia się także błąd "Timer expired" gdy używane są taśmy TR-1 i ftape 2.05-2.07) (<les@amc.uva.nl>). CCoonnnneerr CCTTTT33220000 CTT3200 jest przypuszczalnie odpowiednikiem Iomega Ditto 3200. Działa z dołączonym kontrolerem 2Mbps ale przy szybkości 1Mbps. Na niektórych maszynach nie działa pod DOSem (<jmorris@dtx.net>). CCoonnnneerr 11..77GG TTaappeessttoorr ((TTSSMM11770000RR)) Działa z nośnikami QIC-WIDE (<pschmidt@slip.net>). Częściowo także z QIS-3200. Jeśli używasz kontrolera HSC-2, musisz zmienić numer kanału DMA (zwiększyć o 1, kanał 2? - w Makefile). Potem musisz zmodyfikować plik Makefile ftape'a, żeby ten uwzględnił zmiany. Jednak, nawet z tymi poprawkami ftape nie działa do końca poprawnie (co to znaczy flaky???) (<ttait@tiac.net>). Kontroler HSC może nie działać w trybie 2Mbps - wyświetlany jest tylko komunikat "dumb tape stop" i koniec. (<ttait@tiac.net>). EEssccoomm oorr AArrcchhiivvee ((HHoorrnneett)) 3311225500QQ EExxaabbyyttee EEXXBB--11550000 Działa z taśmami QIC-3010, wymaga jednak łatki (,,the length patch''). EExxaabbyyttee TTRR--33 IIrrwwiinn 8800SSXX,, IInnssiigghhtt 8800MMbb IIoommeeggaa 225500 IIoommeeggaa DDiittttoo TTaappee IInnssiiddeerr 442200,, 11770000 IIoommeeggaa DDiittttoo TTaappee IInnssiiddeerr 33220000 Właśnie tego streamera używam. Z mojego doświadczenia wiem, że standardowe ustawienie jumperów uniemożliwia poprawne działanie napędu. Numer irq i ioport pozostaw bez zmian (odpowiednio 6 i 0x370) ale zmień DMA z 3 na 2. W starszych wersjach ftape trzeba dodać następującą linię do pliku vendors.h: {0x08882, 80, wake_up_colorado, "Iomega 3200"} Problemy występują także z ftape v2.07 i jądrem 1.12.13. Jakiegokolwiek akceleratora by nie używać, na niektórych komputerach, napęd może być użyty tylko raz (<erwin@box.nl>). Czasami, także po pierwszym zapisie/odczycie, sterownik uznaje taśmę za zabezpieczoną przed zapisem (<erwin@box.nl>, <M.J.Ammerlaan@dutiwy.twi.tudelft.nl>). Zgłoszono raz wypadek przewinięcia taśmy poza swój koniec (czyli urwania jej...). Na inny błąd natrafiono podczas tworzenia archiwum komendą dd. Na początku działa poprawnie ale potem streamer zatrzymuje się, przewija taśmę do początku i zaczyna czytać aż do końca taśmy. Dzieje się tak najprawdopodobniej dlatego, że sterownik zatrzymuje taśmę na chwilę, co powinno spowodować przewinięcie jej o 3 segmenty w tył, ale zamiast tego taśma przewija się do początku. Patch, który miał naprawić te błędy niestety nie działa. IIoommeeggaa DDiittttoo 880000 IInnssiiddeerr Można używać taśm Travan TR1, TR2 albo DC2120, ale trzeba użyć łatki ,,the length patch'' (<klein@informatik.uni-rostock.de>). MMoouunnttaaiinn FFSS88000000 RReevveeaall TTBB11440000 Zgłoszono, że nie działa z jądrem 1.3.79 i ftape (nie podano numeru wersji) oraz jądrem 1.2.13 i zftape 1.04 (<colin@colina.demon.co.uk>). SSuummmmiitt SSEE 115500,, SSEE 225500 TTaallllggrraassss FFSS330000 Jeśli twój kontroler to AHA1542B, musisz zwiększyć jego czas bus-on/bus-off. Antti Virjo (<klanvi@uta.fi>), pisze, że można tego dokonać zmieniając CMD_BUSON_TIME w pliku linux/drivers/scsi/aha1542.c z 4 na 12. TTeeaacc 880000 MMeemmoorreexx ttaappee ddrriivvee bbaacckkuupp ssyysstteemm WWaannggtteekk 33004400FF,, 33008800FF W pliku vendors.h (katalog linux/drivers/char/ftape) znajduje się aktualna lista urządzeń obsługiwanych przez daną wersję ftape'a. Jeśli chodzi o dobór sprzętu, to chociaż nie chciałbym tu specjalnie krytykować kontretnych urządzeń, doszły mnie słuchy, że Colorado Dj-20 (czyli Jumbo 250 - mój sprzęt! - tłumacz) jest raczej hałaśliwy (jak Jumbo Jet, ale co z tego? :( ). Mówi się, że nawet 5-10 razy głośniejszy od Connera (jakby to hałas miał jakikolwiek wpływ na dane - po prostu nie robić backupów w nocy i po kłopocie :). UWAGA: Jeśli posiadasz sprzęt nie wymieniony na tej liście (albo vendors.h) , który mimo to dobrze współpracuje z ftape'm zgłoś ten fakt autorowi HOWTO (<kjj@pobox.com>). 55..55.. kkoonnttrroolleerryy wwssppóółłpprraaccuujjąąccee zz ffttaappee ftape obsługuje następujące specjalne kontrolery : ˇ Colorado FC-10, FC-20 ˇ Mountain MACH-2 ˇ Iomega Tape Accelerator II ˇ 2Mbps controllers (posiadające i82078-1 fdc) Obsługę kontrolera FC-10 włączono do ftape'a w wersji 1.12. Więcej informacji można znaleźć w plikach RELEASE-NOTES i Makefile w pakiecie ftape. Wersje 2.03 sterownika powinny obsługiwać już FC-20, ale dla pewności sprawdź w RELEASE-NOTES. MACH-2 działa ze sterownikiem w wersji 1.14d wzwyż. Aby móc korzystać z Iomega Tape Accelerator II, musisz użyć -DMACH2 (Makefile) oraz ustawić poprawne adresy I/O, IRQ oraz DMA. Będzie to działać przynajmniej z ftape-2.02 (wypróbowane przez Scott'a Bailey'a <sbailey@xcc.mc.xerox.com>) 55..55..11.. IIoommeeggaa DDiittttoo DDaasshh ii iinnnnee kkoonnttrroolleerryy 22MMbbppss Iomega Ditto Dash i inne kontrolery z możliwością transferu 2mbps używają układu Intel 82078-1. Obsługa tego układu jest cały czas w fazie rozwoju. Prace mają być zakończone w styczniu lub lutym '97 (czyli już dawno temu). Na razie jednak kontroler ten działa z normalną prędkością 1Mbps. 55..66.. NNaappęęddyy _n_i_e wwssppóółłpprraaccuujjąąccee zz ffttaappee ˇ Wszystkie napędy podłączane do portu równoległego (np Colorado Trakker) To nie do końca jest już prawdą - patrz punkt ``Od tłumacza'' ˇ Irwin AX250L / Accutrak 250. (niezgodne z QIC-80 drive) ˇ IBM Internal Tape Backup Unit (odpowiednik Irwin AX250L) ˇ COREtape light Jak już wcześniej wspomniałem WSZYSTKIE napędy podłączane do LPT nie są obsługiwane (a ja już wcześniej zauważyłem, że to się zmieniło ;) - tłumacz). Jest to spowodowane tym, że używają one innego sposobu komunikowania się z komputerem, który nie jest zgodny z QIC-117. Irwin AX250L oraz IBM Internal Tape Backup Unit nie współpracują z ftape'm ponieważ są zgodne jedynie z QIC-117 ale nie z QIC-80 (używają własnego formatu (''servo (Rhomat)''). Nie wiem niestety nic o tym formacie ani gdzie można zdobyć jakieś informacje o nim. COREtape light nie reaguje na komendy inicjujące, wysyłane przez sterownik, co czyni ten napęd bezużytecznym. Iomega 2GB Ditto także nie działa z ftape'm, ponieważ używa własnego formatu, na temat którego Claus (zarządzający ftape) nie mógł uzyskać żadnych informacji. 55..77.. WWssppóółłpprraaccaa zzeewwnnęęttrrzznneeggoo ssttrreeaammeerraa zz ffttaappee'm Jeśli masz kontroler FDC, posiadający żeńskie łącze DB37 i masz możliwość dostarczenia zasilania do streamera, możesz używać go z ftape'm. Dobra, nie jest to zbyt zrozumiałe. Spróbujmy inaczej. Niektóre starsze kontrolery FDC mają złącze DB37 na krawędzi, służące do podłączania zewnętrznych stacji dysków. Jeśli zaopatrzysz się w odpowiedni kabel podłączany do tego wejścia (czytaj: sam sobie go zrobisz), możesz zmusić ftape'a do obsługi twojego tasiemca. Sterownik nie rozróżnia bowiem zewnętrznych i wewnętrznych urządzeń. I dlatego dla niego oba warianty są identyczne. ˇ Pins 20-37: GROUND ˇ 1: +12 Volt (POWER) ˇ 2: +12 Volt return (GROUND) ˇ 3: +5 Volt return (GROUND) ˇ 4: +5 Volt (POWER) ˇ 5: 2 ˇ 6: 8 ˇ 7: 10 ˇ 8: 12 ˇ 9: 14 ˇ 10: 16 ˇ 11: 18 ˇ 12: 20 ˇ 13: 22 ˇ 14: 24 ˇ 15: 26 ˇ 16: 28 ˇ 17: 30 ˇ 18: 32 ˇ 19: 34 UWAGA!! - dostępny jest już patch parport, który umożliwia obsługę urządzeń podłączanych do LPT (nie tylko streamerów) oraz patch obsługujący Trakkera (patrz punkt ``Od tłumacza''). Wtyczka zasilania to ta mała, taka jak w stacji 3,5". Musisz taką wtyczkę podłączyć do gniazda DB37. Jeśli chcesz użyć tylko jednego kable, możesz użyć 50 żyłowego i użyć kilku połączeń dla zasilania (i uziemienia). Dotychczas nikt nie zgłosił mi, że takie coś działa. Jeśli tobie się uda pisz! 55..88.. PPłłyyttyy ggłłóówwnnee PPCCII ii ffttaappee Niestety, niektóre płyty główne stwarzają problemy podczas używania ftape'a. Niektórzy mieli kłopoty z odpaleniem ftape'a na płycie PCI, a na zwykłęj 386-ce z ISA program chodził bez problemów (z tym samym streamerem). Jeśli ty także masz podobny problem, przejrzyj plik README.PCI w katalogu ftape'a. 66.. AArrcchhiiwwiizzoowwaanniiee ii ooddttwwaarrzzaanniiee ddaannyycchh Punkt ten opisuje niektóre funkcje tar i mt. 66..11.. AArrcchhiiwwiizzoowwaanniiee Do tego celu służą tar, dd, cpio, oraz afio. Jednak aby móc w pełni wykorzystać możliwości swojej zabawki będziesz musiał użyć komendy mt. Na początek radzę poznać tar, ponieważ za jego pomocą można zarchiwizować całe drzewo katalogów oraz odtworzyć pojedyncze pliki. cpio tworzy mniejsze archiwa, jest bardziej elastyczny od tar'a, chociaż nie ma niektórych opcji, jak np nadawanie nazw woluminom. afio tworzy archiwa, w których każdy plik jest spakowany a następnie dołączony do archiwum. To pozwala odzyskać pliki znajdujące się za miejscem wystąpienia błędu (np uszkodzania nośnika). Jeśli takie archiwum utworzone byłoby tar'em i gzip'em wszystkie dane znajdujące sie za tym miejscem zostałyby utracone! (Dla mnie jest to dobry powód, żeby nie kompresować danych przy archiwizacji). Wybór metody archiwizacji zależy od sytuacji oraz zalet i wad każdego z tych programów. Polecam zapoznać się z każdym z nich i samemu ocenić ich walory. Możliwe jest, że w przyszłości dokument ten zawierać będzie więcej informacji na ten temat. No to bierzmy się do roboty! Aby zachować katalog /usr/src/linux wraz z podkatalogami używając tar'a trzeba wydać polecenia: # cd /usr/src # tar cf /dev/ftape linux Tą metodą dane zostaną zapisane bez kompresji, ale komputer będzie mógł nadążyć z dostarczeniem danych do streamera (Taśma nie będzie co chwila przewijana w tę i spowrotem). Jeśli chcesz skompresować dane użyj parametr(*) -z, np: `tar czf /dev/ftape linux' Więcej informacji o tar, dd i mt można znaleźć na stronach poręcznika (man pages) i w plikach texinfo dołączonych do tych programów. (*) tar zakłada, że piersze parametr jest opcją/parametrem programu, nie trzeba więc używać `-'. Na przykład komendy `tar xzf /dev/ftape' oraz `tar -xzf /dev/ftape' są interpretowane identycznie. 66..22.. OOddttwwaarrzzaanniiee ddaannyycchh Dobra, teraz odtworzymy dane zapisane w poprzednim punkcie (``Archiwizowanie''). Wpisz: tar xf /dev/ftape i to wszystko... Jeśli skompresowałeś dane, napisz: tar xzf /dev/ftape Na samym końcy archiwum gzip najprawdopodobniej uraczy cię komunikatem o jakichś smieciach (co zakończy się komunikatem Informacje o innych narzędziach znajdziesz na stronach podręcznika. 66..33.. WWeerryyffiikkaaccjjaa aarrcchhiiwwuumm tar posiada opcję d która umożliwia wykrycie różnic między archiwum na taśmie i plikami na dysku. Żeby zweryfikować poprawność zapisanych danych napisz: tar df /dev/ftape Jeśli nie masz na swoim dysku strony podręcznika do tar, to listę opcji możesz otrzymać pisząc: `tar --help 2>&1 | less' 66..44.. ZZaappiissyywwaanniiee kkiillkkuu((nnaassttuu)) aarrcchhiiwwóóww nnaa jjeeddnneejj ttaaśśmmiiee Żeby umieścić kilka archiwów na jednej taśmie musisz użyć programu mt. Jeśli używasz, którejś z popularnych dystrybucji (Slackware, Debian albo RedHat) najprawdopodobniej maż już go zainstalowanego. Programy takie jak tar and cpio tworzą pojedyncze Taśmowe ARchiwum i nie mają bladego pojęcia o pozycjonowaniu taśmy (odnajdywaniu konkretnego archiwum na taśmie), one po prostu czytają albo zapisują co im się pod głowice napatoczy. mt potrafi przewijać taśmę do przodu i do tyłu ale nie umie czytać danych. Jak już pewnie zauważyłeś umiejętne posługiwanie się tar'em lub cpio _o_r_a_z mt pozwoli na swobodne przemieszczanie się po taśmie i pełną nad nią kontrolę. Aby skorzystać z dobrodziejstw mt musisz korzystać z pseudo-plików urządzeń nrft[0-3] (nftape), np: mt -f /dev/nftape fsf 2 spowoduje przesunięcie taśmy o dwa pliki (file marks) do przodu (pliki utworzone przez np tar'a). Potem używając tar'a lub cpio odczytujemy interesujące nas pliki. Najczęściej pliki nrft[0-3] (tzw non-rewinding - czyli takie, które nie powodują przewinięcia taśmy automatycznie do początku po każdej zakończonej operacji) używane są do dołączaniam nowego pliku na końcu taśmy. A oto konkretny przykład: ˇ Włóż kasetkę do napędu. W niektórych urządzeniach może to spowodować automatyczne przewinięcie taśmy do początku. ˇ wydaj polecenie End-of-Tape (na koniec taśmy) urządzeniu nrft mt -f /dev/n???? eof Taśma powinna zostać przesunięta na koniec taśmy (a konkretnie - pomiędzy dwa znaczniki End-Of-File (EOF) 2*EOF=EOT) . Teraz napęd oczekuje kolejnych komend i nie zacznie przewijać taśmy dopóki pro­ gram/użytkownik nie wyda stosownej komendy (np czyta­ nia/zapisu/przewinięcia usunięcia modułu ftape z pamięci itd.) Uwaga: na urządzeniach QIC można użyć krótszej komendy: `mt eof' ˇ Teraz głowica taśmy ustawiona jest dokładnie na znaku EOT (Koniec Taśmy). Nie oznacza to jednak, że w tym miejscu kończy się taśma (no proszę...), tylko że tu kończy się ostatni plik archiwalny. Reszta taśmy jest puściutka i czeka na dane. Jeśli teraz rozkażemy komputerowi zapisać coś na taśmie, ten dołączy nowy plik bez kasowania starych. Jeśli zaś zechcemy odczytać z taśmy wystąpi błąd (Nie ma przecież czego czytać). Wracając do znaku EOT - składa się on z dwóch znaków EOF (Koniec pliku). Jeśli zapisujemy coś na koniec taśmy, drugi z tych znaków jest automatycznie kasowany, a pierwszy pozostaje i później będzie interpretowany jako zwykły znacznik końca pliku. Zapisywanie znaku EOF jest dokonywane przez program (na końcu każdego pliku) albo przez sterownik, gdy wykonywana jest instrukcja close(). ˇ Możemy już zapisywać dane... # tar cf /dev/ftape linux ˇ A teraz uwaga: PPrrzzeewwiińń ttaaśśmmęę ddoo ppoocczząąttkkuu. ftape i zftape przechowują niektóre dane (które powinny być zapisane w nagłówku taśmy) w pamięci operacyjnej. Dane te są umieszczane na taśmie ddooppiieerroo wwtteeddyy,, ggddyy zzoossttaajjee oonnaa pprrzzeewwiinniięęttaa!! Buforowanie to jest potrzebne, ponieważ bez niego komputer musiałby uaktualniać nagłówek nośnika, po każdej operacji zapisu, a ciągłe przewijanie kasetki jest czynnością dość zarówno długotrwałą jak i niezbyt ,,zdrową'' dla taśmy. Wadą tego rozwiązania jest możliwość utraty danych, gdy zapomnisz o przewinięciu taśmy. 66..55.. DDoołłąącczzaanniiee nnoowwyycchh pplliikkóóww ddoo aarrcchhiiwwuumm ,,Czy można rozszerzać archiwum - utworzyć je a poźniej dołączać pliki na jego końcu?'' Nie. Chociaż w dokumentacji tar'a stoi jak byk, że za pomocą tar -Ar' można tego dokonać, z ftape'm to nie działa (przynajmniej na razie). 66..66.. MMoonnttoowwaanniiee//ddeemmoonnttoowwaanniiee _(_m_o_u_n_t_/_u_m_o_u_n_t_) taśm Jako, że streamer nie tworzy żadnego formalnego systemu plików (file system) na taśmie, nie można używać komendy mount/umount. Operacji na zawartości nośnika dokonuje się tylko przy użyciu tar'a albo innego programu _p_r_z_e_z_n_a_c_z_o_n_e_g_o do obsługi streamera. 77.. TTwwoorrzzeenniiee ddyysskkiieettkkii ssyysstteemmoowweejj ((ssttaarrttoowweejj)) ddllaa ffttaappee Niniejszy rozdział zostałnapisany przez Clausa Třndering <ct@login.dknet.dk>. Kiedy już zostaniesz szczęśliwym właścicielem streamera i całej kolekcji tasiemek z kopiami bezpieczeństwa zapytasz się pewnie: ,,Jeśli cały dysk twardy szlag weźmie i stracę wszystkie dane, w jaki sposób odtworzę zawartość moich taśm?'' Będziesz potrzebował zapasowej dyskietki startowej, zawierającej odpowiednie pliki (/dev/*rft*) oraz oprogramowania umożliwiających odtworzenie twojego twardziela z taśm. Pierwszą rzeczą, którą powinieneś zrobić zanim zaczniesz czytać dalej jest zapoznanie się ,,Bootdisk HOWTO'' napisanym przez Grahama Chapmana <grahamc@zeta.org.au>. Dokument ten zawiera wszystkie przydatne informacje na temat tworzenia dyskietek systemowych. Poniższy tekst zawiera kilka dodatkowych wskazówek, które ułatwią ci pracę z Bootdisk-HOWTO. ˇ Nie będziesz potrzebował /etc/init, /etc/inittab, /etc/getty, ani /etc/rc.d/*. Jeśli Linux nie znajdzie /etc/init/, uruchomi shell /bin/sh na twojej konsoli, który wystarczy do odtworzenia danych. Skasowanie tamtych plików zwiększy ilość wolnego miejsca na dyskietce, którego będziesz prawdopodobnie potrzebował. ˇ Zamiast klasycznego /bin/sh użyj jakiegoś małego jego odpowiednika. Można je znaleźć na dyskietkach startowych wchodzących w skład każdej dystrybucji Linuxa(RedHat, Debian....). To także da ci kilka dodatkowych kilobajtów na dyskietce. Sugerowałbym tu ash, który jest bardzo mały (około 62KB), a przy tym zgodny z bash'em. ˇ Plik /etc/fstab, który zostanie umieszczony na dystkietce powinien wyglądać mniej więcej tak: /dev/fd0 / minix defaults none /proc proc defaults /dev/hda /mnt ext2 defaults Zaraz po wystartowaniu systemu z dystketki wpisz: # mount -av co spowoduje ,,zamontowanie'' ˇ Zanim odwołasz się do streamera pamiętaj o zdemontowaniu stacji dyskietek. Jeśli tego nie zrobisz, system pozdrowi cię komunikatem: Unable to grab IRQ6 for ftape driver Pamiętakj bowiem, że streamer i stacja dysków używają tego samego prz­ erwania. To oznacza, że będziesz mmuussiiaałł załadować dyskietkę startową do RAMDYSK'u. Jest to o tyle niewygodne, że programy służące do odt­ warzania zawartości taśmy nie mogą być uruchamiane z dyskietki. Masz dwie możliwości: 1. Umieść programy, których używasz do obsługi streamera (tar, cpio...) na dyskietce systemowej (właśnie po to potrzebowałeś sporo wolnego miejsca na niej). Programy te zostaną zgrane do RAMDYSK'u. 2. Zanim przystąpisz do odtwarzania danych, skopiuj tar'a (albo cpio albo ....) na twardy dysk i stamtąd je uruchamiaj. ˇ Oprócz programów archiwizujących potrzebował będziesz pewnie mt. Umieść go także na swojej dyskietce. ˇ Upewnij się, że pseudo plik streamera (np /dev/nrft0) także znajduje się na niej. ˇ Na koniec : WWYYPPRRÓÓBBÓÓJJ JJĄĄ;;. Oczywiście nie namawiam cię do wykasowania całej zawartości twardziela, żeby zobaczyć, czy będziesz mógł go odtworzyć (czynność trochę samobójcza). Polecam jednak załadowanie systemu z tej dyskietki i spróbowanie przynajmniej wyświetlenia listy plików znajdujących się na taśmie. 88.. CCzzęęssttoo zzaaddaawwaannee ppyyttaanniiaa ((FFAAQQ)) Poniżej przytoczone zostały pytania, które mogą zostać potraktowane jako FAQ. Jeśli uważasz, że poniższa lista powinna zostać rozszerzona, napisz do mnie (dołącz odpowiedzi na zadane pytania :) dzięki! ) 88..11.. CCzzyy ffttaappee współpracuje z Iomega 2GB? Niestety, nie. Iomega używa własnego formatu zapisu na swoich taśmach, niezgodnego z QIC. Administrator ftape'a nie mógł uzyskać dokumentacji tego formatu od producenta. 88..22.. JJaakk sszzyybbkkii jjeesstt ffttaappee? Używając ftape'a można osiągnąć całkiem przyzwoite prędkości zapisu/odczytu. Oczywiście wszystko zależy od sprzętu: Colorado DJ-20 (Jumbo 250) oraz kontroler Adaptec 1542CF, weryfikując 70MB archiwum utrzymywał stałą prędkość transferu danych na poziomie 4.25MB/min (bez kompresji). Prędkość ftape'a zależy głównie od możliwości kontrolera FDC: AHA1542CD posiada kontroler ''post-1991 82077'' i może przesyłać dane z szybkością 1Mbit/sek. Jeśli twój FDC może przesyłać tylko 500Kbit/sek wydajność twojego systemu będzie prawdopodobnie o około połowę mniejsza. 88..33.. JJaakk zzmmiieenniiaa ssiięę ,,,,ttrraaccee--lleevveell''''?? ,,Trace level'' (poziom śledzenia) lub ,tracing'' jest to parametr mówiący sterownikowi ile (i jakie) informacje o pracy napędu przekazywać na konsolę. Poszczególne wartości tego parametru mają następujące znaczenie: ˇ 0 Wyświetl informacje o błędach w sterowniku (bugs) ˇ 1 + Błędy pracy napędu ˇ 2 + Ostrzeżenia (warnings) ˇ 3 + Informacje (well?) ˇ 4 + Więcej informacji ˇ 5 + Program flow (komendy programu) ˇ 6 + Informacje z FDC/DMA ˇ 7 + Przepływ danych ˇ 8 + Wszystko inne Wartość tego parametru można zmienić na trzy sposoby: 88..33..11.. SSppoossóóbb 11.. iinnssmmoodd Jeśli twój ftape jest modułem, możesz zdefiniować poziom jako opcję tej komendy. /sbin/insmod ftape.o tracing=<poziom-śledzenia> 88..33..22.. SSppoossóóbb 22.. ZZmmiiaannaa ,,,,ttrraaccee--lleevveell'''' pprrzzyy ppoommooccyy mmtt Poziom śledzenia można także zmienić stosując małą ,,sztuczkę''. Wykorzystując komendę fsr programu mt możemy zmienić ten poziom. zftape niestety nie reaguje na to. mt -f /dev/ftape fsr <poziom-śledzenia> Stosowanie komendy fsr jest _n_i_e_f_o_r_m_a_l_n_ą metodą zmiany poziomu śledzenia. W przyszłości najprawdopodobniej niemożliwe będzie użycie jej. 88..33..33.. SSppoossóóbb 33.. RReekkoommppiillaaccjjaa sstteerroowwnniikkaa Plik tracing.c zawiera linię int tracing=3; - tutaj właśnie zdefiniowana jest domyślna wartość ,,tracingu''. Zmień 3 na 0..8 i skompiluj. 88..44.. CCzzyy mmooggęę wwyymmiieenniiaaćć ttaaśśmmyy zz kkiimmśś,, kkttoo uużżyywwaa MMSS--DDOOSS?? Nie. Chociaż programy DOS'owskie stosują się do wszystkich zaleceń firmy QIC jeśli chodzi o specyfikację QIC-80, nie ma jeszcze programów, które pozwalałyby stosować taśmy nagrane w DOS'ie. Nie powinno być kłopotów z napisaniem takiego programu, pewnie większym problemem byłoby stworzenie przyjaznego interface'u użytkownika... 88..55.. JJaakk ttoo zzrroobbiićć ...... zz ttaarr'em? Najlepiej przeczytać strony podręcznika (man) albo info dotyczące tar'a. Jeśli nie masz żadnej z nich, możesz spróbować Jeśli twój tar jest v.1.11.1 albo starszy, powinieneś uaktualnić go do wersji 1.11.8. Dopiero ta obsługuje opcję -z czyli kompresję archiwum. Wersja ta ma także rozbudowaną pomoc (--help). 88..66.. TTrraannssffeerr ddaannyycchh pprrzzeezz DDMMAA ppoowwoodduujjee ppoojjaawwiiaanniiee ssiięę bbłłęęddóóww EECCCC Niestety niektóre karty SVGA oraz Ethernet niepoprawnie dekodują swoje adresy. Zazwyczaj zdarza się to, gdy bufory ftape'a znajdują się pomiędzy 0x1a0000 a 0x1c0000. DMA ,,gubi'' swoje cykle i co drugi bajt zapisany ma wartość 0xff. Znana jest co najmniej jedna karta, która takie problemy powoduje - ATI 16bit VGA. Najprostszym rozwiązaniem jest włożyć kartę do 8-bitowego slotu (niewystarcza przekofigurować jej na 8-bitowy transfer danych). Przesunięcie buforów ftape'a w inne miejsce pamięci jest tylko półśrodkiem - inne bufory DMA mogą mieć ten sam problem. Powiedzmy sobie jasno - błędy te nie są zawinione przez ftape'a. 88..77.. iinnssmmoodd twierdzi, że wersja jądra jest błędna! insmod może porównywać nr wersji jądra dla którego ftape'a został skompilowany z wersja aktualnie działającego jądra na dwa sposoby: przez porównanie numeru wersji jądra zapisanego w kodzie sterownika z nr działającego jądra albo, jeśli jądro i ftape zostały skompilowane z tzw ,,versioned symbols'' przez porównanie tych symboli. Jeśli uaktualniłeś GCC do wersji 2.7.0 lub późniejszej, musisz skompilować narzędzia obsługujące moduły (m.in : insmod) jeszcze raz. Nowsze wersje insmod pozwalają ,,zmusić'' jądro do załadowania modułu nawet, jeśli wcześniej wspomniane numery wersji się nie zgadzają. 88..88.. CCoo ttoo ssąą ttee ,,,,vveerrssiioonneedd ssyymmbboollss''''?? Jeśli podczas konfigurowania jądra (make config) na pytanie CONFIG_MODVERSIONS odpowiedziałeś twierdząco, wszystkie symbole jądra, które są eksportowane (tzn symbole, które ładowalne moduły ,,widzą'') są poszerzone o sumę kontrolną parametrów wywołania oraz tych zwracanych przez funkcje systemowe. Pozwala to np insmod'owi ustalić, czy definicja danej zmiennej albo funkcji jądra zmieniła się od czasu ostatniej kompilacji ftape'a. Ten sposób ,,znakowania'' symboli sprzyja bezpieczeństwu systemu i weryfikacji kompatybilności poszczególnych jego składników. Jeśli włączysz opcję CONFIG_MODVERSIONS w jądrze, pamiętaj aby wykasować znak '#' w linii MODULE_OPT znajdujący się przed `-DMODVERSIONS -include /usr/include/linux/modversions.h' w pliku ftapeMakefile. I na odwrót, jeśli wyłączysz tę opcję wstaw ten znak (# - znak komentarza) na powrót. 88..99.. iinnssmmoodd mówi, że jądro 1.2.0 różni się od 1.2.0 Czy wstawiłeś łatkę (patch) jądra dotyczącą ksyms.c? Jeśli nie przeczytaj README.linux-1.2 dostarczany razem ze źródłem sterownika. 88..1100.. ffttaappee wyświetla komunikat ,,This tape has no 'Linux raw for­ mat''' Komunikat taki przywita cię, gdy próbujesz bawić się niewykasowaną, świeżo sformatowaną taśmą. Trzeba ją skasować, ponieważ ftape wymaga ,,magicznego nagłówka'' na taśmie, który pozwala sterownikowi posługiwać się nią. Wpisz: # mt -f /dev/nftape erase 88..1111.. ttaarr/mt/cpio/dd? Gdzie mogę znaleźć binaria/kody źródłowe/strony podręcznika programów Wszystkie te narzędzia są tworzone jako projekt GNU i można je znaleźć prawie na każdym serwerze ftp, (więc także na ftp.icm.edu.pl, ftp.pwr.wroc.pl). Na pewno zaś można je znaleźć na serwerze GNU : prep.ai.mit.edu[18.71.0.38]:/pub/gnu. Najnowsze wersje tych programów (na dzień 12 września 1996) to: cpio: 2.4.2 (cpio-2.4.2.tar.gz) dd: 3.13 (fileutils-3.13.tar.gz) mt: 2.4.2 (cpio-2.4.2.tar.gz) tar: 1.11.8 (tar-1.11.8.tar.gz) gzip: 1.2.4 (gzip-1.2.4.tar.gz) Mogą być one skompilowane bez problemu w Linuxie v1.0.4, libc - v4.5.19, gcc - v2.5.8. 88..1122.. GGddzziiee mmoożżnnaa zznnaalleeźźćć iinnffoorrmmaaccjjee nnaa tteemmaatt ssttaannddaarrdduu QQIICC?? Jeśli chcesz przyczynić się do rozwoju ftape'a lub stworzyć własne narzędzia (na przykład program do formatowania taśm) będziesz musiał zapoznać się z odpowiednimi specyfikacjami QIC. Dokumenty, w które powinieneś się zaopatrzyć, to: opis standardu QIC-80, -117, 3010 i 3020. QIC-117 dotyczy obsługi napędu na niskim poziomie - sposób komunikowania się z urządzeniem - nie będziesz więc go prawdopodobnie potrzebować. QIC-80/3010/3020 dotyczą ,,wyższego'' poziomu działania streamera (zawierają m.in. kody ECC, sposób zapisu samych plików na taśmie). Wszystkie te dokumenty można otrzymać od samej firmy: Quarter Inch Cartridge Drive Standards, Inc. 311 East Carrillo Street Santa Barbara, California 93101 Phone: (805) 963-3853 Fax: (805) 962-1541 lub ściągając odpowiednie dokumenty (format Adobe Acrobat) z adresu ftp.qic.org 88..1133.. JJaakkąą wwiieellkkoośśćć bbllookkuu ppoowwiinniieenneemm ssttoossoowwaaćć uużżyywwaajjąącc ttaarr'a? Używając tar'a, dobrym pomysłem jest nakłonienie go do dzielenia danych archiwizowanych na części. Ponieważ ftape tnie archiwa na 29 kilobajtowe bloki, opcja -b58' powinna zapewnić sprawne działanie. ,,Dlaczego akurat 29kB?'' zapytasz pewnie? Zacznijmy więc od początku. Standard QIC-80 mówi, że dane powinny być chronione przez Error Correcting Code (ECC), który pozwala na detekcję i korektę ewentualnych błędów odczytu . Odmiana tego kodu stosowana przez QIC-80 znana jest pod nazwą Reed-Solomon (R-S) code. Zgodnie z jego zaleceniami ftape czyta 29 bajtów danych i na ich podstawie i tworzy 3 bajty parzystości. Aby zwiększyć wydajność kodu ECC, bajty parzystości zapisywane są zaraz po 29-ciu 1-kilobajtowych sektorów danych. ftape zapisuje więc 29kB danych plus 3 kB kodów ECC (29kB * 3b/29b) - co daje w sumie blok 32kB. ftape zawsze posługuje się 32kB blokami, z których tylko 29kB to dane a reszta to dane ECC. Jeśli chcesz dowiedzieć się więcej na temat ECC i Red-Solomon codes przejrzyj pliki ecc.c oraz ecc.h. 88..1144.. ffttaappee wykrywa więcej błędnych sektorów na taśmach QIC-3020 niż programy w DOS'ie Jeśli dokładnie przyjrzysz się różnicy w ilości błędnych sektorów, to zauważysz, że jest ona równa 2784. Liczba, którą podaje ftape jest oczywiście poprawna ;-). Każda które są umieszczone na mapie błędnych sektorów. Oto fragment specyfikacji dotyczących tych taśm: _n_a_r_a_ż_o_n_e _s_ą _n_a _z_w_i_ę_k_s_z_o_n_e _w_y_s_t_ę_p_o_w_a_n_i_e _b_ł_ę_d_ó_w _s_p_o_w_o_d_o_w_a_n_y_c_h _o_d_c_i_s_k_a_n_i_e_m _s_i_ę _n_a _n_o_ś_n_i_k_u _o_t_w_o_r_ó_w _z_n_a_j_d_u_j_ą_c_y_c_h _s_i_ę _n_a _p_o_c_z_ą_t_k_u _t_a_ś_m_y _(_d_z_i_ę_k_i _n_i_m _s_t_r_e_a_m_e_r _w_i_e_, _g_d_z_i_e _j_e_s_t _p_o_c_z_ą_t_e_k _t_a_ś_m_y _-_t_ł_u_m_a_c_z_)_. _D_l_a_t_e_g_o _t_e_ż_, _s_e_k_t_o_r_y _t_e _z_o_s_t_a_n_ą _o_d_z_n_a_c_z_o_n_e _j_a_k_o _b_ł_ę_d_n_e _p_o_d_c_z_a_s _f_o_r_m_a_t_o_w_a_n_i_a _i _u_m_i_e_s_z_c_z_o_n_e _n_a _m_a_p_i_e _b_ł_ę_d_n_y_c_h _s_e_k_t_o_r_ó_w_._'_' Daje to więc 12 ścieżek * 2 * 4 segmenty *29 sektorów = 2784 sektorów. ftape podaje więc prawdziwą ilość sektorów wyłączonych z użycia, DOS zaś daje bardziej ,,optymistyczny'' obraz sytuacji, co lepiej chyba pokazuje jakość taśmy. Zachowanie ftape'a może zmienić się w przyszłości - być może podawane będą dwie wartości ilości błędnych sektorów, jednak zadanie to ma stosunkowo niski priorytet. Powyższe informacje dotyczą także taśm QIC-3010. 88..1155.. SSyyssllooggdd pprrzzeessaaddzzaa zz iilloośścciiąą kkoommuunniikkaattóóww ffttaappee'a Opcje NO_TRACE i NO_TRACE_AT_ALL służą do kontrolowania ilości informacji przekazywanych do pliku log'u. Użyj jednej z tych opcji w plik Makefile i skompiluj jeszcze raz. 88..1166.. ,,,,PPoolleerroowwaanniiee'''' ,,Polerowanie'' to nieskończone przewijanie po kawałeczku taśmy w przód i w tył - tak jakby streamer chciał wypolerować i tak już błyszczącą taśmę. To niecodzienne zjawisko zostało zaobserwowane na Jumbo 250 (przez 74404.3051@compuserve.com) oraz na Iomega 250 Ditto Insider (tom@opus.cais.com). W drugim przypadku okazało się, że to wina twardziela SCSI podłączonego do Adapteca 1542cf. Skontaktuj się ze mną jeśli masz swoje własne teorie na temat takiego zachowania. 88..1177.. PPrróóbbuujjąącc sskkoommppiilloowwaaćć ffttaappee otrzymuję błąd: modversions.h: no such file or directory Plik modversions.h jest tworzony podczas kompilacji jądra z włączoną opcją CONFIG_MODVERSIONS. Dokładniej, komenda make dep powoduje jego utworzenie. Jeśli występuje w/w błąd, to prawdopodobnie zbiór ten został skasowany poleceniem make mrproper. Trzeba więc rekonfigurować jądro, i wykonać make dep aby przywrócić ów plik. 88..1188.. CCoo rroobbii ''mmtt eeoomm' jeśli nadpisuję nowy plik w środku taśmy? EOM znaczy End Of Recorded Media - czyli miejscę w którym kończy się jakikolwiek zapis na taśmie. ,,Pliki'' na taśmie są specyficznym rodzajem plików - są one zapisywane sekwencyjnie (gęsiego) i taki jest też do nich dostęp. Zapisując dane na taśmie możemy dołączać nowy plik na końcu gąśiennicy lub też uciąć ją w połowie i wyrzucając ogon dokleić nasze nowe archiwum. Ten drugi przypadek zachodzi właśnie wtedy gdy zapisujemy dane w środku zapisanej taśmy. ftape przed utworzeniem takiego archiwum kasuje (!) wszystkie pliki następujące po miejscu, w którym chcemy pisać (przenosi znak EOM w to miejsce) i zaczyna archiwizować. Oznacza to, że nowy znak EOM znajdzie się zaraz za naszym nowo utworzonym archiwum. Jedną z konsekwencji tego, jest fakt, że zapisując plik w środku taśmy, zostaje skasowany nie tylko zbiór znajdujący się wcześniej w tym miejscu ale także wszystkie po nim następujące. 88..1199.. HHeellpp!! WW pplliikkuu ssyysslloogguu ssyysstteemm rraacczzyy mmnniiee kkoommuunniikkaatteemm ddmmaaaalllloocc(()) ffaaiilleedd!! Taki komunikat może pojawić się tylko wtedy, gdy instalujesz ftape'a jako moduł. Spróbuj uruchomić swapout na początek. Program ten dostarczany jest razem z kodem źródłowym ftape'a ale nie tym dostarczanym ze źródłami jądra, lecz w osobnym pakiecie ftape.X.y.tgz. Oto przykład fragmentu pliku rc.local, który może wybawić cię z kłopotu: # Instaluj Streamera if [ -f /boot/modules/`uname -r`/misc/ftape.o ]; then echo Instaluję ftape'a, Linux w.`uname -r` swapout insmod /boot/modules/`uname -r`/misc/ftape.o fi Tego rodzaju błąd nie wystąpi, jeśli wkompilujesz ftape'a bezpośrednio w jądro. 88..2200.. CCzzyy wwsszzyysskkoo jjeesstt ww ppoorrzząąddkkuu,, ggddyy wwyykkoonnuujjąącc kkoommeennddęę mmtt ffssff, mt bsf taśma się nie przesuwa? Oczywiście. Sterownik po prostu zmienia swój wewnętrzny licznik, gdy wydajesz jedną z tych komend. Taśma zostanie przewinięta w odpowiednie miejsce, kiedy wydasz polecenie zapisu/odczytu. 99.. OOddpplluusskkwwiiaanniiee sstteerroowwnniikkaa ffttaappee. 99..11.. JJąąddrroo//ffttaappee zawiesza się gdy ..... - czy to błąd? Nie, tak miało być ;-) A teraz poważnie. Dobry program się nie wiesza. Szczególnie jądro tego nie robi lub nniiee ppoowwiinnnnoo tego robić. Jeśli jednak tak się stanie i możesz udowodnić, że to ftape jest winowajcą, możesz uznać to jako Błąd, Który Powinien Być Usunięty. Napisz do administratora (<kjj@pobox.com>) oraz na listę dyskusyjną. 99..22.. NNoo ddoobbrraa,, ttoo bbłłąądd -- jjaakk ggoo zzggłłoośśiićć?? Na początek, upewnij się, że możesz odtworzyć sytuację w której wystąpił ,,błąd''. Fałszywe błędy są szczególnie wredne, bo bardzo trudno je wytropić (podobnie jak i prawdziwe):-/. Oto krótka lista małego myśliwego: ˇ Wersja jądra i użyte łatki ˇ Wersja ftape'a ˇ model/producent streamera ˇ typ szyny/magistrali (ISA/EISA/PCI lub VL-bus) ˇ Co zrobiłeś, żeby sprowokować wystąpienie błędu ˇ Co się wtedy stało ˇ Nie kasuj jądra ani ftape'a. Może zostaniesz poproszony o wypróbowanie jakichś łatek albo posłużyć się innym testem wykrywającym być może i inne potencjalne błędy. Zwiększ wartość ,,trace level'' do 7 (prawie maksymalny poziom śledzenia) i uruchom program/komendę które sprawiały kłopot. Potem przeczytaj informacje zawarte w logu jądra (lub /proc/kmsg/ zależnie od tego gdzie jądro umieszcza swoje komunikaty). Sprawdź, co wypisuje tam ftape. Na początku może to się wydawać kompletnym bełkotem ale komunikaty jądra/ftape'a mogą okazać się ważnym źródłem informacji o twoich problemach. Większość zapisów zawiera nazwę funkcji, która go wysłała, co może uprościć znacznie odpluskwianie. Następnie przejrzyj odpowiednie pliki źródłowe i spróbuj sam zlokalizować robaka ;-). Jeśli wersja twojego jądra (lub ftape'a) jest nie pierwszej świeżości spróbuj użyć nowszej (lub najnowszej) i wtedy sprawdź czy błąd jeszcze występuje. Jeśli zdecydujesz się przesłać informacje o nim, pamiętaj, żeby umieścić istotne informacje o twoim systemie - wersje jądra, ftape'a, dane płycty głównej (ISA/PCI/....) szybkości zegara, kontrolera FDC i samego tasiemca. Opisz dokładnie i zwięźle sytuację. Niektórzy nie mogą odpalić streamera na płytach PCI a na 396DX ISA wszystko gra i buczy (dlatego przyglądnij się dokładnie punktowi ``Płyty główne PCI i ftape''). Pomyśl także o tych biednych duszyczkach, które płacą niemało kapuchy za dostęp do Internetu - nie wysyłaj potężnych logów sterownika bez wyraźnego powodu. Zamiast tego opisz swój problem i zaoferuj, że wyślesz log do zainteresowanych. Swoje spostrzeżenia/raport wyślij do <linux-tape@vger.rutgers.edu>. Możesz także napisać do <claus@momo.math.rwth-aachen.de>. 1100.. PPooddzziięękkoowwaanniiaa Oto lista ludzi, którzy przyczynili się do powstania niniejszego dokumentu. Chciałbym także przeprosić tych, którzy powinni się znaleźć na niej a jakimś trafem tak się nie stało. Kai Harrekilde-Petersen <khp@dolphinics.no>: Poprzedni administrator ftape'a oraz HOWTO. Andrew Martin <martin@biochemistry.ucl.ac.uk>: Wniósł wiele dodatkowych informacji w HOWTO. Bas Laarhoven <bas@vimec.nl>: Autor ftape'a. 1111.. OOdd ttłłuummaacczzaa 1111..11.. OObbssłłuuggaa nnaappęęddóóww ppooddłłąącczzaannyycchh ddoo ppoorrttuu rróówwnnoolleeggłłeeggoo W oryginalnej wersji Ftape-HOWTO autor nie zamieścił informacji na temat możliwości obsługi streamerów podłączanych do portu równoległego. Wkrótce jednak, mam nadzieję, zostanie zapełniona ta luka i będzie o tym można przeczytać w niniejszym Ftape-HOWTO. Ze swojej strony mogę dodać, że jest już dostępna łatka na jądro (2.0.29 i 2.0.30 oraz w wersjach rozwojowych 2.1.xx) parport, która pozwala na obsługę urządzeń podłączanych do portu równoległego - nie tylko streamerów. Jedyny znany mi model stremaera działający z tą łatką to Trakker. Bezpośrednią obsługą tego urządzenia zajmuje się druga, osobna łatka. Miałem przyjemność pracować z owymi ,,nowościami'' oraz Trakkerem i moje wrażenia są co najmniej pozytywne. Chociaż ,,testowałem'' dość wczesną wersję trakker.c i na początku streamer nie chciał w ogóle odpalić, wkrótce otrzymałem poprawioną wersję źródła i mogłem już tworzyć pierwsze archiwa. Więcej informacji o łatce parport można znaleźć na stronie http://www.cyberelk.demon.co.uk/parport.html <http://www.cyberelk.demon.co.uk/parport.html>. Informacje o łatce dla Trakkera są na stronie http://www.informatik.uni- oldenburg.de/~delwi/trakker.html <http://www.informatik.uni- oldenburg.de/~delwi/trakker.html> Jeśli znasz inne urządzenia współpracujące z parport'em, daj mi znać yacoob@manager.ae.wroc.pl. Dzięki! 1111..22.. SSłłoowwoo oo FFttaappee--HHOOWWTTOO--ppll 1111..22..11.. ZZmmiiaannyy Jedyne zmiany w stosunku do oryginalnego tekstu, dotyczą adresów internetowych pod którymi można znaleźć inne dokumenty - wskazałem polskie mirrory. Inne zmiany są odznaczone w dokumencie dopiskiem _t_ł_u_m_a_c_z. Więcej grzechów nie pamiętam. 1111..22..22.. AAddrreess Najnowsze wersje niniejszego dokumentu znajdują się na stronie http://manager.ae.wroc.pl/~yacoob/ftape-HOWTO-pl.html <http://manager.ae.wroc.pl/~yacoob/ftape-HOWTO-pl.html> 1111..22..33.. ,,,,FFeeeeddbbaacckk'''' cczzyyllii wwsszzeellkkiiee _c_o_m_m_e_n_t_s ddoottyycczząąccee _p_e_r_f_o_r_m_a_n_c_e Jeśli masz jakieś uwagi/zastrzeżenia/skargi dotyczące tego dokumentu (tłumaczenia Ftape-HOWTO) podziel się nimi ze mną. Wszelkie wytknięte błędy (literówki, koślawe tłumaczenie, błędy merytoryczne) postaram się usunąć jak najszybciej. Jakub Chmielewski yacoob@manager.ae.wroc.pl <mailto:yacoob@manager.ae.wroc.pl> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/INFO-SHEET-HOWTO.pl.txt������������������������������������������������0100664�0001750�0001750�00000114623�07457640740�020067� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Linux: Podstawowe informacje o systemie Autor: Michael K. Johnson, <johnsonm@redhat.com> v4.14, 1 września 1998 WWeerrssjjaa ppoollsskkaa:: TToommaasszz ''ttssccaa'' SSiieenniicckkii,, <<ttssccaa@@eeddbb..ddkk>> v1.02, 10 grudnia 2001 Dokument niniejszy zawiera podstawowe wiadomości o systemie opera­ cyjnym Linux, opis jego możliwości i wymagań, oraz odnośniki do odpowiednich zasobów. ______________________________________________________________________ Spis treści 1. Wprowadzenie do Linuksa 2. Możliwości Linuksa 3. Zagadnienia sprzętowe 3.1 Minimalne wymagania sprzętowe 3.2 Zalecana konfiguracja sprzętowa 3.3 Wspierany sprzęt 4. Niekompletny spis sportowanego i innego oprogramowania 5. Kto używa Linuksa? 6. Skąd wziąć Linuksa? 6.1 Anonimowy serwer FTP 6.2 Płytki CD 6.3 Inne źródła 7. Status prawny Linuksa 8. Bieżące informacje o Linuksie 9. Przyszłość 10. O tym dokumencie 10.1 Formalności 11. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee ddoo LLiinnuukkssaa Linux jest całkowicie darmowym systemem operacyjnym zgodnym ze standardem POSIX, z rozszerzeniami SYSV i BSD (to znaczy, że wygląda jak Unix, ale nie jest oparty o jego kod). Dostępna jest zarówno jego skompilowana wersja, jak i kod źródłowy. Prawa autorskie do Linuksa należą do Linusa Torvaldsa (<torvalds@transmeta.com>) oraz osób współtworzących kod. Linux jest rozpowszechniany za darmo na warunkach określonych w licencji GNU. Treść tej licencji dołączana jest do pakietu ze źródłami systemu, można się z nią również zapoznać pod adresem <ftp://prep.ai.mit.edu/pub/gnu/COPYING>. (Od tłumacza: tłumaczenie licencji GPL na język polski znajduje się pod adresem <http://www.linux.org.pl/gpl.php>.) LLiinnuuxx jako taki to tylko jądro systemu operacyjnego, część odpowiedzialna za obsługę sprzętu, zarządzanie plikami, procesami, itd. Dopiero odpowiednie zestawienie jądra ze zbiorem programów użytkowych i aplikacji tworzy całość systemu operacyjnego. Takie zestawienie nazywa się ddyyssttrryybbuuccjjąą. Słowo LLiinnuuxx, chociaż tak naprawdę oznacza tylko jądro, używane jest powszechnie -- i poprawnie! -- w znaczeniu ,,system operacyjny oparty na jądrze Linuksa''. Zwięzły opis poszczególnych dystrybucji znajduje się w Distributions-HOWTO <http://sunsite.unc.edu/LDP/HOWTO/Distributions-HOWTO/>. ŻŻaaddnnaa z tych dystrybucji nie jest ,,oficjalnym Linuksem''. Linux nniiee jest oprogramowaniem ,,public domain'' ani ,,shareware''. Jest to system darmowy, a powszechnie używanymi terminami są ffrreeeewwaarree lub oopprrooggrraammoowwaanniiee wwoollnnooddoossttęęppnnee (Open Source Software[tm], zob. <http://www.opensource.org> (od tłumacza: informacje nt. Open Source po polsku znajdują się pod adresem <http://www.opensourcepl.org>)). Rozdawnictwo i sprzedaż kopii Linuksa dozwolone są pod warunkiem jednoczesnego udostępnienia kodu źródłowego. W przypadku wprowadzenia własnych modyfikacji do kodu prawnie wymagane jest udostępnienie również źródeł owych modyfikacji. Szczegóły zawarte są w licencji GNU. Linux jest wolnodostępny i takim pozostanie. Ze względu na naturę licencji GPL, o którą ten system jest oparty, nielegalne byłoby tworzenie go w inny sposób. Zwróć uwagę, że ,,wolnodostępny'' oznacza dostępność kodu źródłowego, a nie po prostu darmowość; dozwolone jest bowiem rozpowszechnianie Linuksa za pieniądze. Jedynym warunkiem jest udostępnianie z nim jego kodu źródłowego. To oczywiście uogólnienie; jeśli interesują Cię szczegóły, zapoznaj się z treścią licencji GPL. Linux działa na komputerach 386/486/Pentium wyposażonych w szyny ISA, EISA, PCI i VLB. IBM-owska magistrala MCA nie jest najlepiej obsługiwana przez jądra 2.0.x i wcześniejsze, sytuacja zmieniła się jednak w wersji 2.1.x i kolejnych, zob. <http://glycerine.itsmm.uni.edu/mca>. Istnieje wersja dla procesorów Motorola 680x0 (chodzi o komputery takie jak Amigi, Atari i VME), która działa już całkiem dobrze. Wersja ta pracuje na Motoroli 68020 z MMU, na 68030, 68040, 68050, wymaga też FPU. Działa już X Window System i sieć. Zob. <news:comp.os.linux.m68k>. Linux działa dobrze również na procesorach Alpha DECa. Obecnie wspierane są takie platformy, jak "Jensen", "NoName", "Cabriolet", "Universal Desktop Box" (Multia) i inne. Zob. <http://www.azstarnet.com/~axplinux/FAQ.html>. Wspierane są też SPARCi Suna (większość maszyn sun4c, sun4m i sun4u; rozwijane wsparcie dla sun4). Obecnie jedyną dostępną na SPARC dystrybucją jest Red Hat. Zob. <http://www.redhat.com/support/docs/rhl-sparc/>. Aktywnie tworzona jest wersja na PowerPC (w tym PowerMac (Nubus i PCI), Motorola, IBM i Be). Zob. <http://www.cs.nmt.edu/~linuxppc/> i <http://www.linuxppc.org/>. Wersje na inne maszyny (również MIPS (zob. <http://linus.linux.sgi.com> i <http://lena.fnet.fr/>) i ARM) są na różnych etapach rozwoju; nie oczekuj zbyt wiele. Jeśli możesz zaangażować się w rozwój tych wersji, z pewnością znajdziesz współpracowników. Rozwój Linuksa przekroczył już etap testowania; wersja 1.0 ukazała się 14 marca 1994. System nie jest wolny od błędów, a w trakcie pracy na nim na pewno pojawią się w nim i zostaną usunięte kolejne niedoskonałości. Linux rozwijany jest w sposób ,,otwarty'' -- wszystkie kolejne wersje, niezależnie od tego, czy można je uznać za ,,gotowe'', czy nie, są udostępniane użytkownikom. IInnffoorrmmaaccjjaa oo ssttaabbiillnnoośśccii kkoolleejjnnyycchh wweerrssjjii zzaawwaarrttaa jjeesstt ww iicchh nnuummeerrzzee:: wersje n.x.y gdzie x jest liczbą parzystą są wersjami stabilnymi, a zwiększanie się liczby y oznaka kolejne poprawki (np. wersje 1.2.2 i 1.2.3 różnią się od siebie tylko ilością wprowadzonych poprawek, a nie możliwościami). Wersje n.x.y gdzie x jest liczbą nieparzystą są wersjami testowymi wypuszczanymi dla osób pracujących nad ich rozwojem; mogą być niestabilne i wieszać się, stale też zwiększają się ich możliwości. Gdy bieżąca wersja rozwojowa jądra zostaje uznana za stabilną, zostaje ona ,,zamrażana'' jako kolejna wersja stabilna, a rozwijana wersja otrzymuje nowy numer. Większość wersji jądra, i stabilnych i rozwojowych, jest raczej godna zaufania; ,,stabilna'' oznacza w tym kontekście dodatkowo ,,powoli zmieniająca się''. Można używać którejkolwiek z tych wersji, jeśli działa ona zgodnie z oczekiwaniami (chyba, że koniecznie chcesz mieć wersję najnowszą). Na przykład pochodząca z 1992 roku wersja 0.97p1 bezproblemowo używana była na pewnym serwerze przez 136 dni bez przerwy (a działałaby pewnie dłużej, gdyby operator koparki przypadkowo nie uszkodził transformatora). Znane są przypadki ciągłego używania Linuksa przez ponad rok, wiadomo też o komputerze, na którym wg ostatnich wiadomości wersja 0.99p15s chodziła nieprzerwanie od 600 dni. Obecną stabilną wersją jądra jest 2.0.35 (numer będzie się zmieniał w miarę dodawania nowych sterowników i wprowadzania poprawek), rozpoczęto też prace nad wersją 2.1.x. Pakiet z kodem źródłowym jądra Linuksa zawiera plik Documentation/Changes opisujący zmiany, o których należy wiedzieć przy zmienianiu używanej wersji na nowszą. Większość użytkowników Linuksa po prostu aktualizuje od czasu do czasu całą dystrybucję, a tym samym i jądro. Jak już wspomniano, model rozwoju jądra Linuksa jest modelem otwartym i zdecentralizowanym (w przeciwieństwie do modelu stosowanego w przypadku rozwoju wielu innych rodzajów oprogramowania); oznacza to, że najnowsze wersje są zawsze udostępniane użytkownikom. Co za tym idzie, każda wersja posiadająca jakąś nową funkcjonalność zawiera błędy -- ale dzięki jej upublicznieniu błędy te są bardzo szybko (często w przeciągu godzin) wyłapywane i usuwane. Natomiast zamknięty i scentralizowany model rozwoju oprogramowania oznacza, że tylko jedna osoba lub grupa pracuje nad projektem, a nowe wersje oprogramowania publikowane są tylko wtedy, gdy autorzy uznadzą je za wolne od błędów. Powoduje to często znaczne wydłużenie się czasu oczekiwania na nową wersję i na poprawki błędów oraz generalnie wolniejszy rozwój. Najnowsze wersje takiego oprogramowania są czasem wyższej jakości niż wersje oprogramowania tworzonego w sposób otwarty, ceną jednak jest znaczne spowolnienie rozwoju. Oba w/w modele rozwoju oprogramowania omówione i zanalizowane zostały w _T_h_e _C_a_t_h_e_d_r_a_l _a_n_d _t_h_e _B_a_z_a_a_r Erica Raymonda; zob. <http://sagan.earthspace.net/~esr/writings/cathedral-bazaar/>. 1 września 1998 ostatnią stabilną wersją jądra jest 2.0.35, a wersją rozwojową 2.1.119. 22.. MMoożżlliiwwoośśccii LLiinnuukkssaa ˇ wielozadaniowość (można uruchamiać wiele programów naraz), ˇ obsługa wielu użytkowników na tej samej maszynie w tym samym czasie (bez licencji wielostanowiskowych!), ˇ wieloplatformowość (Linux działa pod wieloma platformami, nie tylko pod Intelowską), ˇ wieloprocesorowość (obsługa SMP (wieloprzetwarzania symetrycznego) na platformach Intel i SPARC (prace nad wsparciem dla kolejnych platform trwają); Linux używany jest w wymagających wieloprzetwarzania zastosowaniach, np. w systemach Beowulf (zob. <http://cesdis.gsfc.nasa.gov/linux-web/beowulf/beowulf.html>) i opartym na SPARC superkomuterze Fujitsu AP1000+), ˇ wielowątkowość (jądro obsługuje wiele niezależnych wątków w pojedynczej przestrzeni przydzielonej procesowi pamięci), ˇ działanie w trybie chronionym 386, ˇ międzyprocesowa ochrona pamięci (dzięki czemu niemożliwa jest sytuacja, w której jeden program powoduje pad całego systemu), ˇ ładowanie kodu wykonywalnego na żądanie (tzn. czytanie tylko tej części programu, która jest rzeczywiście wykorzystywana), ˇ współdzielenie pamięci między procesami (tzn. że wiele programów może korzystać z tego samego obszaru pamięci. Gdy dany program zapisuje coś w zapełnionej już stronie pamięci, zawartość tej strony (4 KB) kopiowana jest przedtem gdzie indziej. Proces ten nazywa się _c_o_p_y_-_o_n_-_w_r_i_t_e i ma dwie zalety: zwiększa szybkość i zmniejsza zużycie pamięci), ˇ pamięć wirtualna stronicująca (a nie składająca całe procesy) na dysk (na osobną partycję, do pliku, lub i tu i tu, z możliwością dynamicznego dodawania kolejnych obszarów wymiany (tak się to nadal nazywa). Jednocześnie w użyciu może być ogółem 16 128-megabajtowych (a w nowszych jądrach dwugigabajtowych) obszarów wymiany; w ten sposób teoretycznie można utworzyć funkcjonalny obszar wymiany do wielkości 2GB. Zwiększenie tego limitu jest proste -- sprowadza się do zmiany kilku linijek w kodzie źródłowym), ˇ zgrupowanie puli pamięci przydzielonej programom i dyskowej pamięci podręcznej (cache); dzięki czemu cała wolna pamięć może być użyta jako pamięć podręczna. Ilość pamięci podręcznej zmniejsza się podczas wykonywania dużych programów, ˇ dynamicznie zlinkowane biblioteki dzielone (DLL) oraz, oczywiście, biblioteki zlinkowane statycznie ˇ zrzuty pamięci (core dumps) umożliwiające ,,pośmiertną'' analizę programów za pomocą debuggera, ˇ wysoka zgodność z POSIX, SYSV, BSD na poziomie źródeł, ˇ poprzez zgodny z iBCS2 moduł emulacji wysoka zgodność na poziomie binarnym z SCO, SVR3 i SVR4, ˇ dostępność całego kodu źródłowego, w tym całego jądra i wszystkich sterowników, narzędzi i programów; wszystko to wolno bez ograniczeń rozpowszechniać. Wiele komercyjnych programów dostępnych dla Linuksa dostarczanych jest bez kodu źródłowego, ale wszystko, co było wolnodostępne (w tym cały system operacyjny) wolnodostępne pozostało, ˇ zgodna z POSIX kontrola procesów, ˇ pseudoterminale (pty), ˇ emulacja numerycznego koprocesora 387 w jądrze, co odciąża programy z konieczności wykonywania tej emulacji. W ten sposób wszystkie komputery pracujące pod kontrolą systemu Linux ,,mają'' koprocesor. Oczywiście jeśli komputer naprawdę posiada koprocesor, to będzie on użyty; w takim przypadku można skompilować jądro wyłączając obsługę 387: zaowocuje to niewielkim zyskiem pamięci. ˇ wsparcie dla wielu narodowych i zindywidualizowanych klawiatur, łatwo dodawać nowe definicje klawiatury dynamicznie, ˇ do 64 dynamicznie tworzonych wirtualnych konsol, co oznacza wiele niezależnych sesji obsługiwanych jednocześnie przy tej samej fizycznej konsoli. Między sesjami można przełączać się za pomocą dowolnie zdefiniowanej kombinacji klawiszy (niezależnej od karty graficznej), ˇ wsparcie dla powszechnie używanych systemów plików, takich jak np. minix, Henix, wszystkie systemy V. Własny zaawansowany system plików (do 4 TB, nazwy plików do 255 znaków), ˇ bezproblemowy dostęp do partycji MS-DOS i OS/2. Dzięki specjalnemu systemowi plików użycie partycji MS-DOS nie wymaga żadnych dodatkowych sztuczek, dostęp doń nie różni się oprócz ograniczeń w nazwach i prawach plików od dostępu do normalnego uniksowego systemu plików. Aktualnie nie są obsługiwane kompresowane partycje MS-DOS 6 (ale jest na to łata). System VFAT (tj. Windows 9x/NT) obsługiwany jest od jądra 2.0 wzwyż. ˇ specjalny system plików (UMSDOS) umożliwiający instalację Linuksa na partycji DOS, ˇ wsparcie (tylko odczyt) systemu plików HPFS-2 z OS/2 2.1, ˇ obsługa HFS (systemu plików Macintosha) jako moduł, ˇ możliwość czytania wszystkich standardowych formatów CD-ROM-ów, ˇ wsparcie protokołu sieciowego TCP/IP, w tym ftp, telnet, NFS, itd., ˇ serwer Appletalk, ˇ klient i serwer Netware, ˇ klient i serwer Lan Manager/Windows Native (SMB), ˇ wiele protokołów sieciowych: podstawowe protokoły dostępne w najnowszych rozwojowych wersjach jądra to: TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP (Appletalk), Netrom i inne. Stabilne wersje jądra zawierają m.in. protokoły TCP, IPv4, IPX, DDP i AX.25. 33.. ZZaaggaaddnniieenniiaa sspprrzzęęttoowwee 33..11.. MMiinniimmaallnnee wwyymmaaggaanniiaa sspprrzzęęttoowwee Prawdopodobnie najuboższą konfiguracją sprzętową umożliwiającą uruchomienie Linuksa jest 386SX/16, 1 MB RAM, stacja dysków 1.44 lub 1.2 MB, którakolwiek ze wspieranych kart graficznych (+ oczywiście klawiatura, monitor, itd). Taki sprzęt pozwoli na uruchomienie systemu i sprawdzenie, czy w ogóle działa on na tym komputerze; nie da się jednak na czymś takim wykonywać żadnej sensownej pracy. Omówienie minimalnych konfiguracji znajdziesz pod adresem <http://rsphy1.anu.edu.au/~gpg109/mem.html>. Żeby móc cokolwiek zrobić potrzeba trochę miejsca na dysku twardym. 5 do 10 MB powinno wystarczyć na bardzo prostą instalację (zawierającą tylko podstawowe polecenia systemowe i może jedną lub dwie proste aplikacje -- np. program terminala). Taki system jest jednak bardzo ograniczony i niewygodny, zajmuje bowiem prawie całe dostępne miejsce -- chyba, że zainstalowane aplikacje są naprawdę małe. Generalnie nadaje się tylko do celów testowych, i przechwałek na temat niewielkich wymagań sprzętowych. 33..22.. ZZaalleeccaannaa kkoonnffiigguurraaccjjaa sspprrzzęęttoowwaa Jeśli zamierzasz uruchamiać wymagające dużej mocy obliczeniowej programy takie jak gcc, X, czy TeX, potrzebujesz procesora szybszego niż 386SX/16 -- chociaż cierpliwym i taki wystarczy. W praktyce system bez X wymaga 4 MB, a z X 8 MB. Więcej niż 4 MB zalecane jest również w przypadku systemu obsługującego wielu użytkowników równocześnie, oraz systemu, pod którym jednocześnie będzie pracować kilka dużych programów (jak chociażby kompilacji). Oczywiście wszystko to będzie działać również przy mniejszej ilości pamięci; Linux wykorzysta w takim przypadku pamięć podręczną (ppoowwoollnnąą pamięć dyskową); jest to jednak tak wolne, że prawie nie da się tego używać. 16 MB znacząco ogranicza wykorzystanie pamięci dyskowej przy uruchomieniu wielu programów, a 32 MB przy normalnej pracy jednego użytkownika zazwyczaj całkowicie eliminuje problem. 64 i więcej MB zalecane jest przy jednoczesnym uruchamianiu wielu bardzo pamięciożernych aplikacji. Wielkość wymaganej przestrzeni dyskowej zależy naturalnie od rodzaju instalowanego oprogramowania. Zwykły zestaw uniksowych narzędzi, powłok i programów do administrowania systemem swobodnie zmieści się na 10 MB -- zostanie nawet trochę miejsca na pliki użytkownika. System bardziej kompletny (np. Red Hat, Debian, czy inna dystrybucja) wymaga do 60 do 600 MB w zależności od instalowanych komponentów. Do tego dodać należy miejsce przeznaczone na pliki użytkowników. Przy dzisiejszych cenach twardych dysków nie ma sensu ryzykowanie, że nagle zabraknie miejsca. Warto więc nabyć dysk o pojemności co najmniej 2 GB, a lepiej 4 GB lub nawet więcej -- nie zmarnuje się, to pewne. Linux bezproblemowo obsługuje duże dyski twarde, np. popularne ostatnio dyski 11 GB na IDE i 18 GB na SCSI. Jeśli chcesz/potrzebujesz/stać Cię na konfigurację lepszą od minimalnej, możesz rozszerzyć swój komputer o więcej pamięci, większy dysk twardy, szybszy procesor i inne urządzenia. Linux różni się tu bardzo od DOS-a, w którym rozszerzanie pamięci dawało umiarkowane zaledwie efekty -- w Linuksie różnica jest ogromna. Powodem jest oczywiście ograniczenie DOS-a do 640 Kb, ograniczenie, od którego Linux jest wolny. 33..33.. WWssppiieerraannyy sspprrzzęętt CCPPUU ((pprroocceessoorr)):: Wszystko, co może uruchomić programy w trybie chronionym 386. Wszystkie modele 386, 486, Pentium, Pentium Pro, Pentium II i ich klony powinny działać (286 i starsze być może będą któregoś dnia obsługiwane przez mniejsze jądro zwane ELKS, nie należy od niego jednak oczekiwać tych samych możliwości). Wersje dla procesorów 680x0 (dla x=2+zewnętrzna jednostka zarządzania pamięcią (MMU), 3, 4 lub 6) obsługujących komputery Amiga i Atari dostępne są na serwerze tsx-11.mit.edu w katalogu 680x0. Wspierane jest również wiele maszyn DEC Alpha, SPARC i PowerPC. Trwają prace nad wersjami dla architektur ARM, StrongARM i MIPS. MMaaggiissttrraallee:: PCI, ISA, EISA i VLB. Obsługa MCA (głównie PS/2) jest jeszcze niekompletna (prace trwają, patrz wyżej). Linux wymaga od sprzętu więcej niż DOS, Windows, czy większość pozostałych systemów operacyjnych. Oznacza to, że pod kontrolą tych mniej wymagających systemów sprzęt może działać bezbłędnie, a pod Linuksem zawiedzie. Linux jest doskonałym testerem pamięci... RRAAMM ((ppaammiięęćć)):: Na platformach intelowskich do 1 GB; na platformach 64-bitowych więcej. Niektórzy (w tym Linus) zauważyli, że dodanie pamięci bez powiększenia bufora (cache) bardzo spowalnia ich komputer. Jeśli po rozszerzeniu pamięci zaobserwujesz podobne objawy, zwiększ cache. Niektóre komputery nie są w stanie zbuforować więcej niż określoną ilość pamięci (najczęściej jest to 64 MB), niezależnie od tego, ile fizycznie pamięci jest zainstalowane. Jest to spowodowane tym, że BIOS oryginalnie nie był przeznaczony do wykrywania pamięci ponad 64 MB. Jądra 2.1.x i nowsze automatycznie radzą sobie z takimi sytuacjami, natomiast jądra 2.0.35 i wcześniejsze wymagają podania im specjalnego parametru podczas inicjalizacji systemu. PPaammiięęccii mmaassoowwee:: Obsługiwane są typowe dyski AT (EIDE, IDE, 16-bitowe kontrolery z MFM, RDD lub ESDI), jak również dyski SCSI, CD-ROMy na obsługiwanej karcie SCSI i typowe kontrolery XT (8-bitowe kontrolery z MFM lub RLL). Wspierane karty SCSI to: Advansys, seria Adaptec 1542, 1522, 1740, 27xx, i 29xx (z kilkoma wyjątkami), Buslogic MultiMaster i Flashpoint, kontrolery oparte o NCR53c8xx, kontrolery DPT, Qlogic ISP i FAS, Seagate ST-01 i ST-02, seria Future Domain TMC-88x (lub inne karty z kością TMC950), TMC1660/1680, Ultrastor 14F, 24F i34F, Western Digital wd7000, i inne. Obsługiwane są również pamięci taśmowe SCSI, QIC-02, i niektóre QIC-80. Obok CD-ROMów IDE i SCSI wspierany jest też szereg CD-ROMów o zastrzeżonej architekturze (są to m.in. Matsushita/Panasonic, Mitsumi, Sony, Soundblaster, Toshiba, ATAPI (EIDE), SCSI i inne). Informacje o konkretnych modelach znajdują się w HHaarrddwwaarree CCoommppaattiibbiilliittyy HHOOWWTTOO. WWyykkaazzyy ttee ssąą ii zzaawwsszzee bbęęddąą nniieekkoommpplleettnnee.. BBaarrddzziieejj aakkttuuaallnnyycchh iinnffoorrmmaaccjjii ddoossttaarrcczzaajjąą pprroodduucceennccii ddyyssttrryybbuuccjjii.. KKaarrttyy ggrraaffiicczznnee:: Pracę w trybie tekstowym umożliwiają karty VGA, EGA, CGA, Hercules (i zgodne). Wyświetlać grafikę i pracować z X-Window można za pomocą (co najmniej) zwykłych kart VGA, niektórych Super-VGA (większość z kart bazujących na kości Tseng, Paradise i niektórych Tridentach), S3, 8514/A, ATI, Matrox, i Herculesa (używanym przez Linuksa serwerem X jest XFree86, co determinuje, które karty są obsługiwane. Pełna lista samych wspieranych kości zajmuje ponad stronę. Patrz <http://www.XFree86.org/>). SSiieećć:: Zbiór obsługiwanych kart sieciowych zawiera: 3COM 503/509/579/589/595/905 (501/505/507 są wspierane, ale nie polecane), AT&T GIS (neé NCR) WaveLAN, większość kart opartych o WD8390 lub WD80x3, NE1000/2000 i większość ich klonów, AC3200, Apricot 82596, AT1700, ATP, DE425/434/435/500, D-Link DE-600/620, DEPCA, DE100/101, DE200/201/202 Turbo, DE210, DE422, Cabletron E2100 (nie polecana), Intel EtherExpress (nie polecana), EtherExpress Pro, EtherExpress 100, DEC EtherWORKS 3, HP LAN, HP PCLAN/plus, większość kart opartych o AMD LANCE, NI5210, ni6510, SMC Ultra, DEC 21040 (tulip), Zenith Z-Note ethernet. Żadna z kart Zircom i Cabletron (oprócz E2100) nie jest obsługiwana, ponieważ producent odmówił udzielenia programistom odpowiednich informacji. Obsługa sieci światłowodowych: karty DEF_x_x DEC-a. Obsługa protokołu sieciowego Point-to-Point: PPP (zarówno dla urządzeń asynchronicznych (modemy), jak i połączeń synchronicznych (ISDN)), SLIP, CSLIP, PLIP. Ograniczona obsługa Token Ring. PPoorrtt sszzeerreeggoowwyy:: Większość kart opartych o 16450 i 16550 UART, w tym AST Fourport, Usenet Serial Card II i inne. Wspierane inteligentne karty to: seria Cyclades Cyclom (wsparcie od producenta), seria Comtrol Rocketport (wsparcie od producenta), Stallion (większość kart: wsparcie od producenta), i Digi (niektóre karty: wsparcie od producenta). Obsługa ISDN, frame relay (tranzytu ramki) i łącza dzierżawionego. IInnnnyy sspprrzzęętt:: SoundBlaster, ProAudio Spectrum 16, Gravis Ultrasound, większość pozostałych kart dźwiękowych, większość (wszystkie?) rodzajów myszy (Microsoft, Logitech, PS/2), itd. 44.. NNiieekkoommpplleettnnyy ssppiiss ssppoorrttoowwaanneeggoo ii iinnnneeggoo oopprrooggrraammoowwaanniiaa Pod Linuksem dostępne są wersje większości podstawowych narzędzi i programów znanych z systemów uniksowych, w tym prawie całość oprogramowania opartego na licencji GNU i wiele pochodzących z różnych źródeł klientów X. Słowo `wersje' jest być może zbyt mocne, często bowiem dzięki zgodności Linuksa z normą POSIX programy te nie wymagają żadnych (lub prawie żadnych) modyfikacji do kompilacji pod tym systemem. Aplikacji nigdy za wiele; dla użytkowników i administratorów Linuksa pojawia się ich coraz więcej. Zapytaj producenta swojego ulubionego komercyjnego programu dla Unixa, czy wypuścił już jego wersję na Linuksa! Poniżej znajduje się niekompletna lista oprogramowania działającego pod Linuksem: PPooddssttaawwoowwee kkoommeennddyy UUnniixx--aa:: ls, tr, sed, awk itp, itd, (wymień którąś -- i zapewne będzie w Linuksie). NNaarrzzęęddzziiaa pprrooggrraammiissttyycczznnee:: gcc, gdb, make, bison, flex, perl, rcs, cvs, prof. JJęęzzyykkii pprrooggrraammoowwaanniiaa ii śśrrooddoowwiisskkaa:: C, C++, Objective C, Java, Modula-3, Modula-2, Oberon, Ada95, Pascal, Fortran, ML, scheme, Tcl/tk, Perl, Python, Common Lisp i wiele innych. ŚŚrrooddoowwiisskkaa ggrraaffiicczznnee:: GNOME i KDE (desktopy), X11R6 (XFree86 3.x), X11R5 (XFree86 2.x), MGR. EEddyyttoorryy:: GNU Emacs, XEmacs, MicroEmacs, jove, ez, epoch, elvis (GNU vi), vim, vile, joe, pico, jed i inne. PPoowwłłookkii ((sszzeellee)):: bash (zgodny z POSIX sh), zsh (zawiera tryb zgodności z ksh, pdksh, tcsh, csh, rc, es, ash (prawie całkowicie zgodna z sh powłoka używana jako /bin/sh w BSD), i wiele więcej. TTeelleekkoommuunniikkaaccjjaa:: PPP, UUCP, SLIP, CSLIP, pełen zestaw narzędzi TCP/IP, kermit, szrz, minicom, pcomm, xcomm, term (pozwala na uruchamianie wielu powłok, przekierowywanie ruchu sieciowego i zdalną pracę pod X, a wszystko to na jednej linii telefonicznej), Seyon (popularny program komunikacyjny dla X), wiele pakietów do obsługi faksów i poczty głosowej (przy użyciu ZyXELa i innych modemów). Zdalna praca przez port szeregowy lub sieć też oczywiście jest możliwa. NNeewwssyy ii ppoocczzttaa:: C-news, innd, trn, nn, tin, smail, elm, mh, exmh, pine, mutt, itd. PPrroocceessoorryy tteekkssttuu:: TeX, groff, doc, ez, LyX, Lout, Linuxdoc-SGML, i inne. GGrryy:: Nethack, wiele Mud-ów, gier dla X-ów i mnóstwo innych. Jedną z gier jest przeglądanie gier dostępnych na tsx-11 i sunsite. :-) Wszystkie te programy (a nie jest to nawet setna część dostępnego oprogramowania) są darmowe. Zwiększa się też dostępność oprogramowania komercyjnego; spytaj producenta swojego ulubionego komercyjnego programu o wersję dla Linuksa! 55.. KKttoo uużżyywwaa LLiinnuukkssaa?? Linux jest dostępny za darmo, nie trzeba nigdzie rejestrować posiadanych i używanych kopii -- trudno jest więc stwierdzić, ilu ludzi używa tego systemu. Jednak faktem jest, że kilka firm utrzymuje się wyłącznie ze jego sprzedaży, a linuksowe grupy są jednym z najbardziej obleganych zakątków Usenetu -- użytkowników musi więc być miliony; trudno jednak o konkretne dane. Najlepsze badania rynku szacują obecnie tę liczbę na 7,5 do 11 milionów. Odważny człowiek, Harald T. Alvestrand (<Harald.T.Alvestrand@uninett.no>), podjął ambitną próbę policzenia użytkowników Linuksa ,,sztuka po sztuce''. Jeśli chcesz zostać policzony, użyj formularzy dostępnych na stronach <http://counter.li.org/> lub wyślij e-mail o jednym z dwóch tematów: I use Linux at home (,,używam Linuksa w domu'') lub I use Linux at home and at work (,,używam Linuksa w domu i w pracy'') na adres linux- counter@uninett.no. Honorowane są również zgłoszenia nieosobiste, o szczegóły pytaj autora projektu. Harald wysyła co miesiąc aktualne statystyki na grupę comp.os.linux.misc. Informacje te są również dostępne na WWW: <http://counter.li.org/>. 66.. SSkkąądd wwzziiąąćć LLiinnuukkssaa?? 66..11.. AAnnoonniimmoowwyy sseerrwweerr FFTTPP Wolną od ograniczeń w dystrybucji dokumentację Linuksa znajdziesz na serwerze _t_h_e _L_i_n_u_x _D_o_c_u_m_e_n_t_a_t_i_o_n _P_r_o_j_e_c_t: <ftp://sunsite.unc.edu/pub/Linux/docs/LDP/> i <http://sunsite.unc.edu/LDP/>. (Od tłumacza: polskie wersje dużej części umieszczonych tam dokumentów znajdują się na stronach _J_T_Z: <http://www.jtz.org.pl/>.) Po najświeższe wiadomości zajrzyj na grupę comp.os.linux.announce. Linuksa ściągnąć można z (m.in.) następujących anonimowych serwerów ftp: Nazwa Adres IP Katalog ============================= =============== =============== tsx-11.mit.edu 18.172.1.2 /pub/linux sunsite.unc.edu 152.2.22.81 /pub/Linux ftp.funet.fi 128.214.248.6 /pub/Linux net.tamu.edu 128.194.177.1 /pub/linux ftp.mcc.ac.uk 130.88.203.12 /pub/linux src.doc.ic.ac.uk 146.169.2.1 /packages/linux fgb1.fgb.mw.tu-muenchen.de 129.187.200.1 /pub/linux ftp.informatik.tu-muenchen.de 131.159.0.110 /pub/comp/os/linux ftp.dfv.rwth-aachen.de 137.226.4.111 /pub/linux ftp.informatik.rwth-aachen.de 137.226.225.3 /pub/Linux ftp.Germany.EU.net 192.76.144.75 /pub/os/Linux ftp.lip6.fr 132.227.77.2 /pub/linux ftp.uu.net 137.39.1.9 /systems/unix/linux wuarchive.wustl.edu 128.252.135.4 mirrors/linux ftp.win.tue.nl 131.155.70.100 /pub/linux ftp.stack.urc.tue.nl 131.155.2.71 /pub/linux srawgw.sra.co.jp 133.137.4.3 /pub/os/linux cair.kaist.ac.kr /pub/Linux ftp.denet.dk 129.142.6.74 /pub/OS/linux NCTUCCCA.edu.tw 140.111.1.10 /Operating-Systems/Linux nic.switch.ch 130.59.1.40 /mirror/linux sunsite.cnlab-switch.ch 193.5.24.1 /mirror/linux cnuce_arch.cnr.it 131.114.1.10 /pub/Linux ftp.monash.edu.au 130.194.11.8 /pub/linux ftp.dstc.edu.au 130.102.181.31 /pub/linux ftp.sydutech.usyd.edu.au 129.78.192.2 /pub/linux tsx-11.mit.edu oraz fgb1.fgb.mw.tu-muenchen.de są oficjalnymi serwerami GCC. Niektóre serwery są kopiami innych -- jeśli możesz, użyj najbliższego (sieciowo) sobie. Co najmniej sunsite.unc.edu i ftp.informatik.tu-muenchen.de udostępniają usługę ftp przez e-mail. Więcej informacji pod adresami ftpmail@sunsite.unc.edu i ftp@informatik.tu-muenchen.de. Jeśli czujesz się zagubiony, zajrzyj do Distribution-HOWTO <http://sunsite.unc.edu/LDP/HOWTO/Distributions-HOWTO>, gdzie wymieniona jest część dystrybucji. W chwili obecnej, przynajmniej w USA, najpopularniejsze są _R_e_d _H_a_t i _D_e_b_i_a_n. 66..22.. PPłłyyttkkii CCDD Większość ludzi instaluje Linuksa z kompaktów. Dystrybucje rozrosły się do setek megabajtów oprogramowania; ściąganie tego przez modem 28.8 lub ISDN trwa ddłłuuuuuuggoo. Linuksa na płytce można nabyć na dwa sposoby: jako część archiwów FTP, albo bezpośrednio od producenta. Nabycie archiwów często umożliwia wybór dystrybucji, oznacza jednak również rezygnację ze wsparcia technicznego. Przy zakupie od producenta dystrybucji zazwyczaj wybrać nie można, oferowana jest za to jakaś forma wsparcia (najczęściej pomoc w instalacji). 66..33.. IInnnnee źźrróóddłłaa Istnieje więcej BBSów niż jest plików w dystrybucji Linuksa. Od czasu do czasu lista tych BBSów ogłaszana jest na grupie comp.os.linux.announce. Popytaj wśród przyjaciół i w LUGach (Grupach Użytkowników Linuksa), albo zamów którąś z komercyjnych dystrybucji (ich lista znajduje się w _L_i_n_u_x _d_i_s_t_r_i_b_u_t_i_o_n _H_O_W_T_O dostępnym pod adresem <http://sunsite.unc.edu/LDP/HOWTO/Distributions-HOWTO> oraz w grupie comp.os.linux.announce). (Od tłum.: w Polsce najłatwiejszą i najtańszą formą uzyskania Linuksa jest zakup jednego z czasopism komputerowych dołączających płytki z którąś z dystrybucji. O konkrety pytaj na grupie pl.comp.os.linux.) 77.. SSttaattuuss pprraawwnnyy LLiinnuukkssaa Chociaż Linux dostarczany jest z kompletnym kodem źródłowym, system ten nie jest własnością publiczną -- jest oprogramowaniem chronionym prawami autorskimi, dostępnym jednakże za darmo na warunkach licencji GPL -- tam też znajdziesz więcej informacji na ten temat. Działające pod Linuksem programy również chronione są odpowiednimi prawami autorskimi, chociaż wiele z nich także dostępnych jest na licencji GPL. X Window rozpowszechniany jest na licencji MIT X, a niektóre programy użytkowe na licencji BSD. W każdym razie dozwolone jest rozpowszechnianie oprogramowania dostępnego na serwerze FTP (inaczej nie byłoby go tam). 88.. BBiieeżżąąccee iinnffoorrmmaaccjjee oo LLiinnuukkssiiee Ponad cztery lata temu powstał miesięcznik _L_i_n_u_x _J_o_u_r_n_a_l. Skierowany jest do wszystkich użytkowników Linuksa, zawiera artykuły o różnym stopniu trudności. Prenumerata jednoroczna kosztuje 22 dolary w USA, 27 dolarów w Kanadzie i Meksyku, 32 dolary w pozostałych miejscach, płatne w dolarach USA. Prenumeratę zamawia się pocztą elektroniczną (subs@ssc.com), faksem (+1-206-782-7191), telefonicznie (+1-206-782-7733), lub pocztą tradycyjną (_L_i_n_u_x _J_o_u_r_n_a_l, PO Box 85867, Seattle, WA 98145-1867, USA). SSC udostępnia swój publiczny klucz PGP, kodując nim e-maila z zamówieniem prenumeraty bez strachu można podać numer swojej karty kredytowej. W/w klucz PGP uzyskuje się poleceniem finger info@ssc.com . Istnieje szereg poświęconych Linuksowi grup oraz list dyskusyjnych. _L_i_n_u_x _F_A_Q zawiera więcej informacji o tych ostatnich (FAQ to znajduje się na wspomnianych serwerach FTP i w grupach dyskusyjnych). Na moderowaną grupę comp.os.linux.announce wysyłane są ogłoszenia n/t Linuksa (nowe programy, poprawki, itd). Na moderowaną grupę comp.os.linux.answers wysyłane są dokumenty FAQ (,,Najczęściej Zadawane Pytania''), HOWTO (,,Jak To Zrobić''), itp. Niemoderowana grupa comp.os.linux.admin jest miejscem dyskusji o administrowaniu systemami linuksowymi. Niemoderowana grupa comp.os.linux.development.system poświęcona jest rozwojowi jjąąddrraa. Pytania dotyczące programów można tu zadawać wyłącznie, jeśli są one blisko powiązane z jądrem. Inne programistyczne zapytania kierować należy na grupę comp.unix, chyba, że dotyczą one konkretnych aplikacji. W takim przypadku właściwą grupą jest comp.os.linux.development.apps. Niemoderowana grupa comp.os.linux.development.apps przeznaczona jest na dyskusje o rozwoju aplikacji dla Linuksa. Nie należy pytać tam, skąd takie aplikacje ściągnąć, nie jest to również miejsce na rozmowy o aplikacjach jeszcze nieistniejących. Na grupę comp.os.linux.hardware wysyłać można pytania dot. działania sprzętu pod Linuksem. Grupa comp.os.linux.networking poświęcona jest zagadnieniu rozwoju, działania i konfiguracji oprogramowania sieciowego pod Linuksem. comp.os.linux.x zajmuje się systemem X Window. Następczyni comp.os.linux, grupa comp.os.linux.misc, przeznaczona jest dla dyskusji na tematy niewymienione powyżej. Powodem rozbicia comp.os.linux na podgrupy było zmniejszenie ruchu na grupie macierzystej, dlatego nniiee kkrroossppoossttuujj mmiięęddzzyy ggrruuppaammii ccoommpp..ooss..lliinnuuxx..**!! JJeeddyynnyymm wyjątkiem jest wysłanie ogłoszenia do <news:comp.os.linux.announce> i którejś z niemoderowaych grup. Nie przestrzegając tej zasady narażasz się na niemiłe potraktowanie... Źródłem wiadomości o Linuksie na WWW jest http://sunsite.unc.edu/LDP/. 99.. PPrrzzyysszzłłoośśćć Od czasu jądra 1.0 wprowadzono do systemu istotne ulepszenia. Linux 1.2 miał krótszy czas dostępu do dysków, udoskonalone terminale, ulepszone zarządzanie pamięcią wirtualną, wsparcie dla wielu platform, quoty i inne. Linux 2.0 (obecna stabilna wersja) zawiera jeszcze więcej poprawek, włączając w to poprawki w szybkości działania, nowe protokoły sieciowe, jedną z najszybszych na świecie wersję TCP/IP i znacznie więcej. Linux 2.2 będzie jeszcze szybszy i będzie obsługiwał większą ilość protokołów sieciowych oraz urządzeń niż obecnie. Jednak, mimo że kod źródłowy jądra to już ponad 3/4 miliona linii, wiele jeszcze zostało do napisania, w tym również dokumentacji. Jeśli chciałbyś pomóc w jej tworzeniu, zasubskrybuj listę dyskusyjną linux- doc@vger.rutgers.edu; wyślij na adres majordomo@vger.rutgers.edu list zawierający słowo ,,help'' w treści (NNIIEE w temacie). 1100.. OO ttyymm ddookkuummeenncciiee Autor niniejszego dokumentu, Michael K. Johnson, <johnsonm@redhat.com> prosi o wszelkie, nawet drobne, uwagi; trudno bowiem stworzyć dobrą dokumentację całkowicie samemu. Mniej-więcej bieżącą wersję tego tekstu znajdziesz zawsze pod adresem <http://sunsite.unc.edu/LDP/>. 1100..11.. FFoorrmmaallnnoośśccii Znaki handlowe są własnością ich posiadaczy. Nie udziela się żadnych gwarancji co do informacji zawartych w niniejszym dokumencie. Użycie i rozpowszechnianie na własne ryzyko. Zawartość tego dokumentu jest własnością publiczną (public domain), bądź jednak uprzejmy i przy cytowaniu zaznacz autorstwo. 1111.. OOdd ttłłuummaacczzaa Przetłumaczyłem najnowszą dostępną wersję dokumentu. Niestety, w momencie, w którym to piszę, tekst oryginalny nie był uaktualniany od dwóch lat; biorąc pod uwagę szybki rozwój Linuksa, liczyć się należy z możliwością, że część informacji jest przestarzała. Na pewno jednak wszystkie zmiany w stanie faktycznym, które nastąpiły w przeciągu tych dwóch lat, są zmianami na lepsze. :-) Wersja oryginalna dokumentu ("INFO-SHEET") znajduje się pod adresem <http://sunsite.unc.edu/LDP/>. Z polskimi tłumaczeniami pozostałych dokumentów HOWTO zapoznać się możesz pod adresem <http://www.jtz.org.pl/>. Copyright for the translation: (c) 2000, 2001 by Tomasz 'tsca' Sienicki, <tsca@edb.dk> �������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/ISP-Hookup-HOWTO.pl.txt������������������������������������������������0100664�0001750�0001750�00000114625�06717116340�020356� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ISP-Hookup-HOWTO czyli jak przyłączyć Linuxa do Internetu Egil Kvaleberg, egilk@sn.no v1.23, 9 December 1996 wersja polska piotr.pogorzelski@ippt.gov.pl w1.0, luty 1997 Informacje tutaj zawarte mają pokazać w jaki sposób przyłączyć Linuxa do usług oferowanych przez dostawcę Internetu przy wykorzystaniu połączenia modemowego. Przedstawiono podstawy procedury dzwonienia, zestawiania połączenia protokołem IP oraz obsługi poczty elektron­ icznej i nowinek (news). ______________________________________________________________________ Table of Contents: 1. Wprowadzenie 1.1. Nowe wersje tego dokumentu. 1.2. Uwagi 1.3. Żadnych gwarancji 1.4. Informacje o prawach autorskich 2. Jak mogę się połączyć z resztą świata? 2.1. Konfiguracja podstawowa 3. A co z 4. Jak wysłać i otrzymać pocztę? 5. Nowinki 5.1. Jak skonfigurować czytnik nowinek online? 5.2. Jak skonfiguraować czynanie nowinek offline? 5.3. Jak skonfigurować C News? 5.4. Jak skonfiguraować Leafnode? 6. Jak zautomatyzować procedurę łączenia się z dostawcą? 7. Zakończenie 7.1. Coś jescze o czym powinienem wiedzić? 8. Informacje o dostawcach internetu 8.1. Jak dowiedzieć się więcej? 8.2. Podziękowania 9. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee Ten opis powstał aby odpowiedzieć na kilka pytań związanych z konfiguracją Linuxa umożliwijącą dzwonienie do dostawcy Internetu (ISP) i korzystanie z dostarczanych przez niego usług. Aby wspomóc te osoby, które będą podłączały swego Linuxa do ISP po raz pierwszy, postarmy się przedyskutować większość napotkanych problemów. Nie unikniemy niestety pewnego nałożenia się tematyki tego dokumentu z innymi dokumentami JTZ (HOWTO) lub ksiązkami LDP. Postaramy się odwoływać do tych dokumentów aby zapewnić lepsze zrozumienie problemu i dokładniejszą informację. Większość istniejącej dokumentacji jest pomyślana pod kątem użytkowników z pewnym doświadczeniem, początkującym użytkownikom może sprawiać sporo kłopotu wyłowienie odpowiedniej informacji. Aby ułatwić sobie życie, w prezentowanych dalej przykładach przyjęto następujące założenia: ˇ User name (identyfikator użytkownika): dirk ˇ Password (hasło): PrettySecret ˇ Internet service provider (ISP): acme.net ˇ Email server (serwer pocztowy) : mail.acme.net ˇ News server (serwer nowinek): news.acme.net ˇ Name server (serwer DNS): 193.212.1.0 ˇ Phone number (numer telefonu): 12345678 Nasz dirk bedzie nazywał swój komputer roderick. Wszystkie odnośniki w tabeli powyżej powinny zostać zastąpione przez jakiekolwiek odpowiednie inforamcje dla twojego przypadku. Zwykle potrzebne są niewielkie zmiany w przypadku korzystania z innego dostawcy internetu. 11..11.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu.. Nowe wersje tego dokumentu będą okresowo wysyłane do _p_l_._c_o_m_p_._o_s_._l_i_n_u_x_._a_n_s_w_e_r_s. Bedą również umieszczane w różnych archiwach ftp i WWW włączając: ftp://sunsite.icm.edu.pl/pub/Linux/docs/HOWTO Najnowszą wersję tego dokumentu można będzie znaleźć pod adresem http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/html/ISP-Hookup- HOWTO.pl.html 11..22.. UUwwaaggii Wszelkie poprawki błędów, informacje dodatkowe, uwagi krytyczne i inne proszę kierować na adres piotr.pogorzelski@ippt.gov.pl 11..33.. ŻŻaaddnnyycchh ggwwaarraannccjjii Żadnych gwarancji. Nie ponosimy żadnej odpowiedzialności za jakiekolwiek wykorzystanie informacji zawartych w tym dokumencie. Jest to jedna z pierwszysch wersji i istnieje możliwość, że przedstawione inforamcje nie są prawidłowe. Przedstawiamy jedną z wielu możliwych konfiguracji. W świecie Linuxa zawsze jest wiele metod zrealizowania określonego zadania. Paragrafy zawierające wskazówki dla rozwiązań alternatywnych oznaczyliśmy tak:AALLTT:: Również podawane odnośniki do serwerów FTP i WWW mogą stać się nieaktualne, wraz z pojawieniem się nowszych wersji programów. Większość opisywanych programów jest dotępna wraz z kodem źródłowym na licencji GNU lub podobnej. 11..44.. IInnffoorrmmaaccjjee oo pprraawwaacchh aauuttoorrsskkiicchh Prawa utorskie należą do (c)1996 Egil Kvaleberg (tłumaczenie (c)1997 Piotr Pogorzelski). Dokument jest dostępny pod następującymi warunkami: ˇ Dokumenty Linux-HOWTO mogą być powielane i dystrybuowane w częsci lub całości, na dowolnym nośniku, fizycznym lub magnetycznym, tak długo jak nieniejsza notka o prawach autorskich jest umieszczona na wszystkich kopiach. Pozwalamy, a nawet zachęcamy do komercyjnej dystrybucji, jednakże autor chiałby uzyskać informacje o tym fakcie. ˇ Wszelkie tłumaczenia i dokumenty powstałe na podstawie tego dokumentu muszą podlegać tem samym warunkom. To znaczy, że nie można nakładać dodatkowych ograniczeń na wszelkie dokumenty, które powstały na podstawie niniejszego tekstu. Możliwe są wyjątki od tej reguły; proszę skontaktować się z koordynatorem Linux HOWTO (adres podany poniżej). ˇ Jeśli masz jakieś pytania, proszę skontaktuj się z Gregiem Hankinsem,koordynatorem projektu Linux HOWTO: gregh@sunsite.unc.edu Numer telefonu i adres pocztowy mozna uzyskać poleceniem finger. 22.. JJaakk mmooggęę ssiięę ppoołłąącczzyyćć zz rreesszzttąą śśwwiiaattaa?? Zakładamy, że zostało zainstalowane niezbędne oprogramowanie sieciowe (np. podstawowe pakiety serii N w dystrybucji Slackware) i już wiesz, który port szeregowy jest wykorzystywany przez twój modem. Domyślna konfiguracja pozwala na bezpośreni dostęp do urządzenia /dev/modem jedynie administratorowi (użytkownik root). Aby połączyć się z ISP i uzyskać tam dostęp do powłoki (interpretera poleceń) można skorzystać z programu minicom. Jest bardzo prosty i intuicyjny w użyciu. 22..11.. KKoonnffiigguurraaccjjaa ppooddssttaawwoowwaa Konfigurację komputera do pracy sieciowej musimy przeprowadzić jako administrator (root). Zanim zaczniesz robić coś więcej upewnij się, że plik /etc/hosts.deny zawiera nastpujący wiersz ALL: ALL Zwykle nie masz nic przeciwko korzystaniu przez siebie z komputera, dodaj więc dodatkowy wiersz do /etc/hosts.allow: ALL: LOCAL lub jeśli się upierasz ALL: 127.0.0.1 W ten sposób zabezpieczasz się przed dostępem do twojego komputera z internetu, w tych rzadkich chwilach kiedy jesteś do niego pezpośrednio połączony przez PPP lub SLIP. Przedstawione poniżej inforamcje dotyczą połączenia PPP z dynamicznym przydziałem adresu IP. Jeśli korzystasz z linii dzierżawionej, napotkasz na pewne różnice. Przyjemnie jest mieć komputer o ładnej nazwie. Użytkownicy korzystający z dynamicznie przydzielanych adresów IP mogą zupełnie dowolnie wybrać nazwę swego komputera. Jeśli już się na jakąś zdecydowałęś umieść ją w pliku /etc/HOSTNAME: roderick Kolejnym krokiem jest skonfigurowanie dostępu do serwera nazw (serwera DNS), czego dokonujemy odpowiednio modyfikując plik /etc/resolv.conf: search . nameserver 193.212.1.0 Serwer nazw mnusi byc określony przez numer IP, który jest rózny dla każdego dostawcy internetu (ISP). Jeśli jest to konieczne można podać trzy róne srwery nazw. Będą przepytywane w kolejności w jakiej występują w pliku. Jeśli chesz miec możkiwość korzystanie z krótkich nazw np. jakiśkomputer jako skrótu dla jakiśkomputer.acme.net, musisz zmienic pierwszy wiersz pliku /etc/resolv.conf dodając: search acme.net Wymagane jest również minimalne skonfigurowanie pliku /etc/hosts. W większości wypadków wystarczy aby zawierał: 127.0.0.1 localhost 0.0.0.0 roderick Ci, którzy korzystają ze stałego adresu IP (linia dzierżawiona) oczywiści zastąpią nim podane przez nas 0.0.0.0. Podobne minimalna zwartość /etc/networks wygląda następująco: loopback 127.0.0.0 localnet 0.0.0.0 Należy również ustalić nazwę zewnętrznej domeny pocztowej i umieścić ją w pliku /etc/mailname: acme.net Identyfikator użytkownika i hasło konta u dostawcy, musi być zapisane w /etc/ppp/pap-secrets dirk * PrettySecret Jeśli dostawca ISP zamiast protokołu PAP używa CHAP, właściwa nazwa pliku jest następująca /etc/ppp/chap-secrets. I na koniec, zanim zostanie uruchomione PPP musimy zdefiniować procedurę połączenia. Robimy to umieszczając anstępujące inforamcje w pliku /etc/ppp/chatscript: TIMEOUT 5 "" ATZ OK ATDT12345678 ABORT "NO CARRIER" ABORT BUSY ABORT "NO DIALTONE" ABORT WAITING TIMEOUT 45 CONNECT "" TIMEOUT 5 "name:" ppp Może okazać się konieczne dopracowanie sczegółów. Numer telefonu w trzecim wierszu musi byc oczywiście zmieniony. Być może, niektórzy powinni zamienić sposób inicjownaia modemu ATZ na coś bardziej wyrafi­ nowanego, zależnie od rodzaju posiadanego modemu. Ostatni wiersz oznacza, ze oczekujemy zachęty name: na którą odpowiadamy ppp. Inne systemy/dostawcy mogą mieć inne procedury wchodzenia do systemu. Aby faktycznie zainicjować połączenie i protokół ppp naeży wydać następujące polecenie: exec pppd connect \ 'chat -v -f /etc/ppp/chatscript' \ -detach crtscts modem defaultroute \ user dirk \ /dev/modem 38400 Powinniśmy być w tej chwili połączeni aż do momentu, kiedy program pppd zostanie zabity przez Ctrl-C. Wszelkie komunikaty dotyczące zestawiania połączenia mozna znaleźć w plikach w katalogu /var/log. Aby je odczytać spróbuj wykonać polecenie: tail /var/log/messages Tak długo jak PPP jest aktywne, posiadasz bezpośredni dostęp do Internetu możesz korzystać z takich programów, jak ftp, ncftp, rlogin, telnet, finger itp. Wszystkie te programy powinny być cześcią pakietów sieciowych (uprzednio przez ciebie zainstalowanych, patrz początek dokumnetu). Więcej informacji na temat PPP jest dostępne w PPP-HOWTO i plikach: /usr/lib/ppp/README.linux /usr/lib/ppp/README.linux-chat Na koniec uwaga na temat bezpieczeństwa. Plik /etc/inetd.conf zawiera listę wszystkich usług jakie twój komputer oferuje na zewnątrz. Po zmianach jakie wykonaliśmy w pliku /etc/hosts.deny dostęp z zewnątrz do twego komputera nie jest możliwy. Ci, którzy tego potrzebują, muszą uzyskać na to pozwolenie, pozwolenie musi być wydane przez zmodyfikowanie pliku /etc/hosts.allow. Pozwolenie na ruch lokalny wymaga dopisania: ALL: LOCAL Wiecej informacji uzyskarz w podręczniku, patrz man 5 hosts_access. I ostania mała uwaga: Istnieje małe nieporozumienie związane z nazewnictwem protokołów POP. Definicja w pliku /etc/services zgodna niemal ze wszystkim wygląda nastepująco: pop2 109/tcp pop-2 # PostOffice V.2 pop3 110/tcp pop-3 pop # PostOffice V.3 AALLTT:: Zamiast programu chatscript, można korzystać z lepszego, dającego większą swobodę dip. Ale razem z programem diald. AALLTT:: Ci sczęśliwcy, którzy mają stałe połączenie TCP/IP przez np. kartę Ethernet mogą całkowicie zignorować wszystko co było pisane na temat PPP i zacząć się uczyć jak skonfigurować swoją kartę sieciową. AALLTT:: Inni mogą nie mieć możliwości korzystania z PPP, lecz mają do dyspozycji SLIP, który jest obsługiwany w podobny sposób co PPP. Inna możliwością, którą należy rozważyć jest UUCP. Jescze inni mogą polegać na wymianie nowinek i poczty za pomocą SOUP. Opis tego ostatniego przypadku można znaleźć w: ftp://ftp.sn.no/user/bjorn/Linux-offline.tgz Kolejnym rozwiązanie m jest program TERM, patrz _T_e_r_m_-_H_O_W_T_O. 33.. AA ccoo zz _W_W_W? Jeśli uważasz, ze w WWW najważniejszy jest tekst, możesz chcieć skorzystać z przeglądarki Lynx. Można ją znaleźć pod adresem: ftp://sunsite.unc.edu/pub/Linux/system/Network/info- systems/lynx-2.3.bin2.tar.gz ( Ostatnia znana wersja to 2.6. Zwykle kazda dystrybucja posiada Lynxa, wystarczy go wiec zainstalować tak jak inne programy) Jeśli posiadasz zainstalowane X Window, możesz skorzystać z wielu przeglądarek graficznych. Chimerę możesz znaleźć w: ftp://sunsite.unc.edu/pub/Linux/system/Network/info- systems/chimera-1.65.bin.ELF.tar.gz http://www.unlv.edu/chimera/ Mosaic: ftp://sunsite.unc.edu/pub/Linux/system/Network/info- systems/Mosaic-2.7b1-aout.tgz ftp://ftp.NCSA.uiuc.edu/Web/Mosaic/Unix/binaries/2.6 Mozilla (Netscape): ftp://sunsite.unc.edu/pub/Linux/system/Network/info-systems/netscape- v11b3.tar.gz ftp://ftp.cs.uit.no/pub/www/netscape przeglądarki się cały czas zmieniają, cały czas są dostępne coraz to nowe ich wersje. Korzystanie z nich podlega pewnym warunkom. Zapoznaj się z nimi. 44.. JJaakk wwyyssłłaaćć ii oottrrzzyymmaaćć ppoocczzttęę?? Po pierwszes sprawdz, czy zainstalowny jest sendmail. (jesli uzywasz Debiana, uważaj. Debian uzywa smail'a nie sendmail'a). Sendmail sortuje wewnętrzną i wychodzącą pocztę, buforuje wychodzące listy do momentu kiedy może je przesłać dalej. Sendmail bazuje na pliku konfiguracyjnym /etc/sendmail.cf. Przykładowy plik konfiguracyjny, dobry dla użytkowników korzystających z usług prowajdera internetu mozna znaleźć w: ftp://ftp.sn.no/user/egilk/sendmail.cf Ten z kolei wymaga zinstalowania programu _p_r_o_c_m_a_i_l, lub może być łatwo zmieniony, tak aby wykorzystywał program _d_e_l_i_v_e_r. Oczywiście konieczne jest posiadanie ooffiiccjjaallnneejj domeny dla poczty wychodzącej na zewnątrz, coś co jest określone w /etc/sendmail.cf: # who I masquerade as (null for no masquerading) DMacme.net Taka konfiguracja zakłada, ze lokalnie na komputerze korzystasz z takiego samego identyfikatora, jak u dostawcy. Jeśli tak, to sendmail jest już skonfigurowny do przesyłania poczty bbeezzppoośśrreeddnniioo do adresata. Aby uniknąc długotrwałych powtarzających się połączeń z komputerem odbierającym pocztę wygodnie jest korzystać z komputera prowajdera jako bufora. Włączamy to modyfikując opcję DS w pliku _/_e_t_c_/_s_e_n_d_­ _m_a_i_l_._c_f: # "Smart" relay host (may be null) DSmail.acme.net Pamiętaj, ze sendamil jest bardzo wrażliwy na znaki tabulatora w pliku konfiguracyjnym sendmail.cf. Rozważ używanie do tych celów edytora vi, aby mieć pewność ze znaki tabulacji, które były w pliku konfigura­ cyjnym nie zostaną zamienione na odstępy podczas zachowywania zmody­ fikowanego pliku na dysku. Odbieranie poczty może być wygodnie zrealizowane za pomocą protokołu POP3, który może być inicjowany za każym razem kiedy następuje zestawienie połączenia. Prosty skrypt do przetestowania tej możliwości wygląda następująco: sendmail -q popclient -3 -v mail.acme.net -u dirk -p "PrettySecret" \ -k -o /usr/spool/mail/dirk Ten skrypt może być uruchamiany po zestawieniu połączenia PPP. Pamiętaj, ze to jest jedynie skrypt testowy. Upewnij się że lokalna skrzynka pocztowa pozostaje nietknięta. Opcja -k oznacza, ze poczta jest ppoozzoossttaawwiiaannaa w skrzynce na komputerze prowajdera, a sciągana jest jedynie kopia listu. Oczywiście po sprawdzeniu poprawności wszystkich ustawień usuniesz tę opcje. Pamiętaj, że twoje hasło będzie widoczne w wierszu poleceń (patrz program ps). To powinno zostać poprawione tak szybko jak to tylko możliwe (ASAP) Bezpieczniejsza i lepsza wersja teko skryptu znajduje się pod adresem: ftp://ftp.sn.no/user/egilk/pop-script.tar.gz Wymaga aby był zainstalowany program procmail, lecz tego raczej nie będziesz żałował. ftp://sunsite.unc.edu/pub/Linux/system/Mail/mailhandlers/procmail-3.10-2.tar.gz Procmail jest prostym i elastycznym narzędziem, które umożliwia sortowanie przychodzącej poczty na ogromną ilość sposobów. Dodatkowo może również zastąpić program vacation i podobne. Pamiętaj, że używanie procmaila w taki sposób jak my to robimy w tym przykładzie jest różne od tego co znajdziesz w dokumentacji procmaila. .forward nniiee jest konieczny i jeśli nie sortujemy przychodzącej poczty nie potrtzebujemy również pliku .procmailrc. Użytkownik, do czytania i wysyłania listów powinien korzystać z takich programów jak elm lub pine. AALLTT:: Szary człowiek korzystający z konta u prowajdera (tam czytający pocztę)nie musi mieć działającego demona sendmaila. Warto wtedy wyłaczyć uruchamianie sendmaila przy starcie komputera. Trzeba w tym celu zmodyfikować /etc/rc.d/rc.M. (W RedHat'cie skorzystaj z programu control-panel (sysvtool)) AALLTT:: Zamiast sendmaila można też skorzystać z prostszego ssmmaaiilla. Dobry opis konfiguracji (oraz wiekszość informacji, którą do tej pory przedstawiliśmy) znajdzesz w _L_i_n_u_x _N_e_t_w_o_r_k _A_d_m_i_n_i_s_t_r_a_t_o_r_'_s _G_u_i_d_e. AALLTT:: Do tworzenia nowych plików konfiguracyjnych sendmail.cf wykorzystuje się pliki z makrodefinicajami m4. Drobne zmiany jest lepiej jednak wykonywać bezpośrednio w pliku /etc/sendmail.cf. AALLTT:: Istnieją również prostsze, choć nie tak elastyczne alternatywy. Mozna używać dobrze skonfigurowanego pine'a, lub nowszych wersji różnych przeglądarek WWW. AALLTT:: Wiele osób jest zachwycone pakietem Gnus towarzyszącemu programowi/edytorowi Emacs. Więcej informacji na tet temat szukaj pod adresem: http://www.ifi.uio.no/~larsi/ AALLTT:: Alternatywą dla popclient jest pop-perl5. Dostępny z: ftp://sunsite.unc.edu/pub/Linux/System/Mail/pop-perl5-1.1.tar.gz 55.. NNoowwiinnkkii 55..11.. JJaakk sskkoonnffiigguurroowwaaćć cczzyyttnniikk nnoowwiinneekk oonnlliinnee?? Tak długo, jak jest aktywne PPP, masz możliwość korzystania z nowinek oonnlliinnee. Istnieje mnóstwo dostępnego oprogramowania. Zwykle wybiera sie pomiędzy rtin i trn. Aby rozpocząc czytanie nowinek trzeba jeszcze tylko powiadomić czytnik, z którego serwera ma korzystać. Wystarczy zmodyfikować plik .profile dodając nową zmienną środowiskową: export NNTPSERVER=news.acme.net Aby twoj adres (_F_r_o_m) pojawiający się w wysyłanych na nowinki listach był poprawny, niektóre porgramy wymagają dodania jescze jednej zmiennej: export NNTP_INEWS_DOMAIN=acme.net 55..22.. JJaakk sskkoonnffiigguurraaoowwaaćć cczzyynnaanniiee nnoowwiinneekk oofffflliinnee?? Aby moc czytać nowinki offline, dzieki temu obniżyć rachunki za telefon, a jednocześnie uzyskać większą elastyczność, trzeba skonfigurować lokalny bufor nowinek (news-spool). Wymaga to pewnej konfiguracji, jak również wolnego miejsca na dysku. Po wstępnym skonfigurowaniu, później wszystko powino działać już samo z siebie, wymagając tylko trochę sprawdzenia i poprawek od czasu do czasu. Opiszemy dwa rózne rozwiązania. 55..33.. JJaakk sskkoonnffiigguurroowwaaćć CC NNeewwss?? Rozwiązanie tutaj opisane opiera się na sewerze nowinek CC NNeewwss i protokole NNTP. C News powstało z myslą o pracy w zupełnie innej konfiguracji, lecz jest na tyle elastyczny, że potrafi sobie poradzić i w tej systuacji. Można również skorzystać z nowszego serwera IINNNN, który może jednak wymagać trochę więcej zasobów. Pamiętaj aby nniiee zainstalować obu; nie potrafią współistnieć w pokoju. Jest bardzo ważne aby wszelkie zabiegi kongiracyjno-pielęgnacyjne wykonywać jako użytkownik news i aby wszystkie pliki konfiguracyjne umieścić w /usr/lib/news. Będąc zalogowanym jako root wystrczy napisać su news; cd. Najważniejsze pliki konfiguracyjne: ˇ active spis aktywnych list dyskusyjnych. Jest modyfikowany przez program addgroup np. addgroup comp.os.linux.networking y. ˇ organization powinien po prostu zawierać tekst jaki chcesz aby się pokazywał w nagłówku _O_r_g_a_n_i_z_a_t_i_o_n_:, w naszym przykładzie będzie to: Dirk Gently's Holistic Detective Agency ˇ mailname w naszym przykładzie będzie to acme.net. ˇ whoami zawiera nazwę twego miejsca, która pokazuje się w nagłówku _P_a_t_h_:. W opisywanej konfiguracji NewsX, ta nazwa nigdy nie opuści twego komputera, więc może być dowolna, pod warunkiem, że będzie jednoznaczna. W tym przypadku roderick. ˇ sys steruje pobieraniem i dalszą dystrybucją artykułów. Zakładamy, że w naszym przykładzie dostawca do ścieżki Path dodaje człon acme.net i że jest to jedyne nasze źródło nowinek. Podany przykład zakłada, że bedziemy przyjmować wszystkie nadsyłane artykuły, lecz my będziemy pisać jedynie do grup acme.net. Zakładamy, że w naszym przykładzie ISP dodaje do Path nazwę acme.net, oraz że jest to nasze jedyne źródło nowinek. W podanym przykładzie akceptujemy wszystkie przychodzące artykuły, lecz będziemy wysyłać nasze artykuły jedynie do acme.net, ale tylko te, których wcześniej nie otrzymaliśmy, i które zostały stworzone na naszym komputerze. W tej uproszczonej konfiguracji zakładamy, że wszystkie grupy będą przychodzić z jednego źródła. /all określa nazwę dystrybucji, i mmuussii być dołączone. Ostatnie F mowi o (wskazuje), że wychodzące artykuły będą gromadzone w pliku. ME:all/all:: acme/acme.net:all,!junk/all:FL: ˇ W naszym przykładzie musimy jeszcze utworzyć katalog-bufor dla wychodzących artykułów, będzie to: mkdir /var/spool/news/out.going/acme ˇ mailpaths steruje wysyłaniem artykułów do grup moderowanych, choć to zadanie można zawsze powierzyć naszemu dostawcy. C News wymaga codziennej pielęgnacji, choć można to zrobić raz na zawsze za pomocą polecenia crontab -e wydanego jako użytkownik news. Sugerowane ustawienia są nastęujące, mogą być dostosowane do indywidualnych potrzeb: # obsłuż przychodzące i wychodzące paczki artykułów 10,40 * * * * /usr/lib/newsbin/input/newsrun # usuń przeterminowane artykuły C News, raz dziennie 30 0 * * * /usr/lib/newsbin/expire/doexpire # monitoruj i powiadom w razie kłopotów 00 2 * * sat /usr/lib/newsbin/maint/addmissing 40 3 * * * /usr/lib/newsbin/maint/newswatch 50 3 * * * /usr/lib/newsbin/maint/newsdaily newsrun przesyła artykuły (dwa razy na godzinę), doexpire usuwa artykuły, które są przestarzałe (każdej nocy o 00:30), a trzy ostatnie polecenia wykonują różne działania administracyjne, poprawiając napotkane błędy. Powinno się również zapewnić wyczyszczenie katalogów podczas uruchamiania systemu. Jako root dopisz następujący wiersz do pliku /etc/rc.d/rc.local: su news -c /usr/lib/newsbin/maint/newsboot Nowinki mogą być pobierane z serwera NNTP programem NNeewwssXX. Można go znaleźć pod adresem: ftp://sunsite.unc.edu/pub/Linux/system/News/newsx-0.1.tar.gz Or: ftp://ftp.sn.no/user/egilk/newsx-0.3.tar.gz Konfiguracja NewsX jest całkiem prosta. Instalacja to klasyczny przykład kompilacji pakietu: make su make install exit Po wykonani opisanych powyżej działań, jedyne co pozostaje to utworzenie grup, które zamierzamy czytać za pomocą polecenia "addgroup". Aby pobrać artykuły, użytkownik news musi wydać polecenie (zakładając, że jest już zestawione połączenie przez PPP lub podobne): newsrun newsx acme news.acme.net newsrun Opcja -d zmusza program do wyświetlania przez cały czas komunikatów na ekranie. Więcej informacji w dokumentacji NewsX. NewsX zajmie się również wysyłaniem artykułów do zewnętrznych grup. Kontrola nad artykułami, które się starzeją wymaga utworzenia pliku explist. Komentarze w naszym przykładzie powinny wyjaśnić co jest naszym celem: # historię trzymamy 14 dni, nikt nie będzie tu dłużej niż 120 dniu /expired/ x 14 - /bounds/ x 0-1-120 - # utrzymuj artykuły tej grupy przez 2 miesiące comp.sources,comp.os.linux.all x 60 - # szum i smiecie wyrzucamu szybko, po dwóch dniach junk,control x 2 - # standardowo: 14 dni, bez archiwizacji all x 14 - AALLTT:: W małej instalacji nowinek zwykle nie jest potrzebna grupa control. Jej ruch jest duży porównując z jej użytecznością. Głownym jej celem jest możliwość kasowania artykułków przez ich nadwcę oraz automatyczne tworzenie nowych grup. Aby się upewnić, że wiadomości zawierające polecenia newgroup nie namieszają w naszej konfiguracji, tworzymy plik newgroupperm, który definiuje na co w takich przypadkach pozwalamy: comp.os.linux tale@uunet.com yv all any nq W tym przykładzie, wszyskie poprawne grupy w drzewie comp.os.linux bedą tworzone (y), a użytkownik news bedzie o tym informowany(v). Całą reszta będzie ignorowana (n) bez żadnych komunikaów na ten temat(q). Jeśli chcesz tworzyć wszystkie nowe grypy ręcznie wystarczy ostatni wiersz. AALLTT:: Alternatywą dla NewsX są suck lub slurp połączone zpostit. Slurp korzysta z NNTP NEWNEWS, które potrafi wyygenerować poważne obciązenie na wielu serwerach nowinek. 55..44.. JJaakk sskkoonnffiigguurraaoowwaaćć LLeeaaffnnooddee?? Innym rozwiązaniem jest zainstalowanie i skonfigurowanie zintegrowanego pakietu leafnode. Obsłuży wszelkie zadania wymagane przez osobisty bufor nowinek i jest prosty w konfiguracji. można go znaleźć pod adresem: http://www.troll.no/freebies/leafnode.html Podobnie jak w przypadku C News, wszelkie prace administracyjne przy nowinkach nalezy wykonywać jako użytkownik news. Katalogiem macierzystym dla leafnode jest /usr/lib/leafnode. Instalacja wygląda następująco: cd /usr/lib/leafnode tar -xzvf leafnode-0.8.tgz cd leafnode-0.8 make su make install Nadal będąc zalogowanym jako root, zmodyfikuj wiersz w pliku /etc/inetd.conf strujący obslugą protokołu nntp: nntp stream tcp nowait news /usr/sbin/tcpd /usr/local/sbin/leafnode I włącz : killall -HUP inetd Teraz znów musisz pracować jako news. Zmień wiesz w pliku /usr/lib/leafnode/config definiujący serwer NNTP, z którego będziemy korzystać. W naszym przykładzie: server = news.acme.net Leafnode potrafi o siebie zadbać jeśli do crotaba dopisze się następujące polecenie (poprzez uruchomienie jako użytkownik news polecenia crontab -e ): # expire Leafnode, once a day 0 4 * * * /usr/local/sbin/texpire Następujące polecenie, wydane jako użytkownik news powoduje wymianę nowinek z serwerem (zakładamy, zę działa PPP): /usr/local/sbin/fetch Uzytkownicy, którzy chcą teraz czytać nęwsy powinni skorzystać z wcześniejszego opisu _J_a_k _s_k_o_n_f_i_g_u_r_o_w_a_ć _c_z_y_t_a_n_i_e _n_o_w_i_n_e_k _o_n_l_i_n_e_?, pamiętając, że konfiguracje trzeba wykonać dla lokalnego komputera tzn: export NNTPSERVER=localhost To by bylo wszystko. Pierwsze polecenie fetch skopiuje listę dostępnych grup. Leafnode będzie monitorował, które grupy są czytane i adaptował się do nowej systuacji przy nnaassttęęppnnyymm uruchomieniu. AALLTT:: Alternatywą dla leafnode jest nntpcache dostępny pod adresem: ftp://ftp.suburbia.net/pub/nntpcache/nntpcache.tgz 66.. JJaakk zzaauuttoommaattyyzzoowwaaćć pprroocceedduurręę łłąącczzeenniiaa ssiięę zz ddoossttaawwccąą?? Pod Linuxem automatyczna obsługa wysyłania i przyjmowania poczty i nowinek jest całkiem prosta. Po pierwsze należy utworzyć plik /usr/lib/ppp/ppp-on odpowiedzialny za zainicjowanie połączenia z prowajderem. Czesto będzie zawierał tylko tyle: /usr/sbin/pppd Kolejne niezbędne informacje należy umieścić w pliku /etc/ppp/options: connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript" crtscts modem defaultroute asyncmap 00000000 user dirk /dev/modem 38400 Zakończenie połączenia zapewni dostarczona wersja /usr/lib/ppp/ppp- off. Aby przetestować funkcjonalność tego rozwiązania należy stworzyć skrypty odpowiedzialne za wykonanie kilku zadań. Skrypt do porania poczty został opisany wcześniej, zakładamy, ze znajduje się w katalogu /home/dirk/pop. Skrypt do wymiany poczty może być utworzony np. w /root/mail: #! /bin/sh # # wymień pocztę z dostawcą # 10 minutes timeout: TIMEOUT=600 DT=10 # kopnij sendmaila (opróżnia kolejkę listów do wysłania) sendmail -q & # pobież pocztę: su dirk -c /home/dirk/pop # poczekaj aż sendmail zakończy pracę: t=0 while ! mailq | grep -q "Mail queue is empty"; do t=$[$t+$DT] if [ $t -gt $TIMEOUT ] ; then echo "sendmail -q timeout ($TIMEOUT).." exit 1 fi sleep $DT done exit 0 Skrypt do wymiany nowinek może być umieszczony np. w /usr/lib/news/news: #!/bin/sh # # wymień nowinki z prowajderem # musi byc uruchomiony jako news cd /usr/lib/news #uaktualnij kolejkę wychodzącą (C News): /usr/lib/newsbin/input/newsrun < /dev/null #wymień nowinki: /usr/lib/newsbin/newsx acme news.acme.net #opróżnij kolejkę przychodzących nowinek: /usr/lib/newsbin/input/newsrun < /dev/null Skrypt łączący te wszytkie kawałki możne umieścić np. w: /root/news+mail: #!/bin/sh # # wymień poczte i nowinki z dostawcą # musi być wykonywany jako root # if ! /usr/lib/ppp/ppp-on; then exit 1 fi trap "/usr/lib/ppp/ppp-off" 1 2 3 15 #wymien nowinki i pocztę : /root/mail & su news -c ~news/news wait #rozłącz się /usr/lib/ppp/ppp-off #uaktualnij kolejkę nowinek przychodzących (C News): su news -c /usr/lib/newsbin/input/newsrun < /dev/null & exit 0 Łatwo jest tak zmodyfikować przedstawione skrypty, że połączenie będzie nawiązywane jedynie wtedy, gdy jakiś list lub artykuł oczekiwał bedziena wysłanie. Nazwijmy go /root/news+mail.cond, pamiętając jednak, że trzeba go dostosować do własnej konfiguracji (nazewnicwa) bufora nowinek: #!/bin/sh # # wymień poczte i nowinki jeśli cokolwiek czeka na wysłanie # (C News spool) if [ -s /var/spool/news/out.going/acme/togo ] || ! ( mailq | grep -q "Mail queue is empty"); then /root/news+mail fi Pozostaje jescze określić kiedy ten skrypt będzie wykonywany. Skorzystamy z polecenia crontab -e jako użytkownik root (pamiętamy, ze ten skrypt musi byc wykonywany jako root). Załózmy, że zawsze chcemy wymieniać pocztę i nowinki po raz pierwszy o 7 rano i potem co 4 godziny o jest coś do wysłania: 00 7 * * * /root/news+mail 00 11,15,19,23 * * * /root/news+mail.cond Zanim połączysz wszystkie części razem, upewni się, że każda z nich działa prawidlowo. Później do tych skryptów można dołączać kolejne, wykonujące takie zadania, jak synchronizacja zegara (za pomocą ntp­ date) czy automatyczne uaktualnianie stron WWW u prowajdera (za pomocą FTP),poprawianych na lokalnym komputerze. AALLTT:: W zależności od upodobań możliwe jest również odwrócenie całego procesu. Za każdym razem, kiedy zostaje zainicjowane PPP uruchamiany jest skrypt /etc/ppp/ip-up. Można do niego dodać uruchamianie innych skryptów obsługujących wymianę poczty i nowinek. Więcej inforamcji o PPP w podręczniku, patrz man pppd . AALLTT:: Możliwa jest również taka konfigracja, w której PPP jest uruchamiane automatycznie, w momencie wykrycia próby korzystania z sieci. W wielu przypadkach jest to bardziej eleganckie rozwiązanie, lecz zła konifuracja może spowodować częste (kosztowne) połączenia modemowe. Więcej informacji na ten temat można znaleźć pod adresem: http://www.cs.toronto.edu/~schenk/diald.html Program narzędziowy diald jest dostępny: ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/diald-0.13.tar.gz Pod powyższym adresem można znleźć inne informacje o połączeniach PPP. 77.. ZZaakkoońńcczzeenniiee 77..11.. CCoośś jjeesscczzee oo cczzyymm ppoowwiinniieenneemm wwiieeddzziićć?? ˇ Rożnego rodzaju komunikaty o błędach będą zwykle generowane jako listy poczty elektronicznej. Aby zapewnić, że zostaną one kiedyś przeczytane należy utworzyć odpowiedni plik /etc/aliases. Pamiętaj o uruchomieniu polecenia newaliases po każdorazowje modyfikacji tego pliku. Przykład który powinien być wystarczający w większości przypadków poniźej: PostMaster: root ftp: root news: root usenet: root FaxMaster: root fax: root WebMaster: root MAILER.DAEMON: root ˇ Wiele programów dla Linuxa można znaleźć w archiwum SSuunnssiittee, które jest całniem obciązone. Na szczęście istneije wiele kopii na całym świecie i zawsze, kiedy podany jest odnośnik do ftp://sunsite.unc.edu/pub/Linux/.. należy skorzystać z najbliższej kopii np ftp://sunsite.icm.edu.pl/pub/Linux/sunsite/... ftp://ftp.nvg.unit.no/pub/linux/sunsite/... ˇ Jeśli przypadkiem wcześniej korzystałeś z programu Yarn, konwersja do standardowych folderów powinno okazać się całkiem prosta. Trzeba skorzystać z programu yarn2mf dostępnego pod adresem: ftp://ftp.sn.no/user/egilk/yarn2mf.zip 88.. IInnffoorrmmaaccjjee oo ddoossttaawwccaacchh iinntteerrnneettuu Dokładniejsze informacje o dostawcach internetu można znaleźć w wielu miejscach: DDeemmoonn IInntteerrnneett ((ddeemmoonn..ccoo..uukk)) ftp://ftp.demon.co.uk/pub/unix/linux/Demon/slack3.0.help.tgz EEaassyynneett TBA NNeettccoomm http://www.netcom.com/bin/webtech/NetCruiser/Operating_Systems/Linux/linux.cfg.html PPoowweerrTTeecchh,, SScchhiibbsstteeddnneetttt,, TTeelleennoorr OOnnlliinnee http://home.sn.no/~egilk/no-isp.html PPrriimmeenneett TBA SSttaannffoorrdd http://www-leland.stanford.edu/~wkn/Linux/network/network.html Jeśli znasz innych, tutaj nie przedstawionych, daj nam znać. Czekamy na informacje od polskich dostawców internetu. Chętnie je tutaj zamieścimy. Wyslij list na adres piotr.pogorzelski@ippt.gov.pl 88..11.. JJaakk ddoowwiieeddzziieećć ssiięę wwiięęcceejj?? Ksiązka oracowana w ramach projektu _L_i_n_u_x _D_o_c_u_m_e_n_t_a_t_i_o_n _P_r_o_j_e_c_t p.t. _L_i_n_u_x _A_d_m_i_n_i_s_t_r_a_t_o_r_'_s _G_u_i_d_e napisana przez Olafa Kircha wydaje się być lekturą obowiązkową dla każdego, kto zamierza zajmować się czymkolwiek w jakiś sposób związany z sieciami TCP/IP i Internetem. ftp://sunsite.unc.edu/pub/Linux/docs/linux-doc-project/network- guide/nag-1.0.ascii.tar.gz Dokumentacja poszczególnych pakietów oprogramowania zwykle dostarcza szczegówłowych informacji, której potrzebujesz. Nawet jeśli nie jest wystarczająca jest to zawsze jakiś początek. Pamiędaj o stronach podręcznika. Spróbuj: man pppd Cześć dokumentacji na temat różnych programów znajdziesz w katalogu /usr/doc. Bardzo polecamy następujące dokumenty HOWTO Niektóre z nich są już przetłumaczone na język polski. ˇ IInnssttaallll--HHOOWWTTOO..ppll podstawy. ˇ NNEETT--22--HHOOWWTTOO lub NNEETT--33--HHOOWWTTOO bardzo dokładny opis instalacji i konfiguracji oprogramowania sieciowego. Jeśli korzystasz ze standardowej dystrybucji(Slackware, RedHat, Debian) większość pracy związanej z konfiguracją sieci powinna już być wykonana. Lecz fragmenty dotyczące konfiguracji i radzenia sobie z sytuacjami awaryjnymi są na pewno godna uwagi. ˇ MMaaiill--HHOOWWTTOO wyjaśnia, jak skonfigurować różne narzędzia. Wiekszość pracy została już wykonana w jeśli zainstalowałeś standardową dystrybucje Linuxa. ˇ NNeewwss--HHOOWWTTOO jak skonfigurować standardowy bufor nowinek (news- spool). ˇ TTiinnyy--NNeewwss opisuje alternatywne podejście do czytania nowinek. ˇ PPPPPP--HHOOWWTTOO..ppll dobry opis problemów jakie można napotkać przy zestawianiu połączenia PPP. ˇ SSeerriiaall--HHOOWWTTOO zawiera wszystko co powinieneś wiedzieć na temat konfiguracji portów szeregowych. ˇ MMaaiill--QQuueeuuee opowiada, jak skonfigurować _s_e_n_d_m_a_i_l aby zawsze kolejkował pocztę wychodzącą w świat, lecz natychmiast doręczał pocztę lokalną. 88..22.. PPooddzziięękkoowwaanniiaa Przedstawione informacje pochodzą z wielu źródeł. Podziękowania za bezpośredni lub pośredni wkład w powstanie tego dokumentu. Adam Holt <holt@graphics.lcs.mit.edu> Arne Coucheron <arneco@oslonett.no> Arne Riiber <riiber@oslonett.no> Arnt Gulbrandsen <agulbra@troll.no> Bjorn Steensrud <bjornst@powertech.no> Gisle Hannemyr <gisle@a.sn.no> Hans Amund Rosbach <haro@sesam.dnv.no> Hans Peter Verne <hpv@ulrik.uio.no> Harald T Alvestrand <Harald.T.Alvestrand@uninett.no> Harald Terkelsen <Harald.Terkelsen@adm.hioslo.no> Haavard Engum <hobbes@interlink.no> Johan S. Seland <johanss@sn.no> John Phillips <john@linux.demon.co.uk> Jorn Lokoy <jorn@oslonett.no> Kenneth Tjostheim <kenneth.tjostheim@asplanviak.no> Kjell M. Myksvoll <kjell.myksvoll@fou.telenor.no> Kjetil T. Homme <kjetilho@math.uio.no> Michael Meissner <meissner@cygnus.com> N J Bailey <N.J.Bailey@leeds.ac.uk> Nicolai Langfeldt <janl@math.uio.no> Ove Ruben R Olsen <Ove.R.Olsen@ub.uib.no> R. Bardarson <ronb@powernet.net> Steinar Fremme <steinar@fremme.no> Sverre H. Huseby <sverrehu@ifi.uio.no> Trond Eivind Glomsrod <teg@stud.imf.unit.no> Tommy Larsen <tommy@mix.hive.no> 99.. OOdd ttłłuummaacczzaa Zdaje sobie sprawę, że niniejsze tłumaczenie zawiera mnóstwo błędów. Niestety nie jestem w stanie dokładnie sprawdzić całego dokumentu i świadomie pozostawiam tę pracę czytelnikowi. Będę wdzięczny za wszelkie uwagi na temat tego dokumentu, wytykanie błędów, literówek, składni i wszelkie inne, które mogą przyczynić się do jego ulepszenia. Wszelkie tego typu uwagi proszę przesyłać na adres piotr.pogorzelski@ippt.gov.pl Inne przetłumaczone dokumenty można znaleźć na stronie http://www.jtz.org.pl. Zapraszamy!. �����������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Install-HOWTO.pl.txt���������������������������������������������������0100664�0001750�0001750�00000201703�06717116340�020060� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Instalacja Linuxa na podstawie The Linux Installation HOWTO by EErriicc SS.. RRaayymmoonndd v4.3, 10 December 1996 wersja polska piotr.pogorzelski@ippt.gov.pl <mailto:piotr.pogorzelski@ippt.gov.pl> w1.0 Luty 1997 Niniejszy dokument objaśnia w jaki sposób zdobyć i zainstalować Lin­ uxa. Wszyscy rozpoczynający przygodę z Linuxem powinni rozpocząć czy­ tanie dokumentacji Jak To Zrobić (HOWTO) od tego właśnie dokumentu. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie 1.1. Dlaczego powstał ten dokument 1.2. Inne źrodła informacji 1.3. Nowe wersje tego dokumentu 1.4. Uwagi i poprawki 2. Ostatnie zmiany 3. Zanim zaczniesz 3.1. Wymagania sprzętowe 3.2. Wymagane zasoby dyskowe i współistnienie z innymi systemami 3.3. Wybór dystrybucji Linuxa 4. Krótki opis instalacji 4.1. Basic Installation Steps 4.2. Podstawowe elementy zestawu instalacyjnego. 5. Szczegółowy opis procesu instalacji 5.1. Przygotowanie się do instalacji 5.2. Tworzenie dyskietek startowych 5.3. Zmiana partycji na dyskach z zainstalowanym DOSem/Windowsami 5.4. Tworzenie partycji dla Linuxa 5.4.1. Podstawowe inforamacje o partycjach 5.4.2. Rozmiary partycji 5.5. Ładowanie dysku startowego (boot disk) 5.6. Korzystanie z dyskietką z głównym systeme plików (root disk) 5.6.1. Instalacja w trybie tekstowym lub graficznym (X) 5.6.2. Korzystanie z 5.6.3. Czynności po przydzieleniu partycji 5.7. Instalacja pakietów z oprogramowaniem 5.8. Po zinstalowaniu pakietów z oprogramowaniem 5.8.1. LILO, LInux LOader czyli ładowacz Linuxa 5.8.2. Tworzenie dyskietki startowej (opcjonalnie) 5.8.3. Dodatkowa konfiguracja systemu 6. Ładowanie nowo zainstalowanego systemu 7. Po pierwszym uruchomieniu Linuxa 7.1. Bycie administratorem systemu 7.2. Wybrane konsiguracje LILO 8. Uwagi administracyjne 8.1. Warunki korzystania 8.2. Podziękowania 9. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee 11..11.. DDllaacczzeeggoo ppoowwssttaałł tteenn ddookkuummeenntt Linux jest darmową implementacją systemu UNIX, zdolną pracować na niedrogich komputerach osobistych (powstał na koputerach PC386, w chwili obecnej można go uruchomić na 486, 586, Pentium PowerPC, SunSparc i DEC Alpha). Obsługuje szeroki zbiór róznego rodzaju oprogramowania włączając w to X Window, Emacs, sieć TCP/IP (SLIP/PPP) i wiele innych aplikacji. Zakładamy, że wiesz już co nieco o Linuxie, przynajmniej tyle, że istnieje, a teraz chcesz się dowiedzieć jak najwięcej o samej instalacji. Skoncentrujemy się na wersji dla komputerów PC, która jest najbardziej popularna, lecz wiele z zamieszczonych poniżej informacji dotyczy również komputerów PowerPC, Alpha i Sparc. 11..22.. IInnnnee źźrrooddłłaa iinnffoorrmmaaccjjii Jeśli nigdy nie słyszałeś o Linuxie, jest kilka miejsc, gdzie można znaleźć podstawowe informacje o systemie. Poszukiwania należy rozpocząć od strony domowej Projektu LDP, którą można znaleźć pod adresem <http://sunsite.unc.edu/mdw/linux.html>. Najnowszą wersję niniejszego dokumnetu można znaleźć pod adresem <http://www.ippt.gov.pl/~ppogorze/linux/JTZ/html/Install- HOWTO.pl.html> Najnowszą wersję angielską zanjdziesz tutajhttp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Install-HOWTO <http://sunsite.unc.edu/pub/Linux/docs/HOWTO/Install-HOWTO>. Czytanie powinieneś rozpocząć od przejrzenia informacji zawartej w takich dokumnetach jak: Linux INFO-SHEET i Linux META-FAQ. Dokument `Linux Frequently Asked Questions' zawiera wiele popularnych pytań (i odpowiedzi!) na temat Linuxa -- nowi użytkownicy _m_u_s_z_ą go przeczytać. Pomoc możesz również znaleźć w grupie Usenet News pl.comp.os.linux <news://pl.comp.os.linux>. Projekt Dokumentacji Linuxa (LDP), przygotowuje zestaw podręczników i książek o Linuxie, wszystkie z nich są swobodnie rozpowszechniane w sieci i dostępne na stronie domowej projektu LDP. Książka _`_`_L_i_n_u_x _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _G_e_t_t_i_n_g _S_t_a_r_t_e_d_'_' jest kompletnym przewodnikiem opisującyn jak zdobyć, zainstalować i korzystać z Linuxa. Zawiera kompletne wprowadzenie do użytkowania i prowadzenia systemu oraz o wiele więcej inforamcji niż przedstawiono tutaj. Możesz ją przeglądać lub pobrać kopię ze strony domowej projektu LDP. 11..33.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu Nowe wersje "Instalacja Linuxa - jak to zrobić" będą okresowe wysyłane na listę pl.comp.os.linux.odpowiedzi <news:pl.comp.os.linux.odpowiedzi>. Będzie również umieszczana w różnych archiwach WWW i FTP dotyczących Linuxa, włączając stronę domową LDP. Ostatnią wersję tego dokumentu można zawsze znaleźć pod adresem <http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/html/Install- HOWTO.pl.html>. 11..44.. UUwwaaggii ii ppoopprraawwkkii Jeśli masz jakiekolwiek uwagi lub poprawki do tego dokumnetu, proszę nie wahaj się napisać do piotr.pogorzelski@ippt.gov.pl <mailto:piotr.pogorzelski@ippt.gov.pl>. Jestem otwarty na wszelkie uwagi, również te krytyczne. Jeśli znajdziesz jakiś błąd w tym dokumencie, proszę powiadom mnie o tym, abym mógł go poprawić w następnej wersji. Dziękuję. Proszę _n_i_e przysyłajcie mi pytań, jak sobie poradzić z kłopotami ze sprzętem jakie napotkaliście w czsie instalacji. Zapoznajcie się z _`_`_L_i_n_u_x _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _G_e_t_t_i_n_g _S_t_a_r_t_e_d_'_', informujcie producenta lub szukajcie pomocy w grupie pl.comp.os.linux <news:pl.comp.os.linux>. Ten dokument ma być zwięzłym źródłem informacji o _z_w_y_k_ł_e_j instalacji -- w przygotowaniu jest dokument poświęcony problemom, jakie napotykacie w czasie instalacji. 22.. OOssttaattnniiee zzmmiiaannyy ˇ Dodana lista czynności do wykonania przed instalacją ˇ W częsci dotyczącej podziału na partycje dodano uwagi o problemach z LILO i BIOSem ˇ Wprowadzono wiele odnośników do inych dokumentów 33.. ZZaanniimm zzaacczznniieesszz Zanim zaczniesz instalować Linuxa muszisz być absolutnie pewien, że komputer na którym chcesz to zrobić jest do tego odpowiedni, oraz zdecydować się, którą dystrybucję chcesz zainstalować. 33..11.. WWyymmaaggaanniiaa sspprrzzęęttoowwee Jakiego rodzaju komputer jest potrzebny do urchomienia Linuxa? Dobre pytanie. Wymagania sprzętowe zmieniają sie okresowo, Listę sprzętu, który pracuje pod Linuxem można znaleźć w Linux Hardware-HOWTO <http://sunsite.unc.edu/mdw/HOWTO/Hardware-HOWTO.html>. Inny spis można znależć w Linux INFO-SHEET, <http://sunsite.unc.edu/mdw/HOWTO/INFO-SHEET.html>. W przypadku komputera, wydaje się, że przykładowa konfiguracja może wyglądać następująco: Jakakolwiek płyta ISA, EISA, VESA Local Bus lub PCI, 80386, 80486, Pentium lub P-6. Aktualnie architektura MicroChannel (MCA) jaką można znaleźć w komputerach IBM PS/2 nie jest obsługiwana. Dowolny procesor od 386SX do P-6 bedzię działał. Koprocesor nie jest potrzebny, choc warto go mieć. Potrzebne jest co najmniej 4MB RAM. Linux potrafi pracować nawet z 2MB RAM, lecz wiekszość instalacji i oprogramowania wymaga 4MB (RedHat do instalacji potrzebuje 8MB, potem działa na 4MB). Jeśli planujesz pracę pod X Window, proponuję 8, lub 16MB RAM. Oczywiście niezbędny jest twardy dysk, oraz standardowy kontroler dyskowy AT. Wszystkie dyski i sterowniki typu MFM, RLL i IDE będą pracować poprawnie. Linux potrafi pracować z wieloma dyskami i sterownikami standardu SCSI. Więcej informacji na ten temat oraz na temat samego SCSI można znaleźć w Linux SCSI-HOWTO. Jeśli budujesz komputer od zera, specjalnie dla Linuxa, dodatkowy koszt przeznaczony na zakup urządzeń SCSI jest warty zwiększenia osiągów systemu i jego niezawodności. Bedzie niezbędny napęd 3.5". Choć napędy 5.25" sa obsługiwane przez Linuxa, są one coraz mniej popularne i nie można liczyć, że uda się znaleźć dystrybucje przeznaczone na takie dyskietki. (Bardzo okrojony Linux może być uruchomiony na jednej dyskietce, lecz jego przydatność sprowadza się jedynie do sytuacji awaryjnych lub właśnie do samej instalacji nowego systemu.) Potrzebna jest również karta grafiki snadardu MDA, Hercules, CGA, EGA, VGA, lub Super VGA oraz odpowiedni monitor. Ogólnie rzecz biorąc jeśli karta grafiki i monitor pracują pod MS-DOSem to powinny również pracować pod Linuxęm. Jeśli jednak planujesz uruchamiać X Window, istnieją dodatkowe ograniczenia dotyczące obsługiwanych kart graficznych. Więcej na ten temat można znaleźć w dokumencie Linux XFree86-HOWTO, <http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/html/XFree86-HOWTO.pl.html> , który zawiera inforamcje nt uruchamiania i wymagań X Window. Przydatny jest również CD-ROM. Jeśli jest to CD-ROM typu ATAPI, SCSI lub "prawdziwy" IDE to nie powinno być żadnych kłopotów.(Uważaj na tanie napędy reklamowane jako IDE, które nie są do końca prawdziwymi napędami IDE). Jeśli twój CD-ROM wykorzystuje firmową kartę rozszerzenia, może się zdarzyć, że jądro, które znajduje się na dyskietce instalcyjnej nie będzie w stanie go rozpoznać, co uniemożliwi instalację z plytki CD. Rownież napędy CD przyłączone do portu równoległego nie będą pracować. Jeśli masz wątpliwości zajżyj do Linux CD-ROM HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/CD-ROM- HOWTO.html>, gdzie znajdziesz dokładną listę obsługiwanego sprzętu. Tak zwane urządzenia "Plug'n'Play" mogą stanowić problem. Obsługa tych urządzeń jest aktywnie rozwijana, lecz nie ma jej jescze w jądrze 2.0.25. Na sczęście zwykle jest to problem z kartami dźwiękowymi lub sieciowymi kartami Ethernet. 33..22.. WWyymmaaggaannee zzaassoobbyy ddyysskkoowwee ii wwssppóółłiissttnniieenniiee zz iinnnnyymmii ssyysstteemmaammii Potrzebne jest wolne miejsce na twardym dysku. W zależności od tego jakie i ile oprogramowania planujesz zainstalować może to być od 40 do 500 MB. Większość instalacji wymaga od 40 do 80 MB. Obejmuje to miejsce na oprogramowanie, swap (pamięć wirtualną) i trochę wolnej przestrzeni dyskowej dla użytkowników. Można uruchomić Linuxa również na 10 MB lub mniej, lecz równie dobrze pełna instalacja może zając ponad 500 MB. Ta wielkość zależy głównie od ilości oprogramowania, które zainstalujesz i ile przestrzeni dyskowej zostanie przeznaczone dla użytkowników. Linux może współistnieć na tym samym dysku z innymi systemami operacyjnymi, takimi jak MS-DOS, Microsoft Windows czy OS/2. (W rzeczywistości możesz mieć nawet dostęp do plików DOSu, a nawet wykonywać niektóre niektóre programy DOSu po Linuxem). Innymi słowy podczas podziału dysku na partycje, Linux, MS-DOS i OS/2 zyją na własnych partycjach. Więcej inforamcji o takich mieszanych konfiguracjach później. Nie musisz uruchamiać MS-DOSu czy OS/2 aby móc używać Linuxa. Linux jest zupełnie innym, niezależnym systemem operacyjnym i jego instalacja i użytkowanie nie zależy od innych systemów. Podsumowując, minimalny zestaw dla Linuxa nie jest znacząco większy od tego wymaganego przez sprzedawane dzisiaj sytemy MS-DOS lub Windows 3.1 ( i jest dużo mniejszy od minimalnego zestawu potrzebnego do uruchomienia Windows 95!). Jeśli posiadasz 386 lub 486 z co najmniej 4MB RAM, to będziesz szczęśliwy pracując pod Linuxem. Linux nie wymaga dużej ilości przestrzeni dyskowej, pamięci czy mocy procesora. Matt Welsh, człowiek, który zapoczątkował ten dokument używał Linuxa na komputerze 386/16 MHz. (najwolniejszy komputer jaki można zdobyć) z 4 MB RAM i być całkiem z tego zadowolony. Im więcej chcesz robić tym więcej potrzebujesz pamięci, lepszego procesora. Z naszego doświadczenia wynika, że 486 z 16 MB RAM pracująca pod Linuxem jest lepsza od kilkunastu modeli drogich stacji roboczych. 33..33.. WWyybbóórr ddyyssttrryybbuuccjjii LLiinnuuxxaa Zanim będziesz mógł rozpocząć instalację Linuxa, musisz się zdecydować na jedną z dostępnych ``dystrybucji'' Linuxa. Nie ma jednej, standardowej dystrybucji Linuxa -- istnieje ich wiele. Każda z nich ma własną dokumentację i instrukcję instalacji. Dystrybucje Linuxa są dostępne na krązkach CD, FTP, taśmie, dyskietkach. Linux Distribution HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/Distribution-HOWTO.html>, zawiera opisy wielu dystrybucji Linuxa dostępnych przez FTP lub za zaliczeniem pocztowym (głównie w USA, już niedługo również w Polsce). W zamierzchłych czasach, kiedy po raz pierwszy powstał ten dokument (1992-1993), większość zdobywała Linuxa wpierw sciągając go przez ftp (lub przez modem z różnych BBSów) na lokalny dysk, następnie kopiując je na niezliczone ilości dyskietek. Jedna z tych dyskietek służyłą następnie do wystartownia systemu i zainstalowania całej reszty. Mając szczęscie (i dobry nośnik na dyskietkach) kończyło się instalację po kilku godzinach, lub powtarzało ją na nowo. Choć nadal można wybrać tę drogę, istnieją teraz mniej stresujące metody. Najprościej jest kupić jedną z wysokiej jakości dystrybucji komercyjnych, rozprowadzanych na krązkach CD takich, jak RedHat, Craftworks, LinuxPro lub WGS. Są one dostępne zwykle poniżej $50 w twojej księgarni lub sklepie komputerowym. Zaoszczędzsz wiele niepotrzebnie zmarnowanego czasu. Można również kupić zestawy CD takie jak InfoMagic Linux Developer's Resource. Zawierają zwykle kilka dystrybucji Linuxa oraz świerzą kopię takich archiwów jak sunsite lub tsx-11. Pod koniec tego dokumentu skoncentrujemy się jak zainstalować Linuxa z takiego właśnie zestawu, który nie posiada wydrukowanej instrukcji instalacji. Jeśli twój Linux jest zaopatrzony w w drukowaną instrukcję to ten dokument może stanowić dobre wprowadzenie lecz ostatecznie należy się kierować informacjami zawartymi w tej instrukcji. 44.. KKrróóttkkii ooppiiss iinnssttaallaaccjjii 44..11.. BBaassiicc IInnssttaallllaattiioonn SStteeppss Szkic instalacji Linuxa jest prosty: 1. Zbierz informacje o konfiguracji twojego sprzętu 2. Zrób dyskietki instalacyjne. 3. Jeśli pragniesz zainstalować Linuxa na tym samym komputerze razem z innym systemem operacyjnym (Linux i DOS, Linux i Windows, albo wszystkie 3) zmień ustawienie partycji na dysku (wolne miejsce dla Linuxa). 4. Wystartuje komputer z dyskietki Instalacyjnej, otrzymasz dostęp do Napędu CD. 5. Przygotuj system plików dla Linuxa. (Jeśli do tej pory nie zmieniłeś układu partycji, zrobisz to teraz.) 6. Zainstaluj część podstawową z krążka CD. 7. Wystartuj Linuxa z CD. 8. (Opcjonalnie) Zainstaluj więcej pakietów z CD-ROMu. 44..22.. PPooddssttaawwoowwee eelleemmeennttyy zzeessttaawwuu iinnssttaallaaccyyjjnneeggoo.. Tak wyglądają podstawowe części dystrybucji instalacyjnej: 1. Pliki README i FAQ. Zwykle umieszczone w katalogu głównym krązka CD. Dostępne tuż po zamontowaniu CD. (W zależności od tego jak zostały zrobione mogą być nawet dostępne pod MS-DOS lub MS Windows). Radzimy przeczytać te pliki, jak tylko bedą dostępne. Mogą zawierać ważne informacje o zmianach i poprawkach. 2. Kilka(naście) obrazów dyskietek instalacyjnych. (częstko w oddzielnym podkatalogu) Jeden z nich zsotanie przez ciebie zapisany na dyskietce tworząc w ten sposób dyskietkę startową. Musisz wybrać jjeeddeenn obraz dyskietki instalacyjnej taki, który najlepiej pasuje do twojego sprzętu. W chwili obecnej, jest to juz jeden plik. Obsługa urządzeń jest kompilowana w postaci niezależnych modułów, które sa ładowane na życzenie).A number of bootdisk images (often in a subdirectory. (w chili obecnej to sie zmienilo i jest juz zwykle tylo jeden plik z obrazem dyskietki instalacyjnej (pp)). ˇ Plik zawierający obraz system plików i katalog główny (czasami nawet dwa pliki). Po zapisaniu go na dysk stworzysz kolejną dyskietkę instalacyjną. Dysk z systemem plików jest niezależny od sprzętu. ˇ Obraz dyskietki ratunkowej. Jest o dyskietka zawierająca jądro i kilka niezbędnych programów do ratowania systemu w przypadkach krytycznych. ˇ RAWRITE.EXE. Jest to program pracujący w środowsiku MS-DOS, który zapisze zawartość opisaych wcześniej plików (zawierających obraz dyskiet startowej, lub główny system plików) bezpośrednio na dyskietkę, bez względu na jej format. RAWRITE.EXE jest niezbędny, jeśli planujesz tworzenie dykietek instalacyjnych w środowisku MSDOS. Jęsli nasz dostęp do UNIXowej stacji robozcej, która posiada stację dsykietek, możesz zrobic dyskietki instalacyjne na niej, korzystając z programu `dd'. Czasami można znaleźć przygotowny skrypt do tworzenia dyskietek instalacyjnych, ˇ Sam krążek CD-ROM. Celem dyskietki startowej jest załadowanie jądra i umożliwienie podłączenia dyskietki z głównym systeme plików (lub dyskietek instalacyjnych), która sama jest z kolei narzędziem do odpowiedniego spreparowania twardego dysku i skopiowania na niego części zawartości krążka CD. 55.. SSzzcczzeeggóółłoowwyy ooppiiss pprroocceessuu iinnssttaallaaccjjii 55..11.. PPrrzzyyggoottoowwaanniiee ssiięę ddoo iinnssttaallaaccjjii Linux efektywniej wykorzystuje elementy twojego komputera niż MS-DOS, Windows czy Windows NT, ale w konsekwencji jest mniej tolerancyjny na źle skonfiguraowany sprzęt. Jest kilka rzeczy, które możesz zrobić, które zmiejszą prawdopodobieństwo, że instalacja zostanie przerwana przez tego typu problem. Po pierwsze zgromadź wszelką dokumentację na temat posiadanego sprzętu -- plyty głównej, karty graficznej, monitora, modemu itp -- i umieść je gdzieś pod ręką. Po drugie, zgromadź dostępną informacje o aktualnych ustawieniach podzespołów twojego komputera. Jeśli masz na komputerze zainstalowany MS-DOS (co najmniej v5.0) zrób wydruk informacji jakie udziela narzędzie msd.exe. Zagwarantuje to pełną i poprawną informacje na temat karty graficznej i myszy co będzie pomocne przy konfiguracji X Window. Po trzecie sprawdź czy komputer nie ma kłopotów sprzętowych, które mogą spowodować nieodwracalne blokady (zawieszenia) podczas samej instalacji. ˇ Uzytkownicy DOS/Windows korzystający z dysków IDE i CDROMów IDE, mogą się znaleźć w takiej sytuacji, że pomimo błędnego ustawienia przełączników master/slave na tych urządzeniach pracują one poprawnie pod DOSem, lecz pod Linuxem bedzie to absolutnie niemożliwe. Jeśli masz jakieś podejżenia, sprawdż przełączniki! ˇ Czy jakieś twoje urządzenie nie posiada ani przełączników ani podtrzymywanej pamięci przechowującej aktualną onfigurację (nonvolatile memeory)? Jeśli tak, może wymagać sprcjalnego inicjowanai podczas startu sytemu poprzez odpowiednie programy dla MS-DOSu i może nie być łatwo uruchomić je pod Linuxem. Napędy CD, karty dźwiękowe, karty sieciowe i tanie napędy steamerów mogą być przyczyną takich problemów. Być może uda ci się przezwyciężyć ten problem podając odpowiednie parametry w wierszu zachęty startowej (boot prompt); po szczególy sięgnij do Linux BOOT Prompt HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html> ˇ Inne systemy operacyjne pozwalają myszce standardu Bus Mouse dzielić przerwanie IRQ z innym urządzeniem. Linux tego nie obsługuje, w rzeczywistowści próba zrealizowania tego pod Linuxem może zablokować twój komputer. Jeśli korzystasz z myszki standardu Bus Mouse zapozna się z dokumentem Linux Bus Mouse HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/Busmouse-HOWTO.html>. Jeśli to możliwe zdobądź telefon bardziej zaawansowanego użytkownika Linuxa. W dziewięciu na dziesięc przypadków nie będziesz go potrzebował, lecz jaki to komfort mieć go podczas instalacji. Ile czasu to może potrwać? Na podstawowy system, trzeba liczyć około godziny. Jesli na komputerze ma być więcej niż jeden sytem spodziewaj się trzech godzin (w takim przypadku jest większe prawdopodobieństwo wystąpienia błędów). 55..22.. TTwwoorrzzeenniiee ddyysskkiieetteekk ssttaarrttoowwyycchh Twój krążek CD może zawierać materiały lub narzędzia pomocne przy instalacji, które przeprowadzą cię przez proces tworzenia dyskietek instalacyjnych przy pomocy prostych interacyjnych programów. Mogą to być równie dobrze programy instalacyjne pracujące pod MS-DOSem (patrz program redhat.exe w dystrybcji RedHat), pod UNIXem lub pod jednym i drugim. Jeśli w twojej dystrybucji znalazłeś taki program, powinieneś go użyć i potraktować resztę tego rozdziału jako materiał poglądowy. Skorzystaj z tego programu, jego autorzy na pewno lepiej wiedzieli o specyficznych cechach dystrybucji niż my. Zaoszczędzisz sobie wielu kłopotów. Więcej dokładnych informacji na temat tworzenia dystkietek startowych (boot disk i root disk) znajdziesz w Linux Bootdisk HOWTO <http://sunsite.unc.edu/mdw/HOWTO/Bootdisk-HOWTO.html>. Wpierw musisz wybrać plik dsyku startowego (disk boot image), który jest najleszy dla sprzętu, który posiadasz. Jeśli musisz to zrobić ręcznie, zwykle spostrzeżesz, ze (a) albo pliki mają nazwy, które ułataiwają wybranie odpowiedniego, lub (b) istnieje plik zawierający opis cech każdego z dostępnych plików dyskietki startowej. Następnie należy przygotować dwie lub trzy dyskietki _h_i_g_h_-_d_e_n_s_i_t_y sformatowane pod MS-DOSem. Muszą być tego samego rodzaju, to znaczy jeśli napęd startowy jest 3.5" obie dyskietki muszą być 3.5"-we. Następnie należy użyć RAWRITE.EXE do zapisania plików z obrazem dyskietek startowych na dyskietki. Uruchom go bez żadnych prametrów, po postu tak: C:> RAWRITE Odpowiedz na pytanie o nazwę pliku, który należy zapisać na dyskietce nazwę napędu do którego pisać (np. A:). RAWRITE skopiuje plik blok po bloku bezpośrednio na dyskietkę. Użyj RAWRITE do zrobienia kolejnych dyskietek instalacyjnych (np COLOR144). Jak skończysz staniesz się posiadaczem dwóch dyskietek: jednej startowej i drugiej zawierającej system plików z katalogiem głównym. Pamiętaj, że tych dyskietek nie można już odczytać pod MS-DOSem ( wpewnym sensie są w formaci ``Linuxa''). Pod Unixem to samo można zrobić wykorzystując program dd(1). (Potrzebna jest oczywiście stacja robocza z napędem dyskietek) Na przykład na komputerach Sun, na których dyskietkę reprezentuje plik specjalny _/_d_e_v_/_r_f_d_0, można zastosować następujące polecenie: $ dd if=bare of=/dev/rfd0 obs=18k Na niektórych stacjach roboczych należy koniecznie podać rozmiar bloku wyjściowego (np Sun) w przeciwnym wypadku kopiowanie się nie uda. Jesli napotksz na klópoty, podręcznik dd(1) powinien być pomocny. Upewnij się, że używasz dobrej jakości dydkietek. Wykorzystywane dydkietki nie mogą mieć złych bloków. Pamietaj, ze nie musisz mieć działającego Linuxa lub MS-DOS, aby móc zainstalować Linuxa. Posiadanie Linuxa lub dosu ułatwia zrobienie dyskietek instslscyjnych z plików znajdującyh się na CD. Jeśli nie masz na swoim komputerze żadnego systemu skorzystaj z komputera kolegi. Przygotuj na nim dyskietki instalacyjne i posłuż się nimi na swoim komputerze. 55..33.. ZZmmiiaannaa ppaarrttyyccjjii nnaa ddyysskkaacchh zz zzaaiinnssttaalloowwaannyymm DDOOSSeemm//WWiinnddoowwssaammii W większości pracujacych systemów, twardy dysk jest już podzielony na partycje dla DOSu, OS/2 itd. Konieczna będzie zmiana rozmiaru tych partycji, tak aby zwolnić odpowiednią ilość miejsca dla Linuxa. Jesli planujesz instalację, gdzie na jednym dysku będą współistnieć różne systemy, mocno plecamy zapoznanie się z jednym lub więcej następujących mini-HOWTO, które opisują dokładniej różne konfiguracje instalacji wielosystemowych. ˇ The Linux+DOS+Win95 mini-HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/mini/Linux+DOS+Win95>. ˇ The Linux+OS2+DOS mini-HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/mini/Linux+OS2+DOS>. ˇ The DOS-Win95-OS2-Linux mini-HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/mini/Linux+DOS+Win95+OS2>. ˇ The Linux+Win95 mini-HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/mini/Linux+Win95> ˇ The Linux+WinNT mini-HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/mini/Linux+WinNT> Nawet jęsli nie mają bezpośredniego zastosowania dla twojej sytuacji, na pewno pomogą w głębszym zrozumieniu idei i wyagań. UUWWGGAA:: Część dystrybucji może być zainstalowana na partycji MS-DOS w oddzielnym katalogu (to jest zupełnie cos innego niż instalowanie Z partycji MS-DOS). Linux wykorzystuje w tym celu system plików o nazwie UMSDOS, który pozwala na traktowanie podkatalogu na partycji MS-DOS jako systemu plików Linuxa. W ten sposób zmiana rozmiaru partycji nie jest konieczna. Możemy zasugerować tę metodę w przypadkach, gdy dysk jest już podzielony na 4 partycje i zmiana partycji będzie bardziej kłopotliwa niż jest to warte. Lub w przypadku, gdy chesz sprawdzić jak wygląda Linux, przed podziałem dysku na partycje, wtedy jest to dobra metoda. Jednak w większośi wypadków sugerujemy zmianę rozmiarów partycji, tak jak jest to tutaj opisane. Jeśli zamierzasz korzystać z UMSDOS, robisz to na własną rękę -- nie jest to udokumentowane w tym dokumencie. Od tej chwili zakładamy, że NIE korzystasz z syztemu UMSDOS i, że przeprowadzisz operację zmiany partycji. _P_a_r_t_y_c_j_a jest to część twardego dysku, wydzielona dla konkretnego systemu operacyjnego. Jeśli masz zainstalowany tylko MS-DOS, zatem prawdopodobnie masz na twardym dysku tylko jedną partycje przeznaczoną w całości na MSDOS. Aby korzystać z Linuxa muszisz jednak zmienić układ partycji, tak aby była jedna partycja dla MS-DOS i jedna (lub) więcej dla Linuxa. Partycje dzielą się generalnie na 3 rodzaje : _p_o_d_s_t_a_w_o_w_e (primary), _r_o_z_s_z_e_r_z_o_n_e (extended) i _l_o_g_i_c_z_n_e. W skrócie, partycje podstawowe są jednymi z czterech głównych partcji. Jednakże jeśli potrzebujesz więcej niż cztery partycje na jednym dysku, musisz utworzyć partycję rozszerzoną, która może zawierać wiele partycji logicznych. Dane są przchowywane wyłącznie na partycji podstawowej lub logicznej. Inaczej mówiąc większość ludzi korzystają z partycji podstawowych. Jeśli potrzeba jest więcej niż 4 partycje należy utworzyć partycję rozszerzoną. Partycje logiczne są tworzone na partycji rozszerzonej, no i proszę mamy więcej niż 4 partycje na dysku. Możesz zainstalować Linuxa również na drugim fizycznym dysku. Wystarczy podać nazwę odpowiedniego urządzenia podczas tworzenia partycji Linuxowej. Wiecej szczegółow na ten temat późnizej. Wróćmy do zmiany rozkładu partycji na dysku. Problem polega na tym, że nie istnieje sposób, aby zrobić to (w łatwy sposób) bez zniszczenia danych znajdujących się na partycji, której rozmiar zmieniamy. Datego muszisz zrobić pełną kopię wszelkich danych na dysku, zanim zaczniesz zmieniać rozmiary partycji. Ziana rozmiaru partycji będzie polegała na jej usunięciu i odtworzeniu, lecz o mniejszym rozmiarze. UUWWAAGGAA:: Istnieje program pod MSDOS służący do zmiany rozmiaru partycji bez konieczności jej uprzedniego usunięcia. Nazywa się FIPS. Patrz <http://sunsite.unc.edu/Linux/system/Install>. Korzystając z FIPSa, programu porządkującego dysk (takiego jak Norton Speed Disk) i mając trochę szczęścia powinieneś móc odpowiednio zmienić rozmiary partycji bez niszcenia znajdującyhc się na nich danych. Mimo wszystko nadal sugerujemy wykonanie pełnej kopii dysku, przed korzystaniem z programu FIPS. Jednakże jeśli nie korzystasz zprogramu FIPS, klasyczna metoda polega n skorzystaniu z programu FDISK. Powiedzm, że masz dysk o pojemności 80MB i chciałbyś go podzielić na dwie części -- 40MB dla MS-DOS i 40 MB dla Linuxa. W tym celu musisz uruchomićpod MS-DOSem program FDISK, usunąc partycję 80MB przeznaczoną na DOS, następnie utworzyć w jeje miejscu nową partycję o rozmiarze 40MB i zakończyć program pozostawiając niezagospodarowane 40MB. Możesz następnie sformatować nowo utworzoną partycję i zainstaować swoje oprogramowanie z wykonanej uprzednio kopii. (Prosze pamietac, aby do wykonywanai operacji programem FDISK startować system z dyskietki, na krórej powinny znaleźć sie przynajmniej programy FDSIK, FORMAT i SYS). Póżniej w czasie instalacji Linuxa, pozostawione 40MB zostanie wykorzystane do utworzrnia partycji Linuxa i zaistalowanie na niej systemu. W skrócie, aby zmienić rozmiar partycji należy wykonać następujace działania (za pomocą programu FDISK): 1. Zrób pełną kopię dysku 2. Zrób dyskietkę strtową MS-DOS, np poleceniem FORMAT /S A: (uwaga, wszystkie dane na dyskietce zostana zniszczone). 3. Skopiuj na tę dyskietkę programy FDISK.EXE and FORMAT.COM, oraz inne narzędzia, których będą ci potrzebne. (Np. narzędzia do odtworzenia programów i systemu z wykonanej kopii. 4. Wystartuj MS-DOS z nowo utworzonej dyskietki.. 5. Uruchom FDISK, podając jeśli to możliwe, który dysk chcesz modyfikować (C: lub D:). 6. Skorzystaj z menu programu i usuń te partycje, których rozmiar chcesz zmienić. TToo zznniisszzcczzyy wwsszzyyssttkkiiee ddaannee zznnaajjdduujjąąccee ssiięę nnaa ttyycchh ppaarrttyyccjjaacchh.. 7. Skorzystja z menu programu FDISK, aby utworzyć nowe partycje,o mniejszym rozmiarze. 8. Zakończ pracę z FDISKiem i sformatuj nowo utworzone partycje programem FORMAT. 9. Odtwórz dane na nowo sformatowanych partycjach z wykonanych wcześniej kopii. Zwróć uwagę, że dosowy program FDISK da ci możliwość utworzenia ``Logical DOS drive'' (logicznego dysku MSDOS). Logiczny dysk MSDOS to po prostu partycja logiczna twojego dysku. Możesz zainstalowac Linuxa na partycji logicznej, lecz nie chcesz utworzenia taj partycji logicznej DOSowym programem FDISK. Jeśli aktualnie korzystasz z logicznego dysku MSDOS i chcesz w tym miejscu zainstalować Linuxa, powinieneś usunąć logiczny dysk MSDOS za pomocą DOSowego FDISK i (później) utworzyć w tym miejscu nową logiczną partycję dla Linuxa. Sposób zmiany rozmiaru partycji dla OS/2 lub innych systemów operacyjnych jestpodobny. Szczegółów szukaj w dokumentacji tych systemów. 55..44.. TTwwoorrzzeenniiee ppaarrttyyccjjii ddllaa LLiinnuuxxaa Po zmianie rozmiaru partycji, potrzebujesz utworzyć partycje dla Linuxa. Zanim powiemy jak to zrobić opowiemy wpierw o partycjach i systemach plików pod Linuxem. 55..44..11.. PPooddssttaawwoowwee iinnffoorraammaaccjjee oo ppaarrttyyccjjaacchh Linux wymaga co najmniej jednej partycji dla głownego systemu plików (_r_o_o_t _f_i_l_e_s_y_s_t_e_m), który będzie zaierał jądro Linuxa i dodatkowe oprogramowanie. Możesz myśleć o _s_y_s_t_e_m_i_e _p_l_i_k_ó_w jako o partycji sformatowanej dla Linuxa. Systemy plików służą do przechowywania plików. Każdy system Linuxowy musi miec co najmniej główny system plików. Jednakże wielu użytkowników preferuje korzystanie z wielu systemów plików -- jeden dla każdej większej części poddrzewa katalogów. Na pryzkład możesz chieć utworzyć oddzielny system plików do przechowywania plików w katalogach poniżej katalogu _/_u_s_r.(Zwróć uwagę, że na sytemach UNIX, katalogi oznacza się kreską pochyloną wprzód, a nie w tył jak to robi MSDOS.) W takim przypadku będziesz posadał zarówno główny system plików, jak i system plików dla katalogu _/_u_s_r. Każdy system plików wymaga oddzielnej partycji. Dlatego jeśli chesz korzystać z głównego sustemu plików i systemu plików _/_u_s_r muszisz utworzyć dwie partycje. Dodatkowo, większość użytkowników tworzy partycję dla _p_a_m_i_ę_c_i _w_y_m_i_a_n_y _(_s_w_a_p _p_a_r_t_i_t_i_o_n_). Jesli masz, powiedzmy 4MB RAM i 10 MB partycji wymiany, tak długo jak dotyczy to Linuxa, posiadasz 14MB pamięci virtualnej. Korzystając z obszaru wymiany, Linux przenosi na dysk niewykorzystywane sptrony pamięci, pozwalając uruzhomić więcej aplikacji w tym samym czasie. Ponieważ wymiana pamięci jest powolna, nie jest to sposób na zwiekszenie rozmairu pamięci RAM. Jednakże aplikacje, które wymagają dużej pamięci (jak X Window System) często polegają na pamięci wymiany, w przypadkach gdy jest niedostatecznie dużo pamięci RAM. Niemal wszysy użytkwonicy Linuxa korzystają z partycji wymiany. Jeśli posiadasz 4MB RAM , partycja wymiany jest konieczna aby można zainstalować Linuxa. Mocno zalecamy utowrzenie partycji wymiany na stałe chyba, że posiadasz w swoim komputerze dużą ilość pamięci RAM. Rozmaiar partycji wymiany zależy jak dużo potrzebujesz pamięci wirtualnej. Często zaleca się aby mieć minimum 16MB pamięci wirtualnej (RAM + pamięć wymiany). Czyli jeśli masz 8MB ram powinieneś utworzyć partycję wymiany o rozmiarze 8MB. Pamiętaj, że partycja wymiany nie może być większa niż 128 MB. Dlatego jeśli potrzebujesz pamięci wymiany więcej niż128 MB, musisz utworzyć większą liczbę partycji wymiany. Mozesz mieć nie więcej niż 16 partycji wymiany. Wiećej inforamcji na temat teorii obszaru wymiany i partycji w dokumencie Linux Partition mini-HOWTO ( <http://sunsite.unc.edu/mdw/HOWTO/mini/Partition>). Uwaga: jest możliwe (choć jest to trochę sztuczka) współdzielenie partycji wymiany między linuxem i Windows 95 w konfiuracjach, gdzie oba te systemy są zainstalowane. Więcej inforamcj w tym temacie zawiera dokument Linux Swap Space Mini-HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/mini/Swap-Space>. Uwaga #1: Ieśli posiadasz dysk EIDE z partycjką większą niż 504MB, twOj BIOS może nie pozwolić na wystartowanie zainstalowanego na niej Linuxa. Pamiętaj aby utrzymywać swoją partycję główną poniżej granicy 504MB. To nie powinno być problemem w przypadku sterowników SCSII, które mają zwykle własny BIOS. Szczególy techniczne znajdziesz w Large Disk Mini-HOWTO, <http://sunsite.unc.edu/mdw/HOWTO/mini/Large- Disk>. Uwaga #2: Uzywasz jednocześnie dysków IDE i SCSI? Jesli tak, to uważaj. BIOS może nie pozwalać na usuchamianie systemu z dysku SCSI. 55..44..22.. RRoozzmmiiaarryy ppaarrttyyccjjii Poza partycją wymiany i partycją dla głównego systemu plików, będziesz chciał dodatkowe na przechowywanie oprogramowania i katalogów macierzystych użytkowników. Teoretycznie możliwa jest konfiguracja z jedną duża partycją na wszystko, lecz niemal nikt tego nie robi. Posiadanie więcej niż jedna partycji ma kilka zalet: ˇ Cześto zmiejsza czas potrzebny na załadowanie systemu. ˇ Pliki nie mogą przekraczać granic partycji. Dlatego możesz używać partycji jako ograniczeń na wykorzystanie przestrzeni dyskowej prze takie programy (jak Usenet News), które potrzebują jej ogromnych ilości dzieki czemu zabezpieczyć odpowiednią ilość miejsca dla innych programów zapewniając bezpieczne funkcjonowanie systemu i pracę innych aplikacji. ˇ Jeśli kiedykolwiek znajdziesz na dysku złe sektory, reformatowanie i odtwarzanie pojedynczej partycji jest mniej bolesne niz odtwarzanie wszystkiego od początku. W dzisiejszych czasach ogromnych dysków, dobra konfiguracja podstawowa używa małej partycji głównej (poniżej 80MB), średniego rozmiaru partycji /usr (do 300MB) na oprogramowanie systemowe i partycję /home przeznaczoną dla pliku użytkowników, która w zleżności od twojej decyzji może wykorzystywać pozostałą część dysku lub odpowiednią liczbę MB. Jeśli przewidujesz uruchomoienie Usenet News, możesz przydzielić oddzielną partycję katalogowi /var przeznaczoną na pocztę, newsyi pliki tymczasowe lub wydzielić specjalną partyucję tylko dla obsługi Usenet News, kontrolując w ten sposób maksymalne możliwe wykorzystanie zasobów dyskowych przez Usenet News. Lecz w dzisiejszych czasach kiedy ogrome dyski są coraz tańsze ważniejsze jest aby to wszystko było dla ciebie zrozumiałe, dlatego swoją pierwszą instalację Linuxa zrób po prostu w najprostszy sposób. 55..55.. ŁŁaaddoowwaanniiee ddyysskkuu ssttaarrttoowweeggoo ((bboooott ddiisskk)) Pierwszym krokiem jest uruchomienie systemu ze zrobionego przez ciebie dysku startowego. Zwykle Linux Laduje się bez jakiejkolwiek ręcznej ingerencji. Zachęta startowa zniknie po 10 sekundach. Lecz podając w zachęcie startowej po nazwie jądra różne parametry masz możliwość przekazaniu jądru różnych informacji o konfiguracji twojego sprzętu, np. adres i numer przerwania sterownika SCSI lub geometrię dysków. Jest to konieczne, gdy Linux sam nie wykryje kontrolera SCSI lub geometrii dysku. W szczególnośći wiele sterowników SCSI bez BIOSu wymaga podania adresu portu i przerwania IRQ podczas ładowania systemu. Komputery IBM PS/1, ThinkPad i ValuePoint nie przechowują geometrii dysku w pamięci CMOS i należy je podać podczas uruchamiania systemu. (Później będziesz miał możliwość takiego skonfigurowania systemu aby sam mógł przekazywac niezbędne parametry). Uważaj na komunikaty wyświetlane podczas ładowania systemu. Znajdziesz tam informacje o sprzęcie jaki został wykryty przez jądro. W sczególności jeśli masz sterownik SCSI powinieneś zobaczyć listę wykrytych urządzeń SCSI. Jeśli zobaczysz komunikat: SCSI: 0 hosts to znaczy, żę sterownik SCSI nie został wykryty i muszisz powiadomić jądro gdzie go szukać. System będzie wyświetlał informacje o znalezionych partycjach i wykrytych urządzeniach. Jeśli któraś z tych informacji nie jest poprawna lu brakuje innej, której się spodziewałeś będziesz musiał wymusić wykrycie sprzędu prze podanie odpowienich parametrów na zachęcie startowej. Z drugiej strony, gdy wszysko idzie jak po maśle i wygląda, zę wszystkie urządzenia zostały rozpoznane prawidłowo, przejdź do następnego rozdziału ``Ładowanie dysku z głównym systemem plików (root disk)''. Wymuszenie wykracia urządzenia polega na wprowadzeniu w wierszu zachęty startowej ospowiednich parametrów wg. następującej składni: linux <parameters...> Dostępnych jest kila/nascie róznych parametrów. Przedstawimy kilka najbardziej popularnych. Nowoczesne instalacje konstruują dysk startowy w ten sposób, abyś mógł uzyskać dodatkową pomoc w czasie wpisywania danych w wierszu zachęty startowej. Bedą tam opisane parametry jądra które mozęsz wykorzystać. ˇ _h_d_=_c_y_l_i_n_d_r_y_,_g_l_o_w_i_c_e_,_s_e_k_t_o_r_y Określ geometrię dysku. Wymagane w systemach takich, jak IBM PS/1, ValuePoint i ThinkPad. Np. jeśli twój dysk ma 683 cyindry,16 głowic i 32 sektory wprowadź: linux hd=683,16,32 ˇ _t_m_c_8_x_x_=_a_d_r_e_s_,_p_r_z_e_r_w_a_n_i_e___i_r_q Określ adres iprzerwanie IRQ dla kotrolerów SCSI Future Domain TMC-8xx nie posiadającego BIOSu. Np.: linux tmc8xx=0xca000,5 Pamiętaj o używaniu prefiksu _0_x dla wszytkich wartości podawanych szesnastkowo (hex). Dotyczy to wszystkich anstępujących opcji: ˇ _s_t_0_x_=_m_e_m_a_d_d_r_,_i_r_q Określ adres i przerwanie IRQ sterownika Seagate ST02. ˇ _t_1_2_8_=_m_e_m_a_d_d_r_,_i_r_qOkreśl adres i przerwanie IRQ sterownika Trantor T128B. ˇ _n_c_r_5_3_8_0_=_p_o_r_t_,_i_r_q_,_d_m_a Określ port, IRQ i numer kanału DMA dla sterownika NCR5380. ˇ _a_h_a_1_5_2_x_=_p_o_r_t_,_i_r_q_,_s_c_s_i___i_d_,_1 Okreśł port, IRQ i SCSI ID dla sterownika AIC-6260. Dotyczy to również sterowników Adaptec 1510, 152x, i kontrolerów Soundblaster-SCSI. Jeśli masz pytania dotyczące opcji startowych, proszę przeczytaj Linux _S_C_S_I _H_O_W_T_O, które powinno być dostępne w każdym archimuwm FTP (lub tam skąd otrzymałkeś ten dokument). _S_C_S_I _H_O_W_T_O dokładniej objaśnia sprawy związane z SCSI i Linuxem. 55..66.. KKoorrzzyyssttaanniiee zz ddyysskkiieettkkąą zz ggłłóówwnnyymm ssyysstteemmee pplliikkóóww ((rroooott ddiisskk)) Po wystartowaniu systemu z dyskietki startowej zostaniesz poproszony o włożenie dyskietki(ek) z systemem plików. W tym momencie powinieneś wyjąć z napędu dyskietkę startową i włożyć w jej miejsce dyskietkę z systemem plików (root disk). Następnie wciśnij _e_n_t_e_r. Być może za chwilę będziesz musiał włożyć kolejną dyskietkę z systemem plików. Co się w tej chili dzieje? Dyskietka z systemem plików zapewnia minimalne oprogramowanie tworząc miniaturowy system operacyjny wykorzystując do tego dysk w pamięci RAM (ponieważ twardy dysk nie jest jescze przygotowany) tzw. ramdysk. Dysk z systemem plików ładuje do ramdysku mały zestaw niezbędnych plików i programów instalacyjnych, z których będziesz korzystał do przygotowania twardego dysku i zainstalowania później na nim (z krążka ćd lub innego nośnika) pełnego systemu. 55..66..11.. IInnssttaallaaccjjaa ww ttrryybbiiee tteekkssttoowwyymm lluubb ggrraaffiicczznnyymm ((XX)) Starsze dystrybucje (włączając Sackware) udostępniały w tym momencie interperter poleceń (shell) i wymagały wprowadzenia ręcznie poleceń instalacyjnych do tego w odpowiedniej kolejności. Jest to nadal możliwe, lecz nowsze dystrybucje uruchamiają programy instalacyjne (wybór z menu za pomoca klawiszy kursora), które starają się w sposób interaktywny poprowadzić cię przez procedurę instalacyjną, dając po drodze mnóstwo wskazówek. Prawdopodobnie będziesz maił również możliwość skonfigurowania X, tak aby dalsza częsć instalacji mogła zostać przeprowadzona w trybie graficznym. Jeśli wybierzesz tę drogę, program instalcyjny przepyta cię jaką myszkę posiadasz, jaka karta graficzna jest zinstalowana w twoim komputerze, jakiego monitora używasz. Po zainstalowaniu Linuxa podane tutaj przez ciebie informacje zostaną zachowane dla ciebie. Będziesz mógł je później dostroić tak., aby lepiej wykorzystać posiadany sprzęt, ponieważ na tym stopniu instalcji wystarczy ustawić podstawową rozdzielczośc 640x480 SVGA. X nie sa konieczne do instalacji, lecz (zakładając, że uda się je poprawnie skonfigurować) wielu ludzi znajduje ten sposób instalcji łatwiejszym w użyciu. Tak czy inaczej będziesz chciał uruchomić X, więc zrobienie tego na samym początku też ma trochę sensu. Po prostu daj się prowadzić programowi. Przeprowadzi cię przez niezbędne stopnie instalacji: przygotowanie twardego dysku, utworzenie początkowych kont użytkowników, istalacja dodatkowych pakietów oprogramowania. W kolejnych podrozdziałach opiszemy pewne obszary, które mogą sprawiać trochę trudności, tak jak byś musiał je wykonywać ręcznie. Powinno ci to pozwolić zrozumieć co tak na prawdę robi program instalacyjny i dlaczego to robi. 55..66..22.. KKoorrzzyyssttaanniiee zz ffddiisskk i cfdisk Twoim pierwszym zadanie mpo załadowaniu jądra Linux abędzie utworzenie lub zmiana tabel partycji na dyskach. Nawet jeśli już zrobiłeś coś za pomoćą DOSowgo programu FDISK, musisz teraz powrócić do tego tematu i wprowadzić dodatkowe, specyficzne dla Linuxa informacje. To tworzenia lub zmiany partycji Linuxa korzystamy z programu fdsik w wersji dla Linuxa, lub jego okienkowej wersji cfdisk. Zwykle program instalacyjny sprawdza czy istnieją już odpowiednie tabele partycji i proponuje uruchonienie dla nich fdisk lub cfdisk. cfdisk jest z pewnościa łatwiejszy w użyciu, lecz jego aktualne wersje są również bardziej wrażliwe na nieprawidłowe lub uszkodzone informacje jakie mogą znaleźć w tabeli partycji. Dlatego (szczególnie podczas instalacji na nowym sprzęcie) może się okazć, że musisz wpierw uruchomić fdisk aby nadał tabelom partycji stan, który jest już odpowiedni dla programu cfdisk. Spróbuj uruchomić cfdisk, jeśli będzie się na coś skarżył, uruchom fdisk. (Jeśli budujesz system jedynie dla Linuxa, to dobra może się okazać metoda uruchomienia fdsik i usunięcia wszystkich partycji, a następnie założenie ich na nowej, pustej tabeli partycji bardziej intuicyjnym programem cfdisk.) Kilka uwag, które mają zastosowanie zarówno do fdisk, jak i cfdisk. Oba rozumieją podany im argument jako nazwa dysku na którym chcesz wykonać operację. W Linuxie kolejne dyski nazwywane są następująco: ˇ _/_d_e_v_/_h_d_a Pierwszy dysk IDE ˇ _/_d_e_v_/_h_d_b Drugi dysk IDE ˇ _/_d_e_v_/_s_d_a Pierwszy dysk SCSI ˇ _/_d_e_v_/_s_d_b Drug dysk SCSI Przykład: aby utworzyć partycję Linuxa na pierwszym dysku SCSI, powinieneś użyć polecenia (twój program instalacyjny może ją wygenerować na podstawnie podanych przez ciebie informacji): cfdisk /dev/sda Jeśli uruchomisz fdisk lub cfdisk bez żadnych argumentów, dyskiem domyślnym będzie w takiej systuacji _/_d_e_v_/_h_d_a. Aby utworzyć partycję Linux na drugim dysku, po prostu podaj _/_d_e_v_/_h_d_b w przypadku dysku IDE lub jeśli używasz dysków SCSI _/_d_e_v_/_s_d_b. Partycje Linuxa nie muszą być na tym samym fizycznym dysku. Mogłbyś utworzyć partycję dla głównego systemu plików na dysku _/_d_e_v_/_h_d_a i partycję wymiany na dysku _/_d_e_v_/_h_d_b. W takim przypadku uruchom fdisk lub cfdisk dla każdego dysku. Pod Linuxem, partycje otrzymują nazwy w zależności od dysku do którego należą. Np. perwsza partycja na dsyku _/_d_e_v_/_h_d_a nazywa się _/_d_e_v_/_h_d_a_1,druga _/_d_e_v_/_h_d_a_2 itd. Jeśli masz jakieś partycje logiczne ich nazwy rozpoczynają sę od _/_d_e_v_/_h_d_a_5 i kolejno _/_d_e_v_/_h_d_a_6 itd. UUwwaaggaa:: Nie powinieneś Linuxowymi programami fdsik lub cfdisk tworzyć lub usuwać partycji dla systemów peracyjnych innych niż Linux. To znaczy nie twórz lub usuwaj partycji MS-DOS za pomocą narzędzi Linuxa; wykorzystaj w tym celu programy jakie dostarcza MS-DOS (FDSIK). Jeśli stworzysz partycję MS-DOS za pomocą programu fdsik lub cfdisk istnieje możliwość, żę msdos jej nie rozpozna nie nie wystartuje poprawnie. Oto przykład wykorzystania programu fdsik>. Mamy pojedynczą partycję MS-DOS o rozmiarze 61693 bloków. Reszta dysku jest wolna dla Linuxa (pod Linuxem jeden blok oznacz a1024 bajrty, czyli 61693 oznacza 61 MB). W tym przykładzie utworzymy dwie partycje, wymiany(swap) i głównego systemu plików(root). Być może, po przeczytaniu dyskucji o podziale dysku na partycje, powinieneś rozszerzyć ten przykład do czterech partycji: wymiany, głownego systemu plików (), systemu plików dla oprogramowania systemowego (/usr) i partycji dla plików użytkowników (/home). Na początku wydajemy polecenie ``p'' aby wyświetlić aktualny stan tabeli partycji. Jak widać, _/_d_e_v_/_h_d_a_1 (pierwsza partycja dysku _/_d_e_v_/_h_d_a) jest partycją DOSową o rozmiarze 61693 bloków. Command (m for help): p Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders Units = cylinders of 608 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M Command (m for help): Następnie wydajemy polecenie ``n'' w celu utworzenia nowej partycji. Partycja na główny system plików będzie miała 80MB. Command (m for help): n Command action e extended p primary partition (1-4) p Tutaj program spytał się , czy chcemy utworzyć partycję podstawową czy rozszerzoną. W większości przypadków chesz utworzyć partycje podstawową, chyba, ze potrzebujesz podzielić dysk na więcej niż 4 partycje. Patrz rozniał ``Zmiana rozmiaru partycji'', tam ta sprawa byłą dyskutowana dokładniej. Partition number (1-4): 2 First cylinder (204-683): 204 Last cylinder or +size or +sizeM or +sizeK (204-683): +80M Pierwszy cylinder partycji powinien być pierwszym cylindrem za poprzednią partycją. W tym przypadku _/_d_e_v_/_h_d_a_1 kończy się na cylindrze 203, więc rozpoczynamy nową partycję od cylindra 204. Jak widać korzystamy z notacji ``+80M'', definiuje partycję o rozmiarze 80MB. Podobnie notacja ``+80K'' określa partycje o rozmiarze 80KB, a podanie ``+80'' stworzyło by partycję o rozmiarze 80 bajtów. Warning: Linux cannot currently use 33090 sectors of this partition Ostrzeżenie: Linux nie może wykorzystać 33090 sektorów tej partycji. Jeśli zobaczycs takie ostrzeżenie, możesz je zignorować. Pozostało ze starych czasów, kiedy system plików Linuxa nie mógł przekraczać rozmiaru 64MB. Jednakże nowe systemy plików przełamały tę brierę. W chwili obecnej partycje mogą mieć maksymalny rozmiar 4 terabajtów. Następnie tworzymy partycję wymiany o rozmiarze 10 MB, _/_d_e_v_/_h_d_a_3. Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (474-683): 474 Last cylinder or +size or +sizeM or +sizeK (474-683): +10M Ponownie przeglądamy zawartość tabeli partycji. Pamiętaj o zanotowniu tych informacji, sczególnie rozmiarów poszcególnych partycji w blokach. Będziesz potrzebować tych informacji później. Command (m for help): p Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders Units = cylinders of 608 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M /dev/hda2 204 204 473 82080 83 Linux native /dev/hda3 474 474 507 10336 83 Linux native Zwróć uwagę, że partycja wymiany (tutaj _/_d_e_v_/_h_d_a_3) jest typu ``Linux native''. Musimy zmienić jej typ na ``Linux swap'', tak aby program instlacyjny mogł ją rozpoznać. W tym celu wykonaj polecenie t programu fdisk: Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 82 Jeśli skorzystasz z polecenia ``L'' to zobaczysz, że 82 odpowiada typowi Linux swap. Aby zkończyć prace programu fdisk i zachować poczynione zmiany na dysku, należy wydać polecenie ``w''. Aby wyjść BEZ zachowywania jakichkolwiek zmian należy wcisnąć ``q''. Po zakończeniu pracy z programem fdisk, system może zasugerować restart komputera, aby upewnić się, że wprowadzone zmiany zostaną zauważone przez system. Zasadniczo nie ma powodu do restartu komputera po zakończeniu pracy fdisk -- nowe wersje fdisk i cfdisk są na tyle sprytne, że potrafią uaktualnić tabelę partycji bez restartowania systemu. 55..66..33.. CCzzyynnnnoośśccii ppoo pprrzzyyddzziieelleenniiuu ppaarrttyyccjjii Po edycji tabeli partycji, program instalacyjny powinien zajrzeć do nich i zaoferować włączenie obszaru wymiany (swapa). Odpowiedz Tak. (System pyta się o włączenie partycji wymiany, aby zminimalizować możliwość popełnienia błędu w sytuacji, gdy na dysku istniją partycje innych systemów operacyjnych i jedna z partycji nie należących do Linuxa zostanie mylnie rozpoznana jako partycja wymiany.) Następnie program poprosi o przydzielenie nazw katalogów (takich jak /, /usr, /var, /tmp, /home itp) każdej partycji Linuxowej, którą pragniesz wykorzystać. Istnieje tylko jedna prosta zasada. Musi istnieć system plików o nazwie / i musi umożliwiac załadowanie systemu (bootable). Pozostałe partycje mogą zostać nazwane zupełnie dowolnie. Lecz są pewne konwencje mowiące jak je nazwać ( w którym miejscu drzewa plików mają być zamontwane), które (jeśli się do nich dostosujesz) w przyszłości ułatwią ci życie. Wcześnej polecaliśmy podstawową konfiguracje składającą siez trzech partycji, małej partycji głównej, średniego rozmiaru partycji przeznaczonej an oprogramowanie systemowe i dużej partycji dla katalogów macierzystych użytkowników. Tradycyjne partycje te będą montowane w katalogach /, /usr i /home. Nazwa /usr pochodzi z zamierzchłych czasów, gdy (znacznie mniejsze) systemy UNIX przechowywały pliki systemowe i katalogi użytkowników na jednej partycji (innej niż partycja główna /). Część oprogramowania nadal polega na tej właściwości. Jeśli posiadasz więcej niż jeden obszar katalogów domowych użytkowników, zwykle nazywa się je /home1, /home2, /home3. Tak się może stać gdy posisadasz dwa fizyczne dyski. Na naszym komputerze układ systemu plików wygląda następująco. Filesystem 1024-blocks Used Available Capacity Mounted on /dev/sda1 30719 22337 6796 77% / /dev/sda3 595663 327608 237284 58% /usr /dev/sda4 1371370 1174 1299336 0% /home /dev/sdb1 1000949 643108 306130 68% /home2 Drugi dysk (sdb1) nie jest w całości przydzielony do /home2/ Partycja wymiany znajdująca się na tym dysku nie została ujęta w wykazie. Możesz zobaczyć, że partycja /home jest największym obszarem na sda i /home2 jest obszarem użytkownika na dysku sdb. Jeśli zamierzasz stworzyć partycję na pliki robocze (scratch), spool, tymczasowa, pocztową lub newsową nazwij ją ./var. FIXME W przeciwnym wypadku prawdopodobnie chcesz utowrzyć katalog /usr/var i utworzyć dowiązanie symbliczne /var wskazujące właśnie na ten katalog (/usr/var). Program instalacyjny może zaoferować zrobiebie tego za ciebie. 55..77.. IInnssttaallaaccjjaa ppaakkiieettóóww zz oopprrooggrraammoowwaanniieemm Po przygotowaniu partycji pozostała część instalacji powinna być automatyczna. Twój program instalacyjny poprowadzi cię przez liczne menu i pozwoli określić skąd będą instalowane pakiety, na kórych partycjach będzeie instalowany Linux itd. Nie zamierzamy tutaj dokumentować wszystkich szegółow specyficznych dla tej części instalacji. Jes to część, która różni się najbardziej między dystrybucjami (utorzy tradycyjnie współzawodniczą aby zyskać tutaj jak najwięcej), lecz jest to również jedna z najprostszych częsci instalacji. A programy instalacyjne są intuicyjne, z ekranami pomocy, które można wywołać niema w dowolnym momencie instalowania pakietów. 55..88.. PPoo zziinnssttaalloowwaanniiuu ppaakkiieettóóww zz oopprrooggrraammoowwaanniieemm Po zinstalowaniu pakietów z oprogramowaniem, jeśli wszystko przebiegło bez kłopotów, program instalacyjny, zanim po raz pierwszy załaduje jądro z twrdego dysku przeprowadzi cię przez kilka procedur konfiguracji poszczegórnych części systemu. 55..88..11.. LLIILLOO,, LLIInnuuxx LLOOaaddeerr cczzyyllii łłaaddoowwaacczz LLiinnuuxxaa LILO (skrót od LInux LOader) jest programem, który pozwala załadować Linuxa (jak również inne systemy operacyjne, np. MS-DOS) z twardego dysku twojego komputera. Program instalacyjny spyta się, czy zainstalować LILO na twoim dysku. Jeśli nie posiadasz na tym dysku OS/2, odpowiedz `tak'. OS/2 ma specjalne wymagania, patrz ``Wybrane konfiguracje LILO'' Zainstalowanie LILO jako podstawowego ładowacza systemów powoduje, że dodatkowa dyskietka startowa staje się niepotrzebna. Przy każdym starcie komputera, możesz powiedzieć LILO, który system ma załadować. 55..88..22.. TTwwoorrzzeenniiee ddyysskkiieettkkii ssttaarrttoowweejj ((ooppccjjoonnaallnniiee)) Program instalacyjny może ci również dać szansę utworzenia ``standardowej dyskietki startowej'', której możesz użyć do uruchomienia twojego nowo zinstalowanego Linuxa. (Jest to starsza i mniej wygodan metoda, która zakłada, że zwykle bedziesz uruchamiał MS- DOS, lecz gdy będziesz chciał uruchomić Linuxa skorzystasz z tej dyskietki startowej.) Aby ją zrobić, potrzebujesz czystej, foramtowanej dyskietki wysokiej gęstości (1.2, 1.44 takiej, jak naped A:) Po prostu kiedy cię o to poprosi program instalacyjny włóż dyskietkę do napędu i dyskietka startowa zostanie utworzona. (to nie jest to samo co instalacyjna dyskietka startowa i nie możesz ich wzajemnie zamieniać.) 55..88..33.. DDooddaattkkoowwaa kkoonnffiigguurraaccjjaa ssyysstteemmuu Procedura poinstalacyjna może cię również prowadzić przez wiele menu, pozwalając skonfigurować twój system. To znaczy określic rodzaj i miejsce podłączenia myszy i modemu, strefę czasową i inne parametry. Po orostu staraj się odpowiadać na pytania. System może ci również zaproponować utowrzenie kont użytkowników, lub założenie hasła na koto administratora (root). Nie jest to trudne i zwykle polega na przeczytaniu instrukcji i wykonaniu prosrych czynności. 66.. ŁŁaaddoowwaanniiee nnoowwoo zzaaiinnssttaalloowwaanneeggoo ssyysstteemmuu Jeśli wszystko poszło zgodnie z planem, powinieneś mieć teraz mozliwość załadowania z twardego dysku Linuxa, wykorzystując do tego LILO. Alternatywą jest załadowanie Linuxa z nowo utworzonej dyskietki startowej (nie oryginalnej startowej dyskietki instalacyjnej). Po załadowaniu systemu zaloguj się jako _r_o_o_t. Gratulacje! Masz swój własny system Linux. Jeśli ładujesz system za pomocą LILO, spróbuj podczas restartu komputera przycisnąc (i trzymać przyciśnięty) przycisj _s_h_i_f_t, _c_o_n_t_r_o_l, lub _a_l_t. Pozwoli to na uzyskanie dostępu do wiersza zachęty startowej (boot prompt). Wciśnij _t_a_b, a zobaczysz listę opcji. W ten sposób możesz załadować bezpośrednio przez LILO Linuxa, MS-DOS lub cokolwiek innego. 77.. PPoo ppiieerrwwsszzyymm uurruucchhoommiieenniiuu LLiinnuuxxaa Powinieneś właśnie patrzeć na zachęte do wejścia do systemu. Gratulacje! 77..11.. BByycciiee aaddmmiinniissttrraattoorreemm ssyysstteemmuu W zależności od tego jak przebiegła faza instalacji, możesz chcieć utworzyć konta użytkowników, zmienić nazwę swojego komputera lub skonfigurować (na powrót) X. Jest znacznie więcej rzeczy, które mogłbyć ustawiać i konfiguraować, urządenia do wykonywania kopii, połączenie SLIP/PPP z dostawcą Internetu itp. Powinna ci pomóc dobra książka o administrowaniu systemem UNIX. (Sugerujemy _E_s_s_e_n_t_i_a_l _S_y_s_t_e_m_s _A_d_m_i_n_i_s_t_r_a_t_i_o_n, O'Reilly and Associates.) Z czasem nabierzesz doświadczenia. Powinieneś przeczytać różne inne dokumenty Linux JTZ, takie jak _N_E_T_-_2_-_J_T_Z czy _P_r_i_n_t_i_n_g_-_J_T_Z. 77..22.. WWyybbrraannee kkoonnssiigguurraaccjjee LLIILLOO LILO jest programem ładującym systemy operacyjne , który można wykorzystać do wyboru w czasie uruchamiania komputera, który dokładnie system oeracyjny ma tym razem zostać załadowany. Sa duże szanse, że program instalcyjny automatycznie skonfigurował i zainstalował LILO podczas instalacji systemu (chyba, że używasz OS/2, wedy powinieneś wykonać to o czym tutaj piszemy). Jeśli tak, to możesz pominąć resztę tego rozdziału. Jeśłi zainstalowałeś LILO jako _p_o_d_s_t_a_w_o_w_y (primary) ładowacz systemu, będzie obsługiwał pierwszy stopień procesu ładowania systemu dla wszystkich systemów operacyjnych zainstalowanych na twardym dysku. Jednakże możesz pracowaćz OS/2 który ma własnego ładowacz, Boot Manager. W takim przypadku chesz aby Bot Manager był podstawowoym ładowaczem systemu i wykorzystywał lilo do załadowania Linuxa (jako drugorzędny ładowacz systemu). Jeśli muszisz skonfigurować LILO ręcznie, bedzie to wymagało edycji pliku _/_e_t_c_/_l_i_l_o_._c_o_n_f. Poniżej przedstawiamy przykład pliku konfiguracyjnego LILO, dla pryzpadku gdy główną partycją Linuxa jest _/_d_e_v_/_h_d_a_2, a MS-dOS jest zainstalowany na _/_d_e_v_/_h_d_b_1 (na drugim fizycznym dysku). # Powiedz LILO, aby się zainstalwoał jako podstawowoy ładowacz systemu na # dysku /dev/hda. boot = /dev/hda # Plik z obrazem programu ładującego;prawdopodobnie nie powinieneś tego zmieniać install = /boot/boot.b # Schemat ładowania Linuxa image = /vmlinuz # plik zawierający jądro label = linux # nadajmy tej pozycji nazwę "linux" root = /dev/hda2 # /dev/hda2 jako główny (root) syste, plików vga = ask # zapytaj się o tryb VGA append = "aha152x=0x340,11,7,1" # dodaj to do zachęty startowej # (parametry przekazywane do jądra) # w cely wykrycia sterownika SCSI # schemat ładowania MS-DOSu other = /dev/hdb1 # To jest partycja MS-DOS label = msdos # nadajemy tej pozycji nazwę "msdos" table = /dev/hdb # Tabela partycji drugiego dysku Po zakończonej edycji pliku _/_e_t_c_/_l_i_l_o_._c_o_n_f uruchom program _/_s_b_i_n_/_l_i_l_o jako _r_o_o_t. W ten sposó zainstalujesz LILO na swoim dysku. Pamiętaj, ze muszisz uruchmić _/_s_b_i_n_/_l_i_l_o po każdej kompilacji jądra, aby ładowacz wskazywał na prawidłowy plik (coś czym się teraz nie powinieneś zupełnie przejmować, lecz należy pamiętać). Zwróć uwagę na sposób wykorzystania opcji _a_p_p_e_n_d w pliku _/_e_t_c_/_l_i_l_o_._c_o_n_f w celu podania parametrów startowych, jak to robiliśmy uruchamiając system z instalacyjnej dyskietki startowej. Możesz teraz zrestartować komputer i załadować system z twardego dysku. LILO załaduje domyślnie system który jest opisany w pliku konfiguracyjnym jako pierwszy. Aby uzyskać dostęp do wiersza zachęty starowej i menu dostępnych systemów, trzymaj w czasie startu komputera przyciśnięty klawisz _s_h_i_f_t, _c_o_n_t_r_o_l lub _a_l_t; powinieneś zoaczyć taką zachętę: Boot: Podaj teraz etykietę/nazwę systemu operacjnego jaką nadałeś każdej pozycji w pliku _/_e_t_c_/_l_i_l_o_._c_o_n_f; w tym przypadku będzie to albo _l_i_n_u_x albo _m_s_d_o_s, lub wciśnij _t_a_b aby uzyskać listę etykiet. Załózmy teraz, ze chcesz wykorzystać LILO jako drugorzędny ładowacz sytemu,np. gdy chcesz ładować Linuxa za pomocą Boot Managera systemu OS/2. Aby załadować system z Partycji Linuxa pod Boot Managerem niestety musisz utworzyć tę partycję za pomocą programu _F_D_I_S_K systemu OS/2 (nie programem fdisk w dystrybucji Linuxa) i sformatować ją jako FAT lub HPFS, tak aby OS/2 o niej wiedział (podziekuj IBM). Aby LILO ładowało Linuxa za pomocą Boot Managera, chcesz aby LILO zainstalowało się tylko na partycji głównej Linuxa (w naszym przykładzie jest to _/_d_e_v_/_h_d_a_2). W takim przypadku plik konfiguracyjny LILO będzie wyglądał następująco: boot = /dev/hda2 install = /boot/boot.b compact image = /vmlinuz label = linux root = /dev/hda2 vga = ask Zwróć uwagę, na zmianę w wierszu _b_o_o_t. Po uruchomieniu _/_s_b_i_n_/_l_i_l_o powinieneś być w stanie dodać partycję Linuxa do listy Boot Managera. Ten sam schemat postępowania powinien działać również w przypadku innych systemów operacyjnych. 88.. UUwwaaggii aaddmmiinniissttrraaccyyjjnnee 88..11.. WWaarruunnkkii kkoorrzzyyssttaanniiaa Prawa autorskie do tego dokumentu należą do 1996 by Eric S. Raymond. Możesz swobodnie korzystać z tego dokumentu, rozpowszechniać i kopiować pod warunkiem, że: ˇ Nie zmienisz lub pominiesz tej notaki o prawach autorskich ˇ Nie zmienisz lub pominiesz wesji i daty niniejszego dokumentu. ˇ Nie zmienisz lub pominiesz odnośników zawartych w dokumencie, wskazujących gdzie można uzyskać najnowszą wersję tego dokumentu. ˇ Jasno znazaczysz wszelkie skróty, zmiany lub wersje. Powyższe ograniczenia mają na celu ochronę potencjalnych czytelników przed niepoprawnymi lub nieaktualnymi wersjami. Jeśli myślisz, że znalazłeś wyjątek o tej reguły, zapytaj mnie. 88..22.. PPooddzziięękkoowwaanniiaa Podziękowania dla Matta D. Welsha, który zapoczątkował ten dokument. Usunąłem większość specyficzną dla dystrybucji Slackware i ukierunkowałem reszte dokumentu na istalację z napędu CD, lecz znaczna część dokumentu nadal należy do niego, Wersja 4.1 była znacząco ulepszona dzięki uwagom David Shao <dshao@best.com>. 99.. OOdd ttłłuummaacczzaa Prawa autorskie tłuamczenia należą do (c)1997 piotr.pogorzelski@ippt.gov.pl. Wersję polską można rozpowszechniać na warunkach opisanych powyżej. Zmiany w stosunku do wersji angielskiej: ˇ wiekszość odnośników do komputerów zagranicznych została zamieniona na odnośniki do ich polskich kopii. Najnowsze wersje przetłumaczonych na język polski dokumentów HOWTO szukaj tutaj: http://www.jtz.org.pl <http://www.jtz.org.pl/>. Kontakt z osobami zajmującymi się tłumaczeniami: jtz@ippt.gov.pl. Powodzenia. �������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Intranet-Server-HOWTO.pl.txt�������������������������������������������0100664�0001750�0001750�00000124567�06717116340�021516� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Linux Intranet Server HOWTO Autor: Pramod Karnad karnad@indiamail.com v2.11, 7 Kwietnia 1997 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v1.0, 31 Lipca 1998 Ten dokument opisuje jak ustawić Intranet używając Linuxa jako serwer obsługujący Unixa, Netware, NT i Windows. Wystarczy nawiązać połącze­ nie z maszyną Linuxową, aby używać wszystkich platform. Znajdują się tu dokładne objaśnienia jak ustawić HTTP używając serwera NCSA, oraz jak połączyć się z nim używając klientów TCP/IP Novell'a, Microsoft Windows 3.1, WFWG, Win 95, WinNT i MacTCP z Apple PowerMac. Dokument ten został napisany w standardzie ISO8859-2. Oryginał tego dokumentu znajduje się na http://www.inet.co.th/cyberclub/karnadp/http.html. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie 1.1. Co będzie potrzebne 1.2. Nowe wersje tego dokumentu 1.3. Kontakt z autorem 2. Instalacja serwera HTTP 2.1. Przygotowania przed ściąganiem 2.1.1. System Operacyjny 2.1.2. Typ procesu (ServerType) 2.1.3. Przydzielanie portu (Port) 2.1.4. UserID serwera (User) 2.1.5. Grupa identyfikacyjna serwera (Group) 2.1.6. Adres email administratora serwera (ServerAdmin) 2.1.7. Katalog serwera (ServerRoot) 2.1.8. Katalog plików danych serwera (DocumentRoot) 2.2. Kompilacja HTTPd 3. Testowanie HTTPd 4. Łączenie się z serwerem Linuxowym 4.1. Konfiguracja serwera Linuxowego 4.2. Konfiguracja serwera NetWare 4.3. Konfiguracja klienta NetWare 4.3.1. Windows 3.x 4.3.2. Windows 95 4.4. Konfiguracja Klienta Microsoft 4.4.1. Windows for Workgroups 4.4.2. Windows 95 4.4.3. Windows NT 4.5. Konfiguracja TCP/IP na Macintoshu 4.5.1. MacTCP 5. Konfiguracja Intranetu 5.1. NCPFS 5.1.1. Instalacja 5.1.2. Montowanie NCPFS 5.2. SMBFS 5.2.1. Instalacja 5.2.2. Montowanie SMBFS 5.3. NFS 6. Dostęp do Sieci 6.1. Dostęp do zamontowanych systemów plików 6.2. Łączenie się z Internetem 6.3. Inne możliwości 7. Inne zastosowania 8. Autorstwo i Legalność 8.1. Podziękowania 8.2. Informacje o prawach autorskich 9. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee Mówiąc prosto, IInnttrraanneett to opisowy wyraz używany dla implementacji technologii Internetowych w organizacjach korporacyjnych, bez zewnętrznego połączenia do globalnego Internetu. Ta implementacja jest wykonana w taki sposób, żeby dostarczyć ogromne zasoby informacyjne organizacji do każdego miejsca pracy, z minimalnym kosztem, czasem i wysiłkiem. Ten dokument stara się wytłumaczyć w prosty sposób, jak ustawić Intranet używając gotowych, tanich lub darmowych narzędzi. Ten dokument przyjmuje, że wiesz już, jak zainstalować TCP/IP w twoim serwerze Linuxowym, oraz połączyć go fizycznie do sieci LAN używając karty sieciowej Ethernet. Przyjmuje też, że posiadasz podstawową wiedzę o systemach Netware, WinNT i Mac'ach. Konfiguracja serwera Netware została pokazana na przykładzie wersji 3.1x jako podstawy. Możesz też użyć INETCFG, uzyskując ten sam rezultat. Po stronie klientów, omawiamy Windows 3.1x, Windows for Workgroups, Win95, WinNT, oraz Apple PowerMac. W przykładach używam prywatnych adresów sieci (RFC-1918) - 172.16.0.0 i 172.17.0.0. Możesz wybrać odpowiadające adresy, zależnie od twojej konfiguracji. Serwer Serwer Serwer Linuxowy Netware WFWG/NT 172.16.0.1 172.16.0.2 172.16.0.3 | | | 172.16.0.0 ------+-----+-----+--------+--+-------------- | | | | 172.16.0.254 Stacja robocza 1 Router 172.16.0.5 | 172.17.0.254 | ----------+-------+-------- 172.17.0.0 | Stacja robocza 2 172.17.0.5 11..11.. CCoo bbęęddzziiee ppoottrrzzeebbnnee Przed rozpoczęciem instalacji, będą potrzebne następujące programy: ˇ Serwer HTTP, który może być ściągnięty z OneStep NCSA HTTPd Downloader na http://hoohoo.ncsa.uiuc.edu/docs/setup/OneStep.html. ˇ Klient Novell Netware dostępny z http://support.novell.com/ (Pliki TCP/IP są załączone razem z klientem). ˇ Klient Microsoft TCP/IP dostępny z http://www.microsoft.com/ ˇ Klient Apple MacTCP dostępny z http://www.apple.com ˇ Przeglądarki WWW takie jak Netscape - na http://home.netscape.com/ lub MS Internet Explorer - na http://www.microsoft.com/ lub NCSA Mosaic z http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/NCSAMosaicHome.html 11..22.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu Nowe wersje Linux Intranet Server HOWTO będą okresowo wysyłane na comp.os.linux.announce i comp.os.linux.help. Będą też umieszczane na różnych Linuxowych serwerach FTP, włącznie z sunsite.unc.edu. Najświeższa wersja tego dokumentu jest dostępna w formacie HTML pod adresem http://www.inet.co.th/cyberclub/karnadp/http.html 11..33.. KKoonnttaakktt zz aauuttoorreemm Jeżeli masz pytania lub komentarze o tym dokumencie, wyślij do mnie list na adres karnad@indiamail.com. Sugestie, krytyka i każdy inny rodzaj poczty są zawsze mile widziane. Jeżeli znajdziesz błąd w tym dokumencie, daj mi znać, żebym mógł go poprawić w następnej wersji. Dziękuję. 22.. IInnssttaallaaccjjaa sseerrwweerraa HHTTTTPP Kiedy ściągasz serwer, masz dwie opcje: pobrać źródła i skompilować je samodzielnie, albo wziąć binaria. Binaria pod Linuxa (ELF) są dostępne z NCSA, ale tylko najnowsza wersja. 22..11.. PPrrzzyyggoottoowwaanniiaa pprrzzeedd śścciiąąggaanniieemm Serwer NCSA poprowadzi cię przez kolejne opcje konfiguracji i przygotuje różne pliki. Ale zanim ściągniesz HTTPd, przygotuj odpowiedzi na następujące pytania: 22..11..11.. SSyysstteemm OOppeerraaccyyjjnnyy Po pierwsze musisz wybrać między źródłami i binariami. Jeżeli twój system nie figuruje w menu, będziesz musiał pobrać domyślne źródła i skompilować je samemu. Żeby sprawdzić wersję twojego Linuxa przejdź do linii poleceń twojej maszyny i napisz: linux:~$ uname -a powinna pojawić się linia podobna do tej linux:~$ uname -a Linux linux 2.0.29 #4 Tue Sep 13 04:05:51 CDT 1994 i586 linux:~$ Wersja Linuxa to 2.0.29. Pozostałe parametry mogą być podane przed ściąganiem lub później, podczas modyfikacji pliku srm.conf w katalogu /usr/local/etc/httpd/conf. Dokładne nazwy dyrektyw, które pojawiają się w pliku httpd.conf, są pokazane w nawiasach. Jedyny wyjątek to dyrektywa DocumentRoot, która pojawia się w pliku srm.conf. 22..11..22.. TTyypp pprroocceessuu ((SSeerrvveerrTTyyppee)) Ta dyrektywa określa sposób działania serwera HTTPd na twoim komputerze. Preferowana metoda to ,,standalone''. Dzięki temu demon HTTP będzie działał cały czas. Jeżeli wybierzesz ładowanie HTTPd przez ,,inetd'', binaria serwera będą ładowane do pamięci na każde zapytanie przeglądarek, co może spowolnić twój serwer. 22..11..33.. PPrrzzyyddzziieellaanniiee ppoorrttuu ((PPoorrtt)) Dyrektywa ta definiuje port twojej maszyny, na którym HTTPd będzie nasłuchiwał zapytań HTTP. Jeżeli możesz zalogować się jako root, użyj standardowego ustawienia - 80. Jeżeli nie, wybierz port od 1025 do 65535. 22..11..44.. UUsseerrIIDD sseerrwweerraa ((UUsseerr)) Jest to nazwa użytkownika, jaką przybierze serwer podczas odpowiadania na zapytania HTTP i wykonywania operacji na plikach. Musisz to ustalić tylko jeżeli serwer jest uruchamiany jako root. Jeżeli nie masz uprawnień root'a, użyj swoją nazwę użytkownika, a jeśli jesteś administratorem systemu, możesz chcieć stworzyć specjalnego użytkownika, żeby kontrolować prawa dostępu do plików. 22..11..55.. GGrruuppaa iiddeennttyyffiikkaaccyyjjnnaa sseerrwweerraa ((GGrroouupp)) Określa identyfikator grupy serwera. Jest to dyrektywa bardzo podobna do poprzedniej i jest potrzebna tylko wtedy, gdy serwer pracuje w trybie ,,standalone''. Jeżeli nie masz uprawnień root'a, użyj nazwy twojej głównej grupy. Możesz dowiedzieć się, do jakiej grupy należysz, wydając polecenie ggrroouuppss w linii poleceń Linuxa. 22..11..66.. AAddrreess eemmaaiill aaddmmiinniissttrraattoorraa sseerrwweerraa ((SSeerrvveerrAAddmmiinn)) Gdy użytkownicy serwera mają problemy z serwerem, powinni wysyłać pocztę pod adres określony tą dyrektywą. Możesz tu umieścić swój osobisty adres e-mail. 22..11..77.. KKaattaalloogg sseerrwweerraa ((SSeerrvveerrRRoooott)) Jest to miejsce, w którym znajduje się serwer. Jeżeli masz uprawnienia root'a, umieść serwer w jego domyślnym katalogu - /usr/local/etc/httpd. Jeżeli nie możesz zalogować się jako root, wybierz podkatalog w twoim katalogu domowym. Możesz dowiedzieć się o nazwie twojego katalogu domowego komendą ppwwdd. 22..11..88.. KKaattaalloogg pplliikkóóww ddaannyycchh sseerrwweerraa ((DDooccuummeennttRRoooott)) Ta dyrektywa określa miejsce plików HTML (nie tylko - np. plików graficznych, skryptów CGI itp. - przyp. tłum.). Domyślny katalog to /usr/local/etc/httpd/htdocs. Możesz także wybrać katalog domowy specjalnego użytkownika, którego wybrałeś dyrektywą ,,User'', albo podkatalog w twoim katalogu domowym, jeżeli nie możesz logować się jako root. Jeżeli nie wiesz, jakie ustawienia wybrać, użyj domyślnych. Teraz możesz już ściągnąć NCSA HTTPd z http://hoohoo.ncsa.uiuc.edu/docs/setup/OneStep.html. Powinieneś przeczytać dokumentację HTTPd, znajdującą się na http://hoohoo.ncsa.uiuc.edu/docs/, zanim zaczniesz instalować HTTPd. Jeżeli będziesz chciał skompilować kod źródłowy serwera, będziesz musiał zmodyfikować pliki makefile w każdym z trzech katalogów (support, src, cgi-src). Jeżeli twoja wersja Linuxa jest już obsługiwana przez te pliki, wystarczy tylko napisać mmaakkee lliinnuuxx w katalogu serwera (np. /usr/local/etc/httpd). (? - przyp. tłum.) 22..22.. KKoommppiillaaccjjaa HHTTTTPPdd Jest to prosta czynność - wystarczy napisać make linux w linii poleceń w głównym katalogu serwera. UUwwaaggaa:: Użytkownicy starej wersji Linuxa, nie obsługującej binariów ELF, muszą odkomentować linię #define NO_PASS w pliku portablility.h (pamiętaj, że ,,#'' w pliku języka C jest dyrektywą kompilatora - można tam wpisać ,,define'' lub ,,undef'' - chociaż może jest to tam ,,zakomentowane'' dodatkowymi ,,#'' - przyp. tłum.) i ustawić DBM_LIBS = -ldbm w pliku Makefile przed kompilacją HTTPd. 33.. TTeessttoowwaanniiee HHTTTTPPdd Po zainstalowaniu HTTPd, zaloguj się jako root i uruchom go, pisząc hhttttppdd &&. (przyjmując, że zainstalowałeś go jako ,,standalone'') Powinieneś widzieć go teraz w liście generowanej przez polecenie ppss. Najprostszy sposób przetestowania HTTPd, to telnet. W linii poleceń Linuxa napisz linux:~$ telnet 172.16.0.1 80 gdzie 80 jest domyślnym portem dla HTTP. Jeżeli ustawiłeś dyrektywę ,,Port'' na inny niż 80, wpisz ten numer zamiast 80. Powinieneś otrzymać odpowiedź wyglądającą tak jak to: Trying 172.16.0.1... Connected to linux.mydomain. Escape character is '^]'. Teraz, kiedy wpiszesz jakikolwiek znak i naciśniesz enter, powinieneś otrzymać odpowiedź podobną do poniższej. HTTP/1.0 400 Bad Request Date: Wed, 10 Jan 1996 10:24:37 GMT Server: NCSA/1.5 Content-type: text/html <HEAD><TITLE>400 Bad Request < /TITLE> < /HEAD> <BODY><H1>400 Bad Request < /H1> Your client sent a query that this server could not understand.<P> Reason: Invalid or unsupported method.<P> < /BODY> Teraz możesz połączyć się z serwerem używając innych komputerów. 44.. ŁŁąącczzeenniiee ssiięę zz sseerrwweerreemm LLiinnuuxxoowwyymm Odwołuję cię do diagramu w rozdziale ``Wprowadzenie'', znajdują się tam używane w tym dokumencie adresy. Stacja robocza 1 (dalej nazywana W/S1) znajduje się w sieci 172.16.0.0 i może bezpośrednio połączyć się z serwerem Linuxowym, a Stacja Robocza 2 (W/S2) jest w sieci 172.17.0.0, musi więc używać bramki (gateway)/routera 170.17.0.254, żeby dostać się do maszyny Linuxowej. Adres bramki jest potrzebny tylko podczas konfiguracji W/S2. Netware odwołuje się do bramki jako do ,,ip_router''. Uźyję W/S2 dla zilustrowania konfiguracji klientów. Żeby skonfigurować W/S1 zmień jedynie adres 172.17.0.5 na 172.16.0.5 i zignoruj wszystkie odwołania do bramki/routera. Jeżeli nie masz routera, nie musisz czytać następnej sekcji - przejdź do ˇ ``Konfiguracja klienta NetWare'' jeżeli używasz serwera Netware. ˇ ``Konfiguracja klienta MS Windows'' jeżeli używasz klienta Microsoftu. 44..11.. KKoonnffiigguurraaccjjaa sseerrwweerraa LLiinnuuxxoowweeggoo JJeeżżeellii nniiee mmaasszz rroouutteerraa,, mmoożżeesszz oommiinnąąćć ttąą sseekkccjjęę.. Musisz skonfigurować serwer Linuxowy, żeby rozpoznawał router. Dzięki temu bedzie pozwalał Stacji Roboczej 2 połączyć się z serwerem WWW. Powinieneś zalogować się jako root, żeby skonfigurować serwer Linuxowy. W linii poleceń serwera napisz route add gw default 172.16.0.254 Żeby używać tej bramki za każdym razem, kiedy uruchamiasz serwer Linuxowy, wyedytuj plik /etc/rc.d/rc.inet1 i zmień linię zawierającą definicję bramki na GATEWAY = "172.16.0.254". Upewnij się, że linia GATEWAY nie jest odkomentowana. (W dystrybucji RedHat możesz umieścić informacje o bramce m.in. w pliku /etc/rc.d/rc.local - wstaw tam polecenie ,,route add default gw 172.16.0.254'' - przyp. tłum.) Możesz też dodać routing do konkretnych sieci po drugiej stronie routera. Możesz to uzyskać poleceniem route add -net 172.17.0.0 gw 172.16.0.254 W celu dodawania tego routingu przy każdym uruchomieniu Linuxa, dodaj powyższą komendę do pliku /etc/rc.d/rc.local. 44..22.. KKoonnffiigguurraaccjjaa sseerrwweerraa NNeettWWaarree W celu skonfigurowania serwera Netware, powinieneś mieć uprawnienia nadzorcy (Supervisor) lub przynajmniej uprawnienia operatora konsoli (Console Operator). Jeżeli nie możesz ich uzyskać, poproś o pomoc twojego administratora sieci. Na serwerze włącz typ ramek Ethernet_II w twojej sieci LAN, wydając następujące komendy, lub dołączając je do pliku AUTOEXEC.ncf. load NE2000 frame=Ethernet_II name=IPNET load TCPIP bind IP to IPNET addr=172.16.0.2 mask=FF.FF.FF.0 Możliwe, że będziesz musiał podać numer slotu karty podczas ładowania drivera NE2000 (zależnie od twojej konfiguracji). (np. ,,load NE2000 slot=3 frame=...'') 44..33.. KKoonnffiigguurraaccjjaa kklliieennttaa NNeettWWaarree Jeżeli używasz PC-tów, możesz wybrać pomiędzy Windows 3.1, WFWG (Windows for Workgroups - przyp. tłum.) i Windows '95. Procedura instalacji w Win95 różni się od starszych wersji windows jeżeli używasz 32 bitowego klienta Microsoftu lub Novella. Jeśli będziesz używać klienta 16 bitowego, procedura instalacji jest identyczna dla wszystkich tych środowisk, możesz więc używać instrukcji dotyczących Windows 3.x. Instrukcje instalacji klienta 32 bitowego znajdują się w sekcji ``Instalacja w Windows 95''. 44..33..11.. WWiinnddoowwss 33..xx Jeżeli używasz Win3.1 lub WFWG, możesz zainstalować Klienta Netware (nazywanego ,,VLM'') i dodatkowe pliki dostarczane z dyskietką obsługi TCP/IP: TCPIP.exe, VTCPIP.386, WINSOCK.dll i WLIBSOCK.dll Zauważ, że plik WINSOCK.dll różni się od dostarczanych z Win95 i Trumpetem. Zainstaluj Klienta Netware z obsługą windows. Skopiuj pliki VTCPIP.386, WINSOCK.dll i WLIBSOCK.dll do katalogu SYSTEM, a plik TCPIP.exe do katalogu NWCLIENT. Zmodyfikuj teraz plik STARTNET.bat w katalogu NWCLIENT: lsl ne2000 ----> driver twojej karty sieciowej c:\windows\odihlp.exe ----> jeżeli używasz WFWG ipxodi tcpip ----> dodaj tą linię nwip ----> jeżeli używasz Netware/IP vlm Stwórz podkatalog, powiedzmy, TCP i skopiuj pliki HOSTS, NETWORKS, PROTOCOLS i SERVICES z katalogu /etc serwera Linuxowego, lub katalogu SYS:ETC na serwerze Netware. Zmodyfikuj skopiowany plik HOSTS, dodając linię dotyczącą serwera Linuxowego. To pozwoli ci odwoływać się do serwera jako http://linux.mydomain/ zamiast http://172.16.0.1/, kiedy używasz przeglądarki WWW - 127.0.0.1 localhost 172.16.0.1 linux.mydomain Zmodyfikuj plik NET.cfg w katalogu NWCLIENT Link Driver NE2000 port 300 int 3 MEM D0000 FRAME Ethernet_802.2 ; ---- dodaj te linie ---- FRAME Ethernet_II Protocol TCPIP PATH TCP_CFG C:\NET\TCP ip_address 172.17.0.5 ip_netmask 255.255.255.0 ip_router 172.17.0.254 ---> dodaj adres twojej bramki tylko ---> wtedy, jeżeli musisz jej używać, ---> żeby dostać się do serwera HTTP Link Support MemPool 6192 ---> Minimum to 1024 - spróbuj użyć innych wartości Buffers 10 1580 ---> To też może być wysterowane ;--------------------------------- ; Jeżeli używasz Netware/IP będziesz musiał dodać takie linie ; NWIP NWIP_DOMAIN_NAME mydomain NSQ_BROADCAST ON NWIP1_1 COMPATIBILITY OFF AUTORETRIES 1 AUTORETRY SECS 10 W pliku SYSTEM.ini w katalogu WINDOWS dodaj taki wpis dla VTCPIP.386: [386Enh] ..... network=*vnetbios, vipx.386, vnetware.386, VTCPIP.386 ..... Zrestartuj komputer i uruchom STARTNET.bat. Możesz teraz używać swojej ulubionej przeglądarki WWW, żeby oglądać twoje strony. Nie musisz logować się do sieci Netware i uruchamiać TCPMAN (jeżeli używasz Trumpet Winsock). 44..33..22.. WWiinnddoowwss 9955 Sekcja ta opisuje instalację 32-bitowego klienta dla Windows 95. Po pierwsze musisz zainstalować następujące składniki: ˇ Klient sieci Netware (Microsoftu lub Novella) ˇ Protokół Microsoft TCP/IP ˇ Karta sieciowa W celu ich instalacji kliknij na ikonach: Mój Komputer, Panel Sterowania, Sieć. Kliknij ,,Dodaj''. Znajdziesz się w oknie, w którym wyświetlone są następujące napisy: Klient, Karta, Protokół, oraz Usługa. Żeby zainstalować Klienta sieci Netware, wykonaj następujące czynności: 1. Kliknij dwukrotnie na napisie Klient 2. Kliknij na ,,Microsoft'' lub ,,Novell'' 3. Kliknij dwukrotnie na ,,Klient Sieci Netware'' Żeby zainstalować protokół TCP/IP 1. Kliknij dwukrotnie na napisie ,,Protokół'' 2. Kliknij na ,,Microsoft'' 3. Kliknij dwukrotnie na TCP/IP Windows 95 domyślnie instaluje kilka innych protokołów. Usuń je, podświetlając je i klikając przycisk ,,Usuń''. Zazwyczaj Windows 95 instaluje protokół Microsoft NetBeui, oraz protokół kompatybilny z IPX/SPX. Możesz usunąć NetBeui, ale IPX/SPX będzie potrzebny, jeżeli będziesz chciał logować się na serwer Netware. W celu skonfigurowania TCP/IP, kliknij na TCP/IP, Właściwości i na pasku ,,Adres IP''. Wprowadź adres IP w polu ,,Podaj adres IP'' jako 172.17.0.5. W polu ,,Maska Podsieci'' wprowadź 255.255.255.0. Następnie wybierz pasek ,,Bramka'' (lub ,,Router'' - przyp. tłum.); wprowadź adres bramki w polu ,,Nowa bramka'' - 172.17.0.254 i kliknij przycisk ,,Dodaj''. Adres bramki powinien znajdować się w polu zainstalowanych bramek. Kliknij OK. Powinieneś zobaczyć prośbę o zrestartowanie komputera, zrób to. Powinieneś teraz być w stanie używać przeglądarki do połączenia się z serwerem HTTP. 44..44.. KKoonnffiigguurraaccjjaa KKlliieennttaa MMiiccrroossoofftt Ta sekcja koncentruje się na opisaniu dostępu do sieci TCP/IP za pomocą Klienta Microsoft, korzystając z systemów ˇ ``Windows for Workgroups (WFWG)'' ˇ ``Windows 95'' ˇ ``Windows NT 4.0'' UUwwaaggaa:: Żebyś mógł odwoływać się do serwera Linuxowego jako http://linux.mojadomena/ zamiast http://172.16.0.1/ w przeglądarce WWW i programach intranetowych, musisz zmodyfikować plik hosts. Możesz też dodać rekordy dla wszystkich twoich komputerów (Netware, Unix, WinNT). Systemy Windows trzymają swój plik HOSTS w katalogu WINDOWS lub w WINDOWSTEM, zależnie od wersji. Zmodyfikuj ten plik, dodając linię dla serwera Linuxowego: 127.0.0.1 localhost 172.16.0.1 linux.mojadomena 172.16.0.2 netware.mojadomena 172.16.0.3 winNT.mojadomena 172.16.0.5 ws_1 44..44..11.. WWiinnddoowwss ffoorr WWoorrkkggrroouuppss Ta sekcja opisuje instalację 32-bitowego klienta w WFWG. Najpierw musisz ściągnąć sterowniki TCP/IP dla Windows z serwera Microsoftu. Najnowsza obecnie wersja to 3.11b z ftp://ftp.microsoft.com/ lub z innych serwerów jako tcp32b.exe. Upewnij się, że zainstalowałeś Win32 przed uruchomieniem 32-bitowego sterownika TCP/IP. Kiedy rozpakowałeś już pliki TCP/IP do tymczasowego katalogu (np. C:TEMP, sprawdź, czy masz plik OEMSETUP.INF w katalogu WINDOWSTEM. Jeżeli tak, zmień jego nazwę. Skopiuj OEMSETUP.INF z katalogu TEMP do WINDOWSTEM. Jeżeli uruchamiałeś inne stosy TCP/IP w twoim systemie, usuń je zanim przejdziesz dalej. Uruchom Ustawienia Sieci lub Ustawienia Windows/Zmień Ustawienia Sieci. ˇ Kliknij przycisk ,,Sieci'' ˇ Kliknij ,,Zainstaluj Sieć Microsoft Network'' ˇ Wybierz obsługę dodatkowych sieci (jeżeli jest to potrzebne) ˇ Kliknij OK Powinieneś zostać zapytany o kartę sieciową - wybierz odpowiednią. Jeżeli nie zostałeś zapytany, ˇ Kliknij przycisk ,,Karty'' ˇ Wybierz kartę sieciową (np. NE2000) ˇ Kliknij OK ˇ Kliknij przycisk ,,Protokół'' ˇ Wybierz protokół MS TCP/IP-32 ˇ Kliknij OK Zostaniesz poproszony o skonfigurowanie stosu TCP/IP. Zawsze możesz zmienić konfigurację, podświetlając protokół TCP/IP pokazany w polu Karty Sieciowe i klikając przycisk Ustaw. ˇ W polu adresu IP wprowadź 172.17.0.5 ˇ W polu maski podsieci wprowadź 255.255.255.0 ˇ Wprowadź adres bramki (routera) w polu domyślnej bramki - 172.17.0.254 Kliknij OK. System poprosi cię o zrestartowanie komputera, zrób to. Powinieneś móc przeglądać strony na serwerze HTTP. 44..44..22.. WWiinnddoowwss 9955 Ta sekcja opisuje instalację 32-bitowego klienta Microsoft w Windows 95. Najpierw musisz zainstalować następujące komponenty: ˇ Klient Sieci Microsoft ˇ Protokół Microsoft TCP/IP ˇ Karta Sieciowa W celu ich instalacji kliknij na ikonie Mój Komputer, następnie Panel Sterowania, Sieć. Kliknij ,,Dodaj''. Znajdziesz się w oknie z napisami: Klient, Karta, Protokół, oraz Usługa. Żeby zainstalować Klienta Sieci Microsoft: 1. Kliknij dwuktornie na ,,Klient'' 2. Kliknij na ,,Microsoft'' 3. Kliknij dwukrotnie na ,,Sieć Microsoft'' Instalacja protokołu TCP/IP: 1. Kliknij dwukrotnie na ,,Protokół'' 2. Kliknij na ,,Microsoft'' 3. Kliknij na ,,TCP/IP'' Domyślnie Windows 95 instaluje kilka protokołów. Usuń je, podświetlając je i klikając przycisk ,,Usuń''. Zazwyczaj Win95 instaluje protokół Microsoft NetBeui. W celu konfiguracji TCP/IP, kliknij na ,,TCP/IP'', ,,Właściwości'', oraz na pasku ,,Adres IP''. Wprowadź twój adres IP w polu ,,Podaj adres IP'' - 172.14.0.5. W polu ,,Maska Podsieci'' wpisz 255.255.255.0. Wybierz pasek ,,Bramka'' i wprowadź adres routera w polu ,,Nowa Bramka'' - 172.17.0.254. Kliknij przycisk ,,Dodaj''. Adres bramki powinien się teraz pojawić w polu zainstalowanych bramek. Kliknij OK. Powinieneś otrzymać prośbę o zrestartowanie systemu - zrób to. Możesz teraz użyć przeglądarki, żeby połączyć się z serwerem HTTP. 44..44..33.. WWiinnddoowwss NNTT Ta sekcja opisuje instalację klienta TCP/IP dla WinNT 4.0. ˇ Uruchom Panel Sterowania / Sieć ˇ Wybierz pasek Karty ˇ Kliknij Dodaj, żeby dodać nową kartę sieciową (jeżeli nie masz jeszcze zainstalowanej karty) Powinieneś zostać zapytany o kartę sieciową - wybierz odpowiednią. W celu dodania protokołu ˇ Wybierz pasek ,,Protokoły'' ˇ Kliknij ,,Dodaj'' ˇ Wybierz protokół TCP/IP ˇ Kliknij OK Zostaniesz poproszony o skonfigurowanie stosu TCP/IP. W każdej chwili możesz zmienić ustawienia, podświetlając protokół TCP/IP i klikając na ,,Właściwości''. ˇ Wybierz pasek ,,Adres IP'' ˇ Zaznacz pole ,,Podaj adres IP'' ˇ W polu ,,Adres IP'' wprowadź 172.17.0.5 ˇ W polu ,,Maska Podsieci'' wpisz 255.255.255.0 ˇ Jako adres bramki (routera) w polu Domyślna Bramka wpisz 172.17.0.254 Kliknij OK. System poprosi cię o restart. Możesz teraz używać dowolnej przeglądarki do łączenia się z serwerem HTTP. 44..55.. KKoonnffiigguurraaccjjaa TTCCPP//IIPP nnaa MMaacciinnttoosshhuu Jeżeli używasz Macintosha, możesz skorzystać z tej sekcji, opisującej instalację MacTCP na PowerMacach. UUwwaaggaa:: Żebyś mógł odowoływać się do serwera Linuxowego jako do http://linux.mojadomena/ zamiast http://172.16.0.1/ w przeglądarce WWW i wszystkich twoich programach intranetowych, musisz wyedytować plik hosts. Format tego pliku jest inny od stostowanego w Unixach. Plik hosts Maca jest oparty na RFC-1035. Możesz też dodać rekordy dla innych komputerów (Netware, Unix, WinNT). MacOS trzyma swój plik HOSTS w ,,folderze Preferencji'' w ,,folderze Systemowym''. Do tego pliku dodaj linię dla serwera Linuxowego: linux.mojadomena A 172.16.0.1 netware.mojadomena A 172.16.0.2 winNT.mojadomena A 172.16.0.3 ws_1 A 172.16.0.5 44..55..11.. MMaaccTTCCPP Ta sekcja opisuje instalację MacTCP. Najpierw musisz ściągnąć MacTCP z serwera Apple lub zainstalować go z ,,Internet Connection CD''. W celu skonfigurowania MacTCP, kliknij Menu Jabłko/ Panel Sterowania/ TCP/IP. W oknie konfiguracji wybierz ,,Połącz przez:'' ,,Ethernet''. Zmień ,,Ustawienie'' na ,,Ręczne'' ˇ W polu adresu IP wprowadź 172.17.0.5 ˇ W polu maski podsieci wprowadź 255.255.255.0 ˇ Jako adres bramki (routera) podaj 172.17.0.254 Kliknij OK. Możesz połączyć się teraz z serwerem HTTP. 55.. KKoonnffiigguurraaccjjaa IInnttrraanneettuu Intranet nie jest kompletny bez możliwości dzielenia zasobów na róźnych platformach. Będziesz potrzebował obsługi innych systemów plików, w celu uzyskania dostępu do danych na nich. Ten dokument dostarcza informacji o podłączaniu Linuxa do komputerów z następującymi popularnymi systemami plików: ˇ ``NCP dla Netware'' ˇ ``SMB dla Windows'' ˇ ``NFS dla Unixa'' Te systemy plików mogą być wkompilowane do jądra Linuxa albo dodane jako moduły, zależnie od wersji Linuxa. Jeżeli nie wiesz, jak skompilować jądro, możesz odwołać się do Kernel HOWTO http://www.jtz.org.pl/Html/Kernel-HOWTO.pl.html i Module HOWTO http://www.jtz.org.pl/Html/Module-HOWTO.pl.html. 55..11.. NNCCPPFFSS W celu współdzielenia plików z serwera Netware, będziesz potrzebował obsługi NCP (ncpfs). NCPFS działa z jądrami od 1.2.x i 1.3.71. Nie działa z żadnym starszym jądrem 1.3.x. Nie może odczytywać bazy danych NDS w Netware 4.x, ale może używać adresowania (??? ,,bindery'' binder to spinacz albo np. przydzielanie portów usługom - przyp. tłum.). Jeżeli używasz Netware 4.0, możesz włączyć adresowanie dla konkretnych domen (??? ,,containers'' pojemniki - przyp. tłum.) używając komendy Set Bindery Context na konsoli: set Bindery Context = KORPORACJA.MOJADOMENA;UŻYTKOWNIKWEB.MOJADOMENA W powyższym przykładzie, włączono adresowanie dla tych dwóch domen. Będziesz musiał ściągnąć programy systemu plików NCP z ftp://sunsite.icm.edu.pl/pub/Linux/system/filesystems/ncpfs/ncpfs.tgz (Obecnie ncpfs-2.0.10). 55..11..11.. IInnssttaallaaccjjaa Żeby zainstalować ncpfs napisz zcat ncpfs.tgz | tar xvf - żeby rozpakować pliki do ich katalogu (można też łatwiej, tar xzvf ncpfs.tgz - przyp. tłum.). W przypadku tego pliku otrzymasz katalog ncpfs-2.0.10. Zmień katalog na ncpfs-2.0.10 przed kontynuowaniem instalacji. Przeczytaj plik README i zmień Makefile, jeżeli jest to potrzebne. Sposób instalacji ncpfs zależy od wersji twojego jądra. W 1.2 powinieneś po prostu napisać ,,make'', a potem ,,make install'' - zainstaluje to binaria i strony man. Jeżeli używasz 1.3.71 lub późniejszego, będziesz musiał przekompilować jądro. Od tej wersji część jądra z ncpfs jest załączona w źródłach. Żeby sprawdzić, czy jądro musi być rekompilowane, napisz cat /proc/filesystems Powinna pokazać się (między innymi - przyp. tłum.) linia mówiąca o ncpfs. Jeżeli nie, możesz albo przekompilować jądro, albo dodać ncpfs jako moduł. Żeby przekompilować jądro, musisz napisać ,,make config'', a kiedy program zapyta cię o The IPX protocol (CONFIG_IPX) [N/y/?] odpowiedz ,,y''. Prawdopodobnie nie jest ci potrzebna pełna sieć wewnętrzna, o którą zostaniesz następnie zapytany. Kiedy jądro zostanie zainstalowane zresetuj system, sprawdź /proc/filesystems, i jeżeli wszystko działa, kontynułuj instalację programów ncpfs. Zmień katalog na zawierający ściągnięte pliki ncpfs i napisz ,,make'', a po kompilacji ,,make install'', żeby zainstalować różne programy i strony man. 55..11..22.. MMoonnttoowwaanniiee NNCCPPFFSS W celu sprawdzenia typu instalacji napisz ipx_configure --auto_interface=on --auto_primary=on poczekaj 10 sekund i napisz slist Powinieneś uzyskać listę serwerów Netware. Jesteśmy gotowi do współdzielenia plików z serwera Netware. Załóżmy, że musisz dostać się do plików HTML z katalogu eldocs na dysku VOL1: serwera MOJADOMENA_NW. Radzę stworzyć użytkownika (na przykład) ,,EXPORT'' z hasłem ,,EXP123'' na serwerze, do którego udzielasz dostępu do danego katalogu używając SYSCON lub NWADMIN. W maszynie Linuxowej stwórz nowy katalog /mnt/MOJADOMENA_NW. Wpisz ncpmount -S MOJADOMENA_NW -U EXPORT -P EXP123 /mnt/MOJADOMENA_NW żeby zamontować katalog. Komenda ls /mnt/MOJADOMENA_NW/vol1/home/htmldocs wypisze listę wszystkich plików w MOJADOMENA_NW/VOL1:ELDOCS (używając notacji Netware). Jeżeli napotkasz jakiś problem, przeczytaj IPX HOWTO http://sunsite.unc.edu/mdw/HOWTO/IPX-HOWTO.html, żeby usyskać więcej informacji o protokole IPX. 55..22.. SSMMBBFFSS W celu współdzielenia plików z serwera Windowsowego, potrzebna ci będzie obsługa SMB (smbfs). Będziesz musiał ściągnąć programy dla systemu plików SMB z ftp://sunsite.unc.edu/pub/Linux/system/filesystems/smbfs/smbfs.tgz (obecnie wersja smbfs-2.0.1). 55..22..11.. IInnssttaallaaccjjaa Żeby zainstalować programy smbfs napisz zcat smbfs.tgz | tar xvf - żeby rozpakować pliki do ich katalogu (można też tar xzvf smbfs.tgz - przyp. tłum.). W przypadku wersji 2.0.1 otrzymasz katalog smbfs-2.0.1. Zmień katalog na ten z smbfs przed kontynuowaniem instalacji. Przeczy­ taj plik README i zmień Makefile, jeżeli jest to potrzebne. Sposób instalacji smbfs zależy od wersji twojego jądra. W 1.2, powinieneś napisać po prostu ,,make'', a potem ,,make install'', żeby zainstalować binaria i strony man. Jeżeli używasz jądra 2.0 lub późniejszego, będziesz musiał przekompilować jądro. Od tej wersji, obsługa smbfs jest już w źródłach jądra. W celu sprawdzenia, czy jądro potrzebuje rekompilacji, napisz cat /proc/filesystems Powinna wyświetlić się (między innymi - przyp. tłum.) linia o smbfs. Jeżeli nie, możesz albo przekompilować jądro, albo dodać obsługę smbfs jako moduł. W celu rekompilacji jądra napisz ,,make config'', a kiedy program zapyta się o dodanie obsługi systemu plików SMB, opowiedz tak. Kiedy jądro zostanie poprawnie zainstalowane zresetuj system, sprawdź /proc/filesystems i jeżeli wszystko jest w porządku kontynuuj instalację programów smbfs. Zmień katalog na zawierający ściągnięte pliki smbfs i napisz ,,make''. Po kompilacji napisz ,,make install'', żeby zainstalować różne binaria i strony man. 55..22..22.. MMoonnttoowwaanniiee SSMMBBFFSS W naszym przykładzie przyjmijmy, że serwer Windows NT nazywa się ,,MOJADOMENA_NT'' i współdzieli swój katalog C:PUBLDOCS o nazwie dzielonej ,,HTDOCS'' bez hasła. W maszynie Linuxowej stwórz nowy katalog /mnt/MOJADOMENA_NT. Wpisz smbmount //MOJADOMENA_NT/HTMLDOCS /mnt/MOJADOMENA_NT -n żeby zamontować system plików SMB. Jeżeli to nie działa, spróbuj smbmount //MOJADOMENA_NT/COMMON /mnt/MOJADOMENA_NT -n -I 172.16.0.3 Wpisanie komendy ls /mnt/MOJADOMENA_NT wypisze wszystkie pliki w \MYDOM_NTPUBLDOCS (używając notacji Windowsowej). 55..33.. NNFFSS Najpierw potrzebne jest ci jądro z obsługą NFS bądź to wkompilowaną, bądź jako moduł. Załóżmy, że posiadasz komputer Unixowy z NFS'em o nazwie MOJADOMENA_UNIX i z adresem IP 172.16.0.4. Możesz sprawdzić udostępniane (exported) przez ten komputer katalogi pisząc showmount -e 172.16.0.4 Kiedy znamy już udostępniane katalogi, możemy zamontować je wpisując odpowiednią komendę mount. Radzę ci utworzyć podkatalog w ,,/mnt/'' (powiedzmy ,,MOJADOMENA_UNIX'') i używać go jako punkt montowania. mount -o rsize=1024,wsize=1024 172.16.0.4:/pub/htmldocs /mnt/MOJADOMENA_UNIX Może zajść potrzeba zmiany rsize i wsize, zależnie od twojego środowiska. Jeżeli napotkasz jakiś problem, przeczytaj NFS HOWTO http://sunsite.unc.edu/mdw/HOWTO/NFS-HOWTO.html, żeby uzyskać więcej informacji o protokole NFS. 66.. DDoossttęępp ddoo SSiieeccii Teraz, kiedy skonfigurowaliśmy serwer HTTP i klientów, oraz połączyliśmy serwer Linuxowy z innymi serwerami, musimy wykonać parę małych ustawień na serwerze Linuxowym, żeby uzyskać możliwość dostępu do zamontowanych systemów plików z przeglądarek WWW. 66..11.. DDoossttęępp ddoo zzaammoonnttoowwaannyycchh ssyysstteemmóóww pplliikkóóww Istnieją dwie metody dostępu do zamontowanych systemów plików przez strony HTML. ˇ Stworzyć dowiązanie symboliczne w katalogu DocumentRoot (/usr/local/etc/httpd/htdocs), żeby odwoływać się do zamontowanych katalogów jako ˇ ln -s /mnt/MOJADOMENA_NW/vol1/home/htmldocs netware ˇ ln -s /mnt/MOJADOMENA_NT winNT ˇ ln -s /mnt/MOJADOMENA_UNIX unix ˇ Wprowadzić aliasy do pliku srm.conf w katalogu /usr/local/etc/httpd. # Alias nowanazwa prawdziwanazwa Alias /icons/ /usr/local/etc/httpd/icons/ # aliasy dla serwerów Alias /netware/ /mnt/MOJADOMENA_NW/vol1/home/htmldocs/ Alias /winNT/ /mnt/MOJADOMENA_NT/ Alias /unix/ /mnt/MOJADOMENA_UNIX/ odwołując się do niego jako http://linux.mojadomena/netware/index.htm, lub podobnie dla innych serwerów. 66..22.. ŁŁąącczzeenniiee ssiięę zz IInntteerrnneetteemm Możesz połączyć twój intranet z Internetem, żeby uzyskać dostęp do poczty elektronicznej i wszystkich wspaniałych informacji, które zawiera. Proponuję napisanie krótkiej notatki opisującej jak to zrobić, dla przyszłej wersji dokumentu. Dokładne wyjaśnienie znajduje się w ISP Hookup HOWTO http://www.jtz.org.pl/Html/ISP-Hookup- HOWTO.html i Diald mini HOWTO http://www.jtz.org.pl/Html/mini/Diald.pl.html. 66..33.. IInnnnee mmoożżlliiwwoośśccii W biurze serwer HTTP może być używany do zapewnienia przezroczystego dostępu do informacji z innych serwerów, znajdujących się pod różnymi lokacjamii w różnych katalogach. Dane mogą być prostymi dokumentami w Wordzie, arkuszami kalkulacyjnymi w Lotusie lub złożonymi bazami danych. Ta technologia jest zazwyczaj używana w następujące sposoby: ˇ Publikacja dokumentów korporacji Tymi dokumentami mogą być listy nowości, raporty periodyczne, mapy, zakres działalności firmy, cenniki, informacje o produktach i każdy dokument będący potrzebny spółce. ˇ Dostęp do przeszukiwalnych katalogów Szybki dostęp do książek telefonicznych firmy itp. Te dane mogą być przedstawione jako strona WWW albo przez skrypty CGI; serwer może służyć jako bramka do istniejących lub nowych aplikacji. Znaczy to, że przy użyciu tych samych standardowych mechanizmów dostępu, informacje mogą być szerzej dostępne w prostszy sposób. Może być użyty do stworzenia interfejsu z RDBMS, jak ORACLE i SYBASE dla generowania informacji w czasie rzeczywistym. Oto lista odnośników do takich serwerów w Sieci. ˇ - Dostęp do sieci - http://cscsun1.larc.nasa.gov/~beowulf/db/web_access.html ˇ - CGI gateways - HTTP://www.w3.org/hypertext/WWW/RDBGate/Overview.html ˇ Strony firmy/oddziału/pracowników Kiedy kultura w firmie zmienia się do punktu, w którym nawet każdy oddział przesuwa się w kierunku indywidualnych założeń, technologia Intranetu zapewnia idealny środek dostarczenia najświeższych informacji do odziału lub pracownika. Mocne technologie wyszukiwania zapewniają możliwość znalezienia grupy lub pojedynczej osoby posiadającej odpowiedzi na pytania powstające w normalnej procedurze robienia interesów. ˇ Proste aplikacje dla grup roboczych Dzięki obsłudze formularzy HTML, serwery mogą zapewniać karty do wypełniania, ankiety i proste rozmieszczanie zadań w czasie. ˇ Dystrybucja oprogramowania Administratorzy mogą używać intranetu do dostarczania oprogramowania oraz uaktualninień ,,na żądanie'' do użytkowników przez sieć firmy. Może to być dokonane dzięki językowi ,,Java'', który pozwala na tworzenie i przezroczystą dystrybucję obiektów na żądanie, a nie tylko danych lub aplikacji. Jest to rzeczywiście możliwe, dzięki nowszym wersjom Linuxa, obsługującym Javę. ˇ Poczta Dzięki swojej możliwości używania intranetowych produktów pocztowych ze standardowymi i prostymi metodami dołączania dokumentów, dźwięku, obrazu i innych multimediów, poczta jest opisywana jako prosta metoda komunikacji. Pod Linuxa dostępna jest duża liczba programów do systemu poczty elektronicznej, takich jak sseennddmmaaiill,, ppoopp33dd ii iimmaappdd. ˇ Interfejs użytkownika Technologia intranetu rozwija się tak szybko, że dostępne narzędzia, a konkretnie HTML, mogą zostać użyte do przeprowadzenia olbrzymiej zmiany w sposobie korzystania z systemów. Dzięki HTML można zbudować interfejs, który jest ograniczony tylko wyobraźnią twórcy. Piękno używania technologi intranetu jest nim dlatego, że można korzystać z niego w bardzo prosty sposób. Kliknięcie odnośnika ze strony HTML może zabrać cię do następnej strony, włączyć alarm, wykonać procedurę zakończenia roku, lub zrobić cokolwiek, co robi program komputerowy. 77.. IInnnnee zzaassttoossoowwaanniiaa Oto lista innych interesujących rzeczy, które możesz wykonać dzięki Linuxowemu serwerowi intranetu. Wszystkie programy wymienione poniżej należą do kategorii freeware lub sharewere. ˇ Przeglądać zawartość serwera Linuxowego używając Otoczenia Sieciowego w Win95 lub NT; Ustawić WINS jako serwer NBT. Przejrzyj stronę SAMBY - http://lake.canberra.edu.au/pub/samba/samba.html ˇ Zaimplementować technologię wyszukiwania w intranecie. Połącz się z ht://Dig na http://htdig.sdsu.edu/ ˇ Używać CUSeeMe przez ustawienie lokalnego reflektora. Odwołaj się do ich strony na http://cu-seeme.cornell.edu/ ˇ Uruchomić konferencję sieciową. Użyj COW z http://thecity.sfsu.edu/COW/ ˇ Rozpowszechnić bazę danych SQL. Odwołaj się do strony mSQL na http://Hughes.com.au/ ˇ Uruchomić serwery FTP, Gopher, Finger, Bootp na serwerze Netware. Zdobądź je z http://mft.ucs.ed.ac.uk/ ˇ Emulować serwer Netware. Przejrzyj katalog programów NCP na ftp://sunsite.icm.edu.pl/pub/Linux/system/filesystems/ncpfs/ Jeżeli znasz inne interesujące zastosowania serwera intranetu na Linuxie, napisz do mnie. 88.. AAuuttoorrssttwwoo ii LLeeggaallnnoośśćć 88..11.. PPooddzziięękkoowwaanniiaa Dziękuję ludziom z NCSA za zapewnienie tak wspaniałej dokumentacji, Davidowi Andersonowi i innym za wypróbowanie tego HOWTO i przysyłanie komentarzy. Opis Netware/IP powstał dzięki Romelowi Floresowi (rom@mnl.sequel.net). 88..22.. IInnffoorrmmaaccjjee oo pprraawwaacchh aauuttoorrsskkiicchh Prawa autorskie tego dokumentu: Š 1996, 1997 Pramod Karnad. Jest on rozpowszechniany pod następującymi warunkami: ˇ Dokumenty Linux HOWTO mogą być rozpowszechniane i kopiowane w całości lub w części, przy użyciu każdego środka fizycznego lub elektronicznego, dokąd na wszystkich kopiach zostanie zachowana informacja o prawach autorskich. Komercyjne rozpowszechnianie jest dozwoloze i zalecane, jednakże autor chciałby zostać powiadomiony o takich dystrybucjach. ˇ Wszystkie tłumaczenia i prace pochodne lub połączone zawierające jakikolwiek dokument Linux HOWTO muszą podlegać tym warunkom. Znaczy to, że nie możesz tworzyć prac pochodnych z HOWTO i dodawać ograniczenia w jego dystrybucji. Wyjątkiem tych zasad mogą być specjalne warunki; proszę o skontaktowanie się z koordynatorem Linux HOWTO pod adresem podanym niżej. ˇ Jeżeli masz pytania, skontaktuj się z Gregiem Hankinsem, koordynatorem Linux HOWTO, na gregh@sunsite.unc.edu. Finger udostępni informacje na temat numeru telefonu i zwykłego adresu pocztowego. 99.. OOdd ttłłuummaacczzaa Jeżeli masz jakieś sugestie, albo znalazłeś błąd, daj mi znać. �����������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/JTZ-HOWTO.pl.txt�������������������������������������������������������0100644�0001750�0001750�00000123535�07405237160�017124� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ JJak tto zzrobić (JTZ) czyli HOWTO po polsku Bartosz Maruszewski B.Maruszewski@jtz.org.pl Michał Malarski malarz@it.pw.edu.pl Piotr Pogorzelski piotr.pogorzelski@ippt.gov.pl v 3.6, 11 Grudnia 2001 Informacje co to takiego JTZ, skąd się to wzięło, czemu to ma służyć, komu to jest potrzebne, a komu nie. Najnowsza wersja tego dokumentu znajduje się na naszym serwerze FTP ftp.jtz.org.pl <ftp://ftp.jtz.org.pl/JTZ/> oraz na Polskiej Stronie Tłumaczeń <http://www.jtz.org.pl/Html/JTZ-HOWTO.pl.html>. Chciałbym zauważyć, że dokument ten dość często się zmienia, więc pilnuj proszę czy masz najnowszą wersję. Szczególnie zwracam uwagę na słowniczek. ______________________________________________________________________ Spis treści 1. Projekt JTZ 1.1 Co to jest JTZ ? 1.2 Ustalenia, które stały się obowiązującym prawem. 1.3 Ludzie, czyli kto to robi 1.4 Pierwsze rezultaty 1.5 Przetłumaczone dokumenty 2. Słownik 3. Trochę danych technicznych dla tłumaczy. 3.1 Krótki minikurs SGML-a. 3.2 sgml-tools 3.3 Teraz trochę o konwersji. 3.4 Polonizacja pakietu 3.5 Co mam zrobić jeśli chcę poprawić dokument. 4. Technikalia - historia 4.1 Jak korzystać z trybu psgml pod Xemacsem? 4.2 konwersja txt i html a sprawa polska 4.3 Konwersja SGML -> LaTeX a sprawa polska 4.3.1 LaTeX i LaTeX2e (epsilon) 4.3.2 Co nam generuje sgml2latex ? 4.3.3 Program sgml2latex i pliki DVI oraz PS 4.3.4 Konwersja właściwa, czyli jak uzyskać DVI lub PS 4.3.5 Uwagi 5. Od autorów ______________________________________________________________________ 11.. PPrroojjeekktt JJTTZZ 11..11.. CCoo ttoo jjeesstt JJTTZZ ?? Wszystko zaczęło się od tego, że kilku osobom chciało się poświęcić troche czasu (bynajmniej nie wolnego) (choć jeden z nich sugerował, że podobno miał mieć jakieś ferie, czy coś w tym stylu, lecz przecież każdy rozsądny człowiek wie, że nie ma czegoś takiego jak ferie, urlop, wolna chwila. To są puste pojęcia wymyślone przez *owców, które mają jedynie namącić ludziom w głowach) i wspomóc World Linux Domination Project Polska (choć część z nich na pewno sobie nie zdawała sprawy z tego co robi) tłumacząc HOWTO na nasz rodzimy język. Dosyć szybko zebrała się mała grupka ludzi, którzy rzuciwszy w kąt inne sprawy zabrali się do dyskusji co przetłumaczyć, jak to przetłumaczyć i co z tymi tłumaczeniami robić. Na szczęście nie byli w tym najlepsi (w tłumaczeniach też nie, jak sami zobaczycie), więc się zajęli innym sprawami (wesela, kino, spacer itp.). Ku ogólnemu zdziwieniu okazało się, że ich wysiłek nie poszedł na marne i zaczęły pojawiać się pierwsze efekty ich działań (o nich za chwilę). Również ich dyskusje, zaowocowały pewnymi ustaleniami, które od tej pory stały się obowiązującym prawem. OOssoobbąą kkoooorrddyynnuujjąąccąą projekt jest BBaarrttoosszz MMaarruusszzeewwsskkii B.Maruszewski@jtz.org.pl 11..22.. UUssttaalleenniiaa,, kkttóórree ssttaałłyy ssiięę oobboowwiiąązzuujjąąccyymm pprraawweemm.. Te ogniste dyskusje, o których wcześniej pisałem (wymiana kilkunastu listów między trzema osobami) doprowadziły do przyjęcia następujących zasad : ˇ Postanowiliśmy, że każdy kto chce dołożyć swoją cegiełkę do tego projektu, zanim cokolwiek zacznie robić, powinien się z nami skontaktować i sprawdzić, czy to co chce robić nie zostało już przez kogoś wzięte. Wyślij list na adres B.Maruszewski@jtz.org.pl i zatytułuj go "HOWTO-info". Otrzymasz wtedy dokładną listę kto co robi i jakie dokumenty są wolne. ˇ Jeśli dokument jest "wolny", zanim się go zacznie tłumaczyć trzeba o tym poinformować osobę koordynującą rozdział dokumentów (B.Maruszewski@jtz.org.pl). ˇ Upewnij się, że posiadasz najnowszą wersję dokumentu (po co się męczyć dwa razy?) i sprawdź czy autor nie ma jakichś zastrzeżeń co do tłumaczenia. ZZaawwsszzee informuj autora, że chcesz przetłumaczyć jego dokument. Możesz zacząć tłumaczyć od razu po wysłaniu listu, nie czekając na odpowiedź, bo szansa, że autor się nie zgodzi jest raczej jak 1:1 000 000 :) ˇ Jeśli jest dostępna wersja oryginału w sgml, to tłumacz raczej ją. ˇ WW ttłłuummaacczzeenniiaacchh wwyykkoorrzzyyssttuujjeemmyy oopprraaccoowwaannyy wwssppóóllnniiee ssłłoowwnniikk, starając się zachować wspólne słownictwo (niestety trzeba zrezygnować z ulubionych zwrotów). Słownik taki otrzymasz wysyłając list na adres B.Maruszewski@jtz.org.pl i tytułując go "HOWTO- slownik". Zapoznaj się z nim przed rozpoczęciem tłumaczenia - uchroni cię to od niepotrzebnych, długotrwałych poprawek. Słownik ten znajduje się także w tym dokumencie. ˇ Każdy nagłówek pliku ma wyglądać tak samo. Skopiuj poniższy i zmień dane: ___________________________________________________________________ <title>Tytuł <author>Autor: Imię Nazwisko <htmlurl url="mailto:autor@adres" name="autor@adres"><newline> v0.75, 1 Sierpnia 1996<newline> <-- wersja i data oryginału <bf>Wersja polska: Imię Nazwisko tłumacza <htmlurl url="mailto:tłumacz@adres" name="tłumacz@adres"></bf><newline> v1.3, 28 Marca 1997 <-- wersja i data tłumaczenia ___________________________________________________________________ Zawsze umieszczaj tę sekcję. Z reguły autorzy także ją umieszczają. Dodaj tylko od siebie dwie poniższe informacje. Jeśli jej nie ma, to załóż ją z tymi informacjami. ______________________________________________________________________ <abstract> Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem... <it>jeśli autor nie podał, to podaj ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/(mini)</it> </abstract> ______________________________________________________________________ Zwróć szczególną uwagę na wszystkie newline. ˇ Wszystkie teksty piszemy w formacie SGML, z wykorzystaniem definicji dokumentu (DTD) nazwanej linuxdoc. Polskie litery kodujemy w jjeeddyynnyymm aktualnym standardzie (dla nieuświadomionych dodam, że nazywa się on ISO-8859-2). Więcej informacji odnośnie standardu kodowania można znależć na Polskiej Stronie Ogonkowej <http://www.agh.edu.pl/ogonki> ˇ Zajmujemy się tylko tłumaczeniem, choć bardzo byśmy chcieli nie możemy jednocześnie aktualizować tłumaczonych dokumentów. Aktualizować oznacza, że nie możemy weryfikować danych znajdujących się w oryginale. Jeśli oryginał zostanie zaktualizowany, to każdy tłumacz jest zobowiązany do uaktualnienia swojego tłumaczenia. ˇ Każdy dokument musi zawierać rozdział, w którym podane są wszelkie wprowadzone zmiany w stosunku do oryginału. Najlepiej na końcu zatytuowany OOdd ttłłuummaacczzaa. ˇ Tłumaczymy dokumenty HOWTO. Jeśli w przyszłości ich nam zabraknie, być może weźmiemy się za coś innego. ˇ Nazw plików nie tłumaczymy, Installation-HOWTO pozostanie dalej Installation-HOWTO. Dodajemy jedynie rozszerzenie ..ppll..ssggmmll. ˇ Jak już przetłumaczysz, sprawdzisz i stwierdzisz, że można tłumaczenie oddać do użytku, to przedtem sprawdź, czy dokument można przekonwertować na inne formaty. ˇ Po przetłumaczeniu i sprawdzeniu powyższego poinformuj osobę koordynującą, czyli Bartka Maruszewskiego B.Maruszewski@jtz.org.pl, że skończyłeś tłumaczyć dany dokument. TTUU BBYYŁŁYY IINNFFOORRMMAACCJJEE OO NNAAGGRRYYWWAANNIIUU NNOOWWYYCCHH DDOOKKUUMMEENNTTÓÓWW NNAA FFTTPP ˇ Jeśli pracujesz nad obszernym dokumentem i chcesz udostępnić jakiś zrobiony fragment, to też to jest możliwe. TTUU BBYYŁŁYY IINNFFOORRMMAACCJJEE OO NNAAGGRRYYWWAANNIIUU NNOOWWYYCCHH DDOOKKUUMMEENNTTÓÓWW NNAA FFTTPP ˇ Oprócz numeracji oryginału stosujemy także numerację tłumaczenia. Patrz kilka punktów wyżej na temat nagłówka pliku sgml. Numeracja ta jest niezależna od numeracji oryginału i zawsze zaczynamy od wersji 1.0 ˇ Jeśli zmieniasz wersję tłumaczenia, to zastosuj się do poniższych reguł: ˇ Jeśli są to duże poprawki/zmiany, np.: przeróbka kilku sekcji, likwidacja niektórych, dodanie nowych, to zmień wersję główną ((11..00 -->> 22..00)) ˇ Jeśli są to średnie poprawki/zmiany, np.: poprawka większej ilości błędów zmiana kilku adresów, to zmień wersję poboczną ((11..00 -->> 11..11)) ˇ Jeśli są to małe poprawki/zmiany, np.: usunięcie paru literówek, zmiana jednego/dwóch adresów, to zmień drugą cyfrę po przecinku ((11..00 -->> 11..0011)) Będzie to ułatwienie dla użytkowników, którzy będą wiedzieć czy opłaca się ściągać nową wersję czy nie. ˇ Jeśli jest to możliwe, to staraj się w miarę postępowania prac nad danym dokumentem podawać ich procentowe zaawansowanie. Odpowiedni formularz jest na WWW. TTOO OODD DDAAWWNNAA JJEESSTT PPOOBBOOŻŻNNYYMM ŻŻYYCCZZEENNIIEEMM.. ˇ Jeśli w dokumencie znajduje się odwołanie do przetłumaczonego już HOWTO, to zrób odwołanie do tego tłumaczenia a nie oryginału. Tłumaczenia na serwerze WWW znajdują się w katalogach: ˇ Html/ - HOWTO ˇ Html/mini - mini-HOWTO Nazwa pliku to: ˇ Nazwa-HOWTO.pl.html - HOWTO ˇ Nazwa.pl.html - mini-HOWTO ˇ W związku z powyższym punktem bbaarrddzzoo pprroosszzęę wszystkich tłumaczy, aby stosowali się do powyższego szablonu. ˇ Jeśli uaktualniasz swoje tłumaczenie, to bardzo proszę przyślij osobie koordynującej, czyli Bartkowi Maruszewskiego B.Maruszewski@jtz.org.pl wiadomość, że to zrobiłeś, żebym mógł umieścić nowszą wersję na WWW. Przecież nie może myśleć o wszystkim. ˇ Pytacie czasami czy możecie wstawiać własne tagi (<bf> <tt> itd.). Otóż żadnych zasad na ten temat nie wypracowaliśmy. Ja tłumaczę dokument tak jak jest i nie upiększam go, bo nie mam czasu i mi się nie chce. Wg. mnie jeśli chcesz sie pobawić - proszę bardzo. ˇ Zastanawiacie się także, czy można używać "mniej oficjalnych" słów. Otóż wg. mnie takie HOWTO jest pisane przez ludzi i dla ludzi i nie jest to żadne rządowe pismo super oficjalne itp. Już nie raz widziałem taki slang, że po kilkukrotnym przeczytaniu nie wiedziałem o co chodzi... Jednak należy pamiętać o pewnym umiarze... nie przesadzajmy :) ˇ Zdarzają sie czasami takie wyrażenia, które ciężko przetłumaczyć na polski i wychodzą z tego jakieś dziwolągi językowe albo w ogóle nie mają odpowiednika w j. polskim. W takim przypadku przetłumacz to, ale podaj dodatkowo w nawiasie wersję oryginalną wyrażenia. Stosuj to także jeśli tłumaczenie jest dwuznaczne. 11..33.. LLuuddzziiee,, cczzyyllii kkttoo ttoo rroobbii CChhwwiilloowwoo jest nas niewielu. Ci, o których wiemy (być może są tacy, którzy samotnie, w zapomnieniu zrobili już tę całą robotę, lecz my o nich nic nie wiemy) to: ˇ [mg] Maciek Grochal frytek@tichy.ch.uj.edu.pl ˇ [bm] Bartosz Maruszewski B.Maruszewski@jtz.org.pl ˇ [po] Pawko Olszewski alder@amg.com.pl ˇ [pp] Piotr Pogorzelski piotr.pogorzelski@ippt.gov.pl ˇ [pt] Piotr Tęczyński pteczyn@amu.edu.pl ˇ [zb] Ziemek Borowski ziembor@digilab.com.pl ˇ [bb] Benedict P. Barszcz poseidon@mail.ziplink.net ˇ [jc] Jakub Chmielewski yacoob@manager.ae.wroc.pl ˇ [jb] Janusz Batko janus@krakow.linux.org.pl ˇ [ps] Paweł Świerszcz vampire@aule.mdkna102.krakow.pl ˇ [jp] Jacek Pliszka Jacek.Pliszka@fuw.edu.pl ˇ [gsn] Gwidon S. Naskrent naskrent@hoth.amu.edu.pl ˇ [zb] Zbigniew von Borgosz borg@kki.net.pl ˇ [bp] Bartek Papierski bartekp@dom.vr.pl ˇ [pd] Piotr DUDA s0074@pjwstk.waw.pl ˇ [mm] Michał Malarski malarz@it.pw.edu.pl ˇ [gn] Grzegorz Nalepa nalepa@ibm.uci.agh.edu.pl Jeśli chcesz do nas dołączyć zapisz się na naszą listę, lecz pamiętaj, że jest ona przeznaczona, dla osób pprraaccuujjąąccyycchh nad tłumaczeniami, nie służy do przyglądania się, jak postępują prace. Adres listy to _j_t_z_@_i_p_p_t_._g_o_v_._p_l lub _j_t_z_@_j_t_z_._o_r_g_._p_l. Aby się na nią zapisać wyślij na adres majordomo@ippt.gov.pl list zawierający subscribe jtz Imię Nazwisko Paweł Więcek _c_o_v_e_n_@_p_w_r_._w_r_o_c_._p_l opiekuje się pakietem naszych tłumaczeń dostarczanym dla Debiana. Pakiet ten jest dostępny jako _"_u_n_s_t_a_b_l_e _d_o_c_-_l_i_n_u_x_-_p_l_" pod adresem <ftp://ftp.ists.pwr.wroc.pl/coven/debian> lub na dowolnej kopii serwera GNU/Linux Debian <ftp://ftp.debian.org>. Michał Malarski _m_a_l_a_r_z_@_i_t_._p_w_._e_d_u_._p_l stworzył pakiet tłumaczeń przeznaczonych dla RedHata. Pakiet ten dostępny jest pod adresem <ftp://srl.it.pw.edu.pl/pub/JTZ/RedHat>. 11..44.. PPiieerrwwsszzee rreezzuullttaattyy Postanowiliśmy, że przetłumaczone dokumenty będą udostępniane szerszemu gronu dopiero, kiedy będą się do tego nadawały ;-). To znaczy, że przetłumaczony dokument musi wpierw troche poczekać, zostać ponownie sprawdzony przez autora i dopiero potem może pokazać się szerszej publiczności. Chcemy jednak, abyście wiedzieli czego możecie oczekiwać w najbliższym czasie i jaki jest stopień zaawansowania prac. Czekamy również na wasze reakcje i oczekiwania. Wasze głosy mogą wpłynąć na kolejność w jakiej będą tłumaczone te dokumenty. Zajrzyj na Polską Stronę Tłumaczeń <http://www.jtz.org.pl>. Jeśli chcesz wiedzieć nad czym w tej chwili pracujemy, wyślij na adres B.Maruszewski@jtz.org.pl <mailto:B.Maruszewski@jtz.org.pl> list, który w polu SSuubbjjeecctt:: zawiera napis HOWTO-info. Otrzymasz mniej więcej taką odpowiedz: ______________________________________________________________________ From: Bartosz Maruszewski <B.Maruszewski@jtz.org.pl> Subject: Re: HOWTO-info Date: Tue, 25 Feb 1997 16:47:27 +0100 (MET) Lines: 38 ========== KTO ========== ===== CO ROBI ===== ===== CO ZROBIL ===== Ja SMB BootPrompt Kernel m. Locales m. DOS2Linux -------------------------------------------------------------------- Piotr P. META Instalation Serial ISP-HookUp NET2 LargeDisk Ethernet -------------------------------------------------------------------- Piotr T. XFree86, WWW Java-CGI -------------------------------------------------------------------- Pawko O. Sound Modules ========== SPIS ========== Howtos: BootPrompt(*), BootDisk(*), Instalation(*), Kernel(*), Modules(*), Printing(-Usage), SCSI, SMB(*), Serial(*), Sound(*), UMSDOS, ISP-HookUp(*), META(*), NET2(*), Ethernet(*) Mini-Howtos: LILO, LargeDisk(*), Colour-ls, Consoles(-Many), DOS2LINUX(*), Getty-ps, KeySetup, Keystroke, Locales(*), Quota, Swap-Space, Upgrade, X*(*), Diald, (*) - oznacza zrobione, badz w trakcie tlumaczenia m. - mini HOWTO ______________________________________________________________________ 11..55.. PPrrzzeettłłuummaacczzoonnee ddookkuummeennttyy Aktualne informacje znajdziesz na Polskiej Stronie Tłumaczeń <http://www.jtz.org.pl/>. Wszystkie przetłumaczone dokumenty (w różnych formatach) można znaleźć na naszym serwerze FTP <ftp://ftp.jtz.org.pl/> 22.. SSłłoowwnniikk Jeśli znajdziesz jakieś nowe słowo/wyrażenie, które nadaje się do słownika, albo znajdziesz lepsze określene dla któregoś słowa/wyrażenia już będącego w słowniku, to wyślij je do Bartka Maruszewskiego B.Maruszewski@jtz.org.pl. ** v3.4.6 ** acknowledgement - podziękowania (jako tytuł sekcji), wyrazy uznania actual - rzeczywisty, ostateczny, faktyczny, bieżący adapter - sterownik affect - dotyczyć, mieć negatywny wpływ na aggregate works - prace zebrane arrangement - ustawienie aspect ratio - współczynik kształtu/obrazu based - oparty na bit bucket - kosz na bity boot - załadować, wystartować system, boot diskette - dyskietka startowa boot prompt - zachęta startowa broadcasting - rozgłaszanie, nadawanie can access - ma dostęp carry out - wypełnij, wykonać, przeprowadzić chip - układ scalony command - polecenie command output - wynik/rezultat polecenia (to) crash - wywalić się, załamanie, pad/paść credits - wyrazy uznania debug - odpluskwiać derivative works - prace pochodne disable - wyłączyć disclaimer - zastrzeżenie driver - sterownik to edit - (z)modyfikowac entry - pozycja EPROM burner - programator eprom-ów expire - wygasnąć feed - zasilać, zasilanie, dostarczać figure out - stwierdzić filesystem - system plików flexibility - elastyczność for details - więcej na temat szczegółów dotyczących hack - przerobić (odnośnie jądra Linuksa) hardware - sprzęt header/include files - pliki nagłówkowe interface - interfejs introduction - wprowadzenie issue a command - wykonać xxx issue - sprawa dotycząca xxx jumper - zworka, przełącznik kill - usun (o procesie) learn about - nauczyć się, dowiedzieć się o line - wiersz maintain - opiekować się maintained - prowadzony/pielęgnowany/utrzymywany przez major - liczba główna man - podręcznik (man) map - odwzorowywać masquerading - maskowanie memory window - ramka pamięci minor - liczba poboczna mirror - kopia normal - zwykly note - zauważ, uwaga, zapamiętaj obey - podlegać, być posłusznym override -- zmienić, nadpisać pipe -- potok poll - sprawdzać, próbkować, monitorować probe - przeszukiwać, sprawdzać, wykrywać, dokonywać detekcji processed - interpretowane, przetwarzane prompt - zachęta put - umieścić to query - pytać, sprawdzać reboot - przeładowanie reflect - odzwierciedlać release - wersja, wydanie root - administrator root filesystem - główny system plików section - rozdział shadow - przesłaniać share - współdzielić shell - powłoka, interpreter shell prompt - zachęta powłoki, interpretera software - oprogramowanie spool directory - katalog zadań, katalog buforowania stream -- strumień support - obsługiwać symbolic link - dołączenie/dowiązanie/wskazanie symboliczne system call - funkcja systemowa terms of use - warunki stosowania/używania/korzystania third-party books - książki wydawnictw/autorów, nie związanych z firmą produkującą opisywaną rzecz albo książki osób trzecich total - całkowity tune - ustawić, dostroić unlike - w przeciwieństwie do, niepodobny do upgrade - odnawianie, odswieżanie, uaktualnianie usage - stosowanie using this technique - za pomocą tego sposobu, tym sposobem utility, tool - narzędzie work-around - obejści X - nazwa systemu graficznych okienek uniksa to: X X Window System X Version 11 X Window System, Version 11 X11 ***** Żadnej innej _SZCZEGÓLNIE_ *XWindows* nie przyjmuję ***** skróty od zwrotów: - według - wg - wyżej wymienione - ww. ========================================================== Wyrazy których nie tłumaczymy: firewall, bridge, host, proxy, log, stdin, stdout, locale, *roff, timeout, routing, router mieszczą się tutaj także wszelkie polecenia systemowe i nazwy programów X, emacs, *TeX, *script. =========================================================== Jak odmieniać wyrazy nietłumaczone, zaczerpnięte z j. angielskiego oraz wszelkie skróty? Wyrazy zaczerpnięte z ang. to takie jak: Linux, Unix, fax... *************** UWAGA *************** Odmiana słowa Linux: (podaję za słownikiem języka polskiego) ten Linux tego Linuksa temu Linuksowi tego Linuksa z Linuksem o Linuksie O! Linuksie. :) Żadnej innej nie przyjmuję. Jeśli znajdę w jakimś tłumaczeniu: Linuxie, Linux-ie itp, to NIE AKCEPTUJE go. Jeśli wyraz kończy się na spółgłoskę, to piszemy końcówkę polską wg rodzaju jaki dany wyraz przyjmuje w j. polskim (NIE STOSUJEMY myslnikow do oddzielenia polskiej koncowki od skrotu): np: ten firewall -- tego firewalla ten RAM -- tego RAMu W dopełniaczu (kogo? czego?) skrótu kończącego się na spółgłoskę zawsze używamy końcówki 'u': DOSu, BIOSu itd. Jeśli wyraz kończy się na samogłoskę, to dodajemy apostrof i piszemy końcówkę polską wg rodzaju jaki dany wyraz przyjmuje w j. polskim: np: ten bridge - tego bridge'a Jeśli wyraz kończy się na tzw. nieme "e", to lepiej unikać jego odmiany, np: edytor joe -- w edytorze joe, edytora joe. A nie edytorze joe'u czy edytora joe'a ... 33.. TTrroocchhęę ddaannyycchh tteecchhnniicczznnyycchh ddllaa ttłłuummaacczzyy.. Wcześniej już zostało wspomniane, że piszemy w formacie SGML. Format ten bardzo przypomina HTML więc jeśli znasz ten ostatni, to nie powinien on ci nastręczać większych trudności. Do konwersji z formatu SGML na inne formaty służy pakiet ssggmmll--ttoooollss. 33..11.. KKrróóttkkii mmiinniikkuurrss SSGGMMLL--aa.. Wielu z was chce się przyłączyć, ale pisze do mnie, że nie zna SGMLa. No i piszę do każdego litanię wszystkich zasad itp. Żeby tego nie robić postanowiłem zamieścić kilka porad jak z niego korzystać. ˇ Przede wszystkim chciałbym zauważyć, że SGML jest podobny do HTMLa jeśli chodzi o składnię - można właściwie powiedzieć, że jest taka sama. Np.: w HTMLu piszesz <I> a w SGMLu <it>, w HTMLu <B> - w SGMLu <bf> (wielkość liter oczywiście nie ma znaczenia). ˇ W SGMLu, tak samo jak w HTMLu, są pewne znaczki o znaczeniu specjalnym. Są to np.: &, <, >, ~ itp. Żeby je zapisać należy użyć specjalnej notacji. I tak odpowiednio są to: &, <, >, ˜. Zobacz punkt 3.2 w podręczniku w katalogu /usr/doc/sgmltools-xxx. ˇ Najprostszym sposobem na zorientowanie się jak powinien wyglądać plik źródłowy w SGMLu jest zajrzenie, do któregoś z już napisanych dokumentów. Ogólnie metoda jest prosta: - bierzesz nagłówek podany w drugim punkcie tego dokumentu i kopiujesz go do swojego tłumaczenia. - dalej wszystko tak samo jak w innych dokumentach SGML. ˇ Jeszcze jedna ważna uwaga, która przysparza trochę kłopotów. Jeśli chcesz między początkowym tagiem a końcowym użyć znak /<, to parser potraktuje, to jako koniec tagu. Należy wtedy stosować tagi w pełnej postaci, czyli np. <bf>tekst</bf>. Piszę to, bo można też stosować skrótową formę: <bf/tekst/. To naprawdę nie jest trudne. 33..22.. ssggmmll--ttoooollss Więcej informacji o pakiecie ssggmmll--ttoooollss można znaleźć na stronie projektu SGMLTools <http://www.sgmltools.org/> Pakiet sgml-tools wywodzi się od dawnego pakietu linuxdoc-sgml. Zmianę nazwy pakietu argumentuje się tym, że poprzednia nazwa wiązała pakiet z Linuxem, co nie było zgodne z rzeczywistością. Można go było używać również pod kontrolą innych systemów operacyjnych. Aktualnie projekt ten jest chwilowo zawieszony, więc z wszelkimi problemami musimy rodzić sobie sami. Aktualne wersje tego pakietu są dwie: ˇ 11..00..99 - ostatnia wersja pakietu wspierająca DTD lliinnuuxxddoocc. ˇ 22..00..22 - najnowsza wersja pakietu. Od wersji 2.0 nie obsługiwany jest DTD lliinnuuxxddoocc tylko DTD ddooccbbooookk. Ponieważ jesteśmy zainteresowani DTD lliinnuuxxddoocc to używamy wersji 11..00..99. Co prawda nie każę używać ci dokładnie tej wersji, ale nie jestem w stanie ci powiedzieć, czy wersja, którą używasz można łatwo przekonać do obsługi polskich tłumaczeń. 33..33.. TTeerraazz ttrroocchhęę oo kkoonnwweerrssjjii.. Jak już wspomniałem do konwersji z formatu SGML służy pakiet programów ssggmmll--ttoooollss. Programy z tego pakietu, których będziesz używał to najprawdopodobniej: ˇ ssggmmllcchheecckk - sprawdzanie poprawności dokumentu SGML ˇ ssggmmll22hhttmmll - konwersja dokumentu SGML na format HTML ˇ ssggmmll22ttxxtt - konwersja dokumentu SGML na format tekstowy ˇ ssggmmll22llaatteexx - konwersja dokumentu na formaty LaTeX / DVI / PostScript Aby wygenerować poprawne JTZ-ty musisz prawdopodobnie zmodyfikować kilka plików z pakietu _s_g_m_l_-_t_o_o_l_s. Informacje jak to zrobić znajdzesz poźniej. Do wygenerowania pięciu głównych formatów (poza SGML oczywiście) należy wykonać kolejno polecenia: ______________________________________________________________________ sgml2html -s 0 -l pl nazwa.pl.sgml sgml2txt -f -c latin nazwa.pl.sgml sgml2latex -o ps -p a4 nazwa.pl.sgml sgml2latex -o dvi -p a4 nazwa.pl.sgml sgml2latex -o tex -p a4 nazwa.pl.sgml ______________________________________________________________________ W powyższym przykładzie zmienna systemowa PPLLIIKK oznacza nazwę dokumentu poddawanego konwersji. Jeżeli często przeprowadzasz konwersję do wszystkich formatów polecam napisanie sobie podobnego skryptu. ______________________________________________________________________ #!/bin/sh sgml2html -s 0 $1.pl.sgml sgml2txt -f -l pl -c latin $1.pl.sgml sgml2latex -o ps -p a4 $1.pl.sgml sgml2latex -o dvi -p a4 $1.pl.sgml sgml2latex -o tex -p a4 $1.pl.sgml ______________________________________________________________________ Aby dokonać konwersji należy wywołać powyższy skrypt z parametrem bedącym nazwą dokumentu SGML (z pominięciem rozszerzeń .pl.sgml) Oczywiście możesz również eksperymentować z innymi opcjami, ale ten zestaw opcji wydaje się być najwłaściwszy. Opcje te oznaczają: ˇ --cc - zestaw znaków użytych w tekście - parametr istotny jedynie podczas konwersji do formatu tekstowego ˇ --ss - liczba poziomów podziału na oddzielne pliki dokumentu w formacie HTML ˇ --oo - format wyjściowy programu _s_g_m_l_2_l_a_t_e_x ˇ --pp - format papieru - istotny dla _s_g_m_l_2_l_a_t_e_x ˇ --ll - język dokumentu - istotne dla _s_g_m_l_2_h_t_m_l w przypadku podziału dokumentu na pliki 33..44.. PPoolloonniizzaaccjjaa ppaakkiieettuu ssggmmll--ttoooollss Instrukcja ta dotyczy wersji _1_._0_._9_-_2 pakietu _s_g_m_l_-_t_o_o_l_s. Informacja ta nie oznacza, że w innych wersjach należy postąpić inaczej. Sposób postępowania na pewno nie zmienił się od wersji _1_._0_._7. Sposób postępowania dla starszych wersji pakietu _s_g_m_l_-_t_o_o_l_s czy też dla pakietu _l_i_n_u_x_d_o_c_-_s_g_m_l (poprzednika pakietu _s_g_m_l_-_t_o_o_l_s) opisany jest w sekcji historycznej. Chcemy uzyskiwać poprawne dokumenty w formatach: ˇ tekstowym (_t_x_t) - nie ma żadnych problemów ˇ html-owym (_h_t_m_l) - gdy tworzymy wieolopoziomowy dokument HOWTO, chcemy aby odnośniki typu _P_o_p_r_z_e_d_n_i, _N_a_s_t_ę_p_n_y były odnośnikami w języku polskim ˇ LaTeX'owym (_t_e_x) - mamy problem z konwersją polskich liter oraz napisem Spis Treści ˇ PostScriptowym (_p_s, _d_v_i - jeżeli dla dokumentu LaTeX jest wszystko w porządku to tutaj też. Aby poradzić sobie z powyższymi problemami musimy zmodyfikować dwa pliki. Pierwszy z nich odpowiada za odnośniki w wersjach HTML dokumentów. Jest to plik /usr/lib/sgml-tools/SGMLTools/Lang.pm W pliku tym musimy dodać definicję języka polskiego, oraz odpowiednie napisy dla tej definicji. Drugi z plików jest plikiem odpowiadającym za znaczniki w generowanym pliku w formacie LaTeX. Plikiem tym jest /usr/lib/sgml-tools/dist/linuxdoc/latex2e/mapping w pliku tym modyfikujemy informację o nagłówku dokumentu LaTeX twor­ zonego podczas konwersji. Musimy zdefiniować użycie znaków wg. stan­ dardu Latin2 oraz języka polskiego. Aby było łatwiej dokonać te zmiany przygotowałem odpowiedni patch do automatycznego dokonania potrzebnych zmian. Patch ten jest dostępny w sieci <ftp://ftp.jtz.org.pl/tools>. Ponieważ niektórzy mogą mieć problem ze ściągnięciem ww. pliku jego zawartość zamieszczam też poniżej: ______________________________________________________________________ *** /usr/lib/sgml-tools/SGMLTools/org/Lang.pm Mon Mar 22 05:29:00 1999 --- /usr/lib/sgml-tools/SGMLTools/Lang.pm Tue May 18 22:44:50 1999 *************** *** 60,65 **** --- 60,66 ---- pt portuges portuguese ca catalŕ catalan it italiano italian + pl polski polish ro română romanian ); *************** *** 164,169 **** --- 165,171 ---- "pt" => "Página anterior", "ca" => "Pŕgina anterior", "it" => "Indietro", + "pl" => "Poprzednia", "ro" => "Înapoi" }, "Next" => { *************** *** 177,182 **** --- 179,185 ---- "pt" => "Página seguinte", "ca" => "Pŕgina següent", "it" => "Avanti", + "pl" => "Następna", "ro" => "Înainte" }, "Contents" => { *************** *** 190,195 **** --- 193,199 ---- "pt" => "Índice", "ca" => "Índex", "it" => "Indice", + "pl" => "Spis treści", "ro" => "Cuprins" }, "Table of Contents" => { *************** *** 203,208 **** --- 207,213 ---- "pt" => "Índice geral", "ca" => "Índex general", "it" => "Indice Generale", epackage\[latin2\]{inputenc}\n" "\\usepackage{t1enc}\n" - "\\usepackage{babel}\n" + "\\usepackage\[polish\]{babel}\n" "\\usepackage{epsfig}\n" "\\usepackage{[OPTS]}\n" "\\def\\addbibtoc{\n" @@ -39,9 +39,9 @@ "\\usepackage{linuxdoc-sgml}\n" "\\usepackage{qwertz}\n" "\\usepackage{url}\n" - "\\usepackage\[latin1\]{inputenc}\n" + "\\usepackage\[latin2\]{inputenc}\n" "\\usepackage{t1enc}\n" - "\\usepackage{babel}\n" + "\\usepackage\[polish\]{babel}\n" "\\usepackage{epsfig}\n" "\\usepackage{[OPTS]}\n" "\\def\\addbibtoc{\n" @@ -56,9 +56,9 @@ "\\usepackage{linuxdoc-sgml}\n" "\\usepackage{qwertz}\n" "\\usepackage{url}\n" - "\\usepackage\[latin1\]{inputenc}\n" + "\\usepackage\[latin2\]{inputenc}\n" "\\usepackage{t1enc}\n" - "\\usepackage{babel}\n" + "\\usepackage\[polish\]{babel}\n" "\\usepackage{epsfig}\n" "\\usepackage{[OPTS]}\n" "\\def\\title#1{\n" ______________________________________________________________________ Aby wykorzystać ten plik należy wykonać komendę: patch -p0 < sgml-tools.patch To jest wwsszzyyssttkkoo ccoo mmuussiisszz zzrroobbiićć. Powtórzę jeszcze raz: jedyne operacje jakie musisz wykonać, aby spolonizować _s_g_m_l_-_t_o_o_l_s _1_._0_9 to: ˇ Wejść w posiadanie pliku ssggmmll--ttoooollss..ppaattcchh. ˇ Wykonać polecenie ppaattcchh z odpowiednimi parametrami. ˇ _s_g_m_l_-_o_w_a_ć_, _k_o_n_w_e_r_t_o_w_a_ć_, _t_ł_u_m_a_c_z_y_ć_, _._._. _;_-_) Jeżeli ktoś jest zainteresowany co dokładnie zostało i dlaczego zmienione to zapraszam do sekcji TTeecchhnniikkaalliiaa -- hhiissttoorriiaa. 33..55.. CCoo mmaamm zzrroobbiićć jjeeśśllii cchhccęę ppoopprraawwiićć ddookkuummeenntt.. Po pierwsze wszelkie poprawki trzeba nanosić w formacie SGML. Jeśli znalazłeś literówki, to po prostu popraw je i wyślij poprawioną wersję do tłumacza. Upewnij się przedtem czy masz najnowszą wersję, bo może błędy, które poprawiasz są już poprawione w nowszej wersji. Jeśli chcesz ingerować w treść dokumentu, to postępuj wg. poniższej instrukcji: ˇ zachowaj kopię tłumaczenia ˇ nanieś poprawki, które uważasz za stosowne ˇ programem ddiiffff utwórz plik zmian wydając polecenie: ___________________________________________________________________ diff -Nu stara-wersja nowa-wersja > zmiany ___________________________________________________________________ ˇ tak utworzony plik zmiany wyślij do tłumacza 44.. TTeecchhnniikkaalliiaa -- hhiissttoorriiaa Ponieważ niektórzy korzystają ze starszych wersji oprogramowania i z różnych powodów nie chcą ich zmienić zdecydowaliśmy sie na pozostawienie starych sposobów zmuszenia do współpracy tamtego oprogramowania. 44..11.. JJaakk kkoorrzzyyssttaaćć zz ttrryybbuu ppssggmmll ppoodd XXeemmaaccsseemm?? UUWWAAGGAA!! Wraz z aktualnymi wersjami emacs'a dostarczany jest plik sgml-mode.elc odpowiedzialny za tryb SGML pod emacsem. Całkiem prosto: ˇ zainstalować pakiet linuxdoc-sgml ˇ dopisać do pliku .bashrc wiersze LINUXDOCLIB=/usr/lib/linuxdoc-sgml export LINUXDOCLIB SGML_PATH=$LINUXDOCLIB/dtd/%N.dtd:$LINUXDOCLIB/dtd/%P.dtd:$LINUXDOCLIB/dist/linuxdoc/html/%N export SGML_PATH ˇ uruchomić xemacsa i pisać! 44..22.. kkoonnwweerrssjjaa ttxxtt ii hhttmmll aa sspprraawwaa ppoollsskkaa UUWWAAGGAA!! Konwersja na formaty TXT oraz HTML dla użytkowników pakietu linuxdoc- sgml. Do konwersji pliku źródłowego SGMLa na HTML i TXT służą odpowiednio programy _s_g_m_l_2_h_t_m_l i _s_g_m_l_2_t_x_t. Wszystko co musisz pamiętać, to użycie odpowiedniej opcji dla _s_g_m_l_2_t_x_t, żeby zostawił polskie znaki w spokoju. Opcja ta, to --ll. Podczas konwersji występuje z reguły błąd _C_o_u_l_d_n_'_t _f_i_n_d _f_o_n_t _'_C_' czy jakoś tak - otóż nie ma się czym przejmować. Poprawny dokument tekstowy zostanie wygenerowany. Co do konwersji na HTML, to tutaj problemu z polskimi literami nie ma, ale trzeba pamiętać, aby użyć opcji --LL ppoolliisshh, żeby odwołania _N_e_x_t, _T_a_b_l_e _o_f _C_o_n_t_e_n_t_s i _P_r_e_v_i_o_u_s zamienić na polskie odpowiedniki. Przed konwersją załóż plik /usr/lib/linuxdoc-sgml/rep/html/polish i wpisz w nim: PrevPage: Poprzednia NextPage: Następna TOC: Spis Treści 44..33.. KKoonnwweerrssjjaa SSGGMMLL -->> LLaaTTeeXX aa sspprraawwaa ppoollsskkaa UUWWAAGGAA!! O ile dobrze pamiętam opis ten dotyczy ostatniej wersji pakietu lliinnuuxxddoocc--ssggmmll. _W _p_o_n_i_ż_s_z_y_m _t_e_k_ś_c_i_e _o_p_i_s_u_j_ę _m_o_j_e _u_d_a_n_e _p_r_ó_b_y _k_o_n_w_e_r_s_j_i _d_o_k_u_m_e_n_t_u _z _p_o_l_s_k_i_m_i _z_n_a_k_a_m_i _d_i_a_k_t_r_y_c_z_n_y_m_i _z_a_p_i_s_a_n_e_g_o _w _f_o_r_m_a_c_i_e _S_G_M_L _n_a _f_o_r_m_a_t _L_a_T_e_X _o_r_a_z _D_V_I _(_D_e_v_i_c_e _I_n_d_e_p_e_n_d_e_n_t_) _i _P_S _(_P_o_s_t_S_c_r_i_p_t_)_. 44..33..11.. LLaaTTeeXX ii LLaaTTeeXX22ee ((eeppssiilloonn)) Bezproblemowo znaki różnych alfabetów możemy używać tylko w nowym formacie LaTeXa (tzw. LaTeXu 2e), standardowo pozwalającym na pisanie z ogonkami. Aby można było używać jawnie polskich liter w LaTeXu w nagłówku dokumentu w formacie LaTeX wygenerowanego przez program sgml2latex muszą wystąpić następujące linie: ______________________________________________________________________ \usepackage{t1enc} \usepackage[latin2]{inputenc} \usepackage[polish]{babel} ______________________________________________________________________ Najważniejsza jest pierwsza z nich: ______________________________________________________________________ \usepackage{t1enc} ______________________________________________________________________ Linia ta umożliwia w ogóle pisanie z ogonkami. Kolejna linia: ______________________________________________________________________ \usepackage[latin2]{inputenc} ______________________________________________________________________ umożliwia zapisanie polskich liter w standardzie ISO Latin 2 (ISO 8859-2) a nie jakimiś przedziwnymi zaklęciami magicznymi LaTeXa. Trzecia z nich, a mianowicie: ______________________________________________________________________ \usepackage[polish]{babel} ______________________________________________________________________ daje nam jedynie dodakowy bajer: słowa w języku polskim w razie potrzeby zostaną poprawnie podzielone (zgodnie z regułami języka polskiego oczywiście). Niestety program sgml2latex, generujący za każdym razem najpierw plik w formacie LaTeX, a dopiero później korzystając z tego pliku generuje pliki w formatach DVI i/lub PS, nie generuje odpowiednich linii w tym pliku. 44..33..22.. CCoo nnaamm ggeenneerruujjee ssggmmll22llaatteexx ?? Program sgml2latex umożliwia wygenerowanie pliku w formacie LaTeX lub LaTeX2e (z opcją -2e). Wszystko byłoby fajnie gdyby ten plik był poprawny dla nas (czyli zawierał linie wymienione powyżej). Niesety tak nie jest. Żeby to poprawić wystarczy jedynie trochę zmodyfikować plik /usr/lib/linuxdoc-sgml/rep/latex2e/mapping w którym jest opisany sposób konwersji pliku SGML do formatu LaTeX2e. W pliku tym we fragmencie dotyczącym konwersji tagu <article> zamiast linii ______________________________________________________________________ "\\usepackage\[latin1\]{inputenc}\n" ______________________________________________________________________ należy wstawić trzy następujące linie: ______________________________________________________________________ "\\usepackage{t1enc}\n" "\\usepackage\[latin2\]{inputenc}\n" "\\usepackage\[polish\]{babel}\n" ______________________________________________________________________ Pierwsze dwie z tych linii muszą znaleźć się koniecznie, natomiast trzecia wedle upodobania. Muszę jednak dodać, że w wypadku dodania trzeciej z tych linii konieczne jest odpowiednie skonfigurowanie programu dvips (przynajmniej ja to zrobiłem, w każdym razie korzystając z programu texconfig dodałem polski sposób dzielenia wyrazów. Jeżeli korzystając z formatu SGML tworzymy także inne dokumenty można w taki sam sposób dokonać zmian w sekcjach dotyczących konwersji tagów <report>, <book> oraz <notes>. Te zmiany nie są jednak konieczne gdy pracujemy wyłącznie z dokumentami HOWTO. 44..33..33.. PPrrooggrraamm ssggmmll22llaatteexx ii pplliikkii DDVVII oorraazz PPSS Już mamy poprawne generowanie plików w formacie LaTeX2e. Teraz jeszcze musimy posiadać LaTeXa w wersji 2e. Jeżeli mamy zainstalowany pakiet tetex (chyba jeden z popularniejszych w dystrybucjach Linuxa) to mamy odpowiedni program. Ponieważ program sgml2latex oczekuje, że program LaTeX2e wywołujemy przez latex2e to musimy mu taki sposób wywołania tego programu zapewnić. Najprościej jest w katalogu /usr/bin utworzyć skrót o nazwie latex2e do programu latex, czyli: ______________________________________________________________________ cd /usr/bin ln -s latex latex2e ______________________________________________________________________ 44..33..44.. KKoonnwweerrssjjaa wwłłaaśścciiwwaa,, cczzyyllii jjaakk uuzzyysskkaaćć DDVVII lluubb PPSS Po dokonaniu wyżej wymienionych modyfikacji żadne zmiany w dokumentzch SGML nie są już konieczne. Wystarczą jedynie odpowiednie opcje programu sgml2latex. Należy pamiętać o użyciu opcji -2e aby program generował pliki w formacie LaTeX2e a nie w starszym (LaTeX). Aby uzyskać wersję w formacie DVI używamy komendy: sgml2latex -2e -a -d nasz_plik.sgml Analogicznie możemy wygenerować pliki w formacie PS: sgml2latex -2e -a -p nasz_plik.sgml 44..33..55.. UUwwaaggii Rozwiązanie jest w paru miejscach trochę toporne, ale skuteczne. Osobiście były to moje pierwsze kroki w LaTeXu, więc opis do czynności, które należy wykonać może być trochę nieodpowiedni. Wszelkie informacje o LaTeXu jakie potrzebowałem do uzyskania satysfakcjonujących mnie wyników uzyskałem z Polskiej Strony Ogonkowej. 55.. OOdd aauuttoorróóww Wszelkie uwagi do treści tego dokument będą oczywiście mile widziane. Gwoli wyjaśnienia dodamy tylko, że osobą koordynująca całością prac jest tylko i wyłącznie Bartosz Maruszewski B.Maruszewski@jtz.org.pl. Wszelkie uwagi dotyczące sekcji PPrroojjeekktt JJTTZZ oraz SSłłoowwnniikk należy kierować więc wyłącznie do niego. Natomiast jeżeli będziesz miał jakieś problemy od strony technicznej z konwersją dokumentów z formatu SGML, czy też uwagi dotyczące sekcji TTeecchhnniikkaalliiaa zgłoś się do Michała Malarskiego malarz@it.pw.edu.pl �������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Kernel-HOWTO.pl.txt����������������������������������������������������0100664�0001750�0001750�00000204355�06753376740�017714� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Opis jądra Linux-a, jego instalacji itp. Autor: Brian Ward, bri@cs.uchicago.edu v1.0, 5 Czerwca 1999 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v3.0, 7 Sierpnia 1999 Dokument ten jest szczegółowym przewodnikiem do konfiguracji, kompi­ lacji i odnawiania jądra. Zawarte są tutaj także sposoby rozwiązywa­ nia problemów związanych z jądrem dla systemów na procesorach rodziny ix86. Został napisany w standardzie ISO-8859-2. Oryginał tego doku­ mentu znajduje się pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO. Nowsza wersja zawiera uaktualnione wskazania na katalog zawierający jądra na ftp.icm.edu.pl ______________________________________________________________________ Spis treści 1. Wprowadzenie. 1.1 Przeczytaj to najpierw! (Nie żartuję) 1.2 Słowo na temat wyglądu. 2. Ważne pytania i odpowiedzi na nie. 2.1 Co to jądro w ogóle robi? 2.2 Dlaczego miałbym chcieć odnowić swoje jądro? 2.3 Jaki sprzęt obsługują nowsze wersje jądra? 2.4 Jakiej wersji gcc i libc potrzebuję? 2.5 Co to jest ładowalny moduł? 2.6 Ile potrzebuję miejsca na dysku? 2.7 Jak długo zajmuje kompilacja? 3. Jak właściwie skonfigurować to jądro? 3.1 Zdobywanie źródła. 3.2 Rozpakowywanie źródła. 3.3 Konfiguracja jądra. 3.3.1 Kernel math emulation (Processor type and features) 3.3.2 Enhanced (MFM/RLL) disk and IDE disk/cdrom support (Block Devices). 3.3.3 Networking support (General Setup). 3.3.4 System V IPC (General Setup). 3.3.5 Processor family (Processor type and features). (w starszych wersjach: Use -m486 flag for 486-specific optimizations) 3.3.6 SCSI support. 3.3.7 Network device support. 3.3.8 Filesystems. 3.3.8.1 Ale ja nie wiem jakiego systemu plików potrzebuję! 3.3.9 Character devices. 3.3.10 Sound. 3.3.11 Inne opcje konfiguracji. 3.3.12 Kernel hacking. 3.4 I co teraz? (Makefile) 4. Kompilacja jądra. 4.1 Czyszczenie i zależności. 4.2 Kompilacja główna. 4.3 Inne parametry dla "make" przy kompilowaniu jądra. 4.4 Instalacja jądra. 5. Łatanie jądra (patchowanie). 5.1 Zakładanie łaty. 5.2 Jeśli coś pójdzie nie tak. 5.3 Pozbywanie się plików ".orig". 5.4 Inne łaty. 6. Pakiety dodatkowe. 6.1 kbd 6.2 util-linux 6.3 hdparm 6.4 gpm 7. Niektóre pułapki. 7.1 make clean 7.2 Wielkie albo wolne jądro. 7.3 Port równoległy nie działa/moja drukarka nie działa. 7.4 Jądro się nie kompiluje. 7.5 Nowa wersja jądra nie chce się załadować. 7.6 Zapomniałeś uruchomić lilo, albo system się w ogóle nie ładuje. 7.7 Pisze mi "warning: bdflush not running". 7.8 Nie mogę zmusić mojego CD-ROM-u IDE/ATAPI do współpracy. 7.9 Pisze coś o przestarzałym rutingu. 7.10 Firewall mi nie działa w wersji 1.2.0 7.11 "Not a compressed kernel Image file". 7.12 Problemy z konsolą po odnowieniu do wersji 1.3.x. 7.13 Nie mogę skompilować różnych rzeczy po odnowieniu jądra. 7.14 Zwiększanie limitów. 8. Uwaga na temat uaktualnienia do wersji 2.0.x i 2.2.x. 9. Moduły. 9.1 Instalacja narzędzi modułowych. 9.2 Moduły dystrybuowane z jądrem. 10. Sztuczki i wskazówki. 10.1 Przekierowywanie wyjścia z poleceń make i patch. 10.2 Instalacja warunkowa jądra. 10.3 Odnowienia jądra. 11. Inne dokumenty HOWTO, które mogą się przydać to: 12. Różności 12.1 Od autora. 12.2 Co jest jeszcze do zrobienia. 12.3 Oto ci, którzy się przyczynili do powstania tego HOWTO. 12.4 Prawa autorskie, licencja i takie inne. 12.5 Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Czy powinieneś to czytać? Hmm... zobaczmy czy masz następujące problemy: ˇ "Ten wredny pakiet mówi, że potrzebuje jądra w wersji 2.8.193 a ja ciągle mam 1.0.9!" ˇ W jednym z nowszych wersji jądra jest nowy sterownik, który po prostu MUSISZ mieć. ˇ W ogóle nie masz pojęcia jak skompilować jądro ˇ "Czy to w README to _n_a_p_r_a_w_d_ę wszystko?" ˇ Usiadłeś, spróbowałeś i nie wyszło ˇ Potrzebujesz czegoś, co mógłbyś dać tym wszystkim, którzy ciągle cię proszą żebys im zainstalował jądro. 11..11.. PPrrzzeecczzyyttaajj ttoo nnaajjppiieerrww!! ((NNiiee żżaarrttuujjęę)) Niektóre z przykładów zawartych tutaj zakładają, że masz zainstalowane takie programy jak: GNU tar, find i xargs. Są one właściwie standardowe; nie powinno być z tym problemów. Zakłada się także, że znasz strukturę twojego systemu plików. Jeśli nie znasz to koniecznie trzymaj w ręku wydruk tego co pojawia się na ekranie po poleceniu mount, albo wydruk zawartości pliku /etc/fstab jeśli umiesz go przeczytać. Informacja ta jest ważna, i nie zmieni się dopóki nie zmienisz układu partycji na twoim dysku. Najnowszą wersją jądra, dostępną podczas pisania tego dokumentu, była wersja 2.2.9. To znaczy, że wszystko w tym dokumencie odnosi się do tej właśnie wersji. Chociaż staram się napisać ten dokument tak niezależnym jak się tylko da, jądro jest ciągle rozwijane, więc jeśli dostaniesz nowszą wersję, nieuniknionym jest, że będą jakieś różnice. Ale to wciąż nie powinno stanowić dużego problemu, co najwyżej mogą wystąpić jakieś drobne różnice. Są dwie ogólne wersje źródeł jądra Linux-a, stabilne i testowe. Stabilne wersje zaczynają się od wersji 1.0.x i są numerowane liczbami parzystymi (chodzi o liczbę drugą); 1.0.x, 1.2.x, 2.0.x jak również 2.2.x. Wersje te są uważane za najbardziej stabilne, wolne od dziur i błędów podczas ich dystrybucji. Jądra testowe ( 2.1.x, 2.3.x) są jądrami przeznaczonymi dla tych, którzy chcą je testować, wprowadzać jakieś zmiany, może nawet współpracować przy tworzeniu go. W wersjach tych może byc pełno błędów, mogą się zawieszać chociaż to wcale nie jest regułą i niekoniecznie musi się dziać. Jakby co, to zostałeś ostrzeżony. 11..22.. SSłłoowwoo nnaa tteemmaatt wwyygglląądduu.. Tekst, który tak wygląda jest albo czymś co pojawi się na ekranie, nazwą pliku, albo czymś co może być bezpośrednio wpisane z klawiatury (np. polecenie, czy jego opcje). Jeśli czytasz ten dokument jako zwykły plik tekstowy to tekst ten niczym się nie różni. 22.. WWaażżnnee ppyyttaanniiaa ii ooddppoowwiieeddzzii nnaa nniiee.. 22..11.. CCoo ttoo jjąąddrroo ww ooggóóllee rroobbii?? Jądro w systemach typu Unix odgrywa rolę pośrednika między twoimi programami, a twoim sprzętem. Najpierw zajmuje się zarządzaniem pamięci dla wszystkich uruchomionych programów (procesów), i dba o to, aby wszystkie one dostały równą ilość czasu procesora. (albo nierówną jeśli tak zażądasz). Dodatkowo, posiada miły interfejs dla programów chcących "rozmawiać" z twoim sprzętem. Jądro spełnia oczywiście o wiele więcej funkcji, ale to są najważniejsze, które należy znać. 22..22.. DDllaacczzeeggoo mmiiaałłbbyymm cchhcciieećć ooddnnoowwiićć sswwoojjee jjąąddrroo?? Nowsze jądra z reguły mają wiekszą ilość sterowników, czyli mogą obsłużyć większą ilość urządzeń, mogą mieć ulepszone algorytmy zarządzania procesami, mogą działać szybciej niż starsze wersje, mogą być bardziej stabilne, mają także wiele poprawek błędów, które zdarzyły się w wersjach wcześniejszych. Większość ludzi odnawia swoje jądra ponieważ chcą większej ilości sterowników i naprawionych błędów. 22..33.. JJaakkii sspprrzzęętt oobbssłłuugguujjąą nnoowwsszzee wweerrssjjee jjąąddrraa?? Przeczytaj Hardware-HOWTO. Możesz także zajrzeć do pliku config.in w źródłach jądra. Albo po prostu dowiedzieć się samemu jak napiszesz make config. W poleceniu tym znajdą się wszystkie obsługiwane przez dane jądro urządzenie. Ale nie będą to wszystkie urządzenia, które obsługuje Linux. Wiele popularnych sterowników (jak np. sterownik do PCMCIA i niektóre sterowniki do taśm) są rozprowadzane osobno jako ładowalne moduły. 22..44.. JJaakkiieejj wweerrssjjii ggcccc ii lliibbcc ppoottrrzzeebbuujjęę?? Aby zobaczyć jaką masz wersję napisz gcc -v. Linus zaleca zawsze w pliku README wersję gcc, która powinna być użyta do kompilacji danego jądra. Jeśli nie masz tej wersji, dokumentacja w zalecanej wersji gcc powinna powiedzieć ci czy musisz odnowić libc. Nie jest to trudne, ale ważne jest, aby postępować zgodnie ze wskazówkami. 22..55.. CCoo ttoo jjeesstt łłaaddoowwaallnnyy mmoodduułł?? Są to części jądra, które nie są zawarte bezpośrednio w nim. Kompiluje się je osobno i można je umieścić a następnie usunąć z uruchomionego jądra prawie zawsze. Z powodu tej elastyczności jest to teraz preferowana metoda pisania niektórych fragmentów jądra. Wiele popularnych sterowników urządzeń to ładowalne moduły. 22..66.. IIllee ppoottrrzzeebbuujjęę mmiieejjssccaa nnaa ddyysskkuu?? To zależy od twojej konkretnej konfiguracji. Skompresowane źródła zajmują mniej więcej 14 MB. Po rozkompresowaniu, skonfigurowaniu i kompilacji zajmuje kolejne 67 MB. 22..77.. JJaakk ddłłuuggoo zzaajjmmuujjee kkoommppiillaaccjjaa?? Na nowszych maszynach zabiera to NAPRAWDĘ mniej czasu niż na starych. Np. na AMD K6-2/300 z szybkim dyskiem kompilacja wersji 2.2.x może zająć około 4 minut podczas gdy kompilacja tego samego jądra na starym Pentium, 486 czy 386 może trwać nawet godziny, czy dni ... Jeśli to cię martwi, a masz w pobliżu szybszy komputer, to skompiluj jądra na nim (zakładając, że ustawisz poprawne parametry, że twoje narzędzia systemowe są w odpowiednich wersjach itd), a potem przesnieś skompilowane jądro (obraz) na wolniejszy komputer. 33.. JJaakk wwłłaaśścciiwwiiee sskkoonnffiigguurroowwaaćć ttoo jjąąddrroo?? 33..11.. ZZddoobbyywwaanniiee źźrróóddłłaa.. Źródła możesz sciągnąć np. z ftp.kernel.org:/pub/linux/kernel - jest to główny serwer dla jądra Linux-a, albo z jakiejś bliższej ci kopii tego serwera. W Polsce najlepszym miejscem jest ftp.icm.edu.pl/pub/Linux/kernel. Z reguły nazwa jądra to linux- x.y.z.tar.gz, gdzie x.y.z jest numerem wersji. Tak jak już wspomniałem, wersje z nieparzystą drugą liczbą to wersje rozwojowe i mogą być niestabilne. Obok wersji .tar.gz są jeszcze wersje .bz2, które są mniejsze i zabierają mniej czasu do ściągnięcia. Najlepiej używać adresu ftp.xx.kernel.org, gdzie xx to kod twojego kraju. Np. ftp.pl.kernel.org dla Polski. Jeśli szukasz jakichś ogólnych informacji o Linux-ie, to zajrzyj pod adres www.linux.org <http://www.linux.org>. W Polsce także jest Polska Grupa Użytkowników Linux-a. 33..22.. RRoozzppaakkoowwyywwaanniiee źźrróóddłłaa.. Zaloguj się jako root albo użyj polecenia su i zmień katalog na /usr/src cd /usr/src. Jeśli zainstalowałeś źródła do jądra podczas instalacji Linux-a w katalogu tym znajdziesz dołączenie symboliczne linux, które będzie wskazywało na katalog linux-x.y.z ze źródłami, które wtedy zainstalowałeś. Jeśli chcesz zachować stare źródła to usuń dołączenie linux poleceniem rm linux. Jeśli takiego dołączenia nie ma, a jest katalog linux, to (jeśli chcesz zachować źródła starej wersji jądra) zmień nazwę linux na linux-x.y.z, gdzie x.y.z jest wersją tych źródeł. (zajrzyj do pliku linux/Makefile - w pierwszych trzech linijkach znajdziesz wersję źródeł znajdujących się w tym katalogu). Jeśli chcesz możesz skasować cały katalog linux i pozbyć się starych źródeł. W każdym razie upewnij się, że nie ma katlogu linux przed rozpakowanie źródeł. Teraz w katalogu /usr/src rozpakuj źródła poleceniem tar zxpvf linux- x.y.z.tar.gz, jeśli na końcu nazwy pliku ze źródłami nie ma .gz to użyj polecenia tar xpvf linux-x.y.z. Zawartość archiwum wyświetli się na ekranie. Kiedy rozpakowywanie się skończy pojawi się nowy katalog linux. Dobrym pomysłem byłoby w tym momencie zmienić jego nazwę na linux-x.y.z i zrobić symboliczne dołączenie do tego katalogu o nazwie linux. Aby to zrobić użyj polecenia mv linux linux-x.y.z; ln -s linux- x.y.z linux. Teraz zmień bieżący katalog na linux i przejrzyj plik README. Znajdziesz tam sekcję o nazwie INSTALLING the kernel. Przeczytaj ją uważnie i wypełnij wszystkie polecenia, o których tam mowa. Jeśli ściągnąłeś wersję .bz2 i masz program bzip2 (na jego temat można przeczytać pod adresem www.muraroa.demon.co.uk/), to zrób tak: bzcat2 linux-x.y.z.tar.bz2 | tar xvf - 33..33.. KKoonnffiigguurraaccjjaa jjąąddrraa.. UWAGA: Niektóre z uwag zawartych tutaj są podobne do tych z pliku Linusa README. Polecenie make config wydane w katalogu /usr/src/linux uruchamia skrypt konfiguracyjny, który zadaje ci wiele pytań. Wymaga on zainstalowanego shella, więc sprawdź czy go masz. (/bin/bash, /bin/sh lub $BASH) W wersjach 2.0.x i nowszych istnieją jeszcze dwa sposoby na konfigurację: make menuconfig jak sama nazwa wskazuje jest to konfiguracja za pomocą menu tekstowego. Można też wydać polecenie make xconfig co spowoduje uruchomienie miłej konfiguracji pod Xwindow. Pierwszy sposób wymaga zainstalowanej biblioteki (n)curses. Ta druga wymaga zainstalowanej biblioteki Tcl/Tk. Obie są dostarczane wraz ze standardowymi dystrybucjami. Te sposoby mają podstawową zaletę: jeśli się pomylisz, to łatwo jest wrócić i poprawić błąd. Można teraz odpowiadać na kolejne pytania ukazujące się na ekranie. Odpowiada się zwykle literami "y" - tak i "n" - nie. Przy sterownikach jest jeszcze dodatkowa opcja "m" - oznacza skonfigurowanie go jako ładowalny moduł. Bardziej komicznym sposobem wyjaśnienia tej litery jest "może". Niektóre z bardziej oczywistych czy nie-krytycznych opcji nie zostały tutaj opisane; zobacz w sekcji "Inne opcje konfiguracji." W make menuconfig spacją zaznacza się daną opcję. W wersjach 2.0.x i nowszych jest _p_o_l_e_c_e_n_i_e "?", która umożliwia wyświetlenie krótkiej pomocy na temat bieżącej opcji. Informacja ta jest prawdopodobnie najświeższa. Oto lista ważniejszych opcji, do jakiej hierarchii należą i krótki opis. 33..33..11.. KKeerrnneell mmaatthh eemmuullaattiioonn ((PPrroocceessssoorr ttyyppee aanndd ffeeaattuurreess)) Pytanie to dotyczy emulacji koprocesora przez jądro. Jeśli nie masz koprocesora matematycznego (masz czysty 386 albo 486SX), musisz tu odpowiedzieć "y". Jeśli masz koprocesor a odpowiesz "y", nie martw się -- koprocesor będzie użyty, a emulacja ignorowana. W połowie przypadków w tej chwili odpowiedzią będzie nie, ale nie martw się jeśli przypadkowo odpowiesz tak; jeśli nie trzeba, to nie będzie to użyte. 33..33..22.. EEnnhhaanncceedd ((MMFFMM//RRLLLL)) ddiisskk aanndd IIDDEE ddiisskk//ccddrroomm ssuuppppoorrtt ((BBlloocckk DDeevviicceess)).. Przypuszczalnie potrzebujesz tej obsługi. Opcja ta oznacza, że jądro będzie obsługiwać standardowe dyski do komputerów PC, które są w posiadaniu większości ludzi. Sterownik ten nie zawiera obsługi dla dysków SCSI, pytanie o to będzie później w konfiguracji. Zostaniesz zapytany następnie o sterowniki "old disk-only" i "new IDE". Wybierz jeden z nich; główna różnica pomiędzy nimi to taka, że stary sterownik obsługuje tylko dwa dyski na pojedynczym interfejsie, a nowy obsługuje drugi interfejs i napędy IDE/ATAPI CD-ROM. Nowy sterownik jest o około 4 kB większy od starego i ma być lepszy. To znaczy, że pomijając mniejszą ilość błędów może działać bardziej wydajnie, szczególnie jeśli masz dysk typu EIDE. 33..33..33.. NNeettwwoorrkkiinngg ssuuppppoorrtt ((GGeenneerraall SSeettuupp)).. Ogólnie powinieneś odpowiedzieć "y" jeśli twój komputer jest w sieci takiej jak Internet, albo jeśli chcesz używać protokołów SLIP czy PPP, aby mieć dostęp do Internetu. Aczkolwiek wiele pakietów (np. Xwindows) wymaga obsługi sieci nawet jeśli twój komputer nie jest podłączony do żadnej sieci; powinieneś tu odpowiedzieć "y". Później, zostaniesz zapytany czy chcesz obsługę protokołu TCP/IP; znowu, odpowiedz "y" jeśli nie jesteś absolutnie pewien. 33..33..44.. SSyysstteemm VV IIPPCC ((GGeenneerraall SSeettuupp)).. Jedną z najlepszych definicji IPC (InterProcess Communication - Komunikacja Pomiędzy Procesami) znajduje się w glosariuszu w książce o Perlu. Nic więc dziwnego, że niektórzy programiści piszący w Perlu wykorzystują go do komunikacji między procesami, tak samo jak wiele innych pakietów (DOOM - z tych najbardziej znanych ;) ), więc odpowiedź "n" nie jest mądrym wyborem, o ile wiesz dokładnie co robisz. 33..33..55.. ((ww ssttaarrsszzyycchh wweerrssjjaacchh:: UUssee --mm448866 ffllaagg ffoorr 448866--ssppeecciiffiicc ooppttii­­ mmiizzaattiioonnss)) PPrroocceessssoorr ffaammiillyy ((PPrroocceessssoorr ttyyppee aanndd ffeeaattuurreess)).. Tradycyjnie, to wkompilowywało pewne optymalizacje dla konkretnego procesora; jądra działały dobrze także na inncyh procesoarch, ale były one troche większe. W nowszych wersjach się już tego nie stosuje i powinieneś odpowiedzieć na jaki procesor rzeczywiście kompilujesz jądro. Jądro skompilowane na 386 będzie działać na wszystkich procesorach. 33..33..66.. SSCCSSII ssuuppppoorrtt.. Jeśli masz urządzenia SCSI odpowiedz "y". Zostaniesz następnie zapytany o dalsze informacje, jak np.: obsługa CD-ROM-u, dysków i twojego adaptera. Zajrzyj do SCSI-HOWTO po więcej szczegółów. 33..33..77.. NNeettwwoorrkk ddeevviiccee ssuuppppoorrtt.. Jeśli masz kartę sieciową, albo chciałbyś używać protokołów SLIP, PPP, albo kontrolera portu równoległego aby połączyć się z Internetem odpowiedz "y". Konfigurator spyta cię następnie o typ karty i rodzaj protokołu. 33..33..88.. FFiilleessyysstteemmss.. Skrypt konfiguracyjny pyta cię następnie o to, jakie systemy plików chcesz obsługiwać: Standard (minix) - Nowsze dystrybucje nie tworzą tego systemu plików, a wielu ludzi go nie używa, ale jednak użycie go mogłoby być dobrym pomysłem, ponieważ przydaje się on do odczytu dyskietek, dla których system ten jest mniej bolesny niż ext2. Second extended - To jest standardowy system plików Linuxa. Prawie na pewno masz jeden z nich i musisz odpowiedzieć y. msdos - Jeśli chcesz używać swej partycji dos-owej, albo montować dyskietki sformatowane pod ten system, odpowiedz "y". Dostępne są jeszcze różne inne systemy plików z innych systemów operacyjnych. /proc - (Pomysł jak mniemam z laboratorium Bella). Na dysku nie tworzy się systemu plików proc. To jest system plików, który służy do porozumiewania się z jądrem i procesami. Wiele programów wyświetlających procesy, jak np. ps używa tego systemu plików. Spróbuj czasami wykonać polecenie cat /proc/meminfo albo cat /proc/devices. Niektóre powłoki (w szczególności rc) używają /proc/self/fd (znane jako /dev/fd na innych systemach) do funkcji I/O. Powinieneś prawie na pewno odpowiedzieć tutaj "y". Wiele ważnych narzędzi do Linux-a zależy od tego systemu plików. NFS - Jeśli twój komputer jest w sieci i chcesz używać systemów plików, które znajdują się na innych systemach z NFS, odpowiedz "y". ISO9660 - Ten system plików jest na przeważającej ilości CD-ROM-ów. Jeśli więc chcesz używać CD-ROM-u odpowiedz "y". 33..33..88..11.. AAllee jjaa nniiee wwiieemm jjaakkiieeggoo ssyysstteemmuu pplliikkóóww ppoottrrzzeebbuujjęę!! No dobra, napisz mount. Powinno się wyświetlić coś jak: blah# mount /dev/hda1 on / type ext2 (defaults) /dev/hda3 on /usr type ext2 (defaults) none on /proc type proc (defaults) /dev/fd0 on /mnt type msdos (defaults) Spójrz na każdą linijkę; słowo obok type jest typem systemu plików. W tym przypadku / i /usr są typu _s_e_c_o_n_d _e_x_t_e_n_d_e_d, używany jest także _p_r_o_c i jest także zamontowana dyskietka z systemem plików msdos (tfu!). Możesz spróbować też cat /proc/filesystems jeśli masz system _p_r_o_c. Wyświetli ci to systemy plików wkompilowane w aktulanie używane jądro. Konfiguracja rzadko używanych i nie krytycznych systemów plików może powodować niepotrzebne powiększanie się jądra; poczytaj sekcję o modułach jak tego uniknąć i sekcję "Pułapki", aby dowiedzieć się dlaczego powiększające się jądro nie jest pożądane. 33..33..99.. CChhaarraacctteerr ddeevviicceess.. Tutaj dołączasz sterowniki dla drukarki (równoległej, znaczy się), myszy szeregowej, myszy PS/2 (wiele Notebooków używa protokołu PS/2 dla swoich wbudowanych myszy), niektóre sterowniki do taśm, i inne tego typu "znakowe" urządzenia. Odpowiedz "y" kiedy znajdziesz urządzenie, którego używasz. UWAGA: gpm to program, który pozwala na użycie myszy poza Xwindow i na kopiowanie tekstu pomiędzy wirtualnymi konsolami. Jest to całkiem przyjemne jeśli masz zwykłą myszkę szeregową, ponieważ koegzystuje ona z Xwindows, ale musisz uciekać się do specjalnych sztuczek dla innych. 33..33..1100.. SSoouunndd.. Jeśli czujesz wielką potrzebę usłyszenia dźwięków wydobywających się z tej maszynerii to odpowiedz "y" i napisz wszystko co wiesz na temat szczegółów twojej karty dźwiękowej i skompiluje sterownik. (Uwaga o konfiguracji kart dźwiękowych: jeśli zapyta cię czy chcesz zainstalować pełną wersję sterownika, możesz odpowiedzieć "n" i zaoszczędzić trochę pamięci wybierając tylko to co jest ci potrzebne.) Jeśli myślisz poważnie o karcie dźwiękowej, to zajrzyj na dwie strony darmowych sterowników: ˇ www.linux.org.uk/OSS/ ˇ www.opensound.com/ 33..33..1111.. IInnnnee ooppccjjee kkoonnffiigguurraaccjjii.. Nie wszystkie opcje konfiguracyjne są tu wymienione ponieważ zmieniają się zbyt często lub są oczywiste (na przykład: obsługa 3Com 3C509). Jest całkiem spora lista wszystkich opcji wraz ze sposobem umieszczenia jej w skrypcie Configure. Zajmuje się tą listą Axel Boldt (boldt@math.ucsb.edu). Można go także zobaczyć jako jeden duży plik w dystrybucji jądra Documentation/Configure.help od wersji 2.0. [Od tłumacza] Plik ten dla chyba dwóch wersji jądra jest przetłumaczony na język Polski. Zajrzyj pod adres www.jtz.org.pl/inne- polskie.html 33..33..1122.. KKeerrnneell hhaacckkiinngg.. Wzięte z pliku README napisanego przez Linusa: opcja "kernel hacking" daje w rezultacie większe i wolniejsze jądro, może nawet uczynić je mniej stabilnym, przez konfigurowanie niektórych procedur, tak aby aktywnie próbowały łamać złe algorytmy i żeby można było znaleźć problemy jądra. (kmalloc()). Tak więc powinieneś odpowiedzieć tutaj "n" jeśli chcesz mieć normalnie działające i stabilne jądro. 33..44.. II ccoo tteerraazz?? ((MMaakkeeffiillee)) Jak już skończysz konfigurację pojawi się na ekranie wiadomość, że jądro zostało skonfigurowane i że należy sprawdzić top-level Makefile dla dodatkowej konfiguracji. Ten top-level Makefile to plik o nazwie Makefile w katalogu /usr/src/linux. Zajrzyj tam. Przypuszczalnie nie będziesz tam nic zmieniał, ale spojrzeć nie boli :). Jak już zainstalujesz nowe jądro możesz zmienić jego opcje przy pomocy narzędzia rdev. Jeśli czujesz się zagubiony patrząc na ten plik, to nie przejmuj się nim. 44.. KKoommppiillaaccjjaa jjąąddrraa.. 44..11.. CCzzyysszzcczzeenniiee ii zzaalleeżżnnoośśccii.. Kiedy skrypt konfiguracyjny się skończy każe ci napisać make dep i (przypuszczalnie) make clean. Tak więc zaczynamy od make dep. Jest to pewne zabezpieczenie się, które sprawdza różne zależności, jak na przykład: czy pliki nagłówkowe są na swoich miejscach. Nie zajmuje to wiele czasu, no chyba, że twój komputer jest naprawdę wolny. W starszych wersjach powinieneś jeszcze wydać polecenie make clean. To usuwa pozostałości po starej kompilacji jądra (pliki objektowe itp). NNiiee zzaappoommnniijj tego kroku !!! 44..22.. KKoommppiillaaccjjaa ggłłóówwnnaa.. Po czyszczeniu i sprawdzeniu zależności możesz wpisać make bzImage lub make bzdisk (to jest ta część, która zabiera tyle czasu). make bzImage skompiluje jądro i zostawi je w pliku /usr/src/linux/arch/i386/boot/bzImage wśród innych rzeczy. To jest nowe skompresowane jądro. make bzdisk robi to samo, z tą różnicą, że umieszcza plik bzImage na dyskietce w stacji A:, którą mam nadzieję włożysz na czas do stacji :). (ten czas to sam koniec kompilacji, ale na wszelki wypadek radzę włożyć od razu, bo potem można zapomnieć) make bzdisk to dobry sposób na testowanie nowego jądra; jeśli coś pójdzie nie tak, po prostu wyjmujesz dyskietkę ze stacji, resetujesz i po krzyku. Może to być także pomocne jeśli przypadkowo usuniesz jądro z dysku. (radzę uważać na to co się robi w katalogu głównym a szczególnie w katalogu /boot). Możesz jej także użyć do instalacji innych systemów, ponieważ wystarczy przegrać zawartość tej dyskietki na inną. Wszystkie, nawet te w połowie sensowne, jądra są skompresowane, z powodu literek "bz" na początku. Skompresowane jądro odkompresowuje się automatycznie w czasie wykonywania. W starszych jądrach nie ma opcji bzImage. Było to po prostu zImage. Opcja ta jest wciąż dostępna, jednak biorąc pod uwagę obecne rozmiary jądra nie poleca się tego sposobu kompresji. 44..33.. IInnnnee ppaarraammeettrryy ddllaa ""mmaakkee"" pprrzzyy kkoommppiilloowwaanniiuu jjąąddrraa.. make mrproper spowoduje dokładniejsze wyczyszczenie. Czasem jest to potrzebne; możesz to robić przy instalacji każdej łaty (patch). make mrproper skasuje także twój plik z bieżącą konfiguracją, więc możesz sobie zrobić kopię tego pliku (.config). make oldconfig spróbuje skonfigurować jądro na podstawie starego pliku konfiguracyjnego; przejdzie za ciebie przez proces konfiguracji (make config). Jeśli jeszcze nigdy przedtem nie kompilowałeś jądra lub nie masz starego pliku konfiguracyjnego wtedy przypuszczalnie nie powinieneś tego robić, bo będziesz chciał zmienić konfigurację domyślną. Przeczytaj sekcję o modułach na temat szczegółów dotyczących make modules. 44..44.. IInnssttaallaaccjjaa jjąąddrraa.. Jeśli masz już nowe jądra i wydaje ci się, że ono działa tak jak chciałeś, czas aby je zainstalować. Większość ludzi używa do tego celu LILO (Linux Loader). make bzlilo zainstaluje jądro, uruchomi lilo, aby odświeżyć informacje i przygotuje wszystko, aby zresetować i załadować nowe jądro. AALLEE TTYYLLKKOO w przypadku, gdy LILO jest skonfigurowane następująco: jądro to /vmlinuz, lilo jest w /sbin, a twój plik konfiguracyjny od lilo to /etc/lilo.conf i zgadza się z tym co jest powyżej. W innym przypadku musisz użyć bezpośrednio polecenia lilo. Jest to pakiet całkiem prosty do zainstalowania i używania, ale ma tendencję do załamywania ludzi swoim plikiem konfiguracyjnym. Zajrzyj do pliku /etc/lilo/config - w starszych wersjach; lub /etc/lilo.conf - w nowszych wersjach, i sprawdź bieżące ustawienia. Plik ten wygląda tak: image = /vmlinuz label = Linux root = /dev/hda1 ... image = odnosi się do aktualnej wersji zainstalowanego jądra. Większość używa nazwy /vmlinuz. Ale równie dobrze może to być nazwa xxx, jądro, czy pliczek (nie jestem pewien co do polskich liter, ale zawsze można poeksperymentować :) ) label = używane jest przez LILO, aby dowiedzieć się jaki system lub jądro załadować, a root = jest katalogiem głównym danego systemu. Zrób kopię jądra, którego teraz używasz i skopiuj nowo zrobione jądro na miejsce starego (czyli napisz cp bzImage /vmlinuz jeśli używasz nazwy vmlinuz i jesteś w katalogu /usr/src/linux/arch/i386/boot. Potem uruchom LILO - w nowszych wersjach po prostu uruchamiasz lilo; w starszych może będziesz musiał uruchomić /etc/lilo/install albo nawet /etc/lilo/lilo -C /etc/lilo/config. Jeśli chcesz wiedzieć więcej na temat konfiguracji LILO, albo nie masz LILO, zdobądź najnowszą wersję i poczytaj dokumentację. Aby załadować jedną ze starszych wersji jądra, które mam nadzieję zachowałeś :) skopiuj linie od image = xxx w pliku konfiguracyjnym LILO na dół pliku, zmień xxx na nazwę twojego zachowanego pliku (wraz z pełną ścieżką). Zmień label = zzz na np. label = old-kernel i uruchom ponownie lilo. Możesz też wstawić linię delay = x, gdzie x jest ilością dziesiętnych części sekundy, do pliku konfiguracyjnego LILO, aby zatrzymać ładowanie na określoną ilość sekund i przerwać je np. klawiszem SHIFT, a potem wpisać nazwę którą nadałeś starszej wersji jądra (tę label = z pliku konfiguracyjnego LILO, a nie nazwę pliku jądra) w razie gdyby stało się coś nieprzyjemnego. 55.. ŁŁaattaanniiee jjąąddrraa ((ppaattcchhoowwaanniiee)).. 55..11.. ZZaakkłłaaddaanniiee łłaattyy.. Pakiety, które pozwalają na odnowienie jądra to łaty. Na przykład: jeśli masz wersję 1.1.45 i znajdziesz plik o nazwie patch46.gz to znaczy, że możesz odnowić swoje jądro do wersji 1.1.46. Możesz zrobić kopię źródeł, które masz (make clean a potem cd /usr/src; tar zcvf old-kernel.tar.gz linux) Tak więc kontynuując powyższy przykład załóżmy, że masz plik patch46.gz w katalogu /usr/src. Bedąc w katalogu /usr/src wydaj polecenie zcat pacth46.gz | patch -p0 albo patch -p0 < patch46 jeśli łata nie jest skompresowana. Zobaczysz teraz trochę ścieżek i nazw plików oraz komunikatów przelatujących przez ekran, o tym co się udało a co nie. Wszystko to przelatuje zbyt szybko, żeby nadążyć z czytaniem, także właściwie nie wiesz czy się udało czy nie. Możesz użyć parametru -s do polecenia patch, aby poinformować je, żeby wyświetlało tylko komunikaty o błędach. Aby zobaczyć czy coś poszło nie tak, poszukaj plików z rozszerzeniem .rej w katalogu /usr/src/linux. Niektóre wersje patch (starsze wersje, które mogły być skompilowane na gorszym systemie plików) zostawiają błędy w plikach z rozszerzeniem #. Możesz użyć polecenia find, aby znaleźć te pliki: cd /usr/src/linux; find ./ -name '*.rej' -print Polecenie to wyświetli wszystkie pliki z rozszerzeniem rej znajdujące się w bieżącym katalogu i jego podkatalogach. Jeśli wszystko poszło dobrze, wydaj teraz po kolei polecenia make clean, make config i make dep tak jak opisano w sekcjach 3 i 4. Do polecenia patch jest trochę opcji. Jak już wspomniałem, patch -s spowoduje wyświetlenie na ekran tylko wiadomości o błędach. Jeśli trzymasz źródła w innym katalogu niż /usr/src/linux, polecenie patch -p1 wydane w tym katalogu, gdzie trzymasz źródła zrobi wszystko bez błędów. Inne opcje polcenia patch są dobrze opisane w podręczniku "man". 55..22.. JJeeśśllii ccoośś ppóójjddzziiee nniiee ttaakk.. (Uwaga: ta sekcja odnosi się w głównej mierze do starszych wersji jądra.) Najczęstszym problemem było to, że kiedy polecenie patch modyfikowało plik config.in nie wyglądał on tak jak powinien, bo zmodyfikowałeś go, aby pasował do twojego komputera. Zostało to już poprawione, ale w starszych wersjach błąd ten pozostał. Aby to naprawić, przeczytaj plik config.in.rej i zobacz co pozostało z oryginalnej łaty. Zmiany są zwykle zaznaczane znakami + i - na początku linii. Spójrz na linie otaczające tę zaznaczoną i przypomnij sobie, czy były one ustawione na tak, czy na nie. Teraz w pliku config.in zmień "y" na "n" i "n" na "y" tam gdzie trzeba. Wydaj polecenie patch -p0 < config.in.rej a jeśli poinformuje cię, że się powiodło, wtedy możesz kontynuować konfigurację i kompilację. Plik config.in.rej pozostanie, ale możesz go skasować. Jeśli odkryjesz dalsze problemy, mogłeś zainstalować jakąś łatę nie w kolejności. Jeśli na ekranie pojawi się taka wiadomość: previously applied patch detected: Assume -R? oznacza to, że przypuszczalnie próbujesz nałożyć łatę o wersji mniejszej niż źródła twojego jądra. Jeśli odpowiesz "y", polecenie patch spróbuje zdegradować twoją wersję, i najprzypuszcalnie się to nie powiedzie, przez co będziesz musiał zdobyć całkiem nowe źródła. (co w sumie wcale nie jest takim złym pomysłem). Aby odinstalować jakąś łatę użyj patch -R na oryginalnej. Jak już się wszystko tak pomiesza, że nie będziesz mógł dojść do ładu, to najlepszym sposobem jest zdobyć nowe źródła jądra i zacząć od nowa. 55..33.. PPoozzbbyywwaanniiee ssiięę pplliikkóóww ""..oorriigg"".. Po zaledwie kilku łatach pliki .orig zaczynają niebezpiecznie rosnąć. Na przykład: usunięcie plików .orig z wersji 1.1.51, która była ostatnio czyszczona w wersji 1.1.48 spowodowało zwolnienie ponad 500 kB dysku. find . -name '*.orig' -exec rm -f {} ';' Polecenie to spowoduje usunięcie wszystkich plików .orig z bieżącego katalogu i jego podkatalogów. Wersje patch, które używają plików .# zamiast plików .rej, używają tyldy (~) zamiast plików .orig. Są lepsze sposoby pozbycia się plików .orig, które zależą od polecenia GNU xargs: find . -name '*.orig' | xargs rm lub metoda całkiem bezpieczna ale trochę "głośna" (dużo komunikatówna ekranie): find . -name '*.orig' -print0 | xargs --null rm -- 55..44.. IInnnnee łłaattyy.. Są jeszcze inne łaty (tzw. niestandardowe), niż te które dystrybuuje Linus. Jeśli ich użyjesz łaty Linusa mogą nie działać i będziesz musiał je albo odinstalować, dopasować źródła albo łatę, zainstalować nowe źródła, albo jakaś kombinacja tego. Może to być trochę frustrujące, więc jeśli nie chcesz grzebać w źródłach (z możliwością narobienia niezłego bajzlu), odinstaluj niestandardowe wersje łat zanim zainstalujesz łatę Linusa, albo po prostu zainstaluj nowe źródła. Wtedy możesz zobaczyć czy łaty niestandardowe wciąż działają. Jeśli nie to albo utknąłeś ze starym jądrem i będziesz próbował zmusić jakoś źródło albo łatę, żeby zaczęła działać, albo będziesz czekał (pewnie błagał) o nową łatę. Jak pospolite są te niestandardowe łaty? Przypuszczalnie o nich usłyszysz. Ja używałem łaty "noblink" na moich wirtualnych konsolach, bo nienawidzę mrugającego kursora. Ta łata jest (a przynajmniej była) często odnawiana dla nowszych wersji jądra. Z większością nowych sterowników jako ładowalne moduły, chociaż częstotliwość niestandardowych łat znacznie spada. 66.. PPaakkiieettyy ddooddaattkkoowwee.. Jądro Linux-a ma wiele zalet, które nie znajdują się w źródłach. Są one rozprowadzane jako osobne pakiety. Niektóre z tych najbardziej popularnych są tu wymienione. 66..11.. kkbbdd Konsola Linux-owa ma chyba więcej zalet niż na to zasługuje. Pomiędzy nimi znajdują się takie jak: zmiana czcionek, zmiana układu klawiszy, zmiana trybów wyświetlania (w nowszych wersjach). Pakiet _k_b_d to programy, które pozwalają użytkownikowi na robienie tego wszystkiego plus wiele czcionek i układów klawiatur dla prawie wszystkich klawiatur i jest on dostępny z tego samego miejsca, gdzie znajdują się źródła jądra. 66..22.. uuttiill--lliinnuuxx Rik Faith (faith@cs.unc.edu ) złożył razem obszerną kolekcję narzędzi do Linux-a, które dziwnym trafem nazywają się util-linux. Obecnie zajmuje się nimi Andries Brouwer (util-linux@math.uio.no ). Dostępne są one poprzez anonimowe ftp z ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/system/misc. Zawiera ona takie narzędzia jak: setterm, rdev, czy ctrlaltdel, które są związane z jądrem. Jak Rik twierdzi, _N_i_e _i_n_s_t_a_l_u_j _t_e_g_o _z_e_s_t_a_w_u _b_e_z _z_a_s_t_a_n_o_w_i_e_n_i_a. Nie trzeba instalować całej zawartości pakietu, mogłoby to nawet spowodować poważne problemy. 66..33.. hhddppaarrmm Jak więszkość pakietów, ten był łatą i dodatkiem dla jądra. Łaty zostały z czasem związane na stałe z jądrem, a ten program stał się osobnym pakietem. W rękach niedoświadczonego użytkownika jest on bardzo nniieebbeezzppiieecczznnyy. Więc nie używaj go jeśli nie wiesz co robisz. 66..44.. ggppmm gpm - general purpose mouse czyli, w dość wolnym tłumaczeniu :), mysz o ogólnym zastosowaniu. Program ten pozwala na przenoszenie zawartośći pomiędzy wirtualnymi konsolami i inne pożyteczne rzeczy jak np. tłumaczenie protokołów pomiędzy różnymi typami myszek, używanie wielu myszek... 77.. NNiieekkttóórree ppuułłaappkkii.. 77..11.. mmaakkee cclleeaann Jeśli twoje nowe jądro zaczyna robić dziwne rzeczy po rutynowym odnowieniu, przypuszczalnie zapomniałeś wydać polecenie make clean przed kompilacją nowego jądra. Oznaki takie to może być cokolwiek od zawieszania się systemu bez powodu, przez dziwne problemy z funkcajmi I/O, do ślimaczej szybkości. Nie zapomnij także wydać polecenia make dep. 77..22.. WWiieellkkiiee aallbboo wwoollnnee jjąąddrroo.. Jeśli twoje jadro zżera ogromną ilość pamięci, jest zbyt duże, albo po prostu kompiluje się w nieskończoność nawet jeśli masz swoje nowiutkie Quadbazillium-III/4400, najprawdopodobniej skonfigurowałeś niepotrzebnie pełno sterowników. Jeśli czegoś nie używasz, to nie konfiguruj, bo to naprawdę zabiera niepotrzebnie pamięć. Najbardziej oczywistym symptomem przy zbyt dużym jądrze jest bardzo częste swapowanie (jeśli twój dysk ciągle rzęzi, a nie jest jednym z tych starych orłów Fujitsu, które brzmią jak lądujący odrzutowiec, przejrzyj konfigurację swojego jądra). Możesz dowiedzieć się ile pamięci zabiera twoje jądro odejmując wartość total mem z pliku /proc/meminfo albo z polecenia free od całkowitej ilości pamięci w twoim komputerze. 77..33.. PPoorrtt rróówwnnoolleeggłłyy nniiee ddzziiaałłaa//mmoojjaa ddrruukkaarrkkaa nniiee ddzziiaałłaa.. Opcje które musisz włączyć na PC-cie to: Najpierw w sekcji "General Setup" włącz "Parallel port support" oraz "PC-style hardware". Następnie w sekcji "Character devices" włącz "Parallel printer support". No i potem zostają nazwy. W wersji 2.2 zastosowano inne nazwy niż w starszych wersjach. Powodem tego jest, to że w starym jądrze miałeś lp1 a teraz jest to lp0. Spójrz do dmesg albo w katalogu /var/log/. 77..44.. JJąąddrroo ssiięę nniiee kkoommppiilluujjee.. Jeśli się rzeczywiście nie kompiluje, to pewnie jakaś łata się nie zainstalowała poprawnie. Twoja wersja "gcc" może także być nie w porządku. Albo pliki nagłówkowe są skopane. Upewnij się także czy symboliczne dołączenie, o których Linus pisze w README, są poprawnie zrobione. W ogólności jeśli standardowe jądro się nie kompiluje, to coś poważnego jest z systemem i niezbędna jest ponowna instalacja niektórych narzędzi. W niektórych przypadkach "gcc" może się wysypać z powodu problemów sprzętowych. Komunikaty w tym przypadku to: xxx exited with signal 15 i w ogólności są one bardzo tajemnicze. Pewnie bym o tym nie wspominał, gdyby nie to, że mi się to zdażyło - miałem kiedyś wadliwą pamięć cache a kompilator wtedy hulał sobie po pamięci gdzie chciał. Najpierw spróbuj przeinstalwać gcc. Podejrzenia na sprzęt rzucaj dopiero jeśli jądro się kompiluje przy wyłączonym zewnętrznym cache'u, albo przy zmniejszonej ilości pamięci RAM itp. Z reguły ludzi to trochę denerwuje jak im powiesz, że mają popsuty sprzęt. Cóż, ja tego nie zmyślam. Jest FAQ na ten temat - www.bitwizard.nl/sig11/. 77..55.. NNoowwaa wweerrssjjaa jjąąddrraa nniiee cchhccee ssiięę zzaałłaaddoowwaaćć.. Albo nie uruchomiłeś lilo po skopiowaniu jądra na miejsce starego, albo źle skonfigurowałeś. Najczęściej spotykanym problemem jest nie wkompilowanie obsługi twoejgo dysku lub systemu ext2. Kiedyś miałem problem z plikiem konfiguracyjnym LILO; było tam boot = /dev/hda1 a powinno być boot = /dev/hda. Na początku to może byc naprawdę denerwujące, ale potem jak już masz dobry plik konfiguracyjny nie powinieneś go zmieniać. 77..66.. ZZaappoommnniiaałłeeśś uurruucchhoommiićć lliilloo,, aallbboo ssyysstteemm ssiięę ww ooggóóllee nniiee łłaadduujjee.. Oooj! Najlepszą rzeczą jaką można zrobić to załadować system z dyskietki lub CDROMu (no trzeba je oczywiście mieć :) ) i przygotować nową dyskietkę startującą (np. make zdisk). Musisz wiedzieć, gdzie jest twój główny system plików i jakiego jest typu. (ext2, minix). W przykładzie poniżej musisz także wiedzieć gdzie i na jakim systemie jest /usr/src/linux i gdzie jest zwykle zamontowany. W następującym przykładzie "/" to /dev/hda1, a partycja, na której znajduje się katalog linux to /dev/hda3 normalnie montowana na /usr. Działające jądro jest w katalogu /usr/src/linux/arch/i386/boot i nazywa się bzImage. Pomysł polega na tym, że jeśli masz działające bzImage, można tego użyć dla nowej dyskietki. Inna alternatywa, która może, ale nie musi działać (to zależy jak bardzo namieszałeś) opisana jest za tym przykładem. Najpierw, załaduj system z dyskietki, którą akurat masz i zamontuj system plików, na którym znajduje się działające jądro: mkdir /mnt mount -t ext2 /dev/hda3 /mnt Jeśli pojawi się komunikat, że katalog /mnt już jest - zignoruj go. Przy mount na pewno pojawi się komunikat ostrzegający, że montujesz niesprawdzony system plików - zignoruj go. Zmień katalog na ten, w którym znajduje się działające jądro (pamiętaj, że teraz masz dysk w katalogu /mnt). Umieść sformatowaną dyskietkę w stacji A: (nie dyskietkę, z której startowałeś !!!), przerzuć jądro na dyskietkę i skonfiguruj je dla twojego głównego systemu plików: cd /mnt/src/linux/arch/i386/boot dd if=bzImage of=/dev/fd0 rdev /dev/fd0 /dev/hda1 Zmień katalog na / (cd /) i odmontuj katalog /mnt (umount /mnt). Powinieneś być teraz w stanie załadować system tak jak normalnie z tej dyskietki. Nie zapomnij uruchomić lilo po restarcie (czy co tam źle zrobiłeś). Jak już wspomniałem jest jeszcze inna metoda. Jeśli masz kopię działającego jądra, możesz jej użyć dla zrobienia dyskietki startowej. Weźmy znów powyższe warunki i załóżmy, że działająca kopia to /vmlinuz. Zrób to samo co powyżej z tymi zmianami: /dev/hda3 zmień na /dev/hda1/ (gł. system plików) /mnt/src/linux na /mnt if=bzImage na if=vmlinuz ------------------------------------------------------------------ Od tłumacza: Szczerze powiem/napiszę, że nie wiem po co ten człowiek tak komplikuje sprawę. Podam tu sposób, ktorego ja używam: Najpierw sprawdź czy masz takie linijki na początku pliku /etc/lilo.conf: prompt timeout=50 Jeśli nie to je dopisz. W swoim pliku /etc/lilo.conf mam zawsze dwie sekcje: image=/boot/vmlinuz label=linux root=/dev/hda1 read-only image=/boot/vmlinuz-old label=linux-old root=/dev/hda1 read-only Ja nazywam jądra z wersją na końcu (/vmlinuz-2.0.18) i robię symboliczne dołączenie ln -s /vmlinuz-2.0.18 /vmlinuz. Jeśli kompiluję tę samą wersję jądra, to przed kompilacją/instalacją ZZAAWWSSZZEE robię kopię jądra, które mi działa (powiedzmy cp /vmlinuz-2.0.18 /vmlinuz.2.0.18.old); Jak już skompiluję jądro to kopiuje je na /vmlinuz-wersja, przedtem KOPIA !!! - tylko jeśli kompilujemy tę samą wersję jądra, którą już używamy, bo nowsza wersja będzie miała inny numer na końcu. Po skopiowaniu zmieniamy dołączenie symboliczne (jeśli instalujemy nową wersję) - rm /vmlinuz; ln -s /vmlinuz-nowa_wersja /vmlinuz; oraz ln -s /vmlinuz-2.0.18.old /vmlinuz-old; potem uruchamiamy lilo i restartujemy komputer. Jeśli nowe jądro nie działa, to startujemy stare jądro (wpisujemy po pojawieniu się boot: lub LILO: na ekranie linux-old) i po wciśnięciu ENETERa mamy znowu działający system. Jeśli nie działające jądro było w tej samej wersji co poprzednie (po prostu potrzebowałeś coś dodać), to trzeba uruchomić system w trybie "single" (linux-old init single), odzyskać stare moduły ze zrobionej poprzednio kopii katalogu /lib/modules/x.y.z i zrestartować jeszcze raz system pamiętając, żeby startować stare jądro. Albo po prostu zmień odpowiednie dowiązanie /vmlinuz, żeby wskazywało też na starą wersję jądra (ln -s /vmlinuz-x.y.z.old /vmlinuz) i NNIIEE ZZAAPPOOMMNNIIJJ po każdej takiej operacji uruchomić /sbin/lilo. ------------------------------------------------------------------ Używanie LILO z dużymi dyskami (z wiekszą ilością cylindrów niż 1023) może powodować problemy. Przeczytaj mini-HOWTO LILO i Large-Drives, jeśli chcesz znać więcej szczegółów. 77..77.. PPiisszzee mmii ""wwaarrnniinngg:: bbddfflluusshh nnoott rruunnnniinngg"".. No i dobrze, że pisze, bo to może być poważny problem. Poczynając od wersji jądra 1.0.0 (około 20 kwietnia 1994) program update, który okresowo zapisuje zawartość bufora na dysk, został zmieniony. Zdobądź źródła programu "bdflush" (powinieneś je znaleźć tam gdzie jądro) i skompiluj. Dopóki nie uruchomisz tego programu radzę używać wersji jądra starszej od 1.0.0 (Czy ta wersja jest jeszcze do zdobycia !!!?). Instaluje się samo jako update, a po restarcie nowe jądro nie powinno juz narzekać. 77..88.. NNiiee mmooggęę zzmmuussiićć mmoojjeeggoo CCDD--RROOMM--uu IIDDEE//AATTAAPPII ddoo wwssppóółłpprraaccyy.. Naprawdę dziwne. Bardzo dużo ludzi ma ten problem. Pewnie dlatego, że jest dużo przypadków, w których to się może dziać. Jeśli twój CD-ROM to jedyne urządzenie na konkretnym interfejsie IDE, musi być skonfigurowany zworkami jako master lub single. To jest najczęstszy problem. Creative Labs umieszcza teraz interfejs IDE na swoich kartach dźwiękowych. To prowadzi do ciekawego problemu, bo niektórzy mają tylko jeden interfejs IDE, wielu ma dwa interfejsy IDE na swoich płytach głównych (zwykle na IRQ15), więc najpopularniejszym rozwiązaniem jest uczynić interfejs na karcie dźwiękowej trzecim (IRQ11, a przynajmniej tak mi mówili). To powoduje w Linux-ie problemy, ponieważ wersja 1.2.x nie obsługuje trzeciego interfejsu IDE (obsługa jest w którejś z wersji 1.3.x, ale pamiętaj - to jest wersja testowa, i nie wykrywa sama tego interfejsu). Aby to obejść masz trzy możliwości: Jeśli masz już drugi interfejs, to przełóż CD-ROM na ten drugi interfejs jeśli jest wolny. Możesz wtedy wyłączyć interfejs z karty dźwiękowej, co zachowa jedno IRQ. Jeśli nie masz drugiego interfejsu, ustaw interfejs na karcie dźwiękowej (ale nie ten od dźwięku, tylko IDE) na przerwanie IRQ15 za pomocą zworek. Powinno działać. 77..99.. PPiisszzee ccoośś oo pprrzzeessttaarrzzaałłyymm rruuttiinngguu.. Weź nową wersję programu route i wszelkie inne programy, które się zajmuja rutingiem. /usr/include/linux/route.h (który właściwie jest plikiem w /usr/src/linux) sie zmienił. 77..1100.. FFiirreewwaallll mmii nniiee ddzziiaałłaa ww wweerrssjjii 11..22..00 Weź wersję co najmniej 1.2.1. 77..1111.. ""NNoott aa ccoommpprreesssseedd kkeerrnneell IImmaaggee ffiillee"".. Nie używaj jako jądra pliku vmlinux w katalogu /usr/src/linux stworzonego podczas kompilacji. Plik, który powinieneś użyć to: /usr/src/linux/arch/i386/boot/bzImage. 77..1122.. PPrroobblleemmyy zz kkoonnssoolląą ppoo ooddnnoowwiieenniiuu ddoo wweerrssjjii 11..33..xx.. Zmień słowo dumb na linux w pliku /etc/termcap w sekcji dotyczącej konsoli. Mozliwe też, że będziesz musiał zrobić terminfo. 77..1133.. NNiiee mmooggęę sskkoommppiilloowwaaćć rróóżżnnyycchh rrzzeecczzyy ppoo ooddnnoowwiieenniiuu jjąąddrraa.. Źródła jądra zawierają pewną liczbę plików nagłówkowych (te co się kończą na .h), do których odwołują się standardowe pliki nagłówkowe w /usr/include. Przeważnie wygląda to tak: #include <linux/xxyy.h> Zwykle w katalogu /usr/include jest symboliczne dołączenie linux wskazujące na /usr/src/linux/include/linux. Jeśli dołączenia tego nie ma, albo wskazuje na złe miejsce, to rzeczywiście większość programów się nie skompiluje. Jeśli zdecydowałeś, że źródła zajmują za dużo miejsca na dysku i skasowałeś je, to to jest właśnie twój problem. Razem z tymi źródłami skasowałeś pliki nagłówkowe. Inny problem to problem z dostępem do plików: Jeśli twój root ma umask ustawiony tak, że użytkownicy nie mogą widzieć plików przez niego stworzonych, i rozpakowałeś źródła bez opcji p (zachowaj oryginalne flagi dostępu), użytkownicy nie będą mogli użyć kompilatora. Najprościej naprawić to w ten sposób: zaloguj się jako root cd /usr/src/linux/ chmod -R go+r include/ 77..1144.. ZZwwiięękksszzaanniiee lliimmiittóóww.. Kilka następujących _p_r_z_y_k_ł_a_d_o_w_y_c_h poleceń może pomóc tym, którzy zastanawiają się jak zwiększyć pewne programowe ograniczenia wprowadzone przez jądro: echo 4096 > /proc/sys/kernel/file-max echo 12288 > /proc/sys/kernel/inode-max echo 300 400 500 > /proc/sys/vm/freepages 88.. UUwwaaggaa nnaa tteemmaatt uuaakkttuuaallnniieenniiaa ddoo wweerrssjjii 22..00..xx ii 22..22..xx.. Wersje jądra 2.0.x i 2.2.x wprowadziły trochę zmian w instalacji. Plik Documentation/Changes zawiera informacje, które powinieneś poznać, kiedy uaktualaniasz swoje jądro do którejś z tych wersji. Najprzypuszczalniej będziesz musiał odnowić także niektóre kluczowe pakiety, takie jak: gcc, libc i SysVInit, i może dostosować kilka plików systemowych. Ale nie panikuj ! 99.. MMoodduułłyy.. Ładowalne moduły jądra mogą zaoszczędzić trochę pamięci i ułatwić konfigurację. Obszar działania modułów urósł już do tego, że zawierają one systemy plików, sterowniki do kart Ethernet, do taśm, do drukarek i wiele innych. 99..11.. IInnssttaallaaccjjaa nnaarrzzęęddzzii mmoodduułłoowwyycchh.. Narzędzia te sa dostępne stamtąd, skąd masz źródła jądra. Nazywają się modutils-x.y.z.tar.gz; wybierz najwyższą wersję równą, albo mniejszą od wersji twojego jądra. Rozpakuj poleceniem tar zxvf modutils-x.y.z. Wejdź do stworzonego katalogu i poczytaj plik README. Wypełnij dokładnie instrukcje na temat instalacji (jest ona z reguły bardzo prosta: make install lub coś podobnego). Powinieneś mieć teraz programy: insmod, rmmod, ksyms, lsmod, genksyms, modprobe i depmod w katalogu /sbin. Jeśli chcesz przetestować narzędzia z przykładowym sterownikiem "hw" w insmod; przejrzyj plik INSTALL w tym katalogu. insmod ładuje moduł do uruchomionego jądra. Moduły mają z reguły roszerzenie .o; przykładowy moduł wspomniany wyżej nazywa się drv_hello.o, a więc aby go załadować, napisz: insmod drv_hello.o. Aby zobaczyć jakie moduły są aktualnie używane przez jądro użyj lsmod. Powinien wyświetlić coś takiego blah# lsmod Module: #pages: Usedby: drv_hello 1 drv_hello jest nazwą modułu, używa jednej strony (4kB) pamięci i żadne inne moduły nie zależą od niego w tej chwili. Aby usunąć ten moduł z jądra użyj rmmod drv_hello. Zauważ, że rmmod chce nazwy modułu a nie pliku. Weź ją z polecenia lsmod. Inne narzędzia modułowe są opisane w podręczniku mmaann. 99..22.. MMoodduułłyy ddyyssttrryybbuuoowwaannee zz jjąąddrreemm.. Jeśli chodzi o wersję 2.0.30 większość sterowników dostępna jest w postaci modułów. Aby ich użyć, najpierw upewnij się czy nie skonfigurowałeś ich jako stałe części jądra. To znaczy: nie odpowiadaj "y" na pytania ich dotyczące podczas konfiguracji, ale "m" jeśli jest taka możliwość. Po skompilowaniu jądra napisz make modules i make modules_install. Pierwsze polecenie skompiluje wszystkie sterowniki wyspecyfikowane jako moduły, a drugie zainstaluje je w katalogu /lib/modules/x.y.z, gdzie x.y.z jest wersją jądra. Po zainstalowaniu tych modułów wejdź do katalogu /lib/modules/x.y.z i napisz modprobe -a, jeśli masz ten program. $lsqb;Od tłumacza] Jeśli kompilujesz jądro o wersji takie samej jak to które używasz obecnie, to na wszleki wypadek przed poleceniem make modules_install, zrób w katalogu /lib/modules/ kopię katalogu o nazwie takiej samej jak wersja obecnego jądra. Moduły są szczególnie przydatne do systemów plików albo sterowników urządzeń, których rzadko używasz. Np. jeśli chcesz użyć dyskietki msdos, to najpierw piszesz insmod /lib/modules/x.y.z/fs/msdos.o i używasz tej dyskietki. Po skończeniu piszesz rmmod msdos. Operacja ta zaoszczędza jakieś 50 kB RAM-u - niby nic ale jak się uzbiera kilka takich sterowników to docenisz tę zaletę. Co do systemu plików mmiinniixx to powinien on być zzaawwsszzee wkompilowany w jądro na stałe, w razie użycia dyskietki startowej. Na dyskietkach jest właśnie minix. ------------------------------------------------------------------ Od tłumacza: Znowu facet skomplikował sprawę. Jest narzędzie, które zajmuje się za ciebie ładowaniem i usuwaniem odpowiednich modułów do i z pamięci. Nazywa się kerneld czyli kernel daemon. Jeśli użyjesz czegoś co wymaga sterownika w module, kerneld załaduje za ciebie ten moduł, a potem go wyrzuci jak już przestaniesz tego używać. Aby go użyć musisz odpowiedzieć na pytanie konfiguracyjne dotyczące kerneld "Kernel daemon support" "y". Przedtem jeszcze odpowiedz "y" na pytanie "Modules support" czy jakoś tak, żeby móc w ogóle używać modułów. Po kompilacji jądra wszystko idzie tak samo jak opisane powyżej. Jeszcze jedno: jeśli masz dystrybucję RH to sprawdź czy w pliku /etc/rc.d/rc.sysinit jest uruchamiany /sbin/kerneld. Jeśli nie, to sprawdź czy uruchamia się tam program depmod. jeśli też nie to dopisz te linijki: /sbin/depmod -a if [ -x /sbin/kerneld ]; then /sbin/kerneld fi za linijką która wygląda mniej więcej tak: mount -n -o remount,rw / Jeśli masz Slackware sprawdź czy w pliku /etc/rc.d/rc.M jest uruchamiany /sbin/kerneld. Jeśli nie, to sprawdź czy uruchamia się tam program depmod. Jeśli też nie, to dopisz te linijki /sbin/depmod -a if [ -x /sbin/kerneld ]; then /sbin/kerneld fi za linijką która wygląda mniej więcej tak: mount -n -o remount,rw / Jeśli masz dystrybucję Debian to: 1) sprawdź czy jest plik /etc/init.d/kerneld, jeśli tak to 2) sprawdź czy w /etc/rcX.d/ jest dowiązanie do tego pliku (będzie to plik SYYkerneld), jeśli jest, to wszystko jest w porządku. X - numer runlevel-u który standardowo uruchamiasz. (sprawdź w pliku /etc/inittab linijkę initdefault) Jeśli któryś z tych warunków jest niespełniony to: ad 1) załóż plik /etc/init.d/kerneld o treści: #!/bin/bash # source function library . /etc/rc.d/init.d/functions case "$1" in start) echo -n "Starting kerneld " if [ -f "/sbin/kerneld" ]; then /sbin/kerneld /sbin/depmod -a fi touch /var/lock/subsys/kerneld ;; stop) echo -n "Shutting down kerneld: " killproc kerneld rm -f /var/lock/subsys/kernled echo ;; *) echo "Usage: kerneld {start|stop}" exit 1 esac exit 0 ad 2) napisz cd /etc/rcX.d/ ln -s /etc/init.d/kerneld SYYkerneld YY musi być numerem przed ładowaniem modułów; najlpiej jak najwcześniej. ------------------------------------------------------------------ 1100.. SSzzttuucczzkkii ii wwsskkaazzóówwkkii.. 1100..11.. PPrrzzeekkiieerroowwyywwaanniiee wwyyjjśścciiaa zz ppoolleecceeńń mmaakkee ii ppaattcchh.. Jeśli chciałbyś mieć zapisane w pliku to co działo się podczas wykonywania poleceń make i patch, możesz przekierować wyjście tych komend do pliku. Najpierw dowiedz się w jakiej powłoce pracujesz: echo $shell Jeśli jest to /bin/sh albo /bin/bash, wtedy przekierowywanie wyjścia wygląda tak: polecenie 2>&1 | tee nazwa_pliku_do_zapisania Jeśli jest to /bin/csh albo /bin/tcsh, to wygląda to tak polecenie |& tee nazwa_pliku_do_zapisania Jeśli używasz rc (a raczej nie używasz), wtedy wygląda to tak: polecenie >[2=1] | tee nazwa_pliku_do_zapisania 1100..22.. IInnssttaallaaccjjaa wwaarruunnkkoowwaa jjąąddrraa.. Są jeszcze inne metody testowania nowego jądra bez ruszania starego, oprócz tych z dyskietkami. LILO ma możliwość ładowania jądra z jakiegokolwiek miejsca na dysku (jeśli twój dysk ma więcej niż 1023 cylindry [512 MB lub więcej], przeczytaj dokumentację LILO, żeby dowiedzieć się jakie są z tym związane problemy). Tak więc jeśli dodasz takie linie: image = (tu wstaw katalog, w którym znajduje się nowe jądro) label = new_kernel na końcu pliku konfiguracyjnego LILO, możesz wybrać jakie jądro chcesz ładować, bez ruszania starego jądra (po wykonaniu lilo oczywiście). Najprostszym sposobem poinformowania LILO, które jądro chcemy załadować jest wciśnięcie klawisz SHIFT podczas startu (w momencie kiedy na ekranie pojawi się "LILO"). Wtedy pojawi się znak zachęty. Wpisując tu new_kernel, lub nazwę, którą nadałeś w pliku konfiguracyjnym LILO nowemu jądru, poinformujesz LILO, żeby załadowało nowe jądro. Jeśli chcesz trzymać kilka różnych źródeł jądra na dysku (to zabiera DDUUŻŻOO miejsca - ostrożnie) najprostszym sposobem jest nazywanie ich linux-wersja_jądra. Musisz wtedy zrobić symboliczne dołączenie ln -s linux-wersja linux żeby używać wybranej wersji. Przed zrobieniem takiego dołączenie upewnij się, że ostatni parametr do "ln" nie jest katalogiem, bo wtedy nie będzie to to, czego się spodziewałeś. 1100..33.. OOddnnoowwiieenniiaa jjąąddrraa.. Russel Nelson (nelson@crynwr.com ) umieszcza zmiany jakie zaszły w bieżącej wersji jądra. Są one krótkie i możesz zajrzeć tam zanim postanowisz odnowić jądro. Są one dostępne poprzez anonimowe ftp z ftp.emlist.com w katalogu pub/kchanges lub poprzez WWW - http://www.crynwr.com/kchanges. Spis zmian możesz znaleźć także w ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/kernel/changes. 1111.. IInnnnee ddookkuummeennttyy HHOOWWTTOO,, kkttóórree mmooggąą ssiięę pprrzzyyddaaćć ttoo:: ˇ Sound-HOWTO: karty dźwiękowe i narzędzia do nich ˇ SCSI-HOWTO: wszystko na temat kontrolerów i urządzeń SCSI ˇ NET-3-HOWTO: wszystko o sieci ˇ PPP-HOWTO: protokół PPP w Linux-ie ˇ PCMCIA-HOWTO: o sterownikach do twojego Notebook-a ˇ ELF-HOWTO: ELF: co to ELF ˇ Hardware-HOWTO: przegląd obsługiwanego przez Linux-a sprzętu. ˇ Module-HOWTO: więcej na temat modułów. ˇ Kerneld mini-HOWTO: na temat kerneld. ˇ BogoMips mini-HOWTO: w razie gdybyś chciał wiedzieć 1122.. RRóóżżnnoośśccii 1122..11.. OOdd aauuttoorraa.. Autorem i człowiekim opiekującym się tym dokumentem jest Brian Ward bri@cs.uchicago.edu Proszę przysyłać mi wszelkie komentarze, dodatki, poprawki (te są najważniejsze). Jak chcesz możesz zajrzeć na moją stronę WWW: <htmlurl url="http://www.math.psu.edu/bri/" name="www.math.psu.edu/bri/"> Pomimo, iż staram się odpowiadać na pocztę kiedy tylko mogę, to musisz pamiętać, że dostaje dduużżoo listów codziennie. Więc odpowiedzenie na twój list może zająć trochę czasu. Szczególnie jeśli wysłałeś mi jakieś pytanie, spróbuj być jak najbardziej dokładny. Jeśli piszesz o niedziałającym sprzęcie (czy coś podobnego) muszę wiedzieć jaka jest konfiguracja tego sprzętu. Jeśli piszesz o błędzie, to nie pisz, że "próbowałem, ale nie działa..." Muszę znać chociaż błąd jaki się pojawił. Chciałbym także wiedzieć jaka była wersja jądra, gcc i libc. Jeśli powiesz mi, że używasz tej-i-tej dystrybucji to mi wiele nie powie. Nie obchodzi mnie to, że zadajesz proste pytania. Kto pyta, nie błądzi! Chciałbym podziękować wszystkim, którzy wspierali mnie podzas pisania tego dokumentu. Jeśli twoje pytanie nie było związane z jądrem albo jest w jakimś języku, którego nie znam, to mogę nie odpowiedzieć. Jeśli wysłałeś do mnie list i nie otrzymałeś odpowiedzi w jakimś sensownym czasie (3+ tygodni). To całkiem możliwe, że przypadkowo skasowałem twój list (przepraszam). Napisz jeszcze raz. Dostaję dużo poczty z pytaniami, które są właściwie problemami sprzętowymi. W porządku, ale pamiętaj, że przecież nie znam wszystkich urządzeń na świecie i nie wiem na ile mogę być pomocny. Osobiście używam maszyn z procesorem AMD, kontrolery SCSI Adaptec i Sybios oraz dyski SCSI IBM. Wersja -0.1 została napisana 3 października 1994. Dokument ten jest dostępny w formatach: SGML, PostScript, TeX, roff i jako czysty tekst. 1122..22.. CCoo jjeesstt jjeesszzcczzee ddoo zzrroobbiieenniiaa.. Sekcja na temat sztuczek i wskazówek jest jeszcze trochę mała. Mam nadzieję, że się rozrośnie wraz z przybywaniem sugestii. To samo odnosi się do sekcji pakiety dodatkowe. Potrzeba mi więcej informacji na temat śledzenia (debugging) i odzyskiwania po padach systemu. 1122..33.. OOttoo ccii,, kkttóórrzzyy ssiięę pprrzzyycczzyynniillii ddoo ppoowwssttaanniiaa tteeggoo HHOOWWTTOO.. Dołączona jest mała część README Linusa na temat opcji rozgryzania jądra.(kernel hacking) (Dzięki Ci Linus!) _u_c_@_b_r_i_a_n_._l_u_n_e_t_i_x_._d_e (Ulrich Callmeier): polecenia patch -s, xargs. _q_u_i_n_l_a_n_@_y_g_g_d_r_a_s_i_l_._c_o_m (Daniel Quinlan): poprawki i dodatki do wielu sekcji. _n_a_t_@_n_a_t_a_a_._f_r_._e_u_._o_r_g (Nat Makarevitch): mrproper, tar -p i wiele innych _b_o_l_d_t_@_m_a_t_h_._u_c_s_b_._e_d_u (Axel Boldt): uzbierany spis opcji konfiguracyjnych jądra dotyczących sieci. Przesłane mi. _l_e_m_b_a_r_k_@_w_r_k_h_o_r_s_._p_s_y_b_e_r_._c_o_m (Steve Lembark): sugestie odnośnie wyboru jądra przy starcie. _k_b_r_i_g_g_s_@_e_a_r_w_a_x_._p_d_._u_w_a_._e_d_u_._a_u (Keith Briggs): kilka sugestii i poprawek. _r_m_c_g_u_i_r_e_@_f_r_e_e_n_e_t_._c_o_l_u_m_b_u_s_._o_h_._u_s (Ryan McGuire): dodatki na temat "make" _d_u_m_a_s_@_e_x_c_a_l_i_b_u_r_._i_b_p_._f_r (Eric Dumas): tłumaczenie francuskie _s_i_m_a_z_a_k_i_@_a_b_1_1_._y_a_m_a_n_a_s_h_i_._a_c_._j_p (Yasutada Shimazaki): tłumaczenie japońskie _j_j_a_m_o_r_@_l_m_l_._l_s_._f_i_._u_p_m_._e_s (Juan Jose Amor Iglesias): tłumaczenie hiszpańskie _m_v_a_@_s_b_b_s_._s_e (Martin Wahlen): tłumaczenie szwedzkie _j_z_p_1_2_1_8_@_s_t_u_d_._u_-_s_z_e_g_e_d_._h_u (Zoltan Vamosi): tłumaczenie węgierskie _B_._M_a_r_u_s_z_e_w_s_k_i_@_j_t_z_._o_r_g_._p_l (Bartosz Maruszewski): tłumaczenie polskie _d_o_n_a_h_u_e_@_t_i_b_e_r_._n_i_s_t_._g_o_v (Michael J Donahue): korekta literówek, wygrał konkurs o kromkę chleba _r_m_s_@_g_n_u_._a_i_._m_i_t_._e_d_u (Richard Stallman): pomysł na bezpłatną dokumentację i dystrybucję _d_a_k_@_P_o_o_l_._I_n_f_o_r_m_a_t_i_k_._R_W_T_H_-_A_a_c_h_e_n_._D_E (David Kastrup): NFS _e_s_r_@_s_n_a_r_k_._t_h_y_r_s_u_s_._c_o_m (Eric Raymond): różności. Ci, którzy przysyłali mi pytania z problemami także byli pomocni. 1122..44.. PPrraawwaa aauuttoorrsskkiiee,, lliicceennccjjaa ii ttaakkiiee iinnnnee.. Dokument chroniony prawami autorskimi Š Briana Warda, 1994-1999. Można rozprowadzać kopie tego dokumentu o ile na wszystkich będzie zachowana uwaga o prawach autorskich i to pozwolenie. Można kopiować i dystrybuwać ten dokument w wersji modyfikowanej pod warunkiem dosłownego kopiowania zakładając, że praca pochodna jest dystrybuowana z takimi samymi prawami jak ten dokument. Tłumaczenia zaliczają się także do wersji modyfikowanych. Gwarancja: Żadna. Zalecenia: Dystrybucja komercyjna jest dozwolona. Jednak zaleca się najpierw kontakt z autorem, aby mieć najświeższe dane (możesz mi wysłać kopię tego co chcesz dystrybuować). Tłumacze są także zobowiązani najpierw się skontaktować ze mną. Wersja wydrukowana wygląda o wiele ładniej. 1122..55.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez tłumacza to: ˇ - dodatkowy sposób na załadowanie dobrego jądra ˇ - informacja o kerneld ˇ - a także odnośniki do polskich serwerów ftp i WWW �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Large-Disk-HOWTO.pl.txt������������������������������������������������0100664�0001750�0001750�00000056226�07473012340�020377� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Duże dyski Andries Brouwer, aeb@cwi.nl <mailto:aeb@cwi.nl> v1.0, 960626 wweerrssjjaa ppoollsskkaa ppiioottrr..ppooggoorrzzeellsskkii@@iipppptt..ggoovv..ppll <<mailto:piotr.pogorzelski@ippt.gov.pl> wersja 1.0, 5 marca 1997 Wszystko na temat geometrii dysków i granicy 1024 cylindrów. ______________________________________________________________________ Spis treści 1. Postawienie problemu 2. Ładowanie systemu (Booting) 3. Geometria dysku i partycje 4. Translacja i Disk Managery 5. Translacja wykonywana przez jądro dla dysków IDE 5.1 EZD 5.2 DM6:DDO 5.3 DM6:AUX 5.4 DM6:MBR 5.5 PTBL 6. Konsekwencje 6.1 Szczególy IDE 6.2 Szczegóły SCSI 7. Od tłumacza ______________________________________________________________________ 11.. PPoossttaawwiieenniiee pprroobblleemmuu Załóżmy, że posiadasz dysk z więcej niż 1024 cylindrami. Co więcej załóżmy, że posiadasz system który korzysta z BIOSu. Wtedy masz problem. Masz problem ponieważ zwykły interfejs We/Wy twojego dysku realizowany przez przerwanie BIOSu INT13, które do przekazywania numeru cylindra, na którym ma zostać wykonana operacja We/Wy korzysta z 10-cio bitowego pola, przez co cylindry o numerze 1024 i wiekszym są niedostępne. Na szczęście Linux nie korzysta z BIOSu, więc nie ma tego problemu. No prawie, poza dwoma przypadkami: (1) Kiedy uruchamiasz swój system, Linux jeszcze nie działa i nie potrafi uchronić cię przed kłopotami z BIOSem. Ma to wpływ na pracę LILO i innych ładowaczy systemów (boot loaders). (2) Wszystkie systemy operacyjne korzystające z tego samego dysku muszą zgadzać się co do położenia poszczególnych partycji. Innymi słowy, jeśli korzystasz na jednym dysku z Linuxa i powiedzmy DOSu, wtedy oba muszą interpretować tabelę partycji w ten sam sposób. Ma to wpływ na sposób zachownia jądra i programu fdisk. Poniżej znajdziesz sczegółowy opis wszelkich istotnych szczegółów. Zauważ, że wszelkie informacje odnoszą się do jądra w wersji 2.0.8. Inne wersje jądra mogą zachowywać się troszkę inaczej. 22.. ŁŁaaddoowwaanniiee ssyysstteemmuu ((BBoooottiinngg)) Podczas ładowania systemu, BIOS odczytuje z pierwszego dysku twardego (lub z dyskietki) sektor 0 (znany jako główny sektor startowy (Master Boto Record, MBR)) i wykonuje skok do znalezionego tam kodu - zwykle do programu ładowania początkowego. Te małe programy ładujące (ładowacze) jakie się tam znajdują, nie posiadają wlasnych drajwerów dyskowych i korzystają z funkcji BIOSu. To znaczy, że jądro Linuxa może zostać załadowane, tylko wtedy gdy w całości znajduje się poniżej 1024 cylindra. Ten problem można bardzo łatwo rozwiązać. Upewnij się, że jądro (i być może inne pliki wykorzystywane do startu systemu, np. pliki odzworowań programu LILO) znajdują się na partycji, która w całości zawiera się w obszrze ponizej 1024 cylindra dysku, do którego BIOS ma dostęp - zwykle pierwszy lub drugi dysk twojego komputera. Poza tym ładowacz i BIOS muszą się zgadzać w sprawie geometrii dysku. Tutaj może okazać się pomocne skorzystanie w konfiguracji LILO z opcji _l_i_n_e_a_r. Więcej szczegółów później. 33.. GGeeoommeettrriiaa ddyysskkuu ii ppaarrttyyccjjee Jeśli posiadasz na jednym dysku kilka systemów operacyjnych, wtedy każdy z nich używa jednej lub więcej partycji. Niezgodność w ocenie, gdzie te partycje się dokładnie znajdują może mieć katastrofalne konsekwencje. Rekord MBR zawiera _t_a_b_e_l_ę _p_a_r_t_y_c_j_i określającą, gdzie znajdują się partycje (podstawowe). Tabela zawiera 4 pozycje (dla 4 partycji) i wygląda mniej więcej tak: struct partition { char active; /* 0x80: startowa, 0: nie strtowa */ char begin[3]; /* CHS pierwszego sektora partycji */ char type; char end[3]; /* CHS ostatniego sektora partycji */ int start; /* 32 bitowy numer sektora (licząc od 0) */ int length; /* 32 bitowa liczba sektorów */ }; (gdzie CHS oznacza numer cylindra/głowicy/sektora). Jak widać informacja jest nadmiarowa: lokalizacja partycji jest podana zarówno w 24-ro bitowych polach begin i end, oraz w 32-dwu bitowych polach start i length. Linux korzysta jedynie z pól start i length, dlatego potrafi obsłużyć partycje o liczbie sektorów nie przekraczającej 2^32 tzn. partycje o rozmiarze nie większym niż 2 TB. Czyli dwieście razy większą od dysków obecnie dostępnych na rynku. Możemy mieć nadzieje, że będzie to wystarczające na najbliższe 10 lat, a może więcej. Niestety, funkcja BIOSu INT13 korzysta z inforamacij CHS zakodowanych w polach 3bajtowych, przy czym na numer cylindra przeznaczonych jest 10 bitów, 8 bitów na numer głowicy i 6 bitów na numer sektora na ścieżce. Dozwolone numery cylindrów to 0-1023, głowic 0-255 i dozwolona liczba sektorów na ścieżce wynosi 1-63 (tak, sektory na ścieżce są liczone od 1, a nie od 0). Na tych 24 bitach można zaadresować nie więcej niż 8455716864 bajtów (7.875 GB), dwieście razy więcej niż rozmiar dysków dostępnych w roku 1983. Kolejne, ważniejsze (groźniejsze) ograniczenie polega na tym, że standard interfejsu IDE pozwala jedynie na: 256 sektorów na ścieżce, 65536 cylindrów i 16 głowic. Sam w sobie pozwala na dostęp do 2^37 = 137438953472 bajtów (128 GB), lecz w połączeniu z ograniczeniami nałożonymi przez BIOS, faktycznie umożliwia na dostęp tylko do 528482304 bajtów (504 MB). Nie jest to wystarczające dla dostępnych obecnie dysków i ludzie są zmuszeni do stosowania różnego rodzaju sztuczek, zarówno sprzętowych, jak i programowych. 44.. TTrraannssllaaccjjaa ii DDiisskk MMaannaaggeerryy Nikogo nie interesuje jaka jest `rzeczywista' geometria dysku. Tak na prawdę, liczba sektorów na ścieżce często jest zmienna - więcej na ścieżkach zewnętrznych i mniej na ścieżkach wewnętrznych - nie ma tak na prawdę `rzeczywstej' liczby sektorów na ścieżce. Dla użytkownika najwygodniej jest traktować dysk jako liniową tablicę sektorów, ponumerowanych 0,1 ... i pozostawić sterownikowi zadanie odnalezienia położenia danego sektora na dysku. To numerownie liniwe znane jest pod skrótem LBA. Adres liniowy należacy do sektora (c,h,s) dla dysku o geometrii (C,H,S) jest równy c*H*S+h*S+(s-1). Wszystkie sterowniki SCSI porozumiewają się według standardu LBA, niektóre sterowniki IDE również. BIOS zamienia 24-bitowe pole (c,h,s) na adres LBA i przekazuje to sterownikowi, który rozumie co to jest LBA. Dzięki temu ponownie mamy dostęp do 7.785 GB. Nie jest to wystarczające dla wszystkich dysków, lecz jest to lepsze niż to co było. Zauważ, że CHS wykorzystywane przez BIOS nie ma żadnego związku z rzeczywistością. Coś poddobnego dzieje się w sytuacji, gdy sterownik nie rozumie adresów LBA, lecz BIOS wie o translacji (w Setupie BIOSu jest to zwykle oznaczane jako `Large'). Teraz BIOS prezentuje systemowi operacyjnemu geometrię (C',H',S') i używa geometrii (C,H,S) do komunikacji ze sterownikiem. Zwykle S=S' C'=C/N i H'=H*N, gdzie N jest najmniejszą potęgą 2, zapewniającą spełnienie warunku ' <= 1024 (w celu zminimalizowania marnującej się przestrzeni przez zaokrąglenie w dół C'=C/N). Ta metoda również pozwala uzyskać dostęp do 7.875 GB. Jeśli BIOS nic nie wie na tema `Large' lub LBA, wtedy pozostają rozwiązania oparte na odpowiednich drajwerach. Takie programy, jak OnTrack lub Ez-Drive zamieniają programy obsługi dysku należące do BIOSu na własne. Często jest to realizowane, przez umieszenie kodu należacego do Disk Managera w rekordzie MBR i kolejnych sektorach dysku (OnTrack nazywa to DDO: Dynamic Drive Overlay) aby był on uruchamiany przed załadowniem jakiegokolwiek systemu operacyjnego. To wyjaśnia kłopoty związane ze startowniem systemu z dyskietki, dla dysków z zainstalowanym programem Disk Manager. Efekt całego tego zamieszania jest mniej więcej taki sam, jak w przypadku translacji przez BIOS - lecz w sytuacjach, gdy na jednym dysku znajduje się wiele systemów operacyjnych programy typu Disk Manager mogą sprawiać wiele kłopotów. Linux od wersji 1.3.14 rozpoznaje istnienie programu Boot Manager firmy OnTrack i od wersji 1.3.29 firmy EZ-Drive. Więcej szczegółów znajdziesz dalej. 55.. TTrraannssllaaccjjaa wwyykkoonnyywwaannaa pprrzzeezz jjąąddrroo ddllaa ddyysskkóóww IIDDEE Jeśli jądro Linuxa rozpozna istnienie na dysku IDE programu typu disk manager, spróbuje przeprowadzić identyczną translację jaką robi ten właśnie program, tak aby widzieć te same partycje co np. MS-DOS z programe OnTrack lub EZ-Drive. Jeśli jednak w parametrach startowych zostanie przekazana geometria dysku, nie jest wykonywana żadna translacja. Tak więc opcja startowa `hd=_c_y_l_s,_h_e_a_d_s,_s_e_c_s' może zniszczyć zgodność z programem typu disk manager. Translacja wykonywana przez jądro polega na wypróbowaniu kolejno liczby głowic równej 4, 8 ,16, 32, 128, 255 (utrzymując stałą wartość H*C) aż do spełnienia warunku C <= 1024 lub H = 255. Trochę uwag na temat tekstu poniżej - nagłówki podrozdziałów są identyczne z pojawiającymu się w komunikatach startowych. Tutaj i w całym tekscie typy partycji podane są szesnastkowo. 55..11.. EEZZDD Rozpoznano drajwer EZ-Drive poniważ pierwsza partycja podstawowa jest typu 55. Geometria dysku podlega opisanej powyżej translacji i tabela partycji z sektora 0 zostaje pominięta - zmiast tego korzystamy z tabeli partycji znajdującej się w sektorze 1. Numery bloków dyskowych pozostają niezmienione, lecz zapis sektora 0 zostaje przekierowany do sektora 1. To zachownie może zostać zmienione przez ponowne skompilowanie jądra przy zdefiniowaniu w pliku _i_d_e_._c #define FAKE_FDISK_FOR_EZDRIVE 0 . 55..22.. DDMM66::DDDDOO Rozpoznano drajwer OnTrack Manager (na pierwszym dysku) ponieważ pierwsza partycja podstawowa jest typu 54. Geometria dysku podlega opisanej powyżej translacji i cały dysk zostaje przesunięty o 63 sektory (tak więc stary sektor 63 staje się sektorem 0). Następnie nowy rekord MBR (z tabelą partycji) zostaje odczytany z nowego sektora 0. To przesunięcie oczywiście ma na celu zrobienie miejsca dla DDO - dlatego nie jest wykonywane dla innych dysków. 55..33.. DDMM66::AAUUXX Rozpoznano drajwer OnTrack Manager (na innych dyskach) ponieważ pierwsza partycja podstawowa jest typu 51 lub 53. Geometria dysku podlega opisanej powyżej translacji. 55..44.. DDMM66::MMBBRR Rozpoznano starszą wersję drajwera OnTrack Manager poniważ znaleziono podpis drajwera (sprawdzono, że przesunięcie znalezione w 2-gim i 3-cim bajcie rekordu MBR nie jest większe od 430, i zmienna typu short znaleziona pod tym adresem jest równa 0x55AA, po której występuje bajt nieparzysty). Geometria dysku podlega opisanej powużej translacji. 55..55.. PPTTBBLL Na końcu wykonywany jest test próbujący wydedukować istnienie translacji na podstawie wartości pól start i end partycji podstawowej: Jeśli cylinder początkowy i końcowy jednej z partycji jest mniejszy od 256, a sektory początkowy i końcowy mają numery odpowiednio 1, i 63, a końcowe numery głowic są równe 31, 63 lub 127, wtedy wnioskujemy, że translacja dysku jest aktywna, i wykorzystujemy liczbę głowic równą odpowiednio 32, 64 i 127 (ponieważ zwykle partycja kończy się na granicy cylindra i interfejs IDE nie pozawala na więcej niż 16 głowic). Być może jest tu błąd i _g_e_n_h_d_._c nie powinien sprawdzać dwóch najwyższych bitów zmiennej przechowującej numer cylindra? Jednakże nie wykonuje się żadej translacji, jesli aktualny pogląd na istniejącą geometrię już zakłada 63 sektory na ścieżce i co najmniej tyle samo głowic (ponieważ to prawdopodownie oznacza, ze translacja już została dokonana). 66.. KKoonnsseekkwweennccjjee Jakie to wszystko ma znaczenie? Dla użytkowników Linuxa tylko jedno: muszą się upewnić, że LILO i fdisk używają `poprawnej' geometrii, gdzie `poprawna' w przypadku fdiska jest rozumiana jako geometria używana przez inne systemy operacyjne znajdujące sie na tym samym dysku, a w przypadku LILO, że jest to geometria pozwalająca na poprawną współpracę z BIOSem podczas ładowania systemu. Jak fdisk dowiaduje się o geometrii? Pyta się jądra przy pomocy funkcji ioctl HDIO_GETGEO. Lecz użytkownik może podać dowolną geometrię dysku przez parametry w wierszu poleceń lub później w samym programie. Jak LILO dowiaduje się o geometrii dysku? Pyta się jądra przy pomocy funkcji ioctl HDIO_GETGEO. Lecz użytkownik może podać łasne inforamacje z pomocą opcji `disk='. Można również skorzystac z opcji linear, co spowoduje, że LILO zachowa w pliku odwzorwania (map file) adres LBA, zamiast CHS i podczas ładowania sytemu odczyta geometrię dysku (wykorzystujęc funkcję nr 8 przerwania INT 13). Skąd jądro wie co odpowiedzieć? Ha!, po pierwsze użytkownik może przekazć mu odpowiednie informacje jako parametr wiersza zachęty startowej: `hd=_c_y_l_s,_h_e_a_d_s,_s_e_c_s'. W innym przypadku jądro przepyta na ten temat sprzęt. 66..11.. SSzzcczzeeggóóllyy IIDDEE Trochę szczegółów. Drajwer IDE posiada cztery źródła informacji o geometrii dysku. Pierwsze (G_user) to dane podane przez użytkwonika w wierszu zachety. Drugie (G_bios) to inforamcje BIOSu (tylko dla pierwszego i drugiego dysku), które są odczytywana podczas uruchamiania systemu, przed przełączeniem się w tryb 32-bitowy. Trzecie (G_phys) i czwarte (G_log) są przekazywane przez sterownik IDE jako odpowiedź na polecenie IDENTIFY - są to `fizyczna' i aktualna `logiczna' geometria dysku. Z drugiej strony, sterownik potrzebuje dwóch informacji o geometrii dysku: lecz posiada z jednej strony G_fdisk, przekazywane przez funkcję ioctl HDIO_GETGEO, a z drugiej strony G_used, które jest naprawdę wykorzystywane do wykonywania operacji We/Wy. Zarówno G_fdisk, jak i G_used są inicjowane: wartościami G_user jeśli są podane, G_bios jeśli ta inforamcja jest dostepna wg. CMOS, lub G_phys w przeciwnym wypadku. Jesli G_log wygląda rozsądnie to G_used przybiera tę własnie wartość. W przeciwnym wypadku, jeśli G_used nie ma większego sensu i G_phys wygląda OK, wtedy G_used przyjmuje wartość G_phys. W tym przypadku `rozsądnie' oznacza, że liczba głowic jest w zakresie 1-16. Innymi słowy parametry wiersza zachęty są ważniejsze od informacji pobranych z BIOSu i określają jaką geometrię widzi fdisk, lecz jeśli podane informacje odpowiadają geometri poddanej translacji (wiecej niż 16 głowic), wtedy operacje We/wy jądra zostaną zastąpione odpowiedzią sterownika na polecenie IDENTIFY. 66..22.. SSzzcczzeeggóółłyy SSCCSSII Sytuacja w przypadku SCSI jest trochę inna, ponieważ polecenia SCSI używają logicznych numerów bloków, tak więc geometria dysku nie ma absolutnie żadnego znaczenia dla operacjami We/Wy. Jednakże format tabeli partycji jest ciągle ten sam, więc fdisk musi wymyśleć jakąś geometrię i również w tym przypadku korzysta z funkcji HDIO_GETGEO - w rzeczywistości fdisk nie rozróżnia dysków IDE i SCSI. Jak każdy może się sam przekonać (na podstawie szczegółowego omówienia poniżej) poszcególne drajwery wymyślają różne geometrię. Rzeczywiście jeden wielki balagan. Jeśli nie korzystasz DOSu, to unikaj wszelkich ustawień rozszerzonych translacji i jeśli to możliwe, używaj ustawień 64 głowice, 32 sektory na ścieżce (wtedy jeden cylinder ma ładny rozmiar 1MB). Unikniesz problemów, gdy przeniesiesz dysk z jednego sterownika do innego. Niektóre dyski SCSI (aha152x, pas16, ppa, qlogicfas, qlogicisp) są tak nerwowe w sprawach zgodności z MS-DOSem, że nie pozwolą systemowi z zainstalowanym wyłącznie systemem Linux na wykorzystanie więcej niż 8GB. To jest błąd. Jaka jest rzeczywista geometria? Najprostsza odpowiedź mówi, że nie ma czegoś takiego. I gdyby była, to nie chciałbyś wiedzieć, i na pewno NIGDY, ale to PRZENIGDY nie mów o tym fdiskowi, LILO lub jądru. To jest po prostu sprawa pomiędzy dyskiem i sterownikiem SCSI. Pozwolisz, że powtórzę: tylko głupcy mówią fdiskowi/LILO/jądru o rzeczywistej geometrii dysków SCSI. Lecz jeśli jesteś ciekaw i nalegasz, możesz spytać o to sam dysk. Istnieje bardzo ważne polecenie READ CAPACITY, które przekazuje całkowią objętość dysku, a drugie polecenie MODE SENSE (patrz Rigid Disk Drive Geometry Page (strona 04)) pozwala odczytać liczbę cylindrów i głowic (ta informacje nie może być zmieniona), natomiast w Format Page (strona 03) podaje liczbę bajów w sektorze i liczbę sektorów w ścieżce. Ta ostania liczba jest zwykle zależna od wycięcia (notch) i liczba sektorów na ścieżce jest zmienna - ścieżki zewnętrzne posiadają więcej sektorów, wewnętrzne mniej. Program pracujący pod Linuxem o nazwie scsiinfo poda ci te wszystkie informacje. Jest wiele szcegółów i komplikacji, i jest jasne, że nikt (prawdopodobnie nawet sam system operacyjny) nie chce wykorzystywać tej informacji. Co więcej, tak długo jak martwimy się tylko o fdisk i LILO, zwykle otrzymuje się odpowiedz typu C/H.S=4476/27/171 - wartości, które nie mogą być wykorzystane przez fdisk, ponieważ tabela partycji rezerwuje jedynie dla C/H/S odpowiednio 10/8/6 bitów. To skąd na ten temat bierze informację funkcja HDIO_GETGEO ? Cóz, albo ze sterownika SCSI lub zgaduje. Wygląda, że niektóre dyski myslą, że interesuje nas `rzeczywistość', lecz nas oczywiście interesuje jedynie jakie parametry będą używane przez FDISK pod DOSem czy OS/2 (lub AFDISK Adapteca). Pamiętaj, że fdisk Linuxa potrzebuje znać liczbę głowic H i sektorów na ścieżce S, aby móc zamienić numer sektora w foramcjie LBA na adres c/h/s, lecz liczba cylindrów C nie ma znaczenia w tej konwersji. Niektóre dyski używają (C,H,S)=(1032,255,63) w celu zasygnalizowania, że dysk ma co najmniej 1023*255*63 sektorów. Niestety to nie ujawnia aktualnego rozmiaru dysku i będzie ograniczało użytkowników większości wersji programu fdisk do wykorzstania tylko około 8GB ich dysków - w dzisiejszych czasach jest to poważne ograniczenie. W opisie przedstawionym poniżej, M oznacza całkowitą pojemność dysku, a C,H i S liczbę cylindrów, głowic i sektorów na ścieżce. Jeśli traktujemy C jako wynik działania C = M / (H*S), wtedy wystarczy podać H i S. Domyślnie H=63,S=32. aahhaa11774400,, ddttcc,, gg__NNCCRR55338800,, tt112288,, wwdd77000000:: H=64, S=32. aahhaa115522xx,, ppaass1166,, ppppaa,, qqllooggiiccffaass,, qqllooggiicciisspp:: H=64, S=32 unless C > 1024, W takim przypadku H=255, S=63, C = min(1023, M/(H*S)). (Tak więc C jest obcięte i h*s*C nie jest aproksymacją rozmiaru dysku M. Taka sytuacja potrafi ogłupić większość wersji programu fdsik.) Kod w pliku _p_p_a_._c wykorzystuje M+1 zamiast M i twierdzi, że to z poowdu błędu w _s_d_._c M jest przesunięte o 1. aaddvvaannssyyss:: H=64, S=32 chyba, że C > 1024 i co więcej przy włączonej opcji BIOSu `> 1 GB', co w takim przypadku daje H=255, S=63. aahhaa11554422:: Spytaj sterownika, który z możliwych dwóch schematów translacji jest w użyciu, i użyj albo H=255, S=63 lub H=64, S=32. W ostanim przypadku wyświetlany jest komunikat startowy "aha1542.c: Using extended bios translation". aaiicc77xxxxxx:: H=64, S=32 chyba, że C > 1024, i co więcej jeśli przekazano parametr startowy (boot) "extended", lub jeśli w pamięci SEEPROM, lub BIOSie był ustawiony bit `extended', to w takim przypadku przyjmuje się H=255, S=63. bbuussllooggiicc:: H=64, S=32 chyba, że C >= 1024, i co więcej na sterwoniku została włączona translacja rozszerzona, co w takim pryzpadku powoduje przyjęceie parametrów H=128, S=32 jeśli M < 2^22 lub H=255, S=63 w przeciwnym wypadku. Jednakże po dokonaniu wyboru (C,H,S) odczytywana jest tabela partycji i jeśli dla jednej z trzech możliwości (H,S) = (64,32), (128,32), (255,63) gdziekolwiek zgadza się równość endH=H-1, wtedy stosowana jest dana para (H,S) i wyświetlany jest komunikat "Adopting Geometry from Partition Table". ffddoommaaiinn:: Znajduje parametry w tabeli parametrów dysku BIOSu, lub odczytuje tabelę partycji i używa translacji H=endH+1, S=endS w przypadku pierwszej partycji (pod warunkiem, że nie jest pusta), lub używa H=64, S=32 w przypadku gdy M < 2^21 (1 GB), lub H=128, S=63 jeśli M < 63*2^17 (3.9 GB) w przeciwnym wypadku. H=255, S=63. iinn22000000:: Użyj pierwszej pary (H,S) = (64,32), (64,63), (128,63), (255,63), dla której zajdzie nierówność C <= 1024. W przeciwnym wypadku skróć C do 1023. sseeaaggaattee:: Odczytuje C,H,S z dysku. (Horror!) Jeśli C lub S jest zbyt duże wtedy przyjmuje S=17,H=2 i podwaja H aż V <<;= 1024. To znaczy, że H będzie miało wartość 0, jeśliM > 128*1024*17 (1.1 GB). To jest błąd. uullttrraassttoorr aanndd uu1144__3344ff:: W zależności o trybu sterownika wykorzystywane jest jedno z następujących odwzoroań:((H,S) = (16,63), (64,32), (64,63)) Jeśli drajwer nie poda geometrii dysku, powracamy do metody pole­ gającej na zgadywaniu na podstawie zawartości tabeli partycji, lub całkowitej pojemności dysku. Zobacz tabelę partycji. Ponieważ powszechnie partycja kończy się na granicy cylindra, znając dla każdej partycji end = (endC,endH,endS) możemy po prostu przyjąć H = endH+1 and S = endS. (Przypomnij sobie, że sektory liczy się od 1.) A dokładniej wykonywana jest następująca operacja. Jeśli istnieje niepusta partycja, odczytaj tę o największej wartości beginC. Dla tej partycji sprawdź end+1, obliczone przez dodanie start i length przy założeniu, że ta partycja kończy się na granicy sektorów. Jeśli obie wartości się zgadzają lub jeśli endC = 1023 i start+length jest całkowitą wielokrotnością (endH+1)*endS, wtedy możemy założyć, że ta partycją rzeczywiście była wyrównana do granicy cylindra i przyjąć H = endH+1 i S = endS. Jeśli jednak tak nie jest, a to dlatego, że nie ma żadnej partycji, lub dlatego, że partycje mają dziwne rozmiary wtedy spróbuj wykorzystać pojemność dysku M. Algorytm: przyjmij H=M/(62*1024) (zaokrąglone w górę), S = M/(1024*H) (zaokrąglone w gorę), C = M/(H*S) (zaokrąglone w dół). W ten sposób otrzymamy geometrię (C,H,S), prz czym C nie przekroczy 1024, a S 62. 77.. OOdd ttłłuummaacczzaa Wszelkie uwagi na temat tłumaczenia mile widziane. Uwagi merytoryczne prosze kierować do autora tekstu angielskiego, chyba że podejżewasz, że są one wynikiem błędnego tłumaczenia. Inne dokumenty HOWTO przetłumaczone na język polski znajdziesz tutaj: http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/. Wersje txt i html lepiej nadajace sie do druku sa tutaj: ftp://www.ippt.gov.pl/pub/Linux/JTZ/. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/META-HOWTO.pl.txt������������������������������������������������������0100664�0001750�0001750�00000042657�06717116340�017213� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Linux Meta-FAQ Michael K. Johnson, johnsonm@redhat.com. v4.5, 16 July 1996 wweerrssjjaa ppoollsskkaa ppiioottrr..ppooggoorrzzeellsskkii@@iipppptt..ggoovv..ppll ww 11..00..11;; LLuuttyy 11999977 To jest META-FAQ dla Linuxa. Jest to głównie lista wartościowych źródeł inforacji. Jeśli chcesz się dowiedzieć więcej o Linuxie, lub masz problemy i szukasz pomocy zapoznaj się podanymi dokumentami. Pierwszą wersją tego dokumentu napisał Lars Wirzenius (wirze­ niu@cc.helsinki.fi) . Obecnie opiekuje się nim Michael K. Johnson (johnsonm@redhat.com). Wersją polską opiekuje się piotr.pogorzel­ ski@ippt.gov.pl. Napisz do mnie jeśli masz jakiekolwiek pytania na temat tego dokumentu. 11.. WWpprroowwaaddzzeenniiee CCoo ttoo jjeesstt LLiinnuuxx?? Linux jest niezależną implementacją systemu operacyjnego zgodnego ze standardem POSIX, z rozszerzeniami pochodzącymi z systemów SYSV i BSD, który został stworzony od samego początku (wygląda i zachowuje się jak Unix). Nie ma w nim prawnie zastrzeżonego kodu. Linux jest swobodnie rozpowszechniany na warynkach Licencji GNU Public License. Działa na komputerach zgodnych IBM PC o architekturze ISA lub EISA (z różnymi wariantami magistrali lokalnej VLB i PCI) z procesorem 386 lub lepszym. Dodatkowo, został przeniesiony na komputery typu Amiga i Atari z jednostami MMU. To znaczy proesory 68020 z zewnętrznymi jednostami MMU, 68030, 68040 lub 68060. Wymagana jest również jednostak FPU (koprocesor), cybą, ze ktoś w końcu napisze emulator FPU. Patrz /pub/linux/680x0 w mirrorach tsx-11.mit.edu. Aktualne versje jądra obslugują również architekturę DEC Alpha i Sun SPARC. Dystrybucja RedHat Commercial Linux jest aktualnie jedyną dystrybucją dla procesorów Alpha. Dla procesora SPARC dostępna jest dystrybucja Red Hat i Debian (lub wkrótce będzie). Obsługa ARM, PowerPC i MIPS jest w różnych stadiach rozwoju. Czytaj comp.os.linux.announce. Dokładne inforamcje o wymaganiach sprzętowych znajdziesz w FAQ. Jądro Linuxa zostało napisane przez Linusa Torvaldsa (Linus.Torvalds@.Helsinki.FI) z Finlandii i wielu innych ochotników z całego świata. Większość oprogramowania pracującego pod Linuxem jest darmowa, wiele z nich pochodzi z projektu GNU. FFAAQQ nnaa tteemmaatt LLiinnuuxxaa Zbiór najczęściej zadawanych pytań wraz z odpowiedziami, w którym odpowiedź na większość pytań znajdziesz szybciej niż w sieci. Dostępny w większości archiwów ftp (/pub/linux/docs na tsx-11.mit.edu) i rtfm.mit.edu, podstawowym miejscu przechowywania wszelkich dokumentów FAQ. DDookkuummeennttyy HHOOWWTTOO Podobne do FAQ, lecz zamiast odpowiedzi na częste problemy wyjaśniają jak wykonać różne, powszechne zadania, np. jak zamówić dystrybucję Linuxa, jak skonfigurować drukarkę, zestawić podstawowe połąćzenie UUCP w celu dystrybucji Usenet News, itp. Zobacz sunsite.icm.edu.pl /pub/Linux/sunsite/docs/HOWTO, znajdziesz tam pełen zestaw najnowszych wersji wszystkich dokumentów HOWTO. Inne miejsca z aktualnymi kopiami to susnite.icm.edu.pl ftp.cc.gatech.edu i tsx-11.mit.edu. Dodatkowo, istnieje wiele którkich, dowolnie sormatowanych dokumentów nazwanych mini-HOWTO. Opisują bardzo specyficzne tematy, np. co to jest BogoMIPS lub jak używać Color-ls. Są dostępne w katalogu /pub/Linux/susnite/docs/HOWTO/mini. GGrruuppyy nnoowwiinnkkoowwee nnaa tteemmaatt LLiinnuuxxaa Istnieje kilkanaście grup usenet news na temat Linuxa. W jezyku polskim jest ppll..ccoommpp..ooss..lliinnuuxx. Dobrym pomysłem jest też śledzenie grupy comp.os.linux.announce, która jest moderoana przez Larsa Wirzeniusa. Aby umieścić na niej jakąś wiadomość należy ją wysłać do linux-announce@news.ornl.gov. Wszelkie pytania na temat tej grupy należy kierować bezpośrednio do Larsa Wirzeniusa na adres wirzeniu@kruuna.helsinki.fi. Grupa comp.os.linux.announce jest grupą moderowaną i służy do umieszczania ogłoszeń na temat nowych wersji programów, poprawek, ogłoszeń o różnych wydarzeniach dotyczących Linuxa. Grupa comp.os.linux.answers jest grupą moderowaną, na którą są przesyłane róznego rodzaju dokumentacje, miedzy innymi Linux FAQ i wszelkie dokumenty HOWTO. Grupa comp.os.linux.setup jest grupą niemoderowaną przeznaconą do dyskusji spraw związanych z konfiuracją Linuxa. Grupa comp.os.linux.admin jest grupą niemoderowaną przeznaczoną do dyskusji na temat administrowania Linuxem. Grupa comp.os.linux.development.system jest grupą niemoderowaną przeznaczoną do dyskusji na temat rozwoju jjąąddrraa Linuxa. Pytania związane z budową różnych aplikacji jakie mogą być umieszczane w tej grupie muszą dotyczyć wyłącznie współpracy danej aplikacji z jądrem. Wszelkie inne pytania dotyczące budowy aplikacji są zwykle specyficzne dla Unixa i powinny być kierowane do grupy comp.os.unix, chyba że są bardzo specyficzne dla Linuxa, a wtedy należy je kierować do comp.os.linux.apps. Grupa comp.os.linux.development.apps jest grupą niemoderowaną przeznaczoną do dyskusji na tematy związane z budową aplikacji specyficznych dla Linuxa. Nie jest przeznaczona do poszukiwania rożnego rodzaju aplikacji pod linuxa, ani nie jest miejscem na dyskusję jakie aplikacje powinny się pojawić. Grupa comp.os.linux.hardware służy do dyskusji na temat sprzetu, lecz pytania muszą dotyczyć Linuxa. Grupa comp.os.linux.networking służy do dyskusji problemów związanych z rozwojem obsługi i konfiguracją sieci. Grupa comp.os.linux.x służy do dyskusji na temat problemów korzystania z X Window System specyficznych dla Linuxa. Grupa comp.os.linux.misc jest grupą niemoderowaną, gdzie można dyskutować na inne tematy, które nie pasują do wymieniownych wcześniej grup, a które dotyczą Linuxa. Zasadniczo nniiee należy wysyłać atykułu do kilku grup jednocześnie (crosssposting). Wyjątkiem jest okazjonalne wysyłanie wiadomości do grupy niemoderowanej i comp.os.linux.announce. Ideą podziału comp.os.linux. na tak wiele grup było zmiejszenie ruchu w każdej z nich. Ci, którzy się temu nie podporządkują będą tępieni bez litości... IInnnnee ggrruuppyy ddyysskkuussjjnnee Nie zakładaj, że wszystkie twoje pytania są specyficzne dla grup poświęconych Linuxowi. Jeśli twoje pytanie tak na prawdę dotyczy programowania w szelu pod unixem lub klonem unixa, to zadaj pytanie w comp.os.unix.shell. Dotyczy Emacsa? Pytaj w gnu.emacs.help. Również jeśli nie znasz innej grupy gdzie mógłbyś zadać to pytanie, lecz wydaje ci się, że powinna istnieć, spytaj grzecznie w swoim liscie czy ktoś nie zna grypy, która bylaby lepsza do zadania tego pytania. Użytkownik Linuxa powinie pamiętać co najmniej o takich grupach, jak comp.unix.{questions,shell,programming,bsd,admin} i comp.windows.x.i386unix . WWoorrlldd--WWiiddee WWeebb Greg Hankins, gregh@cc.gatech.edu, opiekuje się stroną domową WWW dla projektu Linuxa. URL: http://sunsite.unc.edu/mdw/linux.html PPoolliisshh HHOOWWTTOO Zanim zaczely powstawać tłumaczenia dokumentów angielskich, powstał http://sunsite.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/Polish- HOWTO <http://sunsite.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/Polish- HOWTO>. Chyba pierwszy dokument o Linuxie w Polsce i po polsku. HHOOWWTTOO ppoo ppoollsskkuu Na początku 1997 roku zawiązała się grupa osób w celu przetłumaczenia dokumentów HOWTO na język polski. Zobacz http://www.jtz.org.pl/ <http://www.jtz.org.pl> Kontakt z ludźmi zajmującymi się tłumaczeniem HOWTO na polski to ogólnie dostępna lista jtz@ippt.gov.pl. Można na nią wysłać list nie będąc na tę listę zapisanym, lecz pamiętaj, że jest ona przeznaczona przede wszystkim dla osób pprraaccuujjąąccyycchh nad tłumaczeniami. Pamiętaj o tym wysyłając tam list. LLookkaalliizzaaccjjaa pprrooggrraammóóww Już od ponad roku inna grupa ludzi pracuje nad tłuamczeniem komunikatów programów GNU. Dzieki temu już niedługo twój Linux będzie mówił do ciebie po polsku. Więcej informacji znajdziesz pod adresem ftp://ftp.torun.pdi.net/pub/nls <ftp://ftp.torun.pdi.net/pub/nls>. LLiinnuuxx PPlluuss Wreszcie pojawiło sie pierwsze czasopismo o Linuxie po polsku. Pierwszy numer został wydany w styczniu 1997. Dp czasopisma dołączony jest CD-ROM. Cena detaliczna 20 zł. Więcej inforamcji na ten temat w redakcji linuxplus@software.com.pl, tel/fax (22) 6251308, adres LinuxPlus, Puszczyka 20, 02-784, Warszawa LLiinnuuxx JJoouurrnnaall Czasopismo _L_i_n_u_x _J_o_u_r_a_n_l powstało ponad dwa lata temu. Znajdziesz tam artykuły odpowiednie niemal dla każdego poziomu znajomości Linuxa i chce być pomocne dla wszystkich użytkowników Linuxa. Subsktypcja kosztuje $22 w USA, $27 w kanadzie i Meksyku, i $32 dla reszty świata, płatne w doralrach amerykańskich. Prośby o subskrybcje proszę wysyłać pod adres subs@ssc.com lub faxem do USA 1-206-782-7191, lub pocztą na adres Linux Journal, PO Box 85867, Seattle, WA 98145-1867 USA. Jeśli chcesz przesłać numer karty kredytowej pocztą elektroniczną, SSC udostępnia publiczny klucz PGP: finger info@ssc.com. KKaattaalloogg oopprrooggrraammoowwaanniiaa Inforamcję o darmowym oprogramowaniu dostępnym pod Linuxa można znaleźć w ``Katalogu oprogramowania dla Linuxa'' (Linux Software Map, LSM), ktróą można znaleźć na sunsite.icm.edu.pl w /pub/Linux/sunsite/docs/LSM.gz. Inforamcje o prowadzonych nie-komercyjnych projektach można znaleźć w ``Spisie projektów'' (Projrcts Map), wysyłanym okresowo do comp.os.linux.announce i przechowywanej w sunsite.unc.edu w katalogu /pub/Linux/sunsite/docs/Projects- Map/Projects-Map.gz. Informacje o produktach komercyjnych znajdują się w ``Spisie oprogramowania komercyjnego dla Linuxa'' wysłanym okazjonalnie do comp.os.linux.announce. 22.. JJaakk zzddoobbyyćć LLiinnuuxxaa 33.. AArrcchhiiwwaa FFTTPP LLiinnuuxxaa Kompletna lista archiwów ftp Linuxa znajduje się w dokumencie Linux INFO-SHEET, który zawsze można znaleźć w tsx-11.mit.edu w katalogu /pub/linux/docs/. dostępne są wersje DVI (INFO-SHEET.dvi) i PostScript (INFO-SHEET.ps). Najważniejsze archiwa przedstawiono poniżej. Archiwum najbliżej ciebie znajdziesz w Linux INFO-SHEET. textual name numeric addr Linux directory ======================= ============== =============== tsx-11.mit.edu 18.86.0.44 /pub/linux sunsite.unc.edu 152.2.22.81 /pub/Linux ftp.funet.fi 128.214.248.6 /pub/Linux ftp.sunsite.icm.edu.pl 148.81.209.3 /pub/Linux Pierwsze trzy, są to główne archiwa linuxa, gdzie umieszcane jest najwięcej nowych programów. Istnieje wiele mirrorów, korzystaj z najbliższego (w sensie polączeń sieciowych). 33..11.. LLiinnuuxx ww BBBBSS--aacchh Okazjonanie ktoś przesyła listę BBSów w których jest dostępny Linux. Możesz z nich korzystać jeśli nie masz dostępu do FTP. Lista ta jest dostępna w ftp.cdrom.com w pliku /pub/linux/docs/bbs.list. Jesli nie masz dostępu do ftp możesz ją otrzymać za pomocą programu ftpmail (opisanego później w tym dokumencie) lub poproś przyjaciela, który ma distęp do internetu. 33..22.. LLiinnuuxx nnaa nnoośśnniikkaacchh ffiizzyycczznnyycchh Linux jest dystrybuwany przez wielu sprzedawców na dyskietkach, krązkach CD i taśmach. Przeczytaj Distribution HOWTO wysyłane regularnie do comp.os.linux.announce i dostępne w susnite.unc.edu jako /pub/Linux/docs/HOWTO/distribution-HOWTO. W Polsce Linux jest dostepny głównie przez FTP. Wydawnictwo software wydało krążek z dystrybucją REdHat 3.0.3 jesienią 1996. Wraz z pierwszym numerem LinuxPlus dostępna była płytka CD z dystrybucją RedHat 4.0, drugi nume zawierał Debiana 1.2. Wraz z pojawieniem się LinuxPlus powstała możliwść zdobycia w miarę aktualnej dystrybucji CD, bez konieczności kupowania krązków za granicą lub w firmach specjalizujących się w ich sprowadzaniu. 33..33.. AAFFSS Linux jest dostępny przez AFS przez zamontowanie wolumenu project.linux z sipb.mit.edu. 33..44.. UUsslluuggii ffttppmmaaiill Sunsite oferuje usługę ftp-mail --- mail ftpmail@sunsite.unc.edu. 44.. DDyyssttrryybbuuccjjee LLiinnuuxxaa Linux jest rozpowszechniany przez jego autora jako jądro. Inni zgromadzili wokół niego oprogramowanie i stworzyli tzw. dystrybucje, z których powstała ogroman większość instalacji Linuxa. Lączą one jądro udostępnione przez autora z dodtkowym oprogramowaniem budując w ten sposób kompletny system. Wiekszośc dystrybucji zawiera zrówno oprogramowanie systemowe, jak również aplikacje. Istnieje kilkanaście dystrybucji Linuxa dostępnych w różnych miejscach. Sunsite gromadzi niemal wszystkie z nich i udostępnia w katalogu /pub/Linux/distributions. Najczęsciej polecane, swobodnie dostępne to Red Hat, Debian i Slackware. Wszystkie są dostępne za darmo przez internet, jak również za opłata na krązkach CD. Istnieją również inne dystrybucje Linuxa. Większość komercyjnych dystrybucji Linuxa ogłasza sięw _L_i_n_u_x _J_o_u_r_n_a_l. 55.. LLiissttyy ddyysskkuussyyjjnnee ddoottyycczząąccee lliinnuuxxaa Najpopularniejsza i jedyna w polsce lliinnuuxx@@sspprroocckkeett..ppwwrr.wroc.pl złączona z grupą usenet news ppll..ccoommpp..ooss..lliinnuuxx stanowi najlepsze zródło inforamcji o Linuxie w Polsce. Inne wykorzystywane przede wszystkim przez ludzi pracujących nad rozwojem oprogramowania lub dotyczące dyskusji nie dostępnych publicznie wersji testowych. Adresy znajdziesz w Linux FAQ. Wyślij list na adres majordomo@vger.rutgers.edu z jednym słowem _h_e_l_p w treści listu, a otrzymasz list wyjaśniający jak zapisać się na dostepne tam grupy. Zachowaj te odpowiedz, gdzyż znajdziesz tam informacje jak się z takich grup wypisać. Jesli nie zapoznasz się z inforamacjami w tym liście i bedziesz wysyłał do tych grup z prośbą o wypisanie cię z nich zostaniesz sponiewierany za marnowanie łączy i cudzych pieniędzy. 66.. DDookkuummeennttaaccjjaa rróóżżnneeggoo rrooddzzaajjuu oopprrooggrraammoowwaanniiaa Wiele programów jest dostępnych z pewnego rodzaju dokumentacją, często wpliku o nazwie README lub podobnej. BARDZO dobrym pomysłem jest uważne przestudiowanie takich plików. Nudno jest oglądać (i odpowiadać) na pytania, na które odpowiedź można znaleźć w dokumentacji. 77.. WWiięęcceejj ddookkuummeennttaaccjjii Projekt dokumentacji dla Linuxa (Linux Dokumentation Project, LDP) opracował mnóstwo dokumentacji. W tej chili jest dostępne ponad 1600 stron dokumentacji w postaci książek udostępnionych do darmowego kopiowania i rozpowszechniania. Powstało również wiele stron podręcznika (man pages) i powstaje ich coraz więcej. Zobacz sunsite.icm.edu.pl:/pub/Linux/sunsite/docs/LDP, znajdziesz tam dokumenty stworzone przez LDP. LDP dostarcza również opisane wcześniej dokumety HOWTO. 88.. TTrrzzyymmaanniiee rręękkii nnaa ppuullssiiee Ważne nowe wersje oprogramowania są zwykle ogłaszane w grupie newsowej comp.os.linux.announce. finger torvalds@klaava.helsinki.fi lub finger @linux.cs.helsinki.fi aby otrzymać informacje o najnowszej wersji jądra. 99.. TTeenn ddookkuummeenntt Ostania wersja tego dokumentu powinna być zawsze dostępna pod adresem <http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/html/META-HOWTO.pl.html>, a najnowszą werję angielską na podstawie której powstał ten dokument znajdziesz pod adresem <http://sunsite.unc.edu/mdw/linux.html> 1100.. PPrraawwaa aauuttoorrsskkiiee Znaki firmowe należą do ich właścicieli. Nie gwarantujemy satysfakcji. Żadnych gwarancji związanych z tym dokumentem. Nie jest ważny tam, gdzie jest to zabronione Zawartość teg odokuemntu jest własnością publiczną (public domain), lecz jeśli bedziesz go cytował, grzeczność nakazuje wspomnieć o autorach. 1111.. OOdd ttłłuummaacczzaa Prawa autorskie tłumaczenia należą do (c) 1997 piotr.pogorzelski@ippt.gov.pl. Możesz robić z nim co zechcesz pod warunkiem, że zachowasz informacje o prawach autorskich. Zmiany w stosunku do oryginału to zmiana odwołań sunsite.unc.edu do jego kopii na sunsite.icm.edu.pl, rozdziały o polskich dokumentach i tłumaczeniach, oraz tekst o Linux+. ���������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/MILO-HOWTO.pl.txt������������������������������������������������������0100664�0001750�0001750�00000152133�06717116340�017214� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ MILO HOWTO Autor: David A. Rusling david.rusling@reo.mts.dec.com v0.84, 6 Grudnia 1996 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v1.0, 24 Lipca 1998 Ten dokument opisuje Miniloader (Miniładowacz), program dla komputerów opartych na procesorze Alpha, który może być używany do inicjalizacji maszyny i ładowania Linuxa. Alpha Linux Miniloader (jest to jego pełna nazwa) jest też znany jako MILO. Dokument ten został napisany w stan­ dardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp://gatekeeper.dec.com/pub/Digital/Linux-Alpha/Miniloader/docs. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie 1.1. Prawa autorskie 1.2. Nowe wersje tego dokumentu 2. Co to jest MILO? 3. Standardowe, pre-kompilowane obrazy MILO 4. Kompilacja MILO 5. Ładowanie MILO 5.1. Ładowanie MILO z firmware'u Windows NT ARC 5.2. Ładowanie MILO z ,,Evaluation Board Debug Monitor'' 5.3. Ładowanie MILO z ,,bezpiecznej dyskietki startowej'' 5.4. Ładowanie MILO z pamięci Flash 5.5. Ładowanie MILO z konsoli SRM 5.6. Informacje o płytach głównych 5.6.1. AXPPCI33 (NoName) 5.6.2. AlphaPC64 (Cabriolet) 5.6.3. EB66+ 5.6.4. EB64+/Aspen Alpine 5.6.5. Universal Desktop Box (Multia) 5.6.6. EB164 5.6.7. PC164 5.6.8. XL266 5.6.9. Platform2000 6. Interfejs użytkownika MILO 6.1. Komenda ,,help'' 6.2. Ładowanie Linuxa 6.3. Resetowanie Linuxa 6.4. Komenda ,,bootopt'' 7. Używanie programu zarządzającego pamięcią flash 7.1. Komenda ,,help'' 7.2. Komenda ,,list'' 7.3. Komenda ,,program'' 7.4. Komenda ,,environment'' 7.5. Komenda ,,bootopt'' 7.6. Komenda ,,quit'' 8. Ograniczenia 9. Rozwiązywanie problemów 10. Podziękowania 11. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee Ten dokument opisuje Miniładowacz (Miniloader) dla Linuxa na Alphę AXP (MILO). To firmware jest używane do inicjalizacji systemów Alpha AXP, załadowania oraz startowania Linuxa i w końcu do zapewnienia kodu PAL (PALcode) dla Linuxa. 11..11.. PPrraawwaa aauuttoorrsskkiiee Prawa autorskie Alpha Miniloader (MILO) HOWTO: Copyright (C) 1995, 1996 David A. Rusling. PPrraawwaa aauuttoorrsskkiiee. Jak wszystkie Linuxowe dokumenty HOWTO, może być powielane i rozpowszechniane w całości lub w części, za pomocą każdego środka przekazu, fizycznego lub elektronicznego, jeżeli uwaga o prawach autorskich została zachowana na wszystkich kopiach. Komercyjna redystrybucja jest dozwolona i zalecana; jednakże autor _c_h_c_i_a_ł_b_y być powiadomiony o takich dystrybucjach. Możesz też przetłumaczyć to HOWTO na dowolny język, jeżeli zostawisz wypowiedź o prawach autorskich oraz oświadczenie niezmienione, oraz dodasz notatkę o tłumaczu. OOśśwwiiaaddcczzeenniiee. Próbowałem umieścić tu najpoprawniejsze i najnowsze informacje, które są mi dostępne, nie mogę jednak zagwarantować, że ich użycie nie spowoduje utraty danych lub sprzętu. NIE ZAPEWNIAM ŻADNEJ GWARANCJI dotyczącej informacji w tym HOWTO, nie mogę być więc odpowiedzialny za jakiekolwiek skutki użycia danych z niego. 11..22.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu Najświeższa wersja tego dokumentu znajduje się pod adresem ftp://gatekeeper.dec.com/pub/Digital/Linux-Alpha/Miniloader/docs, a David Mosberger-Tang był uprzejmy umieścić go w formacie HTML na jego znakomitej stronie o Linux-Alpha http://www.azstarnet.com/~axplinux/. 22.. CCoo ttoo jjeesstt MMIILLOO?? Na systemach PC opartych na procesorach Intel, firmware zwane BIOSem uruchamia komputer i ładuje obraz (image) do uruchomienia z bloku startowego systemu plików DOSu. Jest to mniej więcej to samo, co wykonuje MILO na systemach Alpha, jednakże istnieje kilka interesujących różnic pomiędzy BIOSem a MILO, jedną z nich jest używanie przez MILO niezmodyfikowanych standardowych sterowników urządzeń Linuxa. MILO jest firmware'em, inaczej niż LILO, który jest ładowany przez BIOS. Główne funkcjonalne części MILO to: 1. PALcode, 2. Kod uruchamiania pamięci (buduje tablice stronicowania i włącza adresowanie wirtualne), 3. Kod grafiki (emulacja BIOSu i TGA (21030)), 4. Kod jądra Linuxa. Na niego składa się prawdziwy kod (np. obsługa przerwań) i pseudo-jądro, 5. Sterowniki urządzeń blokowych Linuxa (np. sterownik stacji dysków), 6. Obsługa systemu plików (ext2, MS-DOS i ISO9660), 7. Kod interfejsu użytkownika (MILO) 8. Kod interfejsu jądra (uruchamia HWRPB i mapę pamięci dla Linuxa), 9. Kod NVRAM do zarządzania zmiennymi środowiskowymi Dalsze akapity dokładnie opisują funkcjonalne części MILO. PALcode jest cienką warstwą oprogramowania dostosowującą procesor do konkretnego systemu operacyjnego. Działa w specjalnym trybie (PALmode), który posiada kilka ograniczeń, ale używa standardowego zestawu instrukcji Alphy i tylko pięciu dodatkowych instrukcji. W ten sposób, na procesorze Alpha mogą być uruchamiane systemy tak różne, jak np. Windows NT, OpenVMS, Digital UNIX i oczywiście Linux. PALcode, którego używa MILO (i przez to sam Linux) jest, jak reszta MILO, darmowa. Pochodzi z przykładu ewaluacyjnych płyt głównych (Evaluation Boards, EB) dla Digital UNIXa. Różnice pomiędzy kodami PAL wynikają z różnic w sposobach obsługi przerwań w procesorach Alpha (płyty główne do 21066 mają inną mapę I/O niż systemy 21064+2107x (2107x to APECS, chipset do 21064 - przyp. tłum.)), oraz z liczby dostępnych płyt głównych. Żeby MILO działał poprawnie, musi znać ilość dostępnej pamięci i miejsce, w którym Linux będzie działał, musi też być w stanie przydzielić tymczasową pamięć dla sterowników urządzeń Linuxa. Kod utrzymuje mapę pamięci, która posiada rekordy dla permanentnie i tymczasowo przydzielonych stron. W czasie uruchamiania MILO dekompresuje się w poprawne miejsce pamięci fizycznej. Kiedy przekazuje kontrolę jądru Linuxa, zarezerwowywuje pamięć dla skompresowanej wersji samego siebie, kodu PAL (który jest potrzebny jądru) i trochę struktur danych. To zostawia _w_i_ę_k_s_z_o_ś_ć pamięci w systemie dla samego Linuxa. Ostatnia część kodu pamięci to ustawienie i włączenie adresowania wirtualnego w celu zapewnienia poprawnego miejsca w wirtualnej pamięci dla struktur danych, które Linux spodziewa się tam zobaczyć. MILO zawiera kod grafiki, który inicjalizuje i używa urządzenia graficznego dla systemu. Wykryje i będzie używać urządzenie VGA, jeśli takie istnieje, jeżeli nie, będzie próbował użyć urządzenia TGA (21030). Gdy i to się nie powiedzie, przyjmie, że nie istnieje urządzenie graficzne (tylko np. terminale szeregowe - przyp. tłum.). Emulacja BIOSu, którą posiadają standardowe, skompilowane obrazy MILO, to emulacja Digitala, która obsługuje większość, jeżeli nie wszystkie dostępne standardowe urządzenia graficzne. Sterowniki urządzeń Linuxa ,,żyją'' wewnątrz jądra i spodziewają się od niego konkretnych usług. Niektóre z nich są zapewniane bezpośrednio przez kod Linuxa, np. obsługa przerwań, a inne działają dzięki specjalnym procedurom wyglądającym dla sterowników jak procedury jądra. Najsilniejsza cecha MILO, to możliwość osadzenia w nim niezmienionych sterowników urządzeń Linuxa. Daje to potencjał obsługi każdego urządzenia, które obsługuje Linux. MILO zawiera wszystkie urządzenia blokowe wkompilowane w jadro, które zostaje przy nim zbudowane, a także dużo kodu urządzeń (np. ll_rw_blk()). MILO ładuje jądro Linuxa z prawdziwych systemów plików, a nie z bloków startowych i innych dziwnych miejsc. Potrafi czytać systemy plików MSDOS, EXT2 i ISO9660. Pliki spakowane gzipem są obsługiwane i rekomendowane, zwłaszcza jeżeli ładujesz system z dyskietki, co jest dosyć wolne. MILO rozpoznaje je po rozszerzeniu W MILO zawiera prosty sterownik klawiatury, który razem z równie prostym sterownikiem grafiki pozwala posiadać mu spartański interfejs użytkownika. Interfejs ten pozwala poznać systemy plików na skonfigurowanych urządzeniach, ładować Linuxa, uruchamiać programy do uaktualniania pamięci flash, oraz ustawiać zmienne środowiskowe kontrolujące ładowanie systemu. Tak jak w LILO, możesz przekazywać parametry do jądra. MILO musi powiedzieć jądru Linuxa na jakim działa systemie, ile pamięci posiada i ile z tej pamięci jest wolne. Robi to używając struktury danych HWRPB (blok parametrów restartowania sprzętu) i skojarzonych z nią opisów części pamięci. Są one umiejscawiane w odpowiednim miejscu pamięci wirtualnej zaraz przed przekazaniem kontroli jądru Linuxa. 33.. SSttaannddaarrddoowwee,, pprree--kkoommppiilloowwaannee oobbrraazzyy MMIILLOO Jeżeli będziesz chciał uruchamiać Linuxa na standardowych płytach głównych Alphy, możesz użyć pre-kompilowanych, ,,standardowych'' obrazów (images) MILO. (notka od tłumacza: radzę zabootować Alphę ze standardowych obrazów, a potem zbudować własny, gdy Linux będzie już działał) Obrazy te (razem ze źródłami i innymi ciekawymi rzeczami) znajdują się na ftp://gatekeeper.dec.com/pub/Digital/Linux- Alpha/Miniloader Podkatalog images zawiera po jednym podkatalogu na każdy system (np. AlphaPC64), a obrazy MILO są nazywane w następujący sposób: 1. MILO - wykonywalny obraz MILO, może on być ładowany na wiele sposobów, 2. fmu.gz - Program zarządzania pamięcią flash, 3. MILO.dd - Obraz dla dyskietki startowej. Powinien być zapisany programem rawrite.exe lub dd pod Linuxem. Katalog test-images zawiera, tak jak images po jednym katalogu na standardowy system. Obrazy znajdujące się w tym katalogu są raczej eksperymentalne, ale zawierają najnowsze opcje. 44.. KKoommppiillaaccjjaa MMIILLOO (Uwaga: pamiętaj, że nie możesz zbudować MILO i jądra dla Alphy na Intel'u! Musisz dysponować drugą Alphą, albo zbudować jądro po uruchomieniu Linuxa ze standardowych obrazów MILO. Na Intelu jądro nawet się nie zacznie kompilować - spróbuj zbudować jądro na Alphę na pececie - w pliku Makefile zamień ARCH=i386 na ARCH=alpha... - przyp. tłum.) MILO kompiluje się oddzielnie, nie razem z jądrem. Ponieważ MILO potrzebuje części jądra do poprawnego funkcjonowania (np. obsługi przerwań), musisz najpierw skonfigurować i skompilować jądro, odpowiadające MILO, który chcesz skompilować. Zazwyczaj znaczy to, że powinieneś kompilować jądro z tą samą wersją co MILO. A więc MILO-2.0.25.tar.gz będzie kompilować się z linux-2.0.25.tar.gz. MILO _m_o_ż_e skompilować się z nowszą wersją jądra, ale nie musi. Dodatkowo teraz, kiedy biblioteki dzielone ELF są w pełni obsługiwane, istnieją dwie wersje źródeł MILO. Żeby zbudować je w systemie ELF, musisz najpierw rozpakować standardowe źródła, a potem nałożyć łatę (patch) ELF na te źródła (musi mieć ten sam numer wersji). Przyjmę teraz, że źródła jądra oraz skompilowane obiekty (.o) znajdują się w katalogu /usr/src/linux, a jądro zostało w pełni skompilowane komendą make boot. (pamiętaj o ustawieniu ARCH=alpha w pliku Makefile jądra _P_R_Z_E_D wydaniem polecenia make (menu)(x)config!!! - przyp. tłum.) Żeby skompilować MILO, zmień katalog na zawierający źródła MILO i przywołaj make komendą: $ make KSRC=/usr/src/linux config Tak jak podczas kompilacji jądra, zadane zostanie kilka pytań. Echo output to the serial port (MINI_SERIAL_ECHO) [y] Przesyłać wyjście do portu szeregowego (MINI_SERIAL_ECHO) [y] Dobrym pomysłem jest włączenie przesyłania wiadomości printk jądra do /dev/ttyS0, jeżeli można to zrobić. Jeżeli możesz (i chcesz), napisz ,,y'', jeżeli nie, ,,n''. Wszystkie standardowe, pre-kompilowane obrazy MILO posiadają wejście/wyjście na port szeregowy COM1. Use Digital's BIOS emulation code (not free) (MINI_DIGITAL_BIOS_EMU) [y] Użyć kodu emulacji BIOSu Digitala (nie jest darmowy) (MINI_DIGITAL_BIOS_EMU) [y] Ten kod jest załączony jako biblioteka, która jest darmowa dopóki używa się jej w systemie opartym na procesorze Alpha. Źrodła nie są dostępne. Jeżeli odpowiesz n, zbudowana zostanie alternatywna darmowa emulacja BIOSu. Jej źródła są dołączone do MILO. Pamiętaj, że obecnie nie możesz wybrać emulacji Digitala w systemach ELF (biblioteka nie jest jeszcze gotowa), musisz więc odpowiedzieć ,,nie'' na to pytanie. Build PALcode from sources (Warning this is dangerous) (MINI_BUILD_PALCODE_FROM_SOURCES) [n] Zbudować PALcode ze źródeł (Uwaga to jest niebezpieczne) (MINI_BUILD_PALCODE_FROM_SOURCES) [n] Powinieneś zrobić to tylko jeżeli modyfikowałeś źródła kodu PAL, jeżeli nie, użyj standardowego, pre-kompilowanego kodu PAL dołączonego do MILO. Teraz jesteś gotowy do zbudowania obrazu MILO: $ make KSRC=/usr/src/linux Kiedy kompilacja zostanie zakończona, obraz MILO znajduje się w pliku o nazwie milo. Będzie się tam też znajdować wiele obrazów o nazwach milo.*, które powinny być zignorowane. 55.. ŁŁaaddoowwaanniiee MMIILLOO Najlepiej obsługiwany sposób ładowania MILO to ładowanie z firmware'u Windows NT ARC, ponieważ większość systemów zawiera tą metodę. Jednakże istnieje wiele różnych sposobów ładowania MILO. Może on być załadowany z: ˇ dyskietki startowej (failsafe boot block floppy), ˇ firmware'u Windows NT ARC ˇ konsoli SRM Digitala ˇ ,,Alpha Evaluation Board Debug Monitor'' - programu monitorującego płyt ewaluacyjnych, ˇ pamięci flash ROM 55..11.. ŁŁaaddoowwaanniiee MMIILLOO zz ffiirrmmwwaarree''uu WWiinnddoowwss NNTT AARRCC Większość, jeżeli nie wszystkie systemy oparte na Alfie AXP posiadają Windows NT ARC firmware i jest to preferowana metoda inicjalizowania MILO i Linuxa. Kiedy firmware Windows NT działa i posiadasz poprawny dla twojego systemu obraz MILO, metoda ta jest bardzo łatwa do używania. Windows NT ARC firmware jest środowiskiem, w którym mogą działać programy, wykonując odwołania do firmware'u w celu wykonywania różnych akcji. Windows NT OSloader jest programem, który spełnia tą funkcję. Linload.exe jest znacznie prostszym programem, który jedynie wczytuje i uruchamia MILO. Ładuje on poprawny plik z obrazem do pamięci pod adres 0x00000000 i wtedy wykonuje odwołanie PAL ,,swap-PAL'' (zamień PAL) do niego. MILO, tak jak Linux, używa innego kodu PAL niż Windows NT i dlatego musi przeprowadzić zamianę. Następnie MILO przenosi się do 0x200000 i kontynuuje resetowanie kodu PAL. Zanim dodasz opcję ładowania Linuxa, będziesz musiał skopiować linload.exe oraz MILO, którego chcesz załadować w miejsce, z którego Windows NT ARC będzie mógł go odczytać. W poniższym przykładzie przyjmuję, że ładujesz MILO z dyskietki w formacie DOS'a: 1. W menu ładowania (boot menu) wybierz ,,Supplementary menu...'' (menu dodatkowe) 2. W menu ,,Supplementary menu'' wybierz opcję ,,Set up the system...'' (ustaw system) 3. W Setup menu wybierz ,,Manage boot selection menu...'' (menu zarządzania opcjami ładowania) 4. W ,,Boot selections menu'' wybierz ,,Add a boot selection'' (dodaj opcję ładowania) 5. Wybierz ,,Floppy Disk 0'' 6. Wprowadź ,,linload.exe'' jako katalog i nazwę pliku ładowacza systemu (osloader) 7. Odpowiedz ,,tak'' na pytanie czy system operacyjny znajduje się na tej samej partycji co ładowacz systemu 8. Wprowadź ,,\fR'' jako katalog główny systemu operacyjnego 9. Zazwyczaj wpisuję ,,Linux'' jako nazwę tej opcji ładowania 10. Odpowiedz ,,nie'' na pytanie o inicjalizację debuggera podczas ładowania 11. Powinieneś wrócić do ,,Boot selections menu'', wybierz w nim opcję ,,Change a boot selection option'', a w niej opcję, którą właśnie stworzyłeś 12. Użyj strzałki w dół, aby dostać się do rekordu ,,OSLOADFILENAME'', wpisz w nim nazwę obrazu MILO, którego chcesz używać, np. ,,noname.arc, następnie naciśnij return (enter). 13. Nasiśnij ESC żeby wrócić do ,,Boot selections menu'' 14. Wybierz ,,Setup Menu'' (lub naciśnij jeszcze raz ESC), a w nim ,,Supplementary menu'' i ,,Save Changes'' 15. ESC cofnie cię do ,,Boot menu'', możesz już spróbować inicjalizować MILO. Jeżeli nie chcesz, żeby Linux był pierwszą opcją ładowania, możesz zmienić kolejność opcji w ,,Boot selections menu''. Na końcu tych czynności powinieneś otrzymać opcję ładowania wyglądającą podobnie do tej: LOADIDENTIFIER=Linux SYSTEMPARTITION=multi(0)disk(0)fdisk(0) OSLOADER=multi(0)disk(0)fdisk(0)\linload.exe OSLOADPARTITION=multi(0)disk(0)fdisk(0) OSLOADFILENAME=\noname.arc OSLOADOPTIONS= Możesz teraz uruchomić MILO (i Linuxa). Możesz załadować linload.exe i MILO bezpośrednio z systemu plików, który rozumie Windows NT, takiego jak NTFS lub DOS na twardym dysku. Linia OSLOADOPTIONS zawiera opcje, które zostaną przekazane do MILO. Jeżeli chcesz załadować Linuxa bezpośrednio z Windows NT ARC nie pauzując przy MILO, powinieneś wpisać następującą komendę w OSLOADOPTIONS: boot sda2:vmlinux.gz root=/dev/sda2 Przeczytaj rozdział ``Interfejs użytkowwnika MILO'', żeby uzyskać więcej informacji o komendach MILO. Inna (ale jest to obejście :( ) metoda ładowania MILO przez WNT ARC, to umieszczenie MILO na dyskietce MS-DOS, nazwanie go fwupdate.exe i uruchomienie opcji ,,Upgrade Firmware''. 55..22.. ŁŁaaddoowwaanniiee MMIILLOO zz ,,,,EEvvaalluuaattiioonn BBooaarrdd DDeebbuugg MMoonniittoorr'''' Płyty ewaluacyjne (i często ich klony) posiadają obsługę Monitora płyt ewaluacyjnych (Alpha Evaluation Board Debug Monitor). Przeczytaj dokumentację twojego systemu przed rozpatrywaniem użycia tej metody ładowania MILO. Następujące systemy _n_a_p_e_w_n_o obsługują Monitor: ˇ AlphaPC64 (Sekcja ``AlphaPC64'') ˇ EB64+ (Sekcja ``EB64+'') ˇ EB66+ (Sekcja ``EB66+'') ˇ EB164 (Sekcja ``EB164'') ˇ PC164 (Sekcja ``PC164'') Zanim użyjesz tej metody, pamiętaj, że wczesne wersje Monitora Ewaluacyjnego nie posiadały sterowników grafiki i klawiatury, musisz więc podłączyć inny komputer przez port szeregowy, żebyś mógł używać Monitora. Jego interfejs jest bardzo prosty, a komenda help pokazuje mnóstwo dostępnych komend. Najbardziej nas interesujące zawierają słowo boot albo load. Monitor Płyt Ewaluacyjnych może załadować obraz przez sieć (netboot) albo z dyskietki (flboot). W obu przypadkach, ustaw adres ładowania na 0x200000 (> bootadr 200000) przed uruchomieniem obrazu. Jeżeli obraz znajduje się na dyskietce (zauważ że obsługiwane są tylko dyskietki w formacie DOS), będziesz musiał wpisać następującą komendę: AlphaPC64> flboot <nazwa-obrazu-MILO> 55..33.. ŁŁaaddoowwaanniiee MMIILLOO zz ,,,,bbeezzppiieecczznneejj ddyysskkiieettkkii ssttaarrttoowweejj'''' Tylko AXPPCI33 _n_a_p_e_w_n_o obsługuje ,,bezpieczną dyskietkę startową'' (Sekcja ``NoName''). Jeżeli nie używasz standardowego, pre-kompilowanego obrazu .dd MILO, będziesz musiał zbudować dyskietkę startową SRM. Kiedy już skompilowałeś MILO, musisz wykonać następujące komendy w Digital Unix'ie: fddisk -fmt /dev/rfd0a cat mboot bootm > /dev/rfd0a disklabel -rw rfd0a 'rx23' mboot bootm Lub w Linuxie: cat mboot bootm > /dev/fd0 Jeżeli masz standardowy obraz MILO (powiedzmy MILO.dd), możesz stworzyć dyskietkę startową, używając następującej komendy: dd if=MILO.dd of=/dev/fd0 (radzę jednak zapisywać programem rawrite.exe spod DOS'a - ale poeksperymentować z dd można - przyp. tłum.) 55..44.. ŁŁaaddoowwaanniiee MMIILLOO zz ppaammiięęccii FFllaasshh Istnieje kilka systemów, gdzie MILO może być wypalone we flash'u i ładowane bezpośrednio (a nie przez firmware Windows NT ARC): ˇ AlphaPC64 (Sekcja ``AlphaPC64'') ˇ NoName (Sekcja ``NoName'') ˇ EB66+ (Sekcja ``EB66+'') ˇ EB164 (Sekcja ``EB164'') ˇ PC164 (Sekcja ``PC164'') 55..55.. ŁŁaaddoowwaanniiee MMIILLOO zz kkoonnssoollii SSRRMM Konsola SRM (skrót od System Reference Manual, podręcznik systemowy (? - przyp. tygrys)) nie wie nic o systemach plików bądź partycjach dyskowych, oczekuje po prostu na zajęcie odpowiedniego przedziału kolejnych sektorów dysku przez drugorzędny ładowacz, zaczynając od danego offsetu. Informacja opisująca drugorzędny ładowacz (jego rozmiar i offset) znajduje się w pierwszym 512-bajtowym bloku. Żeby załadować MILO z konsoli SRM, musisz wygenerować taką strukturę w urządzeniu, do którego SRM ma dostęp (np. dyskietka). Do tego służy mboot i bootm, mboot jest pierwszym, opisującym blokiem, a bootm jest obrazem MILO zaokrąglonym do 512-bajtowego bloku. Żeby załadować MILO z urządzenia zawierającego blok startowy, zbuduj mboot oraz bootm i nagraj je na urządzenie startowe następującą komendą: $ cat mboot bootm > /dev/fd0 Możesz też ściągnąć odpowiedni plik MILO.dd i nagrać go używając RAWRITE.EXE lub dd. Kiedy już to zrobiłeś, możesz uruchomić konsolę SRM i użyć jednej z jej wielu komend do załadowania MILO. Na przykład, jeżeli chcesz załadować MILO z dyskietki startowej, powinieneś użyć następującej komendy: >>>boot dva0 (boot dva0.0.0.0.1 -flags 0) block 0 of dva0.0.0.0.1 is a valid boot block reading 621 blocks from dva0.0.0.0.1 bootstrap code read in base = 112000, image_start = 0, image_bytes = 4da00 initializing HWRPB at 2000 initializing page table at 10400 initializing machine state setting afinity to the primary CPU jumping to bootstrap code MILO Stub: V1.1 Unzipping MILO into position Allocating memory for unzip ####... Następujące systemy _n_a_p_e_w_n_o posiadają konsolę SRM: ˇ NoName (Sekcja ``NoName'') ˇ AlphaPC64 (Sekcja ``AlphaPC64'') ˇ EB164 (Sekcja ``EB164'') ˇ PC164 (Sekcja ``PC164'') 55..66.. IInnffoorrmmaaccjjee oo ppłłyyttaacchh ggłłóówwnnyycchh 55..66..11.. AAXXPPPPCCII3333 ((NNooNNaammee)) Płyta NoName może ładować MILO z firmware'u Windows NT ARC (Sekcja ``ładowanie MILO z Windows NT ARC''), z konsoli SRM (Sekcja ``Ładowanie MILO z konsoli SRM''), oraz z dyskietki startowej (Sekcja ``Ładowanie z dyskietki startowej''). Można też, używając programu zarządzającego pamięcią flash, dostarczanego z MILO, możesz po załadowaniu Miniloadera wypalić jego obraz w taką pamięć (Sekcja ``korzystanie z programu zarządzającego pamięcią flash''). Jednakże musisz pamiętać, że kiedy to zrobisz, stracisz poprzedni obraz tam zapisany, ponieważ płyta posiada miejsce tylko na jeden. Sposób, w jaki NoName uruchamia system jest kontrolowany zestawem zworek na płycie, J29 i J28. Wyglądają one następująco: 4 J29 2 x x x 6 1 x x x 5 J28 2 x x x 6 1 x x x 5 3 Dwie opcje, które nas interesują, to piny 1-3 zworki J28, które ładują konsolę/ładowacz z pamięci flash, oraz piny 1-3 zworki J29, które uruchamiają konsolę lub ładowacz z dyskietki startowej. Pierwsze załadowanie MILO musi być przeprowadzone przy użyciu drugiej opcji. Kiedy już wybierzesz ładowanie systemu z dyskietki ustawiając odpowiednią zworkę, włóż dyskietkę startową SRM zawierającą MILO do stacji i zresetuj komputer. Za parę sekund (po zgaśnięciu lampki stacji dysków) ekran powinien zrobić się biały, a MILO będzie mówił ci co się dzieje. Jeżeli interesują cię tematy techniczne, wiedz, że NoName ładuje obrazy z dyskietki pod fizyczny adres 0x104000, a obrazy z pamięci flash pod adres 0x100000. Z tego powodu PALcode MILO zaaczyna się na 0x200000. Kiedy jest już załadowany, przenosi się w poprawne miejsce (zobacz relocate.S). 55..66..22.. AAllpphhaaPPCC6644 ((CCaabbrriioolleett)) AlphaPC64 może ładować MILO z firmware'u Windows NT ARC (Sekcja ``Ładowanie z Windows NT ARC''), konsoli SRM (Sekcja ``Ładowanie MILO z konsoli SRM''), oraz z Monitora Ewaluacyjnego (Sekcja ``Ładowanie z Monitora Płyt Ewaluacyjnych''). Wszystkie te funkcję znajdują się w pamieci flash, w której znajduje się jeszcze miejsce na dodanie MILO, w celu ładowania go bezpośrednio. Można użyć programu zarządzania pamięcią flash, uruchamianego z MILO, a więc kiedy jest on uruchomiony, może być wczytany do pamięci nieulotnej (Sekcja ``używanie programu zarządzania pamięcią flash''). System obsługuje zmienne środowiskowe MILO. Można wybrać opcję ładowania (i MILO, kiedy znajduje się w pamięci flash) za pomocą kombinacji zworek i opcji inicjalizacji, która jest zapisywana w NVRAM zegara TOY. Zworka służąca do tego celu to J2, bity SP o numerach 6 i 7 mają następujące znaczenie: ˇ SP 6 powinien być zawsze wyłączony. Jeżeli nie, włączy się mini- debugger SROM, ˇ Kiedy SP 7 jest włączony, system wybiera opcję inicjalizacji umieszczoną w zegarze TOY, ˇ Przy wyłączonym SP 7 system ładuje pierwszy obraz z pamięci flash. A więc, jeżeli SP 7 jest wyłączony, ładowany będzie Monitor Płyt Ewaluacyjnych, ponieważ jest _z_a_w_s_z_e pierwszą opcją w pamięci flash. Kiedy SP 7 jest włączony, wybrany zostanie obraz z zegara TOY. Zarówno Monitor, firmware Windows NT ARC, jak i MILO obsługują wybór opcji inicjalizacyjnej, ale musisz być bardzo ostrożny używając tej metody. Nie możesz na przykład ustawić opcji inicjalizacyjnej tak, żeby następnym razem system ładował MILO, kiedy używasz Windows NT ARC, ponieważ pozwala on tylko na ustawienie Monitora Ewaluacyjnego lub NT ARC jako opcji ładowania. W celu zapisania MILO w pamięci flash za pomocą Monitora Płyt Ewaluacyjnych, będziesz potrzebował obrazu przystosowanego do tej metody ładowania. Procedura kompilacji tworzy plik MILO.rom, ale równie dobrze możesz stworzyć taki plik jedną z komend Monitora: > makerom -v -i7 -l200000 MILO -o mini.flash (napisz makerom, żeby dowiedzieć się, co znaczą poszczególne argumenty, powiem tylko, że 7 to identyfikator obrazu używany przez SROM, a -l200000 ustawia adres ładowania obrazu na 0x200000). Załaduj ten obraz do pamięci (komendą flload, netload itd. (_N_I_E fl/net boot tylko _l_o_a_d - przyp. tłum.)) pod adres 0x200000 i wypal we flash'u: AlphaPC64> flash 200000 8 (200000 to miejsce w pamięci obrazu, który ma być wypalony, a 8 to segment, w którym umieszczasz obraz. Istnieje 16 1024*64 bajtowych segmentów w pamięci flash, Debug Monitor znajduje się w segmencie pierwszym, a Windows NT ARC w czwartym). Ustaw numer obrazu, który będzie ładowany przez SROM poprzez zapisanie jego numeru w zegarze TOY. AlphaPC64> bootopt 131 (131 to trzeci obraz, 129 - pierwszy, 130 - drugi itd.) Wyłącz zasilanie, zewrzyj siódmą zworkę i włącz komputer. Powinieneś zobaczyć MILO budzącego się do życia. Jeżeli nie, wyjmij 7 zworkę i zresetuj Monitor Ewaluacyjny. 55..66..33.. EEBB6666++ EB66+, tak jak wszystkie Płyty Ewaluacyjne Alpha zbudowane przez Digitala, posiada ,,Evaluation Board Debug Monitor'', można więc uruchamiać MILO przez niego (Sekcja ``Ładowanie z Monitora Ewaluacyjnego''). Dosyć często (choć nie zawsze) płyty, które wyeluowały z EB66+, również posiadają Monitor. Zazwyczaj płyty te zawierają Windows NT ARC firmware (Sekcja ``Ładowanie przez Windows NT ARC''). Można też skorzystać z programu zarządzania pamięcią flash, kiedy MILO jest uruchomiony (Sekcja ``używanie programu zarządzającego pamięcią flash''). System ten obsługuje zmienne środowiskowe MILO. Płyta główna posiada miejsce na kilka obrazów flash, są one kontrolowane zworkami. Dwa banki zworek (J18 i J16) znajdują się na dole płyty, po środku jej szerokości (jeżeli Alpha jest na górze). Możesz wybrać pomiędzy opcjami ładowania (i MILO, jeżeli został zapisany w pamięci flash), używając kombinacji zworek i opcji inicjalizacji zapisanej w NVRAM zegara TOY. Kiedy zworka 7-8 banku J18 jest włączona, obraz ładowania jest opisany przez opcję inicjalizacyjną. Jeżeli są one wyłączone, załadowany zostanie Monitor Płyt Ewaluacyjnych. Procedura wypalania obrazu w pamięci flash przez Monitor Ewaluacyjny jest identyczna, jak w przypadku AlphaPC64 (Sekcja ``AlphaPC64''). 55..66..44.. EEBB6644++//AAssppeenn AAllppiinnee System ten jest podobny do AlphaPC64, nie posiada jednak pamięci flash do nagrania MILO. EB64+ posiada dwa ROMy, z których jeden zawiera firmware Windows NT ARC (Sekcja ``Ładowanie z firmware'u Windows NT ARC''), a drugi Monitor Płyt Ewaluacyjnych (Sekcja ``Ładowanie z Monitora Ewaluacyjnego''). Aspen Alpine posiada tylko jeden ROM - Windows NT ARC. 55..66..55.. UUnniivveerrssaall DDeesskkttoopp BBooxx ((MMuullttiiaa)) Jest to system bardzo kompaktowy, sprzedawany jako cały komputer, oparty na 21066. Posiada on urządzenie graficzne TGA (21030). Chociaż można _w_e_p_c_h_n_ą_ć do niego kartę graficzną PCI o małym rozmiarze, poczekaj lepiej na pełną obsługę TGA w XFree86. Płyta posiada firmware Windows NT ARC, z którego można ładować MILO (Sekcja (``Ładowanie z firmware'u Windows NT ARC''). 55..66..66.. EEBB116644 EB164, tak jak wszystkie płyty ewaluacyjne Digitala, posiada Monitor Płyt Ewaluacyjnych, można więc za jego pomocą łatwo ładować MILO (Sekcja ``Ładowanie z Monitora Ewaluacyjnego''). Dosyć często (choć nie zawsze) płyty, które wyeluowały z EB164, także zawierają Monitor. Zazwyczaj, płyty EB164 posiadają firmware Windows NT ARC (Sekcja ``Ładowanie z firmware'u Windows NT ARC''). Dostępna jest też konsola SRM (Sekcja ``Ładowanie MILO z konsoli SRM''). Dzięki programowi do zarządzania pamięcią flash uruchamianemu z MILO, można zapisać jego obraz w pamięci flash (kiedy MILO już działa) (Sekcja ``Używanie programu zarządzania pamięcią flash''). System obsługuje zmienne środowiskowe MILO. Płyty EB164 posiadają kilka obrazów ładujących, kontrolowanych zworkami. Dwuzworkowy bank nas interesujący to J1, znajduje się on w lewym, dolnym rogu płyty (kiedy Alpha jest na górze). Między opcjami ładowania (oraz MILO, jeżeli został zapisany w pamięci flash) możesz przełączać się używając kombinacji zworek i opcji inicjalizacyjnej, zapisanej w NVRAMie zegara TOY. Kiedy zworka SP-11 banku J1 jest zwarta, ładowany będzie obraz opisany opcją inicjalizacyjną, a jeżeli jest rozwarta, ładowany będzie Monitor Płyt Ewaluacyjnych. Wypalanie obrazu w pamięci flash przeprowadza się dokładnie tak, jak w AlphaPC64 (Sekcja ``AlphaPC64''). 55..66..77.. PPCC116644 PC164, jak wszystkie Płyty Ewaluacyjne Alpha Digitala, posiada Monitor Płyt Ewaluacyjnych, jest to więc pierwsza możliwość ładowania MILO (Sekcja ``Ładowanie z monitora ewaluacyjnego''). Dosyć często (choć nie zawsze) płyty, które wyeluowały z PC164, także posiadają Monitor. Zazwyczaj płyty te posiadają firmware Windows NT ARC (Sekcja ``Ładowanie z Windows NT ARC''). Jest też dostępna konsola SRM (Sekcja ``Ładowanie MILO z konsoli SRM''). Można również użyć programu do zarządzania pamięcią flash, uruchamianego z MILO, a więc kiedy Miniloader działa, może być zapisany w pamięci flash (Sekcja ``używanie programu zarządzającego pamięcią flash''). System obsługuje zmienne środowiskowe MILO. Systemy te posiadają kilka opcji ładowania w pamięci flash, kontrolowanych przez zworki. Główny blok zworek, J30, zawiera zworki konfiguracji systemu, oraz zworkę CF6, która, jeżeli włączona, uruchomi Monitor Ewaluacyjny. Standardowo zworka ta jest wyłączona. Wypalanie obrazu do pamięci flash za pomocą Monitora Płyt Ewaluacyjnych przeprowadza się identycznie, jak w przypadku AlphaPC64 (Sekcja ``AlphaPC64''). 55..66..88.. XXLL226666 XL266 jest jedną z płyt z rodziny systemów znanych jako Avanti. Posiada oddzielną kartę zawierającą procesor i pamięć cache, dołączaną do płyty pod prawidłowym kątem. Płyta ta może zastąpić swój odpowiednik - płytę do Pentium. Niektóre z tych systemów posiadają konsolę SRM, a inne, np. właśnie XL266 posiadają jedynie firmware Windows NT ARC (Sekcja ``Ładowanie z firmware'u Windows NT ARC''). Oto moja lista kompatybilnych systemów: ˇ AlphaStation 400 (Avanti), ˇ AlphaStation 250, ˇ AlphaStation 200 (Mustang), ˇ XL. Dostępne są dwa rodzaje, XL266 i XL233, jedyna różnica pomiędzy nimi to szybkość procesora i rozmiar cache'u. UUwwaaggaa: System którego używałem do rozwoju MILO, to XL266 i dlatego jest to jedyny system, którego działanie mogę zagwarantować. Jednakże technicznie wszystkie powyższe systemy są odpowiednikami, mają te same chipsety oraz mechanizmy obsługi przerwań. 55..66..99.. PPllaattffoorrmm22000000 Jest to system oparty na 233MHz 21066. 66.. IInntteerrffeejjss uużżyyttkkoowwnniikkaa MMIILLOO Kiedy poprawnie zainstalowałeś/załadowałeś/uruchomiłeś MILO, zobaczysz znak zachęty MILO> (od MIniLOader, Miniładowacz) wyświetlony na ekranie. Jest to bardzo prosty intefejs użytkownika, którego musisz użyć w celu uruchomienia obrazu jądra Linuxa. Wpisanie ,,help'' jest dobrym pomysłem, ponieważ wyświetla przydatny opis komend. 66..11.. KKoommeennddaa ,,,,hheellpp'''' Jest to chyba najbardziej pożyteczna komenda MILO: MILO> help MILO command summary: ls [-t fs] [dev:[dir]] - List files in directory on device boot [-t fs] [dev:file] [boot string] - Boot Linux from the specified device and file run [-t fs] dev:file - Run the standalone program dev:file show - Display all known devices and file systems set VAR VALUE - Set the variable VAR to the specified VALUE unset VAR - Delete the specified variable reset - Delete all variables print - Display current variable settings help [var] - Print this help text Devices are specified as: fd0, hda1, hda2, sda1... Use the '-t filesystem-name' option if you want to use anything but the default filesystem ('ext2'). Use the 'show' command to show known devices and filesystems. Type 'help var' for a list of variables. ------------------------------------------------------------------------------------ MILO> help Opis komend MILO: ls [-t fs] [urządzenie:[katalog]] - Lista plików w katalogu danego urządzenia boot [-t fs] [urządzenie:plik] [tekst ładowania] - Załaduj Linuxa z pliku na danym urządzeniu run [-t fs] [urządzenie:plik] - Uruchom oddzielny program z podanej ścieżki show - Pokaż wszystkie znane urządzenia i systemy plików set ZMIENNA WARTOSC - Przypisuje zmiennej ZMIENNA wartosc WARTOSC unset ZMIENNA - Kasuje podaną zmienną reset - Skasuj wszystkie zmienne print - Pokaż obecne ustawienia zmiennych help [var] - Wyświetl ten tekst pomocy Urządzenia podaje się jako: fd0, hda1, hda2, sda1... Użyj opcji ,,-t nazwa-systemu-plików'', jeżeli chcesz używać czegoś innego niż standardowy system plików (,,ext2''). Użyj komendy ,,show'', żeby wyświetlić znane urządzenia i systemy plików. Wpisz ,,help var'', żeby uzyskać listę zmiennych. UUwwaaggaa:: komenda bootopt występuje tylko w systemie AlphaPC64 (i podobnych). Odwołaj się do dokumentacji płyty, żeby dowiedzieć się, co ona znaczy. UUrrzząąddzzeenniiaa. Dopóki nie użyjesz komendy, która musi użyć urządzenia, nie będzie miała miejsca jego inicjalizacja. Pierwsze show, ls, boot lub run, zawsze spowodują inicjalizację urządzeń w MILO. Urządzenia są nazywane dokładnie w ten sam sposób, co w Linuxie. A więc, pierwszy dysk IDE będzie nazywać się ,,hda'', a pierwsza partycja ,,hda1''. Użyj komendy ,,show'', żeby wyświetlić dostępne urządzenia. SSyysstteemmyy pplliikkóóww. MILO obsługuje trzy systemy plików - MSDOS, EXT2 i ISO9660. Jeżeli urządzenie jest dostępne w systemie, można wykonać komendy ls, boot i run na obrazie zapisanym na tych systemach plików. Standardowy system MILO to EXT2, dlatego będziesz musiał powiedzieć MILO, że obecny jest inny system plików. Wszystkie komendy używające nazw plików pozwalają przekazać do nich typ systemu plików, używając opcji -t [nazwa systemu plików]. A więc jeżeli chcesz wyświetlić zawartość CD ROMu SCSI, możesz napisać: MILO> -t iso9660 scd0: ZZmmiieennnnee.. MILO posiada kilka ustawialnych zmiennych, ułatwiających proces ładowanie. Jeżeli ładujesz MILO przez Windows NT ARC, MILO używa zmiennych ustawionych przez to firmware. W niektórych systemach (np. AlphaPC64), MILO tworzy własną listę zmiennych, które nie zmieniają się przy każdym ładowaniu. Są to: MILO> help var Variables that MILO cares about: MEMORY_SIZE - System memory size in megabytes BOOT_DEV - Specifies the default boot device BOOT_FILE - Specifies the default boot file BOOT_STRING - Specifies the boot string to pass to the kernel SCSIn_HOSTID - Specifies the host id of the n-th SCSI controller. AUTOBOOT - If set, MILO attempts to boot on powerup and enters command loop only on failure. AUTOBOOT_TIMEOUT - Seconds to wait before auto-booting on powerup. ------------------------------------------------------------------------------------ MILO> help var Zmienne, na które uważa MILO: MEMORY_SIZE - Rozmiar pamięci systemu w megabajtach BOOT_DEV - Definiuje domyślne urządzenie ładowania BOOT_FILE - Definiuje domyślny plik ładowania BOOT_STRING - Definiuje tekst przekazywany do jądra podczas startu SCSIn_HOSTID - Definiuje identyfikator hosta n-tego kontrolera SCSI. AUTOBOOT - Jeżeli jest ustawiona, MILO próbuje ładować system po włączeniu zasilania i przechodzi do linii komend tylko w przypadku błedu. AUTOBOOT_TIMEOUT - Ile sekund MILO ma czekać przed autoładowaniem. 66..22.. ŁŁaaddoowwaanniiee LLiinnuuxxaa Komenda boot ładuje jądro Linuxa. Musi się ono znajdować na dysku w formacie EXT2 (SCSI, IDE lub na dyskietce), lub na kompakcie w formacie ISO9660. Obraz może być spakowany gzipem, MILO rozpozna go wtedy po rozszerzeniu Zauważ, że wersja MILO nie musi odpowiadać wersji jądra, które ładujesz. Linuxa ładuje się następującą komendą: MILO> boot [-t system-plików] urządzenie:nazwa-pliku [[opcja-ładowania] [opcja-ładowania] ...] Gdzie urządzenie jest nazwą pliku urządzenia, którego chcesz używać, a nazwa-pliku jest nazwą obrazu jądra Linuxa. Wszystkie argumenty podane po nazwie pliku są przekazywane bezpośrednio do jądra. Jeżeli instalujesz Red Hat'a, będziesz musiał podać urządzenie / i nie tylko. Powinieneś użyć komendy MILO> boot fd0:vmlinux.gz root=/dev/fd0 load_ramdisk=1 MILO będzie automatycznie zawierał urządzenia wkompilowane w twój vmlinux. Testowałem sterowniki do stacji dysków, IDE i kilka sterowników SCSI (np. NCR 810). Wszystkie działają poprawnie. Ważne jest też poprawne ustawienie identyfikatora hosta SCSI. Domyślnie MILO zainicjalizuje go na najwyższej możliwej wartości (7), co powinno działać poprawnie. Jednakże jeżeli chcesz, możesz i tak ustawić identyfikator hosta _n-tego kontrolera SCSI w systemie, ustawiając zmienną środowiskowąSCSI_n_HOSTID na odpowiednią wartość. Na przykład, żeby ustawić hostid pierwszego kontrolera na 7, powinieneś wpisać następujące polecenie w linii poleceń MILO: setenv SCSI0_HOSTID 7 66..33.. RReesseettoowwaanniiee LLiinnuuxxaa Czasami będziesz chciał przeładować działającego Linuxa komendą shutdown -r now. W takim przypadku jądro Linuxa oddaje kontrolę MILO (przez odwołanie CallPAL HALT). Z tego powodu MILO zostawia skompresowaną kopię samego siebie w pamięci i wykrywa że system jest przeładowywany, korzystając z informacji przetrzymywanych w HWRPB (Hardware Restart Parameter Block, Blok Parametrów Restartu Urządzenia). Zaczyna wtedy przeładowanie, używając dokładnie tej samej komendy, która została użyta do ładowania jądra Linuxa ostatnim razem. MILO czeka przez 30 sekund przed ponownym załadowaniem jądra, co pozwala przerwać ten proces i załadować inne jądro, w jakikolwiek sposób. 66..44.. KKoommeennddaa ,,,,bboooottoopptt'''' W systemach z pamięcią flash, takich jak AlphaPC64, EB164 i EB66+ istnieje kilka opcji ładowania. Są one zmieniane komendą bootopt. Posiada ona jeden argument, numer dziesiętny, który jest typem obrazu do załadowania po włączeniu zasilania/przeładowaniu systemu. 00 Ładowanie Monitora Płyt Ewaluacyjnych, 11 Ładowanie firmware'u Windows NT ARC. W celu ładowania MILO z pamięci flash, potrzebna jest opcja inicjalizacyjna, znacząca ,,załaduj N-ty obraz z pamięci flash''. Jako argument, musisz podać 128 + N, więc jeżeli MILO jest trzecim obrazem, użyjesz komendy MILO> bootopt 131 UUwwaaggaa:: Bądź bardzo ostrożny z tą komendą. Nigdy nie ustawiaj bootopt na 0 (Monitor Płyt Ewaluacyjnych), zamiast tego użyj zworek na płycie głównej. 77.. UUżżyywwaanniiee pprrooggrraammuu zzaarrzząąddzzaajjąącceeggoo ppaammiięęcciiąą ffllaasshh Komenda run jest używana do uruchamiania programu zarządzającego pamięcią flash (flash management utility, dalej będę nazywał go ,,fmu'' - przyp. tłum.). Zanim zaczniesz, będziesz potrzebował urządzenia dostępnego MILO i zawierającego fmu. Może on być (tak jak vmlinux) spakowany gzipem. Fmu uruchamia się następującą komendą: MILO> fd0:fmu.gz Kiedy program zostanie załadowany i zainicjalizowany, fmu poda trochę informacji o urządzeniu flash, oraz wyświetli linię poleceń. Znowu, komenda help jest bardzo użyteczna. Linux MILO Flash Management Utility V1.0 Linux MILO Flash Management Utility V1.0 Flash device is an Intel 28f008SA Urządzenie flash to Intel 28f008SA 16 segments, each of 0x10000 (65536) bytes 16 segmentów, każdy po 0x10000 (65536) bajtów Scanning Flash blocks for usage Wykrywam zajętość bloków Flash Block 12 contains environment variables Blok 12 zawiera zmienne środowiskowe FMU> FMU> UUwwaaggaa:: W systemach obsługujących zmienne środowiskowe, gdzie istnieje więcej niż jeden blok flash (np. AlphaPC64), fmu będzie szukał bloku na zmienne środowiskowe MILO. Jeżeli taki blok istnieje, fmu powie, gdzie się on znajduje. Jeśli nie, musisz użyć komendy environment, żeby ustawić blok i go zainicjalizować. W powyższym przykładzie, blok 12 zawiera zmienne środowiskowe MILO. 77..11.. KKoommeennddaa ,,,,hheellpp'''' FMU> help FMU command summary: list - List the contents of flash program - Program an image into flash quit - Quit environment - Set which block should contain the environment variables bootopt num - Select firmware type to use on next power up help - Print this help text FMU> ------------------------------------------------------------------------------------ FMU> help Opis komend FMU: list - Wyświetl zawartość pamięci flash program - Zapisz obraz w pamięci flash quit - Zakończ program environment - Ustaw blok, który powinien zawierać zmienne środowiskowe bootopt numer - Wybierz typ firmware'u do użycia przy następnym uruchomieniu help - Wyświetl ten tekst pomocy FMU> UUwwaaggaa:: Komendy environment i bootopt są dostępne tylko w płytach EB66+, AlphaPC64, EB164 i PC164 (i ich klonach). 77..22.. KKoommeennddaa ,,,,lliisstt'''' Komenda ,,list'' pokazuje zawartość pamięci flash. Jeżeli istnieje więcej niż jeden blok, pokazana jest zawartość każdego. W poniższym przykładzie możesz zobaczyć, że Windows NT ARC używa blok 4-7 i blok 15. FMU> list Flash block: 0:DBM 1:DBM 2:DBM 3:WNT 4:WNT 5:WNT 6:WNT 7:WNT 8:MILO 9:MILO 10:MILO 11:MILO 12:MILO 13:U 14:U 15:WNT Listing flash Images Flash image starting at block 0: Firmware Id: 0 (Alpha Evaluation Board Debug Monitor) Image size is 191248 bytes (3 blocks) Executing at 0x300000 Flash image starting at block 3: Firmware Id: 1 (Windows NT ARC) Image size is 277664 bytes (5 blocks) Executing at 0x300000 Flash image starting at block 8: Firmware Id: 7 (MILO/Linux) Image size is 217896 bytes (4 blocks) Executing at 0x200000 FMU> ------------------------------------------------------------------------------------ FMU> list Bloki Flash: 0:DBM 1:DBM 2:DBM 3:WNT 4:WNT 5:WNT 6:WNT 7:WNT 8:MILO 9:MILO 10:MILO 11:MILO 12:MILO 13:U 14:U 15:WNT Wyświetlam Obrazy Flash Obraz Flash (początek - blok 0) Firmware Id: 0 (Alpha Evaluation Board Debug Monitor) Rozmiar obrazu: 191248 bajtów (3 bloki) Wykonuje się na 0x300000 Obraz Flash (początek - blok 3) Firmware Id: 1 (Windows NT ARC) Rozmiar obrazu: 277664 bajtów (5 bloków) Wykonuje się na 0x300000 Obraz Flash (początek - blok 8) Firmware Id: 7 (MILO/Linux) Rozmiar obrazu: 217896 bajtów (4 bloki) Wykonuje się na 0x200000 FMU> 77..33.. KKoommeennddaa ,,,,pprrooggrraamm'''' Fmu zawiera skompresowaną kopię obrazu flash MILO. Komenda ,,program'' pozwala zapisać ten obraz w pamięci flash. Komenda ta pozwoli ci wycofać się, ale zanim ją uruchomisz, powinieneś użyć komendy ,,list'', żeby zobaczyć gdzie nagrać MILO. Jeżeli MILO znajduje się już w pamięci flash, fmu zapyta się, czy go skasować. FMU> program Image is: Firmware Id: 7 (MILO/Linux) Image size is 217896 bytes (4 blocks) Executing at 0x200000 Found existing image at block 8 Overwrite existing image? (N/y)? y Do you really want to do this (y/N)? y Deleting blocks ready to program: 8 9 10 11 Programming image into flash Scanning Flash blocks for usage FMU> ------------------------------------------------------------------------------------ FMU> program Obraz: Firmware Id: 7 (MILO/Linux) Rozmiar obrazu: 217896 bajtów (4 bloki) Wykonuje się na 0x200000 Znaleziono istniejący obraz w bloku 8 Nadpisać istniejący obraz? (N/y)? y Czy napewno chcesz to zrobić? (y/N)? y Kasowanie bloków do programowania: 8 9 10 11 Programowanie obrazu do pamięci flash Szukanie zajętych bloków Flash FMU> Poczekaj, aż proces zostanie zakończony przed wyłączeniem systemu. UUwwaaggaa:: Nie mogę wyrazić dostatecznie mocno, jak musisz być ostrożny, żeby nie nadpisać istniejącego obrazu flash, który może być ci potrzebny, lub nie zniszczyć swojej płyty głównej. Dobrą zasadą jest niekasowanie Monitora Ewaluacyjnego. (!!! - przyp. tłum.) 77..44.. KKoommeennddaa ,,,,eennvviirroonnmmeenntt'''' Wybiera blok flash mający zawierać zmienne środowiskowe MILO. 77..55.. KKoommeennddaa ,,,,bboooottoopptt'''' Jest to ta sama komenda, co istniejąca w MILO, zobacz sekcję (``Komenda ,,bootopt''''). 77..66.. KKoommeennddaa ,,,,qquuiitt'''' Jest to raczej bez znaczenia. Jedyna droga powrotna do MILO (lub czegokolwiek innego), kiedy fmu działa, to restart systemu. 88.. OOggrraanniicczzeenniiaa Niestety, świat nie jest doskonały, jest więc jak zawsze parę ograniczeń, o których powinieneś wiedzieć. MILO nie jest przeznaczony do ładowania systemów operacyjnych innych niż Linux, jednakże może ładować obrazy łączone do działania w tym samym miejscu pamięci co Linux (czyli 0xFFFFFC0000310000). W ten sposób może działać fmu. Źródła kodu PAL załączone w miniboot/palcode/_c_o_ś_t_a_m są poprawne, jednakże są problemy, kiedy zostają zbudowane przy użyciu najnowszego gas (assembler GNU - przyp. tłum.). _M_o_ż_n_a kompilować je, używając bardzo starego gas'a załączonego w oprogramowanu do Płyt Ewaluacyjnych Alpha (i w ten sposób zostały zbudowane). Próbuję namówić kogoś, żeby naprawił nowy gas. Obecnie jednak, jako obejście, umieściłem pre- kompilowany kod PAL dla obsługiwanych płyt, a David Mosberger-Tang umieścił naprawiony gas na swoim serwerze ftp. 99.. RRoozzwwiiąązzyywwaanniiee pprroobblleemmóóww Oto kilka często spotykanych problemów razem z rozwiązaniami. CCzzyyttaanniiee ddyysskkiieetteekk MMSS--DDOOSS zz MMoonniittoorraa PPłłyytt EEwwaalluuaaccyyjjnnyycchh.. Niektóre starsze wersje Monitora Płyt Ewaluacyjnych (przed 2.0) miały problemy z odczytywaniem dyskietek w formacie DOS zapisanych pod Linuxem. Zazwyczaj Monitor może wczytać kilka pierwszych sektorów, ale po chwili wchodzi w nieskończoną pętlę błędów o złych sektorach. Istnieje też pewna niekompatybilność między formatem DOS oczekiwanym przez Monitor Ewaluacyjny, a Linuxową implementacją DOSFS. Żeby skrócić tą długą historię: jeżeli napotkasz ten problem, spróbuj użyć DOS'a do zapisania dyskietki. Na przykład jeżeli nie ładuje się plik MILO.cab, użyj komputera z DOSem - włóż dyskietkę i napisz: copy a:MILO.cab c: copy c:MILO.cab a: del c:MILO.cab Spróbuj ponownie wystartować MILO z tej dyskietki. Powinno to rozwiązać problem. MMIILLOO wwyyśśwwiieettllaa ddłłuuggąą sseekkwweennccjjęę zznnaakkóóww ,,,,oo>>'''' ii nniiee pprrzzyyjjmmuujjee ppoolleecceeńń.. Dzieje się to zazwyczaj kiedy MILO został skompilowany z portem COM1 jako drugorzędnym urządzeniem konsoli. W takim przypadku, MILO kopiuje wyjście na port COM1 i akceptuje wejście również z tego portu. Jest to świetne do wykrywania błędów, ale nie tak świetne jeżeli masz podłączone coś innego niż terminal. Jeżeli to się dzieje, odłącz lub wyłącz to urządzenie, do chwili uruchomienia jądra Linuxa. Kiedy Linux działa, wszystko będzie działało tak jak powinno. MMIILLOO sskkaarrżżyy ssiięę nnaa zzłłyy nnuummeerr mmaaggiicczznnyy oobbrraazzuu jjąąddrraa Starsze wersje MILO nie obsługiwały formatu binarnego ELF, nie mogły więc rozpoznać obrazu ELF. Jeżeli napotkasz ten problem, ściągnij najnowszą wersję MILO. Wszystkie wersje po 2.0.20 obsługują ELF. Z drugiej strony, może to być wina zniszczonego obrazu. Powinieneś też pamiętać, że MILO sam nie rozpoznaje jeszcze obrazów skompresowanych GZIP'em - musisz dodać rozszerzenie ,,.gz'' do nazwy pliku. MMIILLOO wwyyśśwwiieettllaa ,,,,......ttuurrnniinngg oonn vviirrttuuaall aaddddrreessssiinngg aanndd jjuummppiinngg ttoo tthhee LLiinnuuxx KKeerrnneell'''' ii nniicc ssiięę nniiee ddzziieejjee Oczywisty problem, to to, że jądro jest źle skompilowane, albo skompilowane na inny system Alpha. Inny to kompilacja jądra na urządzenie VGA, kiedy płyta posiada TGA (Zlxp) (lub odwrotnie). Dobrze jest wbudować w jądro wyjście na COM1 i podłączyć terminal, lub spróbować użyć jądro z dystrybucji Linuxa, którą zainstalowałeś. MMIILLOO nniiee rroozzppoozznnaajjee ddyysskkuu SSCCSSII Standardowe obrazy MILO posiadają wszystkie stabilne (dla Alphy) sterowniki urządzeń (na razie są to NCR 810, QLOGIC ISP, Buslogic i Adaptec 2940/3940) (uwaga - jest to stare HOWTO, a więc dużo się zmieniło - przyp. tłum.). Jeżeli twoja karta nie jest dołączona, może to znaczyć, że sterownik dla Alphy nie jest jeszcze stabilny. Spróbuj użyć najnowszych obrazów MILO. Możesz dowiedzieć się, jakie urządzenia SCSI zostały wkompilowane w obraz MILO, używając komendy ,,show''. 1100.. PPooddzziięękkoowwaanniiaa Chciałbym podziękować: ˇ Eric'owi Rasmussen'owi i Eillen Samberg - autorom PALcode, ˇ Jim'owi Paradis'owi za sterownik klawiatury i oryginalny interfejs MILO, ˇ Jay'owi Estabrook'owi za jego pomoc i poprawki, ˇ David'owi Mosberger-Tang'owi za darmowy kod emulacji BIOS'u i jego pomoc, ˇ i jako ostatniemu (ale _n_i_e najmniej ważnemu) Linus'owi Torvalds'owi za kod zegara i jądro Linuxa. Jest jeszcze kilka rzeczy, które powinny być zrobione, więc jeżeli chcesz coś dodać, daj mi znać (david.rusling@reo.mts.dec.com), żebyśmy nie duplikowali swoich wysiłków. Na końcu, duże ,,dziękuję'' dla Digitala, za produkowanie tak świetnego procesora (i płacenie mi za to). 1111.. OOdd ttłłuummaacczzaa Jeżeli znajdziesz jakieś błędy, daj mi znać. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/NET-3-HOWTO.pl.txt�����������������������������������������������������0100644�0001750�0001750�00000616467�07406502160�017252� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Linux NET-3-HOWTO, Linux w sieci Terry Dawson, VK2KTJ, terry@perf.no.itg.telstra.com.au v1.0, 22 luty 1997 wersja polska piotr.pogorzelski@ippt.gov.pl w1.0, kwiecień 1997 wersja polska - korekta Basia Głowacka jastra@gdansk.sprint.pl w1.1, grudzień 2001 Obsługa sieci w jądrze systemu Linux została napisana niemal od zera. Osiągi sieci tcp/ip w najnowszych wersjach jądra sprawiają, że Linux staje się godną uwagi alternatywą dla innych, dominujących w tej dziedzinie systemów. Naszym celem jest opisanie w jaki sposób zain­ stalować i skonfigurować oprogramowanie sieciowe, oraz różne inne narzędzia pomagające w obsłudze sieci. ______________________________________________________________________ Spis treści 1. Zmiany w stosunku do poprzedniej wersji 2. Wprowadzenie. 2.1 Uwagi na temat tego dokumentu 3. Jak korzystać z tego dokumentu (NET-3-HOWTO-HOWTO ?). 4. Informacje ogólne na temat pracy Linuksa w sieci. 4.1 Krótka historia rozwoju modułów sieciowych jądra Linuksa. 4.2 Skąd zdobyć inne informacje na temat zastosowań sieciowych Linuksa. 4.3 Skąd zdobyć inne, nie związane z Linuksem informacje na temat technik sieciowych. 5. Podstawowe informacje na temat konfigurowania sieci. 5.1 Czego potrzebuję aby rozpocząć? 5.1.1 Aktualne źródła jądra. 5.1.2 Aktualne narzędzia sieciowe. 5.1.3 Programy-aplikacje sieciowe. 5.1.4 Adresy. 5.2 Gdzie umieścić polecenia konfiguracyjne ? 5.3 Tworzenie interfejsów sieciowych. 5.4 Konfiguracja interfejsu sieciowego. 5.5 Konfiguracja resolvera nazw. 5.5.1 Co to jest nazwa? 5.5.2 Jakie informacje będą niezbędne. 5.5.3 /etc/resolv.conf 5.5.4 /etc/host.conf 5.5.5 /etc/hosts 5.6 Konfiguracja interfejsu pętli zwrotnej 5.7 Trasowanie (routing). 5.7.1 Do czego służy program 5.8 Konfiguracja serwerów i usług sieciowych. 5.8.1 (TT 5.8.1.1 Przykład pliku 5.8.2 (TT 5.8.2.1 Przykład pliku 5.9 Inne pliki konfiguracyjne związane z siecią. 5.9.1 (TT 5.9.2 (TT 5.10 Bezpieczeństwo sieciowe i sterowanie dostępem. 5.10.1 /etc/ftpusers 5.10.2 /etc/securetty 5.10.3 Mechanizm sterowania dostępem pakietu 5.10.3.1 /etc/hosts.allow 5.10.3.2 /etc/hosts.deny 5.10.4 /etc/hosts.equiv 5.10.5 Prawidłowa konfiguracja demona 5.10.6 Firewalle. 5.10.7 Inne sugestie. 6. Informacje specyficzne technologii sieciowej 6.1 ARCNet 6.2 Appletalk ( 6.2.1 Konfiguracja oprogramowania Appletalk. 6.2.2 Eksportowanie plików Linuksa przez Appletalk. 6.2.3 Udostępnianie twojej drukarki pod Linuksem w sieci Appletalk. 6.2.4 Uruchamianie oprogramowania Appletalk. 6.2.5 Test oprogramowania Appletalk. 6.2.6 Uwagi na temat korzystania z oprogramowania Appletalk. 6.2.7 Więcej informacji 6.3 ATM 6.4 AX25 ( 6.5 DECNet 6.6 EQL - multiple line traffic equaliser 6.7 Ethernet 6.8 FDDI 6.9 Frame Relay 6.10 Zliczanie ruchu (IP Accounting) 6.11 IP Aliasing 6.12 Filtrownie pakietów (IP Firewalling) 6.13 IPX ( 6.14 IPv6 6.15 ISDN 6.16 IP Masquerade 6.17 IP Transparent Proxy 6.18 Mobile IP 6.19 Multicast 6.20 NetRom ( 6.21 PLIP 6.21.1 Schemat kabla do połączenia PLIP. 6.22 PPP 6.22.1 Utrzymywanie za pomocą 6.23 Rose protocol ( 6.24 SAMBA - `NetBEUI', `NetBios' support. 6.25 Klient protokołu SLIP 6.25.1 dip 6.25.2 slattach 6.25.3 Kiedy używać każdego z tych programów ? 6.25.4 Statyczny serwer SLIP z linią modemową i programem DIP. 6.25.5 Dynamiczny serwer SLIP z linią modemową i programem DIP. 6.25.6 Korzystanie z programu dip. 6.25.7 Stałe połączenie SLIP przez linię dzierżawioną - slattach. 6.26 Serwer SLIP. 6.26.1 Serwer korzystający z programu 6.26.1.1 Skąd wziąć 6.26.1.2 Konfiguracja pliku 6.26.1.3 Konfiguracja pliku 6.26.1.4 Konfiguracja pliku 6.26.1.5 Konfiguracja pliku 6.26.1.6 Konfiguracja pliku 6.26.2 Serwer SLIP korzystający z programu 6.26.2.1 Konfiguracja pliku 6.26.3 Serwer SLIP korzystający z pakietu 6.27 Obsługa protokołu STRIP (Starmode Radio IP) 6.28 Token Ring 6.29 X.25 6.30 WaveLan Card 7. Kable i okablowanie 7.1 Szeregowy kabek bezmodemowy (Serial NULL Modem cable) 7.2 Kabel portu równoległego (kabel PLIP) 7.3 Okablowanie ethernetowe 10base2 (cienki koncentryk) 7.4 Skrętka (Twisted Pair Ethernet Cable) 8. Spis stosowanych terminów 9. Linux u dostawców Internetu ? 10. Podziękowania 11. Copyright. 12. Od tłumacza 13. Od korektorki ______________________________________________________________________ 11.. ZZmmiiaannyy ww ssttoossuunnkkuu ddoo ppoopprrzzeeddnniieejj wweerrssjjii Dodatki: mnóstwo. Poprawki/uaktualnienia: wszystko. 22.. WWpprroowwaaddzzeenniiee.. Oryginalny dokument NET-FAQ, napisy przez Matta Welsha w celu zebrania odpowiedzi na najczęściej zadawane pytania na temat pracy Linuksa w sieci, powstał zanim ktokolwiek myślał o Projekcie Dokumentacji Linuksa (LDP). Dokument dotyczył bardzo wczesnych wersji rozwojowych modułów sieciowych jądra. Został zastąpiony przez NET-2-HOWTO, jeden z oryginalnych doumentów projektu LDP. Opisywał oprogramowanie sieciowe znane pod nazwą "wersja 2." i "wersja 3.". W tym dokumencie opisujemy jedynie moduły sieciowe jądra w "wersji 3". Poprzednie wersje tego dokumentu osiągnęły ogromne rozmiary, ze względu na wielką ilosć materiału, którego dotyczyły. Była to jedna z przyczyn powstania kilku innych dokumentów HOWTO opisujących specyficzne problemy związane z siecią. Wszędzie gdzie będzie to możliwe, będziemy odwoływać się do tych dokumentów i opisywać problemy, które jeszcze nie posiadają własnych dokumentów. 22..11.. UUwwaaggii nnaa tteemmaatt tteeggoo ddookkuummeennttuu Zawsze doceniam wszelkie uwagi, szczególnie wartościowe wnioski. Proszę kierujcie je bezpośrednio do mnie email <mailto:terry@perf.no.itg.telstra.com.au>. 33.. JJaakk kkoorrzzyyssttaaćć zz tteeggoo ddookkuummeennttuu ((NNEETT--33--HHOOWWTTOO--HHOOWWTTOO ??)).. Format tego dokumentu różni się od poprzednich wersji. Przegrupowałem podrozdziały, tak aby materiał opisowy zgromadzony na początku dokumentu mogł zostać przez czytalnika pominięty. Po nim występuje ogólny opis zagadnień sieciowych, informacje, które trzeba zrozumieć zanim przejdzie się do ostatniej części dokumentu - technicznej dokuemntacji stosowanej technologii. PPrrzzeecczzyyttaajj rroozzddzziiaałłyy ooggóóllnnee Informacje tutaj podane odnoszą nię niemal do wszystkich poźniejszych części dokumentu i są niezbędne do ich zrozumienia. ZZaassttaannóóww ssiięę nnaadd sswwoojjąą ssiieecciiąą Powinieneś wiedzieć jak jest (lub będzie) zbudowana twoja sieć, dokładnie jaki sprzęt i technologie są (będą) wykorzystywane. PPrrzzeecczzyyttaajj rrooddzziiaałłyy ooppiissuujjąąccee wwyykkoorrzzyyssttyywwaannee pprrzzeezz cciieebbiiee technologie" Gdy już wiesz co cię konkretnie interesuje, zapoznaj się z wybranymi rozdziałami. Znajdziesz tam szczegóły dotyczące opisywanej technologii. WWyykkoonnaajj kkoonnffiigguurraaccjjee ssiieeccii Powinieneś spróbować skonfigurować sieć uważnie notując wszystkie napotkane problemy. JJeeśśllii ppoottrrzzeebbuujjeesszz ppoosszzuukkaajj ddaallsszzeejj ppoommooccyy Jeśli napotkasz problemy, w rozwiązaniu których niniejszy dokument nie będzie pomocny, wtedy zapoznaj się z rozdziałem poświęconym znajdowaniu dalszej pomocy i zgłaszaniu znalezionych błędów. BBaaww ssiięę ddoobbrrzzee!! Sieć to dobra zabawa, ciesz się nią. 44.. IInnffoorrmmaaccjjee ooggóóllnnee nnaa tteemmaatt pprraaccyy LLiinnuukkssaa ww ssiieeccii.. 44..11.. KKrróóttkkaa hhiissttoorriiaa rroozzwwoojjuu mmoodduułłóóww ssiieecciioowwyycchh jjąąddrraa LLiinnuukkssaa.. Opracowanie zupełnie nowej implementacji protokołu tcp/ip, pracująego równie dobrze jak inne istniejące implementacje nie było łatwym zadaniem. Decyzja aby napisać wszystko od zera została podjęta w czasie gdy istniała niepewność, że istniejące implementacje mogą zostać zaprzepaszczone przez restrykcyjne licencje, z powodu toczącej się sprawy sądowej rozpoczętej przez U.S.L. i w momencie gdy sieć była przepełniona świeżym entuzjazmem aby zrobić to inaczej, a być może nawet lepiej niż zostało do tej pory zrobione. Pierwszym ochotnikiem przewodzenia w pracach nad rozwojem modułów jądra do obsługi sieci był Ross Biro <biro@yggdrasil.com>. Wykonał prostą i niepełną, lecz w większości przypadków działającą implementacje podstawowych procedur, uzupełnionych przez procedury sterownika karty sieciowej ethernet WD-8003. To wystarczyło, aby przyciągnąć rzeszę ludzi, umożliwić im testowanie i eksperymentowanie. Niektórm udało się nawet doprowadzić do włączenia swoich komputerów do Internetu. Nacisk społeczności Linuksowej na rozwój obsługi sieci przez jądro wciąż wzrastał. Gdy korzyści i stysfakcja z wykonywanej pracy przestały rekompensować w wystarczającym stopni poświecenia i odpieranie rosnących nacisków, Ross zrezygnował z roli prowadzącego budowę oprogramowania sieciowego. Jego wysiłki poświęcone na stworzenie w tak burzliwych czasach czegoś użytecznego stały się katalizatorem przyszłych prac i należy je zaliczyć do najważniejszych czynników, które przyczyniły się do osiągnięcia sukcesu. Orest Zborowski <obz@Kodak.COM> dołączył do jądra oryginalny interfejs programistyczny gniazd BSD. Był to ogromny krok naprzód, ponieważ umożliwiał proste przenoszenie na Linuksa wielu istniejących programów sieciowych, bez konieczności ich nadmiernej modyfikacji. Mniej więcej w tym samym czasie Laurence Culhane <loz@holmes.demon.co.uk> opracował pierwszy sterownik protokołu SLIP. Wiele osób, które nie posiadały dostępu do sieci Ethernetowych otrzymało możliwość eksperymentowania z nowym oprogramowaniem sieciowym. Ponownie część osób wykorzystała te oprogramowanie do przyłączania się do Internetu. W ten sposób uzmysłowili reszcie jakie możliwości otworzyłyby się przed Linuksem, gdyby tylko posiadał pełną obsługę sieci. Zwiększyło również liczbę osób aktywnie wykorzystujących i eksperymentujących z istnejącym oprogramowaniem. Jednym z ludzi, który równie aktywnie pracował nad zbudowaniem modułów obsługi sieci w jądrze Linuksa był Fred van Kempen <waltje@uwalt.nl.mugnet.org>. Po krótkim okresie niepewności wywołanym rezygnacją Rossa Biro z prowadzenia projektu, Fred zaoferował swój czas i umiejętności, i przyjął tę rolę w zasadzie bez żadnych sprzeciwów. Fred miał ambitne plany na temat kierunków rozwoju oprogramowania obsługi sieci w jądrze Linuksa i aktywnie je realizował. Stworzył oprogramowanie znane pod nazwą NET-2 (oprogramowanie Rossa nosiło nazwę NET), z którego wielu ludzi korzystało przez długi czas. Fred wprowadził wiele inowacji do programu rozwoju oprogramowania, dynamiczny interfejs urządzeń, obsługę protokołu AX.25 (Amateur Radio) i bardziej modułowe implementacje obsługi funkcji sieciowych. Oprogramowanie NET-2 było wykorzystywane przez stale rosnącą grupę ludzi, w miarę jak świat dowiadywał się, że coś takiego istnieje. Oprogramowanie sieciowe nadal było rozpowszechniane w postaci łatek do standardowej dystrybucji jądra i przez długi czas nie było rozpowszechniane razem z jądrem Linuksa. NET-FAQ i późniejszy NET-2-HOWTO opisywały całkiem skomplikowana procedurę uruchomienia sieci pod Linuksem. Fred skoncentrował się na wprowadzaniu nowości do standardowej implementacji sieci, a to zabierało czas. Społeczność użytkowników zaczynała się niecierpliwić oczekując na coś co działałoby bezbłędnie i zadawalałoby 80% z nich. I podobnie jak w przypadku Rossa, naciski na Freda, jako koordynatora projektu cały czas wzrastały. Alan Cox <iialan@www.linux.uk.org> zaproponował rozwiązanie zaistniałej sytuacji. Zaproponował, że weźmie kod napisany przez Freda i przetestuje go. W ten sposób zapewni jego stabilność satysfakcjonując grono niecerpliwych użytkowników, uwalniając tym samym Freda od licznych nacisków i umożliwiając mu dalszą pracę nad rozwojem oprogramowania. Tak też zrobił, co zakończyło się pełnym sukcesem. Pierwsza wersja oprogramowania stworzona przez Alana nosiła nazwę NET-2D (Debugged - odpluskwiony). Oprogramowanie pracowało stabilnie w większości standardowych konfiguracji i większość użytkowników była wreszcie szczęśliwa. Alan bez wątpienia posiadał umiejętności i pomysły, które chciał zrealizować ku pożytkowi całej społeczności Linuksa. Następstwem było wiele dyskusji na temat kierunków rozwoju oprogramowania sieciowego NET-2 Linuksa. Rozwinęły się dwie różne szkoły, jedna, której ideą było "wpierw niech to działa, później niech będzie to lepsze" i druga z ideą "niech wpierw to będzie lepsze". Ostatecznie wmieszał się w to Linus, oferując swoje wsparcie Alanowi w jego wysiłkach włączając jego kod do standardowej dystrybucji jadra Linuksa. To postawiło Freda w bardzo trudnej pozycji. Został pozbawiony ogromnej rzeszy użytkowników aktywnie testujących i eksperymentujących z jego oprogramowaniem sieciowym, co oznaczało, że jego dalszy rozwój byłby trudny i powolny. Fred kontynuował przez krótki czas swoje prace, ostatecznie rezygnując i pozstawiając Alana jako nowego lidera w wysiłkach nad udoskonaleniem oprogramowania sieciowego Linuksa. Wktrótce swoje talenty w tematyce ujawnił Donald Becker <becker@cesdis.gsfc.nasa.gov> i stworzył ogroną liczbę sterowików kart sieciowych ethernet, niemal wszystkich dostępnych w obecnych wersjach jądra. Byli również inni, których wkład w tej dziedzinie był znaczący, lecz praca Donalda była tak płodna, że wymaga osobnej uwagi. Alan kontynuował pracę nad szlifowaniem oprogramowania NET-2-D, równocześnie starając się zająć problemami określonymi jako 'do zrobienia' (TODO). Gdy jądro Linuksa rozwinęło się na tyle by osiągnąć wersję 1.3.*, jego część dotycząca obsługi sieci składała się niemal z wersji NET-3, na której bazyją aktualne wersje. Alan pracował nad wieloma aspektami i funkcjami sieciowymi otrzymując wsparcie od wielu utalentowanych ludzi należących do internetowej społeczności Linuksa. Dzięki temu oprogramowanie rozrastało się jednocześnie w wielu kierunkach. Alan opracował dynamiczne sterowniki urządzeń i pierwsze implementacje standardów AX.25 i IPX. Kontynuował pracę, powoli restrukturyzując i wprowadzając ulepszenia, aż uzyskał obecną postać. Obsługa PPP została zaimplementowana przez Michaela Callahana <callahan@maths.ox.ac.uk> i Ala Longyeara <longyear@netcom.com>. Miało to ogromne znaczenie i ogromnie zwiększyło libczę osób aktywnie wykorzystujących Linuksa w zastosowaniach sieciowych. Jonathon Naylor <jsn@cs.nott.ac.uk> znacznie usprawnił początkowy kod Alana obsługi protokołu AX.25. Wprowdził obsługę protokołu NetRom. Obsługa AX.25/NetRom jest ogromnie ważna, ponieważ żaden inny system operacyjny nie posiada w standardowej dystrybucji obsługi tych protokołów. Były również ogromne rzesze innych ludzi, którzy w zanaczący sposób przyczynili się do rozwoju oprogramowania sieciowego Linuksa. Wiele z tych nazwisk znajdziesz później w częściach omawiających poszczególne technologie. Inni przyczynili się do rozwoju bądź opracowując różne moduły oprogramowania, bądź przysyłająć poprawki usuwające różne błędy, bądź oferując sugestie, raporty z testów lub choćby wsparcie moralne dla aktywnych twórców. Każdy z nich może twierdzić, że brał w tym udział i oferował tyle ile mógł. Kod jądra Linuksa przeznaczony do obsługi sieci jest świetnym przykładem rezultatów jakie można osiągnąć pracując w tak anarchiczny sposób, jaki to miało miejsce w tym przypadku. Jeśli się to jeszcze nie zadziwiło, to pamiętaj o jednym: prace rozwojowe nadal trwają. 44..22.. ssiieecciioowwyycchh LLiinnuukkssaa.. SSkkąądd zzddoobbyyćć iinnnnee iinnffoorrmmaaccjjee nnaa tteemmaatt zzaass­­ ttoossoowwaańń Istnieje kilka miejsc, gdzie można znaleźć dobre informacje na temat sieciowych zastosowań Linuksa. Alan Cox, aktualny opiekun i lider oprogramowania sieciowego Linuksa, prowadzi stronę internetową zawierającą najciekawsze i najważniejsze informacje na temat aktualnego rozwoju sieci w Linuksie: www.uk.linux.org <http://www.uk.linux.org/NetNews.html>. Innym znakomitym miejscem jest książka napisana przez Olafa Kircha pod tytułem Poradnik dla administratorów sieci. Powstała w ramach Projektu dokumentacji Linuksa <http://sunsite.unc.edu/LDP/> i jest dostępna tutaj: Poradnik dla administratorów sieci - wersja HTML <http://sunsite.icm.edu.pl/pub/Linux/LDP/LDP/nag/nag.html> lub w innych formatach tutaj archiwum ftp sunsite.unc.edu LDP <ftp://sunsite.icm.edu.pl/pub/Linux/sunsite/docs/LDP/network-guide/>. Książka Olafa jest całkiem wyczerpująca i dostarcza dobrego, stojącego na wysokim poziomie przeglądowego spojrzenia na konfigurację sieci pod Linuksem. Istnieje specjalna grupa dyskusyjna (angielskojęzyczna), poświęcona sieci i podobnym problemom: comp.os.linux.networking <news:comp.os.linux.networking> Istnieje angielskojęzyczna lista dyskusyjna, na którą możesz się zapisać i gdzie możesz zadawać pytania odnoszące się do funkcji sieciowych Linuksa. Aby się zapisać musisz wysłać następujący list: To: majordomo@vger.rutgers.edu Subject: anything at all Message: subscribe linux-net W większości serwerów IRC istnieją zwykle kanały #linux, na których obecni tam ludzie będą potrafili odpowiedzieć na pytania dotyczące sieci pod Linuksem. Pamiętaj, że zgłaszając jakikolwiek problem należy podawać jak najwięcej dotyczących go szczegółów. Koniecznie należy podać wersje używanego oprogramowania, sczególnie wersję jądra (uname -a), wersję takich narzędzi jak _p_p_p_d lub _d_i_p i dokładną naturę problemu na który napotkałeś. To znaczy dokładnie zanotowane komunikaty systemowe jakie otrzymałeś i dokładny opis składni wydawanych poleceń. 44..33.. tteemmaatt tteecchhnniikk ssiieecciioowwyycchh.. SSkkąądd zzddoobbyyćć iinnnnee,, nniiee zzwwiiąązzaannee zz LLiinnuukksseemm iinnffoorrmmaaccjjee nnaa Jeśli szukasz podstawowych informacji o tcp/ip, polecam zapoznanie się z następującymi dokumentami: wwpprroowwaaddzzeenniiee ddoo ttccpp//iipp dostępne w wersji tekstowej <ftp://athos.rutgers.edu/runet/tcp- ip-intro.doc> i postscriptowej <ftp://athos.rutgers.edu/runet/tcp-ip-intro.ps>. ttccpp//zzaarrzząąddzzaanniiee pprroottookkoołłeemm iipp dostępne w wersji tekstowej <ftp://athos.rutgers.edu/runet/tcp- ip-admin.doc> i postscriptowej <ftp://athos.rutgers.edu/runet/tcp-ip-admin.ps>. Jeśli poszukujesz dokładniejszych informacji na temat sieci tcp/ip mocno polecam: "Internetworking with TCP/IP" by Douglas E. Comer ISBN 0-13-474321-0 Prentice Hall publications. Jeśli chcesz się nauczyć w jaki sposób budować programy sieciowe w środowiskach zgodnych z systemem UNIX, mocno polecam: "Unix Network Programming" by W. Richard Stevens ISBN 0-13-949876-1 Prentice Hall publications. Możesz również skorzystać z grupy dyskusyjnej comp.protocols.tcp-ip <news:comp.protocols.tcp-ip>. Istotnym źródłem konkretnych informacji technicznych związanych z Internetem i protokołem tcp/ip są dokumenty RFC. RFC to skrót od "Request For Comments", jest to standardowy sposób ogłaszania i dokumentowania obowiązujących standardów internetowych. Istnieje wiele miejsc skąd można poprać dokumenty RFC. Większość z nich to archiwa ftp, część udostępnia dokumenty RFC również przez interfejs WWW dostarczając jednocześnie możliwość przeszukiwania wszystkich dokumentów w poszukiwaniu słów kluczowych. Jednym z archimum dokumntów RFC jest: baza danych Nexor RFC <http://pubweb.nexor.co.uk/public/rfc/index/rfc.html>. 55.. PPooddssttaawwoowwee iinnffoorrmmaaccjjee nnaa tteemmaatt kkoonnffiigguurroowwaanniiaa ssiieeccii.. Aby poprawnie skonfigurować sieć, musisz zapoznać się i zrozumieć informacje prezentowane w kolejnych podrozdziałach. Są to podstawowe zasady funkcjonowania sieci, niezależnie od jej wewnętrznej natury. 55..11.. CCzzeeggoo ppoottrrzzeebbuujjęę aabbyy rroozzppoocczząąćć?? Zanim zaczniesz budować lub konfigurować swoją sieć będziesz potrzebował kilku rzeczy. Najważniejsze z nich to: 55..11..11.. AAkkttuuaallnnee źźrróóddłłaa jjąąddrraa.. Ponieważ jądro którego używasz może nie posiadać obsługi sieci, lub kart sieciowych, które posiadasz, będziesz prawdopodobnie potrzebował źródła jądra, abyś mogł skompilować nowe jądro z odpowiednimi opcjami. Najnowszą wersją jądra mozna uzyskać z: ftp.funet.fi <ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/v2.0>. Zwykle pliki źródłowe powinny być rozpakowane do katalogu /usr/src/linux. Jeśli potrzebujesz informacji jak dodać do jądra dodatkowe łaty lub jak skompilować jądro powinieneś przeczytać Kernel- HOWTO <Kernel-HOWTO.pl.html>. Jeśli wyraźnie nie zostało to zaznaczone, zalecam pozostanie przy standardowych wersjach jądra (te z parzystymi numerami wersji po pierwszej kropce). Wersje testowo-rozwojowe (z nieparzystą drugą liczbą) mogą mieć zmienioną strukturę wewnętrzną lub wprowadzone inne zmiany uniemożliwiające poprawną współpracę z innym oprogramowaniem zainstalowanym na twoim systemie. Jeśli nie jesteś pewien, że poradzisz sobie z tego rodzaju problemami, w połączeniu z możliwosćią wystąpienia błędu w innym oprogramowaniu, nie używaj wersji rozwojowych. 55..11..22.. AAkkttuuaallnnee nnaarrzzęęddzziiaa ssiieecciioowwee.. Narzędzia sieciowe to programy służące do konfigurowania urządzeń sieciowych Linuksa. Np. pozwalają na przydzielenie urządzeniu numeru adresu IP lub na skonfigurowanie routingu (marszruty). Nowe dystrybucje Linuksa zawierają wszelkie niezbędne narzędzia sieciowe. Jeśli ich jescze nie zainstalowałeś, powinieneś to teraz zrobić. Jeśli nie instalowałeś Linuksa z dystrybucji, będziesz musiał pobrać źródła i skompilować narzędzia samodzielnie. To nie jest trudne. Narzędziami sieciowymi opiekuje się Bernd Eckenfels i są dostępne pod adresem: ftp.inka.de <ftp://ftp.inka.de/pub/comp/Linux/networking/NetTools/> lub kopia ftp.linux.uk.org <ftp://ftp.linux.uk.org/pub/linux/Networking/PROGRAMS/NetTools/>. Pamiętaj aby wybrac wersję najbardziej odpowiednią dla wersji jądra, które posiadasz, postępuj zgodnie z uwagami zawartymi w instalowanym pakiecie. Aby skonfigurować wersję aktualną w momencie pisania tego dokumentu musisz wykonać następujące polecenia: # # cd /usr/src # tar xvfz net-tools-1.32-alpha.tar.gz # cd net-tools-1.32-alpha # make config # make # make install # Dodatkowo jeśli zamierzasz skonfigurować firewall lub korzystać z funkcji IP Masquerade, potrzebujesz programu _i_p_f_w_a_d_m. Najnowszą wersję można zdobyć tutaj: ftp.xos.nl <ftp:/ftp.xos.nl/pub/linux/ipfwadm>. Pamiętaj, że dostępnych jest kilka wersji. Musisz wybrać tę, która najlepiej współpracuje z jądrem, które posiadasz. Aby skonfigurować wersję aktualną w momencie pisania tego dokumentu musisz wykonać następujące polecenia: # # cd /usr/src # tar xvfz ipfwadm-2.3.0.tar.gz # cd ipfwadm-2.3.0 # make # make install # 55..11..33.. PPrrooggrraammyy--aapplliikkaaccjjee ssiieecciioowwee.. Sieciowe programy użytkowe (aplikacje sieciowe) to takie, jak np. _t_e_l_n_e_t,_f_t_p i ich odpowiedniki po stronie serwera. Dystrybucją większości z nich zajmuje się David Holland <dholland@hcs.harvard.edu> . Można je zdobyć z ftp.uk.linux.org <ftp://ftp.uk.linux.org/pub/linux/Networking/base>. Aby skonfigurować wersję aktualną w momencie pisania tego dokumentu musisz wykonać następujące polecenia: # # cd /usr/src # tar xvfz /pub/net/NetKit-B-0.08.tar.gz # cd NetKit-B-0.08 # more README # vi MCONFIG # make # make install # 55..11..44.. AAddrreessyy.. Adresy protokołu IP (Internet Protocol) składają się z czterech bajtów. Zwykle zapisuje się w notacji zwanej 'dziesiętną z kropkami' (decimal dotted notation). Każdy bajt jest zamieniany na liczbę dziesiętną (0-255), opuszczając wszelkie zera na początku (chyba, że liczba jest równa zero) i zapisywany kolejno, rozdzielony jeden od drugiego kropką `.'. Konwencja wymaga, aby każdy interfejs sieciowy komputer czy routera posiadał własny numer IP. Można ten sam numer przydzielać do różnych urządzeń sieciowych jednego komputera, lecz zwykle każdy interfejs posiada własny numer IP. Numery IP sieci to nieprzerwane sekwencje adresów IP. Wszystkie adresy należące do jednej sieci mają wspólną liczbę cyfr w pełnym adresie IP. Część adresu wspólna dla wszystkich adresów IP należących do sieci nazywa się numerem sieci (adresu IP).Pozostałe cyfry określają adres komputera . Liczba bitów które są wszpólne dla wszystkich adresów w ramach jednej sieci nazywamy maską sieci (netmaską). Rolą netmaski jest określenie które adresy przynależą do sieci, której ona dotyczy, a które nie. Rozważmy następujący przykład: ----------------- --------------- Host Address 192.168.110.23 Adres komputera Network Mask 255.255.255.0 Netmaska Network Portion 192.168.110. Cześć sieciowa adresu Host portion .23 Cześć komputerowa adresu ----------------- --------------- Network Address 192.168.110.0 Adres sieci Broadcast Address 192.168.110.255 Adres ogłoszeniowy (informacja wysłana pod ten adres dotrze do wszystkich komputerów danej sieci) ----------------- --------------- Jeśli dowolny adres IP poddamy operacji bitowej koniunkcji z jego netmaską, otrzymamy w ten sposób adres sieci, do której on należy. Adres sieci jest zatem najmniejszym adresem w puli adresów danej sieci z zawsze wypełnioną zerami częscią komputerową adresu. Adres ogłoszeniowy (broadcast) to specjalny adres IP. Wszystkie komputery w danej sieci prócz nasłuchiwania pakietów adresowanych pod ich numer IP, nasłuchują również pakietów kierowanych na ten adres. Jeśli chemy wysłać pakiet, który ma dotrzeć do wszystkich komputerów w danej sieci, korzystamy właśnie z adresu ogłoszeniowego. Różnego rodzaje informacje dotyczące np. trasowania (routingu) lub zawierające różne ostrzerzenia nadawane są właśnie na ten adres, tak aby wszystkie komputery otrzymały go jednocześnie. Istnieją dwa standardy jak powinien wyglądać adres ogłoszeniowy. W powyższym przykładzie był to 192.168.110.255. Z nieznanych przyczyn w niektórych miejscach jako adresu ogłoszeniowego używa się adresu sieci. W praktyce zasadniczo nie ma znaczenia, której konwencji uzywamy, pod warunkiem, że wszystkie komputery mają skonfigurowany adres ogłoszeniowy w ten sam sposób. Z przyczyn administracyjnych w początkowym okresie rozwoju protokołu IP, pewne grupy adresów IP zostału połączone w sieci, które z kolei zostały połączone w klasy. Te klasy dostarczają określoną liczbę różnej wielkości sieci, które mogą być przydzielane użytkownikom. Wygląda to mniej więcej tak: ---------------------------------------------------------- | Klasa | Netmaska | Adresy sieciowe | | sieci | | | ---------------------------------------------------------- | A | 255.0.0.0 | 0.0.0.0 - 127.255.255.255 | | B | 255.255.0.0 | 128.0.0.0 - 191.255.255.255 | | C | 255.255.255.0 | 192.0.0.0 - 223.255.255.255 | |Multicast| 240.0.0.0 | 224.0.0.0 - 239.255.255.255 | ---------------------------------------------------------- Z których adresów powinieneś korzystać zależy bezpośrednio od tego co robisz. Aby uzyskać wszystkie adresy których potrzebujesz możesz być zmuszony do wykonania kombinacji następujących działań: IInnssttaallaaccjjaa LLiinnuukkssaa ww iissttnniieejjąącceejj ssiieeccii IIPP Jeśli chesz zainstalować Linuksa w istniejącej sieci IP powinieneś skontaktować się z administratorem sieci i poprosić go o następujące informacje: ˇ Adres IP komputera ˇ Adres IP sieci ˇ Adrs ogłoszeniowy (broadcast) ˇ Netmaska ˇ Adres routera ˇ Adres serwera DNS Następnie powinieneś skonfigurować urządzenie sieciowe podając uzyskane informacje. Nie możesz wziąć ich z powietrza i oczekiwać, że wszystko będzie działać poprawnie. BBuuddoowwaanniiee nnoowweejj ssiieeccii,, kkttóórraa nniiggddyy nniiee bbęęddzziiee ppooddłłąącczzoonnaa ddoo internetu" Jeśli budujesz prywatną sieć i nie masz zamiaru podłączać ją do Internetu to możesz wybrać zupełnie dowolne numery IP. Jednak dla bezpieczeństwa i porządku powinieneś skorzystać z grupy adresów IP pozostawionych dokładnie w tym celu. Są one określone w dokumencie RFC1597: ----------------------------------------------------------- | Zarezerwowane prywatne adresy IP | ----------------------------------------------------------- | Klasa | Netmaska | Adres komputera | | sieci | | | ----------------------------------------------------------- | A | 255.0.0.0 | 10.0.0.0 - 10.255.255.255 | | B | 255.255.0.0 | 172.16.0.0 - 172.31.255.255 | | C | 255.255.255.0 | 192.168.0.0 - 192.168.255.255 | ----------------------------------------------------------- Powinieneś się wpierw zdecydować jak wielka będzie twoja sieć, a następnie wybrać tyle adresów IP ile potrzebujesz. 55..22.. GGddzziiee uummiieeśścciićć ppoolleecceenniiaa kkoonnffiigguurraaccyyjjnnee ?? Istnieje kilka sposobów realizacji procedury uruchamiania systemu Linux. Po załadowaniu jądra uruchamiany jest program o nazwie `init'. Program init odczytuje swój plik konfiguracyjny /etc/inittab i kontynuuje proces uruchamiania systemu. Istnieje kilka odmian programu init i to jest właśnie przyczyna różnic w konfiguracji między różnymi dystrybucjami czy komputerami. Zwykle plik /etc/inittab zawiera pozycję wyglądającą mniej więcej tak: si::sysinit:/etc/init.d/boot Ten wiersz określa nazwę skryptu który ostatecznie jest odpowiedzialny za procedurę startową. Jest to mniej więcej odpowiednik pliku AUTOEXEC.BAT w DOSie. Skrypt startowy uruchamia zwykle różne inne skrypty i sieć jest konfigurowana zwykle jednym z takich skryptów. Poniższa tabela może posłużyć jako przewodnik po twoim systemie: ------------------------------------------------------------------------------- Dystryb. |Konfiguracja interfeju(karty)/routingu | Inicjalizacja ------------------------------------------------------------------------------- Debian |/etc/init.d/network |/etc/init.d/netbase | |/etc/init.d/netstd_init | |/etc/init.d/netstd_nfs | |/etc/init.d/netstd_misc ------------------------------------------------------------------------------- Slackware|/etc/rc.d/rc.inet1 |/etc/rc.d/rc.inet2 ------------------------------------------------------------------------------- RedHat |/etc/sysconfig/network-scripts/ifup-<ifname>|/etc/rc.d/init.d/network ------------------------------------------------------------------------------- Większość nowocześnych dystrybucji zawiera program, który umożliwi konfigurację wielu podstawowych interfejsów sieciowych. Jeśli masz taki program powinieneś sprawdzić czy jest on dla ciebie wystarczający, zanim zdecydujesz się na ręczną modyfikacje. ----------------------------------------- Dystryb. | Program konfiguracji sieci ----------------------------------------- RedHat | /sbin/netcfg Slackware | /sbin/netconfig ----------------------------------------- 55..33.. TTwwoorrzzeenniiee iinntteerrffeejjssóóww ssiieecciioowwyycchh.. W większości systemów Unix urządzenia sieciowe znajdują się w katalogu _d_e_v. W Linuksie tak nie jest. Linux tworzy urządzenia sieciowe dynamicznie, dlatego nie wymaga istnienia plików urządzeń sieciowych. W większości przypadków urządzenia sieciowe są tworzone automatycznie przez sterowniki tych urządzeń w czasie ich inicjacji i rozpoznawania sprzętu. Na przykład sterowniki sieciowych kart ethernetowych tworzą interfejsy o nazwach eth[0..] sekwencyjnie w miarę rozpoznawania kolejnych urządzeń. Pierwsz znaleziona karta ethernetowa staje się urządzeniem eth0, druga eth1 itd. Jednak w niektórych przypadkach, zwykle kiedy korzystamy z protokołów SLIP lub PPP, urządzenia sieciowe są tworzone na żądanie programów wykonywanych przez użytkownika. Odbywa się podobny sekwencyjny przydział nazw urządzeń, lecz nie dzieje się to w sposób automatyczny w czasie ładowania systemu. Dzieje się tak dlatego, że w przeciwieństwie do kart ethetnetowych liczba aktywnych interfejsów slip lub ppp w całym okresie pracy komputera może się zmieniać. Powiemy o tym dokładniej w dalszej części. 55..44.. KKoonnffiigguurraaccjjaa iinntteerrffeejjssuu ssiieecciioowweeggoo.. Jeśli posiadasz już wszelkie niezbędne oprogramowanie i informacje o potrzebnych adresach sieciowych możesz rozpocząć konfigurację interfejsu. Kiedy mówimy o konfiguracji interfejsu sieciowego mamy na myśli proces przydzielenia mu odpowiedniego adreu IP i nadania odpowiednich wartości innym jego parametrom. W tym celu najczęściej posługujemy się programem _i_f_c_o_n_f_i_g (interface configure). Zwykle używa się go sposób podobny do podanego poniżej: # ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up W tym przypadku konfiguruję kartę ethernetową `eth0' nadając jej adres IP `192.168.0.1' i netmaskę `255.255.255.0'. Parametr `_u_p' na końcu wiersza oznacza, że intefejs powinien zostać aktywowany (rozpocząć pracę). Jądro konfigurując interfejsy sieciowe przyjmuje pewne domyślne wartośći parametrów. Na przykład mógłbyś podać adres IP i adres ogłoszeniowy (broadcast) danego interfejsu, lecz jeśli tego nie zrobisz jądro znajdzie sensowne wartości dla tych parametrów na podstawie klasy konfigurowanego adresu IP. W moim przykładzie jądro przyjmie, że jest interfejs jest konfigurowany w sieci klasy C i nada adresowi sieci wartość `192.168.0.0', a adresowi ogłoszeniowemu `192.168.0.255'. Polecenie _i_f_c_o_n_f_i_g posiada znacznie więcej opcji. Najważniejsze z nich to: uupp włącznie interfejsu. ddoowwnn wyłączenie interfejsu. [[--]]aarrpp włączenie lub wyłączenie korzystania z protokołu ARP na tym interfejsie [[--]]aallllmmuullttii włączenie lub wyłączenie korzystania z trybu zmuszone do odbierania wszelkich pakietów, a nie tylko tych adresowanych bezpośrednio do niego. Jest bardzo ważna dla programów _t_c_p_d_u_m_p i innych podglądaczy pakietów. mmttuu NN ustawienie wielkości parametru _M_T_U danego urządzenia. nneettmmaasskk aaddddrr adres sieci, do której należy (jest podłączony) interfejs. iirrqq aaddddrr ten parametr ma zastosowanie tylko dla niektórych modułów sprzętowych. Pozwala na ustawienie wartości przerwania IRQ z którego powinno korzystać dane urządzenie. [[--]]bbrrooaaddccaasstt [[aaddddrr]] pozwala na włączenie odbierania pakietów skierowanych na podany adres ogłoszeniowy, lub na zablokowanie odbierania tych pakietów. [[--]]ppooiinnttooppooiinntt [[aaddddrr]] pozwala na podanie adresu komputera na drugim końsu połączenia point-to-point obsługiwanego przez ten interfejs. Ma to miejsce w przypadku takich protokołów jak _s_l_i_p czy ppp. hhww <<ttyyppee>> <<aaddddrr>> pozwala na określenie adresu sprzętowego urządzenia lecz tylko dla ograniczonego rodzaju urządzeń. Nie jest często używany w sieciach Ethernet, za to często wykorzystuje się go w sieciach AX.25. Polecenie _i_f_c_o_n_f_i_g można stosować dla każdego interfejsu sieciowego. Niektóre programy użytkownika, jak _p_p_p_d czy _d_i_p korzystają z niego w celu skonfigurowania interfejsu sieciowego, tuż po jego utworzeniu. W takim przypadku nie jest potrzebna ręczna konfiguracja tych urządzeń. 55..55.. KKoonnffiigguurraaccjjaa rreessoollvveerraa nnaazzww.. `_R_e_s_o_l_v_e_r _n_a_z_w ' jest częscią standardowej biblioteki Linuksa. Jego podstawową funkcją jest zamiana wygodnych dla człowieka nazw komputerów, jak `ftp.funet.fi' na ich adres 128.214.248.6, którym posługują się komputery. 55..55..11.. CCoo ttoo jjeesstt nnaazzwwaa?? Prawdopodobnie spotkałeś się z nazwami komputerów, lecz być może nie wiesz w jaki sposób są konstruowane lub rozkładane. Nazwy domen internetowych są w swojej naturze hierachiczne, to znaczy posiadają strukturę drzewiastą. _d_o_m_e_n_a jest rodziną, grupą nazw. _D_o_m_e_n_a może być podzielona na _p_o_d_d_o_m_e_n_y (subdomain). _D_o_m_e_n_a _n_a_j_w_y_ż_s_z_e_g_o _p_o_z_i_o_m_u (top level domain) jest domeną, która jednocześnie nie jest poddomeną. Domeny najwyższego poziomu są określone w dokumencie RFC-920. Poniżej kilka przykładów domen najwyższego poziomu. CCOOMM organizacje komercyjne EEDDUU organizacje edukacyjne GGOOVV organizacje rządzowe MMIILL organizacje wojskowe OORRGG inne organizacje oozznnaacczzeenniiee kkrraajjuu dwuliterowe kody państw, reprezentujące konkretne państwo. Każda z domen najwyższego poziomu posiada poddomeny. Domey najwyższego poziomu o nazwach odpowiadających kodom państw, są zwykle podobnie podzielone, jak domeny najwyższego poziomu tzn. można tzm znaleźć poddomeny com, edu, gov, mil i org. Na koniec otrzymujemy com.au i gov.au dla organizacji komercyjnych i rządowych w Australii. Z przyczyn historycznych większość domen należących do domen najwyższego poziomu dotyczy organizacji amerykańskich, choć Stany Zjednoczone mają również własną domenę `.us'. Następny poziom podziału odzwierciedla zwykle nazwę instytucji/organizacji. Dalsze poddomeny różnią się w swojej naturze, często ten poziom domen jest zależny od wewnętrznej struktury instytucji, lecz może być zależny od dowolnego, rozsądnego kryterium przyjętego przez osoby zarządzające siecią w danej instytucji. Ostatni w strukturze człon domeny, lecz pierwszy z lewej w jej nazwie oznacza _n_a_z_w_ę _k_o_m_p_u_t_e_r_a (hostname) i musi być jednoznaczny w danej poddomenie. Pozostała część jezt nazywana _d_o_m_e_n_ą danego komputera (domainname), a całość jest nazywana `_F_u_l_l_y _Q_u_a_l_i_f_i_e_d _D_o_m_a_i_n _N_a_m_e _F_Q_D_M' - Pełna nazwa domenowa. Biorąc za przykład mój komputer pocztowy, jego FQDN to `perf.no.itg.telstra.com.au'. To znaczy, że komputer nazywa się `perf', a domena `no.itg.telstra.com.au'. Nazwa mojej domeny rozpoczyna się od członu oznaczającego kraj, Australię. Ponieważ jesteśmy organizacją komercyjną kolejnym poziomem jest `com'. `telstra' oznacza nazwę firmy (starą), a dalsze człony są pochodną wewnętrznej struktury naszej firmy. Moj komputer należy do Information Technolog Group w sekcji Network Operations. 55..55..22.. JJaakkiiee iinnffoorrmmaaccjjee bbęęddąą nniieezzbbęęddnnee.. Musisz wiedzieć do jakiej domeny należy twój komputer. Oprogramowanie resolwera nazw wykonuje swoją pracę odwołując się do _s_e_r_w_e_r_a _D_N_S (Domain Name Server), będziesz potrzebował adres IP najbliższego serwera DNS. Musisz poprawić trzy pliki. Omówię każdy z nich. 55..55..33.. //eettcc//rreessoollvv..ccoonnff /etc/resolv.conf jest głównym plikiem konfiguracyjnym resolwera nazw. Posiada bardzo prosty format. Jest to plik tekstowy zawierający jedno polecenie na wiersz. Najczęscieściej stosuje się trzy słowa kluczowe: ddoommaaiinn określa nazwę domeny, do której należy dany komputer sseeaarrcchh określa listę domen, które mają być przeszukiwane w poszukiwaniu podanej nazwy komputera (w przypadku gdy nazwa komputera nie została podana w postaci FQDN) nnaammeesseerrvveerr może być powtórzone wielokrotnie, określa adres serwera DNS przykładowy plik /etc/resolv.conf mógłby wyglądać nastepująco: domain maths.wu.edu.au search maths.wu.edu.au wu.edu.au nameserver 192.168.10.1 nameserver 192.168.12.1 W przykładzie podaliśmy, że podstawową domeną, do której należy komputer i która będzie dodawana do nazwy komputera, jeśli nie została podana w formacie FQDN jest maths.wu.edu.au. Jeśli komputer nie zostanie znaleziony w tej domenie resolwer przeszuka jeszcze domenę wu.edu.au. Podano również adresy IP dwóch serwerów DNS. 55..55..44.. //eettcc//hhoosstt..ccoonnff Plik /etc/host.conf to plik, które określa niektóre zachowania resolvera. Jego format jest dokładnie opisany na stronie podręcznika (man resolv+). W większości przypadków wystarczy taki plik: order hosts,bind multi on Ta konfiguracja informuje resolver, że poszukując nazwy komputera należy wpierw sprawdzać zawartość pliku /etc/hosts, zanim zacznie się zadawać pytania serwerowi DNS. Oznacza również, że należy przekazywać wszystkie znalezione w tym pliku adresy IP odpowiadające nazwie poszukiwanego komputera, a nie tylko pierwszy z nich. 55..55..55.. //eettcc//hhoossttss Plik /etc/hosts jest to miejsce, gdzie umieszcza się nazwy i adresy lokalnych komputerów. Jeśli umieścisz w tym pliku nazwę i adres komputera, nie musisz pytać się o jego adres serwera DNS. Wadą tego rozwiązania jest to, że musisz pamiętać aby informacje zawarte w tym pliku były aktualne. W dobrze zarządzanym sytemie w niniejszym pliku można zwykle znaleźć nazwę interfejsu pętli zwrotnej i nazwy lokalnych komputerów. # /etc/hosts 127.0.0.1 localhost loopback 192.168.0.1 nazwa.tego.komputera Możesz podać więcej niż jedną nazwę odpowiadającą danemu numerowi IP, jak to zrobiliśmy w powyższym przykładzie w przypadku lokalnej pętli zwrotnej. 55..66.. KKoonnffiigguurraaccjjaa iinntteerrffeejjssuu ppęęttllii zzwwrroottnneejj Interfejs pętli zwrotnej (`loopback' interface) jest interfejsem specjalnego rodzaju, umożliwiającym nawiązywanie połączeń z samym sobą. Istnieje wiele przyczyn, dla których mogłbyś chcieć to robić. Na przykład w celu przetestowania oprogramowania sieciowego, bez konieczności zawracania głowy komukolwiek innemu. Adres `127.0.0.1' został przypisany specjalnie dla tego interfejsu. Dlatego niezależnie na którym komputerze bedziesz pracował, jeśli połączysz się z komputerem o adresie 127.0.0.1 zawsze to będzie ten komputer, z którego próbujesz nawiązać połączenie. Skonfigurowanie interfejsu pętli zwrotnej jest proste, musisz się upewnić, że przy starcie sytemu wykonuje się następujące polecenie: # ifconfig lo 127.0.0.1 # route add -host 127.0.0.1 lo Więcej na temat polecenia _r_o_u_t_e powiemy w następnym rozdziale. 55..77.. TTrraassoowwaanniiee ((rroouuttiinngg)).. Trasowanie ruchu (routing) to ogromny temat. Można na ten temat napisać bardzo dużo. Większość z was spotka się z całkiem prostymi konfiguracjami trasowania, a część nie. Opowiem o podstawowych prawach trasowania ruchu. Jeśli potrzebujesz bardziej szczegółowych informacji radzę zapoznać się z dokumentami wspomnianymi na początku. Rozpocznijmy od definicji. Co to jest trasowanie pakietów IP. Oto jedna z definicji, którą ja używam: Trasowanie pakietów IP to proces, w którym komputer z przyłączeniami do wielu sieci decyduje, gdzie wysłać otrzy­ mane pakiety. Zilustrujmy to przykładem. Wyobraźmy sobie typowy biurowy router. Mógłby mieć połączenie PPP z internetem, kilka segmentów ethernetowych obsługujących stacje robocze i jeszcze jedno połączenie PPP do innego biura. Kiedy router otrzymuje datagram z jednego ze swoich przyłączeń sieciowych, trasowanie jest mechanizmem stosowanym przez niego do wyboru portu przyłączeniowego, do którego trzeba przesłać ten datagram. Zwykłe komputery też muszą wykonywać trasowanie, wszystkie komputery w Internecie posiadają dwa urządzenia sieciowe, jedno z nich to urządzenie pętli zwrotnej (loopback interface) opisane powyżej, a drugie to te, którego używa do porozumiewania się z resztą sieci. Może to być karta ethernetowa lub port PPP, czy SLIP. OK, w jaki sposób działa trasowanie? Każdy z komputerów przechowuje listę zasad trasowania, zwaną tabelą trasowania (routing table). Każdy wiersz tej tabeli zawiera co najmniej trzy pola, pierwsze oznaczające adres docelowy, drugie zawiera nazwę interfejsu przez który należy wysłać datagram, a trzecie, opcjonalne, to adres IP innego komputera (tzw. gateway), który przeniesie datagram dalej w jego drodze przez sieć. Pod Linuksem tabelę trasowania można zobaczyć wydając polecenie: # cat /proc/net/route Proces trasowania jest całkiem prosty: otrzymujemy przychodzący datagram, adres docelowy (do kogo jest adresowany ten datagram) zostaje porównany z pozycjami tabeli routingu. Wybiera się pozycje, kóra najbardziej pasuje do tego adresu i datagram zostaje przesłany przez określony w tej pozycji interfejs. Jeśli pole gatewaya nie jest puste, wtedy datagram zostaje przesłany do tego komputera przez określony w tej pozycji interfejs seciowy, w przeciwnym wyopadku zakłada się, że adres docelowy leży na sieci obsługiwanej przez podany interfejs. Do manipulacji pozycjami tabeli trasowania służy specjalne polecenie. Wymaga podania w wierszu poleceń dodatkowych parametrów i zamienia je na wywołania funkcji systemowych, które proszą jądro o dodanie, zmodyfikowanie lub usunięcie pozycji w tabeli trasowania (która znajduje się w gestii jądra Linuksa). Polecenie to nazywa się `_r_o_u_t_e'. Prosty przykład. Wyobraźmy sobie, że mamy sieć ehernetową. Powiedziano nam, że jest to sieć klasy C o adresie 192.168.1.0. Nasz komputer otrzymał adres 192.168.1.10 i powiedziano nam, że router przyłączony do internetu ma adres 192.168.1.1. Pierwszym krokiem jest poprawne skonfigurowanie interfejsu, w sposób opisany wcześniej: # ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up Teraz musimy dodać pozycję do tabeli trasowania, aby powiedzieć jądru, że datagramy do komputerów, których adresy pasujądo wzorca 192.168.1.* powinny być wysyłane przez interfejs ethernetowy. Stosuje się w tym celu polecenie zbliżone do tego: # route add -net 192.168.0.0 netmask 255.255.255.0 eth0 Zwróć uwagę na argument `-net', który mówi programowi route, że ta pozycja oznacza trasę do całej podsieci (network route). Inną możliwością jest pozycja określająca trasę do konkretnego adresu IP tzw. 'host route'. Powyższa pozycja tabeli trasowania umożliwi nam komunikację ze wszystkimi komputerami znajdującymi się w naszym segmencie ethernetowym. A co z wszystkimi innymi adresami IP spoza naszego segmentu? Dodanie trasy do każdej sieci.komputera z którym chcielibyśmy się kiedykolwiek komunikować byłoby ogromnym zadaniem. Dlatego wprowadzono tzw _t_r_a_s_ę _d_o_m_y_ś_l_n_ą (default route). Trasa _d_o_m_y_ś_l_n_a pasuje do każdego adresu docelowego, lecz najgorzej jak tylko jest to możliwe. Dlatego, jeśli istnieje inna pozycja pasująca do tego adresu, to ona zostanie wykorzystana zamiast pozycji _d_o_m_y_ś_l_n_e_j. Ideą trasy domyślnej jest umożliwienie zrealizowania polecenia 'wszystko inne wysłać tędy'. W naszym przykładzie oznacza to następujące polecenie: # route add default gw 192.168.1.1 eth0 Argument `gw' informuje program route, że następny argument oznacza adres IP. lub nazwę gatewaya lub routera, do którego należy przesyłać wszystkie datagramy pasującego do tej pozycji. Dalszym przesłaniem tych datagramów zajmie się właśnie ten komputer. Tak więc nasza pełna konfiguracja wyglądała by następująco: # ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up # route add -net 192.168.0.0 netmask 255.255.255.0 eth0 # route add default gw 192.168.1.1 eth0 Jeśli dobrze się przyjrzysz plikom `rc' zajmującymi się siecią, zobaczysz, że przynajmniej jeden z nich wygląda bardzo podobnie. Jest to bardzo populana konfiguracja. Zajmijmy się troszkę bardziej skomplikowanym przypadkiem. Załóżmy, że zajmujemy się konfiguracją routera o którym mówiliśmy wcześniej, tym który posiada połączenie PPP z Internetem, kilka segmentów sieci lokalnej. Niech konkretnie będą to trzy segmenty eternetowe i jedno łącze PPP. Konfiguracja trasowania w tym przypadku wyglądała by następująco: # route add 192.168.1.0 netmask 255.255.255.0 eth0 # route add 192.168.2.0 netmask 255.255.255.0 eth1 # route add 192.168.3.0 netmask 255.255.255.0 eth2 # route add default ppp0 Każda ze stacji roboczych używałaby prostszej formy prezentowanej wcześniej. Tylko router musi określić oddzielnie trasę do każdej z sieci, ponieważ w przypadku stacji roboczej pozycja _d_o_m_y_ś_l_n_a obsłuży wszystkie połączenia pozostawiając routerowi zmartwienie odpowiedniego podziału ruchu. Możesz się zastanawiać, dlaczego trasa domyślna na routerze nie posiada argumentu gw. Przyczyna jest prosta. Protokoły urządzeń szeregowych, takich jak PPP czy SLIP, zawsze mają w swojej sieci tylko dwa komputery, po jednym na każdym końcu. Wskazywanie komputera po drugiej stronie połączenia jako gatewaya jest niepotrzebne i nadmiarowe, ponieważ nie ma innej możliwości niż przesłać pakiety na drugi koniec połączenia PPP. Dlatego nie jest potrzebne okreśanie w tego rodzaju połączeniach gatewaya. Podania gatewaya wyagają w takiej sytuacji inne rodzaje sieci, np. ethernet, arcnet, token ring, które obsługują wiele komputerów na jednym segmencie. 55..77..11.. DDoo cczzeeggoo ssłłuużżyy pprrooggrraamm rroouutteedd ?? Konfiguracja trasowania opisana powyżej nadaje się dla prostych konfiguracji sieci, gdzie zawsze istnieje tylko jedna droga do celu. W przypadku bardziej skomplikowanych konfiguracji sieci, sprawy nieco się komplikują. Na szczęście większości was to nie dotyczy. Najwieksze kłopoty jakie sprawia 'trasowanie ręczne' lub inaczej mówiąc 'statyczne', polegają na tym, że w przypadku przerwania łącza do komputera docelowego, jedyną metodą nawiązania komunikacji inną drogą (jeśli taka istnieje) jest ręczna interwencja w tabelę trasowania (ręczne uruchomienie odpowiednich poleceń). Naturalnie jest to bardzo powolne, niepraktyczne i ryzykowne. Zostały rozwinięte techniki w celu automatycznej modyfikacji tabeli trasowania w przypadku awarii połączeń w celu przełączenia ruchu na drogi obejściowe, wszystkie te metody nazywane są ogólnie 'trasowaniem dynamicznym'. Być może słyszałeś o najbardziej popularnych protokołach dynamicznego trasowania. Najczęsciej występującym jes RIP (Routing Information Protocol) i OSPF (Open Shortest Path First Protocol). RIP jest bardzo populany w małych sieciach takich jak małego rozmiaru sieci korporacyjne lub sieci między budynkami. OSPF jest nowocześniejszym i bardziej sprawnym protokołem, lepiej nadającym się do obsługi dużych konfigracji sieci i lepiej nadaje się do zastosowania w środowiskach, gdzie istnieje duża liczba możliwych tras przesyłania pakietu. Powszechnymi implementacjami tych protokołów są programy _r_o_u_t_e_d -RIP i _g_a_t_e_d -RIP,OSPF i inne. _r_o_u_t_e_d jest zwykle w każdej dystrybucji Linuksa, lub można go znaleźć w pakiecie `NetKit' opisanym wcześniej. Przykład, który mogłby wymagać zastosowania dynamicznego trasowania mógłby wyglądać następująco: 192.168.1.0 / 192.168.2.0 / 255.255.255.0 255.255.255.0 - - | | | /-----\ /-----\ | | | |ppp0 // ppp0| | | eth0 |---| A |------//---------| B |---| eth0 | | | // | | | | \-----/ \-----/ | | \ ppp1 ppp1 / | - \ / - \ / \ / \ / \ / \ / \ / \ / \ / ppp0\ /ppp1 /-----\ | | | C | | | \-----/ |eth0 | |---------| 192.168.3.0 / 255.255.255.0 Mamy tutaj trzy routery A,B i C. Każdy obsługuje segment sieci klasy C (netmaska 255.255.255.0). Każdy router posiada również łącze PPP do każdego z pozostałych routerów. Sieć tworzy trójkąt. Powinno być już oczywiste, że tabela trasowania na routerza A wygląda następująco: # route add -net 192.168.1.0 netmask 255.255.255.0 eth0 # route add -net 192.168.2.0 netmask 255.255.255.0 ppp0 # route add -net 192.168.3.0 netmask 255.255.255.0 ppp1 Taka konfiguracja będzie działała poprawnie, dopóki połączenie pomiędzy routerami A i B będzie pracować poprawnie. Jeśli nastąpi awaria tego połączenia komputery na segmencie A nie będą w stanie osiągnąć komputerów segmentu B i na odwrót ponieważ ich datagramy będą kierowane do interfejsu ppp0 routera A, który uległ właśnie awarii. Jednak komputery z segmentu B będą mogły nadal komunikować się z segmentem D i na odwrót ponieważ połączenie PPP pomiędzy komputerami pozostało nietknięte. Zaczekaj! Skoro A może komunikować się z C i C może komunikować się z B dlaczego nie przesyłać datagramów adresowanych do B przez C zrzucając na niego dostarczenie ich do B? To jest właśnie rodzaj problemu, do rozwiązania którego powstały protokoły trasowania dynamicznego, jak np. RIP. Gdyby na każdym z routerów był uruchominy program _r_o_u_t_e_d wtedy tablice trasowania zostałyby automatycznie poprawione, tak aby odzwierciedlały nowy stan sieci w przypadku awarii któregokolwiek połączenia. Utworzenie takiej konfiuracji jest proste. Na każdym z routerów należy zrobić dwie rzeczy. W przypadku routera A: # route add -net 192.168.1.0 netmask 255.255.255.0 eth0 # /usr/sbin/routed Demon `_r_o_u_t_e_d' tuż po uruchomieniu automatycznie znajdzie aktywne porty przyłączeń sieciowych, następnie będzie do nich rozsyłał i nasłuchiwał przychodzących z nich komunikatów pozwalając w ten sposób określenie poprawnej tabeli trasowania. To był bardzo krótki opis trasowania dynamicznego i jego zastosowań. Jeśli potrzebujesz więcej informacji powinieneś zapoznać się dokumentami, do których referencje znajdziesz na początku tego dokumentu. Istotne sprawy dotyczące dynamicznego trasowania: 1. Potrzeba uruchomienia demona protokołu dynamicznego trasowania zachodzi jedynie wtedy, gdy twój Linux ma możliwość wyboru trasy do komputera docelowego. 2. Demon trasowania dynamicznego będzie automatycznie modyfikował tabelę trasowania dopasowując ją do zmian w strukturze sieci. 3. RIP nadaje się do sieci małych i średnich. 55..88.. KKoonnffiigguurraaccjjaa sseerrwweerróóww ii uussłłuugg ssiieecciioowwyycchh.. Serwery i usługi sieciowe są to te programy, które pozwalają zdalnemu użytkownikowi stać się użytkownikiem twojego komputera. Zdalny użytkownik ustanawia połączenie sieciowe z twoim komputerem i programem oferującym usługę, lub demonem sieciowym, nasłuchującym na danym porcie, akceptuje połączenie i wykonuje program. Istnieją dwa tryby pracy demonów sieciowych. Oba są równie często stosowane. Oto one: nniieezzaalleeżżnnyy program-demon sieciowy nasłuchuje na określonych portach sieciowych i w momencie zestawienia przychodzącego połączenia, sam zarządza tym połączeniem w celu udostępnienia danej usługi. ppooddppoorrzząąddkkoowwaannyy sseerrwweerroowwii _i_n_e_t_d serwer _i_n_e_t_d jest specjalnym programem-demonem sieciowym specjalizującym się w obsłudze zestawiania połączeń sieciowych. Posiada własny plik konfiguracyjny, który mówi mu, który program obsługi usługi powinien zostać uruchomiony dla zaistniałej kombinacji typu połączenia (tcp lub udp) i numeru portu. Porty są opisane w innym pliku, o którym opowiemy już niedługo. Istnieją dwa ważne pliki konfiguracyjne. Są to /etc/services: plik, który kojarzy nazwy z numerami portów i /etc/inetd.conf: plik konfiguracyjny demona _i_n_e_t_d. 55..88..11.. //eettcc//sseerrvviicceess Plik /etc/services jest prostą bazą, która kojarzy łatwe dla człowieka nazwy portów z wykorzystywanymi przez komputery numerami. Posiada bardzo prosty format. Jest to plik tekstowy, którego każdy wiersz jest jednym rekordem informacji. Każdy rekord składa się z trzech pól, rozdzielonych dowolną ilością białych znaków (tabulator lub odstęp): nazwa port/protokół aliasy # komentarz nnaazzwwaa jedno słowo reprezentujące opisywaną usługę. ppoorrtt//pprroottookkóółł to pole jest podzielone na dwie części ppoorrtt numer określający numer portu pod którym będzie dostępna dana usługa. Wiekszość popularnych usług ma już przydzielone numery portów. Są opisane w RFC-1340. pprroottookkóółł może to być albo tcp albo udp. Należy zapamiętać, że pozycja 18/tcp jest zupełnie inna niż pozycja 18/udp i nie ma żadnych technicznych uwarunkowań, dlaczego dana usługa miałaby istnieć w obu przypadkach. Należy zachować zdrowy rozsądek. Jeśli któraś z usług jest rzeczywiście dostępna zarówno przez tcp, jak i przez udp, wtedy rzeczywiście w /etc/services znajdą się obie te pozycje. aalliiaassyy inne nazwy, pod którymi będzie znana ta usługa. Dowolny tekst w wierszu po znaku `#' jest traktowany jako komentarz i ignorowany. 55..88..11..11.. PPrrzzyykkłłaadd pplliikkuu //eettcc//sseerrvviicceess .. Wszystkie nowe dystrybucje Linuksa dostarczają dobry plik /etc/services. Na wszelki wypadek, gdybyś chciał zbudować swój komputer od zera oto kopia pliku /etc/services jaki jest dostarczany razem z dystrybucją Debian <http://www.debian.org/>. # /etc/services: # $Id: NET-3-HOWTO.pl.sgml,v 1.4 2001/12/15 09:56:17 bart Exp $ # # Network services, Internet style # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, most entries here have two entries # even if the protocol doesn't support UDP operations. # Updated from RFC 1340, ``Assigned Numbers'' (July 1992). Not all ports # are included, only the more common ones. tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp # message send protocol chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp 21/tcp ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol telnet 23/tcp # 24 - private smtp 25/tcp mail # 26 - unassigned time 37/tcp timserver time 37/udp timserver rlp 39/udp resource # resource location nameserver 42/tcp name # IEN 116 whois 43/tcp nicname re-mail-ck 50/tcp # Remote Mail Checking Protocol re-mail-ck 50/udp # Remote Mail Checking Protocol domain 53/tcp nameserver # name-domain server domain 53/udp nameserver mtp 57/tcp # deprecated bootps 67/tcp # BOOTP server bootps 67/udp bootpc 68/tcp # BOOTP client bootpc 68/udp tftp 69/udp gopher 70/tcp # Internet Gopher gopher 70/udp rje 77/tcp netrjs finger 79/tcp www 80/tcp http # WorldWideWeb HTTP www 80/udp # HyperText Transfer Protocol link 87/tcp ttylink kerberos 88/tcp kerberos5 krb5 # Kerberos v5 kerberos 88/udp kerberos5 krb5 # Kerberos v5 supdup 95/tcp # 100 - reserved hostnames 101/tcp hostname # usually from sri-nic iso-tsap 102/tcp tsap # part of ISODE. csnet-ns 105/tcp cso-ns # also used by CSO name server csnet-ns 105/udp cso-ns rtelnet 107/tcp # Remote Telnet rtelnet 107/udp pop-2 109/tcp postoffice # POP version 2 pop-2 109/udp pop-3 110/tcp # POP version 3 pop-3 110/udp sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP auth 113/tcp authentication tap ident sftp 115/tcp uucp-path 117/tcp nntp 119/tcp readnews untp # USENET News Transfer Protocol ntp 123/tcp ntp 123/udp # Network Time Protocol netbios-ns 137/tcp # NETBIOS Name Service netbios-ns 137/udp netbios-dgm 138/tcp # NETBIOS Datagram Service netbios-dgm 138/udp netbios-ssn 139/tcp # NETBIOS session service netbios-ssn 139/udp imap2 143/tcp # Interim Mail Access Proto v2 imap2 143/udp snmp 161/udp # Simple Net Mgmt Proto snmp-trap 162/udp snmptrap # Traps for SNMP cmip-man 163/tcp # ISO mgmt over IP (CMOT) cmip-man 163/udp cmip-agent 164/tcp cmip-agent 164/udp xdmcp 177/tcp # X Display Mgr. Control Proto xdmcp 177/udp nextstep 178/tcp NeXTStep NextStep # NeXTStep window nextstep 178/udp NeXTStep NextStep # server bgp 179/tcp # Border Gateway Proto. bgp 179/udp prospero 191/tcp # Cliff Neuman's Prospero prospero 191/udp irc 194/tcp # Internet Relay Chat irc 194/udp smux 199/tcp # SNMP Unix Multiplexer smux 199/udp at-rtmp 201/tcp # AppleTalk routing at-rtmp 201/udp at-nbp 202/tcp # AppleTalk name binding at-nbp 202/udp at-echo 204/tcp # AppleTalk echo at-echo 204/udp at-zis 206/tcp # AppleTalk zone information at-zis 206/udp z3950 210/tcp wais # NISO Z39.50 database z3950 210/udp wais ipx 213/tcp # IPX ipx 213/udp imap3 220/tcp # Interactive Mail Access imap3 220/udp # Protocol v3 ulistserv 372/tcp # UNIX Listserv ulistserv 372/udp # # UNIX specific services # exec 512/tcp biff 512/udp comsat login 513/tcp who 513/udp whod shell 514/tcp cmd # no passwords used syslog 514/udp printer 515/tcp spooler # line printer spooler talk 517/udp ntalk 518/udp route 520/udp router routed # RIP timed 525/udp timeserver tempo 526/tcp newdate courier 530/tcp rpc conference 531/tcp chat netnews 532/tcp readnews netwall 533/udp # -for emergency broadcasts uucp 540/tcp uucpd # uucp daemon remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem klogin 543/tcp # Kerberized `rlogin' (v5) kshell 544/tcp krcmd # Kerberized `rsh' (v5) kerberos-adm 749/tcp # Kerberos `kadmin' (v5) # webster 765/tcp # Network dictionary webster 765/udp # # From ``Assigned Numbers'': # #> The Registered Ports are not controlled by the IANA and on most systems #> can be used by ordinary user processes or programs executed by ordinary #> users. # #> Ports are used in the TCP [45,106] to name the ends of logical #> connections which carry long term conversations. For the purpose of #> providing services to unknown callers, a service contact port is #> defined. This list specifies the port used by the server process as its #> contact port. While the IANA can not control uses of these ports it #> does register or list uses of these ports as a convienence to the #> community. # ingreslock 1524/tcp ingreslock 1524/udp prospero-np 1525/tcp # Prospero non-privileged prospero-np 1525/udp rfe 5002/tcp # Radio Free Ethernet rfe 5002/udp # Actually uses UDP only bbs 7000/tcp # BBS service # # # Kerberos (Project Athena/MIT) services # Note that these are for Kerberos v4, and are unofficial. Sites running # v4 should uncomment these and comment out the v5 entries above. # kerberos4 750/udp kdc # Kerberos (server) udp kerberos4 750/tcp kdc # Kerberos (server) tcp kerberos_master 751/udp # Kerberos authentication kerberos_master 751/tcp # Kerberos authentication passwd_server 752/udp # Kerberos passwd server krb_prop 754/tcp # Kerberos slave propagation krbupdate 760/tcp kreg # Kerberos registration kpasswd 761/tcp kpwd # Kerberos "passwd" kpop 1109/tcp # Pop with Kerberos knetd 2053/tcp # Kerberos de-multiplexor zephyr-srv 2102/udp # Zephyr server zephyr-clt 2103/udp # Zephyr serv-hm connection zephyr-hm 2104/udp # Zephyr hostmanager eklogin 2105/tcp # Kerberos encrypted rlogin # # Unofficial but necessary (for NetBSD) services # supfilesrv 871/tcp # SUP server supfiledbg 1127/tcp # SUP debugging # # Datagram Delivery Protocol services # rtmp 1/ddp # Routing Table Maintenance Protocol nbp 2/ddp # Name Binding Protocol echo 4/ddp # AppleTalk Echo Protocol zip 6/ddp # Zone Information Protocol # # Debian GNU/Linux services rmtcfg 1236/tcp # Gracilis Packeten remote config server xtel 1313/tcp # french minitel cfinger 2003/tcp # GNU Finger postgres 4321/tcp # POSTGRES mandelspawn 9359/udp mandelbrot # network mandelbrot # Local services 55..88..22.. //eettcc//iinneettdd..ccoonnff Plik /etc/inetd.conf jest plikiem konfiguracyjnym programu _i_n_e_t_d. Jego rolą jest poinformowanie _i_n_e_t_d co powinien zrobić w momencie otrzymania połączenia z konkretną usługą. Musisz powiedzieć programowi _i_n_e_t_d, który program obsługi uruchomić i jak to zrobić. Musisz to zrobić dla każdej usługi, której połączenia mają być obsługiwane przez program _i_n_e_t_d. Format tego pliku jest całkiem prosty. Jest to plik tekstowy, którego kązy wiersz jest niezależny rekordem danych opisujących jedną z usług jaką chcesz obsługiwać. Dowolny tekst w wierszu po znaku `#' jest traktowany jako komentarz i pomijany. Każdy wiersz składa się z siedmiu pól rodzielonych białymi znakami (tabulator lub odstęp) w formacie: service socket_type proto flags user server_path server_args usługa rodzaj_gniazda protokół flagi użytkownik ścieżka_dostępu arguemnty uussłłuuggaa nazwa usługi pobrana przez inetd z /etc/services rrooddzzaajj ggnniiaazzddaa to pole określa rodzaj gniazda jakie zostanie utworzone, dozwolone wartości to : stream, dgram, raw, rdm, or seqpacket. Dokładny opis jest dość skomplikowany ale jako pierwsze przybliżenie można potraktować zasadę, że niemal wszystkie usługi korzystające z tcp używają stream i niemal wszystkie usługi korzystające z udp używają dgram. Inne kombinacje parametrów występują w bardzo rzadkich przypadkach specjalizowanych serwerów usług. pprroottookkóóll nazwa protokołu danej pozycji. Powinien pasować do odpowiedniej pozycji pliku /etc/serwer i zwykle jest to tcp lub udp. Usługi oparte na Sun RPC (Remote Procedure Call) będą korzystały z rpc/tcp lub rpc/udp. ffllaaggii istnieją tylko dwie wartości jakie może przyjmować to pole. Informują one program inetd czy uruchomiony program obsługi zwalnia gniazdo co pozwala na uruchomienie kolejnego przy następnym połączeniu do tej usługi, czy _i_n_e_t_d powinien zaczekać na zakończenie działania programu obsługi, który sam będzie obsługiwał żądania zestawienia połączenia. Ponownie dokładny opis jest dosyć skomplikowany, lecz w przybliżeniu mozna powiedzieć, że wszystkie usługi typu tcp powinny w tym polu mieć wartość nowait i większość usług typu udp powinny przyjmować wartość wait. Pamiętaj, że istnieją znaczące wyjątki od tej reguły. uużżyyttkkoowwnniikk określa, który użytkownik zdefiniowany w pliku /etc/passwd statnie się właścicielem uruchomionego demona sieciowego. Jest to pożyteczne, gdy chcesz zwiększyć bezpieczeństwo swojego systemu. Możesz temu polu nadać wartość nobidy aby w przypadku złamania zabezpieczeń programów obsługi wyrządzone straty były jak najmniejsze. Zwykle to pole przyjmuje wartość root, ponieważ większość programów obsługi do wykonania poprawnie swych zadań wymaga uprawnień administatora. śścciieeżżkkaa__ddoossttęęppuu to pole oznacza pełną scieżkę dostępu do programu obsługi, który należy uruchomić. aarrgguummeennttyy zawiera pozostałą część wiersza poleceń uruchamianego programu obsługi. Jest to parametr opcjonalny. To właśnie tutaj możesz umieścić dowolne parametry, które zostaną przekazane programowi obsługi w momencie jego uruchomienia przez program inetd. 55..88..22..11.. PPrrzzyykkłłaadd pplliikkuu //eettcc//iinneettdd..ccoonnff Podobnie jak w przypadku pliku /etc/services wszystkie nowoczesne dystrybucje zawierają poprawny plik /etc/inetd.conf. Na wszelki wypadek poniżej można znaleźć plik /etc/inetd.conf dostarczany z dystrybucją Debian <http://www.debian.org/> . # /etc/inetd.conf: see inetd(8) for further informations. # # Internet server configuration database # # # Modified for Debian by Peter Tobias <tobias@et-inf.fho-emden.de> # # <service_name> <sock_type> <proto> <flags> <user> <server_path> <args> # # Internal services # #echo stream tcp nowait root internal #echo dgram udp wait root internal discard stream tcp nowait root internal discard dgram udp wait root internal daytime stream tcp nowait root internal daytime dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal time stream tcp nowait root internal time dgram udp wait root internal # # These are standard services. # telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd #fsp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.fspd # # Shell, login, exec and talk are BSD protocols. # shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd talk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.talkd ntalk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.ntalkd # # Mail, news and uucp services. # smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.smtpd #nntp stream tcp nowait news /usr/sbin/tcpd /usr/sbin/in.nntpd #uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico #comsat dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.comsat # # Pop et al # #pop-2 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop3d # # `cfinger' is for the GNU finger server available for Debian. (NOTE: The # current implementation of the `finger' daemon allows it to be run as `root'.) # #cfinger stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.cfingerd #finger stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.fingerd #netstat stream tcp nowait nobody /usr/sbin/tcpd /bin/netstat #systat stream tcp nowait nobody /usr/sbin/tcpd /bin/ps -auwwx # # Tftp service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers." # #tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd #tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /boot #bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120 # # Kerberos authenticated services (these probably need to be corrected) # #klogin stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind -k #eklogin stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind -k -x #kshell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd -k # # Services run ONLY on the Kerberos server (these probably need to be corrected) # #krbupdate stream tcp nowait root /usr/sbin/tcpd /usr/sbin/registerd #kpasswd stream tcp nowait root /usr/sbin/tcpd /usr/sbin/kpasswdd # # RPC based services # #mountd/1 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.mountd #rstatd/1-3 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rstatd #rusersd/2-3 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rusersd #walld/1 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rwalld # # End of inetd.conf. ident stream tcp nowait nobody /usr/sbin/identd identd -i 55..99.. IInnnnee pplliikkii kkoonnffiigguurraaccyyjjnnee zzwwiiąązzaannee zz ssiieecciiąą.. Linux posiada jeszcze kilka plików konfiguracyjnych, które mają wpływ na pracę sieci, z którymi powinno się zapoznać. Być może nigdy nie wystąpi potrzeba ich modyfikacji, lecz warto wiedzieć jakie informacje zawierają i czego dotyczą. 55..99..11.. //eettcc//pprroottooccoollss Plik /etc/protocols zawiera informacje przyporządkowujące nazwom protokołów odpowiednie numery. Jest wykorzystywany przez różne programy pozwalając na podawanie nazw protokołów zamiast numerów oraz inne programy, jak np tcpdump, które mogą wyświetlać nazwy protokołów zamiast ich liczbowej reprezentacji. Składnia pliku jest następująca: protocolname number aliases nazwa_protokołu numer aliasy Plik /etc/protocols dostarczany w dystrybucji Debian <http://www.debian.org/> wygląda następująco: # /etc/protocols: # $Id: NET-3-HOWTO.pl.sgml,v 1.4 2001/12/15 09:56:17 bart Exp $ # # Internet (IP) protocols # # from: @(#)protocols 5.1 (Berkeley) 4/17/89 # # Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992). ip 0 IP # internet protocol, pseudo protocol number icmp 1 ICMP # internet control message protocol igmp 2 IGMP # Internet Group Management ggp 3 GGP # gateway-gateway protocol ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'') st 5 ST # ST datagram mode tcp 6 TCP # transmission control protocol egp 8 EGP # exterior gateway protocol pup 12 PUP # PARC universal packet protocol udp 17 UDP # user datagram protocol hmp 20 HMP # host monitoring protocol xns-idp 22 XNS-IDP # Xerox NS IDP rdp 27 RDP # "reliable datagram" protocol iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4 xtp 36 XTP # Xpress Tranfer Protocol ddp 37 DDP # Datagram Delivery Protocol idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport rspf 73 RSPF # Radio Shortest Path First. vmtp 81 VMTP # Versatile Message Transport ospf 89 OSPFIGP # Open Shortest Path First IGP ipip 94 IPIP # Yet Another IP encapsulation encap 98 ENCAP # Yet Another IP encapsulation 55..99..22.. //eettcc//nneettwwoorrkkss Plik /etc/networks ma funkcję zbliżoną do funkcji pliku /etc/hosts. Jest prostą bazą danych nazw i adresów sieci. Jego format różni się tylko tym, że może zawierać jedynie dwa pola w wierszu w następujacym formacie: # networkname networkaddress # nazwa_sieci adres_sieci Przykładowy plik mógłby wyglądać tak: loopnet 127.0.0.0 localnet 192.168.0.0 amprnet 44.0.0.0 W przypadku używania programu _r_o_u_t_e jeśli punkt docelowy jest siecią, a sieć ta znajduje się w pliku /etc/networks, wtedy polecenie route zamiast adresu IP sieci wyświetli jej nazwę. 55..1100.. BBeezzppiieecczzeeńńssttwwoo ssiieecciioowwee ii sstteerroowwaanniiee ddoossttęęppeemm.. Pozwól, że rozpocznę ten rozdział stwierdzeniem, że zabezbieczanie komputera i sieci przed złośliwymi atakami jest trudną i skomplikowaną sztuką. Nie uważam się za aksperta w tej dziedzinie i choć opisywane przeze mnie mechanizmy pomogą być bardziej bezpiecznym to jeśli bardzo ci zależy na bezpieczeństwie twojego systemu radziłbym ci rozejrzeć się dokładniej w tym temacie. W internecie można znaleźć wiele dobrych referencji na ten temat. Podstawowa zasada brzmi: `NNiiee uurruucchhaammiiaajj sseerrwweerróóww ((pprrooggrraammóóww oobbssłłuuggii)),, kkttóórryycchh nniiee zzaammiieerrzzaasszz uużżyywwaaćć..'. Wiele dystrybucji posiada mnóstwo różnego rodzaju oprogramowania, automatycznie konfigurowanego i uruchamianego. Aby zapewnić sobie minimalny poziom bezpieczeństwa powinno się przyjrzeć się plikowi /etc/inetd.conf i skomentować te usługi, których nie zamierzasz używać. Dobrymi kandydatami są: shell, login, exec, uucp, ftp i serwisy informacyjne, jak: finger, netstat i systat. Istnieje wiele mechanizmów sterowania dostępem do oferowanych usług sieciowych, wymienię podstawowe. 55..1100..11.. //eettcc//ffttppuusseerrss Plik /etc/ftpusers jest prostym mechanizmem pozwalającym na zabronienie wejścia do systemu przez usługę ftp niektórym użytkownikom twojego komputera. /etc/ftpusers jest odczytywany przez program obsługujący usługę ftp (_f_t_p_d) w momencie nawiązania przychodzącego połączenia. Plik zawiera listę tych użytkowników, którzy nie mają pozwolenia wchodzenie do systemu przez usługę ftp. Mógłby wygladać mniej więcej tak: # /etc/ftpusers - użytkownicy, którzy nie mogą dostac się do systemu # przez ftp root uucp bin mail 55..1100..22.. //eettcc//sseeccuurreettttyy Pli /etc/securetty pozwala na określenie listy urządzeń tty, przez które może logować się administrator. Plik /etc/securetty jest wczytywany przez program weryfikujący użytkownika (zwykle _/_b_i_n_/_l_o_g_i_n). Jest to lista nazw urządzeń, które mogą być wykorzystywane przez administratora na wejście do systemu. Wejście do systemu przez administratora przez inne urządzenia jest niemożliwe. # /etc/securetty - terminale tty przez które administrator może # zalogować się do systemu tty1 tty2 tty3 tty4 55..1100..33.. MMeecchhaanniizzmm sstteerroowwaanniiaa ddoossttęęppeemm ppaakkiieettuu ttccppdd .. Program _t_c_p_d jaki prawdopodobnie widziałeś w pliku /etc/inetd.conf dostarcza mechanizmów rejestracji i sterowania dostępem do usług, do ochrony których został skonfigurowany. W momencie uruchamiania przez program _i_n_e_t_d odczytuje swoje dwa pliki konfiguracyjne, zawierające zasady dostępu i albo zezwala, albo odmawia dostępu do usługi, którą ochrania. Przeszukuje zasady znajdujące się plikach konfiguracyjnych, aż do napotkania pierwszej, która pasuje do zaistniałej sytuacji. Jeśli takiej nie znalazł zakłada, że należy pozwolić na dostęp. Pliki które przeszukuje to w kolejności: /etc/hosts.allow i /etc/hosts.deny. Pokrótce opiszę zawartość każdego z nich. Pełny opis możliwości programu _t_c_p_d znajdziesz na stronach podręcznika (man hosts_allow). 55..1100..33..11.. //eettcc//hhoossttss..aallllooww Plik /etc/hosts.allow jest plikiem konfiguracyjnym programu _/_u_s_r_/_s_b_i_n_/_t_c_p_d. Plik hosts.allow zawiera informacje określające, które komputery _m_o_g_ą uzyskać dostęp do chronionej usługi w twoim systemie. Format pliku jest bardzo prosty: # /etc/hosts.allow # # <lista usług>: <lista komputerów> [: polecenie] lista usług jest odzielona przecinkami listą nazw programów obsługi chronionej usługi do której ma zastosowanie dana reguła. Na przykład: ftpd, telnetd i fingerd. lista komputerów jest rozdzieloną przecinkami listą nazw komputerów lub adresów IP. Można również określać wzroce adresów lub naz komputerów stsując znaki specjalne, umożliwiajć tworzenie wzorców reprezentujacych grupy komputerów. Np. gw.v2ktj.ampr.org oznacz konkretny komputer, .uts.edu.au oznacza dowolny komputer, którego pełna nazwa kończy się podanym ciągiem znaków, 44. oznacza dowolny adres IP zawierający te cyfry. W celu uproszczenia konfiguracji wprowadzono kilka specjalnych oznaczeń: ALL określające wszystkie komputery, LOCAL reprezentujący wszystkei komputery, których nazwa nie zawiera znaku `.' tzn. należą do tej samej domeny co twój komputer, PARANOID oznaczający wszystkie komputery, których nazwa nie odpowiada ich adresowi (name spoofing). I ostatni element bardzo użyteczny, to EXCEPT pozwalający na podanie listy z wyjątkami. Omówimy to dokładnie później na przykładzie. polecenie jest opcjonalnym parametrem. Jest to pełna ścieżka dostępu do polecenia (programu), który należy uruchomić za każdym razem, kiedy dana reguła zostanie dopasowana. Może to być polecenie, które będzie próbowało zidentyfikować, kto znajduje się w tej chwili na komputerze próbującym nawiązać połączenia, lub wyśle wiadomość lub inny komunikat adresowany do administratora systemu informując o próbie połączenia. Isnieje kilka wzorców, które zostaną podmienione, najczęściej wykorzystywane to: %h jest zamieniane na nazwę komputera nawiązującego połączenie lub jego adres jeśli nie posiada nazwy, %d na nazwę programu obsługi, który został wywołany. Przykład: # /etc/hosts.allow # # dostęp do poczty dla wszystkich in.smtpd: ALL # połączenie telnet i ftp tylko z komputerów z lokalnej domeny i # mojego komputera domowego telnetd, ftpd: LOCAL, myhost.athome.org.au # Pozwól na finger z dowolnego komputera, lecz rejestruj kto się z # nami łączył fingerd: ALL: (finger @%h | mail -s "finger from %h" root) 55..1100..33..22.. //eettcc//hhoossttss..ddeennyy Plik /etc/hosts.deny jest plikiem konfiguracyjnym programu _/_u_s_r_/_s_b_i_n_/_t_c_p_d. hosts.deny zawiera listę komputerów, które nie mogą uzyskać dostępu do chronionej usługi w twoim systemie. Prosty przyklad wyglądał by mniej więcej tak: # /etc/hosts.deny # # Zabroń dostępu wszystkim komputerom o podejrzanych nazwach ALL: PARANOID # # Zabroń dostępu wszystkim do wszystkiego ALL: ALL PARANOID jest w tym przypadku niepotrzebne, ponieważ następna pozycja przechwytuje wszystkie przypadki. Jedna z tych pozycji jest dobrym punktem wyjściowym do budowy pliku konfiguracyjnego, zależnym od twoich oczekiwań i wymagań. Posiadanie opcji ALL: ALL w /etc/hosts.deny i zezwalanie na dostęp do konkretnych usług konkretnym komputerom (grupom komputerów) w pliku /etc/hosts.allow jest najbezpieczniejszym podejściem. 55..1100..44.. //eettcc//hhoossttss..eeqquuiivv Plik hosts.equiv jest wykorzystywany nadawania innym komputerom i zdalnym użytkownikom niektórych uprawnień dostępu do naszych zasobów, bez konieczności podawania przez nich hasła. Jest to użyteczne w bezpiecznym środowisku sieciowym, gdzie posiadamy kontrolę nad wszystkimi komputerami lecz w innym przypadku jest to bardzo ryzykowne ze względu na bezpieczeństwo naszego komputera. W takim przypadku twój komputer jest tak bezpieczny, jak najmniej bezpieczny z zaufanych komputerów. Aby zwiększyć bezpieczeństwo swojego systemu nie używaj tego mechanizmu i zachęcaj swoich użytkowników do nie korzystania z pliku .rhosta. 55..1100..55.. PPrraawwiiddłłoowwaa kkoonnffiigguurraaccjjaa ddeemmoonnaa ffttpp .. Wiele miejsc będzie zainteresowynych działającym serwerem anonimowego _f_t_p, aby umożliwić innym pobieranie i wstawianie plików, bez konieczności podawania konkretnego identyfikatora użytkownika. Jeśli zdecydujesz się udostępnić tę usługę, pamiętaj aby prawidlowo skonfigurować demon _f_t_p_d. Wiekszość stron podręcznika dotyczących _f_t_p_d_(_8_) opisuje jak to powino być zrobione. Powinieneś się upewnić, że zawsze stosujesz się do tych instrukcji. Bardzo ważne jest, abyś nie używał w tym celu kopii swego pliku /etc/passwd w katalogu etc serwera ftpd. Musisz pamiętać aby usunąć wszelkie niepotrzebne informacje dotyczące kont, za wyjątkiem tych niezbędnych, w przeciwnym wypadku będziesz narażony na ataki wynikłe ze złamania haseł prezentowanych w pliku passwd. 55..1100..66.. FFiirreewwaallllee.. Bardzo dobrym środkiem na zapewnienie bezpieczeństwa swojemu systemowi jest zabronienie dostępu do twojego komputera wszystkim niepożądanym pakietom. Jest to dokladnie opisane w Firewall-HOWTO <Firewall- HOWTO.pl.html>. 55..1100..77.. IInnnnee ssuuggeessttiiee.. Oto inne, potencjalnie religijne sugestie, które powinieneś rozważyć. sseennddmmaaiill niezależnie od swojej popularności demon z przerażającą regularnością pojawiają się ostrzeżenia o błędach w programie _s_e_n_d_m_a_i_l. Wszystko zależy od ciebie, lecz ja bym go nie uruchamiał. NNFFSS ii iinnnnee uussłłuuggii SSuunn RRPPCC powinieneś się ich bać. Istnieje wiele sposobów wykorzystania błędów w tych usługach. Bardzo trudno jest zastąpić NFS czymś innym, dokładnie upewnij się komu pozwalasz na montowanie swoich dysków. 66.. IInnffoorrmmaaccjjee ssppeeccyyffiicczznnee tteecchhnnoollooggiiii ssiieecciioowweejj Kolejne podrozdziały są specyficzne dla konkretnych technologi sieciowych. Informacje tam zawarte nie muszą mieć zastosowania do innego rodzaju technologii sieciowych. 66..11.. AARRCCNNeett Urządzenia ARCNET posiadają nazwy `arc0s', `arc1e', `arc2e' itd. Pierwsza karta wykryta przez jądro otrzymuje nazwę `eth0', a dalsze otrzymują nazwy z kolejnymi numerami. Litera na końcu nazwy oznacza że wybrałeś 'ethernet encapsulation' lub standard pakietu zgodny z RFC1051. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Network device support ---> [*] Network device support <*> ARCnet support [ ] Enable arc0e (ARCnet "Ether-Encap" packet format) [ ] Enable arc0s (ARCnet RFC1051 packet format) Jeśli posiadasz już prawidłowo skompilowane jądro potrafiące obsługiwać kartę, jej konfiguracja jest bardzo prosta. Zwykle będziesz musiał wydać następujące polecenia: # ifconfig arc0e 192.168.0.1 netmask 255.255.255.0 up # route add 192.168.0.0 netmask 255.255.255.0 arc0e Proszę zapoznaj się z zawartością pliku /usr/src/linux/Documentation/networking/arcnet-hardware.txt. Obsługa sieci ARCNet została wykonana przez Averyego Pennaruna, apenwarr@foxnet.net. 66..22.. AApppplleettaallkk (( AAFF__AAPPPPLLEETTAALLKK )) Obsługa sieci Appletalk nie wprowadza żądnych dodatkowych nazw urządzeń sieciowych. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> <*> Appletalk DDP Obsługa Appletalk pozwala twojemu Linuksowi komunikować się z sieciami Apple. Bardzo ważnym wykorzystywaniem tej możliwości jest współdzielenie między twoim Linuksem i komputerami Apple zasobów takich jak drukarki, czy dyski. Wymagane jest do tego dodatkowe oprogramowanie o nazwie _n_e_t_a_t_a_l_k. Pakiet _n_e_t_a_t_a_l_k udostępniający oprogramowanie implementujące protokół Appletalk oraz kilka pożytecznych programów narzędziowych stworzył wraz z grupą `Research Systems UnixGroup' na uniwersytecie Michigan reprezentujący ten zespół Wesley Craig netatalk@umich.edu . Pakiet _n_e_t_a_t_a_l_k powinieneś otrzymać w swojej dystrybucji Linuksa, lub możesz go pobrać przez ftp ze źródła :University of Michigan <ftp://terminator.rs.itd.umich.edu/unix/netatalk/> Aby zbudować i zainstalować pakiet, musisz wydać następujące polecenia: # cd /usr/src # tar xvfz .../netatalk-1.4b2.tar.Z - W tym momencie możesz zmienić plik `Makefile', np. w celu zmiany katalogu docelowego DESTDIR. Domyślnie zostanie zainstalowany w /usr/local/atalk co jest dosyć bezpiecznym wyborem. # make - jako administrator: # make install 66..22..11.. KKoonnffiigguurraaccjjaa oopprrooggrraammoowwaanniiaa AApppplleettaallkk.. Pierwszą rzeczą jaką musisz zrobić aby zaczęło działać to dodanie nowych pozycji do pliku /etc/services. A mianowicie: rtmp 1/ddp # Routing Table Maintenance Protocol nbp 2/ddp # Name Binding Protocol echo 4/ddp # AppleTalk Echo Protocol zip 6/ddp # Zone Information Protocol Kolejnym krokiem będzie utworzenie plików konfiguracyjnych pakietu w katalogu usr/local/atalk/etc (lub tam gdzie go zainstalowałeś). Pierwszym plikiem, który należy utworzyć jest /usr/local/atalk/etc/atalkd.conf. Początkowo potrzebuje od jedynie dodania wiersza określającego nazwę urządzenia sieciowego, które obsługuje sieć, na której znajdują się komputery Apple. eth0 Demon Appletalk po jego uruchomieniu dołoży kilka szczegółow. 66..22..22.. EEkkssppoorrttoowwaanniiee pplliikkóóww LLiinnuukkssaa pprrzzeezz AApppplleettaallkk.. Możesz eksportować swoje pliki, tak aby inne komputery sieci Appletalk miały do nich dostęp. W tym celu należy odpowiednio zmienić plik konfiguracyjny /usr/local/atalk/etc/AppleVolumes.system. Istnieje również inny plik konfiguracyjny o nazwie /usr/local/atalk/etc/AppleVolumes.default w takim samym formacie opisujący który system plików zostanie udostępniony podłączającym się do nas użytkownikom posiadającym przywileje gościa (guest). Szczegółowe informacje na temat konfiguracji tych plików, oraz opis znaczenia wszystkich opcji można znaleźć na stronie podręcznika poświęconej _a_f_p_d (man afpd). Krótki plik przykładowy, mógłby wyglądać następująco: /tmp Scratch /home/ftp/pub "Obszar ogólnie dostępny" W tym przykładzie eksportujemy katalog /tmp jako system plików AppleShare o nazwie `Scratch' oraz katalog anonimowego ftp jako AppleShare Volume o nazwie "Obszar ogólnie dostępny". Nazwy wolumenów nie są obowiązkowe, demon wybierzą jakąś za ciebie, lecz przecież nic cię nie kosztuje podanie nazwy. 66..22..33.. UUddoossttęęppnniiaanniiee ttwwoojjeejj ddrruukkaarrkkii ppoodd LLiinnuukksseemm ww ssiieeccii AApppplleettaallkk.. Współdzielenie drukarki Linuksa z innymi komputerami sieci Appletalk jest całkiem proste. Musisz uruchomić program _p_a_p_d, Printer Access Protocol Daemon. Po uruchomieniu będzie akceptował żądania wydrukowania dokumentu, gromadził go a następnie drukował korzystajšc z programów obsługi drukarki pod Linuksem. Konfiguracja tego programu polega na edycji pliku /usr/local/atalk/etc/papd.conf. Składnia jest taka sama, jak pliku /etc/printcap. Nazwa jaką nadasz drukarce zostanie zarejestrowana za pomocą NBP, protokołu nazw sieci Appletalk. Prosta konfiguracja mogłaby wyglądać następująco: TricWriter:\ :pr=lp:op=cg: Utworzona została drukarka o nazwie `TricWriter' udostępniona sieci Appletalk. Zadania wysłane na tę drukarkę, będą drukowane na drukarce `lp' (zdefiniowanej w pliku /etc/printcap) przy pomocy programu _l_p_d. Pozycja `op=cg' mówi, że operatorem tej drukarki jest użytkownik Linuksa o nazwie `_c_g'. 66..22..44.. UUrruucchhaammiiaanniiee oopprrooggrraammoowwaanniiaa AApppplleettaallkk.. Ok, w tej chwili powinieneś być już gotowy do sprawdzenia podstawowej konfiguracji. Pakiet _n_e_t_a_t_a_l_k dostarcza pliku _r_c_._a_t_a_l_k, który powinień nadawać się dla ciebie. Powinieneś jedynie go uruchomić: # /usr/local/atalk/etc/rc.atalk Wszystko powinno się uruchomić i działać poprawnie. Nie powinieneś zobaczyć, żadnych komunikatów o błędach, lecz jedynie komunikaty wysłane na konsole informujące o zakończeniu kolejnych etapów uruchamiania oprogogramowania. 66..22..55.. TTeesstt oopprrooggrraammoowwaanniiaa AApppplleettaallkk.. Aby sprawdzić, czy oprogramowanie pracuje poprawnie, połącz sieć z jednym z twoich komputerów Apple, rozwiń menu główne, wybierz Chooser, kliknij na AppleShare i powinieneś zobaczyć tam swojego Linuksa. 66..22..66.. UUwwaaggii nnaa tteemmaatt kkoorrzzyyssttaanniiaa zz oopprrooggrraammoowwaanniiaa AApppplleettaallkk.. ˇ Być może bedziesz musiał uruchamiać obsługę sieci Appletalk przed skonfigurowaniem sieci IP. Jeśli napotkasz na kłopot uruchamiając oprogramowania Appletalk, lub po jego uruchomieniu masz kłopoty ze swoją siecią IP, wtedy spróbuj uruchomić oprogramowanie Appletalk przed uruchomieniem skryptu rc.inet1. ˇ _a_f_p_d (Apple Filing Protocol Daemon) robi pożądny bałagan na twardym dysku. Poniżej punktów montowań tworzy szereg podkatalogów: .AppleDesktop i Network Trash Folder. Następnie dla każdego katalogu, do którego sięgniesz utworzy w nim .AppleDouble aby mieć gdzie przechowywać /, później spędzisz wiele miłych chwil sprzątając po nim. ˇ program _a_f_p_d oczekuje przesyłania z Maców haseł czystym tekstem. To bardzo osłabia bezpieczeństwo twojego systemu. Musisz być bardzo ostrożny uruchamiając ten program na komputerze podłączonym do internetu. Jeśli ktoś zrobi coś złego będziesz winił samego siebie. ˇ Istniejące oprogramowanie diagnostyczne np. _n_e_t_s_t_a_t i _i_f_c_o_n_f_i_g nie obsługuje Appletalk. Surowa informacja na ten temat *jeśli jej potrzebujesz) jest dostępna przez katalog /proc/net. 66..22..77.. WWiięęcceejj iinnffoorrmmaaccjjii Więcej szczegółowej informacji w jaki sposób skonfigurować Appletalk dla Linuksa znajdziesz w _L_i_n_u_x _N_e_t_a_t_a_k_-_H_O_W_T_O : thehamptons.com <http://thehamptons.com/anders/netatalk>. 66..33.. AATTMM Projekt obsługi Asynchronous Transfer Mode pod Linuksem jest prowadzony przez Wernera Almesbergera <werner.almesberger@lrc.di.epfl.ch>. Aktualne informacje na ten temat można znaleźć tutaj: lrcwww.epfl.ch <http://lrcwww.epfl.ch/linux- atm/>. 66..44.. AAXX2255 (( AAFF__AAXX2255 )) Urządzenia AX.25 w jądrze wersji 2.0.* to `sl0', `sl1', itd. w 2.1.* są to `ax0', `ax1', itd. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> [*] Amateur Radio AX.25 Level 2 Protokoły AX25, Netrom i Rose są opisane w AX25-HOWTO <AX25-HOWTO.html>. Stosowane są przez krótkofalowców w eksperymentach z przesyłaniem pakietów drogą radiową. Większość pracy związanej z udostępnieniem tej funkcji pod Linuksem wykonał Jonathon Naylor, jsn@cs.not.ac.uk. 66..55.. DDEECCNNeett W chwili obecnej prowadzone są prace nad obsługą sieci DECNet. Powinna się pojawić w późnych wersjach jądra serii 2.1.x. 66..66.. EEQQLL -- mmuullttiippllee lliinnee ttrraaffffiicc eeqquuaalliisseerr Urządzenie EQL nosi nazwę `eql'. W standtardowej wersji jądra możesz mieć w komputerze tylko jedno urządzenie EQL. EQL umożliwia wykorzystanie kilku połączeń point-to-point (np. PPP, SLIP, plip) jako pojedynczego łącza logicznego przenoszącego ruch tcp/ip. Często taniej jest skorzystać z kilku linii o niższej prędkości niż z jednej linii o wysokiej prędkości. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Network device support ---> [*] Network device support <*> EQL (serial line load balancing) support Obsługa tego mechanizmu wymaga, aby drugi koniec połączenia również obsługiwał EQL. Linux, Livingstone Portmasters i nowsze serwery dostępowe udostępniają tę usługę. Aby skonfigurować EQL będziesz potrzebować odpowiednich narzędzi, dostępnych z: sunsite.unc.edu <ftp://sunsite.unc.edu/pub/linux/system/Serial/eql-1.2.tar.gz>. Sama konfiguracja jest całkiem prosta. Rozpoczyna się od skonfigurowania interfejsu eql. Jest to taki samo urządzenie, jak każde inne urządzenie sieciowe. Konfiguracja adresu IP i wielkości mtu odbywa się tak samo za pomocą programu _i_f_c_o_n_f_i_g: ifconfig eql 192.168.10.1 mtu 1006 route add default eql Następnie musisz ręcznie zainicjować każdą w linii, którą będziesz używał. Sposób inicjacji połączenia będzie zależał od rodzaju tej linii, więcej informacji na ten temat znajdziesz w odpowiednim podrozdziale. Na koniec potrzebujesz skojarzyć połączenie przez port szeregowy z urządzenie EQL, nazywa się to `enslaving' i dokonuje się za pomocą polecenia _e_q_l___e_n_s_l_a_v_e: eql_enslave eql sl0 28800 eql_enslave eql ppp0 14400 Parametr `_s_z_a_c_o_w_a_n_a _p_r_ę_d_k_o_ś_ć' (estimated speed), który podajesz w poleceniu _e_q_l___s_l_a_v_e nie ma bezpośredniego wpływu na działanie systemu. Jest wykorzystywany przez sterownik EQL do określenia stopnia podziału datagramów które powinny być otrzymywane przez urządzenie, możesz w ten sposób dokładnie dopasować równomierne obciążenie wszystlich linii. W celu odłączenia linii od urządzenia EQL stosuje się polecnie _e_q_l___a_m_a_n_c_i_p_a_t_e: eql_emancipate eql sl0 Budowa tablicy trasowania odbywa się w taki sam sposób, jak w przypadku zwykłego połączenia point-to-point, za wyjątkiem tego, że wszystkie trasy zamiast do urządzeń ppp*, sl* powinny się odnosić do urządzenia eql. Zwykle polecenia wyglądają mniej więcej tak: route add default eql0 Sterownik EQL został opracowany przez Simona Janesa, simon@ncm.com. 66..77.. EEtthheerrnneett Urządzenia kart ethernetowych noszą nazwy `eth0', `eth1', `eth2' itd. Pierwsza karta wykryta przez jądro otrzymuje nazwę `eth0', a reszta kolejne nazwy w miarę rozpoznawania kart przez system. Jeśli chcesz się nauczyć, jak pracują karty ethernetowe pod Linuksem, przeczytaj Ethernet-HOWTO <Ethernet-HOWTO.html>. Kiedy jądro poprawnie rozpoznaje posiadane przez ciebie karty ethernetowe, ich dalsza konfiguracja jest prosta. Zwykle wystarczą takie polecenia: # ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up # route add 192.168.0.0 netmask 255.255.255.0 eth0 Większość sterowników kart ethernetowych została opracowana przez Donalda Beckera becker@CESDIS.gsfc.nasa.gov. 66..88.. FFDDDDII Urządzenia standardu FDDI noszą nazwy `fddi0', `fddi1', `fddi2' itd. Pierwsze urządzenie rozpoznane przez jądro otrzymuje nazwę `fddi0', a pozostałe kolejne nazwy w miarę ich rozpoznawania przez system. Sterownik kart Digital Equipment Corporation FDDI EISA o PCI został opracowany przez Lawrencea V. Stefaniego, stefani@lkg.dec.com. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Network device support ---> [*] FDDI driver support [*] Digital DEFEA and DEFPA adapter support Kiedy jądro poprawnie rozpoznaje posiadane przez ciebie karty, konfiguracja interfejsu FDDI jest niemal identyczna, jak inicjalizacja kart ethernetowych. Po prostu jako argument programów _i_f_c_o_n_f_i_g i _r_o_u_t_e podajesz jedynie nazwę odpowiedniego urządzenia FDDI. 66..99.. FFrraammee RReellaayy Istnieją dwa rodzaje urządzeń standardu Frame Relay w jądrze Linuksa, DLCI o nazwach `dlci00', `dlci01' itd. oraz FRAD o nazwach `sdla0', `sdla1' itd. Frame Relay jest nową technologią sieciową, przeznaczoną przede wszystkim dla ruchu ruchu o nieciągłej, przerywanej naturze. Do sieci Frame Relay podłącza się za pomocą urządzenia Frame Relay Access Device (FRAD). Frame Realy pod Linuksem obsługuje przesyłanie pakietów IP zgodnie z opisem przedstawionym w RFC-1490. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Network device support ---> <*> Frame relay DLCI support (EXPERIMENTAL) (24) Max open DLCI (8) Max DLCI per device <*> SDLA (Sangoma S502/S508) support Obsługa protokołu Frame Relay, oraz niezbędne do tego narzędzia zostały napisane przez Mikea McLagana, mike.mclagan@linux.org. W chwili obecnej, jedynym obsługiwanym urządzeniem FRAD jest Sangoma Technologies <http://www.sangoma.com/> S502A, S502E and S508. Po prawidłowym skompilowaniu jądra, do skonfigurowania urządzeń FRAD i DLCI są niezbędne narzędzia konfiguracyjne: ftp.invlogic.com <ftp://ftp.invlogic.com/pub/linux/fr/frad-0.15.tgz>. Komplilacja i instalacja narzędzi jest prosta, niestety brak głównego pliku Makefile, powoduje, że trzeba to zrobić ręcznie. # cd /usr/src # tar xvfz .../frad-0.15.tgz # cd frad-0.15 # for i in common dlci frad; do cd $i; make clean; make; cd ..; done # mkdir /etc/frad # install -m 644 -o root -g root bin/*.sfm /etc/frad # install -m 700 -o root -g root frad/fradcfg /sbin # install -m 700 -o root -g root dlci/dlcicfg /sbin Po zainstalowaniu narzędzi, trzeba utworzyć plik /etc/frad/router.conf. Możesz skorzystać z poniższego wzoru, który jest zmodyfikowanym plikiem przykładowym: # /etc/frad/router.conf # Jest to wzorzec pliku konfiguracyjnego urządzeń Frame Relay # Zawiera wszystkie możliwe opcje. Wartości domyślne są ustawione # na podstawie kodu sterowników karty Sangoma S502A dla MSDOSu. # # Znak '#' w dowolnym miejscu wiersza rozpoczyna komentarz # Puste miejsca są ignorowane (możesz tabulatorem ładnie sformatować # cały plik # Nieznane pozycje [] i słowa kluczowe są ignorowane # [Devices] Count=1 # Liczba urządzeń do skonfigurowania Dev_1=sdla0 # nazwa urządzenia #Dev_2=sdla1 # nazwa urządzenia # Podane tutaj parametry mają zastosowanie do wszystkich urządzeń, # lecz dla każdego urządzenia indywidualnie może być podana inna wartość # Access=CPE Clock=Internal KBaud=64 Flags=TX # # MTU=1500 # Maksymalna długość ramki IFrame, domyślnie 4096 # T391=10 # T391 value 5 - 30, domyślnie 10 # T392=15 # T392 value 5 - 30, domyślnie 15 # N391=6 # N391 value 1 - 255, domyślnie 6 # N392=3 # N392 value 1 - 10, domyślnie 3 # N393=4 # N393 value 1 - 10, domyślnie 4 # Podane tutaj parametry mają zastosowanie do wszystkich urządzeń # CIRfwd=16 # CIR forward 1 - 64 # Bc_fwd=16 # Bc forward 1 - 512 # Be_fwd=0 # Be forward 0 - 511 # CIRbak=16 # CIR backward 1 - 64 # Bc_bak=16 # Bc backward 1 - 512 # Be_bak=0 # Be backward 0 - 511 # # # Konfiguracja poszczególnych urządzeń # # # # Pierwsze urządzenie - Sangoma S502E # [sdla0] Type=Sangoma # Rodzaj urządzenia do skonfigurowania, # rozpoznawana jest tylko SANGOMA # # Poniższe parametry są specyficzne dla typu Sangoma # # Rodzaj karty śangoma - S502A, S502E, S508 Board=S502E # # Nazwa firmowego oprogramowania testowego dla karty Sangoma # Testware=/usr/src/frad-0.10/bin/sdla_tst.502 # # Nazwa firmowego oprogramowania FR # Firmware=/usr/src/frad-0.10/bin/frm_rel.502 # Port=360 # Port uzywany przez tę kartę Mem=C8 # Adres okna pamięci, A0-EE, zależny od karty IRQ=5 # Numer przerwania IRQ , nie potrebny w przypadku S502A DLCIs=1 # Liczba urządzeń DLCI przyłączonych do tego urządzenia DLCI_1=16 # numer pierwszego urządzenia DLCI, 16 - 991 # DLCI_2=17 # DLCI_3=18 # DLCI_4=19 # DLCI_5=20 # # Podane poniżej opcje mają zastosowanie tylko do tego urządzenia # i zastępują wartościdomyślne podane wcześniej # # Access=CPE # CPE lub NODE, domyślnie CPE # Flags=TXIgnore,RXIgnore,BufferFrames,DropAborted,Stats,MCI,AutoDLCI # Clock=Internal # External lub Internal, domyślnie Internal # Baud=128 # Określona prędkość (bodów) przyłączonych CSU/DSU # MTU=2048 # Maksymalna długość ramki IFrame, domyślnie 4096 # T391=10 # T391 value 5 - 30, domyślnie 10 # T392=15 # T392 value 5 - 30, domyślnie 15 # N391=6 # N391 value 1 - 255, domyślnie 6 # N392=3 # N392 value 1 - 10, domyślnie 3 # N393=4 # N393 value 1 - 10, domyślnie 4 # # Drugim urządzeniem jest zupełnie inna karta # # [sdla1] # Type=ŚmiesznaKarta # Rodzaj konfigurowanego urządzenia # Board= # Rodzaj karty Sangoma # Key=Value # Parametry specyficzne dla tego urządzenia # # Domyślne parametry konfiguracyjne urządzeń DLCI # Mogą zostać zastępione w konkretnych sekcjach konfiguracyjnych DCI # CIRfwd=64 # CIR forward 1 - 64 # Bc_fwd=16 # Bc forward 1 - 512 # Be_fwd=0 # Be forward 0 - 511 # CIRbak=16 # CIR backward 1 - 64 # Bc_bak=16 # Bc backward 1 - 512 # Be_bak=0 # Be backward 0 - 511 # # Konfiguracja DLCI # Wszystkie parametry są opcjonalne. Nazewnictwo: # [DLCI_D<devicenum>_<DLCI_Num>] # [DLCI_D1_16] # IP= # Net= # Mask= # Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames # DLCIFlags=TXIgnore,RXIgnore,BufferFrames # CIRfwd=64 # Bc_fwd=512 # Be_fwd=0 # CIRbak=64 # Bc_bak=512 # Be_bak=0 [DLCI_D2_16] # IP= # Net= # Mask= # Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames # DLCIFlags=TXIgnore,RXIgnore,BufferFrames # CIRfwd=16 # Bc_fwd=16 # Be_fwd=0 # CIRbak=16 # Bc_bak=16 # Be_bak=0 Po stworzeniu pliku /etc/frad/router.conf pozostało jedynie skonfigurować rzeczywiste urządzenia. Jest to tylko troszkę sprytniejsze niż konfigurowanie zwykłych urządzeń sieciowych. Musisz pamiętać aby przed uruchomieniem urządzeń DLCI uruchomić wpierw urządzenie FRAD. # Konfiguracja karty FRAD i parametrów DLCI /sbin/fradcfg /etc/frad/router.conf || exit 1 /sbin/dlcicfg file /etc/frad/router.conf # # Podnoszenie urządzenia FRAD ifconfig sdla0 up # # Konfiguracja interfejsów DLCI i trasowania ifconfig dlci00 192.168.10.1 pointopoint 192.168.10.2 up route add 192.168.10.0 netmask 255.255.255.0 dlci00 # ifconfig dlci01 192.168.11.1 pointopoint 192.168.11.2 up route add 192.168.11.0 netmask 255.255.255.0 dlci00 # route add default dev dlci00 # 66..1100.. ZZlliicczzaanniiee rruucchhuu ((IIPP AAccccoouunnttiinngg)) Cechy jądra Linuksa dotyczące zliczania ruchu umożliwiają gromadzenie i analizę informacji na temat wykorzystania sieci. Gromadzone dane zawierają liczbę pakietów, liczbę odpowiadających im bajtów przesłanych od ostatniego zerowania liczników. Możesz zliczać ruch na wiele różnych sposobów, odpowiednio grupując ruch tak aby gromadzone informacje zawierały odpowiednie, interesujące cię statystyki. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> [*] IP: accounting Po skompilowaniu i zainstalowaniu nowego jądra, musisz skorzystać z narzędzia o nazwie _i_p_f_w_a_d_m, służącego do wprowadzania i zmiany reguł zliczania ruchu. Istnieje wiele reguł zliczania ruchu, które mógłbyś zastosować. Wybrałem kilka prostych, które mogą być użyteczne, zapoznaj się ze stroną podręcznika dotyczącą programu _i_p_f_w_a_d_m. Scenariusz: Posiadasz sieć ethernetową przyłączoną do Internetu za pomocą połączenia PPP. Na segmencie ethernetowym znajduje się komputer oferujący szereg usług. Jesteś zainteresowany jaki ruch jest generowany przez telnet, rlogin, ftp i www. Możesz skorzystać z poniższego zestawu poleceń: # # Usuń istniejące reguły zliczania ruchu ipfwadm -A -f # # dodaj reguły dotyczące lokalnego segmentu ethernetowego ipfwadm -A in -a -P tcp -D 44.136.8.96/29 20 ipfwadm -A out -a -P tcp -S 44.136.8.96/29 20 ipfwadm -A in -a -P tcp -D 44.136.8.96/29 23 ipfwadm -A out -a -P tcp -S 44.136.8.96/29 23 ipfwadm -A in -a -P tcp -D 44.136.8.96/29 80 ipfwadm -A out -a -P tcp -S 44.136.8.96/29 80 ipfwadm -A in -a -P tcp -D 44.136.8.96/29 513 ipfwadm -A out -a -P tcp -S 44.136.8.96/29 513 ipfwadm -A in -a -P tcp -D 44.136.8.96/29 ipfwadm -A out -a -P tcp -D 44.136.8.96/29 ipfwadm -A in -a -P udp -D 44.136.8.96/29 ipfwadm -A out -a -P udp -D 44.136.8.96/29 ipfwadm -A in -a -P icmp -D 44.136.8.96/29 ipfwadm -A out -a -P icmp -D 44.136.8.96/29 # # Reguły domyślne ipfwadm -A in -a -P tcp -D 0/0 20 ipfwadm -A out -a -P tcp -S 0/0 20 ipfwadm -A in -a -P tcp -D 0/0 23 ipfwadm -A out -a -P tcp -S 0/0 23 ipfwadm -A in -a -P tcp -D 0/0 80 ipfwadm -A out -a -P tcp -S 0/0 80 ipfwadm -A in -a -P tcp -D 0/0 513 ipfwadm -A out -a -P tcp -S 0/0 513 ipfwadm -A in -a -P tcp -D 0/0 ipfwadm -A out -a -P tcp -D 0/0 ipfwadm -A in -a -P udp -D 0/0 ipfwadm -A out -a -P udp -D 0/0 ipfwadm -A in -a -P icmp -D 0/0 ipfwadm -A out -a -P icmp -D 0/0 # # Wyświetl listę obowiązujących reguł ipfwadm -A -l -n # Ostatnie polecenie wyświetla listę reguł zliczania ruchu wraz ze zgromadzonymi informacjami. Analizując wielkość ruchu IP należy pamiętać, że bbęęddzziiee zzwwiięękksszzaannyy lliicczznniikk kkaażżddeejj rreegguułłyy,, kkttóórraa ppaassuujjee ddoo aannaalliizzoowwaanneeggoo ppaakkiieettuu, aby uzyskać wyniki różnicowe, trzeba wykonać proste działania matematyczne. Gdybym chciał znać liczbę przesłanych bajtów poza usługami telnet, rlogin, ftp i www musiałbym od wielkości ruchu dla wszystkich portów odjąć zmierzone wielkości dla poszczególnych reguł. # ipfwadm -A -l -n IP accounting rules pkts bytes dir prot source destination ports 0 0 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 20 0 0 out tcp 44.136.8.96/29 0.0.0.0/0 20 -> * 0 0 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 23 0 0 out tcp 44.136.8.96/29 0.0.0.0/0 23 -> * 10 1166 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 80 10 572 out tcp 44.136.8.96/29 0.0.0.0/0 80 -> * 242 9777 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 513 220 18198 out tcp 44.136.8.96/29 0.0.0.0/0 513 -> * 252 10943 in tcp 0.0.0.0/0 44.136.8.96/29 * -> * 231 18831 out tcp 0.0.0.0/0 44.136.8.96/29 * -> * 0 0 in udp 0.0.0.0/0 44.136.8.96/29 * -> * 0 0 out udp 0.0.0.0/0 44.136.8.96/29 * -> * 0 0 in icmp 0.0.0.0/0 44.136.8.96/29 * 0 0 out icmp 0.0.0.0/0 44.136.8.96/29 * 0 0 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 20 0 0 out tcp 0.0.0.0/0 0.0.0.0/0 20 -> * 0 0 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 23 0 0 out tcp 0.0.0.0/0 0.0.0.0/0 23 -> * 10 1166 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 80 10 572 out tcp 0.0.0.0/0 0.0.0.0/0 80 -> * 243 9817 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 513 221 18259 out tcp 0.0.0.0/0 0.0.0.0/0 513 -> * 253 10983 in tcp 0.0.0.0/0 0.0.0.0/0 * -> * 231 18831 out tcp 0.0.0.0/0 0.0.0.0/0 * -> * 0 0 in udp 0.0.0.0/0 0.0.0.0/0 * -> * 0 0 out udp 0.0.0.0/0 0.0.0.0/0 * -> * 0 0 in icmp 0.0.0.0/0 0.0.0.0/0 * 0 0 out icmp 0.0.0.0/0 0.0.0.0/0 * # 66..1111.. IIPP AAlliiaassiinngg Istnieją programy sieciowe, które wymagają aby jedno urządzenie sieciowe posiadało wiele numerów IP. Dostawcy internetu często korzystają z tej cechy do tworzenia wirtualnych serwerów WWW i ftp oferując klientowi utworzenie serwera o innym adresie niż ich własny. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> .... [*] Network aliasing .... <*> IP: aliasing support Po skompilowaniu i zainstalowaniu jądra z obsługą IP_Alias, konfiguracja jest bardzo prosta. Aliasy są dodawane do wirtualnych urządzeń sieciowych stowarzyszonych z istniejącymu urządzeniami sieciowymi. Stosuje się prostą konwencję nazywania tych urządzeń, a mianowicie <devname>:<numer urządzenia wirtualnego>, np. eth0:0, ppp0:10 etc. Załóżmy, że posiadasz sieć ethernetową, która obsługuje jednocześnie dwie różne podsieci IP. Chciałbyś aby twój komputer miał bezpośredni dostęp do obu tych podsieci: # # ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 up # route add -net 192.168.1.0 netmask 255.255.255.0 eth0:0 # # ifconfig eth0:1 192.168.10.1 netmask 255.255.255.0 up # route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0 # Aby usunąć alias należy do jego nazwy dołączyć znak `-' podczas następnego odwołania się do niego, np. tak: # ifconfig eth0:0- 0 Wraz z usunięciem tego aliasu z tabeli trasowań zostaną usunięte wrzystkie trasy korzystające z tego aliasu. 66..1122.. FFiillttrroowwnniiee ppaakkiieettóóww ((IIPP FFiirreewwaalllliinngg)) Filtrowanie pakiet i zasady przy tym obowiązujące są dokładniej omówione w Firewall-HOWTO <Firewall-HOWTO.html>. IP Firewalling pozwala na zabezpieczenia twojego komputera przed nieuprawnionym dostępem przez sieć, wykorzystując w tym celu filtrowanie pakietów. Istnieją trzy różne klasy reguł: filtrowanie pakietów przychodzących, filtrowanie pakietów wychodzących i filtrowanie pakietów przekazywanych dalej (forwarding). Reguły filtrowania pakietów przychodzących dotyczą pakietów otrzymanych przez urządzenie sieciowe. Reguły filtrowania pakietów wychodzących, dotyczą pakietów tuż przed wysłaniem przez urządzenie sieciowe. Reguły fitrowania pakietów przesyłanych dotyczą pakietów, które zostały przez nasz komputer odebrane, lecz nie jest on ich ostatecznym adresatem, tzn. pakiety, które będą poddane trasowaniu. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> [*] Network firewalls .... [*] IP: forwarding/gatewaying .... [*] IP: firewalling [ ] IP: firewall packet logging Wprowadzanie reguł filtrowania pakietów IP wykonuje się za pomocą programu _i_p_f_w_a_d_m. Jak wspominałem wcześniej nie jestem ekspertem od zabezpieczeń sieci komputerowych, więc choć prezentuję przykład, z którego możesz skorzystać, powinieneś samodzielnie zapoznać się z tym tematem i opracować własne reguły filtrowania pakietów, oczywiście tylko wtedy, gdy jest dla ciebie ważne bezpieczeństwo twojego systemu. Prawdopodobnie najczęstszym wykorzystaniem filtrowania pakietów jest sytuacja, gdy twój Linux pracuje jako router i filtr pakietów chroniący lokalną sieć przed nieuprawnionym dostępem z sieci zewnętrznej. Przedstawiona poniżej konfiguracja jest oparta na sugestiach przesłanych przez Arnta Gulbrandsena, <agulbra@troll.no>. Przykład opisuje konfigurację reguł filtra pakietów praującego na Linuksie, wykorzystywanym w sposób przedstawiony na poniższym schemacie: - - \ | 172.16.37.0 \ | /255.255.255.0 \ --------- | | 172.16.174.30 | Linux | | NET =================| f/w |------| ..37.19 | PPP | router| | -------- / --------- |--| Mail | / | | /DNS | / | -------- - - Poniższe polecenia zwykle są umieszczane w jednym z plików rc, aby były automatycznie wykonywane przy każdym uruchomieniu systemu. Aby maksymalnie zwiększyć bezpieczeństwo systemu, powinny być wykonywane tuż po skonfigurowaniu urządzeń sieciowych, lecz tuż przed ich włączeniem. W ten sposób niwelujemy chwilę słąbości związaną z restartem komputera. #!/bin/sh # Oczyść tabelę reguł przesyłania pakietów (forwarding) # Zmień domyślną polityką na 'accept' (akceptuj): # /sbin/ipfwadm -F -f /sbin/ipfwadm -F -p accept # # .. i dla ruchu przychodzącego (Incoming) # /sbin/ipfwadm -I -f /sbin/ipfwadm -I -p accept # Po pierwsze zabezpiecz interfejs PPP # Chętnie zamiast '-a deny' wstawiłbym '-a reject -y', lecz wtedy nie # byłoby możliwe rozpoczynanie połączeń wychodzących przez ten # interfejs. Parametr -o pozwala rejestrować odrzucane datagramy. # Kosztem przestrzeni dyskowej zajętej przez informacje sysloga # uzyskujemy informacje na temat niechcianego ruchu IP. # /sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30 # Odrzuć pewnego rodzaju pakiety: # Nic nie powinno przychodzić z adresów multicast/anycast/broadcast # /sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24 # # nic nie powinno przychodzić z adresu pętli zwrotnej # /sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24 # Zezwól na połączenia SMTP i DNS, lecz jedynie do serwera Mail/DNS # /sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53 # # DNS korzysta z UDP i TCP, musisz pozwolić na oba rodzaje połączeń # /sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53 # # Nie pozwalamy na "odpowiedzi" przychodzące do tak niebezpiecznych # portów jak NFS czy rozszerzenie NFSu Larryego McVoya. Jeśli # korzystasz ze squida dopisz tutaj jego port # /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \ -D 172.16.37.0/24 2049 2050 # odpowiedzi do innych portów są OK # /sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \ -D 172.16.37.0/24 53 1024:65535 # Odrzuć połączenia przychodzące do identd # korzystamy tutaj z 'reject', aby łączący się komputer wiedział, że # nie ma co próbować nawiązać połączenia. W przeciwnym wypadku narazimy # się na opóźnienia wywołane działaniem programu ident po drugiej # stronie nawiązywanego przez nas połączenia # /sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113 # Pozwól na popularne usługi pochodzące z sieci 192.168.64 i 192.168.65 # /sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \ -D 172.16.37.0/24 20:23 # akceptuj i przesyłaj wszystko co wzięło się z sieci lokalnej # /sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0 # zabroń większości innych połączeń TCP i rejestruj je # (jeśli masz kłopot z działaniem ftp dodaj 1:1023) # /sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24 # ... for UDP too # /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24 Dobra konfiguracja filtra jest niemal sztuką. Powyższy przykład powinien być rozsądnym punktem startowym. Strona podręcznika dotycząca _i_p_f_w_a_d_m oferuje dodatkowe informacje na ten temat. Jeśli planujesz założenie filtra upewnij się, że zebrałeś wokół maksymalnie wiele porad ze źródeł, którym możesz ufać i poproś kogoś aby sprawdził działanie twojego filtra z zewnątrz. 66..1133.. IIPPXX (( AAFF__IIPPXX )) Protokół IPX jest powszechnie wykorzystywany w lokalnych sieciach Novell Netware(tm). Linux potrafi obsługiwać ten protokół i może zostać skonfigurowany do pracy jako końcówka sieci Novell Netware(tm) lub jako router pakietów IPX. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> [*] The IPX protocol [ ] Full internal IPX network Protokół IPX i standard NCPFS są dokładniej omówione w IPX-HOWTO <IPX- HOWTO.html>. 66..1144.. IIPPvv66 Właśnie gdy zaczęło ci się wydawać, że zaczynasz rozumieć sieci IP, zasady się zmieniły! IPv6 jest skrótem oznaczającym wersję 6 protokołu IP. IPv6 został opracowany w celu rozwiania obaw społeczności internetowej związanych z wyczerpywaniem się wolnych adresów IP. Adresy protokołu IPv6 są budowane na 32 bajtach (128 bitów), pozwoli to na lepsze zarządzanie sieciami, niż ma to obecnie. Jądra Linuksa serii 2.1.* już posiadają działającą, choć niepełną implementacje protokołu IPv6. Jeśli chcesz poeksperymentować z tą nową generacją technologii internetowych, lub jest ci to do czegoś potrzebne, powinieneś przeczytać IPv6-FAQ dostępny pod adresem: www.terra.net <http://www.terra.net/ipv6/>. 66..1155.. IISSDDNN Sieć cyfrowa zintegrowanych usług (Integrated Services Digital Network - ISDN) składa się z serii standardów definujących cyfrową sieć pakietową ogólnego przeznaczenia. ISND jest zwykle dostarczana łączami o wysokiej prędkości, podzielonymi na wiele kanałów. Istnieją dwa różne rodzaje kanałów, kanały typu 'B' rzeczywiście przenoszące dane użytkownika, oraz kanał typu 'D' wykorzystywany do przesyłania informacji sterującej do centrali ISDN w celu zestawiania połączeń i innych funkcji. Dla przykładu w Australii ISDN może być dostarczony łączem 2Mbps podzielonym na 30 kanałów B po 64kbps każdy i jeden kanał D. W tej samej chwili może być wykorzystywana dowolna liczba kabałów w dowolnej kombinacji. Jest możliwe np, zestawienie 30 różnych połączeń z 30toma różnymi punktami docelowymi, każde po 64kbps lub 15 połączeń z 15toma różnymi punktami docelowymi, każde po 128 kbps (jedno połączenie wykorzystuje dwa kanały), lub zestawienie małej liczby połączeń pozostawiając pozostałą część pasma niewykorzytaną. Pierwotną przyczyną powstania ISDN, było umożliwienie firmom telekomunikacyjnym udostępniania jednej usługi przesyłania danych, która mogłaby być wykorzystywana dla telefonii (wykorzystują cyfrowe przetworniki głosu) lub do przesyłania danych bez konieczności wykonywania przez klienta jakichkolwiek zmian. Istnieje kilka różnych metod podłączenia komputera do sieci ISDN. Jedną z nich jest wykorzystanie urządzenia o nazwie `Terminal Adaptor', które włącza się do końcówki sieciowej (Network Terminating Unit), zainstalowanej przez twojego dostawcę usługi ISDN, udostępniającego z drugiej strony kilka portów szeregowych. Jeden z tych portów służy do wprowadzania poleceń w celu skonfigurowania i nawiązania połączeń, pozostałe są podłączone do urządzeń sieciowych, które będą bezpośrednio korzystały z zestawionych kanałów transmisji danych. W takiej konfiguracji Linux będzie pracował poprawnie bez konieczności wykonywania jakichkolwiek modyfikacji. Korzystamy z portu szeregowego urządzenia 'Terminal Adaptor' w taki sam sposób, jak ze zwykłego portu szeregowego. Innym sposobem przyłączenia Linuksa do sieci ISDN, w czym wspomagać nas będzie kod obsługi ISDN zawarty w jądrze Linuksa jest zainstalowanie karty ISDN bezpośrednio w Linuksie. Wtedy moduł obsługi ISDN w jądrze Linuksa jest odpowiedzialny za obsługę urządzenia, protokołów i zestawianie połączeń. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: ISDN subsystem ---> <*> ISDN support [ ] Support synchronous PPP [ ] Support audio via ISDN < > ICN 2B and 4B support < > PCBIT-D support < > Teles/NICCY1016PC/Creatix support Implementacja ISDN w jądrze Linuksa rozpoznaje szereg różnych typów wewnętrznych kart ISDN. Ich lista jest przedstawiona podczas konfiguracji jądra: ˇ ICN 2B and 4B ˇ Octal PCBIT-D ˇ Teles ISDN-cards and compatibles Część z tych kart wymaga załadowania do ich wewnętrznej pamięci odpowiedniego oprogramowania. Służy do tego oddzielne narzędzie. Szczegółowy opis jak skonfigurować obsługę ISDN pod Linuksem jest dostępny w katalogu /usr/src/linux/Documentation/isdn/. Istnieje również FAQ poświęcony tej tematyce: _i_s_d_n_4_l_i_n_u_x jest dostępny pod adresem www.lrz-muenchen.de <http://www.lrz- muenchen.de/~ui161ab/www/isdn/>. (po połączeniu, aby otrzymać wersję angielską, musisz kliknąć na angielskiej fladze) UUwwaaggaa nnaa tteemmaatt PPPPPP. Rodzina protokołów PPP pracuje na łączach szeregowych synchronicznych lub asynchronicznych. Rozpowszechniany powszechnie program `_p_p_p_d' obsługuje jedynie tryb asynchroniczny. Jeśli zamierzasz uruchamiać połączenie PPP wykorzystująć jako nośnik usługę ISDN, potrzebujesz specjalną, zmodyfikowaną wersję tego programu. Wskazówki, gdzie ją można znaleźć znajdziesz w dokumentacji, o której wspomnieliśmy wcześniej. 66..1166.. IIPP MMaassqquueerraaddee Wielu ludzi do połączenia z Internetem ma zwykłe konto u dostawcy Internetu. Niemal każdy korzystający z takiej konfiguracji otrzymuje od swojego dostawcy Internetu jeden adres IP. Zwykle jest to wystarczające na podłączenie do Internetu tylko jednego komputera. Maskarada adresu IP jest sprytną sztuczką umożliwiającą jednoczesne korzystanie z tego jednego adresu IP przez wiele komputerów, sprawiając, że dla świata zewnętrzengo komputery te wyglądają tak, jak gdyby były komputerem obsługujący połączenie modemowe z Internetem. Istnieje mała niedogodność, a mianowicie w większości przypadków maskarada adresów IP działa tylko w jedną stronę, to znaczy komputery, które z niej korzystają mogą nawiązywać połączenia z komputerami w sieci Internet, lecz same nie mogą otrzymywać połączeń z zewnątrz. To oznacza, że niektóre usługi sieciowe np. _t_a_l_k nie działąją, a inne np. _f_t_p muszą być skonfigurowane do pracy w trybie pasywnym (PASV). Na szczęscie większość usług internetowych takich, jak _t_e_l_n_e_t, _W_W_W i _i_r_c działa bardzo dobrze. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers Networking options ---> [*] Network firewalls .... [*] TCP/IP networking [*] IP: forwarding/gatewaying .... [*] IP: masquerading (EXPERIMENTAL) Wpierw twój Linux musi obsługiwać połączenie z internetem (zwykle przez SLIP lub PPP) w taki sam sposób, jak gdyby byłjedynym komputerme, który będzie z tego połączenia korzystał. Następnie należy skonfigurować dodatkowe urządzenie sieciowe, zwykle kartę sieci ethernet, zwykle korzystając z puli numerów IP zarezerwowanych dla sieci prywatnych, których nie wykorzystuje się w sieci Internet. Komputery korzystające z maskarady adresów IP bedą właśnie na tej sieci. Każdy z nich otrzyma adres IP i zostanie skonfigurowany w ten sposób, że jego gatewayem (routerem) stanie się interfejs karty ethernetowej naszego Linuksa. Typowa konfiguracja wygląda mnie więcej tak: - - \ | 192.168.1.0 \ | /255.255.255.0 \ --------- | | | Linux | .1.1 | NET =================| masq |------| | PPP/slip | router| | -------- / --------- |--| host | / | | | / | -------- - - Najważniejsze polecenia konfiguracyjne dla tego przykładu: # Trasa do sieci na segmencie ethernetowym route add 192.168.1.0 netmask 255.255.255.0 eth0 # # Domyślna trasa do Internetu route add default ppp0 # # Wszystkie komputery w sieci 192.168.1/24 korzystają z maskarady # adresów IP ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 Więcej informacji na temat maskarady adresów IP pod Linuksem znajdziesz tutaj:IP Masquerade Resource Page <http://www.hwy401.com/achau/ipmasq/>, lub w dokumencie IP-Masquerade- HOWTO <IP-Masquerade-HOWTO.pl.html>. 66..1177.. IIPP TTrraannssppaarreenntt PPrrooxxyy Przezroczyste proxy IP jest udogodnieniem, które umożliwia przekierowanie połączeń do usług lub serwerów na innym komputerze do usług lub serwerów znajdujących się na tym komputerze. Zwykle jest to użyteczne w sytuacji gdy twój Linux pracuje jako router i jednocześnie pracuje jako serwer proxy. W takim przypadku możesz przekierować do lokalnego serwera proxy wszystkie połączenia do serwerów proxy znajdujących się za routerem. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers Networking options ---> [*] Network firewalls .... [*] TCP/IP networking .... [*] IP: firewalling .... [*] IP: transparent proxy support (EXPERIMENTAL) Konfigurację przezroczystego proxy wykonuje się programem _i_p_f_w_a_d_m. Prosty przykład, który może być użyteczny: ipfwadm -I -a accept -D 0/0 80 -r 8080 W powyższym przykładzie przekierowujemy wszystkie połączenia skierowane na port 80 (www) dowolnego komputera, na połączenia do portu 8080 naszego Linuksa. Ten sposób mógłby być użyty (gdyby był poprawny - bo nie jest ...pp) do przekierowania całego ruchu www do lokalnego serwera proxy. 66..1188.. MMoobbiillee IIPP Termin 'IP mobility' opisuje zdolność komputera do przemieszczania swojego punktu styku z internetem z jednej sieci do innej sieci bez konieczności zmiany własnego adresu IP i bez utraty nawiązanych połączeń. Zwykle gdy komputer zmienia swój punkt przyłączenia do sieci, musi również zmienić adres IP. Udogodnienie IP Mobility przezwycięża tę niedogodność przydzielając komputerowi jeden, ustalony adres IP i wykorzystuje tunelowanie (IP tunneling) i automatyczne trasowanie zapewniając, że datagramy skierowane do tego komputera są kierowane do adresu IP, z którego korzysta. Istnieje projekt mający zapewnić powstanie kompletu narzędzi dla udogodnienia 'IP mobility' pd Linuksem. Aktualny stan prac można poznać zaglądając na stronę: Linux Mobile IP Home Page <http://anchor.cs.binghamton.edu/~mobileip/>. 66..1199.. MMuullttiiccaasstt IP Multicast pozwala na jednoczesne trasowanie datagramów do wielu różnych komputerów znajdujących się w zupełnie innych podsieciach. Korzysta się z tego mechanizmu rozpowszechniania w internecie audio i video lub innych nowoczesnych usług. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> [*] TCP/IP networking .... [*] IP: multicasting Wymagany jest minimalny zestaw narzędzi i mała rekonfiguracja sieci. Dobrym źródłem informacji na temat istalacji i konfiguracji tego udogodnienia pod Linuksem jest strona www.teksouth.com <http://www.teksouth.com/linux/multicast/>. 66..2200.. NNeettRRoomm (( AAFF__NNEETTRROOMM )) Urządzenia NetRom noszą nazwy `nr0', `nr1', itd. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> [*] Amateur Radio AX.25 Level 2 [*] Amateur Radio NET/ROM Protokoły AX25, NetRom i Rose są opisane w AX25-HOWTO <AX25-HOWTO.html>. Są wykorzystywane głównie przez krótkofalowców (packet radio). Wiekszość pracy w implementacji tych protokołów pod Linuksem wykonał Jonathon Naylor, jsn@cs.not.ac.uk. 66..2211.. PPLLIIPP Urządzenia PLIP noszą nazwy `plip0', `plip1, itd. Pierwsze konfigurowane urządzenie otrzymuje numer `0', a następne otrzymują kolejne numery. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> <*> PLIP (parallel port) support _p_l_i_p (Parallel Line IP), jest podobny do SLIP, to znaczy zapewnia połączenie _p_u_n_k_t_-_d_o_-_p_u_n_k_t_u (point-to-point) między dwoma komputerami, lecz wykorzystuje w tym celu porty równoległe komputera (zamiast portów szeregowych, jak to ma miejsce w przypadku protokołu SLIP). Ponieważ port równoległy umożliwia w jednej chwili transmisję więcej niż jednego bitu, wykorzystując interfejs _p_l_i_p możemy osiągnąć znacznie większe prędkośći transmisji, niż ma to miejsce w przypadku portu szeregowego. Co więcej, do plip może być wykorzystany nawet najprostszy rodzaj portu szeregowego, port drukarkowy, gdy do pełnego wykorzystania portów szeregowych konieczne jest zakupienie dosyć drogich układów UART 15550AFN. Należy zwrócić uwagę, że niektóre laptopy używają układów, które nie będą poprawnie współpracować z PLIP, ponieważ nie zezwalają na przesyłanie pewnego rodzaju sygnałów, na których polega PLIP, a z których nie korzystają drukarki. Interfejs _p_l_i_p pod Linuksem jest zgodny z _C_r_y_n_w_y_r _P_a_c_k_e_t _D_r_i_v_e_r _P_L_I_P, a to oznacza, że możesz przyłączyć do swojego Linuksa, komputer pracujący pod MSDOS, na którym działa oprogramowanie TCP/IP korzystające ze standardu 'packet drivera', korzystająe z sterownika plip. Podczas kompilacji jądra jedyny plik, któremu warto się bliżej przyjrzeć to /usr/src/linux/driver/net/CONFIG. Zawiera parametry czasowe sterownika _p_l_i_p podane w milisekundach. Wartości domyślne są prawdopodobnie poprawne w większości przypadków. Jeśli twój komputer jest wyjątkowo wolny, możesz się zastanowić nad zwiększeniem tych paramterów, ale na komputerze po drugiej stronie połączenia. Sterownik przyjmuje następujące wartości domyślne parametrów: urządzenie adres IRQ we/wy ------ -------- ----- plip0 0x3BC 5 plip1 0x378 7 plip2 0x278 2 (9) Jeśli parametry portów równoległych twojego komputera nie pasują do żadnej z przedstawionych powyżej kombinacji, jesteś w stanie zmienić przerwanie IRQ wykorzystywane przez port (za pomocą programu _i_f_c_o_n_f_i_g). Pamiętaj aby włączyć w BIOSie korzystanie przez porty równoległe z przerwań IRQ, oczywiście o ile BIOS posiada taką opcję. W celu skonfigurowania interfejsu _p_l_i_p musisz do plików rc konfigurujących sieć _d_o_d_a_ć następujące polecenia: # # Przyłącz interfejs PLIP # # skonfiguruj pierwszy port równoległy jako urządzenie plip /sbin/ifconfig plip0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up # # End plip Gdzie: IIPPAA..IIPPAA..IIPPAA..IIPPAA oznacza twój adres IP. IIPPRR..IIPPRR..IIPPRR..IIPPRR oznacza adres IP komputera zdalnego. Parametr _p_o_i_n_t_o_p_o_i_n_t ma tutaj takie samo znaczenie, co w przypadku protokołu SLIP, a mianowicie określa adres IP komputera po drugiej stronie połączenia. Urządzenie _p_l_i_p niemal pod każdym względem możesz traktować tak samo jak urządenie _s_l_i_p, poza tym, że ani _d_i_p ani _s_l_a_t_t_a_c_h nie muszą i nie mogą być wykorzystywane. 66..2211..11.. SScchheemmaatt kkaabbllaa ddoo ppoołłąącczzeenniiaa PPLLIIPP.. _p_l_i_p został opracowany w taki sposób, aby wykorzystywał kable o takim samym układzie, co kable, z których korzystają inne popularne programy do transferu danych przez port równoległy pracujące w środowisku MSDOS. Schemat połączeń (wzięty z /usr/src/linux/drivers/net/plip.c) znajduje się poniżej: Nazwa Połączenie --------- ----------------- GROUND 25 - 25 D0->ERROR 2 - 15 ERROR->D0 15 - 2 D1->SLCT 3 - 13 SLCT->D1 13 - 3 D2->PAPOUT 4 - 12 PAPOUT->D2 12 - 4 D3->ACK 5 - 10 ACK->D3 10 - 5 D4->BUSY 6 - 11 BUSY->D4 11 - 6 D5 7* D6 8* D7 9* STROBE 1* FEED 14* INIT 16* SLCTIN 17* Uwagi: Nie należy łączyć końcówek oznaczonych `*'. Dodatkowe uziemienia to 18,19,20,21,22,23 i 24. Jeśli kabel z którego korzystasz jest ekranowany, ekran powinien być podłączony do obudowy wtyczki DB-25 ttyyllkkoo nnaa jjeeddnnyymm kkoońńccuu. OOssttrrzzeeżżeenniiee:: kkaabbeell zzee źźllee wwyykkoonnaannyymmii ppoołłąącczzeenniiaammii mmoożżee ffiizzyycczznniiee zznniisszzcczzyyćć kkaarrttęę kkoonnttrroolloorraa ttwwoojjeeggoo kkoommppuutteerraa.. Bądź bardzo ostrożny i dwukrotnie sprawdzaj każde połączenie, aby nie narazić się na niepotrzebny ból głowy lub atak serca. Choć może się udać, że połączenie PLIP będzie pracować na duże odległości, należy jednak tego unikać. Specyfikacja kabla pozwala na wykonania kabla o długości ok 1m. Bądź ostrożny używając dłuższych kabli, ponieważ źródła silnych pół elekromagnetycznych (pioruny, linie wysokiego napięcia, nadajniki radiowe) mogą zakłócić pracę a czasami doprowadzić do uszkodzenia sterownika. Jeśli zależy ci na połączeniu dwóch komputerów na naprawdę dużą odległość, powinieneś zopatrzyć się w parę tanich kart ethernetowych pracujących na cienkim kablu koncentrycznym. 66..2222.. PPPPPP Urządzenia PPP noszą nazwy `ppp0', `ppp1, itd. Urządzenia otrzymują kolejne numery poczynając od `0'. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> <*> PPP (point-to-point) support Szczegółowy opis konfiguracji PPP można znaleźć w PPP-HOWTO <PPP- HOWTO.html>. 66..2222..11.. UUttrrzzyymmyywwaanniiee zzaa ppoommooccąą pppppp ssttaałłeeggoo ppoołłąącczzeenniiaa zz IInntteerrnneetteemm.. Jeśli masz na tyle szczęścia, aby posiadać półstałe połączenie z siecią i chciałbyś, aby twój komputer automatycznie zestawiał połączenie PPP, gdy z jakiegoś powodu zostanie przerwane, pomoże ci w tym prosta sztuczka. Skonfiguruj PPP w taki sposób, aby było uruchamiane przez administratora systemu za pomocą polecenia: # pppd UUppeewwnniijj ssiięę, że w pliku /etc/ppp/options znajduje się opcja `-detach'. Następnie dodaj do pliku /etc/inittab, poniżej definicji _g_e_t_t_y następujący wiersz: pd:23:respawn:/usr/sbin/pppd W ten sposób program _i_n_i_t będzie uruchamiał i monitorował program _p_p_p_d i za każdym razem, gdy pppd skończy pracę, będzie uruchamiał go ponownie. 66..2233.. RRoossee pprroottooccooll (( AAFF__RROOSSEE )) Urządzenia protokołu Rose noszą nazwy `rs0', `rs1', itd. Dostępne są w jądrach w wersji 2.1.*. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Networking options ---> [*] Amateur Radio AX.25 Level 2 <*> Amateur Radio X.25 PLP (Rose) Protokoły AX25, NetRom i Rose są dokładnie omówione w AX25-HOWTO <AX25-HOWTO.html>. Są wykorzystywane przez krótkofalowców (packet radio). Większość pracy związanej z implementacją tych protokołów pod Linuksem wykonał Jonathon Naylor, jsn@cs.not.ac.uk. 66..2244.. SSAAMMBBAA -- ``NNeettBBEEUUII'',, ``NNeettBBiiooss'' ssuuppppoorrtt.. SAMBA jest implemnetacją protokołu SMB (Session Management Block). Pozwala na korzystanie z dysków i drukarek komputera pracującego pod Linuksem, komputerom pracującym pod systemami firmy Microsoft lub pod systemem OS2 SAMBA i jej konfigiracja jest szczegółowo omówiona w SMB-HOWTO <SMB- HOWTO.html>. 66..2255.. KKlliieenntt pprroottookkoołłuu SSLLIIPP Urządzenia protokołu SLIP są nazywane `sl0', `sl1' itd. Pierwsze skonfigurowane urządzenie otrzymuje numer `0', pozostałe otrzymują kolejne numery, w momencie ich konfiguracji. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Network device support ---> [*] Network device support <*> SLIP (serial line) support [ ] CSLIP compressed headers [ ] Keepalive and linefill [ ] Six bit SLIP encapsulation Protokół SLIP (Serial Line Internet Protocol) pozwala na zestawienie połączenia TCP/IP przez linię szeregową, np. połączenie modemowe przez linię telefoniczną lub dzierżawioną. Oczywiście aby móc korzystać z protokołu SLIP należy mieć wpierw dostęp do _s_e_r_w_e_r_a _S_L_I_P. Wiele uniwersytetów i firm komercyjnych udostępniają usługę SLIP. SLIP wykorzystuje porty szeregowe komputera do przesyłania datagramów IP. W tym celu musi przejąć sterowanie portu szeregowego. Urządzenia SLIP noszą nazwy _s_l_0, _s_l_1 itd. Jak to się ma do urządzeń portów szeregowych? Oprogramowanie sieciowe korzysta z funkcji _i_o_c_t_l (i/o control) za pomocą których może zażądać zamiany urządzenia portu szeregowego w urządzenie SLIP. Dwa popularne programy potrafią to zrobić. Jeden z nich to _d_i_p, drugi _s_l_a_t_t_a_c_h. 66..2255..11.. ddiipp _d_i_p (Dialup IP) to zmyślny program umożliwiający ustawienie prędkości portów szeregowych, sterowanie modemem w celu wybrania odpowiedniego numeru, zautomatyzowane wejście do zdalnego systemu, przesukiwanie i wybieranie informacji przesyłanych przez zdalny serwer (np. przydzielonego nam na czas sesji adresu IP), korzystanie z funkcji _i_o_c_t_l w celu przestawienia portu szeregowego w urządzenie SLIP. Program _d_i_p posiada rozbudowany język przeznaczony do pisania skryptów, dzięki czemu można bardzo łatwo zautomatyzować procedurę zestawiania połączenia SLIP. Jest dostępny pod adresem: sunsite.unc.edu <ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/dip/dip337o- uri.tgz>. Aby go zainstalować spróbuj wydać następujące polecenia: # # cd /usr/src # gzip -dc dip337o-uri.tgz | tar xvf - # cd dip-3.3.7o <jeśli to konieczne popraw plik Makefile> # make install # Plik Makefile zakłada istnienie w twoim systemie grupy o nazwie _u_u_c_p, lecz możesz to zmienić np na _d_i_p, lub _s_l_i_p zależnie od twojej konfiguracji. 66..2255..22.. ssllaattttaacchh _s_l_a_t_t_a_c_h w przeciwieństwie do _d_i_p jest bardzo prostym programem, bardzo łatwym w użytkowaniu, nie posiadającym bogatych opcji programu _d_i_p. Nie posiada możliwości tworzenia skryptów, jedyne co robi to konfiguracja urządzenia portu szeregowego, jako urządzenia SLIP. Zakłada, że posiadasz wszystkie informacje niezbędne do zestawienia połączenia oraz, że połączenie fizyczne między portami jest już zestawione. _s_l_a_t_t_c_h jest idealne do wykorzystania w stałych połączeniach z serwerem, np. przez kabel łączący bezpośrednio dwa porty szeregowe lub przez linie dzierżawioną. 66..2255..33.. KKiieeddyy uużżyywwaaćć kkaażżddeeggoo zz ttyycchh pprrooggrraammóóww ?? Skorzystałbym z programu _d_i_p zawsze wtedy, gdy łączyłbyn komputer z serwerem SLIP przez modem i linię telefoniczną. Skorzystałbym z programu _s_l_a_t_t_a_c_h wtedy, gdy zestawiałbym połączenie przez linię dzierżawioną lub kabel bezpośrednio między serwerem i moim komputerem i gdy nie muszę wykonywać żadnych czynności do fizycznego zestawienia połączenia między moim komputerem a serwerem. Patrz rozdział 'Stałe połączenie SLIP'. Konfiguracja urządzenia SLIP jest zbliżona do konfiguracji urządzenia karty ethernetowej. (przeczytaj rozdział 'Konfiguracja karty ethernetowej). Jednakże istnieją dwie zasadnicze różnice: Po pierwsze SLIP w przeciwieństwie do sieci ethernetowych łączy bezpośrednio ze sobą tylko dwa komputery, po jednym na każdym końcu połączenia. O ile podłączenie kabla sieci ethernet do komputera oznacza jej natychmiastową gotowość do pracy, o tyle w przypadku protokołu SLIP może być wymagana wcześniejsza inicjacja fizycznego połączenia między komputerami. Jeśli korzystasz z programu _d_i_p, to zwykle inicjacja łącza odbywa się nie tuż po uruchomieniu systemu, lecz później, gdy jesteś gotowy do korzystania z połączenia. Można całą tę procedurę zautomatyzować. Jeśli korzystasz z programu slattch wtedy prawdopodobnie zechcesz zmodyfikować plik startowy rc.inet1. Jak to zrobić powiemy za chwilę. Istnieją dwa podstawowe serwery udostępniające SLIP. Różnią się sposobem przydziału adresu IP, mogą to robić statycznie (za każdym razem otrzymujesz ten sam adres IP) i dynamicznie (po nawiązaniu połączenia serwer podaje, jakiego adresu powinieneś używać). Niemal każdy serwer SLIP bedzie wymagał przedstawienia się i podania hasła. _d_i_p potrafi zautomatyzować wszystkie te procedury. 66..2255..44.. SSttaattyycczznnyy sseerrwweerr SSLLIIPP zz lliinniiąą mmooddeemmoowwąą ii pprrooggrraammeemm DDIIPP.. Statyczny serwer SLIP to skrót oznaczający serwer SLIP przydzielający adresy IP w sposób statyczny. Otrzymany adres IP jest wyłącznie twój. Za każdym razem, gdy przyłączysz się do serwera będziesz konfigurował port SLIP swojego komputera tym samym adresem IP. Serwer odpowie na połączenie rozpoczęte przez twój modem, prawdopodobnie poprosi o podanie identyfikatora i hasła, a następnie po przejściu w tryb SLIP będzie przesyłał wszystkie datagramy adresowane na twój adres IP przez nazwiązane przez ciebie połączenie. Jeśli korzystasz ze statycznego serwera SLIP, możesz chcieć dodać do pliku /etc/hosts pozycję z nazwą i adresem IP twojego komputera. Powinieneś również skonfigurować kilka innych plików, między innymi rc.inet2, host.conf, resolv.conf, /etc/HOSTNAME i rc.local. Pamiętaj, że modyfikując rc.inet1 nie musisz podawać żadnych poleceń specyficznych dla połączenia SLIP, ponieważ to dopiero _d_i_p wykona całą ciężką robotę konfigurując interfejs SLIP, po tym jak nawiąże połączenie modemowe i zaloguje się na serwer. Jeśli tak właśnie pracuje serwer SLIP z którego korzystasz możesz przejść do rozdziału 'Korzystanie z programu dip', tam dowiesz się jak poprawnie skonfigurować ten program. 66..2255..55.. DDyynnaammiicczznnyy sseerrwweerr SSLLIIPP zz lliinniiąą mmooddeemmoowwąą ii pprrooggrraammeemm DDIIPP.. _D_y_n_a_m_i_c_z_n_y serwer SLIP to skrót oznaczający serwer SLIP, który z pewnej puli przydziela adresy IP w sposób dynamiczny (za każdym razem, gdy się z nim połączysz możesz otrzymać inny adres IP). To znaczy, że nie masz gwarancji, że łącząc się otrzymasz konkretny adres IP, może on być wykorzystywany przez kogoś innego, wtedy gdy nie korzystasz z połączenia. Administrator sieci, który skonfigurował serwer przydzielił mu pewną pulę adresów IP z której może korzystać. Obsługując kolejne przychodzące połączenie znajduje pierwszy niewykorzystany w danym momencie adres IP, przeprowadza użytkownika przez procedurę weryfikacyjną wyświetlając na koniec informacje zawierającą adres IP, który został przydzielony temu użytkownikowi na czas trwania nawiązanego właśnie połączenia. Konfiguracja do korzystania z tego rodzaju serwera jest podobna do tej dla serwera statycznego. Trzeba jedynie dodać fragment pobrania adresu IP przydzielonego nam przez serwer na czas trwania połączenia, a następnie kontynuować konfigurowanie SLIPa z tym właśnie adresem. Ponownie, _d_i_p wykonuje tę ciężką pracę, a jego nowsze wersje są na tyle sprytne, że potrafią nie tylko zalogować cię do systemu, ale również potrafią odczytać automatycznie adres IP wyświetlany przez serwer, zachowując go do późniejszego wykorzystania przy konfigurowaniu interfejsu SLIP. Jeśli tak właśnie pracuje serwer SLIP z którego korzystasz możesz przejść do rozdziału 'Korzystanie z programu dip', tam dowiesz się jak poprawnie skonfigurować ten program. 66..2255..66.. KKoorrzzyyssttaanniiee zz pprrooggrraammuu ddiipp.. Jak wyjaśniliśmy wcześniej _d_i_p jest potężnym programem, który potrafi uprościć i zautomatyzować proces łączenia się z serwerem SLIP, logowania się na ten serwer, uruchamiania tam odpowiedniego oprogramowania i konfigurowania lokalnych urządzeń SLIP za pomocą odpowiednich poleceń korzystających z programów _i_f_c_o_n_f_i_g i _r_o_u_t_e. Podstawowym sposobem korzystania z programu _d_i_p jest pisanie i uruchamianie specjalnych skryptów, składających się z listy poleceń rozumianych przez program _d_i_p. Przyjrzyj się plikowi sample.dip znajdującemu się w dystrybucji programu _d_i_p. Dip jest potężnym programem posiadającym wiele opcji, nie bedziemy ich tu wszystkich przedstawiać, jeśli cię to interesuje, przyjrzyj się stronom podręcznika poświęconym programowi dip, plikom README i innym plikom przykładowym znajdującym się w pakiecie dystrybucyjnym programu. Prawdopodobnie zauważyłeś, że plik sample.dip zakłada, że korzystasz ze statycznego serwera SLIP, tzn. że wiesz jaki jest twój adres IP, zanim połączysz się z serwerem. W przypadku korzystania z dynamicznego serwera SLIP nowsze wersje programu dip zostały zaopatrzone w dodatkowe polecenie, które potrafi automatycznie odczytać i skonfigurowć lokalne urządzenie SLIP z adresem IP przydzielonym przez serwer. Poniższa próbka jest zmodyfikowanym plikiem sample.dip dostarczanym w pakiecie _d_i_p_3_3_7_j_-_u_r_i_._t_g_z i w twoim przypadku prawdopodobnie jest dobrym punktem startowym. Możesz go zachować jako np. /etc/dipscript i dostosować go do swoich warunków. # # sample.dip Dialup IP connection support program. # # This file (should show) shows how to use the DIP # This file should work for Annex type dynamic servers, if you # use a static address server then use the sample.dip file that # comes as part of the dip337-uri.tgz package. # # # Version: @(#)sample.dip 1.40 07/20/93 # # Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> # main: # Next, set up the other side's name and address. # My dialin machine is called 'xs4all.hacktic.nl' (== 193.78.33.42) get $remote xs4all.hacktic.nl # Set netmask on sl0 to 255.255.255.0 netmask 255.255.255.0 # Set the desired serial port and speed. port cua02 speed 38400 # Reset the modem and terminal line. # This seems to cause trouble for some people! reset # Note! "Standard" pre-defined "errlevel" values: # 0 - OK # 1 - CONNECT # 2 - ERROR # # You can change those grep'ping for "addchat()" in *.c... # Prepare for dialing. send ATQ0V1E1X4\r wait OK 2 if $errlvl != 0 goto modem_trouble dial 555-1234567 if $errlvl != 1 goto modem_trouble # We are connected. Login to the system. login: sleep 2 wait ogin: 20 if $errlvl != 0 goto login_trouble send MYLOGIN\n wait ord: 20 if $errlvl != 0 goto password_error send MYPASSWD\n loggedin: # We are now logged in. wait SOMEPROMPT 30 if $errlvl != 0 goto prompt_error # Command the server into SLIP mode send SLIP\n wait SLIP 30 if $errlvl != 0 goto prompt_error # Get and Set your IP address from the server. # Here we assume that after commanding the SLIP server into SLIP # mode that it prints your IP address get $locip remote 30 if $errlvl != 0 goto prompt_error # Set up the SLIP operating parameters. get $mtu 296 # Ensure "route add -net default xs4all.hacktic.nl" will be done default # Say hello and fire up! done: print CONNECTED $locip ---> $rmtip mode CSLIP goto exit prompt_error: print TIME-OUT waiting for sliplogin to fire up... goto error login_trouble: print Trouble waiting for the Login: prompt... goto error password:error: print Trouble waiting for the Password: prompt... goto error modem_trouble: print Trouble occurred with the modem... error: print CONNECT FAILED to $remote quit exit: exit Powyższy przykład zakłada, że łączysz się z _d_y_n_a_m_i_c_z_n_y_m serwerem SLIP. Jeśli łączysz się z serwerem _s_t_a_t_y_c_z_n_y_m powinieneś skorzystać z pliku sample.dip dostarczanego razem z _d_i_p_3_3_7_j_-_u_r_i_._t_g_z. Gdy _d_i_p otrzyma polecenie _g_e_t _$_l_o_c_a_l przeszukuje tekst przesyłany przez serwer SLIP w poszukiwaniu ciągu znaków wyglądającego jako adres IP, tzn. ciągi cyfr rozdzielone kropką '.'. Została ona wprowadzone dla osób korzystających z _d_y_n_a_m_i_c_z_n_y_c_h serwerów SLIP, aby dip mógł sam, automatycznie odczytać adres IP przydzielony przez serwer. W powyższym przykładzie po zestawieniu połączenia SLIP zostanie automatycznie dodana domyślna trasa skierowana właśnie przez to połączenie. Jeśli nie tego oczekujesz, możesz np. posiadać inne połączenie przez sieć ethernetową, przez które ma być skierowana domyślna trasa, usuń z powyższego pliku wiersz z poleceniem _d_e_f_a_u_l_t. Jeśli po zakończeniu działania tego skryptu wydasz polecenie _i_f_c_o_n_f_i_g zobaczysz, że pojawiło się nowe urządzenie _s_l_0. To jest właśnie urządzenie SLIP. W miarę potrzeb możesz zmienić konfigurację sieci ręcznie, po zakończeniu działania programu _d_i_p, za pomocą pogramów _i_f_c_o_n_f_i_g i _r_o_u_t_e. Należy pamietać, że _d_i_p pozwala na wybranie jednego z wielu różnych protokołów wykorzystywanych w poleceniu mode. Najczęściej jest to _c_S_L_I_P oznaczający SLIP z kompresją nagłówków. Pamiętaj, że oba końce połączenia muszą pracować w identycznym trybie. Jeśli zmienisz jakieś ustawienia, musisz się upewnić, że serwer sobie z nimi poradzi. Powyższy przykład jest uniwersalny i powinien poradzić sobie z większością błędów jakie mogą wystąpić. Więcej informacji znajdziesz na stronie podręcznika poświęconej programowi _d_i_p (man dip). Oczywiście możesz w taki sposób zmodyfikować ten skrypt, aby w przypadku wystapienia błędu próbował powtórnie nawiązać połączenie telefoniczne, lub próbował połączyć się z innymi serwerami, które udostępniają ci wejscie do Internetu. 66..2255..77.. ssllaattttaacchh.. SSttaałłee ppoołłąącczzeenniiee SSLLIIPP pprrzzeezz lliinniięę ddzziieerrżżaawwiioonnąą -- Jeśli jesteś posiadaczem kabla łączącego dwa komputery, lub szczęśliwcem posiadającym linie dzierżawioną lub inne stałe połączenie szeregowe dwóch komputerów, wtedy nie musisz się kłopotać zestawiając łącze szeregowe za pomocą programu _d_i_p. _s_l_a_t_t_a_c_h jest bardzo łatwym w uzywaniu narzędziem umożliwiającym skonfigurować zestawiane połaczenie. Ponieważ będzie to połączenie stałe, prawdopodobnie zechcesz dodać kilka poleceń do pliku rc.inet1. Podsumowując, wszystko co potrzebujesz w przypadku zestawiania połączenia przez linię stałą, jest poprawne ustawienie prędkości portów szeregowych i przełączenie ich w tryb SLIP. _s_l_a_t_t_a_c_h pozwala wykonać to wszystko wydając jedno polecenie. Dodaj do pliku rc.inet1 następujące polecenie: # # Zestaw połączenie SLIP ze statycznym adresem IP # # configure /dev/cua0 for 19.2kbps and cslip /sbin/slattach -p cslip -s 19200 /dev/cua0 & /sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up # # Koniec Gdzie: IIPPAA..IIPPAA..IIPPAA..IIPPAA twój adres IP IIPPRR..IIPPRR..IIPPRR..IIPPRR adres IP po drugim końcu połączenia SLIP _s_l_a_t_t_a_c_h przyporządkowuje do urządzenia portu szeregowego pierwsze wolne urządzenie slip. Rozpoczyna od _s_l_0. To znaczy pierwsze wywołanie polecenia slattach przyporządkowuje portowi szeregowemu urządzenie _s_l_0, przy następnym wywołaniu będzie to _s_l_1 itd. _s_l_a_t_t_a_c_h umożliwia skonfigurowanie wielu różnych protokołów (argument opcji -p). W twoim przypadku w zależności od tego czy będziesz chciał korzystać z kompresji nagłówków czy nie będziesz korzystał albo z protokołu _c_S_L_I_P albo _S_L_I_P. Uwaga: oba końce połączenia muszą używać tego samego protokołu. 66..2266.. SSeerrwweerr SSLLIIPP.. Jeśli posiadasz komputer, być może przyłączony do sieci, i chcesz, aby udostępniał innym przez modem serwisy internetowe, to musisz skonfigurować go jako serwer. Jeśli protokołem, który chcesz używać jest SLIP, to istnieją trzy możliwości konfiguracji twojego komputera jako serwer. Osobiście preferuję pierwszą z prezentowanych, _s_l_i_p_l_o_g_i_n. Wydaje się być najprostszą i najłatwiejszą do skonfigurowania i zrozumienia. Przedstawię opis wszystkich trzech metod, abyś mógł samemu podjąć decyzję. 66..2266..11.. SSeerrwweerr kkoorrzzyyssttaajjąąccyy zz pprrooggrraammuu sslliippllooggiinn .. _s_l_i_p_l_o_g_i_n to program zastępujący zwykłą powłokę (interpreter poleceń) użytkownika, dla tych, którzy chcą korzystać z linii szeregowej w trybie SLIP. Pozwala na skonfigurowanie twojego komputera zarówno jako _s_t_a_t_y_c_z_n_e_g_o _s_e_r_w_e_r_a _S_L_I_P (użytkownicy za każdym razem otrzymują ten sam adres IP), lub _d_y_n_a_m_i_c_z_n_e_g_o _s_e_r_w_e_r_a _S_L_I_P (adres IP jest przydzielony raczej do linii szeregowej, a nie użytkownika, więc użytkownik nie ma pewności, że za każdym razem otrzyma ten sam adres IP). Użytkownik musi wpierw przejść przez standardową procedurę wchodzenia do systemu (logowanie się) podając swój identyfikator i hasło, lecz po wejściu do systemu, zmiast zwykłego interpretera poleceń uruchamiany jest program _s_l_i_p_l_o_g_i_n, który przeszukuje swój plik konfiguracyjny (/etc/slip.hosts) w poszukiwaniu pozycji odpowiadającej identyfikatorowi użytkownika. Po jej znalezieniu, przestawia linię w tryb 8mio bitowy, a następnie korzystając z odpowiednich funkcji _i_o_c_t_l przełącza linię w tryb SLIP. Po zakończeniu tego etapu następuje ostatnia faza, _s_l_i_p_l_o_g_i_n uruchamia skrypt, którego zadaniem jest skonfigurowanie interfejsu SLIP (ustawienie adresu IP, netmaski) dodanie odpowiedniej trasy do tabeli trasowania (routingu) jądra. Skrypt ten nosi zwykle nazwę /etc/slip.login lecz podobnie jak w przypadku _g_e_t_t_y, jeśli niektórzy użytkownicy wymagają specjalnego traktowania możesz utworzyć skrypt /etc/slip.login.identyfikator_uzytkownika, który w takim przypadku zostanie uruchomiony w miejsce standardowego skryptu. Aby _s_l_i_p_l_o_g_i_n działał poprawnie należy zmodyfikować trzy lub cztery pliki. Omówię szczegółowo skąd i jak zdobyć odpowiednie oprogramowanie i jak je poprawnie skonfigurować. Wspomniane pliki to: ˇ /etc/passwd, definiujacy użytkownikłów twojego systemu, ˇ /etc/slip.hosts, zawierający informacje o każdym użytkowniku korzystającym ze SLIPa, ˇ /etc/slip.login, odpowiedzialny z odpowiednią konfigurację systemu, po zalogowaniu się użytkownika, ˇ /etc/slip.tty wymagany tylko wtedy, gdy konfigurujesz _d_y_n_a_m_i_c_z_n_y _s_e_r_w_e_r _S_L_I_P, a który zawiera tabelę przydzielanych adresów IP, ˇ /etc/slip.logout zawierający polecenia jakie należy wykonać po zakończeniu pracy przez użytkownika, lub po zerwaniu połączenia. 66..2266..11..11.. SSkkąądd wwzziiąąćć sslliippllooggiinn Być może pakiet _s_l_i_p_l_o_g_i_n jest już zainstalowany na twoim komputerze, jako część dystrybucji, jeśli nie, _s_l_i_p_l_o_g_i_n jest dostępny pod adresem sunsite.unc.edu <ftp://sunsite.unc.edu/pub/linux/system/Network/serial/sliplogin-2.1.1.tar.gz>. Plik tar zawiera pliki źródłowe, skompilowane pliki binarne i dokumentację. Aby zapewnić, że _s_l_i_p_l_o_g_i_n może być uruchamiany przez upoważnionych do tego użytkowników, powinieneś do pliku /etc/group dodać pozycję podobną do poniższej: .. slip::13:radio,fred .. Podczas instalacji pakietu _s_l_i_p_l_o_g_i_n, Makefile zmieni grupę do której należy program _s_l_i_p_l_o_g_i_n na slip. W ten sposób, prócz właściciela będą go mogli uruchamiać tylko użytkownicy należący do grupy SLIP. W powyższym przykładzie mogą to robić tylko użytkownicy radio i fred. Aby zainstalować pliki binarne do katalogu /sbin/, a strony podręcznika do /man/ należy wykonoać następujące polecenia: # cd /usr/src # gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf - # cd sliplogin-2.1.1 # <..Jeśli nie korzystasz z shadow pasword popraw Makefile..> # make install Jeśli przed instalacją chcesz samemu skompilować pliki binarne przed make install wykonaj polecenie make clean. Jeśli chcesz zainstalować pliki binarne w innym miejscu, musisz wcześniej zmienić plik Makefile. Więcej informacji znajdziesz w plikach README wewnątrz pakietu. 66..2266..11..22.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//ppaasssswwdd .. Zwykle dla osób korzystających ze SLIPa tworzy się oddzielne konta. Powszechnie przyjęta konwencja mówi, że jako pseudonim użytkownika należy przyjąć nazwę łączącego się z nami komputera, poprzedzoną wielką literą 'S'. Jeśli łączący się z nami komputer nosi nazwę radio, mogłbyś utworzyć dla niego pozycję w pliku /etc/passwd wyglądajacą mniej więcej tak: Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin Tak na prawdę nie ma znaczenia jaki jest identyfikator konta. Uwaga: użytkownik SLIPa nie potrzebuje własnego katalogu macierzystego, ponieważ nie będzie korzystał z powłoki interpretera poleceń na naszym komputerze. Dlatego dobrym wyborem w takim przypadku jest katalog /tmp. Pamiętaj, że zamiast zwykłej powłoki uruchamiany jest program _s_l_i_p_l_o_g_i_n. 66..2266..11..33.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//sslliipp..hhoossttss Plik /etc/slip.hosts jest przeszukiwany przez _s_l_i_p_l_o_g_i_n w poszukiwaniu szczegółów konfiguracyjnych dla użytkownika, przez którego został uruchomiony. W tym właśnie pliku podaje się adres IP i netmaskę które będą przydzielone temu użytkownikowi i wykorzystywane do konfiguracji. Przykładowe dwie pozycje, jedną dla statycznej konfiguracji dla komputera radio i drugą, dynamiczna konfiguracja dla komputera albert mogły by wyglądać następująco: # Sradio 44.136.8.99 44.136.8.100 255.255.255.0 normal -1 Salbert 44.136.8.99 DYNAMIC 255.255.255.0 compressed 60 # Poszczególne pola w wierszu pliku /etc/slip.hosts oznaczają: 1. identyfikator użytkownika; 2. adres IP serwera, tzn adres IP tego komputera; 3. adres IP przydzielony komputerowi po drugiej stronie połączenia. Jeśli w tym polu występuje słowo DYNAMIC wtedy adres IP, zostanie przydzielony na podstawie informacji zawartych w pliku /etc/slip.tty. UUwwaaggaa:: to udogodnienie pojawiło się dopiero w wersji 1.3 programu sliplogin. 4. netmaska przydzielona łączącemu się komputerowi, w notacji dziesiętnej z kropkami np. 255.255.255.0 netmaska klasy C; 5. tryb pracy SLIP pozwalający na włączenie/wyłączenie kompresji lub innych udogodnień; 6. parametr czasowy określajacy jak długo linia może pozostać w stanie oczekiwania na przesłanie informacji (brak otrzymanych datagramów), zanim nastąpi automatyczne rozłączenie. Wielkość ujemna wyłącza to udogodnienie. 7. parametry opcjonalne. Uwaga: W polach 2 i 3 można podawać zarówna nazwy komputerów, jak i adresy IP. Jeśli podasz nazwę komputera, sprawdź, czy system potrafi znaleźć jego adres IP, w przeciwnym razie wykonanie skryptu zakończy się niepowodzeniem. Możesz to sprawdzić próbując połączyć się z nim za pomocą programu telnet. Jeśli zobaczysz komunikat `_T_r_y_i_n_g _n_n_n_._n_n_n_._n_n_n_._._.' to znaczy, że twój komputer potrafi znaleźć adres IP komputera o podanej przez ciebie nazwie. Jeśli zobaczysz komunikat _U_n_k_n_o_w_n _h_o_s_t', to znaczy, że jednak nie potrafi. Jeśli nie potrafi musisz podawać adres IP tego komputera lub sprwadź konfigurację DNS swojego komputera. Najczęściej wykorzysytwane tryby pracy SLIP to: nnoorrmmaall zwykły, nieskompresowny SLIP. ccoommpprreesssseedd kompresja nagłówków van Jacobsena (cSLIP) Oczywiście są to dwie wzajemnie wykluczające się opcje. Więcej informacji na temat dostępnych opcji znajdziesz na stronie podręcznika poświęconej programowi sliplogin. 66..2266..11..44.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//sslliipp..llooggiinn .. Po przeszukaniu przez _s_l_i_p_l_o_g_i_n pliku /etc/slip.hosts i znalezieniu opowiednich pozycji, zostanie uruchomiony skrypt /etc/sli.login, który w rzeczywistości wykonuje cała pracę związaną z konfiguracja interfejsów sieciowych, korzystając z przekazanych mu informacji o adresie IP i netmasce sieci. Przykładowy plik /etc/slip.login dostarczany w pakiecie _s_l_i_p_l_o_g_i_n wygląda następująco: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a SLIP line. sliplogin invokes this with # the parameters: # $1 $2 $3 $4, $5, $6 ... # SLIPunit ttyspeed pid the arguments from the slip.host entry # /sbin/ifconfig $1 $5 pointopoint $6 mtu 1500 -trailers up /sbin/route add $6 arp -s $6 <hw_addr> pub exit 0 # Jak widać, powyższy skrypt po prostu korzysta z programu _i_f_c_o_n_f_i_g i _r_o_u_t_e. Konfiguruje urządzenie SLIP zgodnie z podanymi mu adresem IP i netmaską, następnie modyfikuje tabele trasowania w jądrze. Wykonuje te same polecenia, które należy wykonać ręcznie korzystając ze _s_l_a_t_t_a_c_h. Zwróć uwagę na użycie _P_r_o_x_y _A_R_P w celu zapewnienia komunikacji między komputerami znajdującymi się na tym samym segmencie sieci co nasz serwer, a komputerem łączącym się przez linię szeregową. Pole <hw_addr> powinno zawierać adres sprzętowy karty ethernetowej serwera. Jeśli serwer nie jest przyłączony do sieci ethernetowej możesz pominąć ten wiersz całkowicie. 66..2266..11..55.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//sslliipp..llooggoouutt .. Kiedy następuje przerwanie połączenie chcesz być pewny, że port szeregowy jest przywracany do swego normalnego stanu i jest gotowy do obsługi kolejnego połączenia. Do tego celu służy skrypt /etc/slip.logout. Jest bardzo prosty i jest wywoływany z tymi samymi argumentami co /etc/slip.login. #!/bin/sh - # # slip.logout # /sbin/ifconfig $1 down arp -d $6 exit 0 # Wykonywane przez niego czynności to: wyłączenie interfejsu slip, spowoduje automatyczne usunięcie z tabeli trasowania wprowadzonej tam podczas zestawiania połączenie pozycji; usunięcie z tabeli arp wprowadzonej tam ręcznie pozycji. Nie potrzebujesz tego polecenia, jeśli twój serwer nie jest przyłączony do sieci ethernetowej. 66..2266..11..66.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//sslliipp..ttttyy .. Jeśli korzystasz z dynamicznego przydziału adresów IP (choć jeden komputer w pliku /etc/slip.hosts jest skonfigurowany z opcją DYNAMIC) to musisz również skonfigurować plik /etc/slip.tty informując system jakie adresy IP są przydzielone do każdego z wykorzystywanych portów szeregowych. Plik ten jest potrzebny tylko wtedy, gdy twój serwer będzie przydzielał adresy IP użytkownikom w sposób dynamiczny. Plik zawiera tabelę, która każdemu wykorzystywanemu urządzeniu _t_t_y przyporządkowuje adres IP jaki ma zostać przydzielony komputerowi łączącemu się przez to urządzenie _t_t_y. Format niniejszego pliku jest następujący: # slip.tty tty -> adres IP # format: /dev/tty?? xxx.xxx.xxx.xxx # /dev/ttyS0 192.168.0.100 /dev/ttyS1 192.168.0.101 # Pozycje w powyższym przykładzie oznaczają, że wszyscy, którzy połączą się przez port /dev/ttuS0 i jako swoj adres mają w pliku /etc/slip.hosts słowo DYNAMIC otrzymają adres 192.168.0.100. W ten sposób potrzebujesz jedynie jednego adresu IP na każdy wykorzystywany port dla wszystkich użytkowników, którzy nie potrzebują dedykowanego, stałego adresu IP. Dzięki temu liczba adresów potrzebna do obsługi wielu użytkowników jest bardzo mała. 66..2266..22.. SSeerrwweerr SSLLIIPP kkoorrzzyyssttaajjąąccyy zz pprrooggrraammuu ddiipp .. Część z prezentowanej poniżej informacji pochodzi ze stron podręcznika dotyczących programu _d_i_p. Jest tam pokrótce opisane jak wykorzystać _d_i_p jako serwer SLIP. Proszę również zwrócić uwagę, że podane informacje dotyczą wersji _d_i_p_3_3_7_o_-_u_r_i_._t_g_z i prawdopodobnie nie mają zastosowania do innych wersji programu. _d_i_p posiada tryb pracy, w którym automatycznie wyszukuje pozycję dotyczącą użytkownika, który go wywołał i konfiguruje linię szeregową jako połączenie SLIP według parametrów jakie znalazł w pliku /etc/diphosts. Ten tryb pracy jest włączany wtedy, gdy _d_i_p zostanie uruchominy jako program o nazwie _d_i_p_l_o_g_i_n. To jest właśnie sposób wykrzystania _d_i_pa do stworzenia serwera SLIP. Należy utworzyć specjalne konta, z programem _d_i_p_l_o_g_i_n jako powłoką użytkownika. Pierwsze co musisz zrobić, to następujące dowiązanie symboliczne: # ln -sf /usr/sbin/dip /usr/sbin/diplogin Następnie należy dodać odpowiednie pozycje do pliku /etc/passwd i /etc/diphosts. Aby skonfigurować Linuksa jako serwer SLIP wykorzystując do tego program _d_i_p wymaga utworzenia specjalnych kont do obsługi SLIPa z powłoką użytkownika w postaci programu _d_i_p jako _d_i_p_l_o_g_i_n. Sugerowana konwencja nadawania nazw tym kontom zaleca, aby pseudonim użytkownika rozpoczynał się wielką literą 'S', np. `Sfredm'. Przykładowa pozycja pliku /etc/passwd konta SLIP może wyglądać następująco: Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin ^^ ^^ ^^ ^^ ^^ ^^ ^^ | | | | | | \__ diplogin jako powłoka użytkownika | | | | | \_______ katalog domowy | | | | \____________ pełna nazwa użytkownika | | | \_________________ numer grupy (GID) | | \_____________________ numer użytkownika (UID) | \_______________________________ zakodowane haslo \__________________________________________ pseudonim użytkownika Po zalogowaniu się użytkownika (jeśli zostanie poprawnie zweryfikowany) program login uruchomi polecenie _d_i_p_l_o_g_i_n. _d_i_p wywołany jako _d_i_p_l_o_g_i_n zakłada, że został uruchomiony jako powłoka użytkownika. Piersze co robi, to korzysta z funkcji _g_e_t_u_i_d_(_) pobierając pseudonim wywołującego go użytkownika. Następnie przeszukuje /etc/diphosts w poszukiwaniu pierwszej pozycji, która pasuje do zdobytego identyfikatora lub wykorzystywanego urządzenia _t_t_y, a następnie odpowiednio się konfiguruje. Decydując czy użytkownik powinien mieć własną pozycję w pliku /etc/diphosts, czy powinien korzystać z konfiguracji domyślnej, możesz budować serwer, który korzysta zarówno z dynamicznego i statycznego przydziału adresów IP. _d_i_p automatycznie doda pozycję _P_r_o_x_y_-_A_R_P jeśli zostanie wywołany jako _d_i_p_l_o_g_i_n. Nie musisz się martwić ręcznym dodawaniem tych pozycji. 66..2266..22..11.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//ddiipphhoossttss /etc/diphosts jest wykorzystywany przez _d_i_p do wyszukiwania konfiguracji dla łączących się komputerów. Mogą to być pozycje dotyczące zarówno komputerów łączących się z twoim Linuksem, lecz równie dobrze mogą to być pozycje dotyczące komputerów, z którymi łączy się twój Linux. Ogólny format pliku /etc/diphosts wygląda następująco: .. Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006 ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296 .. Poszczególne pola oznaczają: 1. pseudonim użytkownika: identyfikator zwracany przez getpwuid(getuid()) lub nazwa terminala 2. niewykorzystane: zgodność z formatem passwd 3. adres zdalny: nazwa (adres IP) łaczącego się z nami komputera 4. adres lokalny: nazwa (adres IP) naszego serwera 5. netmaska: netmaska w notacji dziesiętnej 6. komentarz: możesz tu wstawić co chcesz 7. protokół: Slip, CSlip itp. 8. MTU: liczba Przykłady pozycji pliku /etc/net/diphosts dla komputerów łączących się z nami: Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296 definującej połączenie SLIP między naszym serwerem, a komputerem, który otrzyma adres 145.71.34.1, parametr MTU połączenia będzie wynosił 296, lub Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006 definiującej połączenie cSLIP z komputerem, który otrzyma adres 145.71.34.1. parametr MRU połączenia wynosił 1008. Dlatego wszyscy użytkownicy którym zezwolisz na przydzielany statycznie adres IP powinni być wymienieni w pliku /etc/diphosts. Jeli chcesz aby uzytkownicy łączący się na pewien port mieli przydzielane numery w sposób dynamiczny musisz umieścić wpis dla wspomnianego portu i usunąć wszystkie wpisy indywidualnych użytkowników. Upewnij się aby skonfigurować co najmniej jeden wpis dla każdego z urządzeń tty wykorzystywanego przez twoich użytkowników w celu zapewnienia im poprawnej konfiguracji niezależnie od modemu z którym się połączą. Kiedy użytkownik się loguje, widzi standardową zachętę do podania swojego identyfikatora SLIP i hasła. Jeli po wprowadzeniu żądanych informacji zostanie zweryfikowany poprawnie, nie zobaczy żadnych specjalnych komunikatów. Powinien wtedy przełączyć się po swojej stronie w tryb SLIP i mieć poprawne połączenie według konfiguracji zapisanej w pliku diphosts. 66..2266..33.. SSeerrwweerr SSLLIIPP kkoorrzzyyssttaajjąąccyy zz ppaakkiieettuu ddSSLLIIPP .. Matt Dillon <dillon@apollo.west.oic.com> stworzył pakiet, który służy nie tylko do inicjowania połączenia z serwerem, ale równie dobrze może obsługiwać połączenia przychodzące. Jest to kombinacja małych programów i skryptów zarządzających dla ciebie połączeniem. Musisz mieć zainstalowaną powłokę _t_c_s_h ponieważ przynajmniej jeden ze skryptów jej wymaga. Matt dostarcza binarną kopię programu _e_x_p_e_c_t, ponieważ wykorzystuje go inny ze skryptów. Prawdopodobnie zmuszenie pakietu do pracy będzie od ciebie wymagało trochę doświadczenia w obchodzeniu się z programem _e_x_p_e_c_t, lecz niech cię to nie odstręcza. Matt napisał dobry zestaw instrukcji instalacyjnych zgromadzonych w pliku README. Nie będę ich tutaj powtarzał. Pakiet _d_S_L_I_P możesz pobrać bezpośrednio ze źródła: aappoolllloo..wweesstt..ooiicc..ccoomm /pub/linux/dillon_src/dSLIP203.tgz lub z: ssuunnssiittee..uunncc..eedduu /pub/Linux/system/Network/serial/dSLIP203.tgz Przeczytaj plik README i dodaj odpowiednie pozycje do pliku /etc/passwd i /etc/group zzaanniimm wydasz polecenie make install. 66..2277.. OObbssłłuuggaa pprroottookkoołłuu SSTTRRIIPP ((SSttaarrmmooddee RRaaddiioo IIPP)) Urządzenia STRIP noszą nazwy `st0', `st1', itd. OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Network device support ---> [*] Network device support .... [*] Radio network interfaces < > STRIP (Metricom starmode radio IP) STRIP to protokół zaprojektowany specjalnie dla radiowych modemów Metricom na uniwersystecie w Stanford w ramach projektu badawczego noszącego nazwę MosquitoNet Project <http://mosquitonet.Stanford.EDU/mosquitonet.html>. Zajdziesz tam mnóstwo ciekawych informacji, nawet jeśli nie jesteś bezpośrednio zainteresowany projektem. Modemy Metricom przyłącza się przez port szeregowy komputera, posiadają szerokie spektrum technologiczne i są zdolne do pracy z prędkością zbliżoną do 100kbps. Informacje na temat samych modemów Metricom jest dostępna tutaj: Metricom Web Server <http://www.metricom.com/>. W chwili obecnej standardowe narządzia sieciowe nie obsługują sterownika STRIP. Musisz zdobyć specjalistyczne narzędzia dostępne na serwerze www projektu MosquitoNet. Szczegóły na temat niezbędnego oprogramowania znajdziesz tutaj: MosquitoNet STRIP Page <http://mosquitonet.Stanford.EDU/strip.html>. Konfiguracja sieci pracujących ze sterownikiem STRIP polega na wykorzystaniu zmodyfikowanego programu _s_l_a_t_t_a_c_h, które ustawia tryb pracy linii szeregowej na STRIP, a następnie na konfiguracji powstałego urządzenia `st[0-9]' w taki sam sposób, jak gdyby była to zwykła karta ethernetowa. Z jednym wyjątkiem, z przyczyn technicznych STRIP nie obsługuje protokołu ARP, dlatego musisz ręcznie skonfigurować tabelę ARP dla wszystkich komputerów w twojej podsieci. Co nie powinno sprawić większego kłopotu. 66..2288.. TTookkeenn RRiinngg Urządzenia Token Ring noszą nazwy `tr0', `tr1' itd. Token Ring jest standardem sieci LAN opracowanym przez IBM, który unika kolizji wprowadzając mechanizm pozwalający na transmisję danych w jednej chwili tylko jednej stacji przyłączonej do sieci. "Token" w danej chwili może należeć tylko do jednej stacji i to właśnie ta stacja, która go posiada jest uprawniona do nadawania informacji. Po zakończonej transmisji przekazuje "Token" następnej stacji. Przechodzi kolejno pomiędzy wszystkimi aktywnymi końcówkami sieci. Stąd nazwa "Token Ring". OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa: Network device support ---> [*] Network device support .... [*] Token Ring driver support < > IBM Tropic chipset based adaptor support Konfiguracja urządzeń token ring jest identyczna, jak konfiguracja urządzeń ethernetowych, z dokładnością do nazwy urządzenia podlegającego konfiguracji. 66..2299.. XX..2255 X.25 to obwodowy protokół komutacji pakietów zdefiniwany w C.C.I.T.T. (organizacji standaryzacyjnej uznawanej przez firmy telekomunikacyjne większości krajów świata. Cały czas trwają pracę nad implementacją X25 u LAPB i najnowsze wersje jądra 2.1.* zawierają kod odzwierciedlający aktualny stan prac. Jonathon Naylor jsn@cs.nott.ac.uk przewodzi grupie rozwijającej to oprogramowanie i opiekuje się listą utworzoną do dyskusji na tematy dotyczące X25 i Linuksa. Aby się na nią zapisać należy na adres majordomo@vger.rutgers.edu napisać list o treści "subscribe linux- x25". Wczesne wersje narzędzi konfiguracyjnych można uzyskac z archiwum ftp ftp.cs.nott.ac.uk <ftp://ftp.cs.nott.ac.uk/jsn/>. 66..3300.. WWaavveeLLaann CCaarrdd Urządzenia Wavelan noszą nazwy `eth0', `eth1', itd. OOppccjjee kkoommppiillaaccjjii jjąąddrraa: Network device support ---> [*] Network device support .... [*] Radio network interfaces .... <*> WaveLAN support Karty WaveLan to szerokopasmowe sieciowe karty bezprzewodowe. Są bardzo podobne do kart ethernetowych i praktycznie w większości są konfigurowane w taki sam sposób. Więcej informacji na temat kart WaveLan znajdziesz na stronie Wavelan.com <http://www.wavelan.com/>. 77.. KKaabbllee ii ookkaabblloowwaanniiee Ci z was, którzy posiadają odpowiednie narzędzia mogą chcieć zrobić własne kable do połączenia ze sobą dwóch Linuxów. Poniższe schematy powinny wam w tym pomóc. 77..11.. SSzzeerreeggoowwyy kkaabbeekk bbeezzmmooddeemmoowwyy ((SSeerriiaall NNUULLLL MMooddeemm ccaabbllee)) Nie wszystkie kable bezmodemowe są takie same. Dużo kabli bezmodemowych oszukuje twój komputer, tak aby myślał, że wszystkie potrzebne sygnały są obecne i zamienia ze sobą kanały nadawania i odbioru danych. Taki kabel będzie działał poprawnie, ale musisz stosować programowe sterowanie przepływem danych (XON/XOFF), które jest znacznie mniej wydajne od sterowania sprzętowego. Poniższy schemat przedstawia kabel umożliwiajacy transmisję ze sprzętowym sterowaniem przepływem danych (RTC/CTS). Pin Name Pin Pin Tx Data 2 ----------------------------- 3 Rx Data 3 ----------------------------- 2 RTS 4 ----------------------------- 5 CTS 5 ----------------------------- 4 Ground 7 ----------------------------- 7 DTR 20 -\--------------------------- 8 DSR 6 -/ RLSD/DCD 8 ---------------------------/- 20 \- 6 77..22.. KKaabbeell ppoorrttuu rróówwnnoolleeggłłeeggoo ((kkaabbeell PPLLIIPP)) Jeśli zamierzasz korzystać z protokołu PLIP, to kabel wykonany wg. poniższego schematu będzie działał niezależnie od rodzaju posiadanego portu równoległego. Pin Name pin pin STROBE 1* D0->ERROR 2 ----------- 15 D1->SLCT 3 ----------- 13 D2->PAPOUT 4 ----------- 12 D3->ACK 5 ----------- 10 D4->BUSY 6 ----------- 11 D5 7* D6 8* D7 9* ACK->D3 10 ----------- 5 BUSY->D4 11 ----------- 6 PAPOUT->D2 12 ----------- 4 SLCT->D1 13 ----------- 3 FEED 14* ERROR->D0 15 ----------- 2 INIT 16* SLCTIN 17* GROUND 25 ----------- 25 Uwagi: ˇ Nie przyłączaj nigdzie igieł oznaczonych gwiazdką `*'. ˇ Dodatkowe uziemienie znajduje się na igłach 18,19,20,21,22,23 i 24. ˇ Jeśli używany przez ciebie kabel posiada metalowy ekran, to powinien on być połączony do metalowej wtyczki DB-25, ale ttyyllkkoo zz jjeeddnneejj ssttrroonnyy. OOssttrrzzeeżżeenniiee:: kkaabbeell zzee źźllee wwyykkoonnaannyymmii ppoołłąącczzeenniiaammii mmoożżee ffiizzyycczznniiee zznniisszzcczzyyćć kkaarrttęę kkoonnttrroolloorraa ttwwoojjeeggoo kkoommppuutteerraa... Bądź bardzo ostrożny i dwukrotnie sprawdzaj każde połączenie, aby nie narazić się na niepotrzebny ból głowy lub atak serca. 77..33.. OOkkaabblloowwaanniiee eetthheerrnneettoowwee 1100bbaassee22 ((cciieennkkii kkoonncceennttrryykk)) 10base2 jest standardem okablowania ethernetowego wykorzystującego 52omowy kabel koncentryczny o średnicy ok 5mm. Łącząc ze sobą komputery za pomocą okablowania 10base2 należy pamiętać o kilku zasadach. Po pierwsze musisz mieć terminatory na oobbuu kkoońńccaacchh kabla. Terminator to opornik o oporniści 52 omy, zapewniający absorbję sygnału i zapobiegający jego odbiciom w momencie osiągnięcia końca kabla. Bez założonych terminatorów, może się okazać, że sieć nie jest pewna lub w ogóle nie nadaje się do pracy. Zwykle poszczególne komputery podłącza się do kabla z pomocą 'trójników'. Dlatego tak zbudowana sieć wygląda mniej więcej tak: |==========T=============T=============T==========T==========| | | | | | | | | ----- ----- ----- ----- | | | | | | | | ----- ----- ----- ----- gdzie `|' oznacza terminator na każdym zakończeniu kabla, `======' oznacza kabel koncentryczny, a `T' oznaczają trójniki. Kabel łączący trójnik z komputerem powinien być jak najkrótszy, najlepiej, gdy trójnik jest wpięty bezpośrednio na kartę ethernetową komputera. 77..44.. SSkkrręęttkkaa ((TTwwiisstteedd PPaaiirr EEtthheerrnneett CCaabbllee)) Jeśli chcesz połączyć ze sobą tylko dwie karty ethernetowe przez skrętkę, to nie potrzebujesz żadnego koncentratora (hub'a). Schemat wykonania potrzebnego kabla znajdziesz w Ethernet-HOWTO <Ethernet- HOWTO.html> 88.. SSppiiss ssttoossoowwaannyycchh tteerrmmiinnóóww Poniższa lista zawiera najważniejsze z terminów wykorzystywanych w tym dokumencie. AARRPP Skrót pochodzący od nazwy _A_d_d_r_e_s_s _R_e_s_o_l_u_t_i_o_n _P_r_o_t_o_c_o_l, określa sposób przyporządkowywania adresów IP adresom sprzętowym kart ethernetowych. AATTMM Skrót pochodzący od nazwy _A_s_y_n_c_h_r_o_n_o_u_s _T_r_a_n_s_f_e_r _M_o_d_e. Sieci ATM przesyłąją dane w pakietach o ustalonej długości. ATM jest technologią sieci pakietowych z komutacją kanałów. kklliieenntt Jest to zwykle oprogramowanie znajdujące się po tej samej stronie połączenia co użytkownik. Są oczywiście wyjątki od tej reguły, np. w przypadku X11 to właśnie serwer jest po stronie użytkownika, a klient jest to aplikacja wykonująca się na zdalnej maszynie. Klient to oprogramowanie lub końcówka systemu korzystająca z usług oferowanych przez serwer. W przypadku połączeń _p_e_e_r _t_o _p_e_e_r (każdy z każdym) jakimi są _s_l_i_p lub _p_p_p, za klienta przyjmuje się ten koniec połączenia, który je zainicjował, a drugi koniec nosi nazwę serwera. ddaattaaggrraamm Datagram jest pakietem informacji, który prócz danych posiada również nagłówki zawierające adresy nadawcy i adresata. Jest podstawową jednostką przesyłania informacji w sieci IP. Często jest zastępowany słowem 'pakiet'. DDLLCCII DLCI oznacza skrót Data Link Connection Identifier, jest stosowany do jednoznacznej identyfikacji wirtualnego połączenia punkt-punkt przez Frame Relay. DLCI są zwykle przydzielane przez dostawcę usługi Frame Relay. FFrraammee RReellaayy Frame Relay oznacza technologię sieciową przeznaczoną przede wszystkim do przenoszenia ruchu charaktyryzującego się nieregularnym natężeniem lub o sporadycznej charakterysyce. Koszty sieci są redukowane przez współdzielenie nośności sieci przez wielu użytkowników, przy założeniu, że każdy z nich generuje największy ruch o innej porze. AAddrreess sspprrzzęęttoowwyy Numer który jednoznacznie identyfikuje komputer na poziomie wartstwy fizycznej sieci (na poziomie warstwy nośnika). Przykładem takich adresów jest _a_d_r_e_s _k_a_r_t_y _e_t_h_e_r_n_e_t_o_w_e_j lub _a_d_r_e_s _A_X_._2_5. IISSDDNN ISDN oznacza skrót _I_n_t_e_g_r_a_t_e_d _S_e_r_v_i_c_e_s _D_e_d_i_c_a_t_e_d _N_e_t_w_o_r_k. ISDN umożliwia ujednolicony sposób dostarczania użytkownikom informacji głosowej lub cyfrowej. Technicznie ISDN jest siecią danych z komutacją kanałów. IISSPP Jest to skrót Internet Service Provider (dostawca internetu). Są to organizacje lub firmy, które umożliwiają ludziom dostęp do Internetu, aaddrreess IIPP Jest to numer jednoznacznie identyfikujący komputer w sieci TCP/IP. Adres składa się z 4rech bajtów i zwykle jest przedstawiany w tzw notacji dziesiętnej, czyli takiej, w której każdy bajt jest reprezentowany przez liczbę w systemie dziesiętnym, przy czym poszczególne bajty są rozdzielone znakiem '.'. MMSSSS Maximum Segment Size (_M_S_S) oznacza maksymalny rozmiar porcji danych, która może zostać przesłana za jednym razem. Aby zapobiec lokalnej fragmentacji pakietów MSS powinno się równać MTU-nagłówek IP. [od korektorki: oryginalny tekst jest skrótem myślowym: 'equal MTU - IP header' według mnie powinno być: 'powinno się równać różnicy: wielkość MTU-wielkość nagłówka IP' (nagłówek IP to zwykle 40 bajtów)]. MMTTUU Maximum Transmission Unit (_M_T_U) to parametr, który określa maksymalny rozmiar datagramu, jaki może zostać przesłany przez interfejs, bez konieczności podziału go na mniejsze kawałki. MTU powinno być większe niż największy datagram jaki ma być przesyłany w jednym kawałku. Pamietaj, że ten parametr steruje jedynie lokalną fragmentacją pakietów. Może się zdarzyć, że któreś z połączeń leżących na trasie do celu będzie miało mniejsze MTU, a wtedy pakiet zostanie podzielony na kawałki w tym wąskim garde. Standartowymi wielkościami są 1500 dla kart ethernetowych, 576 dla interfejsu SLIP. ttrraassaa _t_r_a_s_a osnacza ścieżkę jaką przebywają datagramy wędrując od nadawcy do odbiorcy. sseerrwweerr Oprogramowanie lub system po przeciwnej stronie połączenia w stosunku do pozycji użytkownika. Serwer udostępnia pewne usługi jednemu lub więcej klientom. Mogą to być usługi typu _f_t_p, _n_f_s lub _d_n_s. W przypaku połączeń typu _p_e_e_r_-_t_o_-_p_e_e_r (każdy z każdym) za serwer przyjmuje się ten koniec połączenia, który odpowiada na wezwanie, koniec rozpoczynający sesję nosi nazwę klienta. wwiinnddooww _O_k_i_e_n_k_o to największa liczba bajtów jaką w danej chwili odbiorca jest w stanie przyjąc. 99.. LLiinnuuxx uu ddoossttaawwccóóww IInntteerrnneettuu ?? Jeśli jesteś zainteresowany wykorzystaniem Linuksa jako dostawca Internetu polecam stronę Linux ISP homepage <http://www.anime.net/linuxisp/>. Zawiera listę odnośników do informacji, które mogą cię zainteresować. 1100.. PPooddzziięękkoowwaanniiaa Chciałbym podziekować następującym ludziom, za ich wkład w powstanie tego dokumentu (kolejność nie ma żadnego znaczenia): Axel Boldt, Arnt Gulbrandsen, Gary Allpike, Cees de Groot, Alan Cox, Jonathon Naylor. 1111.. CCooppyyrriigghhtt.. NET-3-HOWTO, informacja na temat instalacji i konfiguracji oprogramowania sieciowego pod Linuksem. Copyright (c) 1997 Terry Dawson. To jest darmowe oprogramowanie, możesz je rozpowszechniać i modyfikować na zasadach zgodnych z licencją GNU General Public License wydaną przez Freee Software Foundation w wersji 2 (lub jak wolisz) późniejszej. Ten program jest rozpowszechniany w nadziei, że bedzie użyteczny, lecz BEZ ŻADNYCH GWARANCJI; nawet bez gwarancji zdatności HANDLOWEJ lub UŻYTECZNOŚCI W KONKRETNYM ZASTOSOWANIU. Wiecej szczegółów w tekście GNU General Public License. Wraz z tym programem powinieneś otrzymać kopię Licencji GNU General Public License, jeśli nie napisz do: Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 1122.. OOdd ttłłuummaacczzaa To tłumaczenie zawiera mnóstwo różnego rodzaju błędów. Postanowiłem je udostępnić w takim stanie, ponieważ nie mam czasu na dokładne sprawdzenie tego dokumentu (a jest tego trochę), a szkoda mi trzymać to na dysku, czekając na Wolną Chwile (TM), która być może nigdy nie nadejdzie. Dlatego bedę wdzięczny za każdą, nawet najdrobniejszą uwagę. Najnowszą wersję tego tłumaczenia znajdziesz tutaj: http://www.ippt.gov.pl/pub/Linux/JTZ/html/NET-3-HOWTO.pl.html <http://www.ippt.gov.pl/pub/Linux/JTZ/html/NET-3-HOWTO.pl.html>. piotr.pogorzelski@ippt.gov.pl 1133.. OOdd kkoorreekkttoorrkkii Korekta, to było wyłapanie części literówek i złośliwości klawiatury oraz kilku niedotłumaczonych linijek tekstu. Pewnie jest tego jeszcze trochę dla następnej siwiejącej blondynki, która poczuje chęć się douczyć ;-) 30.11.2001 Basia Głowacka jastra@gdansk.sprint.pl ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/NIS-HOWTO.pl.txt�������������������������������������������������������0100664�0001750�0001750�00000147354�06753376740�017132� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Opis systemów NIS(YP)/NYS/NIS+ na Linux-ie. Autor:Thorsten Kukuk kukuk@suse.de v1.0, 9 Marca 1999 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v3.0, 9 Sierpnia 1999 Dokument ten opisuje jak skonfigurować Linux-a, aby działał jako klient NIS(YP) czy NIS+ oraz jako serwer. Dokument ten został napisany w standardzie ISO-8859-2. ______________________________________________________________________ Spis treści 1. Wprowadzenie. 1.1 Nowe wersje tego dokumentu. 1.2 Zrzeczenie. 1.3 Komentarze i poprawki. 1.4 Podziękowania. 1.5 Od tłumacza. 2. Słowniczek i informacje ogólne. 2.1 Słowniczek terminów. 2.2 Trochę ogólnych informacji. 3. NIS , NYS czy NIS+ ? 3.1 libc 4/5 z tradycyjnym NIS czy NYS ? 3.2 NIS czy NIS+ ? 4. Jak to działa. 4.1 Jak działa NIS. 4.2 Jak działa NIS+. 5. Portmapper RPC 6. Czego potrzebujesz, aby ustawić NIS? 6.1 Sprawdź czy jesteś serwerem, serwerem slave czy klientem. 6.2 Oprogramowanie. 6.3 Demon ypbind. 6.4 Ustawianie kilenta NIS przy użyciu Tradycyjnego NIS-a. 6.5 Ustawianie klienta NIS używając NYS. 6.6 Ustawianie klienta NIS używając glibc 2.x 6.7 Plik nsswitch.conf 6.8 Shadow Passwords z NIS i PAM. 6.8.1 Linux 6.8.2 Solaris 6.8.3 PAM 7. Czego potrzebujesz do ustawienia NIS+? 7.1 Oprogramowanie. 7.2 Konfiguracja klienta NIS+. 7.3 NIS+, keylogin, login i PAM. 7.4 Plik nsswitch.conf. 8. Konfiguracja serwera NIS. 8.1 Program ypserv. 8.2 Program serwera yps. 8.3 Program rpc.ypxfrd 8.4 Program rpc.yppasswdd 9. Weryfikacja instalacji NIS/NYS. 10. Popularne problemy i rozwiązywanie ich. 11. Często zadawane pytania. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Coraz więcej komputerów z Linux-em instalowanych jest jako część sieci komputerowych. Aby uprościć administrację siecią większość sieci (głównie oparte na Sun-ach) posiada Network Information Service. Maszyny Linux-owe mogą w pełni korzystać z serwera NIS albo samemu dostarczać taką usługę. Linux może także działać jako pełny klient NIS+, obsługa tego jest jeszcze w fazie beta. Dokument ten próbuje odpowiedzieć na pytania dotyczące ustawienia NIS(YP) i NIS+ na twoim komputerze. Nie zapomnij przeczytać sekcji na temat ``Portmapper-a RPC''. NIS-HOWTO zajmuje się Thorsten Kukuk, <tt/kukuk@vt.uni-paderborn.de/ Pierwotnym źródłem informacji dla pierwszej wersji NIS-HOWTO byli: Andrea Dell'Amico <adellam@ZIA.ms.it> Mitchum DSouza <Mitch.DSouza@NetComm.IE> Erwin Embsen <erwin@nioz.nl> Peter Eriksson <peter@ifm.liu.se> którym powinniśmy podziękować za napisanie pierwszych wersji tego dokumentu. 11..11.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu.. Najnowszą wersję tego dokumentu możesz zawsze znaleźć pod adresem http://www.suse.de/~kukuk/linux/HOWTO/NIS-HOWTO.html. Najnowsze wersje będą także umieszczane na różnych serwerach WWW i FTP związanych z Linux-em włącznie ze stroną LDP. Odnośniki do tłumaczeń tego dokumentu można znaleźć pod adresem http:///www.suse.de/~kukuk/linux/nis-howto.html. 11..22.. ZZrrzzeecczzeenniiee.. Pomimo, iż dokument ten powstał w jak najlepszej intencji może i pewnie zawiera błędy. Czytaj proszę wszystkie pliki README znajdujące się wraz z oprogramowaniem wymienianym tutaj w celu uzyskania jak najświeższych informacji. Będę sie starał aby było tu jak najmniej błędów. 11..33.. KKoommeennttaarrzzee ii ppoopprraawwkkii.. Jeśli masz jakieś pytania czy poprawki dotyczące tego dokumentu, pisz śmiało do Thorstena Kukuk na adres kukuk@suse.de. Przyjmuję wszelkie sugestie czy krytykę. Jeśli znajdziesz jakiś błąd daj mi znać proszę, żebym mógł go poprawić w następnej wersji. Dzięki. Proszę _n_i_e przysyłaj mi pytań na temat problemów dotyczących twojej dystrybucji Linux-a. Nie znam każdej dystrybucji. Ale będę się starał dodać każde rozwiązanie jaki mi przyślecie. 11..44.. PPooddzziięękkoowwaanniiaa.. Chcielibyśmy podziękować wszystkim ludziom, którzy przyczynili się w jakiś sposób do powstania i rozwoju tego dokumentu. W porządku alfabetycznym: Byron A Jeff <byron@cc.gatech.edu> Markus Rex <msrex@suse.de> Miquel van Smoorenburg <miquels@cistron.nl> Theo de Raadt jest odpowiedzialny za oryginalny kod yp-klienta. Swen Thuemmler przeniósł ten kod na Linux-a jak również procedury yp do biblioteki libc (znowu na podstawie pracy Theo). Thorsten Kukuk napisał od zera procedury NIS(YP) i NIS+ dla GNU libc 2.x. 11..55.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie. Zaznaczam, że nie jestem biegły w terminologii kryptografii więc wystepują tu pewnie jakieś dziwne wyrażenia, które powinienem zapisać inaczej. Jeśli wiesz jak to ma brzmieć, napisz; B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez tłumacza to odwołania do polskich serwerów ftp. 22.. SSłłoowwnniicczzeekk ii iinnffoorrmmaaccjjee ooggóóllnnee.. 22..11.. SSłłoowwnniicczzeekk tteerrmmiinnóóww.. W dokumencie tym występuje wiele akronimów. Oto te najważniejsze i krótkie wyjaśnienie: DDBBMM DataBase Management - biblioteka funkcji, które obsługują pary z kluczem (-key-content) w bazie danych. DDLLLL Dynamically Linked Library - biblioteka dołączana do wykonywalnego programu podczas jego działania. ddoommaaiinnnnaammee "Nazwa-klucz", która jest używana przez klientów NIS, aby zlokalizować pasujący serwer NIS, który udostepnia klucz dla domeny (domainname key). Zauważ proszę, że to nie koniecznie ma coś wspólnego z domeną DNS-ową (nazwą maszyny). FFTTPP File Transfer Protocol - protokół używany do przenoszenia plików pomiędzy komputerami. lliibbnnssll Name services library - biblioteka odwołań "name service" (getpwnam, getservbyname itp.) na unix-ach SVR4. GNU libc używa tego do funkcji NIS (YP) i NIS+. lliibbssoocckkeett Socket services library - biblioteka odwołań obsługi gniazdek (socket, bind, listen itp.) na unix-ach SVR4. NNIISS Network Information Service - serwis który udostępnia informację, która musi być znana poprzez sieć dla wszystkich maszyn w sieci. W standardowej bibliotece Linux-a - libc - jest obsługa dla NIS, która dalej zwana jest "tradycyjnym NIS-em". NNIISS++ Network Information Service (Plus :-) - właściwie to taki NIS na sterydach. NIS+ został zaprojektowany przez Sun Microsystems Inc. jako zastępca NIS-a z lepszym bezpieczeństwem i lepszą obsługą _wielkich_ instalacji. NNYYSS Jest to nazwa projektu, który powstał z NIS+, YP i Switch i zarządzany jest przez Petera Erikssona <peter@ifm.liu.se>. Między innymi zawiera powtórną implementację kodu NIS-a (=YP), która używa funkcjonalności Name Service Switch biblioteki NYS. NNSSSS Name Service Switch. Plik /etc/nsswitch.conf określa kolejność, w jakiej sprawdza się pewne żądane informacje. RRPPCC Remote Procedure Call. Procedury RPC pozwalają programom w C odwoływać się do procedur na odległej maszynie poprzez sieć. Kiedy ludzie mówią o RPC to najczęściej mają na myśli wariant Sun-a RPC. YYPP Yellow Pages(TM) - zarejestrowany znak towarowy w UK firmy British Telecom plc. TTCCPP--IIPP Transmission Control Protocol/Internet Protocol. To protokół komunikacji danych najczęściej używany na maszynach unix-owych. 22..22.. TTrroocchhęę ooggóóllnnyycchh iinnffoorrmmaaccjjii.. Następujące 3 linijki to cytat z podręcznika Sun(TM) System & Network Administration Manual: "NIS znany był wcześniej jako Sun Yellow Pages (YP), ale nazwa Yellow Pages(TM) jest zarejestrowanym znakiem towarowym w Zjednoczonym Królestwie firmy British Telecom plc i nie może być używana bez zgody." NIS to skrót od Network Information Service. Celem jego jest dostarczanie informacji, która musi być znana na sieci dla wszystkich komputerów. Informacja, która najprawdopodobniej będzie dystrybuowana to: ˇ login/hasła/katalogi domowe (/etc/passwd) ˇ informacje o grupach (/etc/group) Jeśli na przykład informacja o twoim haśle jest zapisana w bazie haseł NIS, będziesz mógł się zalogować na wszystkich maszynach na sieci, które mają uruchomionego klienta NIS. Sun jest znakiem towarowym Sun Microsystems, Inc. licencjonowane dla SunSoft, Inc. 33.. NNIISS ,, NNYYSS cczzyy NNIISS++ ?? 33..11.. lliibbcc 44//55 zz ttrraaddyyccyyjjnnyymm NNIISS cczzyy NNYYSS ?? Wybór pomiędzy "tradycyjnym NIS" czy kodem NIS w bibliotece NYS jest wyborem pomiędzy lenistwem i rozwojem a elastycznością i zamiłowaniem do przygody. Kod "tradycjnego NIS" jest w standardowej bibliotece C i istnieje już długo i czasem cierpi z powodu swojego wieku i pewnej nieelastyczności. Kod NIS w bibliotece NYS wymaga rekompilacji biblioteki libc, aby włączyć do niej kod NYS (albo możesz wziąć już skompilowaną wersję libc od kogoś kto już ją skompilował). Inną różnicą jest to, że "tradycyjny NIS" ma pewną obsługę NIS Netgroups, której NYS nie ma. Z drugiej strony NYS pozwala obsługiwać Shadow Passwords w sposób przezroczysty. "Tradycyjny NIS" nie obsługuje Shadow passwords przez NIS. Zapomnij o tym wszystkim jeśli używasz nowej biblioteki GNU C 2.x (aka libc6). Ma ona rzeczywistą obsługę NSS (Name Switch Service), co czyni ją bardzo elastyczną oraz zawiera obsługę następujących map NIS/NIS+: aliases, ethers, group, hosts, netgroups, networks, protocols, publickey, passwd, rpc, services i shadow. Biblioteka GNU C nie ma żadnych problemów z shadow password przez NIS. 33..22.. NNIISS cczzyy NNIISS++ ?? Wybór między NIS a NIS+ jest prosty - użyj NIS-a jeśli nie musisz używać NIS+ czy nie musisz stosować zaostrzonego bezpieczeństwa. Z NIS+ jest _o wiele_ więcej kłopotów jeśli chodzi o administrację (jest nim całkiem łatwo zarządzać od strony klienta, ale serwer to horror). Innym problemem jest fakt, że wsparcie dla NIS+ w Linux-ie jest ciągle w fazie rozwoju - potrzebujesz najnowszej biblioteki glibc, albo musisz poczekać na glibc 2.1. Istnieje wersja zastępcza glibc z obsługą NIS+ dla libc5. 44.. JJaakk ttoo ddzziiaałłaa.. 44..11.. JJaakk ddzziiaałłaa NNIISS.. W całej sieci musi być przynajmniej jedna maszyna działająca jako serwer NIS. Możesz zrobić więcej serwerów NIS, każdy dla innej "domeny" NIS - albo możesz mieć współpracujące serwery NIS, gdzie jeden ma być głównym serwerem NIS (master) a wszystkie inne są tak zwanymi slave NIS servers (to znaczy dla pewnej "domeny" NIS!) - albo możesz to pomieszać. Serwery slave posiadają tylko kopię baz danych NIS i otrzymują te kopie od głównego serwera NIS kiedy tylko robione są jakieś zmiany w głównej bazie. W zależności od liczby komputerów w twojej sieci, możesz zdecydować się na instalację jednego lub większej ilości serwerów slave. Kiedy tylko serwer NIS jest unieruchamiany (goes down) albo jest zbyt wolny w odpowiedziach na żądania, klient NIS-a podłączony do tego serwera spróbuje znaleźć ten, który działa albo jest szybszy. Bazy danych NIS są w tak zwanym formacie DBM, pochodzącym od baz danych ASCII. Na przykład, pliki /etc/passwd i /etc/group mogą być bezpośrednio zamienione na DBM przy pomocy oprogramowania translacyjnego ASCII-na-DBM ("makedbm" - dostarczanym wraz z serwerem). Główny serwer NIS powinien posiadać obie bazy - tak ASCII jak i DBM. Serwery slave zostaną powiadomione o każdej zmianie w mapach NIS, (poprzez program "yppush") i automatycznie uaktualnią owe zmiany, aby zsynchronizować swoje bazy danych. Klienci NIS nie muszą tego robić ponieważ oni zawsze łączą się z serwerem NIS, aby odczytać informacje zapisane w bazach danych DBM. Stare wersje ypbind wysyłają adres rozgłoszeniowy (broadcast), aby znaleźć działający serwer NIS. Jest to niebezpieczne ponieważ każdy może zainstalować serwer NIS i odpowiedzieć na takie zapytanie. Nowsze wersje ypbind (3.3 czy mt) pobierają adres serwera z pliku konfiguracyjnego - i nie ma potrzeby wysyłania adresu rozgłoszeniowego. 44..22.. JJaakk ddzziiaałłaa NNIISS++.. NIS+ to nowa wersja "network information nameservice" z Sun-a. Największą różnicą pomiędzy NIS i NIS+ jest obsługa kodowania danych i autentykacja poprzez bezpieczne RPC w NIS+. Model nazewnictwa w NIS+ jest zbudowany w postaci struktury drzewiastej. Każdy węzeł w drzewie odpowiada objektowi NIS+, których mamy sześć typów: katalog, pozycja (entry), grupa, dołączenie, tablica i prywatne. Katalog NIS+, który tworzy podstawę przestrzeni nazw w NIS+ nazywa się katalogiem "root". Są dwa specjalne katalogi NIS+: org_dir i groups_dir. Katalog org_dir składa się z wszystkich tablic administracyjnych, takich jak passwd, hosts i mail_aliases. Katalog groups_dir składa się z grup objektów NIS+, które używane są do kontroli dostępu. Kolekcja org_dir, groups_dir i ich katalogów nadrzędnych to domena NIS+. 55.. PPoorrttmmaappppeerr RRPPCC Aby móc uruchomić jakikolwiek z wymienionych poniżej programów, będziesz musiał uruchomić program /usr/bin/portmap. Niektóre dystrybucje mają skrypt uruchamiający ten demon w plikach startowych /sbin/init.d/ czy /etc/rc.d/. Wszystko co musisz zrobić, to uaktywnić go i zrestartować komputer. Przeczytaj dokumenctaję dostarczoną wraz z dystrybucją, aby się dowiedzieć jak to zrobić. Portmapper RPC (portmap(8)) jest serwerem, który zamienia numery programowe RPC na numery portów protokołu TCP/IP (albo UDP/IP). Musi być on uruchomiony, aby móc używać na tej maszynie odwołań RPC (co właśnie robi oprogramowanie klienta NIS/NIS+) do serwerów RPC (takich jak serwer NIS czy NIS+). Kiedy serwer RPC jest startowany, poinformuje on portmap-a na których portach nasłuchuje, i jakimi numerami programowymi RPC może służyć. Kiedy klient chce odwołać się przez RPC do danego numeru programowego, najpierw skontaktuje się z portmap-em na maszynie serwerowej, aby określić numer portu, do którego należy wysłać pakiety RPC. Normalnie, standardowe serwery RPC są startowane przez inetd(8), więc portmap musi działać zanim wystartuje inetd. Dla bezpieczeństwa portmapper potrzebuje serwisu czasu (Time Service). Upewnij się czy serwis ten jest włączony w /etc/inetd.conf na wszystkich hostach: # # Time service is used for clock syncronization. # time stream tcp nowait nobody /usr/sbin/tcpd in.timed time dgram udp wait nobody /usr/sbin/tcpd in.timed WAŻNE: Nie zapomnij zresetować (kill -HUP) inetd-a po dokonaniu zmian jego pliku konfiguracyjnym ! 66.. CCzzeeggoo ppoottrrzzeebbuujjeesszz,, aabbyy uussttaawwiićć NNIISS?? 66..11.. SSpprraawwddźź cczzyy jjeesstteeśś sseerrwweerreemm,, sseerrwweerreemm ssllaavvee cczzyy kklliieenntteemm.. Aby odpowiedzieć na to pytanie musisz rozważyć dwa przypadki: 1. Twoja maszyna będzie częścią sieci z istniejącymi serwerami NIS. 2. Nie masz jeszcze żadnego serwera NIS w sieci. W pierwszym przypadku potrzebujesz tylko programów klienta (ypbind, ypwhich, ypcat, yppoll, ypmatch). Najważniejszym programem jest ypbind. Program ten musi być uruchomiony przez cały czas, to znaczy powinien zawsze pojawiać się w liście procesów. Jest to proces-demon i musi być startowany z plików startowych systemu (np. /etc/init.d/nis, /sbin/init.d/ypclient, /etc/rc.local, /etc/rc.d/init.d/ypbind). Jak tylko ypbind jest uruchomiony, twój komputer staje się klientem NIS. W drugim przypadku, jeśli nie masz serwerów NIS, to będziesz także potrzebował programu serwera NIS (zwykle zwanego ypserv). Sekcja ``Konfiguracja serwera NIS'' opisuje jak ustawić serwer NIS na twojej maszynie Linux-owej przy pomocy implementacji "ypserv" Petera Erikssona i Thorstena Kukuka. Zauważ, że od wersji 0.14 implementacja ta obsługuje koncept master- slave omówiony w sekcji 4.1. Jest jeszcze jeden darmowy serwer NIS, zwany "yps", napisany przez Tobiasa Rebera w Niemczech, który obsługuje koncept master-slave, ale ma inne ograniczenia i nie jest wspierany od długiego czasu. 66..22.. OOpprrooggrraammoowwaanniiee.. Biblioteka systemowa "/usr/lib/libc.a" (wersja 4.4.2 i nowsza) czy biblioteka dzielona "/lib/libc.so.x" zawierają wszystkie odwołania systemowe niezbędne do skompilowania oprogramowania klienta i serwera NIS. Do biblioteki glibc 2.x, potrzebujesz także biblioteki /lib/libnsl.so.1. Niektórzy podawali, że NIS działa tylko z "/usr/lib/libc.a" w wersji 4.5.21 i nowszej, więc jeśli chcesz być zabezpieczony, to nie używaj starszych bibliotek. Oprogramowanie klienckie NIS można znaleźć w: Adres Katalog Nazwa Pliku ftp.kernel.org /pub/linux/utils/net/NIS yp-tools-2.2.tar.gz ftp.kernel.org /pub/linux/utils/net/NIS ypbind-mt-1.4.tar.gz ftp.kernel.org /pub/linux/utils/net/NIS ypbind-3.3.tar.gz ftp.kernel.org /pub/linux/utils/net/NIS ypbind-3.3-glibc5.diff.gz ftp.uni-paderborn.de /linux/local/yp yp-clients-2.2.tar.gz ftp.icm.edu.pl /pub/Linux/sunsite/system/network/admin yp-clients-2.2.tar.gz [Od tłumacza: Jeśli jesteś w Polsce, to użyj raczej tego ostatniego adresu.] Jak już masz oprogramowanie, postępuj zgodnie z instrukcjami przychodzącymi wraz z nim. yp-clients 2.2 nadaje się do użytku z libc4 i libc5 aż do 5.4.20. libc 5.4.21 i glibc 2.x potrzebują yp-tools 1.4.1 lub nowsze. Nowe yp-tools 2.0 będą działąć z każdą biblioteką libc dla Linux-a. Ponieważ był pewien błąd w kodzie NIS-a nie powinieneś używać libc 5.4.21-35. W zamian użyj 5.4.36 lub nowszej, inaczej większość programów YP nie będzie działała. ypbind 3.3 będzie działać także ze wszystkimi bibliotekami. Jeśli używasz gcc 2.8.x lub nowszej wersji, egcs lub glibc 2.x, to powinieneś nałożyć łatę ypbind-3.3-glibc5.diff na ypbind 3.3. Nie powinieneś nigdy używać ypbind z yp-clients 2.2. ypbind-mt jest nowym, wielowątkowym demonem; do działania potrzebuje jądra w wersji 2.2 i glibc 2.1 lub nowszej. 66..33.. DDeemmoonn yyppbbiinndd.. Zakładając, że udało ci się skompilować oprogramowanie jesteś gotowy do zainstalowania go. Odpowiednim miejscem dla demona ypbind będzie /usr/sbin. Niektórzy mogą ci mówić, że nie potrzebujesz ypbind w systemie z NYS. Jest to błędne, gdyż ypwhich i ypcat potrzebują go. Będziesz to oczywiście musiał zrobić jako root. Inne programy (ypwhich, ypcat, yppoll, ypmatch) powinny znaleźć się w katalogu dostępnym dla wszystkich użytkowników, zwykle /usr/bin. Nowsze wersje ypbind posiadają plik konfiguracyjny - /etc/yp.conf. Możesz tam na stałe wpisać serwer NIS - więcej informacji w podręczniku systemowym - man ypbind(8). Potrzebujesz tego pliku także do NYS. Przykład: ypserver voyager ypserver defiant ypserver ds9 Jeśli system może rozwinąć nazwę bez NIS, to mógłbyś użyć tej nazwy. W przeciwnym wypadku musisz użyć adresu IP. W ypbind 3.3 jest błąd; tylko ostatni adres zostanie użyty (ds9 w tym przykładzie). Wszystkie pozostałe pozycje zostaną zignorowane. ypbind-mt obsłuży to poprawnie i użyje tego, który odpowiedział pierwszy. Dobrym pomysłem będzie przetestowanie ypbind przed wprowadzeniem go do plików startowych. Aby to zrobić postępuj tak: ˇ Upewnij się, że masz ustawioną nazwę domeny YP. Jeśli nie, to wydaj polecenie: /bin/domainname domena.nis gdzie domena.nis powinno być jakimś łańcuchem zwykle _NIE_ związanym z DNS-em twojej maszyny! Powodem tego jest, to że zewnętrznym włamywac­ zom jest wtedy trochę trudniej zdobyć bazę danych z hasłami z twojego serwera NIS. Jeśli nie wiesz jaka jest nazwa domeny NIS w twojej sieci, to zapytaj swojego administratora. ˇ uruchom "/usr/bin/portmap" jeśli nie jest jeszcze uruchomiony. ˇ stwórz katalog "/var/yp" jeśli go nie ma. ˇ uruchom "/usr/bin/ypbind" ˇ użyj polecenia "rpcinfo -p localhost", aby sprawdzić czy ypbind zarejestrował swój serwis u portmapper-a. Coś takiego powinno się pojawić na ekranie: program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 637 ypbind 100007 2 tcp 639 ypbind lub program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 758 ypbind 100007 1 udp 758 ypbind 100007 2 tcp 761 ypbind 100007 1 tcp 761 ypbind Zależnie od wersji ypbind jakiej używasz. ˇ możesz także uruchomić "rpcinfo -u localhost ypbind". Polecenie to powinno dać mniej więcej taki wynik: program 100007 version 2 ready and waiting lub program 100007 version 1 ready and waiting program 100007 version 2 ready and waiting Wynik ten zależy od wersji ypbind, którą zainstalowałeś. Ważną wiadomością jest tutaj tylko "version 2". W tym momencie powinieneś móc używać programów klienckich NIS takich jak ypcat itp... Na przykład "ypcat passwd.byname" poda ci całą bazę danych NIS z hasłami. WAŻNE: Jeśli pominąłeś test, to upewnij się, że ustawiłeś nazwę domeny i stworzyłeś katalog /var/yp Ten katalog MUSI istnieć, aby ypbind poprawnie się uruchomił. Aby sprawdzić czy nazwa domeny została ustawiona poprawnie użyj programu /bin/ypdomainname z pakietu yp-tools 2.2. Używa on funkcji yp_get_default_domain(), która jest bardziej restrykcyjna. na przykład nie pozwala na domenę "(none)", która jest domyślną w Linux-ie. i stwarza wiele kłopotów. Jeśli test się powiódł możesz teraż zmodyfikować pliki w skryptach startowych twojego systemu, tak żeby ypbind startował podczas startu systemu. Upewnij się, że nazwa domeny zostanie ustawiona zanim wystartujesz ypbind. Cóż, to wszystko. Zresetuj komputer i obserwuj komunikaty podczas startu, żeby zobaczyć czy ypbind właściwie wystartował. 66..44.. UUssttaawwiiaanniiee kkiilleennttaa NNIISS pprrzzyy uużżyycciiuu TTrraaddyyccyyjjnneeggoo NNIISS--aa.. Do sprawdzania nazw musisz ustawić (albo dodać) "nis", do linii kolejności sprawdzania w pliku /etc/host.conf. Przeczytaj stronę podręcznika systemowego "resolv+.8", aby dowiedzieć się więcej szczegółów. Na maszynach klienckich dodaj następującą linię w /etc/passwd: +:::::: Możesz także użyć znaczków +/-, aby włączyć/wyłączyć lub zmienić użytkowników. Jeśli chcesz wyłączyć użytkownika guest dodaj -guest do swojego pliku /etc/passwd. Chcesz użyć innej powłoki (np. ksh) dla użytkownika "linux"? Nie ma problemu, po prostu dodaj do swojego /etc/passwd "+linux::::::/bin/ksh" (bez cudzysłowiów). Pola, których nie chcesz zmieniać muszą pozostać puste. Mógłbyś także użyć Netgroups do kontroli użytkowników. Na przykład, aby pozwolić tylko miquels, dth, ed i wszystkim członkom grupy sieciowej sysadmin na login, ale żeby dane o kontach wszystkich innych użytkowników były dostępne użyj: +miquels::::::: +ed::::::: +dth::::::: +@sysadmins::::::: -ftp +:*::::::/etc/NoShell Zauważ, że na Linuksie możesz także zmienić pole z hasłem, jak to zrobiliśmy w tym przykładzie. Usunęliśmy także login "ftp", tak więc nie jest on już znany i anonimowe ftp nie będzie działać. Netgroup wyglądałoby tak: sysadmins (-,software,) (-,kukuk,) WAŻNE: Cecha netgroup jest zaimplementowana począwszy od libc 4.5.26. Jeśli masz wersję biblioteki wcześniejszą niż 4.5.26, każdy użytkownik w bazie danych z hasłami ma dostęp do twojego Linux-a jeśli masz uruchomiony "ypbind". 66..55.. UUssttaawwiiaanniiee kklliieennttaa NNIISS uużżyywwaajjąącc NNYYSS.. Wszystko co jest potrzebne, to to, żeby plik konfiguracyjny (/etc/yp.conf) wskazywał na poprawn-y/e serwer(y). Także plik konfiguracyjny Name Service Switch (/etc/nsswitch.conf) musi być poprawnie ustawiony. Powinieneś zainstalować ypbind. Nie jest on potrzebny dla libc, ale narzędzia NIS(YP) go potrzebują. Jeśli chcesz używać cechy włączania/wyłączania użytkownika (+/-guest/+@admins), musisz użyć "passwd: compat" i "group: compat" w pliku nsswitch.conf. W tym przypadku musisz użyć "shadow: files nis" Źródła NYS są częścią źródeł libc 5. Kiedy uruchamiasz configure, za pierwszym razem odpowiedz "NO" na pytanie "Values correct", potem odpowiedz "YES", na "Build a NYS libc from nys". 66..66.. UUssttaawwiiaanniiee kklliieennttaa NNIISS uużżyywwaajjąącc gglliibbcc 22..xx Glibc używa "tradycyjnego NIS", tak więc musisz uruchomić ypbind. Plik konfiguracyjny Name Service Switch (/etc/nsswitch.conf) musi być poprawnie ustawiony. Jeśli używasz trybu kompatybilnego z passwd, shadow czy group, musisz dodać "+" na końcu tego pliku, i możesz używać cechy włączania/wyłączania użytkownika. Konfiguracja jest dokładnie taka sama jak pod Solaris-em 2.x. 66..77.. PPlliikk nnsssswwiittcchh..ccoonnff Plik /etc/nsswitch.conf określa kolejność w jakiej odbywa się sprawdzanie kiedy pojawi się żądanie pewnej informacji, tak samo jak plik /etc/host.conf, który określa kolejność sprawdzania adresów hostów. Na przykład linia: hosts: files nis dns określa, że funkcje sprawdzania adresów hostów powinny najpierw szukać w lokalnym pliku /etc/hosts, potem w bazie NIS i na końcu w DNS-ie (/etc/resolv.conf i named), gdzie jeśli nie znaleziono odpowiedzi pojawia się błąd. Ten plik musi być czytelny dla każdego użytkownika. Więcej informacji znajdziesz na stronie podręcznika systemowego nsswicth.5 lub nsswitch.conf.5. Poprawny plik /etc/nsswitch.conf dla NIS: # # /etc/nsswitch.conf # # An example Name Service Switch config file. This file should be # sorted with the most-used services at the beginning. # # Pozycja '[NOTFOUND=return]' oznacza, że poszukiwania powinny # zakończyć się, jeśli poszukiwania w poprzedniej pozycji nic nie # dały. Zauważ, że jeśli poszukiwania nie powiodły się z # jakichś innych powodów (jak nie odpowiadający serwer NIS), to # poszukiwania są kontynuowane z następną pozycją. # # Poprawne pozycje to: # # nisplus Use NIS+ (NIS version 3) # nis Use NIS (NIS version 2), also called YP # dns Use DNS (Domain Name Service) # files Use the local files # db Use the /var/db databases # [NOTFOUND=return] Stop searching if not found so far # passwd: compat group: compat # Jeśli masz libc5 musisz użyć shadow: files nis shadow: compat passwd_compat: nis group_compat: nis shadow_compat: nis hosts: nis files dns services: nis [NOTFOUND=return] files networks: nis [NOTFOUND=return] files protocols: nis [NOTFOUND=return] files rpc: nis [NOTFOUND=return] files ethers: nis [NOTFOUND=return] files netmasks: nis [NOTFOUND=return] files netgroup: nis bootparams: nis [NOTFOUND=return] files publickey: nis [NOTFOUND=return] files automount: files aliases: nis [NOTFOUND=return] files passwd_compat, group_compat i shadow_compat są obsługiwane tylko przez glibc 2.x. Jeśli nie ma zasad (rules) shadow w /etc/nsswitch.conf, glibc użyje zasady (rule) passwd do sprawdzenia. Jest więcej modułów szukania dla glibc jak hesoid. Więcej informacji znajdziesz w dokumentacji glibc. 66..88.. SShhaaddooww PPaasssswwoorrddss zz NNIISS ii PPAAMM.. Shadow passwords przez NIS to zawsze zły pomysł. Straciłeś ochronę, którą daje shadow passwords i tylko niewiele bibliotek C ma obsługę takiej kombinacji. Dobrym pomysłem na uniknięcie przesyłania shadow paswords przez NIS jest umieścić tylko użytkowników lokalnego systemu do pliku /etc/shadow. Usuń pozycje dotyczące użytkowników NIS z bazy shadow i umieść hasło spowrotem w passwd. Tak że możesz używać shadow dla logowania się jako root i normalnych haseł dla użytkowników NIS. Ma to tę zaletę, że będzie to działało z każdym klientem NIS. 66..88..11.. LLiinnuuxx Jedyną biblioteką jaka obsługuja kombinację Shadow passwords prze NIS jest libc 2.x. Libc5 nie potrafi tego obsłużyć. Libc5 skompilowana z obsługą NYS posiada trochę kodu na ten temat. Jednak kod ten jest miernej wartości i nie działa poprawnie z wszystkimi pozycjami shadow. 66..88..22.. SSoollaarriiss Solaris nie obsługuje takiej kombinacji w ogóle. 66..88..33.. PPAAMM PAM nie obsługuje Shadow Passwords przez NIS,a szczególnie pam_pwdb/libpwdb. Jest to poważny problem dla użytkowników RedHat 5.x. Jeśli masz glibc i PAM, to musisz zmienić pozycje w plikach /etc/pam.d/*. Zamień wszystkie zasady dotyczące pam_pwdb na moduły pam_unix_*. Z powodu błędu w module pam_unix_auth.so nie będzie on zawsze działał. Przykładowy plik /etc/pam.d/login może wyglądać tak: #%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_unix_auth.so auth required /lib/security/pam_nologin.so account required /lib/security/pam_unix_acct.so password required /lib/security/pam_unix_passwd.so session required /lib/security/pam_unix_session.so Do autoryzacji potrzbujesz modułu pam_unix_auth.so, do kont pam_unix_acct.so, do haseł pam_unix_passwd.so a do sesji pam_unix_session.so. 77.. CCzzeeggoo ppoottrrzzeebbuujjeesszz ddoo uussttaawwiieenniiaa NNIISS++?? 77..11.. OOpprrooggrraammoowwaanniiee.. Klient dla NIS+ na Linuxa został napisany dla biblioteki GNU C 2. Jest także wersja dla libc5, ponieważ większość komercyjnych aplikacji jest z nią skompilowane i nie można ich przekompilować z biblioteką glibc. Z biblioteką tą i NIS+ są problemy: Nie mógłbyś dołączyć statycznie tej biblioteki do programów i programy skompilowane z tą biblioteką nie będą działały z inną. Musisz ściągnąć i skompilować najnowszą bibliotekę GNU C 2.1 dla platformy Intela albo biblioteki GNU C 2.1.1 dla platform 64-bitowych. Potrzebujesz także systemu opartego na glibc jak RedHat 5.x, Debian 2.x czy SuSE Linux 6.x. W każdej dystrybucji musisz przekompilować kompilator gcc/g++, libstdc++ i ncurses. W RedHat musisz wiele zmienić w konfiguracji PAM. W SuSE 6.0 musisz przekompilować pakiet Shadow Passwords. Oprogramowanie klienckie NIS+ można pobrać z: Adres Katalog Nazwa Pliku ftp.funet.fi /pub/gnu/funet libc-*, glibc-crypt-*, glibc-linuxthreads-* ftp.kernel.org /pub/linux/utils/net/NIS+ nis-utils-19990223.tar.gz ftp.kernel.org /pub/linux/utils/net/NIS+ pam_keylogin-1.2.tar.gz Dystrybucje oparte na glibc można ściągnąć z: Adres Katalog ftp.redhat.com /pub/redaht/redhat-5.2 ftp.debian.org /pub/debian/dists/stable ftp.icm.edu.pl /pub/Linux/redhat ftp.icm.edu.pl /pub/Linux/debian [Od tłumacza: Jeśli jesteś w Polsce, to użyj dwóch ostatnich adresów.] Aby skompilować bibliotekę GNU C postępuj zgodnie z instrukcjami dołączonymi do niej. Tutaj możesz znaleźć załataną libc5, opartą o źródła NYS i glibc zamiast standardowej libc5: Adres Katalog Nazwa Pliku ftp.kernel.org /pub/linux/utils/net/NIS+ libc-5.4.44-nsl-0.4.10.tar.gz Powinieneś także zajrzeć do http://www.suse.de/~kukuk/linux/nisplus.html <http://www.suse.de/~kukuk/linux/nisplus.html>, aby zdobyć więcej informacji i najnowsze źródła. 77..22.. KKoonnffiigguurraaccjjaa kklliieennttaa NNIISS++.. WAŻNE: Aby ustawić klienta NIS+, przeczytaj dokumenctaję do NIS+ na Solaris-a, aby się dowiedzieć co zrobić po stronie serwera ! Dokument ten opisuje tylko co zrobić po stronie klienta ! Po zainstalowaniu nowej biblioteki libc i nis-tools stwórz listy uwierzytelniające dla nowego klienta na serwerze NIS+. Upewnij się, że działa portmap. Potem sprawdź czy na twoim Linux-ie jest ten sam czas co na serwerze. W bezpiecznym RPC masz tylko 3 minuty, w ciągu których listy uwierzytelniające są aktualne. Dobrym pomysłem jest uruchomienie na wszystkich hostach xntpd. Potem uruchom domainname domena.nisplus nisinit -c -H <serwer NIS+> aby zainicjalizować zimny start file. Przeczytaj stronę podręcznika systemowego o nisinit i znajdź jego opcje. Upewnij się, że nazwa domeny będzie zawsze ustawiona po resecie. Jeśli nie wiesz jaka jest nazwa domeny w twojej sieci, zapytaj administratora. Teraz powinieneś zmienić swój plik konfiguracyjny /etc/nsswitch.conf. Upewnij się, że jedynym serwisem po publickey jest nisplus ("publickey: nisplus") i nic więcej ! Potem uruchom keyserv i upewnij się, że zawsze będzie startowany jako następy demon po portmaperze podczas startu. Uruchom: keylogin -r aby zapisać tajny klucz (secretkey) root-a na twoim systemie. (Mam nadzieję, że dodałeś klucz publiczny dla nowego hosta na serwerze NIS+?). "niscat passwd.org_dir" powinno pokazać ci teraz wszystkie pozycje w bazie danych z hasłami. 77..33.. NNIISS++,, kkeeyyllooggiinn,, llooggiinn ii PPAAMM.. Kiedy użytkownik się loguje musi ustawić swój tajny klucz dla keyserv- a. Robi się to przez wywołanie "keylogin". Login z pakietu shadow zrobi to za użytkownika jeśli został skompilowany z biblioteką glibc 2.1. W przypadku login-u PAM musisz zainstalować pam_keylogin-1.2.tar.gz i zmodyfikować plik /etc/pam.d/login, tak aby używał pam_unix_auth, a nie pwdb, które nie obsługuje NIS+. Na przykład: #%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_keylogin.so auth required /lib/security/pam_unix_auth.so auth required /lib/security/pam_nologin.so account required /lib/security/pam_unix_acct.so password required /lib/security/pam_unix_passwd.so session required /lib/security/pam_unix_session.so 77..44.. PPlliikk nnsssswwiittcchh..ccoonnff.. Plik /etc/nsswitch.conf określa kolejność w jakiej odbywa się sprawdzanie kiedy pojawi się żądanie pewnej informacji, tak samo jak plik /etc/host.conf, który określa kolejność sprawdzania adresów hostów. Na przykład linia: hosts: files nis dns określa, że funkcje sprawdzania adresów hostów powinny najpierw szukać w lokalnym pliku /etc/hosts, potem w bazie NIS i na końcu w DNS-ie (/etc/resolv.conf i named), gdzie jeśli nie znaleziono odpowiedzi, to zwracany jest błąd. Poprawny plik /etc/nsswitch.conf dla NIS: # # /etc/nsswitch.conf # # An example Name Service Switch config file. This file should be # sorted with the most-used services at the beginning. # # Pozycja '[NOTFOUND=return]' oznacza, że poszukiwania powinny # zakończyć się, jeśli poszukiwania w poprzedniej pozcyji nic nie # dały. Zauważ, że jeśli poszukiwania nie powiodły się z # jakichś innych powodów (jak nie odpowiadający serwer NIS), to # poszukiwania są kontynuowane z następną pozycją. # # Poprawne pozycje to: # # nisplus Use NIS+ (NIS version 3) # nis Use NIS (NIS version 2), also called YP # dns Use DNS (Domain Name Service) # files Use the local files # db Use the /var/db databases # [NOTFOUND=return] Stop searching if not found so far # passwd: compat # dla libc5: passwd: files nisplus group: compat # dla libc5: group: files nisplus shadow: compat # dla libc5: shadow: files nisplus passwd_compat: nisplus group_compat: nisplus shadow_compat: nisplus hosts: nisplus files dns services: nisplus [NOTFOUND=return] files networks: nisplus [NOTFOUND=return] files protocols: nisplus [NOTFOUND=return] files rpc: nisplus [NOTFOUND=return] files ethers: nisplus [NOTFOUND=return] files netmasks: nisplus [NOTFOUND=return] files netgroup: nisplus bootparams: nisplus [NOTFOUND=return] files publickey: nisplus [NOTFOUND=return] files automount: files aliases: nisplus [NOTFOUND=return] files 88.. KKoonnffiigguurraaccjjaa sseerrwweerraa NNIISS.. 88..11.. PPrrooggrraamm yyppsseerrvv.. Dokument ten opisuje tylko jak skonfigurować serwer NIS oparty na "ypserv". Oprogramowanie serwera NIS można znaleźć na: Adres Katatlog Nazwa pliku ftp.kernel.org /pub/linux/utils/net/NIS ypserv-1.3.6.tar.gz Możesz także zajrzeć do http://www.suse.de/~kukuk/linux/nis.html <http://www.suse.de/~kukuk/linux/nis.html> po więcej informacji i najnowsze źródła. Ustawianie serwera jest takie samo dla tradycyjnego NIS i NYS. Skompiluj oprogramowanie, aby wygenerować programy "ypserv" i "makedbm". Możesz skonfigurować program ypserv, aby używał pliku securenets albo tcp_wrappers. Tcp_wrappers sa o wiele bardziej elastyczne, ale wielu ludzi ma z tym poważne kłopoty. A niektóre pliki konfiguracyjne mogą powodować przeciek w pamięci (?? memory leak: może autor miał na myśli brak pamięci ?? - lack of memory). Jeśli masz problemy z ypserv skompilowanym dla tcp_wrappers, to przekompiluj go do używania pliku securenets. ypserv --version, pokaże jaką masz wersję. Jeśli uruchamiasz swój serwer jako główny, określ jakie pliki mają być dostępne przez NIS i wtedy dodaj lub usuń odpowiednie pozycje w /var/yp/Makefile. Zawsze powinieneś zaglądać do plików Makefile i zapoznać się z opcjami na początku pliku. Pomiędzy ypserv 1.1 a 1.2 była jedna duża zmiana. Od wersji 1.2, ypserv "keszuje" uchwyty plików (file handles). Oznacza to, że zawsze kiedy stworzysz nową mapę musisz wywołać makedbm z opcją -c. Upewnij się, że używasz nowego /var/yp/Makefile z ypserv 1.2 lub nowszego, albo dodaj opcję -c do makedbm w pliku Makefile. Jeśli tego nie zrobisz, ypserv będzie wciąż używał starych map zamiast uaktualnionych. Teraz zmodyfikuj /var/yp/securenets i /etc/ypserv.conf. Więcej informacji na stronach podręcznika man o ypserv(8) i ypserv.conf(5). Upewnij się czy portmapper (portmap(8)) jest uruchomiony i uruchom serwer ypserv. Polecenie: % rpcinfo -u localhost ypserv powinno pokazać coś takiego: program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting Linii z "version 1" może nie być; zależnie od wersji ypserv i konfiguracji, której używasz. Tylko w klientach SunOS 4.x jest to wymagane. Teraz wygeneruj bazę danych NIS (YP). Na serwerze głównym uruchom: % /usr/lib/yp/ypinit -m na slave upewnij się, że działa ypwhich -m. Potem uruchom % /usr/lib/yp/ypinit -s masterhost To wszystko, twój serwer już działa. Jeśli masz większe problemy, możesz wystartować ypserv i ypbind i trybie śledzenia (debug) w innym oknie. Komunikaty pojawiające się w tym trybie powinny ci powiedzieć co jest nie tak. Jeśli musisz uaktualnić mapę, to uruchom make w katalogu /var/yp na master serwerze NIS. Uaktualni to mapę jeśli plik źródłowy jest nowszy i prześle pliki do serwerów slave. Nie używaj ypinit do uaktualniania map. Możesz zmodyfikować crontab root-a *na serwerze slave* i dodać poniższe linie: 20 * * * * /usr/lib/yp/ypxfr_1perhour 40 6 * * * /usr/lib/yp/ypxfr_1perday 55 6,18 * * * /usr/lib/yp/ypxfr_2perday To upewni nas, że mapy NIS są aktualne, nawet jeśli jakieś uaktualnienie zostało przeoczone z powodu np. wyłączenia serwera slave podczas modyfikowania bazy głównej. Serwer slave możesz dodać kiedykolwiek później. Najpierw upewnij się, że nowy serwer slave ma pozwolenie na kontaktowanie się z masterem NIS. Potem uruchom % /usr/lib/yp/ypinit -s masterhost na nowym slavie. Na serwerze master dodaj nazwę nowego serwera slave do pliku /var/yp/ypservers uruchom make w </var/yp, aby uaktualnić mapy. Jeśli chcesz ograniczyć dostęp do twojego serwera NIS będziesz musiał ustawić serwer NIS także jako klienta przez uruchomienie ypbind i dodanie pozycji + do /etc/passwd _w połowie_ (halfway) pliku z hasłami. Funkcje biblioteczne zignorują wszystkie normalne pozycje po pierwszej pozycji NIS i i resztę informacji zdobędą przez NIS.W ten sposób obsługiwany jest dostęp NIS. Przykład: root:x:0:0:root:/root:/bin/bash daemon:*:1:1:daemon:/usr/sbin: bin:*:2:2:bin:/bin: sys:*:3:3:sys:/dev: sync:*:4:100:sync:/bin:/bin/sync games:*:5:100:games:/usr/games: man:*:6:100:man:/var/catman: lp:*:7:7:lp:/var/spool/lpd: mail:*:8:8:mail:/var/spool/mail: news:*:9:9:news:/var/spool/news: uucp:*:10:50:uucp:/var/spool/uucp: nobody:*:65534:65534:noone at all,,,,:/dev/null: +miquels:::::: +:*:::::/etc/NoShell [ PO tej linii normalni użytkownicy ! ] tester:*:299:10:Just a test account:/tmp: miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh Użytkownik tester będzie istniał, ale będzie miał ustawioną powłokę na /etc/NoShell. miquels będzie miał normalny dostęp. Alternatywnie mógłbyś zmodyfikować plik /var/yp/Makefile i ustawić NIS, tak żeby używał innego źródłowego pliku z hasłami. W dużych systemach NIS-owe pliki z hasłami i grupami znajdują się zwykle w /etc/yp/. Jeśli tak zrobisz, to zwykłe narzędzia jak passwd, chfn, adduser nie będą już działać i będziesz potrzebował specjalnych własnoręcznie zrobionych wersji. Chociaż yppsswd, ypchsh i ypchfn będą oczywiście działać. 88..22.. PPrrooggrraamm sseerrwweerraa yyppss.. Aby ustawić serwer NIS "yps" przeczytaj poprzedni paragraf. Ustawianie serwera "yps" jest podobne, _ale_ nie dokładnie takie samo, więc uważaj jak będziesz stosował instrukcje dla "ypserv-a" do "yps" ! "yps" nie jest wspierany przez żadnego autora i zawiera parę dziur w bezpieczeństwie. Na prawdę nie powinieneś go używać ! Oprogramowane do serwera NIS "yps" można znaleźć na: Adres Katalog Nazwa pliku ftp.lysator.liu.se /pub/NYS/servers yps-0.21.tar.gz ftp.kernel.org /pub/linux/utils/net/NIS yps-0.21.tar.gz 88..33.. PPrrooggrraamm rrppcc..yyppxxffrrdd Program rpc.ypxfrd służy do przyspieszania przesyłu bardzo dużych map z serwera master na slave. Jeśli serwer NIS slave otrzyma informacje, że jest nowa mapa wystartuje program ypxfr, aby ją pobrać. ypxfr przeczyta zawartość mapy z serwera master przy pomocy funkcji yp_all(). Proces ten może zająć do kilku minut jeśli są bardzo duże mapy, które muszą być zapisane przez biblioteki bazy danych. Program rpc.ypxfrd przyspiesza proces pobrania przez pozwolenie serwerowi slave na skopiowanie mapy serwera master zamiast tworzenia jej od nowa. rpc.ypxfrd używa protokołu do przesyłu plików na podstawie RPC, tak że nie ma potrzby na tworzenie nowej mapy. rpc.ypxfrd może być uruchomiony przez inetd. Ale ponieważ startuje bardzo wolno, powinien byc startowany przez ypserv. Musisz wystartować rpc.ypxfrd tyko na serwerze NIS master. 88..44.. PPrrooggrraamm rrppcc..yyppppaasssswwdddd Kiedy użytkownicy zmieniają swoje hasła, baza danych NIS z hasłami i przypuszczalnie inne bazy danych NIS, które zależą od bazy danych z hasłami, powinny być uaktualnione. Program "rpc.yppasswdd" jest serwerem, który odpowiedzialny jest za zmiany haseł i uaktualnianie baz danych NIS. rpc.yppasswdd jest zintegrowany z ypserv. Nie potrzebujesz starszych oddzielnych yppasswd-0.9.tar.gz czy yppasswd-0.10.tar.gz i nie powinieneś ich już używać. rpc.yppasswdd z ypserv 1.3.2 ma pełną obsługę shadow. yppasswd jest teraz częścią yp- tool-.2.2.tar.gz. Musisz uruchomić rpc.yppaswdd tylko na serwerze NIS master. Domyślnie użytkownicy nie mają prawa zmieniać swoich "pełnych nazw" czy powłoki. Możesz na to pozwolić opcją -e chfn czy -e chsh. Jeśli twoje pliki passwd i shadow nie są umieszczone w innym katalogu niż /etc, musisz dodać opcję -D. Na przykład jeśli umieściłeś wszystkie pliki źródłowe w /etc/yp i chcesz udostępnić swoim użytkownikom możliwość zmiany powłoki, musisz uruchomić rpc.yppasswdd z następującymi parametrami: rpc.yppasswdd -D /etc/yp -e chsh lub rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh Nic więcej do zrobienia już nie zostało. Musisz się tylko upewnić, że rpc.yppasswdd używa tych samych plików co /var/yp/Makefile. Błędy będą logowane za pomocą syslog. 99.. WWeerryyffiikkaaccjjaa iinnssttaallaaccjjii NNIISS//NNYYSS.. Jeśli wszystko jest w porządku (jak powinno być), powinieneś móc zwersyfikować instalację kilkoma prostymi poleceniami. Zakładając na przykład, że twój plik z hsłami jest dostarczany prze NIS, polecenie % ypcat passwd powinno pokazać ci zawartość pliku z hasłami z NIS. Polecenie % ypmatch userid passwd (gdzie userid jest login-em jakiegoś użytkownika) powinno pokazać ci pozycję w pliku z hasłami dotyczącą tego użytkownika. Programy "ypcat" i "ypmatch" powinny być zawarte w dystrybucji NIS lub NYS. Jeśli użytkownik nie może sie zalogować, uruchom następujący program po stronie klienta: #include <stdio.h> #include <pwd.h> #include <sys/types.h> int main(int argc, char *argv[]) { struct passwd *pwd; if(argc != 2) { fprintf(stderr,"Stosowanie: getwpnam nazwa-uzytkownika\n"); exit(1); } pwd=getpwnam(argv[1]); if(pwd != NULL) { printf("name.....: [%s]\n",pwd->pw_name); printf("password.: [%s]\n",pwd->pw_passwd); printf("user id..: [%d]\n", pwd->pw_uid); printf("group id.: [%d]\n",pwd->pw_gid); printf("gecos....: [%s]\n",pwd->pw_gecos); printf("directory: [%s]\n",pwd->pw_dir); printf("shell....: [%s]\n",pwd->pw_shell); } else fprintf(stderr,"Nie znaleziono uzytkownika \"%s\"!\n",argv[1]); exit(0); } Uruchomienie tego programu z użytkownikiem jako parametr, spowoduje wyświetlenie wszystkich informacji jakie uzyska funkcja getpwnam dla tego użytkownika. Powinno ci to pokazać, która pozycja jest niepoprawna. Najpopularniejszym problemem jest zapisanie "*" w polu hasła. Razem z biblioteką GNU C 2.1 (glibc 2.1) dostarczane jest narzędzie getent. Użyj tego programu zamiast powyższego na systemie z tą biblioteką. Możesz spróbować: getent passwd lub getent passwd login 1100.. PPooppuullaarrnnee pprroobblleemmyy ii rroozzwwiiąązzyywwaanniiee iicchh.. 1. Biblioteki do 4.5.19 są niepoprawne. NIS nie będzie z nimi współpracował. 2. Jeśli uaktualnisz biblioteki z 4.5.19 na 4.5.24, to polecenie su nie działa. Potrzebujesz tego polecenia ze Slackware 1.2.0. Przypadkowo tam możesz znaleźć uaktulanione biblioteki. 3. Kiedy serwer NIS się wyłączy i potem uruchomi ponownie ypbind zaczyna wypisywać coś takiego: yp_match: clnt_call: RPC: Unable to receive; errno = Connection refused i użytkownicy zarejestrowani w bazie danych NIS nie mogą się zalo­ gować. Spróbuj zalogować się jako root i zakończ ypbind i uruchom go ponownie. Uaktualnienie do ypbind 3.3 lub nowszego także powinno pomóc. 4. Po uaktualnieniu libc do wersji nowszej niż 5.4.20, narzędzia YP nie będą działać. Potrzebujesz w takim przypadku yp-tools w wersji 1.2 lub nowszej dla libc >= 5.4.21 i glibc 2.x. Dla wcześniejszych wersji libc potrzbujesz yp-clients 2.2. yp-tools 2.x powinny działać ze wszystkimi bibliotekami. 5. W libc 5.4.21-35 yp_maplist jest popsute, potrzbujesz 5.4.36 lub nowszej wersji, albo niektóre programy z YP jak np. ypwich będą przerywać działanie z błędem _S_e_g_m_e_n_t_a_t_i_o_n _f_a_u_l_t. 6. libc 5 z tradycyjnym NIS nie obsługuje shadow passwords przez NSI. Potrzebujesz libc5 + NYS lub glibc 2.x 7. ypcat shadow nie pokazuje mapy shadow. Jest to poprawne - nazwa mapy shadow to _s_h_a_d_o_w_._b_y_n_a_m_e a nie _s_h_a_d_o_w. 8. Solaris nie zawsze używa uprzywilejowanych portów. Więc staraj się nie robić nic z hasłami jeśli masz klienta na Solarisie. 1111.. CCzzęęssttoo zzaaddaawwaannee ppyyttaanniiaa.. Na większość twoich pytań powinieneś już uzyskać odpowiedź. Jeśli wciąż masz jakieś pytania bez odpowiedzi to możesz wysłać list na grupę comp.os.linux.networking albo na którąś z polskich grup pl.comp.security lub pl.comp.os.linux lub pl.comp.os.linux.siec(i) Albo skontaktuj się z którymś z autorów tego HOWTO. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/PCMCIA-HOWTO.pl.txt����������������������������������������������������0100664�0001750�0001750�00000305341�06717116340�017411� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Opis sterowników do PCMCIA Autor: David Hinds, dhinds@hyper.stanford.edu v1.105, 9 Września 1997 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v2.0, 13 Grudnia 1997 Dokument ten opisuje jak zainstalować i używać Card Services PCMCIA w Linux-ie oraz odpowiada na niektóre często zadawane pytania. Najnowszą wersję oryginału tego dokumentu można zawsze znaleźć pod adresem hyper.stanford.edu. Wersja HTML znajduje się pod adresem hyper.stanford.edu/HyperNews/get/pcmcia/home.html <http://hyper.stan­ ford.edu/HyperNews/get/pcmcia/home.html> Dokument ten został napisany w standardzie ISO-8859-2. Nowsza wersja zawiera uaktulanione wskaza­ nia na katalog zawierający jądro na ftp.icm.edu.pl. Kolejna wersja jest uaktualnieniem do obecnej wersji oryginału. ______________________________________________________________________ Table of Contents: 1. Informacje ogólne i wymagania sprzętowe. 1.1. Wprowadzenie. 1.2. Prawa autorskie i Disclaimer. 1.3. Jaka jest najnowsza wersja i skąd mogę ją wziąć ? 1.4. Jakie systemy są obsługiwane ? 1.5. Jakie karty PCMCIA są obsługiwane? 1.6. Kiedy moja nowa karta będzie obsługiwana ? 1.7. Listy dyskusyjne. 2. Kompilacja, instalacja i konfiguracja. 2.1. Wymagania i ustawienia jądra. 2.2. Instalacja. 2.3. Post-instalacja dla systemów używających skryptów inicjacyjnych a'la BSD. 2.4. Post-instalacja dla systemów używających skryptów inicjacyjnych a'la SYS V. 2.5. Opcje konfiguracji specyficzne dla danego systemu. 2.6. Problemy podczas ładowania modułów jądra. 2.7. Problemy z przerwaniem zmiany statusu karty. 2.8. Problemy z identyfikacją karty. 2.9. Dlaczego nie dystrybujesz binariów do PCMCIA ? 2.10. Dlaczego ten pakiet jest taki wielki ? 3. Stosowanie i zalety. 3.1. Narzędzia do monitorowania urządzeń PCMCIA. 3.2. Przegląd skryptów konfiguracyjnych PCMCIA. 3.3. Adaptery sieciowe PCMCIA. 3.3.1. Wybór transceiver-a. 3.3.2. Komentarze na temat konkretnych kart. 3.3.3. Diagnozowanie problemów z kartami sieciowymi. 3.4. Urządzenia szeregowe i modemy PCMCIA. 3.4.1. Diagnozowanie problemów z urządzeniami szeregowymi. 3.5. Adaptery PCMCIA SCSI. 3.5.1. Diagnozowanie problemów z kartami SCSI. 3.6. Karty pamięci PCMCIA. 3.6.1. Używanie kart pamięci "flash". 3.7. Karty PCMCIA napędów ATA/IDE. 3.7.1. Diagnozowanie problemów z adapterami ATA/IDE. 3.8. Karty wielofunkcyjne. 3.9. Kiedy można bezpiecznie włożyć albo wyjąć kartę PCMCIA ? 3.10. Card Services i Advanced Power Management. 3.11. Jak mam wyłączyć kartę PCMCIA bez wyjmowania jej ? 3.12. Jak usuwam sterowniki PCMCIA z pamięci ? 4. Zaawansowane tematy. 4.1. Alokoacja zasobów dla urządzeń PCMCIA. 4.2. Jak zrobić dwie różne konfiguracje urządzeń do domu i pracy ? 4.3. Startowanie z urządzenia PCMCIA. 4.3.1. Skrypt-pomocnik pcinitrd. 4.3.2. Tworzenie dyskietki startowej z initrd. 4.3.3. Instalacja obrazu initrd na napędach bez Linux-a. 5. Jak radzić sobie z nieobsługiwanymi kartami. 5.1. Konfiguracja nieobsługiwanych kart. 5.2. Jak mam dodać obsługę dla karty kompatybilnej z NE2000 ? 5.3. Interfejs PCMCIA do dyskietek. 5.4. Co jest z obsługą kart Xircom ? 6. Wskazówki do śledzenia (debugging) i informacje do programowania. 6.1. Jak mogę wysłać pomocny list o błędzie ? 6.2. Informacje na temat niskopoziomowego śledzenia PCMCIA. 6.3. Jak mam napisać sterownik Card Services dla nowej karty ? 6.4. Wskazówki dla autorów sterowników klientów PCMCIA. 6.5. Od tłumacza. ______________________________________________________________________ 11.. IInnffoorrmmaaccjjee ooggóóllnnee ii wwyymmaaggaanniiaa sspprrzzęęttoowwee.. 11..11.. WWpprroowwaaddzzeenniiee.. Card Services dla Linux-a to kompletny pakiet obsługujący PCMCIA. Zawiera on zestaw ładowalnych modułów jądra, które tworzą wersję aplikacji interfejsowych dla PCMCIA Card Services, zestaw sterowników klientów dla specyficznych kart, oraz demona-menedżera do kart, który może reagować na wkładanie kart i ich wyjmowanie poprzez ładowanie i usuwanie odpowiednich modułów. Obsługuje on także tzw. "gorące wymiany" kart PCMCIA, tak że karty mogą być wkładane i wyjmowane w każdej chwili. Oprogramowanie to jest w ciągłym rozwoju. Zawiera przypuszczalnie błędy i należy go używać ostrożnie. Zrobię co w mojej mocy, żeby poprawić błędy zgłaszane do mnie, ale jeśli nie powiesz mi o takim, to mogę się o nim nigdy nie dowiedzieć. Jeśli już użyjesz tego oprogramowania, mam nadzieję, że wyślesz mi swoje doświadczenia, złe czy dobre ! Jeśli masz jakieś sugestie na temat polepszenia tego dokumentu, daj mi znać dhinds@hyper.stanford.edu. 11..22.. PPrraawwaa aauuttoorrsskkiiee ii DDiissccllaaiimmeerr.. Copyright (c) 1996, 1997 David A. Hinds Dokument tez może być reprodukowany lub dystrybuowany bez mojej wyraźnej zgody. Wersje zmodyfikowane, włączając tłumaczenia na inne języki, mogą być wolno dystrybuowane, zakładając, że są jasno identyfikowane jako takie, i ta uwaga o prawach autorskich jest w nich zawarta. Dokument ten może być zawarty w dystrybucjach komercyjnych bez mojej wyraźnej zgody. Ponieważ nie jest to wymagane chciałbym być powiadomiony o takowych działaniach. Jeśli zamierzasz rozprowadzać ten dokument jako pracę wydawaną, skontaktuj się ze mną, aby upewnić się, że masz najnowszą wersję. Dokument ten jest rozprowadzany "takim jakim jest", bez wyraźnych czy wynikających gwarancji. Używaj informacji zawartych tutaj na swoje własne ryzyko. 11..33.. JJaakkaa jjeesstt nnaajjnnoowwsszzaa wweerrssjjaa ii sskkąądd mmooggęę jjąą wwzziiąąćć ?? Bieżącą główną wersją Card Services jest wersja 2.9, a pomniejsze uaktualnienia czy poprawki błędów są numerowane jako 2.9.1, 2.9.2 itd. Kod źródłowy najnowszej wersji jest dostępny pod adresem hyper.stanford.edu. Nazywa się _p_c_m_c_i_a_-_c_s_-_2_._9_._?_._t_a_r_._g_z. Będzie tam przeważnie kilka wersji. Z reguły trzymam najnowszą podwersję wersji głównej. Nowe wersje główne mogą zawierać względnie nieprzetestowany kod, tak więc trzymam także najnowszą wersję poprzedniej wersji głównej jako względną stabilną wersję, do której można się cofnąć; bieżącą taką wersją jest 2.8.23. To już zależy od ciebie czy zdecydujesz się na wersję najnowszą z 2.9.x czy na 2.8.23; w pliku _C_H_A_N_G_E_S znajdują się najważniejsze różnice. Adres hyper.stanford.edu jest mirrorowany pod adresem sunsite.unc.edu w katalogu /pub/Linux/kernel/pcmcia. [Od tłumacza.]Serwer ten z kolei jest mirrorowany w Polsce pod adresem ftp.icm.edu.pl. Postaram się też umieszczać główne wersje na tsx-11.mit.edu w katalogu /pub/linux/packages/laptops/pcmcia teraz i później. Jeśli nie czujesz się na siłach, żeby skompilować sterowniki do PCMCIA, w wersji bieżącej są zawarte pre-kompilowane sterowniki w najpopularniejszych dystrybucjach: Slackware, Red Hat, Caldera i Yggdrasil, między innymi. 11..44.. JJaakkiiee ssyysstteemmyy ssąą oobbssłłuuggiiwwaannee ?? Kod ten powinien działać na prawie wszystkich laptopach nadających się do Linux-a. Obsługiwane są wszystkie popularne kontrolery PCMCIA włączając w to Intel, Cirrus, Vadem, VLSI, Ricoh i Databook. Kontrolery ustawiane używane w IBM i Toshiba-ch także są obsługiwane. Doki (docks) kart PCMCIA dla systemów typu desktop także powinny działać tak długo, dopóki są tego typu, że wkłada się je bezpośrednio do szyny ISA, niż poprzez kontrolery SCSI-PCMCIA czy IDE-PCMCIA. Kontroler Motorola 6AHC05GA używany w niektórych laptopach Hyundaia nie jest obsługiwany. Kontrolery ustawiane w HP Omnibook 600 nie są obsługiwane. Kontroler mostka PCI-CardBus (od SMC, Ricoh-a, Cirrus-a i TI) jest obecnie obsługiwany tylko w przypadku trybu 16-bitowego, a i tak obsługa ta jest ciągle trochę eksperymentalna. 11..55.. JJaakkiiee kkaarrttyy PPCCMMCCIIAA ssąą oobbssłłuuggiiwwaannee?? Wersja obecna zawiera sterowniki dla różnych kart ethernetowych, sterownik do modemu, kart portów szeregowych, niektórych kontrolerów SCSI, sterownik do kart ATA/IDE oraz sterowniki do kart pamięci które powinny obsługiwać większość kart SRAM i niektóre karty flash. Plik _S_U_P_P_O_R_T_E_D_._C_A_R_D_S zawarty w każdej wersji Card Services zawiera wszystkie karty jakie działają w przynajmniej jednym właściwym systemie. Prawdopodobieństwo tego, że karta nie wymieniona w tym pliku będzie działać zależy od typu tej karty. Zasadniczo wszystkie modemy powinny działać z zawartym sterownikiem. Niektóre karty sieciowe mogą działać jeśli są wersjami OEM karty obsługiwanej. Inne typy kart IO (bufory ramkowe, karty dźwiękowe itd.) nie będą działać dopóki ktoś nie napisze odpowiednich sterowników. 11..66.. KKiieeddyy mmoojjaa nnoowwaa kkaarrttaa bbęęddzziiee oobbssłłuuggiiwwaannaa ?? Niestety, nikt mi z reguły nie płaci za pisanie sterowników, tak więc jeśli chcesz mieć sterownik do swojej ulubionej karty, będziesz przypuszczalnie musiał zrobić część roboty na własną rekę. W wersji idelanej, chciałbym się kierować w stronę modelu zbliżonego do jądra Linux-a, gdzie będę głównie odpowiedzialny za "rdzeń" kodu do PCMCIA a inni autorzy pisaliby sterowniki do konkretnych urządzeń. W pliku SUPPORTED.CARDS wspomniane są niektóre karty, dla których sterownik jest w trakcie pisania. Będę się starał pomóc gdzie tylko mogę ale miej na uwadze, że śledzenie (debugging) sterowników do urządzeń w jądrze poprzez e-mail nie jest zbytnio efektywne. Producenci zainteresowani pomocą w tworzeniu obsługi ich urządzeń mogą się ze mną skontaktować w sprawie konkretów. 11..77.. LLiissttyy ddyysskkuussyyjjnnee.. Kiedyś zajmowałem się bazą danych i listą dyskusyjną na temat użytkowników Linux-a na PCMCIA. Ostatnio zmieniłem swoją stronę WWW z informacjami na temat PCMCIA w stronę "HyperNews", ze zbiorem wiadomości na temat PCMCIA w Linux-ie. Są listy na temat instalacji i konfiguracji, na temat różnych typów kart oraz na temat programowania i śledzenia (debug) pod PCMCIA. Strona z informacjami na temat PCMCIA jest pod adresem http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html <http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html>. Użytkownicy mogą ustawić sobie opcję informowania poprzez email o nowych odpowiedziach na konkretne pytania, albo o wszystkich nowych wiadomościach w danej kategorii. Mam nadzieję, że stanie się to użytecznym archwium informacji dla pytań, które wychodzą poza treść tego HOWTO. Jest lista dyskusyjna, której tematem jest Linux na laptopie - lista "linux-laptop". Aby uzyskać więcej informacji, wyślij list zawierający słowo "help" na adres majordomo@vger.rutgers.edu. Aby zapisać się na tę listę, wyślij list zawierający łańcuch "subscribe linux-laptop" na ten sam adres. Lista ta może być dobrym forum dyskusyjnym na temat Linux-a na PCMCIA. Na Stronie Domowej Linux-a na Laptopy http://www.cs.utexas.edu/users/kharker/linux-laptop znajduje się wiele odwołań do adresów, na których są informacje na temat konfigurowania Linux-a na konkretnych typach laptopów. Jest także przeszukiwalna baza danych na temat konfiguracji systemu. 22.. KKoommppiillaaccjjaa,, iinnssttaallaaccjjaa ii kkoonnffiigguurraaccjjaa.. 22..11.. WWyymmaaggaanniiaa ii uussttaawwiieenniiaa jjąąddrraa.. Zanim zaczniesz, powinieneś pomyśleć czy rzeczywiście musisz samemu skompilować pakiet PCMCIA. Wszyskie popularne dystrybucje Linux-a są dostarczane wraz z pakietami zawierającymi skompilowane sterowniki dla PCMCIA. Ogólnie musisz tylko zainstalować od nowa sterowniki jeśli potrzebujesz jakiejś nowej cechy obecnych sterowników albo jeśli zaktualizowałeś czy przekonfigurowałeś jądro tak, że przestało być kompatybilne ze sterownikami przychodzącymi z dystrybucją. Chociaż kompilacja pakietu PCMCIA nie jest trudna technicznie, to wymaga jednak pewnego obycia z Linux-em. Następujące elementy powinny być zainstalowane w twoim systemie zanim zaczniesz instalować PCMCIA: ˇ Jedno z następujących jąder: 1.2.8 do 1.2.13, 1.3.30, 1.3.37, 1.3.39 do 1.3.99, 1.99.* (czyli, pre-2.0), 2.0.* lub 2.1.*. ˇ Bieżąca wersja pakietu z modułami i narzędziami do nich. ˇ (Opcjonalnie) "Forms" - interface dla użytkownika pod X11. Wersja najnowsza wymaga jądra w wersji 1.2.8 lub wyższej, albo jądra z serii testowych 1.3.30 lub wyższe, 1.3.38 jest definitywnie popsute, a 1.3.31 do 1.3.36 nie są przetestowane. Wymaga także względnie świeżej wersji narzędzi do modułów. Nie ma łat na jądro specyficznych dla PCMCIA. Musiz mieć pełne drzewo źródeł jądra, nie tylko aktualny obraz jądra, aby skompilować pakiet PCMCIA. Moduły PCMCIA zawierają niektóre odwołania do plików ze źródeł jądra. O ile ty możesz chcieć skompilować nowe jądro, żeby usunąć niepotrzebne sterowniki, instalacja PCMCIA nie wymaga tego. Bieżące stabilne wersje źródeł jądra oraz łaty do niego są dostępne pod adresem ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.0. Bieżąca wersja narzędzi jest pod tym samym adresem w pliku modules-2.0.0.tgz. Jądra w wersji rozwojowej znajdują się pod adresem ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.1. W pliku Documentation/Changes znajdują się opisy wersji wszystkich rodzajów innych składników systemu, które są wymagane dla tej wersji jądra. Możesz sprawdzić tę listę i upewnić się czy twój system jest aktualny, szczególnie jeśli ostatnio uaktualniałeś jądro. Jeśli używasz jądra 2.1, upewnij się, że używasz poprawnej kombinacji bibliotek dzielonych i narzędzi do modułów. Najnowsze wersje narzędzi do modułów, tak samo jak wersje dla starszych jąder można znaleźć pod adresem http://www.pi.se/blox/modules. Jeśli planujesz używanie karty ethernetowej PCMCIA podczas konfigurowania twojego jądra powinieneś włączyć obsługę sieci, ale wyłącz obsługę zwykłych kart sieciowych, włączając w to "pocket and portable adapters". Sterowniki do kart sieciowych PCMCIA są zaimplementowane jako ładowalne moduły. Jakiekolwiek sterowniki wkompilowane w twoje jądro będą tylko zabierać miejsce. Jeśli chcesz używać SLIP-a, PPP czy PLIP-a musisz albo skonfigurować twoje jądro z włączonymi tymi opcjami, albo użyć modułów ładowalnych tych sterowników. Niestety w jądrze w wersji 1.2.X nie można skompilować pewnych opcji jako moduły ładowalne (jak np. kompresja SLIP-a) więc najlepiej będzie jeśli wkompilujesz ten sterownik do jądra jeśli go potrzebujesz. Jeśli chcesz używać kontrolera Token Ring do PCMCIA, musisz wkompilować obsługę Token Ring do swojego jądra - "Token Ring driver support", ale powinieneś wyłączyć CONFIG_IBMTR. Jeśli chcesz używać kontrolera IDE PCMCIA, musisz włączyć opcję CONFIG_BLK_DEV_IDE_PCMCIA, w jądrach w wersji 1.3.72 do 2.1.7. Starsze jądra nie obsługują urządzeń IDE. nowsze jądra nie wymagają specjalnych ustawień. Jeśli będziesz używał kontrolera SCSI PCMCIA, powinieneś włączyć opcję CONFIG_SCSI podczas konfiguracji jądra. Włącz także wszelkie sterowniki "top level" (dyski SCSI, taśmy, CD-ROM-y, generic), których spodziewasz się używać. Wszystkie sterowniki "low level" dla konkretnych kontrolerów powinny być wyłączone, ponieważ będą tylko zajmować miejsce. Jeśli chcesz zmodularyzować sterownik, który jest potrzebny do urządzenia PCMCIA, musisz zmodyfikować plik /etc/pcmcia/config, aby podać, które moduły mają być załadowane dla których typów kart. Na przykład, jeśli sterownik szeregowy jest zmodularyzowany, wtedy mógłbyś zmienić definicję urządzenia szeregowego na: device "serial_cs" class "serial" module "misc/serial", "serial_cs" Pakiet ten zawiera narzędzie do podawania statusu karty oparte na X11 - cardinfo. Narzędzie to jest oparte na wolno dystrybuowanym interfejsie zwanym "Forms Library", które będziesz musiał zainstalować przed stworzeniem cardinfo. Dystrybucja binarna jest na hyper.stanford.edu. Są tam wersje a.out oraz ELF. Będziesz także musiał mieć wszystkie normalne pliki nagłówkowe pod X i biblioteki. 22..22.. IInnssttaallaaccjjaa.. Oto streszczenie procesu instalacji: ˇ Rozpakuj pcmcia-cs-2.9.?.tar.gz w /usr/src. ˇ Uruchom make config w nowym katalogu pcmcia-cs-2.9.? ˇ Uruchom make all, potem make install. ˇ Ustaw skrypty startowe dla PCMCIA i pliki opcji w /etc/pcmcia odpowiednio dla twojego systemu. Jeśli planujesz zainstalować jakieś dodatkowe sterowniki klienta nie zawarte w dystrybucji PCMCIA, rozpakuj każdy z nich w głównym katalogu źródeł PCMCIA. Potem postępuj zgodnie z normalnymi instrukcjami kompilacji. Dodatkowe sterowniki zostaną skompilowane i zainstalowane automatycznie. Uruchomienie make config zapyta o kilka opcji konfiguracyjnych i sprawdzi twój system, aby zweryfikować czy spełnia on wszystkie wymagania instalacji obsługi PCMCIA. W większości przypadków, będziesz po prostu akceptował wszystkie domyślne opcje. Upewnij się, że dokładnie sprawdziłeś komunikaty wyjściowe w razie błędów. Jeśli kompilujesz zestaw PCMCIA do instalacji na inną maszynę, podaj alternatywny katalog docelowy kiedy zostaniesz zapytany przez skrypt konfiguracyjny. Powinna to być ścieżka bezwzględna. Wszystkie narzędzia do PCMCIA zostaną zainstalowane względem tego katalogu. Będziesz mógł następnie "zarchiwizować" ten katalog poleceniem tar i skopiować go na maszynę docelową, a następnie rozpakować względem jej katalogo głównego, aby zainstalować wszystko we właściwym miejscu. Jeśli "cross-kompilujesz" na innej maszynie, możesz podać alternatywne nazwy kompilatora i linkera. Może to być także pomocne na systemach z pomieszaną architekturą a.out i ELF. Skrypt zapyta także o dodatkowe opcje śledzenia dla kompilatora. Niektóre z narzędzi wspierających (cardctl i cardinfo) mogą być skompilowane w formie "safe" (bezpiecznej) lub "trusting" (ufającej). Forma bezpieczna nie pozwala użytkownikom innym niż root na modyfikację konfiguracji karty. Forma ufająca pozwala zwykłemu użytkownikowi na zawieszenie, odwieszenie i reset karty oraz na zmianę bieżącej konfiguracji. Skrypt konfiguracyjny zapyta cię czy chcesz skompilować narzędzia jako "safe" czy "trusting"; wartością domyślną jest "safe". Jest kilka opcji konfiguracji jądra które mają wpływa na narzędzia do PCMCIA. Skrypt konfiguracyjny może je wywnioskować z działającego jądra (najpopularniejszy przypadek). Alternatywnie, jeśli kompilujesz do instalacji na inną maszynę może przeczytać konfigurację z drzewa źródeł jądra, albo każda opcja może być podana interaktywnie. Uruchomienie make all a potem make install stworzy i następnie zainstaluje moduły do jądra i programy narzędziowe. Moduły do jądra są instalowane w /lib/modules/<wersja>/pcmcia. Programy cardmgr i cardctl są instalowane w /sbin. Jeśli tworzony jest cardinfo, to instalowany jest on w /usr/bin/X11. Pliki konfiguracyjne zostaną zainstalowane w /etc/pcmcia. Jeśli instalujesz na starej wersji, twoje stare pliki konfiguracyjne zostaną zarchiwizowane przed skasowaniem ich. Zachowanym skryptom zostaną nadane rozszerzenia w stylu *.~1~, *.~2~. Jeśli nie wiesz jakiego typu jest twój kontroler, to możesz użyć narzędzia probe z podkatalogu cardmgr, aby go wykryć. Są dwa główne typy: Databook TCIC-2 i kompatybilne z Intel i82365SL. Demon na poziomie użytkownika obsługuje włożenie i wyjęcie karty. Nazywa się on cardmgr. Jest podobny w funkcjonowaniu do wcześniejszej wersji pcmciad Barry'ego Jaspana. Cardmgr czyta plik konfiguracyjny opisujący znane karty PCMCIA z /etc/pcmcia/config. W pliku tym zawarte jest jakie zasoby mogą być zaalokowane dla użycia przez urządzenia PCMCIA, i mogą być zmodyfikowane dla twojego systemu. Zobacz stronę w podręczniku systemowym "man" na temat pcmcia, aby dowiedzieć się więcej na temat tego pliku. 22..33.. PPoosstt--iinnssttaallaaccjjaa ddllaa ssyysstteemmóóww uużżyywwaajjąąccyycchh sskkrryyppttóóww iinniiccjjaaccyyjjnnyycchh aa''llaa BBSSDD.. Niektóre dystrybucje Linux-a, włączając Slackware, używają systemu skryptów a'la BSD. Jeśli istnieje plik /etc/rc.d/rc.M, to twój system zalicza się do tej grupy. Skrypt rc.pcmcia, zainstalowany w /etc/rc.d kontroluje startowanie i wyłączanie systemu PCMCIA. make install użyje polecenia probe, aby wykryć typ twojego kontrolera i odpowiednio zmodyfikować rc.pcmcia. Powinieneś dodać do skryptu startowego /etc/rc.d/rc.M linię, która wywołuje skrypt startowy PCMCIA, np. tak: /etc/rc.d/rc.pcmcia start Właściwie nie ma znaczenia, gdzie umieścisz ten plik, tak długo jak sterowniki PCMCIA są startowane po syslogd. 22..44.. PPoosstt--iinnssttaallaaccjjaa ddllaa ssyysstteemmóóww uużżyywwaajjąąccyycchh sskkrryyppttóóww iinniiccjjaaccyyjjnnyycchh aa''llaa SSYYSS VV.. Red Hat, Caldera i Debian mają ten właśnie system. Jeśli masz katalog /etc/init.d albo /etc/rc.d/init.d, to twój system jest w tej grupie. Skrypt rc.pcmcia zostanie zainstalowany jako /etc/rc.d/init.d/pcmcia, lub /etc/init.d/pcmcia. Nie ma potrzeby edytowania żadnego skryptu startowego, aby włączyć PCMCIA: zostanie to zrobione automatycznie. Jeśli istnieje katalog /etc/sysconfig, wtedy zostanie utworzony oddzielny plik konfiguracyjny /etc/sysconfig/pcmcia z opcjami startowymi. Jeśli musisz zmienić jakiekolwiek opcje modułów (jak PCIC= czy PCIC_OPTS=) modyfikuj raczej ten plik konfiguracyjny aniżeli właściwy skrypt startowy PCMCIA. Plik ten nie zostanie skasowny przez kolejne instalacje. Niektóre wcześniejsze wersje używały katalogu /etc/sysconfig/pcmcia- scripts zamiast /etc/pcmcia na tych platformach. Wersja bieżąca natomiast używa /etc/pcmcia dla wszystkich systemów, a istniejący /etc/sysconfig/pcmcia-scripts przeniesie do /etc/pcmcia. 22..55.. OOppccjjee kkoonnffiigguurraaccjjii ssppeeccyyffiicczznnee ddllaa ddaanneeggoo ssyysstteemmuu.. Pakiet Card Services powinien automatycznie zapobiegać alokacji portów IO i przerwań, które są już używane przez inne urządzenia. Spróbuje on także wykryć konflikty z nieznanymi urządzeniami, ale nie jest to w pełni godne zaufania. W niektórych przypadkach, muisz wyraźnie podać zasoby, które mają być niedostępne dla danego urządzenia w pliku /etc/pcmcia/config.opts. Oto niektóre ustawienia zasobów dla specyficznych typów laptopów. ˇ W AMS SoundPro wyłącz IRQ 10. ˇ W niektórych modelach TravelPro 5300 użyj adresów pamięci 0xc8000-0xcffff. ˇ W BMX 486DX2-66 wyłącz IRQ 5 i 9 ˇ W Chicony NB5 użyj adresów pamięci 0xda000-0xdFFFF. ˇ Na Compaq Presario 1020, wyłącz porty 0x2F8-0x2FF, IRQ 3 i IRQ 5. ˇ W HP Omnibook 4000C wyłącz porty 0x300-0x30F. ˇ Na Micron Millenia Transport, wyłącz IRQ 5, IRQ 9. ˇ W NEC Versa M, wyłącz IRQ 9 i porty 0x2E0-2FF. ˇ W NEC Versa P/75 wyłącz IRQ 5 i 9. ˇ W NEC Versa S wyłącz IRQ 9 i 12. ˇ W NEC Versa seria 6000 wyłącz porty 0x300-0x33f, IRQ 9 i 10. ˇ W ProStar 9200, Altima Virage i Acquiline Hurricane DX4-100 wyłącz IRQ 5 i porty 0x330-0x35f. Użyj może adresów pamięci 0xd8000-0xdffff. ˇ W Siemens Nixdorf SIMATIC PG 720C użyj adresów pamięci 0xc0000-0xcffff i portów 0x300-0x3bf. ˇ W TI TravelMate 5000 użyj adresów pamięci 0xd4000-0xdffff. ˇ W Toshiba T4900 CT wyłącz IRQ 5, porty 0x2E0-0x2E8 i 0x330-0x338. ˇ W Twinhead 5100, HP 4000, Sharp PC-8700 i PC-8900 wyłącz IRQ 9 (dźwięk) i 12 ˇ W MPC seria 800 wyłącz IRQ i porty 0x300-0x30f dla CD-ROM-u. Niektóre kontrolery PCMCIA mają opcjonalne zalety, które mogą być zaimplementowane w danym systemie, ale nie muszą. Generalnie jest niemożliwe dla sterownika gniazdka (socket driver), aby wykryć czy te zalety są zaimplementowane. Sprawdź stronę w podręczniku systemowym na temat swojego sterownika, aby zobaczyć jakie opcjonalne zalety mogą być włączone. W kilku przypadkach polecenie probe nie będzie w stanie wykryć automatycznie typu twojego kontrolera. Jeśli masz system Halikan NBD 486, to jego kontroler TCIC-2 znajduje się w niezwykłym miejscu: będziesz musiał zmodyfikować rc.pcmcia, aby załadować moduł tcic oraz ustawić PCIC_OPTS na tcic_base=0x2C0. Sterowniki gniazda typu "low level" tcic i i82365 mają liczne parametry do timing-ów szyny, które może będzie trzeba ustawić dla systemów ze szczególnie szybkimi procesorami. Symptomy problemów z timing-ami zawierają problemy z wykryciem karty, zawiśnięcia przy dużym załadowaniu systemu, duże średnie błędów, albo zła wydajność urządzeń. Sprawdź odpowiednie strony w podręczniku systemowym, aby dowiedzieć się więcej szczegółów. A tu jest krótkie podsumowanie: ˇ Kontrolery Cirrus mają liczne konfigurowalne parametry timing-ów. Najważniejszy wydaje się być cmd_time, który określa długość cyklu szyny PCMCIA. Szybkie systemy 486 (np. DX4-100) wydają się zwiększać wydajność przy zwiększeniu tego parametru z domyślnej wartości 6 na 12 czy 16. ˇ Kontroler Cirrus PD6729 PCI ma parametr fast_pci, który powinien być ustawiony jeśli szybkość szyny PCI jest większa niż 25 MHz. ˇ W kontrolerach Vadem VG-468 i Databook TCIC-2 parametr async_clock zmienia względne taktowanie szyny PCMCIA i cykle szyny host. Ustawienie tego parametru spowoduje dodanie stanów oczekiwania na niektóre operacje. Chociaż jeszcze nie słyszałem o jakimś laptopie, który by tego potrzebował. ˇ Moduł pcmcia_core posiada parametr cis_speed, który zmienia prędkość pamięci używaną dla dostępu do Card Information Structure (CIS). Na niektórych systemach z szybkimi zegarami szynowymi, zwiększanie tego parametru (czyli zwalnianie dostępu do kart) może przynieść pożytek przy problemach z rozpoznaniem karty. ˇ To nie jest sprawa timing-ów, ale jeśli masz więcej niż jeden kontroler PCMCIA w twoim systemie, albo jakieś dodatkowe gniazda w stacji dokowania (docking station), powinieneś załadować moduł i82365 z parametrem extra_sockets ustawionym na 1. Wszystkie te opcje powinny być skonfigurowane przez modyfikowanie początku pliku /etc/rc.d/rc.pcmcia. Na przykład: # Albo i82365 albo tic PCIC=i82365 # Wstaw tu parametry timing-ów dla sterownika gniazd PCIC_OPTS="cmd_time=12" # Wstaw tu opcje pcmcia_core CORE_OPTS="cis_speed=500" Oto niektóre ustawienia timing-ów dla specyficznych sytemów: ˇ W ARM Pentium-90 albo Midwest Micro Soundbook Plus użyj freq_bypass=1 cmd_time=8. ˇ W Midwest Micro Soundbook Elite użyj cmd_time=12. ˇ W Gateway Liberty spróbuj cmd_time=16. W niektórych systemach używających kontrolera Cirrusa, włączając NEC Versa M, BIOS ustawia kontroler w specyficzny stan zawieszenia podczas startu systemu. W tych systemach, polecenie probe nie powiedzie się. Jeśli tak się zdarzy, zmodyfikuj plik /etc/rc.d/rc.pcmcia ręcznie tak: # Wstaw tu parametry timing-ów dla sterownika gniazd PCIC=i82365 # Wstaw tu opcje pcmcia_core PCIC_OPTS="wakeup=1" 22..66.. PPrroobblleemmyy ppooddcczzaass łłaaddoowwaanniiaa mmoodduułłóóww jjąąddrraa.. Skrypt konfiguracyjny normalnie upewni się czy moduły PCMCIA są kompatybilne z twoim jądrem. Tak więc, problemy podczas ładownia modułów wskazuje z reguły na to, że użytkownik ingerował w jakiś sposób w normalny proces instalacji. Niektóre z tych problemów są wysyłane bezpośrednio na konsolę Linux-a. Inne błędy są zapisywane w pliku "log-file", zwykle jest to /usr/adm/messages albo /var/log/messages. W zależności od konfiguracji twojego syslogd, niektóre komunikaty mogą być zapisane do innych plików, które zwykle znajdują się także w /usr/adm czy var/log. Aby wyśledzić problem, upewnij się, że sprawdziłeś obie lokalizacje. Niektóre moduły PCMCIA wymagają serwisów jądra, które mogą, ale nie muszą być obecne, zależnie od konfiguracji jądra. Na przykład, sterowniki kart SCSI wymagają skonfigurowanej obsługi SCSI w jądrze, a sterowniki sieci wymagają skonfigurowania sieci w jądrze. Jeśli w jądrze brakuje potrzebnego serwisu insmod może twierdzić, że są niezdefiniowane symbole i nie załadować modułu. Jeśli insmod zwraca błąd "wrong version", oznacza to, że moduł był skompilowany dla innej wersji jądra niż to, które akurat działa. Może to się pojawić jeśli moduły skompilowane na jednej maszynie są kopiowane na drugą z inną konfiguracją, albo jeśli jądro jest rekonfigurowane po tym, jak pakiet PCMCIA został zainstalowany. Innym źródłem błędów podczas ładowana modułów może być to, że moduły i jądra były skompilowane z różnymi ustawieniami CONFIG_MODVERSIONS. Jeśli moduł z wkompilowanym sprawdzaniem wersji jest ładowany do jądra bez sprawdzania wersji, insmod zwróci błąd "undefined symbols". Ostatecznie, względnie nowe wersje binutils są niekompatybilne ze starszymi wersjami narzędzi do modułów, i mogą powodować, że są zwracane takie właśnie błędy. Najczęstszym symptomem jest błąd o niezdefiniowaniu gcc_compiled. Jeśli masz takie błędy, odśwież narzędzia do modułów do najnowszej wersji, dostępnych z ftp.icm.edu.pl. 22..77.. PPrroobblleemmyy zz pprrzzeerrwwaanniieemm zzmmiiaannyy ssttaattuussuu kkaarrttyy.. W większośći wypadków sterownik do gniazd (i82365 albo tcic) automatycznie wykryje i wybierze odpowiednie przerwanie, aby sygnalizować zmiany statusu karty. Automatyczne wyszukiwanie przerwania nie działa na niektórych kontrolerach kompatybilnych z Intel-em, włączając Cirrus-a i niektóre IBM ThinkPad. Jeśli urządzenie nie jest aktywne w czasie sprawdzania, jego przerwanie może także pojawić się jako niedostępne. W takich przypadkach sterownik gniazd może wybrać przerwanie które jest używane przez inne urządzenie. W sterownikach i82365 i tcic można używać opcji irq_list aby ograniczyć ilość wyszukiwanych przerwań. Lista ta ogranicza zbiór przerwań, które mogą być użyte przez karty PCMCIA oraz do monitorowania zmian statusu karty. Opcja cs_irq może być użyta, aby wyraźnie określić przerwanie, którego należy użyć do monitorowania zmian statusu karty. Jeśli nie możesz znaleźć numeru przerwania, które działa, jest jeszcze tryb statusu "polled": oba - i82365 i tcic zaakceptują opcję poll_interval=100, aby sprawdzać zmiany statusu karty raz na sekundę. Opcja ta powinna być także używana jeśli w twoim systemie brakuje dostępnych przerwań dla kart PCMCIA. Szczególnie w systemach z więcej niż jednym kontrolerem PCMCIA, nie ma zbytnio sensu w przeznaczaniu przerwań na monitorowanie zmian statusu kart. Wszystkie te opcje powinny być ustawiane w linii PCIC_OPTS= w pliku /etc/rc.d/rc.pcmcia albo /etc/sysconfig/pcmcia zależnie od twojego systemu. 22..88.. PPrroobblleemmyy zz iiddeennttyyffiikkaaccjjąą kkaarrttyy.. Domyślnie, sterowniki PCMCIA alokują okna pamięci w przestrzeni 0xC0000-0xFFFFF, po sprawdzeniu czy nie ma w niej jakichś konfliktów z ROM-em czy innymi urządzeniami. To okno pamięci jest podane w pliku /etc/pcmcia/config.opts. Sprawdzanie ma miejsce przy pierwszej próbie skonfigurowania nowej karty. Procedura sprawdzania nie jest idioto- odporna, więc możliwe jest niezidentyfikowanie konfliktu. Jeśli obszar ten jest używany przez inne urządzenia w twoim systemie, karty mogą nie zostać zidentyfikowane poprawnie. Przy układach które to obsługują, konflikt może też powstawać przy przesłanianiu tego obszaru pamięci. Klasycznym symptomem problemu z konfiguracją okna pamięci jest zidentyfikowanie wszystkich kart jako karty pamięci. W nadzwyczajnych przypadkach konflikt taki może powstać z jakimś krytycznym serwisem systemowym, co może powodować zawieszenia czy restarty. Jeśli podejrzewasz taki konflikt, sprawdź najpierw czy wyłączone jest przesłanianie ROM-u w ustawieniach twojego sprzętu. Znalezienie dobrego okna może wymagać trochę eksperymentów. Kilka alternatywnych okien to: 0xD0000-0xDFFFF, 0xC9000-0xCFFFF i 0xD8000-0xDFFFF. Jeśli masz sterowniki DOS-owe do PCMCIA, możesz zobaczyć jakich obszarów pamięci one używają. Zauważ, że adresy pamięci w DOS-ie są często podawane w formie segmentów, która to obcina ostatnią cyfrę szesnastkową (tak, że adres bezwzględny 0xD0000 byłby podany jako 0xD000. Upewnij się, że dodałeś tę jedną cyfrę kiedy wpisywałeś wartość do pliku /etc/pcmcia/config.opts. Jeśli problem z identyfikacją karty nie został rozwiązany dopasowywaniem okien pamięci, to prawdopodobnie jest to problem z "timing-ami" 22..99.. DDllaacczzeeggoo nniiee ddyyssttrryybbuujjeesszz bbiinnaarriióóww ddoo PPCCMMCCIIAA ?? Dla mnie, dystrybucja binariów jest bardzo niewygodna. Jest to sprawa skomplikowana ponieważ niektóre zalety mogą być podane dopiero w czasie kompilacji, oraz dlatego, że moduły PCMCIA są zależne od "poprawnej" konfiguracji jądra. Więc musiałbym przypuszczalnie dystrybułować prekompilowane moduły wraz z odpowiednimi wersjami jąder. Idąc dalej, prekompilowane moduły są najbardziej potrzebne kiedy instalujemy Linux-a od początku. To z reguły wymaga ustawienia PCMCIA tak, żeby można jej było użyć w procesie instalacji dla konkretnej dystrybucji Linux-a. Każda dystrybucja Linux-a ma własną procedurę, i nie jest dla mnie wykonalnym udostępniać dyskietki "boot" i "root" chcociażby tylko dla tych najbardziej popularnych kombinacji sterowników i dystrybucji. PCMCIA jest teraz częścią większości ważniejszych dystrybucji, włączając Red Hat, Caldera, Slackware, Yggdrasil, Craftworks oraz Nascent Technology. 22..1100.. DDllaacczzeeggoo tteenn ppaakkiieett jjeesstt ttaakkii wwiieellkkii ?? No cóż, po pierwsze, to on wcale nie jest taki wielki. Wszystkie moduły sterowników razem wzięte zajmują jakieś 200k. Programy narzędziowe dodają jeszcze jakieś 70k, a rzeczy w /etc/pcmcia zajmują jakieś 30k. Podczas działania, rdzeń modułów PCMCIA zabiera około 48k pamięci systemowej. Demon cardmgr z reguły jest wyswapowywany oprócz momentów kiedy karty są wsadzane lub wyjmowane. Całkowita objętość pakietu nie wiele różni się od implementacji Card Services pod DOS-a. W porównaniu z DOS-owymi "włącznikami", może się to wydawać trochę przesadzone, szczególnie dla ludzi, którzy nie planują używać tych wszystkich zalet jakie posiada PCMCIA, jak np. zarządzanie zasilaniem czy "gorące wymiany". "Włączniki" mogą być malutkie ponieważ generalnie obsługują one ograniczoną ilość kontrolerów PCMCIA. Jeśli ktoś miałby napisać autentycznie "ogólny" "włącznik" do modemu, skońyczłoby się na tym, że pojawiłaby się tam większość funkcji z Card Services, aby obsłużyć karty od różnych sprzedawców oraz pełny zakres różnych wariantów kontrolerów PCMCIA. 33.. SSttoossoowwaanniiee ii zzaalleettyy.. 33..11.. NNaarrzzęęddzziiaa ddoo mmoonniittoorroowwaanniiaa uurrzząąddzzeeńń PPCCMMCCIIAA.. Demon cardmgr normalnie wydaje sygnał dźwiękowy (beep) kiedy karta jest wsadzana, a ton tego dźwięku informuje nas o statusie nowo włożonej karty. Dźwięk wysoki a po nim niski informuje, że karta została zidentyfikowana, ale z jakiegoś powodu nie mogła zostać skonfigurowana. Jeden dźwięk niski informuje, że karta nie mogła zostać zidentyfikowana. Jeśli wszystkie moduły są poprawnie załadowane, polecenie lsmod daje mniej więcej taki wynik (bez włożonych kart): Module: #pages: Used by: ds 2 i82365 3 pcmcia_core 7 [ds i82365] Wszystkie moduły PCMCIA oraz demon cardmgr wysyłają komunikaty o statusie do systemowego programu logującego. Będzie to z reguły /var/log/messages albo /usr/adm/messages. Powinno to być pierwsze miejsce, do którego należy zajrzeć kiedy coś nie działa. Kiedy wysyłasz mi wiadomość o jakimś błędzie, zawsze dołącz zawartość tego pliku. Jeśli nie możesz znaleźć komunikatów z twojego systemu, to sprawdź konfigurację w pliku /etc/syslogd.conf, aby zobaczyć do jakich plików są one zapisywane. Cardmgr także zapisuje niektóre bieżące informacje o urządzeniach dla każdego gniazda w pliku /var/run/stab. Oto przykładowa zawartość tego pliku: Socket 0: Adaptec APA-1460 SlimSCSI 0 scsi aha152x_cs 0 sda 8 0 0 scsi aha152x_cs 1 scd0 11 0 Socket 1: Serial or Modem Card 1 serial serial_cs 0 ttyS1 5 65 W liniach opisujących urządzenia, pierwsze pole jest gniazdem, drugie - klasą urządzenia, trzecie - nazwą sterownika, czwarte jest używane, aby numerować urządzenia złożone (multiple devices) związane z tym samym sterownikiem, piąte - nazwą urządzenia, a ostatnie dwa pola są liczbą główną i poboczną dla danego urządzenia (jeśli jest dostępne). Polecenie cardctl może służyć do sprawdzenia statusu gniazda, albo jego konfiguracji. Oto przykładowy rezultat polecenia "cardctl config": Socket 0: Socket 1: Vcc = 5.0, Vpp1 = 0.0, Vpp2 = 0.0 Card type is memory and I/O IRQ 3 is dynamic shared, level mode, enabled Speaker output is enabled Function 0: Config register base = 0x0800 Option = 0x63, status = 0x08 I/O window 1: 0x0280 to 0x02bf, auto sized I/O window 2: 0x02f8 to 0x02ff, 8 bit Jeśli masz uruchomione X-y, to narzędzie cardinfo wyświetla informacje o statusie wszystkich gniazd PCMCIA, podobną w zawartości do "cardctl config". 33..22.. PPrrzzeegglląądd sskkrryyppttóóww kkoonnffiigguurraaccyyjjnnyycchh PPCCMMCCIIAA.. Każde urządzenie PCMCIA jest przyporządkowane jakiejś klasie, która opisuje jak powinno ono zostać skonfigurowane i jak nim zarządzać. Klasy są związane ze sterownikami urządzeń w /etc/pcmcia/config. Jest w tej chwili pięć klas urządzeń IO (sieć, SCSI, CD-ROM, dyski fixed i szeregowe) oraz dwie klasy urządzeń związanych z pamięcią (pamięć i FTL). Dla każdej klasy są dwa skrypty w /etc/pcmcia/config: główny skrypt konfiguracyjny (/etc/pcmcia/scsi dla urządzeń SCSI), i skrypt z opcjami (/etc/pcmcia/scsi.opts). Skrypt główny dla danego urządzenia zostanie wywołany, aby skonfigurować to urządzenie kiedy karta jest wkładana, i żeby wyłączyć dane urządzenie kiedy karta jest wyjmowana. Dla kart, z którymi jest związane kilka urządzeń, skrypt zostanie wywołany dla każdego urządzenia. Skrypty konfiguracyjne zaczynają od wyciągnięcia pewnych informacji o danym urządzeniu z pliku /var/run/stab. Każdy skrypt konstruuje "adres urządzenia" w zmiennej ADDRESS, który jest unikatowy dla urządzenia, które ma być skonfigurowane. Jest to przekazywane do skryptu *.opts, który powinien zwrócić informację o tym, jak dane urządzenie z podanego adresu powinno zostać skonfigurowane. Dla niektórych urządzeń, adres ten jest po prostu numerem gniazda. Dla innych, zawiera on dodatkowe informacje, które mogą być przydatne do zadecydowania jak skonfigurować dane urządzenie. Na przykład, urządzenia sieciowe przekazują swój adres Ethernet-owy jako część swojego "adresu urządzenia", tak żeby skrypt network.opts mógł tego użyć, aby wybrać z kilku różnych konfiguracji. Pierwszą częścią wszystkich adresów urządzeń jest bieżący schemat PCMCIA. Parametr ten jest używany do obsługi złożonych zbiorów konfiguracji urządzeń opartych na pojedynczej zewnętrznej zmiennej podanej przez użytkownika. Jeden ze sposobów użycia schematów to posiadanie schematu domowego, i schematu roboczego, który zawierałby różne zbiory parametrów konfiguracji sieci. Schemat bieżący jest wybierany przy pomocy polecenia cardctl. Domyślnym schematem, jeśli żaden nie jest podany, jest "default". Jako zasada ogólna podczas konfiguracji Linux-a na laptopa, urządzenia PCMCIA powinny być konfigurowane tylko przy pomocy skryptów do urządzeń PCMCIA. Nie próbuj konfigurować urządzenia PCMCIA w ten sam sposób co urządzenie dołączone na stałe. 33..33.. AAddaapptteerryy ssiieecciioowwee PPCCMMCCIIAA.. Normalnie interfejsy sieciowe typu Ethernet na Linux-ie mają nazwy eth0, eth1 itd. Kontrolery Token-Ring są obsługiwane podobnie, chociaż nazywane są tr0, tr1 itd. Polecenie ifconfig jest wywoływane, aby zobaczyć albo zmodyfikować stan urządzenia sieciowego. Własnością Linux-a jest to, że interfejsy sieciowe nie mają odpowiednich plików w katalogu /dev, więc nie bądź zaskoczony, że nie możesz ich znaleźć. Kiedy zostanie wykryta karta Ethernet-owa PCMCIA, zostanie jej przydzielona pierwsza wolna nazwa interfejsu, którą będzie przypuszczalnie eth0. Cardmgr wykona skrypt /etc/pcmcia/network, aby skonfigurować ten interfejs. Nie konfiguruj swojej karty Ethernet-owej w /etc/rc.d/rc.inet1 ponieważ karty może nie być kiedy skrypt ten jest wykonywany. Wstaw w komentarz wszystko, oprócz urządzenia "loopback" w rc.inet1. Jeśli twój system ma automatyczną procedurę konfiguracji sieci powinieneś zwykle wskazać, że nie masz zainstalowanej karty sieciowej. W zamian, zmodyfikuj plik /etc/pcmcia/network.opts, tak aby odpowiadał twojej lokalnej konfiguracji sieci. Skrypty network i network.opts zostaną wykonane tylko jeśli twoja karta Ethernet-owa jest obecna. Adres urządzenia przekazany do network.opts składa się, z czterech pól oddzielonych przecinkami: schematu, numeru gniazda, numeru urządzenia i sprzętowego adresu karty Ethernet. Numer urządzenia jest używany do numerowania urządzeń dla kart, które mają kilka interfejsów sieciowych, tak więc zwykle będzie to 0. Jeśli masz kilka kart sieciowych używanych do różnych celów, jedną z opcji byłoby skonfigurowanie kart oparte na numerze gniazda, jak tu: case "$ADDRESS" in *,0,*,*) # definicje dla karty sieciowej w gnieździe 0 ;; *,1,*,*) # definicje dla karty sieciowej w gnieździe 1 ;; esac Alternatywnie mogłyby one być skonfigurowane używając ich adresów sprzętowych, jak tu: case "$ADDRESS" in *,*,*,00:80:C8:76:00:B1) # definicje dla karty D-Link ;; *,*,*,08:00:5A:44:80:01) # definicje dla karty IBM esac Aby automatycznie zamontować i odmontować system plików NFS, najpierw dodaj te wszystkie systemy do /etc/fstab, ale w opcjach podaj _n_o_a_u_t_o. W network.opts wpisz katalogi, w których mają być zamontowane systemy plików NFS w zmiennej MOUNTS. Jest tu szczególnie ważne, aby użyć albo cardctl albo cardinfo, aby wyłączyć kartę sieciową kiedy montowanie z NFS jest w ten sposób skonfigurowane. Nie jest możliwe czyste odmontowanie systemu plików NFS jeśli karta sieciowa jest po prostu wyrzucana bez ostrzeżenia. Dodatkowo oprócz zwykłych parametrów konfiguracyjnych dla sieci, skrypt network.opts może podawać inne akcje, które mają mieć miejsce po tym jak interfejs został skonfigurowany, albo przed zamknięciem interfejsu. Jeśli w network.opts zdefiniowana jest funkcja start_fn, zostanie ona wywołana przez skrypt sieciowy po skonfigurowaniu interfejsu, a nazwa interfejsu zostanie przekazana do tej funkcji jako pierwszy i jedyny argument. Podobnie jeśli funkcja stop_fn jest zdefiniowana, to zostanie ona wywołana przed zamknięciem interfejsu. 33..33..11.. WWyybbóórr ttrraannsscceeiivveerr--aa.. Typ transceiver-a można wybrać w network.opts przy pomocy ustawienia IF_PORT. Może to być zarówno wartość numeryczna jak we wcześniejszych wydaniach PCMCIA, jak i słowo kluczowe identyfikujące typ transceiver- a. Wartościami domyślnymi we wszystkich sterownikach sieciowych są: wykrywanie automatyczne interfejsu jeśli jest to możliwe, a w przeciwnym razie - 10baseT. Przy pomocy polecenia ifport można sprawdzić lub ustawić bieżący typ transceiver-a. Np.: # ifport eth0 10base2 # # ifport eth0 eth0 2 (10base2) Obecne wersje sterownika 3c589 próbują automatycznie wykryć połączenie sieciowe, ale nie jest to jeszcze w pełni funkcjonalne. Aby automatyczne wykrywanie działało, kabel sieciowy powinien tkwić w karcie podczas jej konfiguracji. Alternatywnym rozwiązaniem jest zmuszenie sterownika do sprawdzenia połączenia przy pomocy polecenia: ifconfig eth0 down up 33..33..22.. KKoommeennttaarrzzee nnaa tteemmaatt kkoonnkkrreettnnyycchh kkaarrtt.. ˇ Przy kartach IBM CCAE i Socket EA musisz wybrać typ transceiver-a (10base2, 10baseT, AUI) gdy urządzenie sieciowe jest już skonfigurowane. Upewnij się, że typ transceiver-a zapisany w logach jest zgodny z rzeczywistym. ˇ Sterowniki dla kart SMC, Megahertz, Ositech i 3Com powinny automatycznie wykryć typ dołączonej sieci (10base2 lub 10baseT). Ustawienie typu transceiver-a kiedy sterownik jest już załadowany ma na celu zdefiniowanie pierwszej wartości sprawdzanej przez sterownik. ˇ Karta Farallon EtherWave jest właściwie zbudowana na bazie 3Com 3c589 ze specjalnym transceiver-em. Pomimo, iż EtherWave używa połączeń 10baseT jej transceiver wymaga, żeby 3c589 była skonfigurowana na tryb 10base2. ˇ Jeśli masz problemy z kartami IBM CCAE, NE4100, Thomas Conrad czy Kingston - spróbuj zwiększyć czas dostępu do pamięci opcją mem_speed=# dla modułu pcnet_cs. Przykład jak to zrobić znajdziesz w standardowym pliku config.opts. Wypróbuj prędkości do 1000 nanosekund. ˇ Na niektórych systemach przy karcie New Media Ethernet możliwe, że trzeba zwiększyć czas dostępu do portów IO opcją io_speed=# podczas ładowania modułu pcmcia_core. Aby ustawić tę opcję zmodyfikuj linijkę CORE_OPTS w skrypcie startowym. ˇ Obsługa muticastingu w sterowniku dla New media Ethernet nie jest pełna. Najnowszy sterownik będzie działał z jądrem skompilowanym do multicastingu, ale będzie ignorował takie pakiety. Tryb "promiscuous" powinien działać poprawnie. ˇ Wygląda na to, że sterownik używany przez karty IBM i 3Com token ring zachowuje się bardzo źle jeśli karty nie są połączone z pierścieniem podczas inicjalizacji. Zawsze podłączaj te karty do sieci kiedy są uruchamiane. Sterownik ten wymaga także wolnych portów w obszarze 0xA20-0xA27. Na niektórych systemach, automatyczne sprawdzanie konfliktów wśród portów IO błędnie określi ten obszar jako niedostępny. W tym wypadku, sprawdzanie może zostać wyłączone poprzez załadowanie modułu pcmcia_core z opcją probe_io=0. ˇ Nowsze karty Linksys i D-Link mają swój unikalny sposób wybierania typu transceiver-a, który nie jest obsługiwany przez sterowniki Linux-owe. Jednym ze sposobów na obejście tego jest wystartować DOS-a i użyć narzędzia dostarczonego przez sprzedawcę, aby wybrać transceiver i potem wystartować Linux-a na "ciepło". Szukam beta- testerów do narzędzia na Linux-a, które by umożliwiało taką funkcję. ˇ Jean Tourrilhes (jt@hplb.hpl.hp.com napisał HOWTO <http://www- uk.hpl.hp.com/people/jt/Linux/Wavelan.html> na temat bezprzewodowych kart sieciowych WaveLAN. 33..33..33.. DDiiaaggnnoozzoowwaanniiee pprroobblleemmóóww zz kkaarrttaammii ssiieecciioowwyymmii.. ˇ Czy twoja karta jest rozpoznawana jako karta etnernetowa? Sprawdź logi systemowe i upewnij się, że cardmgr identyfikuje twoją kartę poprawnie i startuje jeden ze sterowników sieciowych. Jeśli nie, to twoją kartę można wciąż użyć jeśli jest ona kompatybilna z jakąś obsługiwaną. Najprościej jest to zrobić jeśli karta "twierdzi", że jest kompatybilna z NE2000. ˇ Czy karta jest poprawnie skonfigurowana? Jeśli używasz obsługiwanej karty i została ona rozpoznana przez cardmgr, ale wciąż nie działa, to możliwy jest konflikt z przerwaniami lub portami. Zobacz jakich zasobów używa karta (z logów systemowych) i spróbuj wyłączyć je w /etc/pcmcia/config.opts, aby zmusić kartę do użycia innych. ˇ Jeśli twoja karta wydaje się być skonfigurowana poprawnie, ale czasami się zawiesza, szczególnie przy dużym obciążeniu systemu, możliwe, że musisz spróbować zmienić paramtery "timing-owe" gniazda dla sterownika. Więcej informacji znajdziesz w sekcji ``2.3''. ˇ Jeśli masz komunikaty w stylu "network unreachable" kiedy próbujesz dostać się do sieci, to przypuszczalnie błędnie ustawiłeś parametry w /etc/pcmcia/network.opts. Jednak z drugiej strony błędnie skonfigurowane karty z reguły nie zainicjują się i nie wyświetlą przy tym żadnych komunikatów ˇ Aby sprawdzić problemy z /etc/pcmcia/network.opts, zacznij od próby ping-owania innych systemów w tej samej podsieci uzywając ich adresów IP. Potem spróbuj ping-ować swój gateway, i maszyny w innych podsieciach. Ping-uj maszyny po ich adresach tylko po zrobieniu tych prostych testów. ˇ Upewnij się, że twój problem to naprawdę problem z PCMCIA. Sprawdzenie, czy karta działa pod DOS-em ze sterownikiem od sprzedawcy może pomóc. Sprawdź dwa razy modyfikacje w skrypcie /etc/pcmcia/network.opts. Upewnij się, że twoje kable, wtyczka "T", terminator itp. działają. 33..44.. UUrrzząąddzzeenniiaa sszzeerreeggoowwee ii mmooddeemmyy PPCCMMCCIIAA.. Linux-owe urządzenia szeregowe są dostępne poprzez specjalne pliki /dev/cua* i /dev/ttyS*. Urządzenia ttyS* są dla połączeń przychodzących, jak np. bezpośrednio podłączone terminale. Urządzenia cua* są dla połączeń wychodzących, jak np. modemy. Każdy fizyczny port szeregowy ma plik urządzenia ttyS i cua: to już zależy od ciebie jaki plik wykorzystasz w swojej aplikacji. Konfiguracja urządzenia szeregowego może być sprawdzana i modyfikowana poprzez polecenie setserial. Kiedy zostanie wykryta karta szeregowa lub modemowa PCMCIA, zostanie jej przypisany pierwszy dostępny slot urządzenia szeregowego. Będzie to zwykle /dev/ttyS1 (cua1) albo /dev/ttyS2 (cua2) w zależności od ilości wbudowanych portów szeregowych. Urządzenie ttyS* jest raportowane w pliku /var/run/stab. Domyślny skrypt z opcjami dla urządzenia szeregowego /etc/pcmcia/serial.opts podłączy odpowiedni w ramach udogodnienia plik urządzenia cua* do /dev/modem. Nie próbuj używać /etc/rc.d/rc.serial do konfiguracji modemu PCMCIA. Skrypt ten powinien być używany tylko do konfiguracji urządzeń zainstalowanych na stałe. Modyfikuj /etc/pcmcia/serial.opts jeśli chcesz jakichś specjalnych ustawień dla swojego modemu. Nie próbuj także zmieniać portu IO czy IRQ szeregowego urządzenia PCMCIA programem setserial. Poinformowałoby to sterownik szeregowy, że karta jest w innym miejscu, ale nie zmieniłoby ustawień sprzętowych karty. Skrypt konfiguracyjny pozwala na podanie innych opcji setserial jak rownież to czy linia dla tego portu powinna zostać dodana do /etc/inittab. Adres urządzenia przekazywany do serial.opts ma trzy pola odzielone przecinkami: pierwsze jest schematem, drugie - numerem gniazda, trzecie - numerem urządzenia. Numer urządzenia może przyjmować kilka wartości dla kart, które obsługują wieloportowe karty szeregowe, ale dla kart jednoportowych będzie to zawsze 0. Jeśli zwykle używasz więcej niż jednego modemu PCMCIA, możesz podać różne ustawienia oparte na numerze gniazda, jak tu: case "$ADDRESS" in *,0,*) # Opcje dla modemu w gnieździe 0 LINK=/dev/modem0 ;; *,1,*) # Opcje dla modemu w gnieździe 1 LINK=/dev/modem1 ;; esac Jeśli modem PCMCIA jest już skonfigurowany gdy Linux startuje, może zostać źle zidentyfikowany jako zwykły wbudowany port szeregowy. Jest to nieszkodliwe, chociaż, kiedy sterowniki PCMCIA przejmują kontrolę nad modemem, będzie mu nadany inny slot. Najlepiej albo zmodyfikować /var/run/stab albo użyć /dev/modem niż liczyć na to, że modem PCMCIA będzie zawsze miał przypisane to samo urządzenie. Jeśli skonfigurujesz twoje jądro, aby ładowało podstawowy sterownik do portów szeregowych jako moduł, musisz zmodyfikować /etc/pcmcia/config, aby wskazać, że ten moduł ma być ładowany. Zmień pozycję urządzenia szeregowego tak: device "serial_cs" class "serial" module "char/serial", "serial_cs" 33..44..11.. DDiiaaggnnoozzoowwaanniiee pprroobblleemmóóww zz uurrzząąddzzeenniiaammii sszzeerreeggoowwyymmii.. ˇ Czy twoja karta jest rozpoznawana jako modem? Sprawdź log systemowy i upewnij się, że cardmgr identyfikuje kartę poprawnie i startuje sterownik serial_cs. Jeśli nie, to możliwe, że musisz dodać jeszcze jedną pozycję do swojego pliku /etc/pcmcia/config tak, że zostanie ona poprawnie zidentyfikowana. Więcej szczegółów w sekcji ``3.6''. ˇ Czy modem został poprawnie skonfigurowany przez serial_cs? Znowu, sprawdź logi systemowe i poszukaj komunikatów pochodzących od sterownika serial_cs. Jeśli zobaczyś "register_serial() failed()", to możesz mieć konflikt portów IO. Inną wskazówką na konflikt jest zgłoszenie urządzenia 8250; większość nowoczesnych modemów PCMCIA powinna być identyfikowana jako UART 16550A. Jeśli sądzisz, że masz do czynienia z konfliktem portów, zmodyfikuj /etc/pcmcia/config.opts i wyłącz obszar portów, który został zaalokowany dla modemu. ˇ A może jest konflikt przerwań? Jeśli log systemowy wygląda na dobry, ale modem po prostu nie działa, to spróbuj użyć setserial, aby zmienić IRQ na 0 i sprawdź czy modem działa. Wywołanie takie wymusza na sterowniku użycie wolniejszego trybu "_p_o_l_l_e_d" zamiast użycia przerwań. Jeśli to naprawia problem, to całkiem możliwe, że jakieś inne urządzenie w twoim systemie używa przerwania wybranego przez serial_cs. Powinieneś dodać linię do pliku /etc/pcmcia/config.opts wyłączające to przerwanie. ˇ Jeśli modem zdaje się działać, ale bardzo, bardzo wolno, to jest prawie pewne, że jest konflikt przerwań. ˇ Upewnij się, że twój problem, to rzeczywiście problem z PCMCIA. Pomocne może być sprawdzenie, czy karta działa pod DOS-em używając sterownika dostarczonego przez sprzedawcę. Nie testuj także karty w skomplikowanych warunkach jak SLIP czy PPP dopóki nie jesteś pewnien, że możesz nawiązywać proste połączenia. Jeśli proste rzeczy działają a SLIP - nie, to problem jest ze SLIP-em, a nie PCMCIA. ˇ Jeśli otrzymujesz komunikaty od jądra wskazujące na to, że moduł serial_cs nie może być załadowany, to znaczy, że jądro nie ma obsługi dla urządzeń szeregowych. Jeśli skompilowałeś sterownik szeregowy jako moduł, to musisz zmodyfikować /etc/pcmcia/config, aby zaznaczyć, że moduł serial powinien być załadowany przed serial_cs. 33..55.. AAddaapptteerryy PPCCMMCCIIAA SSCCSSII.. Wszystkie obecnie obsługiwane karty PCMCIA SCSI są podobne w działaniu do jednej z następujących kart: Qlogic, Adaptec AHA-152X albo Future Domain TMC-16x0. Sterowniki PCMCIA są stworzone przez dołączanie części specyficznego dla PCMCIA kodu (w qlogic_cs.c, toaster_cs.c albo fdomain_cs.c) do normalnego sterownika SCSI dla Linux-a. Kiedy wykryty zostanie nowy kontroler SCSI, sterowniki do SCSI będą szukać urządzeń. Sprawdź logi systemowe, aby upewnić się, że twoje urządzenia zostały wykryte poprawnie. Nowym urządzeniom SCSI zostanie przypisany pierwszy wolny plik urządzenia SCSI. Pierwszy dysk SCSI będzie /dev/sda, pierwsza taśma SCSI będzie /dev/st0, a pierwszy CD- ROM SCSI będzie /dev/scd0. Rdzeniowe sterowniki PCMCIA są w stanie dowiedzieć się od jądra 1.3.X i późniejszego, które urządzenia SCSI są podłączone do karty. Będą one wymienione w /var/run/stab, a skrypt konfiguracyjny SCSI /etc/pcmcia/scsi będzie wywołany jeden raz dla każdego dołączonego urządzenia, aby je albo skonfigurować albo wyłączyć. Skrypt domyślny nie robi nic, aby skonfigurować urządzenia SCSI, ale poprawnie odmontuje systemy plików z urządzeń SCSI kiedy karta zostanie usunięta. Sterowniki PCMCIA z jądrem w wersji 1.2.X nie potrafią automatycznie wykryć , które urządzenia są przypisane konkretnemu sterownikowi. W zamian za to, jeśli masz jedną normalną konfigurację urządzenia SCSI, możesz wymienić te urządzenia w /etc/pcmcia/scsi.opts. Na przykład: jeśli normalnie masz dysk i CD-ROM SCSI, użyłbyś: # Dla jądra 1.2: lista urządzeń dołączonych SCSI_DEVICES="sda scd0" Adresy urządzeń przekazywane do scsi.opts są skomplikowane, z powodu dużej ilości urządzeń, które mogą być dołączone do kontrolera SCSI. Adresy składają się albo z sześciu albo z siedmiu pól oddzielonych przecinkami: bieżący schemat, typ urządzenia, numer gniazda, kanał SCSI, ID, numer logicznej jednostki i opcjonalnie numer partycji. Typ urządzenia będzie jednym z: "sd" dla dysków, "st" dla taśm, "sr" dla CD-ROM-ów i "sg" dla ogólnych urządzeń SCSI. W większości ustawień, kanał SCSI oraz numer logicznej jednostki będzie 0. Dla urządzeń dyskowych z kilkoma partycjami, scsi.opts zostanie najpierw wywołany dla całego urządzenia, z pięciopolowym adresem. Skrypt ten powinien ustawić w zmiennej PARTS listę partycji. Potem, scsi.opts zostanie wywołany dla każdej partycji, z dłuższymi - siedmiopolowymi adresami. Na przykład: oto skrypt do konfiguracji urządzenia dyskowego pod SCSI ID = 3 z dwiema partycjami oraz CD-ROM pod SCSI ID = 6: case "$ADDRESS" in *,sd,*,0,3,0) # To urządzenie ma dwie partycje... PARTS="1 2" ;; *,sd,*,0,3,0,1) # Opcje dla partycji nr 1: # zaktualizuj /etc/fstab i zamontuj system plików ext2 na /usr1 DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="ext2" OPTS="" MOUNTPT="/usr1" ;; *,sd,*,0,3,0,2) # Opcje dla partycji nr 2: # zaktualizuj /etc/fstab i zamontuj system plików ext2 na /usr2 DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="msdos" OPTS="" MOUNTPT="/usr2" ;; *,sr,*,0,6,0) # Opcje dla CD-ROM-u ID = 6 PARTS="" DO_FSTAB="y" ; DO_FSCK="n" ; DO_MOUNT="y" FSTYPE="iso9660" OPTS="ro" MOUNTPT="/cdrom" ;; esac Jeśli twoje jądro nie posiada sterownika "_t_o_p_-_l_e_v_e_l" (do dysku, taśmy itp.) dla konkretnego urządzenia SCSI, wtedy urządzenie to nie zostanie skonfigurowane przez sterownik PCMCIA. Jako efekt uboczny, nazwa urządzenia w /var/run/stab będzie wyglądać mniej więcej tak: "sd#nnnn", gdzie "nnnn" jest czterocyfrową liczbą szesnastkową. Zdarza się to, jeśli cardmgr nie jest w stanie przetłumaczyć ID urządzenia SCSI na odpowiadającą mu nazwę urządzenia Linux-owego. Możliwe jest zmodularyzowanie sterowników "top-level" do SCSI, tak aby były ładowane tylko wtedy kiedy zostanie wykryty kontroler SCSI. Aby tak zrobić, musisz zmodyfikować /etc/pcmcia/config, aby poinformować cardmgr, które dodatkowe moduły muszą być załadowane kiedy dany kontroler jest konfigurowany. Na przykład: device "aha152x_cs" class "scsi" module "scsi/scsi_mod", "scsi/sd_mod", "aha152x_cs" Taka zawartość pliku spowodowałaby załadowanie rdzennego modułu SCSI oraz modułu sterownika "_t_o_p_-_l_e_v_e_l" do dysków przed ładowaniem normalnego modułu sterownika PCMCIA. Skrypt Configure nie wykryje automatycznie zmodularyzowanych sterowników SCSI, tak więc będziesz musiał włączyć obsługę SCSI ręcznie używając opcji konfiguracyjnych. Zawsze włączaj swoje urządzenia przed włączeniem laptopa, albo przed włożeniem karty kontrolera, tak aby szyna SCSI została poprawnie zakończona podczas konfiguracji kontrolera. Bądź także bardzo ostrożny przy wyjmowaniu kontrolera SCSI. Przed wyjęciem karty upewnij się, że wszystkie urządzenia do niej przydzielone zostały odmontowane i wyłączone. Najlepiej przed wyjęciem karty skorzystać z programu cardctl albo cardinfo i zażądać usunięcia karty z systemu. W chwili obecnej wszystkie urządzenia SCSI powinny być włączane przed włożeniem karty sterownika SCSI i powinny pozostać podłączone do momentu wyjęcia karty sterownika lub wyłączenia laptopa. Korzystanie z tych kart niesie za sobą potencjalne komplikacje nieznane w przypadku korzystania ze zwykłych sterowników ISA. Szyna SCSI przenosi sygnał "termination power" niezbędny do prawidłowego działania zwykłych pasywnych terminatorów SCSI. Sterowniki SCSI standardu PCMCIA nie dostarczają sygnału "power termination", jeśli jest on wymagany musi zostać dostarczony przez urządzenie zewnętrzne. Niektóre zewnętrzne urządzenia SCSI mogą zostać skonfigurowane w taki sposób, aby dostarczały wspomnianego sysgnału. Inne, jak np. Zip Drive czy Syquest EZ-Drive używają aktywnych terminatorów, przez co nie są zależne od sygnału podawanego na szynie SCSI. W niektórych przypadkach może okazać się konieczne skorzystanie ze specjalnego bloku terminatora, np. APS SCSI Sentry 2, który posiada niezależne, zewnętrzne źródło zasilania. Konfigurując łańcuch urządzeń SCSI musisz sobie zdawać sprawę, które z nich wymagają lub dostarczają sygnał "power termination". Kontroler Adaptec APA-460 SlimSCSI nie jest obsługiwany. Kartę tę sprzedawano oryginalnie pod nazwą Trantor, a kiedy Adaptec połączył się z Trantor-em, kontynuowano sprzedaż Trantora z nazwą Adaptec. APA-460 nie jest kompatybilny z jakimkolwiek istniejącym sterownikiem Linux-owym. Nie jestem pewien jak trudno byłoby napisać sterownik; nie sądzę, żeby ktoś był w stanie wyciągnąć jakiekolwiek informacje od Adaptec-a. (Nieobsługiwany) Trantor SlimSCSI może zostać zidentyfikowany następująco: Trantor / Adaptec APA-460 SlimSCSI FCC ID: IE8T460 Shipped with SCSIworks! driver software (Obsługiwany) Adaptec SlimSCSI może zostać zidentyfikowany następująco: Adaptec APA-1460 SlimSCSI FCC ID: FGT1460 P/N: 900100 Shipped with EZ-SCSI driver software 33..55..11.. DDiiaaggnnoozzoowwaanniiee pprroobblleemmóóww zz kkaarrttaammii SSCCSSII.. ˇ Przy sterowniku aha152x_cs (używanym przez Adaptec-a, New Media i kilka innych) źródłem częstych problemów w napędach taśm wydaje się być obsługa odłączania/podłączania SCSI. Aby wyłączyć, tę właściwość dodaj następującą linię do pliku /etc/pcmcia/config.opts: module "aha152x_cs" opts "reconnect=0" ˇ Jeśli skompilowałeś obsługę SCSI jako moduł (CONFIG_SCSI to "m"), podczas konfiguracji PCMCIA, musisz wyraźnie zaznaczyć, że chcesz, aby sterownik został skompilowany. Musisz zmodyfikować plik /etc/pcmcia/config, aby ładować moduł SCSI przed odpowiednim sterownikiem *_cs. 33..66.. KKaarrttyy ppaammiięęccii PPCCMMCCIIAA.. Sterownik memory_cs obsługuje wszystkie typy kart pamięci, jak również dostarcza bezpośredniego dostepu do obszaru adresowego pamięci PCMCIA dla kart, które mają inne funkcje. Po załadowaniu tworzy kombinację urządzeń znakowych i blokowych. Przeczytaj stronę podręcznika na temat modułów, aby dowiedzieć się więcej o schemacie nazewnictwa urządzeń. Urządzenia blokowe są używane do dostępu a'la dysk (tworzenie i montowanie systemów plików itp.) Urządzenia znakowe służą do bezpośredniego (raw) niebuforowanego czytania i pisania do jakiegoś miejsca. Adres urządzenia przekazany do memory.opts składa się z dwóch pól: schematu i numeru gniazda. Opcje odnoszą się do pierwszej zwykłej partycji pamięci na odpowiedniej karcie pamięci. Oto przykład skryptu, który automatycznie montuje karty pamięci w zależności od złącza, w które zostaną karty włożone: case "$ADDRESS" in *,0,0) # Zamontuj systemy plików, ale nie uaktualniaj /etc/fstab DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="ext2" ; OPTS="" MOUNTPT="/mem0" ;; *,1,0) # Zamontuj systemy plików, ale nie uaktualniaj /etc/fstab DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="ext2" ; OPTS="" MOUNTPT="/mem0" ;; esac Niektóre starsze karty pamięci i większość prostych statycznych kart RAM nie posiadają "Card Information Structure" (CIS), która jest schematem używanym przez karty PCMCIA do identyfikowania się. Normalnie cardmgr założy, że każda karta, w której brakuje owej struktury jest prostą kartą pamięci i załaduje sterownik memory_cs. I tak, częstym skutkiem ubocznym ogólnego identyfikowania kart jest identyfikacja innego typu kart jako karty pamięci. Sterownik memory_cs używa heurystyki, aby zgadnąć pojemność tych kart. Heurystyka nie działa jednak dla kart zabezpieczonych przed zapisem i może czynić błędy także w innych przypadkach. Jeśli karta została źle zidentyfikowana, jej rozmiar powinien być wyraźnie podany podczas używania takich poleceń jak dd czy mkfs. 33..66..11.. UUżżyywwaanniiee kkaarrtt ppaammiięęccii ""ffllaasshh"".. Adres urządzenia przekazywany do ftl.opts składa się z trzech lub czterech pól: schematu, numeru gniazda, numeru regionu i opcjonalnie numeru partycji. Większość kart "flash" ma tylko jeden region pamięci "flash", więc numerem regionu zwykle będzie zero. Aby użyć karty pamięci "flash" jako zwykłego urządzenia blokowego jak dysk, stwórz najpierw partycję "flash translation layer" na tym urządzeniu poleceniem ftl_format: ftl_format -i /dev/mem0c0c Zauważ, że polecenie to uzyskuje dostęp do karty przez bezpośredni interfejs pamięci karty. Raz sformatowana karta może być używana jako zwykłe urządzenie blokowe przy pomocy sterownika ftl_cs. Na przykład: mke2fs /dev/ftl0c0 mount -t ext2 /dev/ftl0c0 /mnt Nazewnictwo dla urządzeń FTL jest trochę pokręcone. Poboczne liczby urządzeń mają trzy części: numer karty, numer regionu na tej karcie i opcjonalnie partycję w tym regionie. Region może być traktowany jako pojedyncze urządzenie blokowe bez tablicy partycji (jak dyskietka) albo można go podzielić na partycje tak jak dysk twardy. Urządzenie "ftl0c0" jest kartą 0 o numerze regionu 0 i całym regionem. Urządzenia od "ftl0c0p1" do "ftl0c0p4" są głównymi partycjami 1 do 4 jeśli region został podzielony. Są dwa główne formaty dla kart pamięci flash: styl "flash translation layer", i styl "Microsoft Flash File System". Format FTL jest ogólnie bardziej elastyczny ponieważ pozwala na użycie każdego zwykłego wysokopoziomowego systemu plików (ext2, ms-dos itp.) na kartach pamięci "flash" tak jakby były one na zwykłym urządzeniu dyskowym. FFS jest całkiem odmiennym systemem plików. Linux nie umie w tej chwili obługiwać kart sformatowanych w tym systemie. 33..77.. KKaarrttyy PPCCMMCCIIAA nnaappęęddóóww AATTAA//IIDDEE.. Obsługa napędów ATA/IDE wymaga jadra 1.3.72 lub nowszego. Specyficzna dla PCMCIA część sterownika to fixed_cs. Pamiętaj żeby używać cardctl albo cardinfo do wyłączania karty ATA/IDE przed wyjęciem jej, ponieważ sterownik nie jest odporny na "gorące zmiany". Adresy urządzenia przekazywane do fixed.opts składają się z trzech albo czterech pól: bieżący schemat, numer gniazda, numer seryjny napędu i opcjonalny numer partycji. Tak samo jak w przypadku urządzeń SCSI, fixed.opts jest najpierw wywoływany dla całego urządzenia. Jeśli fixed.opts zwróci listę partycji w zmiennej PARTS, skrypt zostanie wtedy wywołany dla każdej partycji. Oto przykład pliku fixed.opts, który montuje pierwszą partycję jakiejkolwiek karty ATA/IDE na /mnt. case "$ADDRESS" in *,*,*) PARTS="1" ;; *,*,*,1) DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="msdos" OPTS="" MOUNTPT="/mnt" ;; esac Zauważ, że domyślny plik fixed.opts posiada te linie, ale są one w komentarzu. Jeśli chcesz, możesz mieć oddzielne konfiguracje dla konkretnych kart oparte na ich numerach seryjnych. Aby odszukać numer seryjny napędu, użyj narzędzia ide_info. Wtedy część fixed.opts może wyglądać tak: case "$ADDRESS" in *,*,Z4J60542) # To są moje rzeczy DOS-owe PARTS="1" ;; *,*,Z4J60542,1) DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="msdos" OPTS="" MOUNTPT="/mnt" ;; esac 33..77..11.. DDiiaaggnnoozzoowwaanniiee pprroobblleemmóóww zz aaddaapptteerraammii AATTAA//IIDDEE.. ˇ Niektóre napedy IDE zaburzają specyfikację PCMCIA przez żądanie dłuższego czasu na "_r_o_z_k_r_ę_c_e_n_i_e _s_i_ę" niż maksymalny dozwolony czas na setup. Aby używać tych kart załaduj moduł pcmcia_core z opcją: CORE_OPTS="unreset_delay=400" ˇ Aby używać urządzenia ATA/IDE CD-ROM, twoje jądro musi być skompilowane z włączoną opcją CONFIG_BLK_DEV_IDECD. Będzie to zwykle przypadek dla standardowych jąder, chociaż jest to coś o czymś powinieneś wiedzieć jeśli kompilujesz jądro z własną konfiguracją. 33..88.. KKaarrttyy wwiieellooffuunnkkccyyjjnnee.. Od jądra w wersji 1.3.73 pojedyncze przerwanie może być dzielone między kilka sterowników jak sterownik szeregowy i ethernetu. Jeśli używasz wielofunkcyjnej karty z nowszym jądrem, to wszystkie funkcje tej karty są dostępne bez potrzeby przeładowywania sterowników. Symultaniczne użycie dwóch funkcji karty wymaga trochę sprytu i różni sprzedawcy sprzętu zaimplementowali dzielenie przerwań na swój, niekompatybilny (i czasem nieudokumentowany) sposób. Sterowniki do niektórych kart (Ositech Jack of Diamonds, 3Com 3c562, Linksys) udostępniają poprawnie symultaniczność, ale inne (szczególnie Megahertz) - nie. Wcześniejsze jądra nie obsługiwały dzielenia przerwań pomiędzy różne sterowniki urządzeń, więc jest niemożliwe skonfigurowanie kart modemu i ethernetu do działania symultanicznego. Sterowniki ethernetowy i modemowy są ładowane jednocześnie automatycznie. Chociaż sterownik ethernetowy przejmuje przerwanie domyślnie. Aby użyć modemu możesz usunąć sterownik ethernetowy z pamięci i zrekonfigurować port szeregowy czymś takim: ifconfig eth0 down rmmod 3c589_cs setserial /dev/modem autoconfig auto_irq setserial /dev/modem Drugie polecenie setserial powinno zweryfikować czy port został skonfigurowany tak, aby użyć przerwania poprzednio używanego przez sterownik ethernetowy. 33..99.. KKiieeddyy mmoożżnnaa bbeezzppiieecczznniiee wwłłoożżyyćć aallbboo wwyyjjąąćć kkaarrttęę PPCCMMCCIIAA ?? Teoretycznie możesz wkładać i wyjmować karty PCMCIA w każdym momencie. Chcociaż, generalnie dobrze jest nie wyjmować karty jeśli jest ona akurat używana przez jakąś aplikację. Jądra starsze niż 1.1.77 często zawieszałyby się podczas wyjmowania kart szeregowych lub modemowych, ale to powinno już być naprawione. 33..1100.. CCaarrdd SSeerrvviicceess ii AAddvvaanncceedd PPoowweerr MMaannaaggeemmeenntt.. Pakiet Card Services może zostać skompilowany z obsługą APM (Advanced Power Management) jeśli zainstalowałeś ten pakiet w swoim systemie. APM jest dołączony do jąder 1.3.46 i nowszych. Opiekunem tego pakietu jest obecnie Rick Faith (_f_a_i_t_h_@_c_s_._u_n_c_._e_d_u), a narzędzia do APM można uzyskać z ftp.cs.unc.edu. Moduły PCMCIA zostaną skonfigurowane automatycznie pod względem APM jeśli na twoim systemie zostanie wykryta wersja kompatybilna. Aby poprawnie zakończyć działanie i ponownie wystartować karty PCMCIA, możesz wykonać cardctl suspend przed zawieszeniem twojego laptopa i cardctl resume po przywróceniu go do pracy bez zmian w APM. Niezadziała to jednak z modemem PCMCIA, który jest właśnie używany, ponieważ sterownik szeregowy nie jest w stanie zachować i odtworzyć parametrów operacyjnych modemu. APM wydaje się być niepewne na niektórych systemach. Jeśli masz problemy z APM i PCMCIA w twoim systemie, spróbuj zawęzić problem do jednego albo drugiego pakietu zanim wyślesz list z raportem o błędzie. Niektóre sterowniki, szczególnie sterowniki PCMCIA SCSI, nie mogą się odtworzyć ze stanu zawieś/odtwórz. Kiedy używasz karty PCMCIA SCSI, użyj cardctl eject zanim zawiesisz system. 33..1111.. JJaakk mmaamm wwyyłłąącczzyyćć kkaarrttęę PPCCMMCCIIAA bbeezz wwyyjjmmoowwaanniiaa jjeejj ?? Użyj polecenia cardctl albo cardinfo. Polecenie cardctl suspend # zawiesi jedno gniazdo, i wyłączy jego zasilanie. Odpowiednie polecnie resume obudzi kartę w stan poprzedni. 33..1122.. JJaakk uussuuwwaamm sstteerroowwnniikkii PPCCMMCCIIAA zz ppaammiięęccii ?? Aby usunąć cały pakiet PCMCIA, uruchomrc.pcmcia tak: /etc/rc.d/rc.pcmcia stop Uruchomienie tego skryptu zajmie kilka sekund, ponieważ daje on czas wszystkim sterownikom-klientom na poprawne zakończenie działania. Jeśli jakieś urządzenie PCMCIA jest akurat używane, zakończenie będzie niekompletne, i niektóre moduły jądra mogą nie zostać usunięte. Aby tego uniknąć użyj cardctl eject, aby zamknąć wszystkie gniazda przed uruchomieniem rc.pcmcia. Status wyjściowy polecenia cardctl określi czy jakieś gniazdo nie mogło być zamknięte. 44.. ZZaaaawwaannssoowwaannee tteemmaattyy.. 44..11.. AAllookkooaaccjjaa zzaassoobbóóww ddllaa uurrzząąddzzeeńń PPCCMMCCIIAA.. Teoretycznie nie powinno mieć znaczenia które przerwanie jest alokowane dla którego urządzenia tak długo jak dwa urządzenia nie są skonfigurowane, aby używać tego samego przerwania. W pliku /etc/pcmcia/config.opts znajdziesz miejsce na wyłączenie przerwań, które są używane przez inne urządzenia niż PCMCIA. Podobnie, nie ma sposobu, aby bezpośrednio podać adresy IO, które mają byc używane przez karty PCMCIA. Plik /etc/pcmcia/config.opts pozwala na podanie obszaru portów dostępnego dla wszystkich sterowników PCMCIA, albo wyłączyć obszary, które powodują konflikty. Po zmodyfikowaniu pliku /etc/pcmcia/config.opts możesz zrestartować cardmgr poleceniem "kill -HUP". Przerwanie używane do monitorowania statusu zmian karty jest wybierane przez moduł sterownika niskiego poziomu (i82365 lub tcic) przed zinterpretowaniem pliku /etc/pcmcia/config przez cardmgr, więc plik ten nie ma wpływu na wybór tego właśnie przerwania. Aby ustawić to przerwanie użyj opcji cs_irq= podczas ładowania sterownika gniazd, przez ustawienie zmiennej PCIC_OPTS w pliku /etc/rc.d/rc.pcmcia. Wszystkie sterowniki kart klientów mają parametr irq_list do podawania, które przerwania mogą próbować one zaalokować. Te opcje powinny być ustawione w pliku /etc/pcmcia/config. Np.: device "serial_cs" module "serial_cs" opts "irq_list=8,12" ... wymusiłoby użycie tylko przerwań IRQ 8 i 12. Nie zależnie od usatwień irq_list, Card Services nigdy nie zaalokuje przerwania, które jest już używane przez inne urządzenie albo przerwania, które jest wyłączone w pliku konfiguracyjnym. 44..22.. JJaakk zzrroobbiićć ddwwiiee rróóżżnnee kkoonnffiigguurraaccjjee uurrzząąddzzeeńń ddoo ddoommuu ii pprraaccyy ?? Jest to całkiem proste używając schematów PCMCIA. Użyj dwóch schematów konfiguracyjnych o nazwie "dom" i "praca". Oto przykład skryptu network.opts z konkretnymi ustawieniami dla różnych schematów: case "$ADDRESS" in praca,*,*,*) # definicje dla kart sieciowych w pracy ... ;; dom,*,*,*|default,*,*,*) # definicje dla kart sieciowych w domu ... ;; esac Pierwszą częścią adresu urządzenia PCMCIA jest zawsze schemat konfiguracyjny. W tym przykładzie, drugi przypadek w "case" wybierze oba schematy: domowy i domyślny. Więc jeśli schemat nie jest ustawiony, domyślnym będzie schemat domowy. Teraz, aby wybrać pomiędzy tymi dwoma ustawieniami uruchom albo: cardctl scheme dom albo cardctl scheme praca Polecenie cardctl wyłącza wszystkie twoje karty i inicjuje je ponownie. Polecenie to może być bezpiecznie używane, nie zależnie od tego czy system PCMCIA jest załadowany czy nie, ale polecenie to może się nie powieść jeśli używasz innych urządzeń PCMCIA w tym samym czasie (nawet jeśli ich konfiguracje nie różnią się wyraźnie od ustawień schematów). Aby zobaczyć bieżące ustawienia schematu PCMCIA uruchom: cardctl scheme 44..33.. SSttaarrttoowwaanniiee zz uurrzząąddzzeenniiaa PPCCMMCCIIAA.. Posiadanie głównego systemu plików na urządzeniu PCMCIA jest trochę kłopotliwe, bo system PCMCIA na Linux-a nie został przystosowany do włączenia do jądra. Główne składniki, ładowalne moduły i uruchamiany w trybie użytkownika demon cardmgr, zależą od już działającego systemu. Możliwość startu przy pomocy "initrd" pozwala obejść ten problem pozwalając Linux-owi wystartować używając tymczasowego ramdysku jako minimalnego obrazu katalogu głównego, załadować sterowniki i potem ponownie zamontować inny system plików jako katalog główny. Tymczasowy katalog główny może skonfigurować urządzenia PCMCIA i potem zamontować urządzenie PCMCIA jako katalog główny. Niektóre dystrybucje Linux-a pozwalają na instalację na urządzeniu podłączonym do kontrolera SCSI PCMCIA, jako niezamierzony skutek uboczny możliwości instalacji z CD-ROM-ów podłączonych do SCSI PCMCIA. Aczkolwiej w tej chwili żadne narzędzie instalacyjne dla Linux-a nie pozwala na konfigurację odpowiedniego "initrd" do startu z głównym systemem plików na PCMCIA. Dlatego też konfiguracja takiego systemu wymaga użycia drugiego Linux-a, aby stworzyć obraz "initrd". Jeśli nie masz dostępu do drugiego Linux-a, to inną możliwością jest tymczasowe zainstalowanie minimalnego Linux-a na napędzie nie będącym urządzeniem PCMCIA, stworzenie obrazu initrd i zainstalowanie na PCMCIA. W Bootdisk-HOWTO znajdują się ogólne informacje jak zrobić dyskietki startowe, ale nic konkretnego na temat initrd. Główny dokument opisujący initrd zawarty jest w ostatnich źródłach jądra Linux-a w katalogu linux/Documentation/initrd.txt. Zanim zaczniesz powinieneś to przeczytać. Pomocna jest też znajomość lilo. Użycie initrd wymaga także włączonych opcji CONFIG_BLK_DEV_RAM i CONFIG_BLK_DEV_INITRD w jądrze. 44..33..11.. SSkkrryypptt--ppoommooccnniikk ppcciinniittrrdd.. Skrypt pcinitrd tworzy podstawowy obraz initrd do startowania z głównej partycji na PCMCIA. W obrazie tym zawarte są: minimalna struktura katalogów, potrzebne pliki urządzeń, kilka programów, biblioteki dzielone i zbiór sterowników-modułów PCMCIA. Podczas uruchamiania pcinitrd podajesz sterowniki-moduły, które mają być zawarte w obrazie. Główne składniki PCMCIA, pcmcia_core i ds są dołączane automatycznie. Na przykład powiedzmy, że twój laptop używa kontrolera PCMCIA kompatybilnego z i82365 i chcesz startować Linux-a z głównym systemem plików na dysku twardym przyłączonym do kontrolera Adpatec SlimSCSI. Możesz stworzyć odpowiedni obraz przy pomocy; pcinitrd -v initrd pcmcia/i82365.o pcmcia/aha152x_cs.o Aby ustawić sobie start initrd wedle swojego uznania, możesz zamontować obraz używając urządzenia "loopback" poleceniem: mount -o loop -t ext2 initrd /mnt i potem zmodyfikuj skrypt linuxrc. Pliki konfiguracyjne PCMCIA zostaną zainstalowane w obrazie w katalogu /etc i także mogą być ustawione wedle własnego uznania. Więcej informacji znajdziesz w podręczniku 'man pcinitrd'. 44..33..22.. TTwwoorrzzeenniiee ddyysskkiieettkkii ssttaarrttoowweejj zz iinniittrrdd.. Po stworzeniu obrazu skryptem pcinitrd, możesz stworzyć dyskietkę startową kopiując jądro, skompresowany obraz initrd i kilka pomocniczych programów dla lilo na czystą dyskietkę. W następującym przykładzie zakładamy, że główny system plików znajduje się na /dev/sda1: mke2fs /dev/fd0 mount /dev/fd0 /mnt mkdir /mnt/etc /mnt/boot /mnt/dev cp -a /dev/fd0 /dev/sda1 /mnt/dev cp [jądro] /mnt/vmlinuz gzip < [obraz-initrd] > /mnt/initrd Stwórz /mnt/etc/lilo.conf z taką zawartością: boot=/dev/fd0 compact image=/vmlinuz label=linux initrd=/initrd read-only root=/dev/sda1 Na końcu uruchom: lilo -r /mnt Jeśli lilo uruchomione jest z parametrem -r, wszystkie akcje wykonywane są z podanym katalogiem jako główny system plików. Powodem utworzenia plików urządzeń w /mnt/dev było to, że lilo nie będzie w stanie użyć plików w /dev kiedy będzie uruchomione z alternatywnym katalogiem głównym. 44..33..33.. IInnssttaallaaccjjaa oobbrraazzuu iinniittrrdd nnaa nnaappęęddaacchh bbeezz LLiinnuuxx--aa.. Jednym z popularnych zastosowań initrd są systemy gdzie wewnętrzny dysk twardy jest dedykowany dla innego systemu operacyjnego. Jądro Linux-a i obraz initrd mogą zostać umieszczone na partycji bez Linux-a a lilo lub LOADLIN mogą zostać skonfigurowane, aby ładowały Linux-a z tych obrazów. Zakłądając, że twoje jądro jest skonfigurowane na odpowiednie urządzenie z głównym systemem plików i masz stworzony obraz initrd na innym Linux-ie, najprostszym sposobem aby zacząć, to wystartowanie Linux-a używając LOADLIN-a w ten sposób: LOADLIN <kernel> initrd=<initrd-image> Jak już możesz wystartować Linux-a na swojej maszynie, możesz wtedy zainstalować lilo aby umożliwić startowanie Linux-a bezpośrednio. Na przykład powiedzmy, że /dev/hda1 jest partycją bez Linux-a i /mnt można użyć jako katalog do montowania. najpierw utwórz podkatalog na partycji docelowej dla plików Linux-a: mount /dev/hda1 /mnt mkdir /mnt/linux cp [obraz-jądra] /mnt/linux/vmlinuz cp [obraz-initrd] /mnt/linux/initrd W tym przykładzie, powiedzmy, że /dev/sda1 jest partycją na której ma się znaleźć główny system plików, dysk twardy SCSI zamontowany przez kontroler SCSI PCMCIA. Aby zainstalować lilo, stwórz plik lilo.conf z taką zawartością: boot=/dev/hda map=/mnt/linux/map compact image=/mnt/linux/vmlinuz label=linux root=/dev/sda1 initrd=/mnt/linux/initrd read-only other=/dev/hda1 table=/dev/hda label=windows Linia boot= informuje, żeby zainstalować program ładujący system do Master Boot Record podanego urządzenia. Linia root= identyfikuje konkretny główny system plików, który ma zostać użyty po załadowaniu obrazu initrd, parametr ten może być niepotrzebny jeśli jądro jest już skonfigurowane w ten sposób. Sekcja other= używana jest do opisania innego systemu operacyjnego zainstalowanego na /dev/hda1. Aby zainstalować lilo w tym przypadku użyj: lilo -C lilo.conf Zauważ, że w tym przypadku plik lilo.conf używa scieżek absolutnych, które zawierają /mnt. Zrobiłem tak w przykładzie ponieważ docelowy system plików może nie umieć tworzyć urządzeń Linux-a dla parametrów boot= i root=. 55.. JJaakk rraaddzziićć ssoobbiiee zz nniieeoobbssłłuuggiiwwaannyymmii kkaarrttaammii.. 55..11.. KKoonnffiigguurraaccjjaa nniieeoobbssłłuuggiiwwaannyycchh kkaarrtt.. Zakładając, że twoja karta jest obsługiwana przez istniejący sterownik, wszystko co trzeba zrobić, to dodać pozycję do /etc/pcmcia/config, która poinformuje cardmgr jak zidentyfikować kartę i który(e) sterownik(i) dołączyć do tej karty. Więcej informacji na temat formatu pliku konfiguracyjnego na stronie podręcznika "man" na temat pcmcia. Jeśli włożysz nieznaną kartę, to cardmgr z reguły zapisze trochę informacji identyfikacyjnych w logu systemowym, który może zostać użyty do konfiguracji. Oto przykład raportu cardmgr w /usr/adm/messages na temat nieznanej karty: cardmgr[460]: unsupported card in socket 1 cardmgr[460]: version info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM" Odpowiadająca pozycja konfiguracyjna w /etc/pcmcia/config wyglądałoby tak: card "Megahertz XJ2288 V.34 Fax Modem" version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM" bind "serial_cs" Możesz użyć "*", aby oznaczyć łańcuchy, które nie muszą się dokładnie zgadzać, jak np. numery wersji. Kiedy robisz nową pozycję konfiguracyjną, zwróć uwagę na to, żeby dokładnie skopiować łańcuchy, zachowując wszelkie duże i małe litery oraz przerwy (spacje). Upewnij się także, że pozycja konfiguracyjna ma taką samą ilość łańcuchów jak to stwierdzono w logach. Po tym jak zmodyfikujesz /etc/pcmcia/config, możesz poinformować cardmgr, aby przeładował plik konfiguracyjny: kill -HUP `cat /var/run/cardmgr.pid` Jeśli uda ci się ustawić jakąś pozycję konfiguracyjną dla nowej karty, przyślij mi kopię proszę, tak żebym mógł ją dołączyć do standardowego pliku konfiguracyjnego. 55..22.. JJaakk mmaamm ddooddaaćć oobbssłłuuggęę ddllaa kkaarrttyy kkoommppaattyybbiillnneejj zz NNEE22000000 ?? Najpierw sprawdź, czy karta nie została już rozpoznana przez cardmgr. Niektóre karty nie wymienione w SUPPORTED.CARDS są wersjami OEM kart obsługiwanych. Jeśli znajdziesz taka kartę, daj mi znać, żebym mógł ją dodać do listy. Jeśli twoja karta nie została rozpoznana, postępuj zgodnie z instrukcjami w sekcji ``3.6'', aby stworzyć pozycję konfiguracyjną dla twojej karty oraz powiąż swoją kartę ze sterownikiem pcnet_cs. Zrestartuj cardmgr, aby użyć nowego zaktualizowanego pliku konfiguracyjnego. Jeśli sterownik pcnet_cs twierdzi, że nie może określić adresu sprzętowego twojej karty ethernet-owej, to zmodyfikuj nowy plik konfiguracyjny, aby powiązać kartę ze sterownikiem karty pamięci - memory_cs. Zrestartuj cardmgr, aby użyć nowego zaktualizowanego pliku konfiguracyjnego. Będziesz musiał znać adres sprzętowy swojej karty sieciowej. Adres ten jest serią dwucyfrowych szesnastkowych liczb, często wydrukowanych na karcie. Jeśli go tam nie ma, możesz użyć sterownika DOS-owego, aby go wyświetlić. W każdym razie, jak go już znasz to uruchom: dd if=/dev/mem0a count=20 | od -Ax -t x1 i poszukaj linijki z twoim adresem. Tylko parzyste bajty są zdefiniowane, wiec zignoruj bajty nieparzyste w wyniku. Zapisz szesnastkowy offset pierwszego bajtu adresu. Teraz wyedytuj modules/pcnet_cs.c i znajdź strukturę hw_info. Będziesz musiał utworzyć nową pozycję dla twojej karty. Pierwsze pole jest offsetem pamięci. Następne trzy pola to pierwsze trzy bajty adresu sprzętowego. Ostatnie pole zawiera flagi dla konkretnych cech karty; na początek spróbuj ustawić tu 0. Po edycji pcnet_cs.c, skompiluj i zainstaluj nowy moduł. Zmodyfikuj jeszcze raz /etc/pcmcia/config i zmień powiązania karty z memory_cs na pcnet_cs. Postępuj zgodnie z instrukacjami dla przeładowywania pliku konfiguracyjnego i wszystko powinno być ustawione. Przyślij mi proszę kopie twoich nowych pozycji konfiguracyjnych i hw_info. Jeśli nie możesz znaleźć adresu sprzętowego swojej karty w formie szesnastkowej, ostateczną metodą może okazać się jawne podanie adresu w czasie inicjacji modułu pcnet_cs. Popraw plik /etc/pcmcia/config dodając opcję hw_addr=: module "pcnet_cs" opts "hw_addr=0x00,0x80,0xc8,0x01,0x02,0x03" Oczywiście zamiast podanego adresu podaj adres swojej karty w odpowiednim miejscu. 55..33.. IInntteerrffeejjss PPCCMMCCIIAA ddoo ddyysskkiieetteekk.. Pakiet ten nie obsługuje jeszcze interfejsów używanych przez Compaq Aero i kilka innych laptop-ów. Kruczkiem w obsłudze dyskietek w Aero jest to, że Aero wydaje się używać ustawianego kontrolera PCMCIA, aby obsługiwać DMA dla dyskietek. Nie wiedząc jak to jest dokładnie robione, nie ma sposobu, aby zaimplementować to w Linux-ie. Jeśli kontroler dyskietek jest obecny podczas startowania Aero, BIOS Aero skonfiguruje kartę i Linux zidentyfikuje ją jako normalną stację dyskietek. Kiedy załadowane są sterowniki Linux-owe PCMCIA, zauważą, że karta jest już skonfigurowana i skojarzona ze sterownikiem Linux- owym i zostawią to gniazdo w spokoju. Tak więc napęd może być używany jeśli jest obecny podczas startu, ale nie może być wymieniany podczas pracy (hot swapping). 55..44.. CCoo jjeesstt zz oobbssłłuuggąą kkaarrtt XXiirrccoomm ?? Dzięki pracy Wernera Kocha w aktualnej wersji pakietu PCMCIA zawarty jest sterownik do kart ethernetowej i ethernet/modem firmy Xircom. Specjalnie dla dyskusji na temat rozwoju sterownika Xircom ustawiłem forum HyperNews pod adresem hyper.stanford.edu/HyperNews/get/pcmcia/xircom.html <http://hyper.stanford.edu/HyperNews/get/pcmcia/xircom.html>. Przez długi czas karty Xircom nie były obsługiwane ponieważ Xircom miał taką zasadę, żeby nie ujawniać technicznych informacji o swoich kartach. Jednak trochę zmienili zasady i teraz rozprowadzają informacje o sterowniku. 66.. WWsskkaazzóówwkkii ddoo śślleeddzzeenniiaa ((ddeebbuuggggiinngg)) ii iinnffoorrmmaaccjjee ddoo pprrooggrraammoowwaanniiaa.. 66..11.. JJaakk mmooggęę wwyyssłłaaćć ppoommooccnnyy lliisstt oo bbłłęęddzziiee ?? Najlepszym sposobem na zgłaszanie błędów jest użycie listy komunikatowej na HyperNews-ach na stronie dotyczącej PCMCIA na Linux- ie. W ten sposób inni także mogą śledzić bieżące problemy (i poprawki czy obejścia jeśli są dostępne). Oto rzeczy, które powinny być zawarte w każdym liście na temat błędu: ˇ Typ twojego systemu i wynik polecenia probe. ˇ Jakich kart PCMCIA używasz. ˇ Wersja twojego jądra i wersja PCMCIA. ˇ Jakiekolwiek zmiany, jakie zrobiłeś w pliku /etc/pcmcia albo rc.pcmcia. ˇ Wszystko co jest związane z kartami PCMCIA z log-ów systemowych. Przed wysłaniem listu o błędzie, upewnij się proszę, że używasz najnowszej wersji sterowników do PCMCIA. Szczerze powiem, że czytanie o czymś, co już naprawiłem nie jest najbardziej konstruktywnym sposobem na spędzanie czasu. Jeśli twój problem związany jest także z nagłym przerwaniem działania jądra, podczas którego wyświetlane są zawartości rejestrów, to zawartość ta jest przydatna tylko wtedy jeśli możesz wskazać adres EIP. Jeśli jest on w głównym jądrze, sprawdź ten adres w System.map, aby zidentyfikować funkcję, która była w tym momencie wykonywana. Jeśli przerwa nastąpiła podczas działania jakiegoś modułu ładowalnego, jest to trochę trudniejsze do prześledzenia. W bieżącej wersji narzędzi do modułów program ksyms -m wyświetli adres podstawowy każdego modułu. Weź moduł, który zawiera podane EIP, i odejmij jego adres podstawowy od EIP, aby otrzymać w ten sposób offset w module. Uruchom wtedy gdb z tym modułem jako parametr i sprawdź otrzymany offset poleceniem list. Zadziała to tylko wtedy kiedy dany moduł był skompilowany z opcją -g, czyli z informacjami dla debugger-a. Jeśli nie masz dostępu do WWW, informacje o błędach można wysyłać do mnie na adres dhinds@hyper.stanford.edu. Chociaż wolę, aby informacje takie były wysyłane na mojej stronie WWW, tak żeby inni także mogli je widzieć. 66..22.. IInnffoorrmmaaccjjee nnaa tteemmaatt nniisskkooppoozziioommoowweeggoo śślleeddzzeenniiaa PPCCMMCCIIAA.. Moduły PCMCIA zawierają dużo warunkowo skompilowanego kodu śledzenia. Większość tego kodu jest pod kontrolą definicji preprocesora PCMCIA_DEBUG. Jeśli jest to niezdefiniowane, to kod do śledzenia nie zostanie wkompilowany. Jeśli jest utawione na 0, kod ten jest wkompilowany, ale nieaktywny. Im większe poziomy tym więcej informacji. Każdy moduł stworzony ze zdefiniowanym symbolem PCMCIA_DEBUG będzie miał parametr typu _I_n_t_e_g_e_r, pc_debug, który kontroluje ilość pojawiających się informacji. Może to być ustawiane wtedy, kiedy moduł jest ładowany, tak więc wyjście może być kontrolowane, na zasadzie "dla każdego modułu" bez potrzeby przekompilowywania. Jest kilka narzędzi do śledzenia w podkatalogu debug_tools/ w dystrybucji PCMCIA. Narzędzia dump_tcic i dump_i365 generują kompletny zrzut rejestrów kontrolera PCMCIA i dekodują dużo informacji z rejestrów. Są najbardziej pożyteczne wtedy, gdy masz dostęp do schematu danych konkretnego układu scalonego kontrolera. Narzędzie dump_tuples wyświetla CIS-y (Card Information Structure) danej karty i dekoduje niektóre z najważniejszych bitów. A narzędzie dump_cisreg wyświetla rejestry lokalnej konfiguracji karty. Sterownik memory_cs do karty pamięci jest także czasami przydatny do śledzenia. Może on zostać powiązany z każdą kartą PCMCIA i nie wpływa to negatywnie na inne sterowniki. Może on zostać użyty do bezpośredniego dostępu do pamięci atrybutowej karty albo zwykłej pamięci. 66..33.. JJaakk mmaamm nnaappiissaaćć sstteerroowwnniikk CCaarrdd SSeerrvviicceess ddllaa nnoowweejj kkaarrttyy ?? Najlepszą dokumentacją dla interfejsu PCMCIA dla Linux-a jest "The Linux PCMCIA Programmer's Guide". Najnowsza wersja jest zawsze dostępna z hyper.stanford.edu albo na WWW - hyper.stanford.edu/HyperNews/get/pcmcia/home.html <http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html>. Dla urządzeń, które są względnie podobne do normalnych urządzeń kart ISA, będziesz mógł przypuszczalnie użyć fragmentów sterowników Linux- a, które już istnieją. W niektórych przypadkach, największym problem będzie takie przerobienie już istniejącego sterownika, aby mógł on sobie poradzić z wkładaniem i wyjmowaniem danej karty. W bieżącej wersji, sterownik do karty pamięci jest jedynym sterownikiem, który nie zależy od żadnej części innego sterownika, który wykonywałby za niego brudną robotę. Napisałem szkielet sterownika z dużą ilością komentarzy, które wyjaśniają jak sterownik się komunikuje z Card Sevices; znajdziesz ten szkielet w dystrybucji źródłowej PCMCIA w podkatalogu modules/skeleton.c. 66..44.. WWsskkaazzóówwkkii ddllaa aauuttoorróóww sstteerroowwnniikkóóww kklliieennttóóww PPCCMMCCIIAA.. Zdecydowałem, że nie jest rozsądne dla mnie, abym rozprowadzał wszystkie sterowniki klientów PCMCIA jako część pakietu PCMCIA. Każdy nowy sterownik czyni główny pakiet trudniejszym do utrzymania i, co można było przewidzieć, dołączenie sterownika przenosi trochę pracy opiekuna z autora na mnie. W zamian za to, zdecyduję osobno dla każdego przypadku (case by case) czy włączyć czy nie sterowniki pisane przez osoby trzecie, w zależności od żądań użytkowników jak i możliwości utrzymywania. Sugeruję, żeby autorzy sterowników, które nie dostały się do głównego pakietu, zaadoptowali następujący schemat przy przygotowywaniu ich sterowników do dystrybucji. Pliki sterownika powinny być ułożone w takiej samej strukturze katalogów jak w głównej dystrybucji, tak, żeby można było rozpakować sterownik ten w głównym katalogu źródeł głównej dystrybucji. Sterownik powinien posiadać pliki źródłowe (w Katalog główny powinien zawierać także plik README. W katalogu głównym powinien się także znajdować makefile, ustawiony w taki sposób, że "make -f ... all" i "make -f ... install" skompiluje sterownik i zainstaluje wszystkie potrzebne pliki. Jeśli plik ten posiada rozszerzenie .mk, to zostanie on automatycznie wykonany przez główny pliku Makefile dla celów all i install. Oto przykład jak taki plik mógłby być skonstruowany. # Przykładowy Makefile dla sterowników pisanych przez osoby trzecie FILES = sample_cs.mk README.sample_cs \ modules/sample_cs.c modules/sample_cs.h \ etc/sample etc/sample.opts man/sample_cs.4 all: $(MAKE) -C modules MODULES=sample_cs.o install: $(MAKE) -C modules install-modules MODULES=sample_cs.o $(MAKE) -C etc install-clients CLIENTS=sample $(MAKE) -C man install-man4 MAN4=sample_cs.4 dist: tar czvf sample_cs.tar.gz $(FILES) Plik ten używa celów install zdefiniowanych w pakiecie PCMCIA 2.9.10 i późniejszych. Zawiera on także cel "dist" dla wygody autora sterownika. Przypuszczalnie będziesz chciał dodać numer wersji do ostatecznego pakietu (np. sample_cs-1.5.tar.gz). Pełna dystrybucja mogłaby wyglądać tak: sample_cs.mk README.sample_cs modules/sample_cs.c modules/sample_cs.h etc/sample etc/sample.opts man/sample_cs.4 Z takim układem katalogów, po rozpakowaniu sterownik staje się częścią głównej dystrybucji. Może korzystać z plików nagłówkowych PCMCIA, tak jak i z możliwości sprawdzania konfiguracji systemu użytkownika i automatycznego sprawdzania zależności tak samo jak "normalny" sterownik klienta. Będę akceptował sterowniki przygotowane zgodnie z tą specyfikacją i umieszczał je w katalogu /pub/pcmcia/contrib na moim serwerze FTP - hyper.stanford.edu. Plik README w tym katalogu będzie opisywał jak rozpakować sterownik pisany przez trzecią osobę. Interfejs sterownika PCMCIA nie zmienił się wiele przez ten czas i prawie zawsze zachowywał wsteczną kompatybilność. Sterownik klienta nie będzie musiał być aktualizowany dla pobocznych wersji w pakiecie głównym PCMCIA. Spróbuję powiadamiać autorów sterowników o zmianach, które wymagają uaktualnienia ich sterowników. 66..55.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl A możesz tu znaleźć dość dużo może nie błędów, ale konstrukcji, które nie są podobne do języka polskiego. Ale to wszystko dlatego, że jest trochę ciężko przetłumaczyć zdanko z angielskiego jeśli jest obok siebie 4 czy czasami nawet 6 rzeczowników ;) Jeśli zauważysz taki stwór i wpadniesz na lepsze określenie, napisz. Jeśli będzie to w miarę sensowne, to napewno tego nie zignoruję. Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez tłumacza to odwołania do polskich serwerów ftp. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Printing-HOWTO.pl.txt��������������������������������������������������0100664�0001750�0001750�00000156115�06717116340�020252� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Drukowanie w Linux-ie Autor: Grant Taylor, gtaylor+pht@picante.com v3.14, 23 Września 1997 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.3, 12 Lutego 1998 Jest to dokument zawierający informacje na takie tematy jak: gen­ erowanie wydruku, podglądnięcie go przed drukowaniem, wydrukowanie go oraz przefaxowanie czegoś pod Linux-em (i innymi Unix-ami w ogólności). Dokument ten został napisany w standardzie ISO-8859-2. Oryginał można znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie. 1.1. Historia 1.2. Prawa autorskie. 2. Jak drukować. 3. Urządzenia dotyczące drukarki w jądrze. 3.1. Urządzenie lp. 3.2. Urządzenie parport (jądra >= 2.1.33) 3.3. Urządzenia szeregowe. 4. Obsługiwane drukarki. 5. Jakie oprogramowanie do kolejkowania ? 6. Jak to działa - podstawy. 7. Jak poustawiać to wszystko - podstawy. 7.1. Tradycyjna konfiguracja lpd. 7.2. Prawa dostępu do plików. 8. Zdobywanie oprogramowania do drukowania. 8.1. Magicfilter. 8.2. Filtr APS. 8.3. EZ-Magic. 9. Rozwiązania sprzedawców. 9.1. RedHat. 9.2. Inne dystrybucje. 10. Ghostscript. 10.1. Wywoływanie Ghosscript-u. 10.2. Dostrajanie wyników w Ghostscripcie. 10.2.1. Umiejscowienie i rozmiar wyniku. 10.2.2. Gamma, rozmiar pikseli itp. 11. Jak drukować poprzez sieć. 11.1. Na hoście unix/lpd. 11.1.1. Przy pomocy lpd. 11.1.2. Przy pomocy rlpr. 11.2. Na Win95, WinNT, LanManager lub Sambie. 11.3. Na drukarce NetWare. 11.4. Na drukarce EtherTalk (Apple). 11.5. Na drukarce HP i innych ethernetowych drukarkach. 11.5.1. Na starszych drukarkach HP. 11.6. Uruchamianie 11.7. Z Windows. 11.8. Z Apple. 11.9. Z Netware. 12. Jak drukować na fax-ie. 12.1. Używanie faxmodemu. 12.2. Używanie Zdalnego Serwisu Drukowania. 13. Jak wygenerować coś wartego drukowania. 13.1. Języki "Markup". 13.2. WYSIWYG. 14. Podgląd przed wydrukiem. 14.1. PostScript. 14.2. TeX dvi. 15. Drukarki szeregowe pod lpd. 15.1. Ustawianie w printcap-ie. 15.2. Starsze drukarki szeregowe, które gubią znaki. 16. Wyrazy uznania. 16.1. Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Printing HOWTO powinno zawierać wszystko co powinieneś wiedzieć, aby ustawić drukarkę na swoim Linux-ie. Jest to trochę bardziej skomplikowane niż w świecie pokaż-i-kliknij Microsoft-u i Apple'a, ale za to bardziej elastyczne i z pewnością prostsze jeśli chodzi o administrowanie w dużych sieciach lokalnych. Dokument ten jest tak ułożony, że większość będzie musiała przeczytać tylko pierwszą połowę czy coś koło tego. Większość nieciekawych informacji i takich, które są zależne od sytuacji znajduje się w drugiej połowie i łatwo je znaleźć w spisie treści, podczas gdy informacje zawarte w sekcjach 9 i 10 będą potrzebne większości. Większość informacji z poprzedniej wersji zostało usuniętych, ponieważ zdecydowałem się na napisanie tego dokumentu całkowicie od nowa. Zrobiłem tak, bo poprzednie wersje były takie wielkie - około 60 stron A4, i narracja była do kitu. Jeśli nie znalazłeś tutaj odpowiedzi to powinieneś a) przeszukać poprzednią wersję na stronie domowej tego HOWTO <http://www.picante.com/~gtaylor/pht/>, b) podrzucić mi informację co powinno tu być, a nie ma tego. Strona domowa tego HOWTO <http://www.picante.com/~gtaylor/pht/> jest dobrym miejscem na szukanie nowszych wersji tego dokumentu; jest ona oczywiście także dystrybuowana przez Projekt Dokumentacji Linux-a; archiwum zawierające dokumenty HOWTO możesz znaleźć w Polsce pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO. 11..11.. HHiissttoorriiaa To jest trzecia generacja, a szczerze mówiąc, to trzecia edycja zrobiona od nowa, dokumentu Printing-HOWTO. Historia PHT może w ujęciu chronologicznym wyglądać tak: 1. Napisałem Printing-HOWTO w 1992 w odpowiedzi na wiele pytań pojawiających się na grupie comp.os.linux dotyczących drukowania napisałem PHT i wysłałem go tam. Dokument ten wyprzedził Projekt Dokumentacji Linux-a o kilka miesięcy i był pierwszym dokumentem a'la FAQ zwanym HOWTO. Edycja ta była w czystym ASCII. 2. Po dołączeniu do PDL, PHT zostało wcielone do tegoż projektu przez Briana McCauley _<_B_._A_._M_c_C_a_u_l_e_y_@_b_h_a_m_._a_c_._u_k_>; przez kolejne dwa lata współtworzyliśmy PHT. Po jakimś czasie dołączyliśmy pracę Karla Auera_<_K_a_r_l_._A_u_e_r_@_a_n_u_._e_d_u_._a_u_>. Ta generacja PHT była w TeXinfo oraz także w PS, HTML, ASCII i Info. 3. Po tym jak pozwoliliśmy PHT żeby trochę "podgniło" przez rok i po nieskutecznych poszukiwaniach jakiejś osoby, która zajęłaby się PHT, miało miejsce powstanie tej wersji. Ta generacja PHT jest w Linuxdoc-SGML. 11..22.. PPrraawwaa aauuttoorrsskkiiee.. Prawa autorskie należą do Granta Taylora (c) 1997. Proszę kopiować i dystrybuować ten dokument do woli, ale nie modyfikoewać ani nie zapomnieć mojego nazwiska. 22.. JJaakk ddrruukkoowwaaćć.. Jeśli masz już zainstalowany program lpd i jest on ustawiony dla twojej drukarki przez kogokolwiek, to wszystko czego potrzebujesz, to nauczyć się posługiwać poleceniem _l_p_r. Dokument Printing-Usage-HOWTO <http://www.jtz.org.pl/~bart/Tlumaczenie/Html/Printing-Usage- HOWTO.pl.html> zawiera opis tego polecenia i kilku innych używanych do manipulowania kolejką wydruku. Jednak jeśli masz nowy system albo nową drukarkę, to będziesz musiał ustawić serwis drukowania w ten lub inny sposób zanim będziesz mógł drukować. Czytaj dalej! 33.. UUrrzząąddzzeenniiaa ddoottyycczząąccee ddrruukkaarrkkii ww jjąąddrrzzee.. 33..11.. UUrrzząąddzzeenniiee llpp.. Jądro Linux-a (<=2.1.32), zakładając, że wkompilowałeś lub załadowałeś urządzenie _l_p (polecenie cat /proc/devices powinno pokazać urządzenie _l_p), dostarcza jedno lub więcej urządzeń _/_d_e_v_/_l_p_0, _/_d_e_v_/_l_p_1 i _/_d_e_v_/_l_p_2. NNiiee ssąą one kojarzone dynamicznie, ale są one na stałe przypisane konkretnym adresom I/O. Oznacza to, że twoja pierwsza drukarka może być na _l_p_0, albo _l_p_1 w zależności od sprzętu. Spróbuj obu. ;) Kilku użytkowników zgłosiło, że ich dwukierunkowe porty lp nie zostają wykryte jeśli używają starszego, jednokierunkowego kabla. Sprawdź czy masz przyzwoity kabel. Na danym porcie nie można mieć na raz sterowników _p_l_i_p oraz _l_p. Ale można załadować jeden albo drugi sterownik w każdej chwili; ręcznie albo przez _k_e_r_n_e_l_d przy jądrze w wersji 2.x.x (lub późniejsze 1.3.x). Jeśli dokładnie ustawisz przerwania itp., to możesz przypuszczalnie mieć _p_l_i_p na jednym porcie, a _l_p na drugim. Jedna osoba zrobiła tak, przez edycję sterowników; z niecierpliwością oczekuję osoby, która zrobiłaby to tylko przy użyciu argumentów z linii poleceń. Jest takie narzędzie zwane _t_u_n_e_l_p _<_h_t_t_p_:_/_/_w_w_w_._p_i_c_a_n_t_e_._c_o_m_/_~_g_t_a_y_l_o_r_/_p_h_t_/_m_a_n_/_t_u_n_e_l_p_._h_t_m_l>, przy pomocy którego "root" może ustawiać przerwania i inne opcje na urządzeniu _l_p. Jeśli urządzenie _l_p jest wbudowane w jądro w wersji 1.3.x lub wyższej, to możesz przekazać parametr lp= do jądra, w którym możesz ustawić przerwanie, adres itp. Jeśli sterownik lp jest wbudowany w jądro, to możesz użyć parametru LILO/LOADLIN, aby ustawić adres portu i przerwanie, których sterownik będzie używał. Składnia: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]] Na przykład: lp=0x378,0 lub lp=0x278,5,0x378,7 ** Zauważ, że jeśli używasz tego parametru, to musisz podać *wszystkie* porty, których będziesz używać - nie ma wartości domyślnych. Możesz wyłączyć wbudowany sterownik parametrem lp=0. Jeśli ładujesz sterownik drukarki jako moduł w wersji jądra 2.x.x lub późnej 1.3.x, to możesz podać przerwanie i port jako parametr w linii poleceń przy _i_n_s_m_o_d (albo w pliku /etc/conf.modules, żeby działało także dla kerneld). Parametry to: _i_o_=_p_o_r_t_0_,_p_o_r_t_1_,_p_o_r_t_2 i _i_r_q_=_i_r_q_0_,_i_r_q_1_,_i_r_q_2. Więcej informacji znajdziesz w podręczniku systemowym _m_a_n na stronie dotyczącej _i_n_s_m_o_d. **Dla tych, którzy (jak ja) nigdy nie mogą znaleźć standardowego portu kiedy go potrzeba, to są one takie jak w podanym wyżej drugim przykładzie. Drugi port (_l_p_0) jest pod adresem 0x3bc. Nie mam pojęcia jakiego przerwania zwykle używa. Kod źródłowy linux-owego sterownika portu równoległego jest w pliku /usr/src/linux/drivers/char/lp.c 33..22.. UUrrzząąddzzeenniiee ppaarrppoorrtt ((jjąąddrraa >>== 22..11..3333)) Począwszy od jądra w wersji 2.1.33 (dostępne także jako łata dla jądra 2.0.30), urządzenie lp jest po prostu klientem nowego urządzenia parport. Dodanie urządzenia parport naprawia pewną ilość błędów, które dręczyły poprzedni sterownik urządzenia lp - może ono wpółdzielić port z innym urządzeniem, przypisuje dynamicznie dostępne porty równoległe numerom urządzeń zamiast wymuszać z góry narzuconą komunikację pomiędzy adresami I/O a numerami portów i tak dalej. Więcej szczegółów na temat parport podam kiedy sam znajdę się w sytuacji kiedy będę tego używał. A w międzyczasie możesz przeczytać plik Documentation/parport.txt w drzewie ze źródłami jądra albo zajrzyj na stronę parport <http://www.cyberelk.demon.co.uk/parport.html>. 33..33.. UUrrzząąddzzeenniiaa sszzeerreeggoowwee.. Urządzenia szeregowe pod Linux-em zwykle nazywają się /dev/ttyS1 lub podobnie. Narzędzie _s_t_t_y _<_h_t_t_p_:_/_/_w_w_w_._p_i_c_a_n_t_e_._c_o_m_/_~_g_t_a_y_l_o_r_/_p_h_t_/_m_a_n_/_s_t_t_y_._h_t_m_l> pozwala na interaktywne przeglądanie lub określanie ustawień dla portu szeregowego; _s_e_t_s_e_r_i_a_l _<_h_t_t_p_:_/_/_w_w_w_._p_i_c_a_n_t_e_._c_o_m_/_~_g_t_a_y_l_o_r_/_p_h_t_/_m_a_n_/_s_e_t_s_e_r_i_a_l_._h_t_m_l> pozwoli ci na kontrolowanie kilku rozszerzonych właściwości oraz na skonfigurowanie IRQ i adresów I/O dla niestandardowych portów. Więcej na temat portów szeregowych znajdziesz w Serial-HOWTO <http://www.jtz.org.pl/Html/Serial-HOWTO.pl.html> dostępnym także w języku polskim. Jeśli używasz wolnej drukarki szeregowej z kontrolą przepływu (flow control), może się okazać, że niektóre z twoich wydruków są obcinane. Może być to spowodowane zachowaniem portu szeregowego, który wyrzuca wszystkie znaki ze swojego bufora po 30 sekundach od momentu zamknięcia portu. W buforze może się znajdować do 4096 znaków a jeśli twoja drukarka używa kontroli przepływu i jest wystarczająco wolna, tak że nie może przyjąć wszystkich 4096 znaków z portu w ciągu 30 sekund, po tym jak oprogramowanie drukujące zakmnęło port, to końcowa zawartość bufora zostanie utracona. Jeśli w wyniku polecenia _c_a_t _p_l_i_k _> _/_d_e_v_/_t_t_y_S_2 pojawia się cały wydruk dla krótkich plików, a dłuższe są obcinane, to to może być twój problem. Okres 30 sekund może zostać zmieniony poprzez opcję "closing_wait" programu setserial (wersja 2.12 i późniejsze). Porty szeregowe maszyny są z reguły inicjowane poprzez odwołanie do setserial w pliku startowym rc.serial. Odwołanie do portu szeregowego drukarki może być zmodyfikowane, tak aby ustawić closing_wait w tym samym czasie kiedy ustawia inne parametry tego portu. 44.. OObbssłłuuggiiwwaannee ddrruukkaarrkkii.. Jądro Linux-a obsługuje raczej każdą drukarkę, którą możesz podłączyć do szeregowego albo równoległego portu, ale są rzeczy na które trzeba spojrzeć oraz drukarki których nie będziesz w stanie użyć nawet pomimo, że (elektrycznie mówiąc) mogą one komunikować się z Linux-em. W grupie tych niekompatybilnych drukarek przeważają te, które polegają na "Windows Printing System". (Często są one oznaczone "for Windows".) Te drukarki _n_i_e współpracują z Linux-em. Nie mają żadnych inteligentnych części i polegają na procesorze komputera, który musi zrobić większość tego co kiedyś robiły procesory w drukarce. Niestety te zadania mogą być wykonane tylko przez sterowniki dostarczone przez producenta, które działają tylko pod Windows. Więc nie kupuj takiej drukarki do Linux-a. Jeśli chodzi o drukarki, które _d_z_i_a_ł_a_j_ą z Linux-em, to najlepszym wyborem jest kupienie drukarki z interpreterem PostScript-u. Prawie każde oprogramowanie pod Unix-a, które tworzy jakiś drukowalny wynik tworzy go w PostScripcie, więc oczywistym jest, że najlepiej kupić drukarkę obsługującą PostScript. Niestety, ale obsługa tego języka poza drukarkami laserowymi jest bardzo rzadko spotykana. Jeśli nie uda ci się wydobyć (raczej większego) budżetu potrzebnego na kupno drukarki PostScript-owej, możesz użyć jakiejkolwiek drukarki obsługiwanej przez Ghostcript, darmowy interpreter PostScript-u używanego do druku PostScript-owego. Na domowej stronie Ghostscript-u <http://www.cs.wisc.edu/~ghost/> znajdziesz obsługiwane drukarki i informacje na temat nowych i ekpserymentalnych sterowników. Pomóż proszę w ulepszaniu Ghostscript-u poprzez zgłaszanie sukcesów bądź porażek jak o to proszą. 55.. JJaakkiiee oopprrooggrraammoowwaanniiee ddoo kkoolleejjkkoowwaanniiaa ?? Do niedawna wybór dla użytkowników Linux-a był prosty - wszyscy używali tego samego, starego lpd wziętego bezpośrdnio z kodu Net-2 BSD. Nawet dzisiaj większość sprzedawców dostarcza ten właśnie program. Ale to się zaczyna zmieniać. Systemy SVR4 włączając w to Solaris Sun-a dostarczają całkiem inny pakiet do kolejkowania oparty na _l_p_s_c_h_e_d. Pojawiają się także oznaki, iż niektórzy sprzedawcy Linux- a przejdą na dostarczanie LPRng, o wiele mniej zabytkowej implementacji, która jest dostępna za darmo. LPRng jest o wiele prostszy w administrowaniu dla większych instalacji i ma o wiele przyjaźniejszą bazę danych aniżeli lpd. Na dzień dzisiejszym nawet w świetle nowych opcji, lpd jest przypuszczalnie dobry dla większości użytkowników Linux-a. Raz ustawiony działa dobrze i jest łatwy w zrozumieniu oraz szeroko udokumentowany w książkach o Unix-ie. Jeśli chcesz więcej informacji na temat LPRng to zobacz LPRng - An Enhanced Printer Spooler <http://ltpwww.gsfc.nasa.gov/ltpcf/about/unix/Depotdoc/LPRng/>. Przyszłe wersje tego dokumentu będą zawierały informacje o zwykłym lpd oraz o LPRng. 66.. JJaakk ttoo ddzziiaałłaa -- ppooddssttaawwyy.. Żeby drukowanie działało, musisz zrozumieć jak działa system lpd. LPD to skrót od Line Printer Daemon i odnosi się w różnych kontekstach do demona i do całej kolekcji programów, które drukują. Są to: llppdd Demon kolejkowania. Jeden z nich jest uruchomiony, aby kontrolować wszystko na maszynie, I jeden jest uruchamiany dla drukarki podczas drukowania. llpprr Polecenie dla użytkowników do kolejkowania wydruków. Lpr kontaktuje się z lpd i umieszcza nowe zadanie w katalogu kolejkowania. llppqq Wyświetla wydruki umieszczone w kolejce. llppcc Polecenie do kontrolowania systemu lpd. Poleceniem tym możesz wystartować, zatrzymać, zmienić porządek w kolejce drukowania. llpprrmm Usuwa wydruk z kolejki. To jak to wszystko działa ? No... kiedy system startuje, uruchamiany jest lpd. Czyta on plik /etc/printcap, aby się dowiedzieć dla jakich drukarek będzie obsługiwał kolejki. Za każdym razem kiedy ktoś uruchomi _l_p_r, lpr kontaktuje się z lpd poprzez gniazdko /dev/printer i podaje mu wydruk oraz kilka informacji o tym kto drukuje i jak ma to być wydrukowane. Potem lpd drukuje otrzymany plik na odpowiedniej drukarce. System lp powstał w czasach kiedy większość drukarek była drukarkami liniowymi - tzn. ludzie drukowali w większośći teksty w ASCII. Jak się okazało, nie trzeba dużo pracy, aby lpd działał dobrze dla dzisiejszych wydruków takich jak PostScript, czy text, czy dvi, czy ... 77.. JJaakk ppoouussttaawwiiaaćć ttoo wwsszzyyssttkkoo -- ppooddssttaawwyy.. 77..11.. TTrraaddyyccyyjjnnaa kkoonnffiigguurraaccjjaa llppdd.. Minimalne ustawienia objawiają się tym, że system może kolejkować pliki i je drukować. Nie będzie zwracał uwagi na to, czy twoja drukarka je zrozumie czy nie i przypuszczalnie nie pozwoli ci na zrobienie atrakcyjnego wydruku. Jednak jest to pierwszy krok do zrozumienia, więc czytaj dalej ! Ogólnie mówiąc, żeby dodać kolejkę dla drukarki musisz dodać pozycję do /etc/printcap i utworzyć katalog do kolejkowania w /var/spool/lpd/. Pojedyncza pozycja w /etc/printcap wygląda tak: # LOCAL djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :sh: Definiuje ona drukarkę o nazwach _l_p, _d_j i _d_e_s_k_j_e_t, z katalogiem kolejkowania /var/spool/lpd/dj/, bez limitu na każdy wydruk, która drukuje na urządzeniu /dev/lp0 i która nie ma strony tytułowej (z danymi o osobie, która drukowała itp.) na początku wydruku. Teraz poczytaj stronę w podręczniku systemowym na temat _p_r_i_n_t_c_a_p. Powyższy przykład wygląda bardzo prosto, ale jest tam jeden kruczek - drukarka będzie tak długo dobrze drukowała, dopóki będę wysyłał pliki, które ona rozumie. Na przykład wysłanie na drukarkę zwykłego unix- owego pliku tekstowego spowoduje, że na papierze pojawi się coś takiego: To jest pierwsza linia. To jest druga linia. To jest trzecia linia. Wysłanie na tę drukarkę pliku w PostScripcie spowodowałoby wydrukowanie pięknej listy poleceń PostScript z dodatkowym efektem schodków :) - beż żadnego pożytecznego efektu. Wynika z tego jasno, że czegoś tu jeszcze brakuje - i to jest właśnie celem filtrowania. Ci, którzy czytali stronę podręcznika systemowego o pliku "printcap" mogli zuważyć atrybuty kolejki - _i_f i _o_f. _i_f - czyli input filter - to właśnie to czego potrzebujemy. Jeśli napiszemy krótki skrypt o nazwie "filter", który doda przed końcem linii znak CR (cariage return - powrót karetki), to efekt schodów może być wyeliminowany. Tak więc musimy dodać do naszej pozycji w /etc/printcap jeszcze jedną linię informującą o istniejącym filtrze: lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :if=/var/spool/lpd/dj/filter:\ :sh: Przykładem prostego skryptu może być: #!perl # Powyższa linia tak na prawdę powinna zawierać pełną ścieżkę do perl-a # Skrypt ten musi być wykonywalny: chmod 755 filter while(<STDIN>){chop $_; print "$_\r\n";}; # Możesz też zakończyć znacznikiem "form feed": print "\f"; Jeśli zrobimy powyższe, to otrzymamy drukarkę, na którą będziemy mogli wysyłać pliki tekstowe z Unix-a i otrzymamy sensowny wydruk. (Tak, są 4 miliony lepszych sposobów na napisanie tego skryptu, ale tylko kilka jest tak bardzo ilustracyjnych. Ty masz to napisać bardziej wydajnie.) Jedynym problemem jest to, że drukowanie plików tekstowych nie jest takie znowu fajne - byłoby o wiele lepiej, jeśli moglibysmy drukować pliki PostScriptowe czy graficzne. No... tak, byłoby i jest to łatwe do zrobienia. Metoda jest rozszerzeniem tego co zrobiliśmy, żeby się pozbyć schodków. Jeśli napiszesz program, który może przyjmować różne formaty i tłumaczyć je na język zrozumiały dla drukarki, to masz naprawdę dobry filtr. Taki filtr nazywany jest filtrem magicznym. Nie męcz się nad pisaniem własnego - o ile nie drukujesz jakichs cudów - na sieci jest już pełno filtrów, które możesz śmiało używać. 77..22.. PPrraawwaa ddoossttęęppuu ddoo pplliikkóóww.. Ponieważ otrzymałem wiele próśb, załączam listę plików wraz z prawami dostępu jakie mają one w moim systemie. Jest wiele lepszych sposobów na zrobienie tego - idealnym sposobem jest używanie programów tylko z atrybutami SGID, a nie robienie wszystkiego SUID dla "root-a", ale mój system tak już miał i dla mnie to działa. -r-sr-sr-x 1 root lp /usr/bin/lpr* -r-sr-sr-x 1 root lp /usr/bin/lprm* -rwxr--r-- 1 root root /usr/sbin/lpd* -r-xr-sr-x 1 root lp /usr/sbin/lpc* drwxrwxr-x 4 root lp /var/spool/lpd/ drwxr-xr-x 2 root lp /var/spool/lpd/lp/ W chwili obecnej lpd musi być uruchamiany z prawami "root-a", ponieważ używa on numerów portów zastrzeżonych dla systemu (poniżej 1024). Po tym jak już się podczepi pod ten port powinien się zmienić na lp.lp, ale raczej tego nie robi... 88.. ZZddoobbyywwaanniiee oopprrooggrraammoowwaanniiaa ddoo ddrruukkoowwaanniiaa.. Wiele napisanych pakietów filtrujących (i innych programów związanych z drukowaniem) dostępnych jest na SunSite Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/printing/>. Można tam znaleźć takie programy jak: psutils, a2ps, mpage, dvitodvi, flpr. 88..11.. MMaaggiiccffiilltteerr.. "Magic filter" jest jednym z najlepszych pakietów filtrujących; zaprojektowany jest do instalacji w 10 minut. Powiedziano mi też, że zawiera specjalną obsługę LPRng. Title: magicfilter Version: 1.1b Entered-date: 04APR95 Description: A customizable, extensible automatic printer filter. Lets you automatically detect and print just about any data type you can find a conversion utility for. This filter is written in C and is controlled completely from an external printer configuration file. This version adds automagic creation of configuration files based on the installed software on your system, courtesy of GNU Autoconf. This version is a bug fix from 1.1/1.1a; filters for non-ASCII capable PostScript printers have been added. Author: H. Peter Anvin <hpa@zytor.com> Primary-site: sunsite.unc.edu 53000 /pub/Linux/system/printing/magicfilter-1.1b.tar.gz Copying-policy: GPL 88..22.. FFiillttrr AAPPSS.. Innym z wielu magicznych filtrów jest APS zrobiony przez Andreasa Klemma. Linux Software Map wygląda tak: Begin3 Title: apsfilter Version: 4.9.1 Entered-date: Montag, 10. Juli 1995, 21:22:35 Uhr MET DST Description: magicfilter for lpd with auto filetype detection Keywords: lpd magicfilter aps apsfilter Original-site: ftp-i2.informatik.rwth-aachen.de /pub/Linux/pak/APSfilter/aps-491.tgz 211KB aps-491.tgz Platforms: C-Compiler, gs Postscript emulator, pbmutils Copying-policy: GPL End Filtr APS instaluje się jako filtr _i_f dla kolejki drukowania, i tłumaczy z wielu popularnych typów plików na polecenia twojej drukarki.. Rozumie np. tekst, PostScript, dvi, gif i inne. 88..33.. EEZZ--MMaaggiicc.. EZ-Magic to kolejny pakiet filtrujący, napisany w bash-u, dostepny na sunsite. Title: ez-magic printer filter Version: 1.0.5 Entered-date: January 26, 1997 Description: ez-magic is a printer filter that supports 8 common file formats (txt,ps,gif,bmp,pcx,png,jpg,tif) for printing. It can print over a network (SMB), or to a local printer. Reads from a file, STDIN, or lpd. Simple to use and configure. Just one script file, no huge manuals and multibillion drivers. The only catch is that you need a few common helper programs like netpbm and ghostscript. Written in bash. Easy to add formats and code. Still more bugs than I have appendages, but less than the number of grams of fat in a hot dog. Pre-configured for HP DeskJet 870Cse over network. Comparable to apsfilter and others. Keywords: magic filter, print, graphics, samba, network, smb, ghostscript, postscript, gif, jpg, simple Author: toby@eskimo.com (Toby Reed) Maintained-by: toby@eskimo.com (Toby Reed) Primary-site: http://www.eskimo.com/~toby/ez-magic-1.0.5.tar.gz 38 kb ez-magic-1.0.5.tar.gz Alternate-site: sunsite.unc.edu /pub/Linux/system/printing 38 kb ez-magic-1.0.5.tar.gz Copying-policy: Copyrighted, full manipulation rights, with one or two restrictions. 99.. RRoozzwwiiąązzaanniiaa sspprrzzeeddaawwccóóww.. [ Sekcja ta, jest z definicji niekompletna. Przysyłaj szczegóły twojej ulubionej dystrybucji. ] 99..11.. RReeddHHaatt.. W RedHacie znajduje się graficzne narzędzie do admiistracji, przy pomocy którego można dodawać drukarki odległe oraz lokalne. Pozwala ono na wybór drukarki z obsługą "ghostscript" oraz pliku urządzenia, do którego kierowany jest wydruk; potem dana drukarka instalowana jest w /etc/printcap. Następnie tworzony jest krótki filtr magiczny PostScript-ASCII na podstawie _g_s i _n_e_n_s_c_r_i_p_t. Rozwiązanie to działa całkiem dobrze i jest łatwe do ustawienia dla popularnych przypadków. 99..22.. IInnnnee ddyyssttrryybbuuccjjee.. Proszę o informacje jakie są rozwiązania w innych dystrybucjach. 1100.. GGhhoossttssccrriipptt.. Ghostscript <http://www.cs.wisc.edu/~ghost/> jest najbardziej znaczącym programem do drukowania dla Linux-a. Większość oprogramowania do drukowania pod Unix-a generuje PostScript, który jest opcją dla drukarki wartą ok. $100. Jednak ghostscript jest za darmo i wygeneruje język dla twojej drukarki z PostScriptu. Jeśli jest on podczepiony pod filtr wejściowy dla lpd, to daje wirtualną drukarkę PostScriptową i bardzo ułatwia życie. Ghostscript jest dostępny w dwóch postaciach. Komercyjna wersja Ghostscript-u pod nazwą Alladin Ghostscript może być używana dla celów osobistych, ale nie może być rozprowadzana w komercyjnych dystrybucjach Linux-a. Jest on z reguły o jakiś rok do przodu względem darmowej wersji; w tym momencie na przykład, obsługuje on Adobe Acrobat's Portable Document Format, podczas gdy starsze wersje tego nie mają. Wersja darmowa to GNU Ghostscript i jest starszą wersją Aladdina uprzejmie użyczoną dla GNU. (Cześć i chwała dla Aladdina za to; więcej sprzedawców oprogramowania powinna wspomagać darmowe oprogramowanie w ten sposób) Cokolwiek robisz w _g_s, upewnij się, że uruchomiłeś go z opcją wyłączającą dostęp do plików (-dSAFER). PostScript jest językiem w pełni funkcjonalnym i zły program w PostScripcie mógłby cię przyprawić o ból głowy. Mówiąc o PDF-ie (Adobe's Portable Document Format), właściwie jest to trochę bardziej zorganizowany PostScript w skompresowanym pliku. Ghostscript umie obsłużyć PDF tak samo jak PostScript, więc możesz być pierwszym w swoim otoczeniu z drukarką umiejącą wydrukować PDF. 1100..11.. WWyywwoołłyywwaanniiee GGhhoossssccrriipptt--uu.. Zwykle ghostscript jest uruchamiany przez filtr, który założyłeś, ale w celach śledzenia błędó÷ dobrze jest go uruchamiać ręcznie. gs -help pokaże krótką listę opcji i dotępnych sterowników (lista ta pokazuje tylko sterowniki wkompilowane, a nie wszystkie dostępne sterowniki). Możesz uruchomić gs w celach testowych np. tak: gs <opcje> -q -dSAFER -sOutputFile=/dev/lp1 test.ps 1100..22.. DDoossttrraajjaanniiee wwyynniikkóóww ww GGhhoossttssccrriippcciiee.. Jest wiele rzeczy, które można zrobić jeśli wynik powstały przy opracowywaniu tekstu nie jest zadowalający (właściwie, to możesz zrobić co ci się tylko zamarzy, jeśli masz źródła). 1100..22..11.. UUmmiieejjssccoowwiieenniiee ii rroozzmmiiaarr wwyynniikkuu.. Umiejscowienie, rozmiar i wspolczynik ksztaltu obrazu na stronie jest kontrolowane przez specyficzny dla danej drukarki sterownik w ghostscripcie. Jeśli na przykład zauważysz, że strony wychodzą za krótkie, albo za długie, albo za duże o dwa razy, możesz zajrzeć do źródeł twojego sterownika i dopasować jakiekolwiek parametry, które ci nie pasują. Niestety, każdy sterownik jest inny, tak więc nie mogę ci powiedzieć co tak na prawdę trzeba zmienić, ale większość z nich jest dobrze skomentowana. 1100..22..22.. GGaammmmaa,, rroozzmmiiaarr ppiikksseellii iittpp.. Większość nielaserowych drukarek ma tę wadę, że rozmiar ich punktu jest raczej duży. Rezultatem tego są zbyt ciemne obrazy. Jeśli masz ten problem, to powinieneś użyć swojej własnej funkcji do transferu. Po prostu stwórz następujący plik w katalogu bibliotecznym ghostscripta i dodaj jego nazwę do wywołania _g_s zaraz przed właściwym plikiem. Może będziesz musiał zmienić wartości, żeby pasowały do twojej drukarki. Mniejsze wartości dają jaśniejszy obraz. Mniejsze wartości (0.2 - 0.15) są dobrym pomysłem, szczególnie jeśli twój sterownik używa algorytmu Floyda-Steinberga do rasteryzacji kolorów. ---8<---- gamma.ps ----8<--- %! %transfer functions for cyan magenta yellow black {0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer ---8<------------------8<--- Przez dopasowanie tych wartości możliwe jest też naprawienie drukarki, która ma jakąś wadę związaną z kolorami. Jeśli będziesz robił coś takiego, to radzę użyć pliku _c_o_l_o_r_c_i_r_._p_s, który dostarczany jest wraz z ghostscriptem (w podkatalogu examples) jako przykładowa strona. 1111.. JJaakk ddrruukkoowwaaćć ppoopprrzzeezz ssiieećć.. Jedną z zalet _l_p_d jest to, że można przy jego pomocy drukować na drukarkach przyłączonych fizycznie do innych komputerów. Jeśli dobrze dobierzesz kombinację skryptów i narzędzi, to możesz drukować przy pomocy _l_p_r na wszelkiego rodzaju sieciach. 1111..11.. NNaa hhoośścciiee uunniixx//llppdd.. Aby pozwolić odległym maszynom drukować na twojej drukarce, musisz je umieścić w /etc/hosts.equiv lub /etc/hosts.lpd. (Zauważ, że hosts.equiv ma kilka innych efektów; upewnij się, że wiesz co robisz jeśli umieszczasz tam jakąś maszynę). Używając opcji _r_s możesz pozwolić tylko wybranym użytkownikom na drukowanie; informacje na ten temat znajdziesz na stronie podręcznika systemowego na temat _l_p_d. 1111..11..11.. PPrrzzyy ppoommooccyy llppdd.. Aby wydrukować coś na innej maszynie, musisz zrobić pozycję w /etc/printcap podobną do tej: # REMOTE djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :rm=jakaś.odległa.maszyna.pl:\ :rp=nazwa_drukarki:\ :lp=/dev/null:\ :sh: Zauważ, że lokalnie nadal znajduje się katalog zadań obsługiwany przez _l_p_d. Jeśli odległa maszyna jest zajętą albo wyłączona, to zadania do drukowania czekają lokalnie aż będą mogły zostać wysłane. 1111..11..22.. PPrrzzyy ppoommooccyy rrllpprr.. Żeby ominąć konfigurowanie lokalnego lpd, możesz użyć _r_l_p_r, aby wysłać coś bezpośrednio do kolejki na odległej maszynie. Jest to bardzo użyteczne jeśli drukujesz na różnych drukarkach tylko okazyjnie. Z ogłoszenia o _r_l_p_r: Rlpr używa protokołu TCP/IP, aby wysłać zadania do drukowania do serwera lpd gdziekolwiek w sieci. W przeciwieństwie do lpr, ten *nie* wymaga, żeby drukarki, na których chcesz drukować były znane dla lokalnej maszyny (np. w /etc/printcap) i przez to jest bardziej elastyczny i wymaga mniejszego nakładu pracy administratora. rlpr może zostać użyty gdziekolwiek, gdzie mógłby zostać użyty zwykły lpr, i jest kompatybilny w dół z tradycyjnym lpr z BSD. Najważniejszą zaletą _r_l_p_r jest, to że można drukować *skądkolwiek dokądkolwiek*, niezależnie od tego jak jest skonfigurowany system, z którego chcesz drukować. Może też być użyty jako serwer, tak że klienci uruchomieni na innych maszynach jak np.: netscape, xemacs, itp. mogą drukować na twojej drukarce małym nakładem wysiłku. Rlpr dostępny jest na SUNSite Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/printing/>. 1111..22.. NNaa WWiinn9955,, WWiinnNNTT,, LLaannMMaannaaggeerr lluubb SSaammbbiiee.. Jest dostępne mini-HOWTO "Printing to Windows", które zawiera więcej inormacji niż ta sekcja. Możliwe jest przekierowanie kolejki lpd poprzez program _s_m_b_c_l_i_e_n_t (część pakietu Samba) do serwisu drukowania Samby opartego na TCP/IP. Samba zawiera odpowiedni skrypt pod nazwą _s_m_b_p_r_i_n_t. Krótko mówiąc umieszczasz plik konfiguracyjny dla konkretnej drukarki w katalogu zadań i instalujesz skrypt _s_m_b_p_r_i_n_t jako _i_f. Odpowiednia pozycja w /etc/printcap powinna wyglądać tak: lp|remote-smbprinter:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lp:\ :if=/usr/local/sbin/smbprint: Aby uzyskać więcej informacji na temat konfigurowania takich przypadków przeczytaj dokumentację zawartą w skrypcie _s_m_b_p_r_i_n_t. Możesz także użyć _s_m_b_c_l_i_e_n_t, aby wysłać zadanie drukowania bezpośrednio do serwisu drukowania SMB bez włączania w to lpd. Zobacz informacje w podręczniku systemowym. 1111..33.. NNaa ddrruukkaarrccee NNeettWWaarree.. Pakiet ncpfs zawiera narzędzie zwane _n_p_r_i_n_t, które udostępnia te same funkcje co _s_m_b_p_r_i_n_t, ale dla NetWare. Pakiet ten można zdobyć z SunSITE Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/filesystems/ncpfs>. Z informacji LSM dla wersji 0.16: Przy pomocy pakietu ncpfs możesz montować wolumeny z serwera netware pod Linux-em. Możesz także drukować na drukarkach podłączonych pod netware oraz kolejkować zadania z netware dla drukarek podłączonych do Linux-a. Potrzebujesz jądra w wersji 1.2.x lub 1.3.54 i nowsze. ncpfs nie będzie działał z jądrem w wersji 1.3 poniżej 1.3.54. Aby _n_p_r_i_n_t działał poprzez lpd, musisz napisać mały skrypt, aby drukować "stdin" na drukarkach NetWare i zainstalować go jako _i_f dla kolejki lpd. Otrzymasz coś takiego: sub2|remote-NWprinter:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/sub2:\ :if=/var/spool/lpd/nprint-script: Skrypt "nprint-script" może wyglądać tak: #! /bin/sh # Powinieneś najpierw sprawdzić konto guest bez hasła! /usr/local/bin/nprint -S sieć -U nazwa -P hasło -q nazwa-kolejki - 1111..44.. NNaa ddrruukkaarrccee EEtthheerrTTaallkk ((AAppppllee)).. Pakiet netatalk zawiera coś podobnego do _n_p_r_i_n_t i _s_m_b_c_l_i_e_n_t. Werner Eugster udokumentował procedurę dla drukowania do i z sieci Apple o wiele lepiej niż ja kiedykolwiek; zobacz to w Netatalk-HOWTO <http://thehamptons.com/anders/netatalk/>. Netatalk nie działa z kartą SMC Etherpower PCI z chip-em DEC tulip. 1111..55.. NNaa ddrruukkaarrccee HHPP ii iinnnnyycchh eetthheerrnneettoowwyycchh ddrruukkaarrkkaacchh.. Drukarki HP i niektóre inne mają ethernetowy interfejs, do którego możesz drukować bezpośrednio używając lpd. Powinieneś postępować zgodnie z instrukcją, którą dostałeś do drukarki albo jej sterownika, ale ogólnie takie drukarki "mają uruchomionego" lpd i dostarczają jedną lub więcej kolejek, do których możesz drukować. HP może pracować np. z takim /etc/printcap: lj-5|remote-hplj:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lj-5:\ :rm=nazwa.drukarki.pl:rp=raw: Drukarki HP LaserJet z interfejsami Jet Direct obsługują generalnie dwie wbudowane kolejki - "surową" (raw), która akceptuje PCL (i możliwe, że PostScript) oraz "tekstową", która akceptuje zwykłe ASCII i radzi sobie od razu z "efektem schodków". W środowisku wielkoskalowym, szczególnie w dużych środowiskach, gdzie niektóre drukarki nie obsługują PostScript-u, może być pożyteczne ustawienie specjalnego serwera drukowania, do którego drukują wszystkie maszyny i na którym uruchamiane są wszystkie zadania ghostscript-a. Pozwala to twojemu Linux-owi działać jako serwer wydruków dla drukarki, i użtykownicy mogą robić swoje wydruki szybko i zajmować się swoimi rzeczami zamiast czekać aż drukarka skończy drukować pracę kogoś innego. Aby to zrobić, ustaw na swoim Linux-ie kolejkę, która wskazuje na HP LJ wyposażoną w ethernet. Teraz ustaw kolejkę u wszystkich swoich klientów na tego Linux-a. Niektóre drukarki sieciowe HP wyraźnie nie akceptują ustawień strony tytułowej (banner page) wysłanej przez klienta; można wyłączyć ich wewnętrznie generowaną taką stronę przez połączenie się z drukarką telnet-em, wciśnięcie dwa razy <<ENTER>>, wpisanie "banner: 0" i następnie "quit". Są inne ustawienia, które możesz także w taki sposób zmienić - wpisz "?", żeby wyświetlić ich listę. 1111..55..11.. NNaa ssttaarrsszzyycchh ddrruukkaarrkkaacchh HHPP.. Niektóre drukarki (oraz "czarne pudełka" z sieciowym drukowaniem) obsługują tylko prościutkie nie-protokołowane czyste połączenia TCP. Zauważalne w tej kategorii są wczesne modele kart JetDirect (właczając niektóre JetDirectEx). Ogólnie, aby drukować na takiej drukarce, musisz otworzyć połączenie TCP na danym porcie (z reguły 9100) i umieścić tam swoje zadanie do wydrukowania. Można to zaimplementować m.in. w Perl-u: #!/usr/bin/perl # Thanks to Dan McLaughlin for writing the original version of this # script (And to Jim W. Jones for sitting next to Dan when writing me # for help ;) $fileName = @ARGV[0]; open(IN,"$fileName") || die "Can't open file $fileName"; $dpi300 = "\x1B*t300R"; $dosCr = "\x1B&k3G"; $ends = "\x0A"; $port = 9100 unless $port; $them = "bach.sr.hp.com" unless $them; $AF_INET = 2; $SOCK_STREAM = 1; $SIG{'INT'} = 'dokill'; $sockaddr = 'S n a4 x8'; chop($hostname = `hostname`); ($name,$aliases,$proto) = getprotobyname('tcp'); ($name,$aliases,$port) = getservbyname($port,'tcp') unless $port =~ /^\d+$/;; ($name,$aliases,$type,$len,$thisaddr) = gethostbyname($hostname); ($name,$aliases,$type,$len,$thataddr) = gethostbyname($them); $this = pack($sockaddr, $AF_INET, 0, $thisaddr); $that = pack($sockaddr, $AF_INET, $port, $thataddr); if (socket(S, $AF_INET, $SOCK_STREAM, $proto)) { # print "socket ok\n"; } else { die $!; } # Give the socket an address. if (bind(S, $this)) { # print "bind ok\n"; } else { die $!; } # Call up the server. if (connect(S,$that)) { # print "connect ok\n"; } else { die $!; } # Set socket to be command buffered. select(S); $| = 1; select(STDOUT); # print S "@PJL ECHO Hi $hostname! $ends"; # print S "@PJL OPMSG DISPLAY=\"Job $whoami\" $ends"; # print S $dpi300; # Avoid deadlock by forking. if($child = fork) { print S $dosCr; print S $TimesNewR; while (<IN>) { print S; } sleep 3; do dokill(); } else { while(<S>) { print; } } sub dokill { kill 9,$child if $child; } 1111..66.. UUrruucchhaammiiaanniiee _i_f dla odległych drukarek. Jedną wadą _l_p_d jest to, że _i_f nie są uruchamiane dla drukarek odległych. Jeśli okaże się, że potrzebujesz _i_f, możesz ustawić podwójną kolejkę i ponownie zkolejkować dany wydruk. Weź ten _p_r_i_n_t_c_a_p jako przykład: lj-5:remote-hplj:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lj-5:\ :if=/usr/lib/lpd/filter-lj-5: lj-5-remote:lp=/dev/null:sh:rm=nazwa.drukarki.pl:\ :rp=raw:sd=/var/spool/lpd/lj-5-raw: w świetle tego, skrypt _f_i_l_t_e_r_-_l_j_-_5 to: #!/bin/sh gs <opcje> -q -dSAFER -sOutputFile=- - | \ lpr -Plj-5-remote -U$5 Opcja _-_U dla lpr działa tylko wtedy jeśli lpr jest uruchomiony jako demon i ustawia ona poprawnie zleceniodawcę kolejki w ponownie zainicjowanej kolejce. Powinieneś raczej użyć bardziej pewnej metody na zdobycie identyfikatora użytkownika, ponieważ niezawsze jest to argument 5. Zobacz w podręcznik systemowym na temat _p_r_i_n_t_c_a_p. 1111..77.. ZZ WWiinnddoowwss.. Drukowanie z Windows (czy OS/2) na Linux-ie jest obsługiwane poprzez SMB w pakiecie SAMBA, który także umożliwia współdzielenie plików dla Windows. Samba zawiera całkiem pokaźną dokumentację. Możesz albo skonfigurować magic-filter na Linux-ie i drukować tam PostScript, albo zainstalować sterowniki dla konkretnej drukarki na wszystkich komputerach z Winndows i mieć kolejkę dla nich bez żadnych filtrów. Poleganie na tych sterownikach może czasami dawać lepsze efekty, ale jest to uciążliwe ze strony administratora jeśli jest dużo komputerów z Windows. Więc spróbuj najpierw PostScript-u. 1111..88.. ZZ AAppppllee.. Netatalk obsługuje drukowanie z Apple poprzez EtherTalk. Na stronie Netatalk HOWTO <http://thehamptons.com/anders/netatalk/> znajdziesz więcej informacji. 1111..99.. ZZ NNeettwwaarree.. Jest jakaś obsługa drukowania z Netware przez Linux-a oferowana przez czy z powodu Calder-y, ale nie mam pojęcia czy Linux może oferować drukarki dla klientów Netware. 1122.. JJaakk ddrruukkoowwaaćć nnaa ffaaxx--iiee.. 1122..11.. UUżżyywwaanniiee ffaaxxmmooddeemmuu.. Jest wiele programów, które pozwolą ci na odbieranie i wysyłanie faxów. Jednym z bardziej złożonych jest program Sama Lefflera pod nazwą _H_y_l_a_F_a_x. Jest on dostępny na ftp.sgi.com. Obsługuje on wiele rzeczy od większej ilości modemów do rozgłaszania (broadcasting). Dostępny jest także _e_f_a_x, prosty program wysyłający fax-y - jest on lepszym wyborem dla Linux-owców. Program _m_g_e_t_t_y może odbierać faxy (a nawet wysyłać pocztę głosową na niektórych modemach!). 1122..22.. UUżżyywwaanniiee ZZddaallnneeggoo SSeerrwwiissuu DDrruukkoowwaanniiaa.. Dostępny jest eksperymentalny serwis, który pozwala ci na wysłanie poczty elektronicznej z dołączonym fragmentem, który ma być wydrukowany na faxie gdzieś indziej. Obsługiwane są takie formaty jak PostScript, tak więc pomimo, iż nie obejmuje swym zasięgiem wszystkiego, może być on bardzo przydatnym serwisem. Więcej informacji na temat drukowania poprzez Zdalny Serwis Drukowania znajdziesz na stronie o zdalnym drukowaniu <http://www.tpc.int/>. 1133.. JJaakk wwyyggeenneerroowwaaćć ccoośś wwaarrtteeggoo ddrruukkoowwaanniiaa.. Tutaj wchodzimy w prawdziwą sieć oprogramowania. Ogólnie, Linux może uruchamiać cztery typy binariów z różnym sukcesem: Linux, iBCS, Win16/Win32s (za pomocą dosemu i kiedyś Wine) oraz Mac/68k (przy pomocy Executora). Ja omówię tylko czysto-Linux-owe i popularne Unix- owe oprogramowanie, poza tym WordPerfect dla SCO i przypuszczalnie inne komercyjne procesory tekstu także dobrze działają na Linux-owej emulacji iBCS. Dla Linux-a wybór jest przeważnie ograniczony do oprogramowania dostępnego ogólnie dla Unix-a. 1133..11.. JJęęzzyykkii ""MMaarrkkuupp"".. Większość języków "markup" jest bardziej elastyczna dla większych albo powtarzalnych projektów, gdzie chcesz, aby komputer kontrolował wygląd rezultatu/wydruku, aby utworzyć ogólny wzór. Próba zrobienia jakiegoś ładnego znaczka w języku "markup" przypuszczalnie by "bolała"... nnrrooffff To był jeden z pierwszych języków "markup" dla Unix-a. Strony z podręcznika systemowego są najpopularniejszym przykładem tekstów sformatowanych przy pomocy makr *roff-a. Wiele ludzi przeklina ten język, ale nroff ma, przynajmniej dla mnie, bardziej złożoną składnię niż to jest konieczne i przypuszczalnie jest złym wyborem dla nowych prac. Jednak warto jest wiedzieć, że możesz zamienić napisaną w groff-ie stronę bezpośrednio na PostScript. Większość poleceń "man" zrobi to za ciebie np. _m_a_n _-_t _c_o_ś_| _l_p_r. TTeeXX oraz język makr - LaTeX, są jednym z najczęściej używanych języków "markup" na Unix-ie. Techniczne prace są często napisane w LaTeX-u ponieważ bardzo upraszcza określenie wyglądu tekstu i jest wwcciiąążż jednym z niewielu systemów obróbki tekstu, który obsługuje zapisy matematyczne dokładnie i dobrze na raz. Formatem wyjściowym TeX-a jest _d_v_i (DeVice Independent - czyli niezależny od urządzenia [przyp. tłum.]) i można go zamienić na PostScript lub Hewlett Packard PCL przy pomocy _d_v_i_p_s lub _d_v_i_l_j. [TeX czyta się "tech" - przyp. tłum.]. _S_G_M_L Dostępny jest przynajmniej jeden program do obróbki tego języka na Unix-a; formuuje on podstawy systemu dokumentów Linuxdoc- SGML. Może on także obsługiwać inne DTD. _H_T_M_L Ktoś zasugerował, że dla prostych projektów, wystarczy napisanie w HTML-u i drukować przy pomocy Netscape-a. Ja się z tym jednak nie zgadzam. 1133..22.. WWYYSSIIWWYYGG.. [ Jest to skrót od What You See Is What You Get - czyli to co widzisz to dostaniesz, a oznacza, iż wydrukowane zostanie DOKŁADNIE to co jest widoczne na ekranie i DOKŁADNIE w taki sam sposób - przyp. tłum.] W tej chwili jest niedobór oprogramownia do obróbki tekstu WYSIWYG. Nie bój się napisać jakiegoś i daj mi znać jeśli ominąłem coś tutaj. _L_y_X Jest to zakończenie dla LaTeX-a, które wygląda bardzo obiecująco. Odwiedź stronę domową LyX-a <http://www- pu.informatik.uni-tuebingen.de/users/ettrich/> jeśli chcesz więcej informacji. _A_n_d_r_e_w _U_s_e_r _I_n_t_e_r_f_a_c_e _S_y_s_t_e_m AUIS zawiera _e_z - edytor w stylu WYSIWYG z większością cech podstawowego procesora tekstu, możliwościami HTML oraz pełną obsługą poczty elektronicznej MIME i grup dyskusyjnych (news- ow). _O_f_e_r_t_y _k_o_m_e_r_c_y_j_n_e Przynajmniej Caldera i Red Hat dostarczają pakiety zawierające zwykłe aplikacje biurowe jak edytor w stylu WYSIWYG i arkusz kalkulacyjny. Powiedziałbym, że robią dobrą robotę, ale nigdy nie używałem takich pakietów. Sądze, że Caldera dostarcza także WABI firmy Sun, tak więc mógłbyś przypuszczalnie uruchomić jakiś MS Office pod tym jeśli musiałbyś zintegrować się z plikami innych. Jeff Phillips _<_j_e_f_f_@_I___R_A_T_U_S_._o_r_g_> używa WordPerfect-a dla Linux-a z Caldery (w Slackware różnego rodzaju) i twierdzi, że działa mu to dobrze. Wygląda na to, że zawiera on wbudowaną obsługę drukarek, jak to można by się spodziewać. Caldera powinna mieć jakieś informacje na swojej stronie WWW <http://www.caldera.com/>. RedHat dostarcza pakiet o nazwie _A_p_p_l_i_x_w_a_r_e; Ich stronę można znaleźć pod adresem www.redhat.com. Inni sprzedawcy niech mi dadzą znać jakie mają oferty. 1144.. PPooddgglląądd pprrzzeedd wwyyddrruukkiieemm.. Prawie wszystko co możesz wydrukować, możesz też zobaczyć na ekranie. 1144..11.. PPoossttSSccrriipptt.. Ghostscript posiada sterownik do X11; najlepiej jeśli jest on użyty pod kontrolą podglądarki PostScript o nazwie _G_h_o_s_t_v_i_e_w. Najnowsza wersja tego programu powinna być także w stanie wyświetlić pliki PDF. 1144..22.. TTeeXX ddvvii.. Niezależne od urządzenia (DeVice Independant) pliki TeX-a mogą być wyświetlane w X11 używając _x_d_v_i. Nowsze wersje _x_d_v_i wywołują ghostscript, aby wykonać polecenia typowo PostScriptowe. Jest także sterownik na VT100. Nazywa się _d_g_v_t. _T_m_v_i_e_w działa z Linux- em i svgalib jeśli to wszystko na co cię stać. 1155.. DDrruukkaarrkkii sszzeerreeggoowwee ppoodd llppdd.. 1155..11.. UUssttaawwiiaanniiee ww pprriinnttccaapp--iiee.. Lpd udostepnia pięć atrybutów, które możesz ustawić w pliku /etc/printcap, aby kontrolować wszystkie ustawienia portu szeregowego, do którego dołączona jest drukarka. Przeczytaj stronę podręcznika systemowego na temat _p_r_i_n_t_c_a_p _<_h_t_t_p_:_/_/_w_w_w_._p_i_c_a_n_t_e_._c_o_m_/_~_g_t_a_y_l_o_r_/_p_h_t_/_m_a_n_/_p_r_i_n_t_c_a_p_._h_t_m_l> i zapamiętaj znaczenia: _b_r_#, _f_c_#, _x_c_#, _f_s_# i _x_s_#. Ostatnie cztery z tych atrybutów to mapy bitowe oznaczające ustawienia portu. Atrybut _b_r_# jest prędkością: np. _b_r_#_9_6_0_0. Tłumaczenie z postaci _s_t_t_y na _p_r_i_n_t_c_a_p jest bardzo proste. Jeśli musisz, to zobacz stronę podręcznika systemowego na temat _s_t_t_y. Użyj _s_t_t_y, aby ustawić port drukarki, tak żebyś mógł wysłać plik do tego portu (poleceniem _c_a_t) i otrzymał poprawny wydruk. Oto co wyświetla polecenie _s_t_t_y _-_a dla mojego portu drukarki: dina:/usr/users/andy/work/lpd/lpd# stty -a < /dev/ttyS2 speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke Jedynymi zmianami między tym, i stanem w jakim port jest inicjowany podczas startu są -clocal, -crtscts i ixon. Twój port może mieć inne ustawienia w zaleźności od tego jak twoja drukarka kontroluje przepływ (flow control). _s_t_t_y używa się właściwie w dziwny sposób. Ponieważ polecenie _s_t_t_y operuje na terminalu podłączonym do jego standardowego wejścia, ty używasz je, aby manipulować danym portem szeregowym przez użycie znaku < jak powyżej. Jak już masz dobre ustawienia, tak że _c_a_t _p_l_i_k _> _/_d_e_v_/_t_t_y_S_2 (w moim przypadku) działa, zajrzyj do pliku /usr/src/linux/include/linux/termios.h. Zawiera on wiele #define (definicji) i kilka struktur - możesz go sobie wydrukować (przecież drukarka działa, nie ?) i używać jako pomocy. Idź do sekcji, która zaczyna się tak: /* c_cflag bit meaning */ #define CBAUD 0000017 Sekcja ta zawiera znaczenia bitów _f_c_# i _f_s_#. Zauważysz, że nazwy (po ilości bodów) są identyczne z tymi z polecenie _s_t_t_y. A nie mówiłem, że to będzie proste ? Zobacz, które z tych ustawień mają znak "-" na początku przy poleceniu _s_t_t_y. Zsumuj te wszystkie liczby (są one zapisane w systemie ósemkowym). To będą te bity, które będziesz chciał wyzerować, tak więc wynik jest tym, co masz wpisać do _f_c_#. Pamiętaj oczywiście, że będziesz ustawiał bity zaraz po tym jak je wyzerujesz, tak więc możesz użyć "_f_c_#_0_1_7_7_7_7_7" (ja tak robię). Teraz zrób to samo dla tych ustawień, które nie mają znaku "-" na początku w poleceniu _s_t_t_y. W moim przykładzie ważne są CS8 (0000060), HUPCL (0002000) i CREAD (0000200). Zapamiętaj też ustawienie dla swojej prędkości (u mnie jest to 0000015). Zsumuj to wszystko - w moim przykładzie będzie to 0002275. To będzie to, co masz wpisać do _f_s_#. ("_f_s_#_0_2_2_7_5 działa u mnie.) Zrób to samo z ustawieniem i zerowaniem dla następnej sekcji pliku nagłówkowego. "c_lflag bits". W moim przypadku nie musiałem niczego ustawiać, tak więc użyłem tylko "_x_c_#_0_1_5_7_7_7_7" i "_x_s_#_0". 1155..22.. SSttaarrsszzee ddrruukkaarrkkii sszzeerreeggoowwee,, kkttóórree gguubbiiąą zznnaakkii.. Jon Luckey pisze, że u niektórych starszych szeregowych drukarek z interfejsem za 10 centów i małym buforem, stop w kontroli przepływu oznacza rrzzeecczzyywwiissttee stop dla drukowania. Potem odkrył, że żeby naprawić tę niedogodność wystarczy wyłączyć FIFO w układzie 16550 poleceniem _s_e_t_s_e_r_i_a_l (żeby to zrobić po prostu podajesz typ ukladu uart jako 8250). 1166.. WWyyrraazzyy uuzznnaanniiaa.. Informacje na temat _s_m_b_p_r_i_n_t zostały zaczerpnięte z artykułu Marcela Roelofsa <marcel@paragon.nl>. Informacje na temat _n_p_r_i_n_t i używania drukarek NetWare zostały dostarczone przez Michaela Smitha <mikes@bioch.ox.ac.uk>. Sekcja na temat drukarek szeregowych pod lpd została napisana przez Andrew Teffta <teffta@engr.dnet.ge.com>. Te wszystkie gammy i inne takie dla "gs" zostały dostarczone przez Andreasa <quasi@hub-fue.franken.de>. Dwa paragrafy na temat 30 sekundowego "closing_wait" przy sterownikach szeregowych zostały dostarczone przez Chrisa Johnsona <cdj@netcom.com>. Robert Hart przysłał kilka doskonałych paragrafów na temat ustawiania serwera drukarek dla połączonych HP, któych ja używam w niezmienionej wersji. I specjalne podziękowania dla tuzinów nad tuzinami tych, którzy wskazywali literówki, złe adresy i błędy w tym dokumencie przez lata. 1166..11.. OOdd ttłłuummaacczzaa.. Wersja ta jest wersją ostateczną. Dodany został odnośnik do właśnie powstałego tłumaczenia dokumentu Printing-Usage-HOWTO. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne (a może ich tu trochę być, bo nie znam się tak bardzo na poligrafii) to pisz do mnie: B.Maruszewski@jtz.org.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@jtz.org.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Printing-Usage-HOWTO.pl.txt��������������������������������������������0100664�0001750�0001750�00000063772�06717116340�021322� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Drukowanie na Linux-ie w użyciu. Autor: Mark Komarinski , markk@auratek.com v1.2.1, 24 Marca 1997 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.02, 26 Lipca 1997 ____________________________________________________________ Table of Contents: 1. Wprowadzenie. 1.1. Historia tego dokumentu. 1.2. Historia Wersji. 1.3. Prawa autorskie i znaki handlowe. 1.4. Ściąganie dokumentów HOWTO dotyczących drukowania. 1.5. Komentarze. 1.6. Podziękowania. 1.7. Od tłumacza. 2. Drukowanie pod Linux-em. 2.1. Historia drukowania na Linux-ie. 2.2. Drukowanie pliku przy użyciu 2.3. Przeglądanie kolejki zadań przy pomocy 2.4. Anulowanie zadania przy pomocy 2.5. Kontrolowanie programu lpd przy pomocy 2.6. "Printtool" z RedHat-a. 3. Drukowanie plików. 3.1. Drukowanie plików graficznych. 3.2. Drukowanie plików PostScriptowych. 3.3. Drukowanie plików PDF. 3.4. Drukowanie plików w TeX-u. 3.5. Drukowanie plków sformatowanych 3.6. Drukowanie stron podręcznika systemowego 4. Różności. 4.1. Formatowanie przed drukowaniem. 4.2. Zmienne Środowiskowe PRINTER. 5. Odpowiedzi na często zadawane pytania. 6. Rozwiązywanie problemów. 7. Odwołania. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Dokument ten opisuje jak używać systemu kolejkowania do drukarek liniowych dostarczanego wraz z systemem operacyjnym Linux. Dokument ten jest dodatkiem do dokumentu Drukowanie w Linux-ie <http://www.zsmeie.torun.pl/~bart/Tlumaczenie/Html/Printing- HOWTO.pl.html>, który omawia instalację i ustawienie systemu drukowania. Materiał zaprezentowany z tym HOWTO powinien być tak samo ważny dla wszystkich systemów operacyjnych typu BSD w tym także dla Linux-a. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał można znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO. 11..11.. HHiissttoorriiaa tteeggoo ddookkuummeennttuu.. Uwaga od Marka Komarinskiego <markk@auratek.com>: Chciałbym podziękować Mattowi Fosterowi za duży wkład pracy przy ponownym pisaniu tego HOWTO. Utrzymuję jego styl i dodaję nowości tak żeby wszystko było w miarę świeże. Uwaga od Matta Fostera <mwf@engr.uark.edu>: Wersja bieżąca tego HOWTO jest napisanym od nowa dokumentem, którego oryginał napisali Grant Taylor <grant@god.tufts.edu> i Brian McCauley <B.A.McCauley@bham.ac.uk>. Starałem się zachować mniej więcej to samo co oni napisali, ale zupełnie zmieniłem wygląd i styl tego dokumentu oraz zasięg materiału zawartego tutaj. Czuję, że to uczyni dokument ten bardziej kompletnym i łatwiejszym do przeczytania. Mogę tylko mieć nadzieję, że się zgadzasz. 11..22.. HHiissttoorriiaa WWeerrssjjii.. v1.2.1 ˇ uaktualnienia, małe zmiany dla publikacji Dr. Linux. v1.2 ˇ Drukarki pod Windows-ami. ˇ Zmiana maksymalnego rozmiaru drukowanego pliku. v1.11 ˇ Nowy opiekun ! ˇ Dodane informacje o lpc. ˇ Dodane informacje na temat rozwiązywania problemów. ˇ Początek na temat drukowania plików graficznych. v1.1 ˇ przegląd słownictwa. ˇ rozwinięta sekcja o drukowaniu w PostScripcie. ˇ próba rozjaśnienia niektórych przykładów. 8-) ˇ rozwinięcie dyskusji na temat podstawowych narzędzi do drukowania w Linux-ie. v1.0 ˇ Pierwsze publiczne wydanie Printing-Usage HOWTO. 11..33.. PPrraawwaa aauuttoorrsskkiiee ii zznnaakkii hhaannddlloowwee.. Niektóre nazwy/nazwiska wymienione w tym HOWTO są prawami autorskimi lub znakami handlowymi pewnych firm/osób. Występują one w wersji pełnej lub skróconej. _(_c_) _1_9_9_5 _M_a_t_t _F_o_s_t_e_r _(_m_w_f_@_e_n_g_r_._u_a_r_k_._e_d_u_) _(_c_) _1_9_9_6_-_1_9_9_7 _M_a_r_k _F_. _K_o_m_a_r_i_n_s_k_i _(_m_a_r_k_k_@_a_u_r_a_t_e_k_._c_o_m_) Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem. Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO. Jeśli masz pytania skontaktuj się z Gregiem Hankisem, koordynatorem programu Linux HOWTO po adresem gregh@sunsite.unc.edu. 11..44.. ŚŚcciiąąggaanniiee ddookkuummeennttóóww HHOOWWTTOO ddoottyycczząąccyycchh ddrruukkoowwaanniiaa.. Jeśli chcesz sobie wydrukować to HOWTO, to polecam wersję PostScriptową. Jest ona sformatowana w taki sposób, że jest łatwiejsza do czytania i ładniejsza. Wersję angielską w PostScripcie możesz pobrać z SUNSite Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/other-formats/ps>. Niestety nie dostarczamy jeszcze wersji polskiej w PostScripcie - szukamy kogoś, kto by nam pomógł rozwiązać problem polskich liter ;) albo na nowszą wersję narzędzi SGML, któraby obsługiwała ISO-8859-2. 11..55.. KKoommeennttaarrzzee.. Pytania, komentarze czy poprawki dotyczące tego dokumentu mogą być kierowane do <markk@auratek.com>. 11..66.. PPooddzziięękkoowwaanniiaa.. Kieruje je do wszystkich, którzy poświęcili czas na czytanie wersji alfa i odpowiedzieli wieloma pożytecznymi uwagami i sugestiami - niektórzy z was mogą zobaczyć odzwierciedlenie swoich komentarzy w tej wersji dokumentu. Chciałbym także podziękować Mattowi Fosterowi, który napisał to HOWTO od nowa. 11..77.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl 22.. DDrruukkoowwaanniiee ppoodd LLiinnuuxx--eemm.. Sekcja ta omawia jak drukować pliki, sprawdzać kolejkę wydruków, usuwać zadania z kolejki wydruków, formatować pliki przed ich wydrukowaniem i jak skonfigurować środowisko do drukowania. 22..11.. HHiissttoorriiaa ddrruukkoowwaanniiaa nnaa LLiinnuuxx--iiee.. System drukowania na Linux-ie - system _l_p - jest przeniesionym źródłem kodu napisanego przez regentów Uniwersytetu Californii dla wersji UNIX-a "Berkeley Software Distribution". 22..22.. DDrruukkoowwaanniiee pplliikkuu pprrzzyy uużżyycciiuu _l_p_r. Najbardziej prostą metodą na drukowanie w Linux-ie jest wysłanie pliku do wydrukowania do urządzenia drukarki. Jednym ze sposobów na zrobienie tego jest użycie polecenia _c_a_t. Jako "root" możesz zrobić coś takiego: # cat thesis.txt > /dev/lp W tym wypadku, /dev/lp jest symbolicznym dołączeniem do rzeczywistego urządzenia drukarki - niech to będzie igłówka, laserówka, "typesetter" czy ploter. (Więcej informacji na temat dołączeń symbolicznych znajdziesz na stronie podręcznika systemowego _l_n(1)). Z przyczyn bezpieczeństwa, tylko "root" i użytkownicy należący do tej samej grupy co demon drukowania mogą pisać bezpośrednio na drukarkę. Oto dlaczego polecenia takie jak: _l_p_r, _l_p_r_m, czy _l_p_q muszą być używane, żeby mieć dostęp do drukarki. Z tego powodu użytkownicy muszą używać _l_p_r, aby wydrukować jakiś plik. Polecenie to troszczy się o wszystko co jest potrzebne do wydrukowania danego pliku, a potem przekazuje kontrolę do innego programu - _l_p_d czyli "line printer daemon". Demon ten informuje drukarkę jak ma wydrukować dany plik. Kiedy wykonywany jest _l_p_r, najpierw kopiuje on podany plik do konkretnego katalogu (katalogu zadań), gdzie plik ten pozostaje dopóki _l_p_d go nie wydrukuje. Jak _l_p_d się dowie, że jest jakiś plik do wydrukowania, to utworzy kopię siebie (co my programiści nazywamy rozmnożeniem/klonowaniem). Kopia ta wydrukuje nasz plik, podczas gdy oryginał będzie czekał na dalsze zadania. Pozwala to na obsługiwanie wielu zadań na raz. Składnia polecenia _l_p_r jest bardzo znana: $ lpr [ opcje ] [ nazwa_pliku ... ] Jeśli nazwa_pliku nie jest podana, _l_p_r spodziewa się danych ze standardowego wejścia (zwykle klawiatury lub wyjścia innego programu). To pozwala użytkownikowi na przekierowanie wyjścia poleceń do kolejki drukowania. Np: $ cat thesis.txt | lpr lub $ pr -l60 thesis.txt | lpr Polecenie _l_p_r przyjmuje kilka argumentów z linii poleceń, które pozwalają użytkownikowi kontrolować jego działanie. Niektóre z bardziej popularnych argumentów to: -PPdrukarka określa drukarkę, na której ma być dane zadanie wydrukowane, -hh nie pozwala wydrukować strony tytułowej (z identyfikatorem itp.), -ss tworzy symboliczne dołączenie zamiast kopiować plik do katalogu zadań (przydatne do dużych plików) i -##il określa ilość kopii do wydrukowania. Przykład może wyglądać tak: $ lpr -#2 -sP dj thesis.txt Polecenie to stworzy symboliczne dołączenie do pliku thesis.txt w katalogu zadań dla drukarki o nazwie _d_j, a następnie przekaże zadanie do _l_p_d. Następnie wydrukuje drugą kopię tego pliku. Wszystkie dostępne opcje znajdziesz w podręczniku systemowym _l_p_r_(_1_). 22..33.. PPrrzzeegglląąddaanniiee kkoolleejjkkii zzaaddaańń pprrzzyy ppoommooccyy _l_p_q. Aby zobaczyć zawartość kolejki do drukowania użyj polecenia _l_p_q. Wydane bez argumentów, zwraca zawartość kolejki dla domyślnej drukarki. Rezultat polecenia _l_p_q może być przydatny do różnych celów. $ lpq lp is ready and printing Rank Owner Job Files Total Size active mwf 31 thesis.txt 682048 bytes 22..44.. AAnnuulloowwaanniiee zzaaddaanniiaa pprrzzyy ppoommooccyy _l_p_r_m. Inną przydatną cechą każdego systemu drukowania jest możliwość anulowania zadania, które zostało umieszczone w kolejce. Aby to zrobić użyj _l_p_r_m. $ lprm - Powyższe polecenie anuluje wszystkie zadania, które są własnością użytkownika wydającego to polecenie. Pojedyncze zadanie może być anulowane przez zdobycie numeru tego zadania (z polecenia _l_p_q) i podanie go do _l_p_r_m: $ lprm 31 Spowodowałoby skasowanie zadania nr 31 - thesis.txt na drukarce domyślnej. 22..55.. KKoonnttrroolloowwaanniiee pprrooggrraammuu llppdd pprrzzyy ppoommooccyy _l_p_c. Program _l_p_c_(_8_) używany jest do kontrolowania drukarek, które obsługuje lpd. Możesz włączyć lub wyłączyć drukarkę albo jej kolejkę, zmienić kolejność w kolejce zadań oraz otrzymać raport na temat drukarek i ich kolejek. Lpc jest używany głównie w sytuacjach kiedy do komputera podłączonych jest kilka drukarek. $ lpc Powyższe polecenie wystartuje program lpc. Domyślnie, uruchamia się interaktywny tryb i możesz zacząć wydawać polecenia. Inną opcją jest wprowadzenie polecenia lpc z linii argumentów. $ lpc status all Lista dostępnych poleceń jest w podręczniku systemowym _l_p_d, a tutaj podaję kilka najważniejszych, których będziesz najczęściej używał. Polecenie oznaczone _o_p_c_j_ą może być albo nazwą drukarki (lp, print, itp.) albo słowem "all", co oznacza wszystkie drukarki. ˇ disable _o_p_c_j_a - nie pozwala na dodawanie nowych zadań, ˇ down _o_p_c_j_a - wyłącza drukowanie, ˇ enable _o_p_c_j_a - pozwala na dodawanie nowych zadań, ˇ quit (lub exit) - zakończenie sesji lpc, ˇ restart _o_p_c_j_a - startuje ponownie lpd dla podanej drukarki, ˇ status _o_p_c_j_a - wyświetla status drukarki, ˇ up _o_p_c_j_a - pozwól na wszystko i wystartuj nowego lpd. 22..66.. PPrriinnttttooooll"" zz RReeddHHaatt--aa.. Tylko krótka notatka na temat zadziwiającego programu _p_r_i_n_t_t_o_o_l z dystrybucji RedHat. Wygląda na to, że robi on wszystko to co robiłby filtr magiczny. RedHat instaluje od razu wiele programów filtrujących. Oto jak ustawiłem swoją drukarkę HP LJ 4L podłączoną do portu równoległego na RH 4.0. ˇ Zmień sesję na "root-a" i odpal "printtool". (jeśli stałeś się "root-em" przez polecenie _s_u, to pamiętasz o ustawieniu zmiennej _D_I_S_P_L_A_Y na _:_0_._0 i uruchomieniu programu _x_h_o_s_t z parametrem "+", prawda ?) ˇ Kliknij na przycisk "Add" a potem "OK" dla drukarki lokalnej. ˇ Wpisz urządzenie do drukowania (u mnie _/_d_e_v_/_l_p_1) ˇ Wpisz filtr wejściowy - wybierz typ drukarki, rozdzielczość i rozmiar papieru (ljet4, 300x300 i "letter") ˇ Wciśnij "OK" aż do końca i zrestartuj _l_p_d. Na jedno zawołanie możesz mieć definicje dla różnych drukarek w /etc/printcap. Dla różnych rozmiarów papieru, rozdzielczości, itd. 33.. DDrruukkoowwaanniiee pplliikkóóww.. Ta sekcja omawia drukowanie plików z jakimi się spotkasz na Linux-ie. 33..11.. DDrruukkoowwaanniiee pplliikkóóww ggrraaffiicczznnyycchh.. Drukowanie takich plików na drukarce zwykle zależy od rodzaju grafiki i drukarki. Igłówki z reguły nie wchodzą w grę z powodu różnic w sposobach obsługi plików graficznych. Najlepszym wyborem byłoby tu sprawdzenie czy twoja drukarka jest kompatybilna z Epson-em albo IBM ProPrinter, a następnie konwersja do PostScriptu i użycie ghostscriptu do wydrukowania (zobacz następną sekcję). Jeśli masz drukarkę laserową, to sytuacja jest trochę łatwiejsza ponieważ większość jest kompatybilna z PCL. To daje ci kilka opcji do wyboru. Niektóre programy umieją wysyłać bezpośrednio w PCL. Jeśli nie, to programy takie jak _N_e_t_P_B_M potrafią konwertować na PCL. Ostatnią opcją jest użycie ghostscriptu (zobacz następcją sekcję). Najepszą opcją do wyboru jest instalacja pakietów takich jak NetPBM i ghostscriptu, a potem instalacja magicznego filtra do automagicznej obróbki grafiki. 33..22.. DDrruukkoowwaanniiee pplliikkóóww PPoossttSSccrriippttoowwyycchh.. Drukowanie takich plików na drukarce, która potrafi interpretować ten język jest proste; po prostu użyj _l_p_r a drukarka zajmię się resztą. Dla tych z nas, którzy nie mają takich drukarek pozostają inne środki. Na szczęście są dostępne programy, które potafią robić użytek z PostScriptu i tłumaczyć go na język zrozumiały dla większości drukarek. Najbardziej znanym programem z tego rodzaju jest _G_h_o_s_t_S_c_r_i_p_t. Jest on odpowiedzialny za konwersję wszystkich opisów w PostScripcie na język zrozumiały dla danej druarki. Aby wydrukować plik w PostScripcie za pomocą ghostscriptu możesz zrobić coś takiego: $ gs -dSAFER -dNOPAUSE -sDEVICE=deskjet -sOutputFile=\|lpr thesis.ps Zauważ w powyższym przykładzie, że właściwie przesyłamy wynik z programu ghostscript do _l_p_r używając opcji -ssOOuuttppuuttFFiillee. Ghostview jest interfejsem graficznym pod XWindows dla ghostscriptu. Pozwala on na podgląd pliku w PostScripcie przed wydrukowaniem. Ghostview i ghostscript - oba można otrzymać z ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/apps/graphics/viewers/X. 33..33.. DDrruukkoowwaanniiee pplliikkóóww PPDDFF.. Adobe wypuścił czytarkę Acrobat dla Linux-a i jest ona dostępna na stronie domowej WWW <http://www.adobe.com> tej firmy. Poprzednia wersja - xpdf - jest także dostępna. 33..44.. DDrruukkoowwaanniiee pplliikkóóww ww TTeeXX--uu.. Jednym z najprostszych sposobów na drukowanie takich plików jest konwersja ich na PostScript i drukowanie za pomocą ghostscriptu. Aby to zrobić musisz najpierw przkonwertować je z TeX-a na format znany jako DVI (co jest skrótem od DeVice Independent - czyli niezależne od urządzenia). Można to zrobić polecenem _t_e_x_(_1_). potem musisz zmienić plik DVI na PostScript przy pomocy _d_v_i_p_s. Wszystko wygląda mniej więcej tak: $ tex thesis.tex $ dvips thesis.dvi Teraz możesz wynikowy plik w PostScripcie wydrukować w sposób podany wyżej, 33..55.. DDrruukkoowwaanniiee ppllkkóóww ssffoorrmmaattoowwaannyycchh _t_r_o_f_f_-_e_m. $ groff -Tascii thesis.tr | lpr albo jeśli wolisz $ groff thesis.tr > thesis.ps a potem wydrukuj plik w PostScripcie jak wyżej. 33..66.. DDrruukkoowwaanniiee ssttrroonn ppooddrręęcczznniikkaa ssyysstteemmoowweeggoo _m_a_n. $ man man | col -b | lpr Strony te zawierają preformatowane dane _t_r_o_f_f_-_a tak więc musimy wyrzucić wszelkie podświetlenia, podkreślenia itp. Program _c_o_l robi to całkiem miło, a ponieważ używamy strumieni program _m_a_n nie użyje polecenia _m_o_r_e. 44.. RRóóżżnnoośśccii.. W sekcji tej znajdują się tematy, których nie można zaliczyć do wcześniejszych. 44..11.. FFoorrmmaattoowwaanniiee pprrzzeedd ddrruukkoowwaanniieemm.. Ponieważ większość plików ASCII nie jest sformatowana do drukowania użyteczne jest sformatowanie ich w jakiś sposób przed wydrukowaniem. Może zawierać to umieszczenie tytułu i numeru na każdej stronie, ustawienie marginesu, podwójne przerwy między wyrazami, wcięcia albo drukowanie pliku w większej ilości kolumn. Popularnym sposobem na osiągnięcie tego jest użycie np. programu _p_r. $ pr +4 -d -h"Ph.D. Thesis, 2nd Draft" -l60 thesis.txt | lpr W powyższym przykładzie, _p_r przeskoczyłby pierwsze 3 strony (+4), ustawił długość strony na 60 lini (-l60), podwoił spacje (-d) i dodał napis "Ph.D. Thesis, 2nd Draft" na początku każdej strony (-h). _L_p_r umieściłby rezultat tego polecenia w kolejce. Zajrzyj do podręcznika systemowego _p_r_(_1_) jeśli chcesz znać więcej informacji. 44..22.. ZZmmiieennnnee ŚŚrrooddoowwiisskkoowwee PPRRIINNTTEERR.. Wszystkie polecenia w systemie drukowania Linux-a akceptują opcję -PP. Opcja ta pozwala użytkownikowi na podanie, która drukarka ma być użyta. Jeśli użytkownik tego nie poda, to wybrana zostanie drukarka domyślna. Zamiast każdorazowego podawania nazwy drukarki, możesz podać ją w zmiennej środowiskowej "PRINTER". W zależności od twojej powłoki, może to być zrobione w różny sposób. Dla _b_a_s_h_-_a będzie to: $ PRINTER="nazwa_drukarki"; export PRINTER Dla _c_s_h będzie to: % setenv PRINTER "nazwa_drukarki" Polecenia te mogą być umieszczone w skryptach startowych (.profile dla _b_a_s_h_-_a i .cshrc dla _c_s_h) albo wydane z linii poleceń. Więcej na temat zmiennych środowiskowych znajdziesz na stronach podręcznika systemowego _b_a_s_h_(_1_) i _c_s_h_(_1_). UUWWAAGGAA -- OOssttrrzzeeggaamm żżeebbyyśś pprrzzyyppaaddkkoowwoo zz tteeggoo ppooddnniieecceenniiaa nniiee zzaacczząąłł ddrruukkoowwaaćć ttyycchh ssttrroonn ::)))) -- mmaajjąą oonnee ooddppoowwiieeddnniioo 44..000000 ii 55..550000 lliinniiii.. 55.. OOddppoowwiieeddzzii nnaa cczzęęssttoo zzaaddaawwaannee ppyyttaanniiaa.. P1. Jak mam zapobiec efektowi schodków ? O1. Efekt ten jest powodem tego, że niektóre drukarki spodziewają się znaków CR/LF na końcu linii, a w Unix-ach koniec linii to tylko LF (czyli przejście do nstępnej linii bez powrotu do jej początku). Najprostszym sposobem na poprawienie tego jest sprawdzenie czy twoją drukarkę można jakoś przełączyć na druki sposób - albo przy pomocy przełącznika albo wysyłając sekwencję znaków na początku każdego wydruku. Do drugiego rozwiązania potrzebujesz filtra. (Zobacz pytanie 2.) Szybkim sposobem jest użycie filtru z wiersza poleceń. Przykładem może być: $ cat thesis.txt | todos | lpr P2. Co to jest filtr. A2. Jest to program, który czyta ze standardowego wejścia (_s_t_d_i_n), robi coś z wczytanymi danymi i zapisuje je do standardowego wyjścia (_s_t_d_o_u_t). Filtry są używane do wielu rzeczy, włączając w to przeróbkę tekstu. P3. Co to jest filtr _m_a_g_i_c_z_n_y ? A3. Jest to filtr, który robi coś w zależności od typu pliku wejściowego. Np. jeśli plik jest czystym plikiem tekstowym, to po prostu wydrukowałby go używając standardowej metody. Jeśli plik jest w PostScripcie czy innym formacie, to wydrukowałby go używając innej metody (np. ghostscriptu). Dwoma przykładami tego są "magicfilter" i "APSfilter". Jedyną wadą tych filtrów jest to, że odpowiednie programy muszą być zainstalowane przed instalacją filtra. Powodem tego jest to, że jeśli "magicfilter" zostaje zainstalowany, to pyta on twój system o konkretne programy (takie jak ghostscript - jeśli go znajdzie, to wie, że może obsługiwać dane typu PostScript), potem tworzy siebie na podstawie tego co znalazł. Aby obsługiwać wszystkie pliki do drukowania, musisz mieć zainstalowane przynajmniej takie programy: ˇ GhostScript ˇ TeX ˇ NetPBM ˇ jpeg utilities ˇ gzip P4. Co z Systemem Drukowania z Windows ? Czy Linux będzie z tym działał ? O4. Może. Drukarki, które akceptują tylko polecenia WPS (Windows Printing System) nie będą działać z Linux-em. Natomiast te, które akceptują polecenia WPS i inne (jak np. Canon BJC 610) będą działać dopóki są ustawione na coś innego niż WPS. Inne drukarki takie jak HP DeskJet 820Cxi/Cse nniiee bbęęddąą działać z Linux-em. Właściwie Linux może służyć jako serwer wydruków dla Win95 ponieważ Win95 ma sterowniki do tych drukarek. P5. Co to za system ? Nie mogę wydrukować więcej niż 6 stron bo dostaję "file too large". O5. Jedna z opcji w /etc/printcap dotyczy maksymalnego rozmiaru wydruku. Domyślną wartością jest 1000 bloków dysku (ok. 500KB). Dla PostScript-u itp. da ci to około 6-8 stron z grafiką i to koniec. Upewnij się, że dodałeś następującą linię do pozycji danej drukarki w /etc/printcap: mx=0 Podstawowym powodem tego limitu jest dotrzymanie warunku, żeby nie zapełnić partycji na wydruki. Jest inny spośob na zrobienie tego; można kazać _l_p_r utworzyć dołączenie symboliczne do pliku do wydrukowania. Musisz wtedy pamiętać, żeby dodać opcję _-_s do każdego wywołania programu _l_p_r. 66.. RRoozzwwiiąązzyywwaanniiee pprroobblleemmóóww.. W sekcji tej znajdują się częste problemy z jakimi się możesz spotkać przy drukowaniu. Jeśli twoja drukarka nie działa: ˇ Czy inne wydruki działają ? (problem z aplikacją ?) ˇ Czy lpd jest uruchomiony ? (sprawdź używając lpc) (kontroler wydruków ?) ˇ Czy "root" może wysłać coś bezpośrednio na urządzenie drukarki ? (serwisy drukowania ?) ˇ Czy możesz drukować z DOS-a ? (problemy z kablami/drukarką ?) Odpowiedź na te pytania pomoże znaleźć rozwiązanie. Inne sugestie do tej sekcji wysyłaj na adres <markk@auratek.com>. 77.. OOddwwoołłaanniiaa.. Sekcja ta zawiera odnośniki dla systemu drukowania na Linux-ie. Próbowałem utrzymać tę sekcję jak najbardziej zwięzłą. Jeśli czujesz, że zapomniałem czegoś, to nie wahaj się pisać do mnie. Zanim wyślesz pytanie na grupę dyskusyjną, zastanów się: ˇ Czy drukarka akceptuje zadania ? (Użyj _l_p_c(8)) ˇ Czy odpowiedź na twoje pytanie znajduje się w tym HOWTO lub HOWTO Granta Taylora "Drukowanie w Linux-ie" ? Jeśli któreś z powyższych jest prawdą, to pomyśl dwa razy zanim wyślesz pytanie. A jeśli już się zdecydujesz wysłać, to postaraj się zawrzeć jak najdokładniejsze informacje. Spróbuj napisać coś więcej niż "Mam problemy z lpr. Pomóżcie !" Tego typu listy zostaną przez większość zignorowane. Podaj także wersję jądra jaką używasz, jak/kiedy pojawił się błąd i ewentualnie komunikaty jakie się pojawiły. SSttrroonnyy ppooddrręęcczznniikkaa ssyysstteemmoowweeggoo:: ˇ _c_a_t(1) konkatenacja i drukowanie plików ˇ _d_v_i_p_s(1) konwersja pliku TeX-a DVI na PostScript ˇ _g_h_o_s_t_v_i_e_w(1) podgląd dokumentów PostScriptowych przy pomocy ghostscriptu ˇ _g_r_o_f_f(1) interfejs dla systemu formatowania dokumentów - groff ˇ _g_s(1) Interpreter/przeglądarka ghostscript ˇ _l_p_c(8) program kontrolny do drukarki ˇ _l_p_d(8) demon do drukarki ˇ _l_p_q(1) program do sprawdzania kolejki ˇ _l_p_r(1) program do drukowania dla użytkowników ˇ _l_p_r_m(1) usuwanie zadań z kolejki ˇ _p_r(1) konwersja plików tesktowych do drukowania ˇ _t_e_x(1) formatowanie tekstu GGrruuppyy ddyysskkuussyyjjnnee ((UUSSEENNEETT;; NNEEWWSS)) " ˇ comp.os.linux.* wszystko o Linux-ie (i jeszcze więcej) ˇ comp.unix.* dyskusje dotyczące systemu operacyjnego UNIX ������doc-linux-pl-2002.06.14.orig/RPM-HOWTO.pl.txt�������������������������������������������������������0100664�0001750�0001750�00000123330�06717116340�017107� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Menadżer Pakietów RedHat-a (RPM) - Jak To Zrobić Autor: Donnie Barnes djb@redhat.com V2.0, 8 Kwietnia 1997 WWeerrssjjaa ppoollsskkaa:: JJaacceekk PPlliisszzkkaa pplliisszzkkaa@@ffuuww..eedduu..ppll Niniejszy dokument jest tłumaczeniem RPM-HOWTO i w skrócie opisuje jak coś zrobić używając rpm-a czyli Menadżera Pakietów RedHat-a (RRedHat PPackage MManager). Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tłumaczenia tego dokumentu znajduje się pod adresem http://www.jtz.org.pl <http://www.jtz.org.pl>. http://www.jtz.org.pl a także na ftp://ftp.icm.edu.pl/pub/Linux/sun­ site/docs/HOWTO/ <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/>. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie 2. Do czego służy RPM? 3. Informacje ogólne 3.1. Skąd wziąć RPM? 3.2. Wymagania RPM 4. Używanie RPM 5. A co tak 6. Tworzenie rpm-ów. 6.1. Plik rpmrc 6.2. Plik specyfikujący .spec 6.3. Nagłówek 6.4. Sekcja Prep 6.5. Sekcja Build 6.6. Sekcja Install 6.7. Opcjonalne sekcje pre i post dla sekcji Install/Uninstall 6.8. Sekcja Files 6.9. Tworzenie pakietu 6.9.1. Katalogi z plikami źródłowymi 6.9.2. Próbne tworzenie pakietu 6.9.3. Tworzenie listy plików 6.9.4. Tworzenie pakietu RPM 6.10. Testowanie pakietu 6.11. Co robić z Twoimi nowymi RPM-ami ? 6.12. Co teraz? 7. Tworzenie RPM-ów na wiele platform. 7.1. Przykładowy plik specyfikujący .spec 7.2. Dyrektywa optflags 7.3. Makra 7.4. Wyłączanie pewnych platform w pakietach 7.5. Ostatnie poprawki 8. Uwaga o prawach autorskich ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee Skrót RPM pochodzi od ang. RRed Hat PPackage MManager co oznacza w wolnym tłumaczeniu menadżer pakietów RedHat-a. Jednak pomimo tego, że w nazwie znajduje się Red Hat, to w zamierzeniu jest on systemem otwartym, dostępnym dla każdego. Umożliwia on spakowanie zarówno kodu źródłowego jak i programów binarnych do zwartej postaci zawierającej dodatkowo informacje istotne przy zarządzaniu oprogramowaniem. Umożliwia to łatwą instalację, odświeżanie oraz usuwanie oprogramowania. Informacja o zainstalowanym oprogramowaniu jest łatwo dostępna jako że RPM tworzy bazę danych o wszystkich pakietach zainstalowanych w naszym systemie. Pozwala to na szybkie sprawdzenie czy dany pakiet jest zainstalowany, a jeśli tak to co zawiera, jaka jest jego wersja, jakie pliki zostały przez niego w systemie zainstalowane oraz jakich innych pakietów wymaga. Pozwala też sprawdzić do jakiego pakietu należy dany plik. Przyp. tłum. rpm jest obecnie używany zarówno do plików w postaci źródłowej jak i binarnej. W oryginale autor odwołuję się głównie do tej pierwszej. Jednak ponieważ obecnie częściej używa się pakietów w postaci binarnej to pliki z których powstał rpm a które mają być zainstalowane również będę nazywał plikami źródłowymi zaś proces instalacji bądź kompilacji - instalacją. Firma Red Hat Software zachęca inne firmy i grupy tworzące oprogramowanie do bliższego zapoznania się z RPM i wykorzystania go przy tworzeniu własnych pakietów. Będąc dość elastycznym i łatwym w użyciu, RPM pozwala budować nawet bardzo obszerne zbiory pakietów. Pomimo tego, że jest to system całkowicie otwarty i dostępny, jego autorzy chętnie wysłuchają informacji o błędach i ewentualnych poprawkach. (Jednak przed zgłoszeniem ``błędu'' należy, tak jak zawsze, najpierw sprawdzić czy ma się najnowszą stabilną wersję, przejrzeć dokumentację oraz przeszukać archiwa USENET i jeśli i tam nie będzie odpowiedzi - spytać na odpowiedniej grupie dyskusyjnej np. pl.comp.os.linux -przyp. tłum.) Używanie i rozpowszechnianie RPM jest wolne od opłat i regulowane Publiczną Licencją GNU - GPL (ang. GNU Public Licence). Bardziej szczegółowa dokumentacja dotycząca RPM jest zawarta w książce Eda Bailey'a, _M_a_x_i_m_u_m _R_P_M, która można ściągnąć bądź zakupić w www.redhat.com <http://www.redhat.com>. 22.. DDoo cczzeeggoo ssłłuużżyy RRPPMM?? Na początku warto powiedzieć co nieco o ``filozofii'' RPM. Celem jego projektantów było umożliwienie użycia pierwotnych kodów źródłowych. Zanim powstał RPM, jego autorzy używali RPP (przy czym podkreślają, że RPM _n_i_e nie jest na nim oparty ), w którym udostępniano poprawione kody źródłowe, konkretnie te, które były używane do instalacji. Teoretycznie mogłoby to wystarczyć, bo można było zainstalować pakiet źródłowy RPP i skompilować go (poleceniem make) bez większych problemów. Jednakże nie były to oryginalne źródła i trudno było na pierwszy rzut oka powiedzieć co w nich zostało zmienione. Niezbędnym było ściągnięcie również oryginalnych źródeł. RPM zaś zawiera oryginalne źródła wraz z poprawkami których dokonano. W opinii autorów rozwiązanie to jest znacznie lepsze. Dlaczego? Z paru powodów. Po pierwsze, jeśli pojawi się nowa wersja programu to nie zaczynamy od zera. Niektóre poprawki, które były dobre dla poprzedniej wersji, mogą być właściwe, najwyżej po minimalnych zmianach i dla obecnej. By się o tym przekonać, wystarczy do nich zajrzeć. Poza tym wszystkie domyślne opcje potrzebne do instalacji są w ten sposób łatwo dostępne. Poza tym RPM zaprojektowano tak, aby umożliwić sprawdzanie wielu istotnych informacji dotyczących zarówno pojedyńczego, konkretnego pakietu jak i ich zestawu bądź też wszystkich pakietów zainstalowanych w danym systemie. Przykładem takiej informacji jest lista pakietów, których dany pakiet wymaga wraz z numerami wersji. Możliwe jest również sprawdzenie z jakiego pakietu pochodzi konkretny plik oraz gdzie można znaleźć jego wersję źródłową. Pliki RPM są już wewnętrznie spakowane, ale sprawdzanie informacji dotyczących konkretnego pakietu jest proste i _s_z_y_b_k_i_e dzięki specjalnemu binarnemu nagłówkowi który zawiera praktycznie wszystkie niezbędne informacje o pakiecie. Innym atutem RPM jest umiejętność weryfikacji pakietów. Jeśli boisz się, że skasowałeś jakiś ważny plik, to możesz to po prostu sprawdzić. RPM poinformuje Cię o wykrytych nieprawidłowościach. Jeśli zajdzie potrzeba, to możesz łatwo odnowić zainstalowany pakiet przy czym Twoje pliki konfiguracyjne zostaną zachowane. Oczywiście możesz też zainstalować je od nowa. Autorzy chcą podziękować grupie ludzi od dystrybucji BOGUS za wiele ich idei i pomysłów które wykorzystano w RPM. Gdyż o ile RPM został napisany w całości przez Red Hat Software, to zasady jego działania są oparte na kodzie stworzonym przez BOGUS (PM oraz PMS). 33.. IInnffoorrmmaaccjjee ooggóóllnnee 33..11.. SSkkąądd wwzziiąąćć RRPPMM?? Najprostszym sposobem jest instalacja Linux-a Red Hat. Jeśli ktoś nie chce tego robić to może używać RPM bez tego. W Polsce RPM jest dostępny np. pod adresem: ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/redhat/code/rpm> - polskim mirrorze ftp.redhat.com. 33..22.. WWyymmaaggaanniiaa RRPPMM Podstawowym wymaganiem RPM-a jest cpio o numerze wersji 2.4.2 lub wyższym. Mimo że RPM jest pomyślany do pracy pod Linux-em to równie może być przeniesiony na inne systemy Unix. W rzeczywistości udało się go już uruchomić pod SunOS, Solaris, AIX, Irix, AmigaOS i wieloma innymi systemami. Jednak należy pamiętać, że pakiety binarne stworzone na różnych Unix-ach mogą nie być ze sobą zgodne. Są to minimalne wymagania by zainstalować RPM-y. By tworzyć RPM-y z kodu źródłowego potrzebne jest również wszystko to co normalnie jest wymagane przy tworzeniu pakietu np. gcc, make, itd. 44.. UUżżyywwaanniiee RRPPMM Najprostszym wykorzystaniem RPM jest instalacja nowego pakietu: rpm -i foobar-1.0-1.i386.rpm Równie proste jest jego odinstalowanie: rpm -e foobar Przykładem bardziej złożonego, ale _b_a_r_d_z_o użytecznego polecenia jest instalacja pakietów poprzez FTP. Jeśli jesteś podłączony do sieci i chcesz zainstalować nowy pakiet, to wszystko co musisz zrobić to podać nazwę pliku jako poprawny URL, np.: rpm -i ftp://ftp.pht.com/pub/linux/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm Chciałbym podkreślić, że w tym przypadku RPM sprawdzi bądź zainstaluje pakiet poprzez FTP. Były to w miarę proste polecenia, lecz rpm może być użyty na wiele więcej sposobów jak można się łatwo przekonać pisząc w linii komend rpm i naciskając Enter: RPM version 2.3.9 Copyright (C) 1997 - Red Hat Software This may be freely redistributed under na warunkach of the GNU Public License usage: rpm {--help} rpm {--version} rpm {--initdb} [--dbpath <dir>] rpm {--install -i} [-v] [--hash -h] [--percent] [--force] [--test] [--replacepkgs] [--replacefiles] [--root <dir>] [--excludedocs] [--includedocs] [--noscripts] [--rcfile <file>] [--ignorearch] [--dbpath <dir>] [--prefix <dir>] [--ignoreos] [--nodeps] [--ftpproxy <host>] [--ftpport <port>] file1.rpm ... fileN.rpm rpm {--upgrade -U} [-v] [--hash -h] [--percent] [--force] [--test] [--oldpackage] [--root <dir>] [--noscripts] [--excludedocs] [--includedocs] [--rcfile <file>] [--ignorearch] [--dbpath <dir>] [--prefix <dir>] [--ftpproxy <host>] [--ftpport <port>] [--ignoreos] [--nodeps] file1.rpm ... fileN.rpm rpm {--query -q} [-afpg] [-i] [-l] [-s] [-d] [-c] [-v] [-R] [--scripts] [--root <dir>] [--rcfile <file>] [--whatprovides] [--whatrequires] [--requires] [--ftpuseport] [--ftpproxy <host>] [--ftpport <port>] [--provides] [--dump] [--dbpath <dir>] [targets] rpm {--verify -V -y} [-afpg] [--root <dir>] [--rcfile <file>] [--dbpath <dir>] [--nodeps] [--nofiles] [--noscripts] [--nomd5] [targets] rpm {--setperms} [-afpg] [target] rpm {--setugids} [-afpg] [target] rpm {--erase -e} [--root <dir>] [--noscripts] [--rcfile <file>] [--dbpath <dir>] [--nodeps] [--allmatches] package1 ... packageN rpm {-b|t}[plciba] [-v] [--short-circuit] [--clean] [--rcfile <file>] [--sign] [--test] [--timecheck <s>] specfile rpm {--rebuild} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm rpm {--recompile} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm rpm {--resign} [--rcfile <file>] package1 package2 ... packageN rpm {--addsign} [--rcfile <file>] package1 package2 ... packageN rpm {--checksig -K} [--nopgp] [--nomd5] [--rcfile <file>] package1 ... packageN rpm {--rebuilddb} [--rcfile <file>] [--dbpath <dir>] rpm {--querytags} Wszystkie te opcje są opisane w podręczniku systemowym "man" dotyczącym RPM. 55.. AA ccoo ttaakk _n_a_p_r_a_w_d_ę mmoożżnnaa zzrroobbiićć zz RRPPMM?? RPM jest bardzo wygodnym narzędziem i jak można było się przekonać, ma sporo opcji. Najlepszą metodą zapoznania się z nimi są przykłady. Pokazałem już najprostszą instalację i usuwanie pakietów, czas na trochę ciekawsze przykłady: ˇ W praktyce instalując pakiet chce się usunąc jego starą wersję (opcja -U od ang. upgrade). Często chcemy również widzieć postęp instalacji (-h od ang. hash) oraz dostać poszerzone komunikaty o błędach (-v od ang. verbose), tak więc praktycznie najczęściej pakiety instaluje się poprzez: rpm -Uhv foobar-1.0-1.i386.rpm ˇ Powiedzmy, że skasowałeś przypadkiem jakieś pliki, niestety, nie znasz nawet ich nazw. Jeśli więc chcesz zweryfikować cały system i sprawdzić czego może brakować, zrób tak: rpm -Va (od ang. Verify all) ˇ Powiedzmy, że natknąłeś się na plik, którego nie znasz. Żeby sprawdzić do jakiego pakietu należy, zrób: rpm -qf /usr/X11R6/bin/xjewel (od ang. query file). W wyniku otrzymasz nazwę pakietu: xjewel-1.6-1 ˇ Natknąłeś się na jakiś plik RPM i chciałbyś sprawdzić co jest w środku. Zrób tak: rpm -qpi koules-1.2-2.i386.rpm Wyświetli Ci się coś takiego: Name : koules Distribution: Red Hat Linux Colgate Version : 1.2 Vendor: Red Hat Software Release : 2 Build Date: Mon Sep 02 11:59:12 1996 Install date: (none) Build Host: porky.redhat.com Group : Games Source RPM: koules-1.2-2.src.rpm Size : 614939 Summary : SVGAlib action game with multiplayer, network, and sound support Description : This arcade-style game is novel in conception and excellent in execution. No shooting, no blood, no guts, no gore. The play is simple, but you still must develop skill to play. This version uses SVGAlib to run on a graphics console. (od ang. query package info). ˇ A teraz chciałbyś sprawdzić jakie pliki wchodzą w skład tego pakietu: rpm -qpl koules-1.2-2.i386.rpm W wyniku otrzymasz ich listę: /usr/doc/koules /usr/doc/koules/ANNOUNCE /usr/doc/koules/BUGS /usr/doc/koules/COMPILE.OS2 /usr/doc/koules/COPYING /usr/doc/koules/Card /usr/doc/koules/ChangeLog /usr/doc/koules/INSTALLATION /usr/doc/koules/Icon.xpm /usr/doc/koules/Icon2.xpm /usr/doc/koules/Koules.FAQ /usr/doc/koules/Koules.xpm /usr/doc/koules/README /usr/doc/koules/TODO /usr/games/koules /usr/games/koules.svga /usr/games/koules.tcl /usr/man/man6/koules.svga.6 (od ang. query package list) ˇ Chcesz wyświetlić listę pakietów zainstalowanych w Twoim systemie? Nic prostszego: rpm -qa (od ang. query all). ˇ Chcesz sprawdzić czy pakiet jest kompletny, nie przekłamany i mam poprawny podpis PGP? rpm -K -vv pakiet.rpm To było tylko parę przykładów, więcej znajdziesz np. w man-ie. Na pewno wpadniesz na ciekawsze w miarę jak będziesz lepiej poznawał RPM. 66.. TTwwoorrzzeenniiee rrppmm--óóww.. Tworzenie rpm-ów jest dość proste, szczególnie jeśli oprogramowanie które chcesz w nie włożyć poprawnie się instaluje. Procedura tworzenia RPM-ów wygląda tak: ˇ Upewnij się, że plik /etc/rpmrc jest obecny i poprawnie skonfigurowany w Twoim systemie. ˇ Doprowadź to tego, że pliki źródłowe dla których tworzysz rpm poprawnie się instalują. ˇ Przygotuj listę poprawek jakich musiałeś dokonać by kod kompilował się poprawnie. ˇ Przygotuj plik specyfikujący (.spec) dla Twojego pakietu. ˇ Upewnij się, że wszystko jest na swoim miejscu. ˇ Zbuduj pakiet używając rpm. Zazwyczaj RPM tworzy zarówno pakiety binarne jak i źródłowe. 66..11.. PPlliikk rrppmmrrcc W chwili obecnej, jedyny sposób konfiguracji RPM-a jest dostępny poprzez plik /etc/rpmrc. Przykładowy plik wygląda tak: require_vendor: 1 distribution: Moja własna dystrybucja! require_distribution: 1 topdir: /usr/src/me vendor: Kubuśsoft packager: Pakujący RPM w Kubuśsoft <pakiety@kubuśsoft.com.pl> optflags: i386 -O2 -m486 -fno-strength-reduce optflags: alpha -O2 optflags: sparc -O2 signature: pgp pgp_name: Pakujący RPM w Kubuśsoft pgp_path: /home/pakiety/.pgp tmppath: /usr/tmp Wiersz require_vendor zmusza RPM-a do szukania wiersza z nazwą producenta pakietów (vendor). Ta może pochodzić z pliku /etc/rpmrc lub z nagłówka pliku .spec. By wyłączyć tę opcję, zmień liczbę na 0. Analogicznie jest w przypadku wierszy require_distribution oraz require_group. Następnym wiersz zawiera distribution i określa nazwę dystrybucji. Możesz ją zdefiniować tutaj, bądź później, w nagłówku pliku specyfikującego. Tworząc pakiet dla konkretnej dystrybucji warto zadbać by wiersz ten zawierał poprawną informację, nawet pomimo tego, że nie jest wymagany. Tyczy się to również wiersza vendor (producent), choć nazwa może być zupełnie dowolna (np. Joe's Software, Rock Music Emporium). RPM pozwala również tworzyć pakiety dla różnych platform sprzętowych. Plik rpmrc może zawierać zmienną ``optflags'' wykorzystywaną przy building budowaniu tych elementów pakietu, które wymagają opcji zależnych od platformy. Dokładniejszy opis tej zmiennej pojawi się w jednym z następnych rodziałów. Nie są to oczywiście wszystkie etykiety/makra. Jest ich więcej. By się im przyjrzeć spróbuj komendy: rpm --showrc która powinna wypisać wszystkie możliwe etykiety wraz z ich wartościami (o ile są ustawione). 66..22.. PPlliikk ssppeeccyyffiikkuujjąąccyy ..ssppeecc Niniejszy rozdział zawiera opis pliku specyfikującego dla pakietu. Plik taki są niezbędne by stworzyć pakiet. Zawiera on opis oprogramowania wraz z instrukcjami instalacyjnymi oraz listę wszystkich plików binarnych przez niego instalowanych. Plik specyfikujący warto jest nazwać zgodnie z konwencją. Powinno to wyglądać mniej więcej tak: nazwa pakietu-kreska-numer wersji-kreska- numer modyfikacji-kropka-spec. A tak wygląda przykładowy plik specyfikujący (eject-3.0-1.spec): Summary: ejects ejectable media and controls auto ejection Name: eject Version: 1.4 Release: 3 Copyright: GPL Group: Utilities/System Source: sunsite.unc.edu:/pub/Linux/utils/disk-management/eject-1.4.tar.gz Patch: eject-1.4-make.patch Patch1: eject-1.4-jaz.patch %description This program allows the user to eject media that is autoejecting like CD-ROMs, Jaz and Zip drives, and floppy drives on SPARC machines. %prep %setup %patch -p1 %patch1 -p1 %build make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" %install install -s -m 755 -o 0 -g 0 eject /usr/bin/eject install -m 644 -o 0 -g 0 eject.1 /usr/man/man1 %files %doc README COPYING ChangeLog /usr/bin/eject /usr/man/man1/eject.1 66..33.. NNaaggłłóówweekk Nagłówek pliku .spec zawiera kilka standardowych pól które powinny być wypełnione. Oto znaczenie poszczególnych pól: ˇ Summary: Jest to jednowierszowy, skrócony opis pakietu. ˇ Name: To pole zawiera nazwę pliku rpm. Ściśle jest to string będący tą częścią nazwy pliku rpm która odpowiada nazwie pakietu. ˇ Version: To pole zawiera wersję pliku rpm. Ściśle jest to string będący tą częścią nazwy pliku rpm która odpowiada wersji pakietu. ˇ Release: To pole zawiera numer modyfikacji pliku rpm. Jest to liczba mówiąca z którą modyfikacją (podwersją) obecnej wersji pakietu mamy do czynienia (tzn. jeśli dokonany w pakiecie tylko minimalnych poprawek błędów to wypuszczamy pakiet w tej samej wersji ale z numerem modyfikacji większym o jeden). ˇ Icon: To pole zawiera nazwę pliku z ikoną przeznaczoną do wykorzystania przez narzędzia instalacyjne wyższego poziomu (np. ``glint'' RedHat-a). Plik ten powinien być zapisany w formacie GIF i znajdować się w katalogu SOURCES. ˇ Source: This wiersz zawiera nazwę pliku źródłowego z którego jest budowany dany rpm. Jest to pomocne w sytuacji gdy chce się kiedyś zajrzeć do odpowiednich kodów źródłowych lub sprawdzić czy nie ma ich nowszej wersji. Uwaga: Nazwa pliku w tym wierszu MUSI odpowiadać nazwie pliku obecnego w Twoim systemie. (tzn. nie zmieniaj nazw plików źródłowych po ich ściągnięciu). Można podać więcej niż jeden plik źródłowy pisząc w poniższy sposób: Source0: blah-0.tar.gz Source1: blah-1.tar.gz Source2: fooblah.tar.gz Te pliki powinny się znaleźć w katalogu SOURCES. (Struktura tego kat­ alogu jest opisana w rozdziale "Katalogi z plikami źródłowymi".) ˇ Patch: To pole zawiera miejsce w którym będzie można znaleźć poprawki(patch) jeśli zainstnieje potrzeba ich ponownego ściągnięcia. Uwaga: Nazwa tego pliku musi odpowiadać nazwie pliku jaki jest użyty do naniesienia Twoich poprawek. Można też podać wiele plików z poprawkami analogicznie do wielu plików źródłowych: Patch0: blah-0.patch Patch1: blah-1.patch Patch2: fooblah.patch Te pliki powinny się znaleźć w katalogu SOURCES. ˇ Copyright: Ten wiersz opisuje do jakiej kategorii ze względu na prawo autorskie należy dane oprogramowanie. Najlepiej wykorzystać jedną z dobrze zdefiniowanych kategorii: GPL, BSD, MIT, public domain, distributable, lub commercial. ˇ BuildRoot: Ten wiersz pozwala zdefiniować główny katalog (``root'') dla tworzenia i instalacji pakietu. Można to wykorzystać np. do testowania instalacji pakietu zanim się go zainstaluje w docelowym miejscu. ˇ Group: Ten wiersz służy do tego, by programy instalacyjne wyższego poziomu (wspomniany ``glint'') wiedziały w jakim miejscu ich hierarchicznej struktury grup pakietów umieścić dany pakiet. W chwili obecnej drzewo grup pakietów wygląda mniej więcej tak: Applications Communications Editors Emacs Engineering Spreadsheets Databases Graphics Networking Mail Math News Publishing TeX Base Kernel Utilities Archiving Console File System Terminal Text Daemons Documentation X11 XFree86 Servers Applications Graphics Networking Games Strategy Video Amusements Utilities Libraries Window Managers Libraries Networking Admin Daemons News Utilities Development Debuggers Libraries Libc Languages Fortran Tcl Building Version Control Tools Shells Games ˇ %description Nie jest to element nagłówka w ścisłym tego słowa znaczeniu ale jego opis powinien się znaleźć wraz z opisem nagłówka. Dla każdego pakietu lub subpakietu potrzebne jest jedno takie pole zawierające przejrzysty i zrozumiały opis pakietu. 66..44.. SSeekkccjjaa PPrreepp Jest to druga część pliku specyfikującego. Używa się jej do przygotowania źródeł do kompilacji/instalacji. W niej powinny znajdować się wszystkie czynności niezbędne by nanieść poprawki do źródeł i doprowadzić je do stanu w którym będzie można wydać komendę make. Jedną rzecz należy podkreślić: Każda z tych części jest tak naprawdę tylko miejscem do umieszczenia odpowiednich skryptów. Możesz po prostu napisać skrypt w sh a następnie umieścić go po znaczniku %prep by rozpakować i wprowadzić poprawki do swoich programów. By to ułatwić powstały specjalne makra. Pierwszym z nich jest makro %setup. W swojej najprostszej formie (bez dodatkowych opcji w linii poleceń), rozpakowywuje ona źródła i zmienia bieżący katalog na katalog zawierający źródła. Poza tym ma jednak dodatkowe opcje: ˇ -n name ustawi nazwę roboczego katalogu na name. Domyślnie jest to $NAZWA-$WERSJA. Do innych możliwości należą $NAZWA, ${NAZWA}${WERSJA}, czy jakakolwiek inna używana przez główny plik tar. (Proszę zauważyć, że zmienne ``$'' _n_i_e są faktycznymi zmiennymi dostępnymi wewnątrz pliku specyfikującego. W rzeczywistości są one tutaj użyte w miejsce przykładowej nazwy. W pakiecie należy użyć rzeczywistej nazwy i wersji, a nie zmiennej.) ˇ -c utworzy i wejdzie do wymienionego katalogu _z_a_n_i_m zacznie się rozpakowywanie poprzez untar. ˇ -b # wykona untar (rozpakuje) Source# _z_a_n_i_m wejdzie do katalogu roboczego (nie ma sensu łączenie tej opcji z -c, a więc się tego nie robi). Jest to przydatne w przypadku wielu plików źródłowych. ˇ -a # wykona untar (rozpakuje) Source# _p_o wejściu do katalogu. ˇ -T Ta opcja zmienia domyślną procedurę rozpakowywania (untar) źródeł i wymaga -b 0 lub -a 0 by główny plik źródłowy został rozpakowany (untar). Komenda ta jest potrzebna gdy używany jest więcej niż jeden komplet plików źródłowych. ˇ -D _N_i_e usuwaj katalogu przed rozpakowaniem. Jest ona przydatna tylko wtedy, gdy ma się więcej niż jedno makro konfiguracyjne. Powinna być używana _w_y_ł_ą_c_z_n_i_e w makrach konfiguracyjnych wyłącznie _p_o wykonaniu pierwszego z nich (ale nigdy węwnątrz pierwszego z nich). Następne dostępne makra znajdują się w makrze %patch. Makro te pomaga zautomatyzować proces nanoszenie poprawek do źródeł. Możliwe są liczne opcje opisane poniżej: ˇ # zastosuje Patch# jako plik z poprawkami. ˇ -p # podaje liczbę katalogów do odrzucenia z nazwy przed wykorzystaniem polecenia patch(1) ˇ -P Domyślnie stosowana jest Patch (lub Patch0). Ta flaga wyłącza to zachowanie a więc wymaga dodatkowo 0 by główne pliki źródłowe zostały rozpakowane. Opcja ta jest przydatna w drugim (bądź dalszym) makrze %patch które wymaga innego niż pierwsze makro numeru poprawki. ˇ Można też napisać %patch# zamiast : %patch # -P To są wszystkie makra jakich potrzebujesz. Po ich poprawnym napisaniu można wykonać dowolne inne komendy konfiguracyjne poprzez stworzenie odpowiednich fragmentów skryptów w sh. Wszystko co zostanie umieszczone aż do makra %build (omawianego w następnym rozdziale) będzie wykonane przez sh. Przykłady powyżej mogą sugerować rzeczy jakie chciałbyś tam umieścić. 66..55.. SSeekkccjjaa BBuuiilldd Dla tej sekcji nie ma jakichś specjalnych makr. Powinno się w niej umieszczać dowolne polecenia potrzebne do stworzenia pakietu po rozpakowaniu źródeł, naniesieniu poprawek i przejściu do katalogu roboczego. Jest to po prostu następny zbiór poleceń przekazany do sh, więc można tu używać dowolnych poprawnych poleceń sh (włącznie z komentarzami). KKaattaalloogg rroobboocczzyy nnaa ppoocczząąttkkuu kkaażżddeejj zz sseekkccjjii jjeesstt uussttaawwiiaannyy nnaa kkaattaalloogg ggłłóówwnnyy zz pplliikkaammii źźrróóddłłoowwyymmii, o czym trzeba pamiętać i w razie potrzeby przechodzić do odpowiednich podkatalogów. 66..66.. SSeekkccjjaa IInnssttaallll Tu również nie ma jakichś specjalnych makr. Sekcja ta powinna zawierać listę poleceń potrzebnych do instalacji pakietu. Jeśli wykonujesz make install by zainstalować pakiet, umieść to tu. Możesz również nanieść poprawki do makefile'a zanim wykonasz make install. Jeśli nie to umieść tu sekwencję poleceń sh jakich potrzebujesz. Katalog roboczy, identycznie jak w poprzednim przypadku, jest ustawiany przed wykonaniem tych poleceń na główny katalog z plikami źródłowymi. 66..77.. OOppccjjoonnaallnnee sseekkccjjee pprree ii ppoosstt ddllaa sseekkccjjii IInnssttaallll//UUnniinnssttaallll Możesz tu umieścić skrypty do wykonania przed i po instalacji/deinstalacji (tzn. sekcjami Install/Uninstall). Główny powód to np. potrzeba wykonania komendy ldconfig po instalacji bądź usuwaniu pakietów zawierających biblioteki dzielone. Makra są zdefiniowane jak poniżej: ˇ %pre makro z poleceniami wykonywanymi przed sekcją Install. ˇ %post makro z poleceniami wykonywanymi po sekcji Install. ˇ %preun makro z poleceniami wykonywanymi przed sekcją Uninstall. ˇ %postun makro z poleceniami wykonywanymi po sekcji Uninstall. Sekcje te mogą zawierać dowolne poprawne polecenia sh ( _n_i_e potrzebujesz wstawiać #!/bin/sh na początku). 66..88.. SSeekkccjjaa FFiilleess W sekcji tej _m_u_s_i_s_z wypisać pliki jakie wchodzą w skład pakietu. RPM nie potrafi określić jakie pliki zostają zainstalowan na skutek np. make install. Tego się po prostu _N_I_E _D_A rozsądnie zrobić. Owszem, była propozycja wykonywania polecenia find przed i po instalacji pakietu. Jednak w systemach wieloużytkownikowych nie jest to zbyt sensowne gdyż w tym samym czasie mogło powstać wiele innych plików nie mających najmniejszego związku z instalowanym pakietem. W tej sekcji dostępne jest pare specjalnych makr. Są one opisane poniżej: ˇ %doc służy do zaznaczenia które pliki pakietu są jego dokumentacją. Dokumentacja ta zostanie umieszczona w katalogu: /usr/doc/$NAZWA-$WERSJA-$MODYFIKACJA. Można zarówno podać nazwy kilku plików w linii zawierającej to makro jak i podać te nazwy oddzielnie używając makra dla każdej z nich. ˇ %config służy do zaznaczenia plików konfiguracyjnych w obrębie pakietu. Chodzi tu o pliki typu: sendmail.cf, passwd, etc. W trakcie deinstalacji pliki te są usuwane o ile nie były zmieniane. Jeśli były, to ich nazwa zostaje zmieniona poprzez dodanie końcówki Analogicznie jak dla plików z dokumentacją jedno makro może służyć do zdefiniowania kilku takich plików. ˇ %dir zaznacza dany katalog jako należący do pakietu. Domyślnie, jeśli pojawi się nazwa katalogu _B_E_Z makra %dir, _W_S_Z_Y_S_T_K_O w tym katalogu jest włączane w liste plików i następnie instalowane jako część pakietu. To makro pozwala tego uniknąć. ˇ %files -f <filename> pozwala na włączenie listy plików znajdującej się w jakimś pliku w obrębie katalogu z plikami źródłowymi. Jest to wygodne gdy procedura instalacji buduje własną listę plików którą następnie można włączyć jedną komendą bez podawania nazw tych plików. Największą trudnością w liście plików jest podawanie katalagów. Jeśli np. podasz przez pomyłkę /usr/bin, to Twój pakiet rpm będzie zawierał _w_s_z_y_s_t_k_i_e pliki w katalogu /usr/bin w Twoim komputerze. 66..99.. TTwwoorrzzeenniiee ppaakkiieettuu 66..99..11.. KKaattaallooggii zz pplliikkaammii źźrróóddłłoowwyymmii Jedną z podstawowych rzeczy jest poprawnie skonfigurowane katalogów w których RPM będzie budował pakiet. Robi się to poprzez plik /etc/rpmrc. Większość osób używa po prostu /usr/src. Możliwe, że będziesz potrzebował utworzyć poniższe katalogi: ˇ BUILD jest katalogiem w którym RPM buduje pakiet. Próbne tworzenie pakietu możesz wykonać w jakimkolwiek katalogu który tu podasz. ˇ SOURCES jest katalogiem w którym powinieneś umieścić oryginalne pliki źródłowe i pliki z poprawkami. Jest to miejsce do którego RPM będzie zaglądał domyślnie. ˇ SPECS jest katalogiem w którym powinny się znaleźć wszystkie pliki specyfikujące (spec). ˇ RPMS RPM umieści tu binarme pliki RPM po ich zbudowaniu. ˇ SRPMS RPM umieści to pliki RPM z plikami źródłowymi. 66..99..22.. PPrróóbbnnee ttwwoorrzzeenniiee ppaakkiieettuu Pierwszą rzeczą do zroienia jest doprowadzenie plików źródłowych do takiego stanu by kompilowały i/lub instalowały się bez pomocy RPM-a. By to osiągnąć, rozpakuj źródła i zmień nazwę katalogu na $NAZWA.orig. Następnie ponownie rozpakuj źródła i pracuj na nich. Wejdź do ich katalogu i postępuj zgodnie z instrukcjia ich instalacji/kompilacji. Jeśli będzie konieczna edycja jakichś plików to konieczne będzie wygenerowanie pliku z poprawkami (patch). Jeśli doprowadzisz źródła do stanu w którym będą się poprawnie instalować/kompilować - wyczyść katalog źródłowy. Upewnij się, że wszystkie pliki stworzone w skrypcie konfiguracyjnym (configure) zostały usunięte. Następnie wyjdź z katalogu źródłowego i wykonaj coś takiego: diff -uNr dirname.orig dirname > ../SOURCES/dirname-linux.patch (dirname w tym przykładzie to to samo co $NAZWA parę linii powyżej). Polecenie to stworzy plik z poprawkami jaki będzie mógł być wykorzys­ tany w pliku specyfikujący. Zauważ, że ``linux'' w nazwie pliku z poprawkami jest jakimś wybranym identyfikatorem. Zamiast tego można użyć czegoś bardziej precyzyjnego jak np. ``config'' lub ``bugs'' (błędy) by opisać _d_l_a_c_z_e_g_o poprawki były potrzebne. Przed użyciem pliku z poprawkami warto do niego zajrzeć by się upewnić, że przypad­ kiem nie znalazło się w nim coś niewłaściwego jak np. pliki binarne. 66..99..33.. TTwwoorrzzeenniiee lliissttyy pplliikkóóww Teraz, gdy źródła się kompilują i instalują i wiadomo jak to robić to zrób to, skompiluj i zainstaluj. Przyjrzyj się wynikowi instalacji i stwórz w ten sposób listę plików do użycia w pliku specyfikującym. Zazwyczaj plik specyfikujący powstaje równocześnie z opisywanymi tu krokami. Po prostu tworzy się go na początku wstawiając to co jest znane i potem w miarę postępu prac uzypełnia się go o brakujące kawałki. 66..99..44.. TTwwoorrzzeenniiee ppaakkiieettuu RRPPMM Gdy plik specyfikujący jest gotowy, można już próbować tworzyć nowy pakiet. Najwygodniej jest to zrobić poniższym poleceniem: rpm -ba foobar-1.0.spec Opcja -b ma parę interesującyh podopcji: ˇ p oznacza wykonanie sekcji prep pliku specyfikującego. ˇ l wykona parę różnych testów na plikach %files. ˇ c wykonaj sekcję prep i kompiluj. Jest to przydatne gdy jest się niepewnym czy źródła w ogóle będą się kompilować/instalować. Owszem, na pierwszy rzut oka może to wyglądać na zbędne gdyż można dotąd pracować ze źródłami aż będą się kompilować jednak gdy przyzwyczaisz się do wykorzystania RPM-a to spotkasz się z sytuacjami w którach ta opcja okaże się przydatna. ˇ i wykonaj prep, kompiluj i instaluj. ˇ b prep, kompiluj, instaluj, i buduj jedynie pakiet binarny. ˇ a zbuduj wszystko - zarówno pakiet źródłowy jak i binarny. Jest też parę dodatkowych podopcji do opcji -b: ˇ --short-circuit przejdzie prosto do określonego etapu (może być użyte wyłącznie z c oraz i) ˇ --clean usuwa katalog ze źródłami stworzony w czasie budowania pakietu. ˇ --keep-temps zachowa wszystkie pliki temporalne i skrypty które zostały umieszczone w /tmp. Jakie są to pliki można się dowiedzieć wykorzystując opcję -v. ˇ --test nie wykonuje żadnych rzeczywistych etapów choć wykonuje keep-temps. 66..1100.. TTeessttoowwaanniiee ppaakkiieettuu Po stworzeniu pakietu rpm źródłowego i binarnego należy je przetestować. Najprościej i najlepiej jest wykorzystać do tego zupełnie inny komputer niż ten na którym pakiet był tworzony. W końcu przy tworzeniu pakietu był on dość często instalowany i na komputerze na którym powstawał powinno być to zrobione dość dobrze. Można też próbować rpm -u nazwapakietu.rpm na testowanym pakiecie ale może być to zdradliwe w sytuacji w której jakieś pliki zostały pominięte w liście plików i nie zostaną wtedy usunięte. Wtedy zainstalowany program będzie kompletny mimo tego, że rpm będzie błędny. Pamiętaj, że ponieważ Ty już zrobiłeś rpm -ba package, to zdecydowana większość osób instalujących Twój pakiet wykona jedynie rpm -i package. Upewnij się, że nie wykonujesz w sekcjach build lub install czegoś co powinno być zrobione gdy instalowany jest wyłącznie pakiet binarny. 66..1111.. CCoo rroobbiićć zz TTwwooiimmii nnoowwyymmii RRPPMM--aammii ?? Gdy już stworzyłeś swój własny pakiet RPM (zakładając, że nie ma już takiego pakietu dostępnego pod postacią RPM) możesz udostępnić wynik swojej pracy innym (zakładając że to czego pakiet stworzyłeś może być tak udostępniane). By udostępnić, umieść to na ftp.redhat.com <ftp://ftp.redhat.com>. 66..1122.. CCoo tteerraazz?? Prosimy sprawdzić się, że nic nie zostało pominięte jeszcze raz czytając rozdziały o "Testowaniu" i "Co robić z nowymi RPM-ami". Chcemy mieć jako RPM wszystko co się da ale chcemy, żeby były to dobre RPM-y. Prosimy więc poświęcić trochę czasu na ich dokładne przetestowanie i prosimy też o umieszczenie ich w archiwum ftp tak, by każdy mógł z nich skorzystać. A także, _p_r_o_s_i_m_y upewnić się, że umieszczasz jedynie _b_e_z_p_ł_a_t_n_e oprogramowanie. Oprogramowanie komercyjne i shareware _n_i_e powinno być umieszczane w archiwum o ile nie zawierają klauzuli w ich prawach autorskich to dopuszczającej. Dotyczy to np. Netscape, ssh, pgp, etc. 77.. TTwwoorrzzeenniiee RRPPMM--óóww nnaa wwiieellee ppllaattffoorrmm.. RPM może być wykorzystywany do tworzenia pakietów dla Intel i386, Digital Alpha pracujących pod Linux, oraz Sparc. Są też doniesienia o jego wykorzystaniu na platformach SGI i HP. RPM ma parę cech które czynią tworzenie pakietów na wiele platform prostszymi. Pierwszą z nich jest dyrektywa ``optflags'' w pliku /etc/rpmrc. Może ona być wykorzystana do ustawienia odpowiednich opcji i flag, specyficznych dla architektury, potrzebnych do kompilacji bądź instalacji. Następną cechą ułatwiającą tworzenie pakietów na wiele platform są makra ``arch'' w pliku specyfikującym. Mogą one być wykorzystane do wykonania różnych rzeczy zależnych od architektury na której pakiet jest instalowany. Następną taką cechą jest dyrektywa ``Exclude'' w nagłówku. 77..11.. PPrrzzyykkłłaaddoowwyy pplliikk ssppeeccyyffiikkuujjąąccyy ..ssppeecc Poniżej zamieszczona jest część pliku specyfikującego dla pakietu ``fileutils''. Jest on przygotowany do instalacji na dwóch platformach: Alfach i Intelu. Summary: GNU File Utilities Name: fileutils Version: 3.16 Release: 1 Copyright: GPL Group: Utilities/File Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz Source1: DIR_COLORS Patch: fileutils-3.16-mktime.patch %description These are the GNU file management utilities. It includes programs to copy, move, list, etc, files. The ls program in this package now incorporates color ls! %prep %setup %ifarch alpha %patch -p1 autoconf %endif %build configure --prefix=/usr --exec-prefix=/ make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s %install rm -f /usr/info/fileutils* make install gzip -9nf /usr/info/fileutils* 77..22.. DDyyrreekkttyywwaa ooppttffllaaggss W powyższym przykładzie przedstawione zostało użycie dyrektywy ``optflags'' z /etc/rpmrc. RPM_OPT_FLAGS przyjmują odpowiednią wartość w zależności od tego na jakiej platformie instalowany jest pakiet. Do pliku Makefile użytego w pakiecie należy nanieść poprawki by korzystał z tej zmiennej zamiast standardowych opcji (np. -m486 lub -O2). Możesz się zorientować co powinno być zrobione poprzez zainstalowanie pakietu źródłowego, jego rozpakowanie i przyjrzenie się plikowi Makefile. Następnie należy zajrzeć do plików z poprawkami dla pliku Makefile i sprawdzić jakie zmiany powinny być wprowadzone. 77..33.. MMaakkrraa Makro %ifarch jest bardzo istotne dla tworzenia pakietów na wiele architektur. W większości przypadków potrzebujesz nanieść jedną lub dwie poprawki specyficzne tylko dla jednej, konkretnej architektury. W takiej sytacji RPM pozwala na naniesienie poprawki wyłącznie dla niej. W powyższym przypadku, pakiet fileutils ma poprawkę dla maszyn 64-bitowych. To naturalnie w chwili obecnej stosuje się tylko do Alf. Tak więc dodajemy makro %ifarch nanoszące odpowiednią poprawkę: %ifarch axp %patch1 -p1 %endif To zapewni, że poprawka nie będzie naniesiona na żadnej innej architekturze a wyłącznie na alfach. 77..44.. WWyyłłąącczzaanniiee ppeewwnnyycchh ppllaattffoorrmm ww ppaakkiieettaacchh Można opiekować się źródłowymi RPM-ami w jednym katalogu dla wszystkich platform. Uzyskuje się to poprzez ``wyłączenie'' (ang. exclude) pewnych pakietów z tworzenia ich dla pewnych architektur, tak, że ciągle możliwym jest: rpm --rebuild /usr/src/SRPMS/*.rpm dające w wyniku poprawne pakiety. Jeśli aplikacja nie została jeszcze do tej pory przeniesiona na daną platformę to wystarczy dodać wiersz wygladający mniej więcej tak: ExcludeArch: axp do nagłówka pliku specyfikującego pakiet źródłowy. Następnie prze­ buduj pakiet na platformę na której już pracuje. W ten sposób uzyskuje się pakiet, który kompiluje się/tworzy się np. na Intel-u podczas gdy może być łatwo opuszczony na Alfie. 77..55.. OOssttaattnniiee ppoopprraawwkkii Wykorzystanie RPM to tworzenia pakietów przeznaczonych na wiele platform jest zazwyczaj prostsze niż doprowadzenie pakietu do stanu w którym daję się on na nich zainstalować. Jednakże w miarę jak powstaje więcej i więcej pakietów w postaci binarnej staje się to coraz prostsze. Jeśli przy tworzeniu pakietu zabrniesz w ślepą uliczkę to jak zwykle, rozwiązaniem może być zajrzenie do kodu źródłowego podobnego pakietu. 88.. UUwwaaggaa oo pprraawwaacchh aauuttoorrsskkiicchh Poniższy dokument i jego zawartość są chronione prawem autorskim. Rozpowszechnianie go i jego zawartości jest dozwolone tak długo jak długo jego pozostają one nie zmienione. Innymi słowy można go wyłącznie przeformatowywać, drukować i rozpowszechniać. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/SMB-HOWTO.pl.txt�������������������������������������������������������0100664�0001750�0001750�00000101562�06717116340�017075� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ SMB-Howto Autor:David Wood, dwood@plugged.net.au v1.0, 10 August 1996 WWeerrssjjaa ppoollsskkiieeaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.12, 26 Lipca 1997 Jest to dokument z serii HOWTO (Jak To Zrobić). Opisuje on jak używać Session Message Protocol, zwanego też NetBIOS lub LanManager z Linux- em. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał można znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sun­ site/docs/HOWTO. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie. 1.1. Dalsze informacje. 2. Instalacja. 3. Uruchamianie demonów. 4. Ogólna konfiguracja. (/etc/smb.conf) 5. Udostępnianie dysku Linux-owego komputerom z Windows. 6. Udostępnianie dysku spod Windows maszynom z Linux-em. 7. Udostępnianie drukarki Linux-owej komputerom z Windows. 8. Udostępnianie drukarki spod Windows komputerom z Linux-em. 9. Prawa autorskie i Zakończenie. 9.1. Prawa autorskie. 9.2. Podziękowania. 9.3. Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Jest to dokument z serii HOWTO (Jak To Zrobić). Opisuje on jak używać z Linuxem Session Message Protocol, zwanego też NetBIOS lub LanManager. Dokument ten jest prowadzony przez Davida Wooda dwood@plugged.net.au. Wszelkie dodatki, modyfikacje lub poprawki mogą być przesłane do mnie, aby je później umieścić w następnej wersji. Protokół SMB używany jest przez Microsoft Windows 3.11, NT i 95 aby współdzielić zasoby dyskowe i drukarki. Maszyny Unix-owe (w tym także Linux) mogą korzystać z tych zasobów używając narzędzi stworzonych przez Andrew Tridgella. Są cztery rzeczy, które można zrobić Sambą: 1. Udostępniać dysk Linux-owy dla komputerów z Windows. 2. Udostępniać dysk Windows-owy dla komputerów z Linux-em. 3. Udostępniać drukarkę pod Linux-em dla Windows. 4. Udostępniać drukarkę pod Windows dla Linux-a. Wszystko to zostało opisane w tym dokumencie. Disclaimer. Procedury i skrypty albo działały u autora, albo zostały opisane jako działające przez tych, którzy je napisali. Różne konfiguracje mogą nie działać z podanymi tutaj informacjami. Jeśli odkryjesz taką sytuację możesz napisać do autora list z sugestią na ulepszenie tego dokumentu, ale autor nic nie gwarantuje. A czego się spodziewałeś ? W końcu autor jest tyklo konsultantem. 11..11.. DDaallsszzee iinnffoorrmmaaccjjee.. Dokument ten jest próbą opisania jak skonfigurować na Linux-ie podstawowe serwisy SMB związane z plikami i drukarkami. Samba jest bardzo złożonym i kompletnym pakietem. Nie ma sensu, żeby kopiować tutaj wszystko to co jest zawarte w dokumentacji dla tego pakietu. Dalszych informacji możesz szukać w: ˇ Dokumentacji do Samby, która jest częścią dystrybucji. Dystrybucja jest dostępna pod adresem: ftp.icm.edu.pl ˇ HOWTO dotyczącym drukowania (Printing HOWTO) ˇ oraz w mini-HOWTO Print2Win. 22.. IInnssttaallaaccjjaa.. Najświeższe źródła Samby dostępne są pod adresem ftp.icm.edu.pl w katalogu /pub/samba. Jeśli instalowałeś dystrybucję Red Hat mogłeś wybrać instalację Samby jako jedną z opcji. Niektóre inne dystrybycje też oferują binaria Samby. Następujące demony są wymagane do pracy z Sambą. Zwykle znajdują się one w katalogu /usr/sbin i są uruchamiane w momencie startu systemu albo przez demon inetd. Przykładowe skrypt znajdują się w sekcji ``Uruchamianie demonów.'' ______________________________________________________________________ smbd (Demon SMB) i nmbd (Świadczy usługi nameservera NetBIOS-u) ______________________________________________________________________ Zwykle w systemie instalowane są następujące binaraia w katalogu /usr/bin: ______________________________________________________________________ smbclient (Klient dla maszyn Unix-owych), smbprint (skrypt do drukowania na drukarce przyłączonej do hosta SMB), smbprint.sysv (To samo co wcześniej, ale dla systemu UNIX SVR4), smbstatus (Wyświetla bieżące połączenia SMB na lokalnym hoście), smbrun (Główny skrypt do uruchamiania aplikacji na hoście SMB) ______________________________________________________________________ Dodatkowo zawarty jest w tym dokumencie skrypt o nazwie "print", który jest pożytecznym dokończeniem skryptu smbprint. Pakiet Samba jest prosty w instalacji. Ściągnij go z podanego wcześniej miejsca i przeczytaj plik README znajdujący się w dystrybucji. Jest jeszcze plik docs/INSTALL.txt, który podaje krok po kroku co należy zrobić, aby zainstalować Sambę. Postępując wraz z instalacją, umieść demony w /usr/sbin i binaria w /usr/bin. Zainstaluj strony do podręcznika systemowego "man" w /usr/local/man. Kiedy będziesz instalował pakiet Samba, będziesz musiał podać miejsce, gdzie ma się znajdować plik konfiguracyjny smb.conf. Z reguły jest to katalog /etc, ale możesz go umieścić, gdzie ci się podoba. Dla dalszych instrukcji założymy, że plik konfiguracyjny umieściłeś w /etc, plik logujący to /var/log/samba-log.%m i katalog blokujący to /var/lock/samba. Zainstaluj plik konfiguracyjny smb.conf. Przejdź do katalogu, gdzie została skompilowana Samba. Zajrzyj do katalogu examples/simple i przeczytaj plik README. Skopiuj znaleziony tam plik smb.conf do /etc. OOSSTTRROOŻŻNNIIEE !!!!!! Jeśli masz dystrybucję Linux-a, która miała Sambę i zainstalowałeś ją to pewnie masz już plik smb.conf w katalogu /etc i lepiej zacznij od tego pliku. Jeśli nie chcesz umieszczać pliku konfiguracyjnego w /etc, to umieść go tam, gdzie chcesz i zrób symboliczne dołączenie: ______________________________________________________________________ ln -s /gdzie/jest/smb.conf /etc/smb.conf ______________________________________________________________________ 33.. UUrruucchhaammiiaanniiee ddeemmoonnóóww.. Dwoma demonami SMB są: /usr/sbin/smbd i /usr/sbin/nmbd. Możesz je uruchomić przez demona inetd lub jako osobne procesy. Jeśli konfigurujesz na stałe serwer plikowy, to powinny one być uruchamiane przez inetd po to, żeby je ponownie uruchomić jeśli z jakiegoś powodu przestaną działać. Jeśli chcesz korzystać z Samby tylko czasami, to możesz je uruchomić z któregoś ze skryptów startowych w katalogu /etc/rc.d albo po prostu od ręki wtedy kiedy je potrzebujesz. Aby uruchomić demony przez inetd umieść następujące linie w pliku /etc/inetd.conf: ______________________________________________________________________ Serwis NetBIOS dla Samby # netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd ______________________________________________________________________ Następnie wyślij sygnał HUP do procesu nr 1: ______________________________________________________________________ kill -HUP 1 ______________________________________________________________________ Dla użytkowników dystrybucji Red Hat. Aby uruchomić te demony ze skryptów startowych, umieść następujący skrypt w katalogu /etc/rc.d/init.d/smb i dołącz je symbolicznie do plików podanych w komentarzu: ______________________________________________________________________ #!bin/sh # # /etc/rc.d/init.d/smb - startuje i zatrzymuje serwis SMB # # Następujące pliki powinny być symbolicznymi dołączeniami do # tego pliku: # /etc/rc.d/rc1.d/K35smb (Zatrzymuje serwis SMB podczas # zamknięcia systemu. # /etc/rc.d/rc3.d/S91smb (Startuje serwis SMB w trybie # wieloużytkownikowym # /etc/rc.d/rc6.d/K35smb (zatrzymuje serwis SMB podczas resetu) # # Biblioteka funkcji etc/rc.d/init.d/functions # Konfiguracja sieci etc/sysconfig/network # Sprawdź czy jesteśmy w sieci [ ${NETWORKING} = "no" ] && exit 0 # Zobacz jak zostaliśmy wywołani case "$1" in start) echo -n "Starting SMB services: " daemon smbd -D daemon nmbd -D echo touch /var/lock/subsys/smb ;; stop) echo -n "Shutting down SMB services: " killproc smbd killproc nmbd rm -f /var/lock/subsys/smb echo "" ;; *) echo "Usage: smb {start|stop}" exit 1 esac ______________________________________________________________________ Od tłumacza: Jeśli używasz dystrybucji Slackware. Umieść poniższy fragment w skrypcie startowym /etc/rc.d/rc.local: ______________________________________________________________________ # czy jesteśmy w sieci [ ${NETWORKING} = "no" ] && exit 0 # Uruchmon demony Samby /usr/sbin/smbd -D /usr/sbin/nmbd -D ______________________________________________________________________ 44.. OOggóóllnnaa kkoonnffiigguurraaccjjaa.. ((//eettcc//ssmmbb..ccoonnff)) Konfiguracja Samby na Unix-ie jest kontrolowana jednym plikiem: /etc/smb.conf. W pliku tym umieszczasz zasoby jakie chcesz udostępnić dla świata i jakie restrykcje chcesz wprowadzić. Ponieważ ta sekcja opisuje udostępnianie dysków i drukarek Linux-owych Windowsom, plik smb.conf będzie najprostszym z możliwych. Nie martw się o szczegóły. Późniejsze sekcje wprowadzą ogólny koncept. Każda sekcja pliku zaczyna się od nazwy jak np.: global, homes, printers itp. Sekcja global definiuje kilka ogólnych zmiennych, które będą się odnosić do wszystkich udostępnianych zasobów. Sekcja homes pozwala użytkownikom na dostęp do ich (i tyklo ich) katalogów domowych na lokalnej maszynie Linux-owej. Jeśli jakiś użytkownik Windows będzie chciał skorzystać z udostępnianych zasobów, to zostanie podłączony do swojego katalogu domowego. Zauważ, że aby to zrobić użytkownik musi mieć swoje konto na maszynie Linux-owej. Poniższy przykładowy plik smb.conf pozwala użytkownikom na dostęp do swoich katalogów domowych i na zapis do katalogu tymczasowego. Aby użytkownik Windows zobaczył udostępniane zasoby, Linux musi być w tej samej sieci lokalnej. Użytkownik Windows po prostu dołącza dysk sieciowy z Menedżera Plików lub Eksploratora Windows. W następnych sekcjach będą dodawane kolejne linie do tego pliku, aby umożliwić dostęp do większej ilości zasobów. ______________________________________________________________________ etc/smb.conf ; ; Po wprowadzeniu zmian do tego pliku zrestartuj demony Samby ; kill -9 `pidof smbd`; kill -9 `pidof nmbd` ; /usr/sbin/smbd; /usr/sbin/nmbd [global] Umieść to w pliku jeśli chcesz konto anonimowe guest account = nobody log file = /var/log/samba-log.%m lock directory = /var/lock/samba share modes = yes [homes] comment = Katalogi Domowe browseable = no read only = no create mode = 0750 [tmp] comment = Miejsce na pliki tymczasowe path = /tmp read only = no public = yes ______________________________________________________________________ 55.. UUddoossttęęppnniiaanniiee ddyysskkuu LLiinnuuxx--oowweeggoo kkoommppuutteerroomm zz WWiinnddoowwss.. Jak widać na powyższym przykładzie udostępnianie dysków Linux-owych użytkownikom Windows jest proste. Dostęp do zasobów udostępnianych poprzez Sambę można w bardzo dużym stopniu kontrolować. Aby udostępnić wszystkim jakieś zasoby, dodaj poniższe linie do smb.conf: ______________________________________________________________________ [public] comment = Public Stuff path = /home/public public = yes writable = yes printable = yes ______________________________________________________________________ Aby umożliwić zapis do tego katalogu tylko dla członków grupy staff, zmodyfikuj te linie w następujący sposób: ______________________________________________________________________ [public] comment = Public Stuff path = /home/public public = yes writable = yes printable = no write list = @staff ______________________________________________________________________ Więcej informacji na temat różnych sposobów udostępniania zasobów znajdziesz w dokumentacji do Samby. 66.. UUddoossttęęppnniiaanniiee ddyysskkuu ssppoodd WWiinnddoowwss mmaasszzyynnoomm zz LLiinnuuxx--eemm.. Wraz z dystrybucją Samby otrzymujemy klienta dla Unix-ów. Jego interfejs poleceń jest podobny do ftp. Możesz go używać, aby przenosić pliki między Windowsowym "serwerem" a klientem Linux-owym. Aby zobaczyć jakie zasoby sa udostępnione na danym hoście napisz: ______________________________________________________________________ /usr/sbin/smbclient -L host ______________________________________________________________________ gdzie host jest nazwą maszyny, której zasoby chcesz zobaczyć. Polecenie to zwróci listę nazw serwisów - to znaczy nazw dysków lub drukarek, które może udostępnić. Serwer Samby będzie cię pytał o hasło, o ile nie ma skonfigurowanego bezpiecznego dostępu. Np. ______________________________________________________________________ smbclient -L zimmermann ______________________________________________________________________ Polecenie to powinno wyświetlić coś na kształt: ______________________________________________________________________ Server time is Sat Aug 10 15:58:27 1996 Timezone is UTC+10.0 Password: Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51] Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[] Sharename Type Comment --------- ---- ------- ADMIN$ Disk Remote Admin public Disk Public C$ Disk Default share IPC$ IPC Remote IPC OReilly Printer OReilly print$ Disk Printer Drivers This machine has a browse list: Server Comment --------- ------- HOPPER Samba 1.9.15p8 KERNIGAN Samba 1.9.15p8 LOVELACE Samba 1.9.15p8 RITCHIE Samba 1.9.15p8 ZIMMERMAN ______________________________________________________________________ Browse list pokazuje inne serwery SMB udostępniające zasoby w sieci. Aby użyć klienta napisz: ______________________________________________________________________ /usr/sbin/smbclient serwis <hasło> ______________________________________________________________________ gdzie serwis jest nazwą maszyny i zasobu. Na przykład jeśli próbujesz dostać się do katalogu, który jest udostępniany jako public na maszynie o nazwie zimmermann, serwisem byłoby: \zimmermanublic. Chociaż z powodu powłoki w Linux-ie będziesz musiał oznaczyć znaki specjalnie i polecenie ostatecznie wygląda tak: ______________________________________________________________________ usr/sbin/smbclient \\\\zimmerman\\public hasło ______________________________________________________________________ gdzie hasło jest łańcuchem znaków będącym twoim hasłem. Pojawi się wtedy znak zachęty klienta Samby: ______________________________________________________________________ Server time is Sat Aug 10 15:58:44 1996 Timezone is UTC+10.0 Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51] smb: \> ______________________________________________________________________ Napisz 'h', aby uzyskać pomoc: ______________________________________________________________________ smb: \> h ls dir lcd cd pwd get mget put mput rename more mask del rm mkdir md rmdir rd prompt recurse translate lowercase print printmode queue cancel stat quit q exit newer archive tar blocksize tarmode setmode help ? ! smb: \> ______________________________________________________________________ Jeśli umiesz używać ftp, to nie powinieneś potrzebować czytać podręcznika systemowego na temat smbclient. 77.. UUddoossttęęppnniiaanniiee ddrruukkaarrkkii LLiinnuuxx--oowweejj kkoommppuutteerroomm zz WWiinnddoowwss.. Aby udostepnić drukarkę Linux-ową Windowsom musisz się upewnić, że drukarka działa dobrze pod Linux-em. Jeśli możesz drukować spod Linux- a to ustawienie serwera SMB dla drukarki jest bardzo proste. Przeczytaj Priniting-HOWTO na temat ustawienia drukarki pod Linux-em. Ponieważ autor używa drukarki połączonej z Windows NT, sekcja ta nie powinna być brana za definicję, ale bardziej jako sugestia. Jeśli ktokolwiek ma ochotę się podzielić szczegółami na temat innych konfiguracji proszę o kontakt, aby ta sekcja mogła zostać skończona: dwood@plugged.net.au. Dodaj konfigurację na temat drukowania do smb.conf: ______________________________________________________________________ [global] printing = bsd printcap name = /etc/printcap load printers = yes log file = /var/log/samba-log.%m lock directory = /var/lock/samba [printers] comment = Wszystkie drukarki security = server path = /var/spool/lpd/lp browseable = no printable = yes public = yes writable = no create mode = 0700 [ljet] security = server path = /var/spool/lpd/lp printer name = lp writable = yes public = yes printable = yes print command = lpr -r -h -P %p %s ______________________________________________________________________ Upewnij się, że ścieżka do drukarki (w tym wypadku w sekcji ]ljet[) jest taka sama jak katalog zadań w etc/printcap. UWAGA: Są pewne problemy przy udostępnianiu drukarki Unixowej przez Sambę komputerom z Windows NT. Jeden problem to taki, żeby NT widziało poprawnie drukarkę. Aby go zlikwidować przeczytaj plik docs/WinNT.txt, który jest dostarczany wraz z dystrybucją. Drugi problem to hasła. Przeczytaj ten sam plik, aby rozwiązać ten problem. 88.. UUddoossttęęppnniiaanniiee ddrruukkaarrkkii ssppoodd WWiinnddoowwss kkoommppuutteerroomm zz LLiinnuuxx--eemm.. Aby udostępnić drukarkę spod Windows-ów musisz zrobić następujące rzeczy: a) Musisz mieć poprawne pola w /etc/printcap i muszą one odpowiadać lokalnej strukturze katalogów (katalog dla drukarki itp.) b) Musisz mieć skrypt /usr/bin/smbprint. Skrypt ten znajduje się w źródłach Samby, ale nie w każdym pakiecie binarnym. Poniżej znajduje się trochę zmodyfikowana wersja tego skryptu. c) Jeśli chcesz zamieniać pliki ASCII na PostScript, musisz mieć nenscript albo jego ekwiwalent. nenscript jest konwerterem PostScript- owym i jest z reguły instalowany w /usr/bin. d) Możesz ułatwić drukowanie poprzez Sambę pisząc skrypt. Poniżej podany jest prosty skrypt w Perl-u obsługujący pliki ASCII, PostScript i stworzony PostScript. Poniższe pola w /etc/printcap są dla drukarki HP 5MP dołączonej do komputera z Windows NT. ______________________________________________________________________ cm - komentarz; lp - urządzenie, na które ma być wysłany wydruk; sd - katalog zadań dla drukarki (na lokalnym komputerze); af - katalog accounting; mx - maksymalny rozmiar pliku (0 - bez ograniczenia); if - nazwa filtru wejściowego (skryptu). ______________________________________________________________________ Więcej informacji znajdziesz w Printing-HOWTO lub w podręczniku systemowym dla "printcap". ______________________________________________________________________ etc/printcap # # //zimmerman/oreilly przez smbprint # lp:\ cm=HP 5MP Postscript OReilly na zimmerman:\ lp=/dev/lp1:\ :sd=/var/spool/lpd/lp:\ af=/var/spool/lpd/lp/acct:\ mx#0:\ :if=/usr/bin/smbprint: ______________________________________________________________________ Upewnij się, że katalogi zadań i accounting istnieją i są zapisywalne oraz że if ma poprawną ścieżkę do scryptu smbprint (patrz poniżej) i że lp wskazuje poprawne urządzenie (plik specjalny w katalogu /dev) Następnym krokiem jest skrypt smbprint. Zwykle znajduje się on w /usr/bin i jest przypisywany Andrew Tridgellowi - osobie, która stworzyła Sambę o ile wiem. Przychodzi on wraz z dystrybucją źródeł Samby, ale nie ma go w dystrybucji binariów, więc go tutaj stworzyłem. Możesz przejrzeć go dokładniej. Przerobiłem go trochę, ponieważ przeróbki wydawały mi się użyteczne. ______________________________________________________________________ #!/bin/sh # Skrypt ten jest filtrem wejściowym do drukowania na drukarce # dołączonej do Unix-a. Używa programu smbclient do drukowania # pliku. Na przykład twój printcap mógłby wyglądać nastepująco: # # # smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint # # # Stworzyłby on drukarkę o nazwie smb, która drukowałaby poprzez # ten skrypt. Musiałbyś stworzyć katalog zadań /usr/spool/smb z # odpowiednimi dla twojego systemu prawami dostępu i właścicielem. # # Ustaw następujące rzeczy na serwer i serwis przez, który chcesz # drukować. W tym przykładzie mam PC-ta z WfWg o nazwie "lapland", # który ma drukarkę o nazwie printer bez hasła. # # # W dalszej części skrypt został przerobiony przez hamilton@ecnz.co.nz # (Michael Hamilton, tak aby serwer, serwis i hasło mogły być # przeczytane z pliku /usr/var/spool/lpd/PRINTNAME/.config # # Aby to działało /etc/printcap musi mieć pole af: # # cdcolour:\ cm=CD IBM Colorjet on 6th:\ sd=/var/spool/lpd/cdcolour:\ # :af=/var/spool/lpd/cdcolour/acct:\ if=/usr/local/etc/smbprint:\ # :mx=0:\ lp=/dev/null: # # Plik /usr/var/spool/lpd/PRINTNAME/.config powinien zawierać: # server=PC_SERVER service=PR_SHARENAME password="password" # # Np. server=PAULS_PC service=CJET_371 password="" # # Plik, do którego mają byc zapisywane wiadomości ze śledzenia; # możesz zmienić na /dev/null jeśli chcesz: # logfile=/tmp/smb-print.log logfile=/dev/null # # Ostatnim parametrem do filtra jest nazwa pliku accounting. # spool_dir=/var/spool/lpd/lp config_file=$spool_dir/.config # Powinien czytać te zmienne z pliku konfiguracyjnego: serwer # serwis hasło użytkownik eval `cat $config_file` # Trcohę pomocy, zmień >> na > jeśli chcesz zachować trochę # miejsca na dysku. # echo "server $server, service $service" >> $logfile (UWAGA Możesz dodać linię `echo translate' jesli chcesz # automatycznego tłumaczenia CR/LF podczas drukowania. echo translate echo "print -" cat ) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile ______________________________________________________________________ Większość dystrybucji Linux-owych posiada nenscript do zamiany dokumentów ASCII na PostScript. Następujący skrypt w Perl-u ułatwia życie stwarzając prosty interfejs dla drukowania w Linux-ie przez smbprint. ______________________________________________________________________ Stosowanie: print [-a|c|p] <nazwa_pliku> -a drukuje <nazwa_pliku> jako ASCII; c drukuje <nazwa_pliku> sformatowane jako źródło; -code p drukuje <nazwa_pliku> jako PostScript. Jeśli nie ma żadnej opcji, print próbuje odgadnąć typ pliku i odpowiednio go wydrukować. ______________________________________________________________________ Użycie smbprint do drukowania plików ASCII powoduje obcinanie długich linii. Ten skrypt dzieli długie linie w miejscu spacji (zamiast w środku słowa) jeśli jest to możliwe. Formatowanie źródła odbywa sie przy pomocy programu nenscript. Bierze on plik ASCII i formatuje go w dwie kolumny z dodatkowym nagłówkiem (data, nazwa pliku, itp.) Zlicza także ilość linii. Wzorując się na tym przykładzie możesz zrobić inne typy formatowania. Dokumenty PostScript-owe są już sformatowane więc przechodzą bezpośrednio do drukarki. ______________________________________________________________________ usr/bin/perl # Skrypt: print Autorzy: Brad Marshall, David Wood # Plugged In Communications Date: 960808 # # Skrypt do drukowania na drukarce oreilly, która jest dołączona do # komputera zimmerman. Opis działania: Jako argumenty przyjmuje pliki # różnych typów i wysyła je odpowiednio do skryptu drukujacego Samby # # Obecnie obsługiwane typy plików: # # ASCII - Upewnij się, że linie dłuższe niż $line_length zostały # podzielone w miejscu spacji. # PostScript - Nie robi nic. # Code - Formatuje na PostScript używając "nenscript", aby wszystko # było odpowiednio wyświetlone (ułożenie, czcionki, itd.) # # # Ustaw maksymalną ilość znaków w linii dla plików ASCII. line_length $= 76; # Ustaw ścieżkę i nazwę skryptu drukującego Samby print_prog = $"/usr/bin/smbprint"; # Ustaw ścieżkę i nazwę "nenscript-u" (zamiana ASCII-->PostScript) $nenscript = "/usr/bin/nenscript"; unless ( -f $print_prog ) { die "Can't find $print_prog!"; } unless ( -f $nenscript ) { die "Can't find $nenscript!"; } &ParseCmdLine(@ARGV); # DBG print "filetype is $filetype\n"; if ($filetype eq "ASCII") { ero;wrap($line_length); elsif ($filetype eq &"code") { } ero;codeformat; elsif ($filetype eq "ps") { &createarray; else { } print "Sorry..no known &file type.\n"; exit } 0; } # Wyślij tablcę do smbprint open(PRINTER, "|$print_prog") || die "Can't open $print_prog: $!\n"; foreach $line (@newlines) { print PRINTER $line; } # Wyślij dodatkowy znak LF jeśli plik ma niekompletną ostatnią linię. print PRINTER "\n"; close(PRINTER); print "Completed\n"; exit 0; # --------------------------------------------------- # # Wszystko poniżej jest procedurą # # --------------------------------------------------- # sub ParseCmdLine { Interpretuje wiersz poleceń, szukając jakiego typu jest # plik # Gets $arg and $file to be the arguments (if they exists) and the # filename if ($#_ < 0) { ero;usage; } # DBG foreach $element (@_) { print "*$element* \n"; # } $arg = shift(@_); if ($arg =~ /\-./) { cmd = $arg; DBG print "\$cmd found.\n"; $file = shift(@_); else { file = $arg; } # Definiowanie typu pliku dopóki ($cmd) { Nie mamy argumentów if ($file =~ /\.ps$/) { filetype = "ps"; elsif ($file =~ $/\.java$|\.c$|\.h$|\.pl$|\.sh$|\.csh$|\.m4$|\.inc$|\.html$|\.htm$/) ${ filetype = "code"; else { filetype = "ASCII"; } # Przerób $file odpowiednio do jego typu i zwróć $filetype } else { Mamy typ pliku w $arg if ($cmd =~ /^-p$/) { filetype = "ps"; elsif ($cmd =~ $/^-c$/) { filetype } = "code"; elsif ($cmd =~ $/^-a$/) { } filetype = "ASCII" } } } sub usage { print " Stosowanie: print [-a|c|p] <plik> -a drukuje <plik> jako ASCII c drukuje <plik> sformatowany jako źródło -code p drukuje <plik> jako PostScript Jeśli nie ma żadnej opcji, print próbuje odgadnąć typ pliku i odpowiednio go wydrukować.\n "; exit(0); } sub wrap { Stwórz tablicę linii w pliku, gdzie każda linia jest krótsza od # podanej ilości znaków i jest podzielona tylko w miejscach spacji # Pobierz ilość znaków jaka może być w linii. limit = $pop(@_); # DBG print "Entering subroutine wrap\n"; print "The line length #limit is $limit\n"; # Wczytaj plik, sformatuj i umieść w tablicy. open(FILE, "<$file") || die "Can't open $file: $!\n"; while(<FILE>) { $line = $_; # DBG print "The line is:\n$line\n"; # Podziel linię jeśli jest dłuższa niż podana ilość znaków. while ( length($line) > $limit ) { # DBG print "Wrapping..."; # Pobierz pierwsze $limit+1 znaków. part = $substr($line,0,$limit +1); # DBG print "The partial line is:\n$part\n"; # Sprawdź czy ostatni znak jest spacją. $last_char = substr($part,-1, 1); if ( " " eq $last_char ) { Jeśli tak, wydrukuj resztę. # DBG print "The last character was a space\n"; substr($line,0,$limit + 1) = ""; substr($part,-1,1) = ""; push(@newlines,"$part\n"); } else { Jeśli nie, znajdź ostatnią spację w # pod-linii i drukuj do niej # DBG print "The last character was not a #space\n"; # Usuń znaki dalsze niż $limit substr($part,-1,1) = ""; Odwróć linię # aby ułatwić odnajdywanie ostatniej spacji $revpart = reverse($part); $index = index($revpart," "); if ( $index > 0 ) { substr($line,0,$limit-$index) = ""; push(@newlines,substr($part,0,$limit-$index) . "\n"); else { Nie było spacji w linii } więc # wydrukuj do $limit. substr($line,0,$limit) = ""; push(@newlines,substr($part,0,$limit) . "\n"); } } } push(@newlines,$line); } close(FILE); } sub codeformat { Wywołaj procedurę wrap i przefiltruj przez nenscript &wrap($line_length); # Przepuść wynik przez nenscript, aby utworzyć plik PostScript, # który pasuje do jakiegoś przyzwoitego formatu źródeł do drukowania # (ułożenie, czcionki Courier, ilość linii). Najpierw wydrukuj to do # pliku tymczasowego. $tmpfile = "/tmp/nenscript$$"; open(FILE, "|$nenscript -2G -i$file -N -p$tmpfile -r") || die "Can't open nenscript: $!\n"; foreach $line (@newlines) { print FILE $line; } close(FILE); # Wczytaj plik tymczasowy spowrotem do tablicy, tak aby mógł być # wysłany do skryptu print Samby. @newlines = (""); open(FILE, "<$tmpfile") || die "Can't open $file: $!\n"; while(<FILE>) { push(@newlines,$_); } close(FILE); system("rm $tmpfile"); } sub createarray { Stwórz tablicę dla PostScript-u open(FILE, "<$file") || # die "Can't open $file: $!\n"; while(<FILE>) { push(@newlines,$_); } close(FILE); } ______________________________________________________________________ 99.. PPrraawwaa aauuttoorrsskkiiee ii ZZaakkoońńcczzeenniiee.. 99..11.. PPrraawwaa aauuttoorrsskkiiee.. Dokument ten jest chroniony prawami autorskimi Davida Wooda 1996. Może on być reprodukowany w każdej formie i dystrybuowany bez ograniczeń tak długo jak nie zmieni się jego zawartość i zawarte jest w nim to stwierdzenie. 99..22.. PPooddzziięękkoowwaanniiaa.. Jeśli tylko przyślesz mi jakieś sugestie, umieszczę cię tutaj w następnej wersji. 99..33.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl ����������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Shadow-Password-HOWTO.pl.txt�������������������������������������������0100664�0001750�0001750�00000227533�06717116340�021510� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Przesłanianie haseł (Shadow Password) Autor: Michael H. Jackson, mhjack@tscnet.com v1.3, 3 Kwietnia 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.02, 26 Lipca 1997 Dokument ten opisuje jak zdobyć, zainstalować i skonfigurować pakiet _S_h_a_d_o_w _P_a_s_s_w_o_r_d dla Linux-a. Omówione zostało tutaj także zdobywanie i (ponowna) instalacja oprogramowania oraz demonów sieciowych, które potrzebują dostępu do haseł użytkownika. Oprogramowanie to nie jest właściwą częścią pakietu _S_h_a_d_o_w _S_u_i_t_e, ale będą one musiały zostać przekompilowane, aby móc korzystać z haseł. Jest tutaj także zawarty przykład dla programistów, jak dodawać obsługę przesłanianych haseł w swoich programach. Pod koniec dokumentu zawarte zostały odpowiedzi na często zadawane pytania. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał można znaleźć pod adresem ftp.icm.edu.pl w kata­ logu /pub/Linux/sunsite/docs/HOWTO. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie. 1.1. Zmiany w stosunku do poprzedniej wersji. 1.2. Nowe wersje tego dokumentu. 1.3. Komentarze. 2. Po co przesłaniać plik passwd ? 2.1. Czemu możesz nie chcieć przesłaniać swojego pliku z hasłami ? 2.2. Format pliku /etc/passwd. 2.3. Format pliku przesłaniającego. 2.4. Przegląd funkcji crypt(3). 3. Zdobywanie pakietu Shadow Suite. 3.1. Historia pakietu Shadow Suite dla Linux-a. 3.2. Gdzie znaleźć pakiet Shadow Suite. 3.3. Co jest zawarte w pakiecie Shadow Suite. 4. Kompilacja programów. 4.1. Rozpakowywanie archiwów. 4.2. Konfiguracja w pliku config.h 4.3. Kopie zapasowe twoich oryginalnych programów. 4.4. Polecenie make 5. Instalacja 5.1. Zaopatrz się w dyskietkę startową w razie gdybyś coś popsuł. 5.2. Usuwanie zduplikowanych stron podręcznika systemowego. 5.3. Polecenie make install 5.4. Polecenie pwconv 5.5. Zmiany nazw plików npasswd i nshadow 6. Inne programy, które może musisz uaktualnić albo "załatać". 6.1. Program adduser z dystrybucji Slackware. 6.2. Serwer wu_ftpd. 6.3. Standardowy ftpd. 6.4. pop3d (Post Office Protocol 3) 6.5. xlock 6.6. xdm 6.7. sudo 6.8. imapd (E-Mail 6.9. pppd (Serwer Protokołu Point-to-Point) 7. Wprowadzanie pakietu Shadow Suite do użycia. 7.1. Dodawanie, Modyfikacja i usuwanie użytkowników. 7.1.1. useradd. 7.1.2. usermod. 7.1.3. userdel. 7.2. Polecenie passwd i "termin ważności" hasła. 7.3. Plik login.defs 7.4. Hasła dla grup. 7.5. Programy do sprawdzania poprawności. 7.5.1. pwck 7.5.2. grpck 7.6. Hasła przez telefon. (Dial-up) 8. Obsługa przesłanianych haseł w programach w C. 8.1. Pliki nagłówkowe. 8.2. Biblioteka libshadow.a 8.3. Struktura Shadow. 8.4. Funkcje pakietu Shadow Suite. 8.5. Przykład. 9. Często zadawane pytania. 10. Prawa autorskie podziękowania i różne. 10.1. Prawa autorskie 10.2. Podziękowania i różne. 10.3. Od tłumacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Jest to dokument z serii HOWTO (czyli Jak To Zrobić). Opisuje on jak i dlaczego instalować obsługę "shadow password" na swoim Linux-ie. Zawarte jest także kilka przykładów na używanie pewnych właściwości pakietu _S_h_a_d_o_w _S_u_i_t_e. Podczas instalacji pakietu oraz używania jego narzędzi musisz być zalogowany jako _"_r_o_o_t_". Podczas instalacji będziesz dokonywał pewnych zmian do oprogramowania systemowego i zalecane jest, abyś zrobił kopię tego oprogramowania. Zalecam też, abyś przeczytał i zrozumiał wszystkie instrukcje zawarte tutaj zanim zaczniesz. 11..11.. ZZmmiiaannyy ww ssttoossuunnkkuu ddoo ppoopprrzzeeddnniieejj wweerrssjjii.. Dodane sekcje: Dodałem sekcję na temat dlaczego mógłbyś niechcieć instalować pakietu Shadow Suite. Dodałem sekcję jak uaktualnić xdm-a. Dodałem sekcję jak zmusić do działania specjalne właściwości pakietu Shadow Suite. Dodałem sekcję zawierającą często zadawane pytania. Poprawki/Uaktualnienia: Poprawiłem odwołania html do sunsite-a. Poprawiłem sekcję na temat wu-ftpd, aby odzwierciedlała dodawanie -lshadow do pliku Makefile. Poprawiłem kilka literówek. Zmieniłem sekcję na temat wu-ftpd, aby obsługiwał ELF. Uaktualniłem cały dokument, aby odzwierciedlał problemy bezpieczeństwa w różnych programach. Dodałem rekomendację pakietu Linux Shadow Suite napisanego przez Marka Michałkiewicza 11..22.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu.. Najnowszą wersję oryginału tego dokumentu można ściągnąć z ftp.icm.edu.pl z katalogu /pub/Linux/sunsite/docs/HOWTO. Inne formaty znajdują się w katalogu other-formats. Albo poprzez sieć WWW z sunsite.icm.edu.pl <http://sunsite.icm.edu.pl:/pub/Linux/Documentation>. Można też bezpośrednio od autora <mailto:mhjack@tscnet.com>. Autor będzie też wysyłał nowe wersje na grupę dyskusyjną comp.os.linux.answers Dokument ten jest także rozprowadzany wraz z dystrybucją pakietu Shadow-YYDDMM. Na temat nowych wersji tłumaczenia zobacz sekcję ``Od tłumacza''. 11..33.. KKoommeennttaarrzzee.. Proszę wszelkie komentarze, uaktualnienia czy sugestie wysyłać do mnie <mailto:mhjack@tscnet.com>. Im szybciej otrzymam pocztę tym szybciej mogę poprawić ten dokument. Jeśli masz jakieś uwagi na jego temat, to wyślij je bezpośrednio do mnie, ponieważ bardzo rzadko odwiedzam grupy dyskusyjne. 22.. PPoo ccoo pprrzzeessłłaanniiaaćć pplliikk ppaasssswwdd ?? W chwili obecnej większość dystrybucji Linux-a nie instaluje domyślnie pakietu Shadow Suite. Dotyczy to Slackware 2.3, Slackware 3.0 i innych popularnych dystrybucji. Jednym z powodów tego jest to, że jeśli zapłacono jakąś kwotę za Shadow Suite to prawa co do redystrybucji nie były do końca jasne. Linux używa licencji GNU, która pozwala na umieszczanie go w dowolnych pakietach (jak np. dystrybucje CD-ROM) i pobieranie za nie opłaty. Obecny opiekun pakietu Shadow Suite, Marek Michałkiewicz <mailto:marekm@ists.pwr.wroc.pl> otrzymał źródła oryginału na licencji w stylu BSD, która pozwala na dystrybucję. Teraz, kiedy już sprawy praw kopiowania są rozwiązane, spodziewane jest, że przyszłe dystrybucje będą zawierać domyślnie przesłanianie haseł. Jednak do tego czasu, będziesz musiał je samemu instalować. Jeśli instalowałeś swoją dystrybucję z CD-ROM-u, to pomimo, że dystrybucja nie zainstalowała Shadow Suite niektóre pliki, których potrzebujesz mogą się znajdować na CD-ROM-ie. _W_e_r_s_j_e _p_a_k_i_e_t_u _3_._3_._1_, _3_._3_._1_-_2 _i _s_h_a_d_o_w_-_m_k _m_a_j_ą _p_r_o_b_l_e_m_y _d_o_t_y_c_z_ą_c_e _b_e_z_p_i_e_c_z_e_ń_s_t_w_a _z_e _s_w_o_i_m _p_r_o_g_r_a_m_e_m _l_o_g_i_n _i _k_i_l_k_o_m_a _i_n_n_y_m_i _p_r_o_g_r_a_m_a_m_i _t_y_p_u _s_u_i_d _r_o_o_t _i _n_i_e _p_o_w_i_n_n_y _b_y_ć _j_u_ż _u_ż_y_w_a_n_e_. Wszystkie potrzebne pliki są dostępne poprzez anonimowane ftp oraz WWW. W Linux-ie bez zainstalowanego pakietu Shadow Suite informacje o użytkowniku wraz z hasłem trzymane są w pliku /etc/passwd. Hasło znajduje się tam w formie zakodowanej (encrypted). Jednak jeśli spytasz jakiegoś eksperta od kryptografii, to powie ci on/ona, że hasło jest w postaci "encoded", a nie "encrypted" ponieważ używając funkcji crypt(3), tekstowi jest przypisywany łańcuch pusty a hasło jest kluczem. Dlatego, od tego momentu będę używał określenia "encoded". Algorytm używany do kodowania hasła jest technicznie określany jako algorytm działający w jedną stronę. Jest to algorytm, który jest łatwy do zastosowania w jedną stronę, ale bardzo trudny do złamania. Więcej na ten temat znajdziesz w sekcji ``2.4'' albo na stronie podręcznika systemowego dotyczącej funkcji crypt(3). Kiedy użytkownik wybiera hasło, albo jest mu ono przydzielone, jest ono kodowane losowo generowaną wartością zwaną salt (sól). Oznacza to, że każde hasło może zostać zakodowane na 4096 sposobów. Wartość salt jest potem zapisywana razem z zakodowanym hasłem. Kiedy użytkownik się wlogowuje i podaje hasło, najpierw pobierana jest wartość salt z zakodowanego hasła. Następnie pobrane hasło zostaje zakodowane pobraną wartością, i porównane z zapisanym zakodowanym hasłem. Jeśli łańcuchy te są identyczne, to użytkownik zostaje "wpuszczony" do systemu. Jest bardzo trudno (ale nie jest to niemożliwe) wziąć losowo zakodowane hasło i otrzymać hasło rozkodowane. Chociaż, w każdym systemie z większą liczbą użytkowników, przynajmniej kilka haseł będzie zwykłymi słowami albo jakąś wariacją zwykłych słów. Włamywacze więdzą o tym wszystkim i po prostu kodują słownik ze słowami i popularnymi hasłami wszytkimi możliwymi wartościami salt. Potem porównają wyniki z zawartością twojego pliku /etc/passwd. Jak znajdą jakiś identyczny łańcuch, to mają hasło na następne konto. Nazywane jest to atakiem słownikowym i jest to jeden z najpopularniejszych sposobów na pozyskiwanie dostępu do systemu przez osoby nieuprawnione. Jeśli się nad tym zastanowisz, to zobaczysz, że 8-znakowe hasło może zostać zakodowane na 4096 * 13 sposobów. Tak więc słownik składający się powiedzmy z 400.000 popularnych słów, nazw, imion, haseł i ich prostych wariacji zmieściłby się z łatwością na dysku o pojemności 4GB. Włamywacz musi go tylko posortować i sprawdzić czy któryś z łańcuchów nie jest hasłem. Dysk o pojemności 4GB można kupić za ok. 1000 dolarów, tak więc mieści się to w możliwościach większości włamywaczy systemowych. Jeśli włamywacz zdobędzie twój plik /etc/passwd, to musi on zakodować swój słownik kluczem, który znajduje się w tym pliku. Metoda ta może być wykorzystana przez przeciętnego nastolatka z kilkoma megabajtami na dysku i komputerem klasy 486. Nawet bez dużej ilości wolnego miejsca na dysku, narzędzia takie jak crack(1) mogą zwykle złamać przynajmniej kilka haseł z systemu z dostatecznie dużą ilością użytkowników (zakładając, że użytkownicy mają możliwość samemu wybierać sobie hasła). Plik /etc/passwd zawiera także takie informacje jak ID użytkownika i ID grupy, które są używane przez większość programów. Dlatego plik /etc/passwd mmuussii pozostać odczytywalny dla każdego. Jeśli chciałeś właśnie zmienić prawa dostępu do pliku /etc/passwd tak, żeby nikt nie mógł go czytać (oprócz "root-a"), to pierwszym symptomem jaki byś zauważył, to to, że przy wydaniu polecenia ls -l pojawiłyby się numery zamiast nazw użytkowników. Pakiet Shadow Suite rozwiązuje ten problem poprzez umieszczenie haseł w innym pliku (z reguły jest to /etc/shadow). Plik /etc/shadow ma tak ustawione prawa dostępu, że nie może go czytać nikt, oprócz "root-a". Niektóre programy jak np. xlock, nie muszą mieć możliwości zmiany haseł, ale tylko ich odczytu. Programy te mogą albo być uruchamiane z prawem "suid root", albo możesz dodać grupę shadow, która miałaby tylko prawo odczytu pliku /etc/shadow. Program ten może wtedy należeć do grupy "shadow" i być uruchamiany z prawem "sgid". Przenosząc zakodowane hasła do innego pliku, efektywnie zabraniamy włamywaczom dostępu do nich, co uniemożliwia ataki słownikowe. Dodatkowo pakiet Shadow Suite posiada wiele innych zalet: ˇ Plik konfiguracyjny, w którym można ustawic wartości domyślne podczas logowania (/etc/login.defs) ˇ Narzędzia do dodawania, modyfikacji i usuwania kont i grup. ˇ Ustalanie "daty ważności" konta i jego wygasanie (expiration). ˇ Przesłanianie haseł dla grup. (opcjonalnie) ˇ Hasła o podwójnej długości (16 znaków) [NIE ZALECANE] ˇ Lepsza kontrola nad wybieraniem haseł przez użytkowników. ˇ Hasła przez telefon. ˇ Programy do dodatkowej autentykacji [NIE ZALECANE] Instalacja pakietu Shadow Suite przyczynia się do zwiększenia bezpieczeństwa sieci opartej na Linux-ie, ale pozostaje jeszcze wiele innych rzeczy do zrobienia, aby zwiększyć bezpieczeństwo takiej sieci. Z czasem pojawi się seria HOWTO poświęcona bezpieczeństwu. Na stronie poświęconej bezpieczeństwu w Linux-ie <http://bach.cis.temple.edu/linux/linux-security/> zawarte są różne informacje na ten temat jak również ostrzeżenia o znanych dziurach w systemie. 22..11.. CCzzeemmuu mmoożżeesszz nniiee cchhcciieećć pprrzzeessłłaanniiaaćć sswwoojjeeggoo pplliikkuu zz hhaassłłaammii ?? Jest kilka okoliczności i konfiguracji, w których instalacja pakietu Shadow Suite nniiee bbyyłłaabbyy dobrym pomysłem: ˇ Maszyna nie zawiera kont użytkowników. ˇ Twoja maszyna jest w sieci LAN i używa NIS (Network Information Services), aby obsługiwać nazwy użytkowników i hasła na innych maszynach w tej samej sieci. (Właściwie mogłoby to być zrobione, ale wykracza poza ramy tego dokumentu i nie zwiększyłoby bezpieczeństwa w znacznym stopniu.) ˇ Twoja maszyna jest używana przez serwery terminali, aby weryfikować użytkowników poprzez NFS (Network File System), NIS albo jakąś inną metodę. ˇ Na twojej maszynie znajduje się inne oprogramowanie, które autentykuje użytkowników, a nie ma wersji tego oprogramowania dla shadow i nie masz źródeł. 22..22.. FFoorrmmaatt pplliikkuu //eettcc//ppaasssswwdd.. Nieprzesłonięty plik /etc/passwd ma następujący format: identyfikator:hasło:UID:GID:imie_nazw:katalog:powłoka Gdzie: iiddeennttyyffiikkaattoorr Nazwa (login) użytkownika hhaassłłoo Zakodowane hasło UUIIDD Numer użytkownika GGIIDD Numer domyślnej grupy dla użytkownika iimmiiee__nnaazzww Imię i nazwisko użytkownika - Właściwie pole to nazywa się GECOS (General Electric Comprehensive Operating System) i mogą tam być zapisane inne dane niż tylko imię i nazwisko Polecenia Shadow i strony podręcznika systemowego nazywają to pole polem komentarza. kkaattaalloogg Katalog domowy użytkownika (pełna ścieżka) ppoowwłłookkaa Powłoka dla danego użytkownika (pełna ścieżka) Na przykład: login:Nkjg97jh7yff8:503:100:Imię Nazwisko:/home/login:/bin/bash Gdzie Nk jest wartocią salt a jg97jh7yff8 jest zakodowanym hasłem. Zakodowane hasło z kluczem mogłoby równie dobrze wyglądać tak: ghHFgj75fR8iP a te dwa łańcuchy to dokłanie te same hasła. Jest 4096 możliwości zakodowania pojedynczego hasła. {Przykładowym hasłem jest tutaj Jak już pakiet Shadow Suite jest zainstalowany, to plik /etc/passwd zawiera: login:x:503:100:Imię Nazwisko:/home/login:/bin/bash Znaczek "x" w tym przypadku jest po prostu czymś co wypełnia miejsce hasła. Format pliku /etc/passwd się nie zmienił, zmieniło się tylko miejsce przechowywania zakodowanego hasła. Oznacza to, że każdy program, który tylko czyta plik /etc/passwd,a nie zapisuje w nim hasła, będzie nadal działał poprawnie. Hasła znajdują się obecnie w pliku /etc/shadow. (jest to domyślna nazwa) 22..33.. FFoorrmmaatt pplliikkuu pprrzzeessłłaanniiaajjąącceeggoo.. Plik /etc/shadow zawiera następujące informacje: login:hasło:ostatnio_1970:może:musi:ostrz:dni:dni_1970:zarez Gdzie: llooggiinn patrz /etc/passwd hhaassłłoo Zakodowane hasło oossttaattnniioo__11997700 Ilość dni od 1 Stycznia 1970, kiedy hasło było ostatnio modyfikowane mmoożżee Ilość dni w przeciągu, których hasło może być zmienione mmuussii Ilość dni, po której hasło musi zostać zmienione oossttrrzz Ilość dni przed wygaśnięciem hasła od jakiej należy zacząć informować użytkownika o wygaśnięciu hasła. ddnnii Ilość dni, po której hasło wygasa i konto jest blokowane ddnnii__11997700 Ilość dni od 1 Stycznia 1970, po której konto jest blokowane zzaarreezz Pole zarezerwowane Poprzedni przykład mógł więc wyglądać tak: login:Nkjg97jh7yff8:9479:0:10000:::: 22..44.. PPrrzzeegglląądd ffuunnkkccjjii ccrryypptt((33)).. Ze strony podręcznika systemowego "man": "crypt jest funkcją kodującą hasło. Oparta jest na algorytmie DES (Data Encryption Standard) z dozwolonymi wariacjami (między innymi), aby zniechęcić do sprzętowych rozwiązań poszukiwania klucza. Kluczem jest podane przez użytkownika hasło. [Zakodowany łańcuch jest wartościami NULL] Salt jest łańcuchem 2-znakowym wybranym ze zbioru [a-zA-Z0-9]. Łańuch ten jest użyty po to, aby zaburzyć algorytm w jeden z 4096 sposobów. Biorąc 7 najmniej znaczących bitów każdego znaku z klucza otrzymujemy 56-bitowy klucz. Ten 56-bitowy klucz jest używany, do powtórnego kodowania stałego łańcucha (zwykle są to znaki NULL). Zwrócona wartość wskazuje na zakodowane hasło - serię 13 drukowalnych znaków ASCII (dwa pierwsze znaki reprezentują wartość salt). Wartość zwracana wskazuje na stałe dane, których zawartość jest zmieniana przy każdym wywołaniu. UUwwaaggaa:: Liczba możliwych wartości klucza to 2^56 = 7,2E16 (około 72 biliardów). Wyczerpujące poszukiwania tego klucza ssąą mmoożżlliiwwee przy wykorzystaniu wielu równolegle współpracujących komputerów. Oprogramowanie, takie jak crack(1), jest dostępne i szuka ono takich kluczy, które z reguły używane są przez ludzi. Dlatego właśnie przy wybieraniu hasła powinno się unikać przynajmniej zwykłych słów. Zaleca się, używanie programu passwd(1), które podczas zmiany hasła sprawdza czy nowe hasło nie jest przesadnie proste. Algorytm DES ma w sobie pewne kruczki, które czynią użycie interfejsu crypt(3) bezużytecznym w przypadku innym niż autentykacja haseł. Jeśli masz zamiar używać interfejsu crypt(3) do kryptografii nie rób tego: zdobądź dobrą książkę na temat kodowania (encryption) i jedną z szeroko dostępnych bibliotek DES." Większość pakietów Shadow Suite zawiera kod zwiększający ilość znaków w haśle do 16. Eksperci od DES-a są temu przeciwni, ponieważ w takim przypadku kodowanie najpierw odbywa się dla lewej strony dłuższego hasła, a potem dla prawej strony. Z powodu tego jak działa crypt, może to stworzyć mniej bezpiecznie zakodowane hasło niż wtedy, gdy użyte zostałoby hasło krótsze. Dodatkowo, jest mało prawdopodobne, żeby użytkownik był w stanie zapamiętać hasło 16-znakowe. Trwają w tej chwili prace, które mają na celu zastąpienie dotychczasowego algorytmu autentykacji czymś bardziej bezpiecznym oraz z obsługą dłuższych haseł (szczególnie algorytmem MD5) oraz pozostawienie kompatybilności z metodą wykorzystującą crypt. Jeśli szukasz dobrej książki na temat kodowania polecam: "Applied Cryptography: Protocols, Algorithms, and Source Code in C" by Bruce Schneier <schneier@chinet.com> ISBN: 0-471-59756-2 33.. ZZddoobbyywwaanniiee ppaakkiieettuu SShhaaddooww SSuuiittee.. 33..11.. HHiissttoorriiaa ppaakkiieettuu SShhaaddooww SSuuiittee ddllaa LLiinnuuxx--aa.. NNIIEE UUŻŻYYWWAAJJ PPAAKKIIEETTÓÓWW WWYYMMIIEENNIIOONNYYCCHH WW TTEEJJ SSEEKKCCJJII,, SSĄĄ WW NNIICCHH PPRROOBBLLEEMMYY ZZ BBEEZZPPIIEECCZZEEŃŃSSTTWWEEMM.. Oryginał pakietu Shadow Suite został napisany przez John F. Haugh II. Jest kilka wersji, które były używane na Linux-ie: ˇ Oryginał to shadow-3.3.1 ˇ shadow-3.3.1-2 to łata przeznaczona specjalnie na Linux-a zrobiona przez Florian La Roche <flla@stud.uni-sb.de>. Zawiera ona także dalsze ulepszenia. ˇ Pakiet shadow-mk został skomponowany specjalnie dla Linux-a. Pakiet shadow-mk zawiera pakiet shadow-3.3.1 dystrybuowany przez John F. Haugh II wraz z łatą shadow-3.3.1-2 patch, kilka poprawek zrobionych przez Mohan Kokal <magnus@texas.net>, które uczyniły instalację o wiele łatwiejszą, łatę zrobioną przez Joseph R.M. Zbiciak, która eliminuje dziury w programie /bin/login związane z opcjami -f, -h oraz kilka innych łat. Pakiet shadow-mk był pakietem ppoopprrzzeeddnniioo rekomendowanym, ale powinien zostać zamieniony z powodu pprroobblleemmóóww z bezpieczeństwem związanych z programem login. W pakietach 3.3.1, 3.3.1-2 oraz shadow-mk są problemy związane z programem login. Błąd ten to niesprawdzanie długości podawanego identyfikatora. Powoduje to przepełnienie bufora, co z kolei powoduje załamania (crashes) programu albo gorzej. Podobno to przepełnienie bufora może być wykorzystane przez kogoś, kto posiada konto w systemie w połączeniu z bibliotekami dzielonymi, aby uzyskać przywileje rroooott--aa. Nie będę opisywał jak dokładnie działa ten błąd ponieważ jest dużo systemów Linux-owych, które są zarażone, ale systemy z zainstalowanymi tymi pakietami Shadow Suite oraz większość systemów w wersji przed-ELF bbeezz pakietu Shadow Suite są podatne na atak! Więcej informacji na ten temat znajdziesz na stronie poświęconej bezpieczeństwu w Linux-ie <http://bach.cis.temple.edu/linux/linux- security/>. (Shared Libraries and login Program Vulnerability) 33..22.. GGddzziiee zznnaalleeźźćć ppaakkiieett SShhaaddooww SSuuiittee.. Jedyny polecany pakiet Shadow Suite jest wciąż w wersji BETA, chociaż najnowsze wersje są bezpieczne w środowisku produkcji i nie zawierają podatnego na ataki programu login. W pakiecie używane jest następujące nazewnictwo: shadow-RRMMDD.tar.gz gdzie RRMMDD oznacza datę wprowadzenia pakietu w obieg. Wersja ta ostatecznie będzie wersją 3.3.3, kiedy zakończone zostaną testy w wersji BETA, a obsługiwana jest przez Marka Michałkiewicza <marekm@i17linuxb.ists.pwr.wroc.pl>. Dostępna jest jako shadow-current.tar.gz <ftp://i17linuxb.ists.pwr.wroc.pl/pub/linux/shadow/>. Dostępna jest także pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/Linux/shadow/>. Powinieneś użyć najnowszej dostępnej wersji. NNIIEE powinieneś używać wersji ssttaarrsszzeejj niż shadow-960129 ponieważ występuje tam opisany powyżej problem z programem login. Jeśli piszę o pakiecie Shadow Suite, to mam na myśli ten właśnie plik. Zakłada się też, że tej właśnie wersji używasz. Aby napisać ten dokument użyłem tej właśnie wersji pakietu. Jeśli wcześniej używałeś pakietu shadow-mk, powinieneś zaktualizować go do tej wersji i ponownie skompilować wszystko to, co pierwotnie przekompilowałeś, 33..33.. CCoo jjeesstt zzaawwaarrttee ww ppaakkiieecciiee SShhaaddooww SSuuiittee.. Pakiet ten zawiera zastępcze wersje dla programów: su, login, passwd, newgrp, chfn, chsh, id Pakiet ten zawiera także nowe programy: chage, newusers, dpasswd, gpasswd, useradd, userdel, usermod, groupadd, groupdel, groupmod, groups, pwck, grpck, lastlog, pwconv, pwunconv. Dodatkowo znajduje się tam także biblioteka libshadow.a przeznaczona do pisania i kompilowania programów, które potrzebują dostępu do haseł użytkowników. Zawarte są także strony podręcznika systemowego do wszystkich programów. Znajduje się tam także plik konfiguracyjny dla programu login, który zostanie zainstalowany jako /etc/login.defs. 44.. KKoommppiillaaccjjaa pprrooggrraammóóww.. 44..11.. RRoozzppaakkoowwyywwaanniiee aarrcchhiiwwóóww.. Pierwszym krokiem po ściągnięciu programu jest rozpakowanie go. Pakiet jest w formie starowanej i skompresowany programem gzip, tak więc najpierw przenieś go do /usr/src, a potem napisz: tar -xzvf shadow-current.tar.gz Powstanie katalog /usr/src/shadow-RRMMDD, w którym znajdą się źródła pakietu. 44..22.. KKoonnffiigguurraaccjjaa ww pplliikkuu ccoonnffiigg..hh Pierwszą rzeczą jaką musisz zrobić, to skopiować odpowiednie pliki Makefile i config.h: cd /usr/src/shadow-RRMMDD cp Makefile.linux Makefile cp config.h.linux config.h Potem powinieneś przejrzeć plik config.h. Zawiera on definicje dla niektórych opcji konfiguracyjnych. Jeśli używasz _z_a_l_e_c_a_n_e_g_o pakietu, to polecam wyłączenie na początek przesłanianie haseł grup. Domyślnie opcja ta jest włączona. Aby to wyłączyć, wyedytuj plik config.h i zmień #define SHADOWGRP na #undef SHADOWGRP. Na początek proponuje to wyłaczyć, a później jak będziesz chciał haseł dla grup i administratorów grup, to możesz przekompilować pakiet. Jeśli zostawisz tę opcję włączoną mmuussiisszz stworzyć plik /etc/gshadow. Włączanie opcji pozwalającej na dłuższe hasła nniiee jest zalecane - patrz wyżej. Opcja AUTOSHADOW została zaprojektowana, aby umożliwić działanie programom, które ignorują przesłanianie haseł. Teoretycznie brzmi to dobrze, ale niestety nie działa poprawnie. Jeśli właczysz tę opcję i program zostanie uruchomiony z przywilejami "root-a", może on wywołać funkcję getpwnam() jako "root", a później zapisać zmienioną pozycję spowrotem do pliku /etc/passwd (ii hhaassłłoo nniiee jjeesstt jjuużż pprrzzeessłłoonniięęttee). Do takich programów zaliczają się chfn i chsh. (Nie możesz obejść tego przez zamianę rzeczywistego uid z efektywnym uid przed wywołaniem funkcji getpwnam() ponieważ root także może używać chfn i chsh.) To samo ostrzeżenie jest słuszne jeśli kompilujesz bibliotekę libc, która posiada opcję SHADOW_COMPAT, która robi to samo. NNiiee ppoowwiinnnnaa ona być używana! Jeśli zakodowane hasła zaczną się pojawiać spowrotem w pliku /etc/passwd, to to właśnie jest przyczyną. Jeśli używasz wcześniejszej wersji biblioteki niż 4.6.27, będziesz musiał zrobić trochę więcej zmian w pliku config.h i Makefile. W pliku config.h zmień: #define HAVE_BASENAME na: #undef HAVE_BASENAME A następnie w pliku Makefile zmień: SOBJS = smain.o env.o entry.o susetup.o shell.o \ sub.o mail.o motd.o sulog.o age.o tz.o hushed.o SSRCS = smain.c env.c entry.c setup.c shell.c \ pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \ tz.c hushed.c na: SOBJS = smain.o env.o entry.o susetup.o shell.o \ sub.o mail.o motd.o sulog.o age.o tz.o hushed.o basename.o SSRCS = smain.c env.c entry.c setup.c shell.c \ pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \ tz.c hushed.c basename.c Zmiany te powodują zawarcie kodu z basename.c, który zawiera się w libc 4.6.27 i późniejszych. 44..33.. KKooppiiee zzaappaassoowwee ttwwooiicchh oorryyggiinnaallnnyycchh pprrooggrraammóóww.. Dobrym pomysłem będzie zrobienie kopii zapasowych programów, które zostaną zamienione przez Shadow Suite. W dystrybucji Slackware 3.0 są to: ˇ /bin/su ˇ /bin/login ˇ /usr/bin/passwd ˇ /usr/bin/newgrp ˇ /usr/bin/chfn ˇ /usr/bin/chsh ˇ /usr/bin/id Pakiet w wersji BETA ma możliwość wykonania tego poprzez program make, ale jest to w komentarzu w pliku Makefile, ponieważ różne dystrybucje umieszczają te programy w różnych miejscach. Można to zrobić pisząc: make save, ale najpierw trzeba skasować znaki # z pliku Makefile od linii: save: Powinieneś także zrobić kopię zapasową pliku /etc/passwd, ale bądź ostrożny, żebyś nie zmazał programu passwd w katalogu /etc. 44..44.. PPoolleecceenniiee mmaakkee _A_b_y _z_a_i_n_s_t_a_l_o_w_a_ć _p_a_k_i_e_t _m_u_s_i_s_z _b_y_ć _z_a_l_o_g_o_w_a_n_y _j_a_k_o _"_r_o_o_t_". Uruchom make, aby skompilować programy wykonywalne: make all Możesz zobaczyć ostrzeżenie: rcsid defined but not used. Wszystko jest w porządku, ponieważ autor używa wersji kontrolnej pakietu. 55.. IInnssttaallaaccjjaa 55..11.. ZZaaooppaattrrzz ssiięę ww ddyysskkiieettkkęę ssttaarrttoowwąą ww rraazziiee ggddyybbyyśś ccoośś ppooppssuułł.. Jeśli coś poważnie pójdzie nie tak, byłoby dobrze, gdybyś miał dyskietkę startową. Jeśli masz dyskietki boot/root z czasów instalacji, to w porządku, w innym przypadku przeczytaj Bootdisk-HOWTO <http://ftp.icm.edu.pl/pub/Linux/Documentation/HOWTO/Bootdisk- HOWTO.html>, które opisuje jak zrobić dyskietkę startową. 55..22.. UUssuuwwaanniiee zzdduupplliikkoowwaannyycchh ssttrroonn ppooddrręęcczznniikkaa ssyysstteemmoowweeggoo.. Powinieneś także przenieść strony podręcznika systemowego, które zostaną zastąpione. Nawet jeśli jesteś na tyle odważny, że instalujesz Shadow Suite bez kopii zapasowej, to i tak będziesz chciał przenieść stare strony podręcznika systemowego. Nowe strony normalnie nie usunęłyby starych, ponieważ te drugie są przypuszczalnie skompresowane. Możesz użyć takiej kombinacji poleceń: man -aW polecenie i locate polecenie, aby zlokalizować strony, które mają być usunięte czy przeniesione. Raczej łatwiej zrobić to przed poleceniem make install. Jeśli używasz dystrybucji Slackware 3.0, to oto strony, które powinieneś usunąć/przesunąć: ˇ /usr/man/man1/chfn.1.gz ˇ /usr/man/man1/chsh.1.gz ˇ /usr/man/man1/id.1.gz ˇ /usr/man/man1/login.1.gz ˇ /usr/man/man1/passwd.1.gz ˇ /usr/man/man1/su.1.gz ˇ /usr/man/man5/passwd.5.gz W katalogu /var/man/cat[1-9] mogą znajdować się strony o tych samych nazwach, które także powinny zostać usunięte/przeniesione. 55..33.. PPoolleecceenniiee mmaakkee iinnssttaallll Jesteś gotów, aby napisać (zrób to jako "root"): make install Zainstaluje to nowe programy i programy zastępcze oraz ustawi odpowiednie prawa dostępu do plików. Zostaną także zainstalowane strony podręcznika systemowego. Są tu także instalowane pliki nagłówkowe w odpowiednich miejscach w /usr/include/shadow. Jeśli używasz wersji BETA tego pakietu, to musisz ręcznie skopiować plik login.defs do katalogu /etc i upewnić się, że ttyyllkkoo ""rroooott"" może go modyfikować. cp login.defs /etc chmod 600 /etc/login.defs Plik ten jest plikiem konfiguracyjnym dla programu login. Powinieneś go przejrzeć i odpowiednio zmodyfikować jego zawartość zgodnie z twoimi wymaganiami. To tutaj decydujesz, z których terminalli (tty) może zalogować się "root" oraz ustawiasz inne opcje bezpieczeństwa (np. domyślne wygasanie haseł). 55..44.. PPoolleecceenniiee ppwwccoonnvv Następnym krokiem jest polecenie pwconv. Musi ono także być wykonane jako "root" i najlepiej w katalogu /etc: cd /etc /usr/sbin/pwconv Program pwconv tworzy z pliku /etc/passwd dwa pliki: /etc/npasswd i /etc/nshadow. Dostępny jest także program pwunconv jeśli musisz zrobić normalny plik /etc/passwd z plików /etc/passwd i /etc/shadow. 55..55.. ZZmmiiaannyy nnaazzww pplliikkóóww nnppaasssswwdd ii nnsshhaaddooww Teraz, kiedy już wykonałeś polecenie pwconv, stworzyłeś dwa pliki - /etc/npasswd i /etc/nshadow. Ich nazwy muszą zostać zmienione odpowiednio na /etc/passwd i /etc/shadow. Chcemy także zrobić kopię oryginalnego pliku /etc/passwd i upewnić się, że tylko "root" może go czytać. Kopię zapasową umieścimy w katalogu domowym "root-a": cd /etc cp passwd ~/passwd chmod 600 ~/passwd mv npasswd passwd mv nshadow shadow Powinieneś się także upewnić, czy właściciel plików i prawa dostępu są poprawne. Jeśli masz zamiar używać _X_W_i_n_d_o_w_s, to programy xlock i xdm muszą mieć możliwość odczytu pliku shadow, ale nie zapisu. Są dwa sposoby na zrobienie tego. Możesz ustawić bit "SUID" dla programu xlock (chmod u+s xlock); xdm ma z reguły ten bit ustawiony. Albo możesz przydzielić plik /etc/shadow do grupy shadow, ale zanim to zrobisz, sprawdź czy masz grupę shadow w pliku /etc/group. Właściwie żaden z użytkowników systemu nie powinien być w tej grupie. cd /etc chown root.root passwd chown root.shadow shadow chmod 0644 passwd chmod 0640 shadow Twój system ma teraz przesłonięte hasła. Powinieneś teraz przejść na inny wirtualny terminal i sprawdzić czy możesz się zalogować ZZrróóbb ttoo tteerraazz -- nnaapprraawwddęę !! Jeśli nie możesz, to coś jest nie tak ! Aby powrócić do stanu sprzed instalacji _S_h_a_d_o_w _S_u_i_t_e zrób to: cd /etc cp ~/passwd passwd chmod 644 passwd Przywracasz w ten sposób stare pliki, które wcześniej zachowałeś, na ich właściwe miejsce. 66.. IInnnnee pprrooggrraammyy,, kkttóórree mmoożżee mmuussiisszz uuaakkttuuaallnniićć aallbboo ""zzaałłaattaaćć"".. Pomimo, iż pakiet _S_h_a_d_o_w _S_u_i_t_e posiada zastępcze programy dla większości programów, które potrzebują dostepu do haseł, to prawie w każdym systemie są jeszcze dodatkowe programy, które potrzebują dostępu do haseł. Jeśli masz dystrybucję _D_e_b_i_a_n (a nawet jeśli nie masz), możesz znaleźć źródła programów, które muszą być przerobione pod tym adresem <ftp://ftp.icm.edu.pl/pub/Linux/debian/stable/source>. Reszta tej sekcji opisuje jak uaktualnić programy: adduser, wu_ftpd, ftpd, pop3d, xlock, xdm i sudo tak, aby obsługiwały przesłonięte hasła. Aby dowiedzieć się jak zrobić obsługę przesłoniętych haseł w jakimkolwiek innym programie zobacz sekcję ``Obsługa przesłanianych haseł w programach w C''. (Programy te i tak muszą być uruchomione z bitem "SUID" dla "root-a" albo grupy shadow, aby rzeczywiście mieć dostęp do haseł.) 66..11.. PPrrooggrraamm aadddduusseerr zz ddyyssttrryybbuuccjjii SSllaacckkwwaarree.. Dystrybucja Slackware (i pewnie inne) zawiera interaktywny program służący do dodawania nowych użytkowników - /sbin/adduser. Wersję tego programu obsługującą przesłonięte hasła można pobrać np. z ftp.icm.edu.pl z katalogu /pub/Linux/sunsite/system/admin/accounts/. Ja zalecam używanie programów, które są dostarczane wraz z pakietem _S_h_a_d_o_w _S_u_i_t_e (useradd, usermod, i userdel) zamiast adduser z dystrybucji Slackware. Co prawda nauczenie się jak się nimi posługiwać zabiera trochę czasu, ale opłaca się to ponieważ masz o wiele większą kontrolę i mają one poprawne blokowanie plików (file locking) /etc/passwd i /etc/shadow - adduser tego nie robi. Więcej informacji w następnej sekcji - ``Wprowadzanie pakietu Shadow Suite do użycia.''. Ale jeśli już musisz go mieć, oto co musisz zrobić: tar -xzvf adduser.shadow-1.4.tar.gz cd adduser make clean make adduser chmod 700 adduser cp adduser /sbin 66..22.. SSeerrwweerr wwuu__ffttppdd.. Wraz z większością dystrybucji Linux-a przychodzi serwer wu_ftpd. Jeśli twoja dystrybucja nie instaluje domyślnie pakietu _S_h_a_d_o_w _S_u_i_t_e, to twój serwer wu_ftpd nie będzie skompilowany z obsługą przesłoniętych haseł. wu_ftpd jest odpalany z inetd/tcpd jako proces _"_r_o_o_t_-_a_". Jeśli twój demon wu_ftpd jest starą wersją, to będziesz chciał ją uaktualnić tak czy inaczej ponieważ stare wersje mają pewien błąd, który kompromituje konto _"_r_o_o_t_". (Więcej informacji znajdziesz na Stronie Domowej Bezpieczeństwa na Linuxie <http://bach.cis.temple.edu/linux/linux-security/Linux-Security- FAQ/Linux-wu.ftpd-2.4-Update.html>). Na szczęście musisz tylko zdobyć żródła tego programu i skompilować go z włączoną obsługą "Shadow password". Jeśli nie masz systemu ELF, to serwer wu_ftpd możesz znaleźć na SUNSite Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/network/file- transfer/> - nazywa się wu_ftpd-2.4-fixed.tar.gz Jak już ściągniesz te źródła, to wtedy napisz: cd /usr/src tar -xzvf wu-ftpd-2.4-fixed.tar.gz cd wu-ftpd-2.4-fixed cp ./src/config/config.lnx.shadow ./src/config/config.lnx Potem zmień w pliku ./src/makefiles/Makefile.lnx linię: LIBES = -lbsd -support na: LIBES = -lbsd -support -lshadow Teraz możesz uruchomić skrypt kompilujący i zainstalować pakiet: cd /usr/src/wu-ftpd-2.4-fixed /usr/src/wu-ftp-2.4.fixed/build lnx cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old cp ./bin/ftpd /usr/sbin/wu.ftpd Polecenia te powodują użycie pliku konfiguracyjnego z obsługą haseł przesłanianych dla Linux-a, skompilowanie i instalację serwera. U siebie na Slackware 2.3 musiałem dodatkowo przed kompilacją zrobić coś takiego: cd /usr/include/netinet ln -s in_systm.h in_system.h cd - Zgłaszane były problemy z kompilacją na systemie binarnym ELF, ale wersja BETA następnej wersji działa dobrze. Można ją znaleźć pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/distributions/slackware/source/n/tcpip> pod nazwą wu-ftp-2.4.2-beta-10.tar.gz. Jak już ściągniesz serwer umieść go w /usr/src i napisz: cd /usr/src tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz cd wu-ftpd-beta-9 cd ./src/config Potem zmień w pliku config.lnx: #undef SHADOW.PASSWORD na: #define SHADOW.PASSWORD Potem: cd ../Makefiles i zmień w pliku Makefile.lnx LIBES = -lsupport -lbsd # -lshadow na: LIBES = -lsupport -lbsd -lshadow Następnie skompiluj i zainstaluj: cd .. build lnx cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old cp ./bin/ftpd /usr/sbin/wu.ftpd Zauważ, że powinieneś sprawdzić w /etc/inetd.conf katalog, w którym twój serwer rzeczywiście się znajduje. Powiadomiono mnie, że niektóre dystrybucje umieszczają demony serwerów w innych miejscach, a wtedy wu_ftpd może się znajdować gdzie indziej. 66..33.. SSttaannddaarrddoowwyy ffttppdd.. Jeśli masz u siebie standardowy serwer ftpd, zalecałbym zmianę na wu_ftpd. Poza znaną dziurą omówioną wcześniej, wu_ftpd jest uznany za bardziej bezpieczny. Jeśli nalegasz na standardowy, albo potrzebujesz obsługi _N_I_S, to na SUNSite Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/network/file- transfer/> znajdziesz ftpd-shadow-nis.tgz. 66..44.. ppoopp33dd ((PPoosstt OOffffiiccee PPrroottooccooll 33)) Jeśli potrzebujesz obsługi _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l _3, będziesz musiał skompilować ponownie program pop3d. Normalnie jest on uruchamiany przez inetd/tcpd jako "root". Na SUNSite Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/mail/pop/> dostępne są dwie wersje: ˇ pop3d-1.00.4.linux.shadow.tar.gz ˇ pop3d+shadow+elf.tar.gz Obie są raczej proste do zainstalowania. 66..55.. xxlloocckk Jeśli zainstalujesz pakiet Shadow Suite i uruchomisz _X_W_i_n_d_o_w_s, a następnie zablokujesz (lock) ekran nie uaktualniając programu xlock, będziesz musiał użyć CTRL+ALT+Fx, aby przełączyć się na wirtualną konsolę tekstową (jeśli masz jakąś), zalogować się i zlikwidować proces xlock (albo użyć CTRL+ALT+BACKSPACE żeby zamknąć XWindows). Na szczęście uaktualnienie programu xlock jest dość proste. Jeśli masz XFree86 wersja 3.x.x, przypuszczalnie używasz xlockmore (który jest wspaniałym "screensaver-em" w połaczeniu z "lock"). Następujący pakiet obsługuje przesłonięte hasła - xlockmore-3.5.tgz a dostępny jest z SUNSite Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/X11/xutils/screensavers/>. Jeśli masz starszą wersję zalecam uaktualnienie do tej. Oto "z grubsza" to, co musisz zrobić: ˇ Ściągnij xlockmore i umieść w /usr/src ˇ rozpakuj: tar -xzvf xlockmore-3.7.tgz ˇ zmień w pliku /usr/X11R6/lib/X11/config/linux.cf linię #define HasShadowPasswd NO na: #define HasShadowPasswd YES ˇ skompiluj pliki wykonywalne: cd /usr/src/xlockmore xmkmf make depend make ˇ potem przenieś wszystko w odpowiednie miejsce i uaktulanij prawa dostępu i właścicieli plików cp xlock /usr/X11R6/bin/ cp XLock /var/X11R6/lib/app-defaults/ chown root.shadow /usr/X11R6/bin/xlock chmod 2755 /usr/X11R6/bin/xlock chown root.shadow /etc/shadow chmod 640 /etc/shadow Twój xlock będzie teraz działał poprawnie. 66..66.. xxddmm xdm jest programem, który prezentuje ekran "logujący" dla XWindows. Niektóre systemy startują ten program kiedy system ma się uruchomić w odpowiednim "runlevel-u" (zobacz /etc/inittab). Jeśli zainstalowałeś przesłaniane hasła, musisz uaktulanić ten program. Na szczęście jest to dość proste: xdm.tar.gz można ściągnąć z SUNSite Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/X11/xutils/>. Ściągnij ten plik i umieść go w /usr/src, potem go rozpakuj: tar -xzvf xdm.tar.gz. Zmień w pliku /usr/X11R6/lib/X11/config/linux.cf linię #define HasShadowPasswd NO na: #define HasShadowPasswd YES Skompiluj pliki wykonywalne: cd /usr/src/xdm xmkmf make depend make Potem umieść wszystko na swoim miejscu cp xdm /usr/X11R6/bin/. xdm jest uruchamiany jako "root" tak więc nie musisz zmieniać jego praw dostępu. 66..77.. ssuuddoo Program sudo pozwala administratorowi na udostępnianie zwykłym użytkownikom programów, które wymagają uprawnień "root-a". Jest to pożyteczne ponieważ można ograniczać dostęp do konta "root" i jednocześnie pozwalać użytkownikom np. montować urządzenia. sudo musi przeczytać hasło ponieważ weryfikuje użytkownika kiedy jest uruchamiane. sudo jest uruchamiane z bitem SUID "root" tak więc nie ma problemu z dostępem do pliku /etc/shadow. Program ten z obsługą haseł przesłanianych dostępny jest na SUNSite Polska <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/admin> pod nazwą sudo-1.2-shadow.tgz. UUwwaaggaa:: Podczas instalacji tego programu usunięty zostanie plik /etc/sudoerrs i zastąpiony domyślnym przychodzącym razem z pakietem. Tak więc zrób sobie kopię zapasową jeśli robiłeś tam jakieś zmiany. Albo możesz usunąć linijkę kasującą ten plik z pliku Makefile. Obsługa przesłanianych haseł jest już ustawiona w pakiecie, tak więc wszystko co trzeba zrobić, to przekompilować go. Po umieszczeniu go w /usr/src napisz: cd /usr/src tar -xzvf sudo-1.2-shadow.tgz cd sudo-1.2-shadow make all make install 66..88.. iimmaappdd ((EE--MMaaiill ppaakkiieett ppiinnee)).. imapd jest serwerem poczty elektronicznej podobnym do pop3d. imapd przychodzi wraz z pakietem _P_i_n_e _E_-_M_a_i_l. Dokumentacja dostarczana wraz z tym pkaietem twierdzi, że domyślnym dla systemów Linux jest włączenie obsługi przesłanianych haseł. Ja jednak przekonałem się, że nie jest to prawda. Idąc dalej, kombinacja skrypt tworzący - Makefile bardzo utrudnia dodanie biblioteki libshadow.a podczas kompilacji, więc nie byłem w stanie dodać obsługi haseł przesłanianych do imapd. Jeśli komuś się to udało, to proszę o opis a ja umieszczę go w tym punkcie. 66..99.. ppppppdd ((SSeerrwweerr PPrroottookkoołłuu PPooiinntt--ttoo--PPooiinntt)) Serwer pppd może zostać tak ustawiony, aby używał różnych typów autentykacji: _P_a_s_s_w_o_r_d _A_u_t_h_e_n_t_i_c_a_t_i_o_n _P_r_o_t_o_c_o_l (PAP) i _C_r_y_p_t_o_g_r_a_p_h_i_c _H_a_n_d_s_h_a_k_e _A_u_t_h_e_n_t_i_c_a_t_i_o_n _P_r_o_t_o_c_o_l (CHAP). Serwer pppd zwykle czyta łańuchy haseł z /etc/ppp/chap-secrets i/albo z /etc/ppp/pap-secrets. Jeśli używasz tego domyślnego zachowania serwera pppd, to przeinstalowywanie go nie jest konieczne. pppd pozwala także na użycie parametrów _l_o_g_i_n_-_u (albo z wiersza poleceń, albo z pliku konfiguracyjnego, albo z pliku z opcjami). Jeśli jest podana jakaś opcja _l_o_g_i_n_-_u, to pppd użyje pliku /etc/passwd, żeby zweryfikować identyfikator i hasło dla PAP. To oczywiście nie zadziała odkąd nasz plik z hasłami jest przesłaniany. Jeśli używasz pppd-1.2.1d, to będziesz musiał dodać kod do obsługi haseł przesłanianych. Podany w dalszej części przykład dodaje obsługę dla tej właśnie wersji. Wersja pppd-2.2.0 ma już w sobie obsługę przesłanianych haseł. 77.. WWpprroowwaaddzzaanniiee ppaakkiieettuu SShhaaddooww SSuuiittee ddoo uużżyycciiaa.. Sekcja ta opisuje kilka rzeczy które będziesz chciał wiedzieć jak już zainstalowałeś pakiet _S_h_a_d_o_w _S_u_i_t_e. Dalsze informacje zawarte są na stronach podręcznika systemowego na temat każdego polecenia. 77..11.. DDooddaawwaanniiee,, MMooddyyffiikkaaccjjaa ii uussuuwwaanniiee uużżyyttkkoowwnniikkóóww.. Pakiet _S_h_a_d_o_w _S_u_i_t_e dodał następujące polecenia do dodawania, modyfikacji i usuwania użytkowników. Są one obsługiwane z wiersza poleceń przez parametry (mogłeś także zainstalować program adduser). 77..11..11.. uusseerraadddd.. Polecenie useradd może zostać użyte, aby dodać użytkownika do systemu. Wykonujesz je także, żeby zmienić domyślne ustawienia. Pierwszą rzeczą jaką powinieneś zrobić, to sprawdzić ustawienia domyślne na twoim systemie i odpowiednio je zmienić: useradd -D ______________________________________________________________________ GROUP=1 HOME=/home INACTIVE=0 EXPIRE=0 SHELL= SKEL=/etc/skel ______________________________________________________________________ Wartości domyślne to pewnie nie są te, które chcesz używać, tak więc jeśli zacząłbyś dodawać użytkowników teraz, to musiałbyś podawać informacje dla każdego użytkownika. Jednak możemy i powinniśmy zmienić wartości domyślne: ˇ Niech domyślną grupą będzie 100 ˇ Niech hasła wygasają po 60 dniach ˇ Niech konta nie będą blokowane po wygaśnięciu hasła ˇ Niech domyślną powłoką będzie /bin/bash Aby zrobić takie zmiany napisałbym: useradd -D -g100 -e60 -f0 -s/bin/bash Teraz uruchomienie useradd -D pokaże: ______________________________________________________________________ GROUP=100 HOME=/home INACTIVE=0 EXPIRE=60 SHELL=/bin/bash SKEL=/etc/skel ______________________________________________________________________ W razie gdybyś chciał wiedzieć, to wartości te są zapisywane w /etc/default/useradd. Teraz możesz użyć polecenia useradd, aby dodać użytkowników do systemu. Na przykład, aby dodać użytkownika fred używając wartości domyślnych napisałbyś: useradd -m -c "Fred Flintstone" fred Stworzy to następującą pozycję w /etc/passwd: fred:*:505:100:Fred Flinstone:/home/fred:/bin/bash oraz następującą pozycję w /etc/shadow: fred:!:0:0:60:0:0:0:0 Utworzony zostanie katalog domowy freda oraz skopiowana zostanie tam zawartość katalogu /etc/skel z powodu opcji -m. Ponieważ nie podaliśmy UID-u użyty zostanie następny wolny. Konto freda będzie utworzone, ale nie będzie on się mógł zalogować dopóki go nie odblokujemy. Zrobimy to przez zmianę hasła: passwd fred ______________________________________________________________________ Changing password for fred Enter the new password (minimum of 5 characters) Please use a combination of upper and lower case letters and numbers. New Password: ******* Re-enter new password: ******* ______________________________________________________________________ Teraz w /etc/shadow będzie: fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0 A fred będzie mógł się teraz zalogować i korzystać z systemu. Najlepsze w użyciu programów, które przychodzą razem z pakietem _S_h_a_d_o_w _S_u_i_t_e jest to, że wszelkie zmiany plików /etc/passwd i /etc/shadow są wykonywane z tzw. blokowaniem. Ta więc jeśli dodajesz użytkownika do systemu a inny użytkownik właśnie sobie zmienia hasło, to obie operacje zostaną wykonane poprawnie. Powinieneś używać raczej dostarczonych programów niż edytować ręcznie pliki /etc/passwd i /etc/shadow. Jeśli edytowałeś plik /etc/shadow i jakiś użytkownik zmieniał sobie w tym samym czasie hasło, to po zapisaniu zmian dokonanych przez ciebie nowe hasło użytkownika zginie. Oto mały interaktywny skrypt, który dodaje nowego użytkownika używając useradd i passwd: ______________________________________________________________________ #!/bin/bash # # /sbin/newuser - Skrypt dodający użytkowników do systemu używającego # programów useradd z pakietu Shadow Suite i passwd. # # Napisany przez Mike'a Jacksona <mhjack@tscnet.com> jako przykład do # Shadow-Password-HOWTO. Pozwolenie na używanie i modyfikacje wyraźnie dane. # # Możnaby ten skrypt zmodyfikować tak, żeby pokazywał wartości domyślne # oraz pozwalał na modyfikację podobnie jak program adduser ze Slackware. # Możnaby też sprawdzać błędy, czy głupie wartości. # # ## # Wartości domyślne dla polecenia useradd ## GROUP=100 # Domyślna grupa HOME=/home # Katalog domowy (/home/identyfikator) SKEL=/etc/skel # Katalog szkieletowy INACTIVE=0 # Ilość dni, po których wygasa hasło. EXPIRE=60 # Ilość dni, przez którą ma istnieć hasło SHELL=/bin/bash # Domyślna powłoka (pełna ścieżka) ## # Wartości domyślne dla polecenia passwd ## PASSMIN=0 # Ilość dni między którą zmienia się hasło PASSWARN=14 # Ilość dni przed wygaśnięciem hasła kiedy jest # wysyłana wiadomość ostrzegająca. ## # Upewnij się, że "root" uruchomił ten skrypt ## WHOAMI=`/usr/bin/whoami` if [ $WHOAMI != "root" ]; then echo "You must be root to add news users!" exit 1 fi ## # Zapytaj o identyfikator i imię i nazwisko ## echo "" echo -n "Username: " read USERNAME echo -n "Full name: " read FULLNAME # echo "Adding user: $USERNAME." # # Zauważ, że wymagane są "" przy $FULLNAME ponieważ pole to będzie # prawie zawsze zawierało przynajmniej jedną spację, a bez " polecenie # useradd "pomyślałoby", że jest to następny parametr kiedy doszłoby # do spacji. # /usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \ -f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME ## # Ustaw domyślne wartości dla hasła ## /bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1 ## # Niech polecenie passwd zapyta poprawnie (dwa razy) o hasło ## /bin/passwd $USERNAME ## # Pokaż, co zostało zrobione ## echo "" echo "Entry from /etc/passwd:" echo -n " " grep "$USERNAME:" /etc/passwd echo "Entry from /etc/shadow:" echo -n " " grep "$USERNAME:" /etc/shadow echo "Summary output of the passwd command:" echo -n " " passwd -S $USERNAME echo "" ______________________________________________________________________ Użycie skryptu do dodawania użytkowników do systemu jest na prawdę bardziej preferowane niż ręczna edycja plików /etc/passwd czy /etc/shadow czy też używanie programu adduser ze Slackware. Możesz śmiało modyfikować ten skrypt dla swoich potrzeb. Więcej informacji na temat useradd znajdziesz w podręczniku systemowym. 77..11..22.. uusseerrmmoodd.. Program usermod używany jest do modyfikowania informacji na temat danego użytkownika. Opcje tego programu są podobne do opcji programu useradd. Powiedzmy, że chcesz zmienić powłokę dla freda; zrobiłbyś to tak: usermod -s /bin/tcsh fred Teraz pozycja dotycząca freda w /etc/passwd zmieniłaby się na: fred:*:505:100:Fred Flinstone:/home/fred:/bin/tcsh Załóżmy, że chcemy, żeby konto freda wygasło 15.09.1997: usermod -e 09/15/97 fred <-- data w stylu angielskim-amerykańskim (mmddrr) Teraz pozycja dotycząca freda w /etc/shadow zmieniłaby się na: fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0 Więcej informacji na temat usermod znajdziesz w podręczniku systemowym. 77..11..33.. uusseerrddeell.. userdel robi dokładnie to czego się spodziewałeś - kasuje konto podanego użytkownika. Użycie jest proste: userdel -r <identyfikator> Opcja -r powoduje skasowanie wszystkich plików z katalogu domowego użytkownika. Plików zlokalizowanych w innym systemie plików trzeba poszukać i skasować je ręcznie. Jeśli chcesz tylko zablokować dane konto, a nie skasować to użyj polecenia passwd. 77..22.. PPoolleecceenniiee ppaasssswwdd ii ""tteerrmmiinn wwaażżnnoośśccii"" hhaassłłaa.. Polecenie passwd używane jest do zmiany hasła. Oprócz tego używane jest przez "root-a" do: ˇ Blokowania i odblokowywania kont (-l i -u) ˇ Ustawiania maksymalnej ilości dni przez jaką hasło jest ważne (-x) ˇ Ustawiania minimalnej ilości dni między zmianami hasła (-n) ˇ Ustawiania ilości dni, po których wysyłane jest ostrzeżenie o wygaśnięciu hasła (-w) ˇ Ustawiania ilości dni, po której hasło wygasa przed zablokowaniem konta (-i) ˇ Pozwalania na przeglądanie informacji o koncie w czytelniejszym formacie (-S) Na przykład, spójrzmy jeszcze raz na freda: passwd -S fred fred P 03/04/96 0 60 0 0 Oznacza to, że hasło freda jest ważne, ostatnio było zmieniane 04.03.1996, może być zmienione w każdej chwili, wygasa po 60 dniach, fred nie zostanie ostrzeżony oraz konto nie zostanie zablokowane po wygaśnięciu hasła. Oznacza to po prostu tyle, że kiedy fred zaloguje się po wygaśnięciu hasła zostanie zaraz na początku poproszony o podanie nowego hasła. Jeśli zdecydujemy się, że chcemy ostrzec freda na 14 dni przed wygaśnięciem jego hasła i zablokować jego konto 14 dni po wygaśnięciu hasła trzebaby napisać tak: passwd -w14 -i14 fred Teraz dane o fredzie zmianiły się na: fred P 03/04/96 0 60 14 14 Więcej informacji na temat passwd znajdziesz w podręczniku systemowym. 77..33.. PPlliikk llooggiinn..ddeeffss Plik /etc/login jest plikiem konfiguracyjnym dla programu login oraz dla całego pakietu _S_h_a_d_o_w _S_u_i_t_e. /etc/login zawiera ustawienia od tego jak będą wyglądać znaki zachęty do tego jakie domyślne wartości będą dla wygasania hasła kiedy użytkownik je sobie zmieni. Plik /etc/login.defs jest dość dobrze udokumentowany już przez same komentarze w nim zawarte. Chociaż jest kilka rzeczy do odnotowania: ˇ Zawiera opcje, które mogą być włączane i wyłączane do określania ilości zalogowań. ˇ Zawiera wskazania na inne pliki konfiguracyjne. ˇ Zawiera domyślne wartości dla takich ustawień jak "termin ważności" hasła. Z powyższej listy wynika, że jest to raczej ważny plik i powinieneś się upewnić, że istnieje i że ustawienia są takie jak chciałeś. 77..44.. HHaassłłaa ddllaa ggrruupp.. Plik /etc/groups może zawierać hasła, które pozwalają użytkownikom dołączyć się do jakiejś grupy. Funkcja ta jest włączona jeśli zdefiniujesz stałą SHADOWGRP w pliku /usr/src/shadow-YYMMDD/config.h . Jeśli ją zdefiniujesz i skompilujesz pakiet, musisz utworzyć plik /etc/gshadow, żeby trzymać tam hasła grup i informacje administracyjne. Do utworzenia pliku /etc/shadow użyłeś programu pwconv; nie ma odpowiednika do utworzenia pliku /etc/gshadow, ale to nie ma znaczenia bo plik ten sam się sobą zajmuje. Aby stworzyć początkowy plik /etc/gshadow zrób tak: touch /etc/gshadow chown root.root /etc/gshadow chmod 700 /etc/gshadow Jak będziesz tworzył nowe grupy, zostaną one dodane do /etc/group i /etc/gshadow. Do modyfikacji grup służą programy dostarczane wraz z pakietem _S_h_a_d_o_w _S_u_i_t_e: groups, groupadd, groupmod i groupdel. Format pliku /etc/group jest taki: nazwa_grupy:!:GID:członek,członek,... Gdzie: nnaazzwwaa__ggrruuppyy - chyba nie wymaga wyjaśniania :) !! - w tym miejscu normalnie byłoby hasło, ale teraz jest ono w gshadow GGIIDD - numer grupy cczzłłoonneekk - lista członków grupy. Format pliku /etc/gshadow jest taki: nazwa_grupy:hasło:admin,admin,...:członek,członek,... Gdzie: nnaazzwwaa__ggrruuppyy - chyba nie wymaga wyjaśniania :) hhaassłłoo - zakodowane hasło grupy aaddmmiinn - lista administratorów grupy cczzłłoonneekk - lista członków grupy Polecenie gpasswd jest używane tylko do dodawania i usuwania członków do/z grupy. "root" i każdy z administratorów grupy może usuwać i dodawać członków. Hasło dla grupy może być zmienione za pomocą polecenia passwd przez "root-a" i każdego z administratorów grupy. Chociaż nie ma strony do podręcznika systemowego dla gpasswd, to zrozumienie opcji tego polecenia nie jest takie trudne jak już rozumiesz jego format i koncept. gpasswd bez żadnych parametrów poda opcje jakie przyjmuje. 77..55.. PPrrooggrraammyy ddoo sspprraawwddzzaanniiaa ppoopprraawwnnoośśccii.. 77..55..11.. ppwwcckk Program pwck sprawdza poprawność plików /etc/passwd i /etc/shadow. Sprawdzi każdego użytkownika czy ma: ˇ poprawną ilość pól, ˇ unikalny identyfikator, ˇ dobry UID i GID ˇ dobrą grupę domyślną ˇ poprawny katalog domowy ˇ poprawną powłokę Ostrzeże nas także jeśli znajdzie konta bez haseł. Uruchomienie tego programu po zainstalowaniu pakietu _S_h_a_d_o_w _S_u_i_t_e jest dobrym pomysłem. Powinno sie go także uruchamiać okresowo - co tydzień, co miesiąc. Jeśli użyjesz opcji -r, to możesz użyć programu cron, aby uruchamiać pwck okresowo i dostawać raport pocztą. 77..55..22.. ggrrppcckk Program ten sprawdza poprawność plików /etc/group i /etc/gshadow. Sprawdza: ˇ ilość pól, ˇ unikalną nazwę grupy ˇ poprawność listy administratorów i członków. Ma także opcję -r do automatycznych raportów. 77..66.. HHaassłłaa pprrzzeezz tteelleeffoonn.. ((DDiiaall--uupp)) Hasła przez telefon są inną opcjonalną linią obrony dla systemów, które umożliwiają dostęp przez telefon. Jeśli masz system z dużą ilośćią użytkowników łączących się lokalnie albo poprzez sieć, ale chcesz ograniczyć kto może sie połączyć, to "hasła przez telefon" są dla ciebie. Aby właczyć "hasła przez telefon" musisz wyedytować plik /etc/login.defs i upewnić się, że DIALUPS_CHECK_ENAB jest ustawione na yes. Są dwa pliki, które zawierają informacje o połączeniach przez telefon: /etc/dialups, który zawiera "tty" (jeden na linię bez "/dev/"). Jeśli dany tty jest tam zawarty to połączenie jest sprawdzane; oraz /etc/d_passwd z pełną ścieżką dostępu do powłoki oraz opcjonalnym hasłem. Jeśli użytkownik zaloguje się na linię, która jest podana w /etc/diulups i jego powłoka jest podana w /etc/d_passwd, to będzie mógł się zalogować tylko po podaniu poprawnego hasła. Innym użytecznym celem "haseł przez telefon" może być ustawienie linii, która pozwala tylko na połączenia konkretnego rodzaju (np. PPP lub/i UUCP). Jeśli użytkownik próbuje się połączyć inaczej (np. listą powłok), to musi znać hasło na tę linię. Zanim będziesz mógł używać tych właściwości musisz stworzyć te pliki. Polecenie dpasswd przypisuje hasła do konkretnych powłok zawartych w pliku /etc/d_passwd. Więcej informacji znajdziesz na stronie podręcznika systemowego. 88.. OObbssłłuuggaa pprrzzeessłłaanniiaannyycchh hhaasseełł ww pprrooggrraammaacchh ww CC.. Dodawanie obsługi haseł przesłanianych do programów jest całkiem proste. Jedynym problemem jest to, że program musi zostać uruchomiony z prawami "root-a", aby mieć dostęp do pliku /etc/shadow. Tutaj pojawia się jeden wielki problem: podczas pisania takich programów należy się trzymać jak najściślej zasad bezpieczeństwa. Na przykład jeśli program posiada wyjście do powłoki, to nniiee mmoożżee się to zdarzyć na prawach "root-a". Jeśli program musi mieć dostęp do /etc/shadow i nie potrzebuje więcej praw "root-a", to lepiej uruchomić go z prawami grupy "shadow". Program xlock jest przykładem takiego programu. W przykładzie podanym niżej, pppd-1.2.1d jest już uruchomiony z prawami "root-a", tak więc dodanie obsługi haseł przesłanianych nie powinno zagrozić bezpieczeństwu. 88..11.. PPlliikkii nnaaggłłóówwkkoowwee.. Pliki te powinny znajdować się w /usr/include/shadow. Powinien tam być także plik /usr/include/shadow.h, ale będzie to symboliczne dołaczenie do /usr/include/shadow/shadow.h. Aby dodać obsługę haseł przesłanianych do programu, musisz dołączyć pliki nagłówkowe: #include <shadow/shadow.h> #include <shadow/pwauth.h> Dobrym pomysłem byłoby użycie dyrektyw kompilatora, aby skompilować warunkowo kod z obsługą haseł przesłanianych. (tak jak w przykładzie poniżej.) 88..22.. BBiibblliiootteekkaa lliibbsshhaaddooww..aa Biblioteka ta została zainstalowana w /usr/lib jak instalowałeś pakiet _S_h_a_d_o_w _S_u_i_t_e. Kiedy kompilujesz obsługę przesłaniancyh haseł w programie trzeba poinformować "linker-a", aby dołączył bibliotekę libshadow.a. Robi się to tak: gcc program.c -o program -lshadow Chociaż jak zobaczymy w poniższym przykładzie, większość dużych programów używa plików Makefile i ma zwykle zmienną LIBS=..., którą się modyfikuje. 88..33.. SSttrruukkttuurraa SShhaaddooww.. Biblioteka libshadow.a używa struktury spwd dla informacji, które otrzyma z pliku /etc/shadow. Oto definicja tej struktury wzięta z /usr/include/shadow/shadow.h: ______________________________________________________________________ struct spwd { char *sp_namp; /* identyfikator */ char *sp_pwdp; /* zakodowane hasło */ sptime sp_lstchg; /* data ostatniej zmiany */ sptime sp_min; /* minimalna ilość dni między zmianami */ sptime sp_max; /* maksymalna ilość dni między zmianami */ sptime sp_warn; /* ilość dni przed wygaśnięciem hasła kiedy będzie wysyłane ostrzeżenie */ sptime sp_inact; /* ilość dni, po jakiej wygasa hasło dopóki konto nie będzie zablokowane */ sptime sp_expire; /* ilość dni od 01.01.1970 dopóki konto nie wygaśnie */ unsigned long sp_flag; /* zarezerwowane na przyszłość */ }; ______________________________________________________________________ Do pola sp_pwdp można dodatkowo wstawić nawzę programu: identyfikator:Npge08pfz4wuk;@/sbin/extra:9479:0:10000:::: Oznacza to, że oprócz podania hasła będzie wykonany program /sbin/extra, który wykona dalszą autentykację. Wywołany program otrzyma identyfikator i przełącznik, który określi dlaczego został wywołany. Więcej informacji znajdziesz w /usr/include/shadow/pwauth.h i pwauth.c. Oznacza to, że powinniśmy użyć funkcji pwauth do przeprowadzenia poprawnej autentykacji, ponieważ zajmie się ona także drugą autentykacją. Jest to użyte w przykładzie poniżej. Autor pakietu _S_h_a_d_o_w _S_u_i_t_e twierdzi, że odkąd większość programów tego nie stosuje, może to zostać usunięte lub zmienione w przyszłych wersjach pakietu. 88..44.. FFuunnkkccjjee ppaakkiieettuu SShhaaddooww SSuuiittee.. Plik shadow.h zawiera deklaracje funkcji zawartych w bibliotece libshadow.a: ______________________________________________________________________ extern void setspent __P ((void)); extern void endspent __P ((void)); extern struct spwd *sgetspent __P ((__const char *__string)); extern struct spwd *fgetspent __P ((FILE *__fp)); extern struct spwd *getspent __P ((void)); extern struct spwd *getspnam __P ((__const char *__name)); extern int putspent __P ((__const struct spwd *__sp, FILE *__fp)); ______________________________________________________________________ Funkcja, którą użyjemy w przykładzie to getspnam, która odczyta strukturę spwd dla podanego identyfikatora. 88..55.. PPrrzzyykkłłaadd.. Jest to przykład na dodanie obsługi haseł przesłanianych do programu, który tego potrzebuje, ale nie ma domyślnie włączonego. Przykład ten używa serwera _P_o_i_n_t_-_t_o_-_P_o_i_n_t _P_r_o_t_o_c_o_l (pppd-1.2.1d), który ma tryb do autentykacji _P_A_P używając identyfikatora i hasła z pliku /etc/passwd zamiast z plików _P_A_P czy _C_H_A_P. Nie musisz dodawać tego kodu do pppd-2.2.0, ponieważ on już tam jest. Ta właściwość pppd przypuszczalnie nie jest często używana, ale jeśli zainstalowałeś _S_h_a_d_o_w _S_u_i_t_e, to serwer ten nie będzie działał ponieważ hasła nie są już zapisywane w /etc/passwd. Kod do autentykacji użytkowników przez pppd-1.2.1d umieszczony jest w pliku /usr/src/pppd-1.2.1d/pppd/auth.c. Poniższy kod musi zostać dodany na początku pliku gdzie znajdują się wszystkie inne dyrektywy #include. Otoczyliśmy je dyrektywami warunkowymi (czyli skompilują się tylko jeśli kompilujemy z właczoną obsługą haseł przesłanianych). ______________________________________________________________________ #ifdef HAS_SHADOW #include <shadow.h> #include <shadow/pwauth.h> #endif ______________________________________________________________________ Następnym krokiem jest modyfikacja właściwiego kodu. Ciągle modyfikujemy plik auth.c. Funkcja auth.c przed modyfikacją: ______________________________________________________________________ /* * login - Check the user name and password against the system * password database, and login the user if OK. * * returns: * UPAP_AUTHNAK: Login failed. * UPAP_AUTHACK: Login succeeded. * In either case, msg points to an appropriate message. */ static int login(user, passwd, msg, msglen) char *user; char *passwd; char **msg; int *msglen; { struct passwd *pw; char *epasswd; char *tty; if ((pw = getpwnam(user)) == NULL) { return (UPAP_AUTHNAK); } /* * XXX If no passwd, let them login without one. */ if (pw->pw_passwd == '\0') { return (UPAP_AUTHACK); } epasswd = crypt(passwd, pw->pw_passwd); if (strcmp(epasswd, pw->pw_passwd)) { return (UPAP_AUTHNAK); } syslog(LOG_INFO, "user %s logged in", user); /* * Write a wtmp entry for this user. */ tty = strrchr(devname, '/'); if (tty == NULL) tty = devname; else tty++; logwtmp(tty, user, ""); /* Add wtmp login entry */ logged_in = TRUE; return (UPAP_AUTHACK); } ______________________________________________________________________ Hasło użytkownika jest umieszczane w pw->pw_passwd, tak że wszystko co musimy zrobić, to dodać funkcję getspnam. Umieści to hasło w spwd->sp_pwdp. Dodamy funkcję pwauth, aby przeprowadzić właściwą autentykację. Przeprowadzi to także drugą autentykację jeśli plik shadow jest odpowiednio ustawiony. Funkcja auth.c po modyfikacji do obsługi haseł przesłanianych: ______________________________________________________________________ /* * login - Check the user name and password against the system * password database, and login the user if OK. * * This function has been modified to support the Linux Shadow Password * Suite if USE_SHADOW is defined. * * returns: * UPAP_AUTHNAK: Login failed. * UPAP_AUTHACK: Login succeeded. * In either case, msg points to an appropriate message. */ static int login(user, passwd, msg, msglen) char *user; char *passwd; char **msg; int *msglen; { struct passwd *pw; char *epasswd; char *tty; #ifdef USE_SHADOW struct spwd *spwd; struct spwd *getspnam(); #endif if ((pw = getpwnam(user)) == NULL) { return (UPAP_AUTHNAK); } #ifdef USE_SHADOW spwd = getspnam(user); if (spwd) pw->pw_passwd = spwd->sp-pwdp; #endif /* * XXX If no passwd, let NOT them login without one. */ if (pw->pw_passwd == '\0') { return (UPAP_AUTHNAK); } #ifdef HAS_SHADOW if ((pw->pw_passwd && pw->pw_passwd[0] == '@' && pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL)) || !valid (passwd, pw)) { return (UPAP_AUTHNAK); } #else epasswd = crypt(passwd, pw->pw_passwd); if (strcmp(epasswd, pw->pw_passwd)) { return (UPAP_AUTHNAK); } #endif syslog(LOG_INFO, "user %s logged in", user); /* * Write a wtmp entry for this user. */ tty = strrchr(devname, '/'); if (tty == NULL) tty = devname; else tty++; logwtmp(tty, user, ""); /* Add wtmp login entry */ logged_in = TRUE; return (UPAP_AUTHACK); } ______________________________________________________________________ Po dokładnym prześledzaniu tego kodu okaże się, że zrobiliśmy jeszcze jedną zmianę. Oryginalna wersja pozwalała na dostęp (zwracała UPAP_AUTHACK) jeśli nniiee bbyyłłoo hasła w pliku /etc/passwd. Nie jest to dobrze, ponieważ popularnym użyciem tej właściwości programu login jest używanie jednego konta, na dostęp do programu PPP, a potem sprawdzenie identyfikatora i hasła dostarczonych przez PAP z tymi w plikach /etc/passwd i /etc/shadow. Tak więc jeśli ustwilibyśmy oryginalną wersję, aby uruchamiała powłokę dla użytkownika np. ppp, to każdy mógłby uzyskać połączenie ppp przez podanie identyfikatora ppp i pustego hasła. Poprawiliśmy to przez zwrócenie UPAP_AUTHNAK zamiast UPAP_AUTHACK jeśli pole z hasłem jest puste. Interesujące jest to, że pppd-2.2.0 ma ten sam problem. Następnie musimy zmodyfikować plik Makefile tak, żeby pojawiły się dwie rzeczy: USE_SHADOW musi być zdefiniowane i libshadow.a musi być dodana w procesie "linkowania". Wyedytuj plik Makefile i dodaj: LIBS = -lshadow Potem znajdź linię: COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t i zmień ją na: COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t -DUSE_SHADOW Teraz kompilacja i instalacja. 99.. CCzzęęssttoo zzaaddaawwaannee ppyyttaanniiaa.. _P_: Kiedyś kontrolowałem terminale z jakich mógł się logować "root" przez plik /etc/securettys, teraz nie wygląda na to żeby działało. Co jest grane ? _O_: Teraz kiedy pakiet _S_h_a_d_o_w _S_u_i_t_e jest zainstalowany plik /etc/securettys nie ma żadnego znaczenia. Terminale, z których może się zalogować "root" są teraz podawane w pliku konfiguracyjnym /etc/login.defs. Pozycja w tym pliku może wskazywać na jakiś inny plik. _P_: Zainstalowałem pakiet _S_h_a_d_o_w _S_u_i_t_e i nie mogę się zalogować, co przegapiłem ? _O_; Przypuszczalnie zainstalowałeś pakiet i zapomniałeś uruchomić program pwconv albo zapomniałeś skopiować /etc/npasswd na /etc/passwd oraz /etc/nshadow na /etc/shadow. Możesz musisz także skopiować login.defs do /etc. _P_: W sekcji o "xlock-u" było napisane, żeby zmienić grupę pliku /etc/shadow na shadow, ale ja nie mam takiej grupy - co mam zrobić ? _O_: Możesz ją dodać. Po prostu wyedytuj plik /etc/group i dodaj linię definiującą grupę shadow. Musisz się upewnić, że numer grupy nie jest używany przez żadną inną i musisz ją dodać przed pozycją nogroup. Albo po prostu ustaw bit SUID dla programu xlock. _P_: Jest jakaś lista dyskusyjna dla Linux Shadow Password Suite ? _O_: Tak, ale jest ona dla rozwijających ten pakiet i dla testujących wersje BETA. Możesz się zapisać na tę listę wysyłając list na adres _s_h_a_d_o_w_-_l_i_s_t_-_r_e_q_u_e_s_t_@_n_e_p_t_u_n_e_._c_i_n_._n_e_t o tytule _s_u_b_s_c_r_i_b_e. Na liście tej dyskutuje się właściwie o konkretnej serii shadow-YYMMSS. Powinieneś się na nią zapisać jeśli chcesz być włączony do dalszego rozwoju albo jeśli zainstalowałeś sobie ten pakiet i chcesz wiedzieć o nowszych wersjach. _P_: Zainstalowałem _S_h_a_d_o_w _S_u_i_t_e, ale kiedy używam polecenia userdel dostaję: "userdel: cannot open shadow group file" - co zrobiłem źle ? _O_: Skompilowałeś pakiet z włączoną opcją SHADOWGRP, ale nie masz pliku /etc/gshadow. Musisz albo wyedytować plik config.h i skompilować ponownie pakiet albo stworzyć plik /etc/gshadow. Zobacz sekcję dotyczącą przesłanianych grup. _P_: Zainstalowałem _S_h_a_d_o_w _S_u_i_t_e, ale zakodowane hasła pojawiają się w pliku /etc/passwd, co jest ? _O_: Albo właczyłeś opcję AUTOSHADOW w pliku config.h, albo twoja biblioteka libc była skompilowana z opcją SAHDOW_COMPAT. Musisz dowiedzieć się, które z tych dwóch jest prawdziwe i skompilować ponownie. 1100.. PPrraawwaa aauuttoorrsskkiiee ppooddzziięękkoowwaanniiaa ii rróóżżnnee.. 1100..11.. PPrraawwaa aauuttoorrsskkiiee Linux Shadow Password HOWTO jest chronione prawami autorskimi Michaela H. Jacksona. Dozwolone jest dystrybuowanie kopii tego dokumentu zakładając, że wzmianka o prawach autorskich i to pozwolenie jest zawarte we wszystkich kopiach. Dozwolone jest dytrybuowanie i kopiowanie modyfikowanych wersji tego dokumentu pod warunkami kopiowania z powyższego akapitu, zakładając, że zawarta jest jasna informacja, że jest to wersja modyfikowana tego dokumentu. Dozwolone jest kopiowanie i dystrybucja tłumaczeń tego dokumentu na inne języki pod warunkami dla wersji modyfikowanych wymienionymi wyżej. Dozwolone jest konwertowanie tego dokumentu na inne media pod warunkami podanymi powyżej dla wersji modyfikowanych zakładając, że informacja o źródle nowego dokumentu jest zawarta przez oczywisty odnośnik do dokumentu źródłowego w nowej wersji tego dokumentu. Jeśli występują jakieś wątpliowści co do słowa "oczywiste", właściciel praw autorskich rezerwuje sobie prawo decyzji. 1100..22.. PPooddzziięękkoowwaanniiaa ii rróóżżnnee.. Przykłady kodów dla auth.c zostały wzięte z pppd-1.2.1d i ppp-2.1.0e, Copyright (c) 1993 and The Australian National University oraz Copyright (c) 1989 Carnegie Mellon University. Podziękowania dla Marka Michałkiewicza <marekm@i17linuxb.ists.pwr.wroc.pl> za napisanie i opiekę nad pakietem _S_h_a_d_o_w _S_u_i_t_e dla Linux-a oraz za przejrzenie i komentarze do tego dokumentu. Podziękowania dla Rona Tidda <rtidd@tscnet.com> za jego pomocne przejrzenie i testowanie. Podziękowania dla wszystkich, którzy przysłali do mnie komentarze, aby pomóc w ulepszeniu tego dokumentu. Jeśli masz jakieś uwagi lub sugestie to napisz do mnie proszę, z poważaniem Michael H. Jackson <mhjack@tscnet.com> 1100..33.. OOdd ttłłuummaacczzaa.. Tłumaczenie to jest chronione prawami autorskimi Š Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez tłumacza to: ˇ - "chmod 700 /etc/login/defs" na "chmod 600 /etc/login.defs" plik ten nie musi być wykonywalny, ˇ - "cp passwd ~passwd" na "cp passwd ~/passwd" - ewidentna literówka autora ˇ - "chmod 600 ~passwd" na "chmod 600 ~/passwd" - to samo ˇ - przy zmianie grupy pliku /etc/shadow dodane "cd /etc" ˇ - oraz polskie serwery WWW i ftp. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Sound-HOWTO.pl.txt�����������������������������������������������������0100664�0001750�0001750�00000301437�06717116340�017547� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Linux Sound-HOWTO, czyli Dźwięk w Linuxie - Jak To Zrobić? Autor: Jeff Tranter, jeff_tranter@pobox.com v1.16, 5 stycznia 1997 WWeerrssjjaa ppoollsskkaa:: PPaawweełł OOllsszzeewwsskkii aallddeerr@@aammgg..nneett..ppll vv11..0011,, 2233 mmaarrccaa 11999977 Ten dokument opisuje obsługę dźwięku w Linuxie. Zawiera listę urządzeń dźwiękowych pracujących z Linuxem, wyjaśnia jak skonfigurować sterown­ iki dołączane do jądra i odpowiada na często zadawane pytania. Zami­ arem autora jest szybsze wprowadzenie nowych użytkowników w temat i zmniejszenie ruchu sieciowego w grupach dyskusyjnych Usenetu i pocz­ towych listach dyskusyjnych. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie 1.1. Podziękowania 1.2. Historia Wersji 1.3. Nowe wersje tego dokumentu 1.4. Informacja zwrotna 1.5. Polityka Dystrybucji 2. Technologia Kart Dźwiękowych 3. Obsługiwane Urządzenia 3.1. Karty Dźwiękowe 3.2. Dodatkowe Sterowniki Dźwięku 3.3. Głośnik PC (PC Speaker) 3.4. Port Równoległy 4. Instalacja 4.1. Instalacja Karty Dźwiękowej 4.2. Konfigurowanie jądra 4.3. Tworzenie Plików Urządzeń 4.4. Przeładowywanie Linuxa i Testowanie Instalacji 4.5. Usuwanie błędów 4.5.1. Krok 1: Upewnij się, że rzeczywiście uruchomiłeś jądro, które skompilowałeś. 4.5.2. Krok 2: Upewnij się, że sterowniki dźwięku wkompilowane są w jądro. 4.5.3. Krok 3: Czy jądro wykryło kartę dźwiękową w trakcie ładowania? 4.5.4. Krok 4: Czy możesz pobierać dane z urządzenia dsp? 4.5.5. Jeśli Wszystko Inne Zawiedzie 5. Programy Obsługujące Dźwięk 6. Odpowiedzi Na Często Zadawane Pytania 6.1. Czym są różne pliki urządzeń dźwiękowych? 6.2. Jak mogę odtworzyć próbkę dźwiękową? 6.3. Jak mogę nagrać próbkę? 6.4. Czy mogę mieć więcej niż jedną kartę dźwiękową? 6.5. Błąd urządzeń dźwiękowych "No such file or directory" 6.6. Błąd urządzeń dźwiękowych "No such device" 6.7. Błąd urządzeń dźwiękowych "No space left on device" 6.8. Błąd urządzeń dźwiękowych "Device busy" 6.9. Nadal pojawiają się błędy "urządzenie zajęte"! 6.10. Niepełne odtwarzanie pliku z dźwiękiem cyfrowym 6.11. W trakcie odtwarzania plików MOD pojawiają się przerwy 6.12. Błędy przy kompilacji programów dźwiękowych 6.13. SEGV przy uruchamianiu programów dźwiękowych, które wcześniej działały 6.14. Jakie znane błędy lub ograniczenia ma sterownik dźwięku? 6.15. Gdzie znajdę opis odwołań ioctl() sterownika dźwięku? 6.16. Jaki procesor jest konieczny do odtwarzania lub nagrywania bez przestojów? 6.17. Problemy z kartą PAS16 i kontrolerem SCSI Adaptec 1542 SCSI 6.18. Czy jest możliwe jednoczesne nagrywanie i odtwarzanie próbek? 6.19. Mój SB16 jest ustawiony na IRQ 2, ale configure nie pozwala ustawić tej wartości. 6.20. Czy SoundBlaster AWE32 lub SoundBlaster16 ASP są obsługiwane? 6.21. Jeśli uruchomię Linuxa, po czym załaduje DOS, dostaję błędy i/lub programy dźwiękowe działają niepoprawnie. 6.22. Problemy z uruchamianiem gry DOOM pod Linuxem 6.23. Jak mogę zredukować szumy zbierane przez moją kartę dźwiękową? 6.24. Mogę odtwarzać dźwięki, ale nie mogę nagrywać. 6.25. Moja "kompatybilna" karta dźwiękowa działa tylko wówczas, gdy zainicjalizuję ją pod MS-DOS. 6.26. Moja 16-bitowa karta "kompatybilna" z SoundBlaster działa pod Linuxem jedynie w trybie 8-bitowym. 6.27. Gdzie mogę znaleźć programy dźwiękowe pod Linuxa? 6.28. Czy sterownik dźwięku może być skompilowany jako ładowalny moduł jądra? 6.29. Czy mogę użyć kartę dźwiękową aby zastąpić systemowy sygnał na konsoli? 6.30. Co to jest VoxWare? 6.31. Czy karty Plug and Play są obsługiwane? 6.32. Sox/Play/Vplay wypisuje "invalid block size 1024" (błędny rozmiar bloku 1024) 6.33. Dlaczego sterownik dźwięku ma własny program konfiguracyjny? 6.34. Ustawienia miksera są zerowane za każdym razem gdy załaduję moduł sterownika dźwięku 6.35. Jedynie użytkownik root może nagrywać dźwięk 7. Źródła Informacji 8. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee Oto dokument Linux Sound HOWTO, czyli Dźwięk w Linuxie - Jak To Zrobić? Z założenia ma to być szybki poradnik obejmujący wszystko, co potrzebujesz wiedzieć aby zainstalować i skonfigurować obsługę dźwięku pod Linuxem. Udzielono tu odpowiedzi na często zadawane pytania, a także zamieszczono odnośniki do innych źródeł informacji na rozmaite tematy związane z dźwiękiem i muzyką generowaną za pomocą komputerów. Zakres pracy jest ograniczony do problematyki kart dźwiękowych, odnoszącej się do Linuxa. Więcej informacji na temat kart dźwiękowych i generowania dźwięku i muzyki z pomocą komputera znajdziesz w dokumentach wymienionych w rozdziale _Ź_r_ó_ł_a _I_n_f_o_r_m_a_c_j_i. 11..11.. PPooddzziięękkoowwaanniiaa Wiele z tych informacji pochodzi z dokumentacji dostarczonej wraz ze sterownikiem dźwięku, napisanym przez Hannu Savolainena (hannu@voxware.pp.fi). Składam podziękowania Hannu i wielu innym ludziom, którzy tworzyli sterowniki dźwięku do jądra Linuxa i programy narzędziowe. Dzięki pakietowi Linuxdoc-SGML ten dokument HOWTO jest dostępny w kilku formatach, wygenerowanych z jednego wspólnego pliku źródłowego. 11..22.. HHiissttoorriiaa WWeerrssjjii WWeerrssjjaa 11..11 pierwsza wersja; wysłana jedynie do kanału SOUND pocztowej listy aktywistów Linuxa WWeerrssjjaa 11..22 niewielkie uaktualnienia; pierwsza wersja dostępna w archiwach internetowych WWeerrssjjaa 11..33 skonwertowana do formatu SGML; obecnie dostępna w kilku formatach dzięki narzędziom Linuxdoc-SGML Matta Welsha; zmiana wyglądu z powodu nowego formatu, jedynie niewielkie zmiany w treści WWeerrssjjaa 11..44 niewielkie poprawki w SGMLu; dodana odpowiedź na temat niekompatybilności kontrolera SCSI Adaptec1542A i karty PAS16 WWeerrssjjaa 11..55 sterownik dźwięku w wersji 2.5a jest teraz w dystrybucji jądra 1.1; uwaga na temat obsłgi GUS-MAX; inne nieznaczne poprawki WWeerrssjjaa 11..66 dodana informacja o błędzie "no space on device" ("brak przestrzeni na urządzeniu"); dodana uwaga o tym, że Podręcznik Hackera (Hacker's Guide) znajduje się w "ukrytym" katalogu; dodane pytanie o tryb dwukierunkowy; informacja o błędach "device busy" ("urządzenie zajęte"); inne nieznaczne poprawki WWeerrssjjaa 11..77 dodane informacje o ASP i AWE32; dostępny jest VoxWare 2.9; odpowiedź na pytanie o używanie IRQ2; odnośniki do dokumentów HOWTO o dźwięku i SCSI WWeerrssjjaa 11..88 dodane pytanie o błędy pod DOSem; wiele niewielkich poprawek celem uaktualnienia względem wersji 2.90 sterownika dźwięku; informacja o grze DOOM; odpowiedź na temat redukcji szumów WWeerrssjjaa 11..99 pytania o nagrywanie i karty-klony WWeerrssjjaa 11..1100 napomknienie, że HOWTO dostępne jest przez WWW, jako dokumenty do druku i w innych wersjach językowych; informacja na temat konfliktu DMA ze sterownikiem napędu taśmowego QIC; informacja o karcie Sound Galaxy NX Pro i myszy szeregowej Logitech WWeerrssjjaa 11..1111 Długo oczekiwane uaktualnienie (byłem zajęty); dokument objęty licencją GPL; uaktualnienie do wersji 3.0 sterownika dźwięku; informacja o wielu nowo obsługiwanych kartach; więcej informacji o konfiguracji i usuwaniu błędów; masa nowych odnośników do stron HTML; uaktualnienie zgodnie z formatem CD-ROM HOWTO. WWeerrssjjaa 11..1122 nowe sterowniki w jądrze 1.3.34; nowe nazwy urządzeń dźwiękowych; adres 1542 to 334 a nie 333; wyjaśnienie statusu Emu i ASP Creative Labs; wskazanie do stron WWW Creative Labs i MediaTrix WWeerrssjjaa 11..1133 wzmianka o nazwie VoxWare; uaktualnienie o najnowsze obsługiwane karty dźwiękowe i opcje konfiguracji; pytanie o obsługę Plug and Play; problem rozmiarów bloku; nowe opcje w xconfig i menuconfig; narzędzia modutils mają obsługę dźwięku; usunięcie pocztowej listy dyskusyjnej vger; wyróżnienie adresu strony WWW autora; inne niewielkie zmiany WWeerrssjjaa 11..1144 Audio Excell DSP16 nie jest obecnie obsługiwana (powinna znowu działać za kilka miesięcy); zmiany w programie configure; dostępne jest włoska wersja językowa tego HOWTO; trick - jak ustawiać wzmocnienie miksowania podczas ładowania modułu obsługi dźwięku; ostatnia stabilna wersja jądra to 2.0; now nazwa sterownika dźwięku; pytanie o prawa dostępu root'a na plikach urządzeń dźwiękowych WWeerrssjjaa 11..1155 usunięcie kilku bardzo starych i obecnie nieaktualnych pytań; nowy adres e-mail autora; poprawione kilka odwołań do najnowszych pakietów programów; więcej informacji o książce nt. multimediów; niewielkie poprawki pisowni i gramatyki WWeerrssjjaa 11..1166 wiele uaktualnień i poprawek od Hannu Savolainena; dodany sześciomiesięczny "okres przydatności do użycia"; nowy URL do strony WWW dotyczącej książki, dodany odnośnik do hiszpańskiej wersji językowej; niewielkie poprawki poprawki pisowni i gramatyki 11..33.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu Nowe wersje oryginału tego dokumentu będą okresowo wysyłane do gupy dyskusyjnej comp.os.linux.answers. Będą również załadowywane do rozmaitych anonimowych archiwów ftp, zbierających tego typu informacje, jak np. <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/>. Wersje hipertekstowe tego i innych dokumentów Linux HOWTO są dostępne na wielu serwerach WWW w Internecie, w tym pod adresem <http://sunsite.unc.edu/mdw/mdw.html>. Większość CD-ROMowych dystrybucji Linuxa zawiera dokumenty HOWTO, często w katalogu </usr/doc/>, jak również dokumenty te dostępne są u kilku producentów w postaci drukowanej. Czasami dokumenty HOWTO z dystrybucji na płytach CD-ROM, archiwów ftp i w formie drukowanej są nieaktualne. Jeśli z daty wydania tego dokumentu wynika, że ma on więcej niż 6 miesięcy, prawdopodobnie nowsza wersja jest już dostępna w Internecie. Wersja polska znajduje się wraz z pozostałymi dokumentami Linux-HOWTO w wersji polskiej w archiwum ftp://ftp.ippt.gov.pl/pub/Linux/JTZ/ Oryginalna, angielska wersja tego dokumentu: <ftp://sunsite.unc.edu/pub/Linux/HOWTO/>. Francuska wersja tego dokumentu : <ftp://ftp.ibp.fr/pub2/linux/french/docs/HOWTO/>. Japońska wersja tego dokumentu : <http://yebisu.ics.es.osaka- u.ac.jp/linux/>. Włoska wersja tego dokumentu : <http://www.psico.unipd.it/ildp/docs/HOWTO/Sound-HOWTO.html>. Hiszpańska wersja tego dokumentu : <http://www.insflug.nova.es/howtos/online/sonido/sonido-COMO.html>. Jeśli przetłumaczysz oryginał na inną wersję językową, daj znać autorowi, a do powyższej listy dodany zostanie odpowiedni odnośnik. 11..44.. IInnffoorrmmaaccjjaa zzwwrroottnnaa Polegam na Tobie, czytelniku, aby uczynić ten dokument użytecznym. Jeśli masz jakieś sugestie, poprawki lub komentarze, proszę wyślij je do mnie, jeff_tranter@pobox.com, a ja spróbuje włączyć je do następnej wersji. Wyrażam również chęć udzielania odpowiedzi na ogólne pytania dotyczące kart dźwiękowych tak dobrze jak tylko potrafię. Jednak zanim zapytasz mnie, _z_a_p_o_z_n_a_j _s_i_ę _p_r_o_s_z_ę _z _c_a_ł_y_m _n_i_n_i_e_j_s_z_y_m _H_O_W_T_O, a wysyłając pytanie _d_o_ł_ą_c_z _d_o_k_ł_a_d_n_ą _i_n_f_o_r_m_a_c_j_ę _n_a _t_e_m_a_t _p_r_o_b_l_e_m_u. Jeśli opublikujesz ten dokument na dysku CD-ROM lub w wersji drukowanej, byłbym wdzięczny za przesłanie mi jednego egzemplarza. Napisz e-mail, to podam mój adres pocztowy. Warto w takiej sytuacji również rozważyć datek na rzecz Projektu Dokumentacji Linuxa (Linux Documentation Project), co wspomoże ideę darmowej dokumentacji do Linuxa. W sprawie dokładniejszych informacji skontaktuj się z koordynatorem projektu Linux HOWTO, Gregiem Hankinsem <mailto:gregh@sunsite.unc.edu>. 11..55.. PPoolliittyykkaa DDyyssttrryybbuuccjjii Prawa autorskie 1995-1997 Jeff Tranter. Ten HOWTO jest darmową dokumentacją; możesz go rozprowadzać i/lub modyfikować na zasadach określonych w Generalnej Publicznej Licencji GNU (GPL) przez Fundację Darmowego Oprogramowania (Free Software Foundation); Licencja w wersji 2 lub (zgodnie z Twoim uznaniem) jakakolwiek późniejsza. Dokument ten rozprowadzany jest w nadziei, że będzie przydatny, jednak bbeezz żżaaddnneejj ggwwaarraannccjjii; nawet bez domniemanej gwarancji pprrzzeezznnaacczzeenniiaa lub pprrzzyyddaattnnoośśccii ddoo kkoonnkkrreettnneeggoo cceelluu. Więcej szczegółów znajdziesz w Generalnej Publicznej Licencji GNU. Możesz otrzymać kopię Generalnej Publicznej Licencji GNU, jeśli napiszesz do Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 22.. TTeecchhnnoollooggiiaa KKaarrtt DDźźwwiięękkoowwyycchh Ten rozdział jest _b_a_r_d_z_o skrótowym przeglądem technologii dźwięku komputerowego, który ma na celu ułatwić ci zrozumienie później używanych pojęć. Aby dowiedzieć się więcej, powinieneś odwołać się do książek o dźwięku cyfrowym lub cyfrowym przetwarzaniu sygnałów dźwiękowych. Dźwięk jest zjawiskiem _a_n_a_l_o_g_o_w_y_m; może przyjmować dowolne wartości z ciągłego przedziału. Komputery są _c_y_f_r_o_w_e; lubią pracować z wartościami dyskretnymi. Karty dźwiękowe wykorzystują urządzenie zwane _K_o_n_w_e_r_t_e_r_e_m _A_n_a_l_o_g_o_w_o _- _C_y_f_r_o_w_y_m (A/D lub ADC) do konwersji napięć odpowiadających analogowym falom dźwiękowym do postaci cyfrowych lub numerycznych wartości, które można przechowywać w pamięci. Podobnie, _K_o_n_w_e_r_t_e_r _C_y_f_r_o_w_o _- _A_n_a_l_o_g_o_w_y (D/A lub DAC) przekształca wartości numeryczne z powrotem na napięcia analogowe, które w efekcie mogą sterować głośnikiem, produkując dźwięk. Proces przetwarzania postaci analogowej na cyfrową, zwany próbkowaniem, obciążony jest pewnym błędem. Dwa czynniki są najważniejsze przy określaniu, jak wiernie próbkowany dźwięk odwzorowuje analogowy oryginał. _C_z_ę_s_t_o_t_l_i_w_o_ś_ć _p_r_ó_b_k_o_w_a_n_i_a to liczba próbek pobranych w danej jednostce czasu (najczęściej określana w próbkach na sekundę lub Hertzach). Przy niskiej częstotliwości próbkowania analogowy sygnał odwzorowany będzie mniej dokładnie. _R_o_z_m_i_a_r _p_r_ó_b_k_i to zakres wartości używanych do opisania każdej próbki, zazwyczaj oznaczony w bitach. Im większy rozmiar próbki, tym dokładniejszy będzie sygnał cyfrowy. Karty dźwiękowe najczęściej używają próbek 8- lub 16-bitowych przy częstotliwościach próbkowania od około 4000 do 44.000 próbek na sekundę. Próbki mogą również zawierać jeden kanał (mono) lub dwa kanały (stereo). _S_y_n_t_e_z_a _F_M jest starszą techniką wytwarzania dźwięku. Polega na łączeniu różnych fal dźwiękowych (np. sinusoidalnej, trójkątnej, kwadratowej). Syntezę FM łatwiej jest zaimplementować sprzętowo niż konwersję D/A, ale za to trudniej ją oprogramować. Jest ona również mniej elastyczna. Wiele kart dźwiękowych obsługuje syntezę FM dla celów wstecznej kompatybilności ze starszymi kartami i programami. Zazwyczaj zawierają one kilka niezależnych generatorów dźwięku lub _g_ł_o_s_ó_w. _S_y_n_t_e_z_a _W_a_v_e_t_a_b_l_e łączy elastyczność konwersji D/A z wielokanałowymi możliwościami syntezy FM. W tej technologii przetworzone na postać cyfrową głosy mogą być załadowane do dedykowanego obszaru pamięci, a następnie odtwarzane, łączone i modyfikowane przy niewielkim obciążeniu procesora. Wszystkie najlepsze karty dźwiękowe obsługują syntezę wavetable. Większość kart dźwiękowych daje możliwość _m_i_k_s_o_w_a_n_i_a - łączenia sygnałów z różnych źródeł wejściowych i kontrolowania poziomów głośności. _M_I_D_I jest skrótem od nazwy Musical Instrument Digital Interface (Cyfrowy Interfejs Instrumentów Muzycznych) i jest standardowym protokołem sprzętowym i programowym pozwalającym instrumentom muzycznym na komunikowanie się ze sobą. Sygnały przesłane po szynie MIDI mogą być również przechowywane w plikach MIDI do późniejszej obróbki i odtwarzania. Wiele kart dźwiękowych zawiera interfejs MIDI. Te, które go nie mają, nadal mogą odgrywać pliki MIDI przy użyciu zintegrowanych w karcie funkcji. _P_l_i_k_i _M_O_D są powszechnym formatem utworów generowanych za pomocą komputerów. Obok informacji o nutach, które mają być zagrane, pliki te zawierają cyfrowe próbki instrumentów (inaczej zwane głosami). Pliki MOD po raz pierwszy pojawiły się na komputerach Amiga, ale mogą być odtwarzane z pomocą stosownego oprogramowania na innych systemach, z Linuxem włącznie. 33.. OObbssłłuuggiiwwaannee UUrrzząąddzzeenniiaa W tym rozdziale wymieniono karty graficzne i interfejsy, które są obecnie obsługiwane przez Linuxa. Informacja tutaj zawarta oparta jest na najnowszych w trakcie pisania tego dokumentu jądrach Linuxa. Sterownik dźwięku ma swą własną numerację wersji. Ostatnie stabilne jądro Linuxa to wersja 2.0.27, wykorzystująca sterownik dźwięku w wersji 3.5.4-960630. Autor sterownika dźwięku, Hannu Savolainen, zazwyczaj również udostępnia nowsze wersje sterownika dźwięku zanim włączane są one do standardowej dystrybucji jądra Linuxa. Najbardziej aktualna lista obsługiwanych kart znajduje się pod adresem <http://www.4front- tech.com/ossfree/new_cards.html> (USA) lub <http://personal.eunet.fi/pp/voxware/new_cards.html> (Europa). Na tych stronach wyszczególnione jest, która wersja sterownika dźwięku jest wymagana przy danym typie karty dźwiękowej, lub czy sterownik danej karty jest nadal w fazie rozwoju. Plik </usr/src/linux/drivers/sound/Readme.cards>, rozprowadzany wraz ze sterownikiem dźwięku do jądra, zawiera informację o obsługiwanych kartach, ale nie zawsze jest aktualny. Sterownik dźwięku powinien również działać z większością kart dźwiękowych na platformie Alpha. Jednakże, niektóre karty mogą wywoływać konflikty na portach I/O innych urządzeń systemów opartych na Alpha, nawet jeśli działają one poprawnie na komputerach i386, więc ogólnie rzecz biorąc nie można z góry określić, czy dana karta będzie działać, zanim się faktycznie nie spróbuje. W czasie, gdy to piszę, sterownik dźwięku nie działa jeszcze na wersji Linuxa na systemy z procesorem PowerPC, ale w przyszłości obsługa ta powinna się pojawić. Wygląda na to, że sterownik dźwięku można dołączyć do jądra w wersji Linuxa na systemy MIPs, ale obawiam się że nie specjalnie działa (czy komputery MIPs mają w ogóle sloty ISA?). Jądro Linuxa zawiera osobne sterowniki dla wersji na Atari i Amigę, które implementują kompatybilny podzestaw sterownika na platformę Intel, przy użyciu wbudowanych w te komputery urządzeń. Wersja Linuxa na systemy SPARC nie ma obecnie obsługi dźwięku (podobnie jak Amiga i Atari, komputery SPARC mają wbudowane urządzenia dźwiękowe, więc można to załatwić nowym sterownikiem). 33..11.. KKaarrttyy DDźźwwiięękkoowwee Następujące karty dźwiękowe obsługiwane są przez sterownik dźwięku jądra Linuxa: ˇ ATI Stereo F/X (nie jest już produkowana) ˇ AdLib (nie jest już produkowana) ˇ Ensoniq SoundScape (i kompatybilne firm Reveal i Spea) ˇ Gravis Ultrasound ˇ Gravis Ultrasound ACE ˇ Gravis Ultrasound Max ˇ Gravis Ultrasound z opcjonalnym próbkowaniem 16-bitowym ˇ Logitech Sound Man 16 ˇ Logitech SoundMan Games ˇ Logitech SoundMan Wave ˇ MAD16 Pro (układy OPTi 82C928, 82C929, 82C930, 82C924) ˇ Media Vision Jazz16 ˇ MediaTriX AudioTriX Pro ˇ Microsoft Windows Sound System (MSS/WSS) ˇ Mozart (OAK OTI-601) ˇ Orchid SW32 ˇ Personal Sound System (PSS) ˇ Pro Audio Spectrum 16 ˇ Pro Audio Studio 16 ˇ Pro Sonic 16 ˇ Roland MPU-401 interfejs MIDI ˇ Sound Blaster 1.0 ˇ Sound Blaster 16 ˇ Sound Blaster 16ASP ˇ Sound Blaster 2.0 ˇ Sound Blaster AWE32 ˇ Sound Blaster Pro ˇ TI TM4000M notebook ˇ ThunderBoard ˇ Turtle Beach Tropez ("classic", ale nie Plus) ˇ Turtle Beach Maui ˇ Yamaha FM synthesizers (OPL2, OPL3 i OPL4) ˇ 6850 UART interfejs MIDI Należy zauważyć, że karty Plug and Play (PnP) nie są w pełni kompatybilne ze starszymi modelami bez PnP tego samego urządzenia. Dla przykładu, SoundBlaster16 PnP nie jest w pełni zgodna z oryginalną kartą SoundBlaster16. Podobnie jest w przypadku kart Soundscape PnP i GUS PnP. Więcej informacji o Plug and Play znajdziesz w dalszej części tego dokumentu. Następujące karty _n_i_e _s_ą obsługiwane, z powodu, że są przestarzałe, bądź dlatego, że producent nie chce udostępnić informacji programistycznych niezbędnych do napisania sterownika. ˇ Pro Audio Spectrum (oryginalna) ˇ Pro Audio Spectrum+ ˇ starsze (oparte o Sierra Aria) karty dźwiękowe firmy Diamond Inne karty dźwiękowe, które określa się jako kompatybilne z jedną z obsługiwanych kart dźwiękowych _m_o_g_ą działać, jeśli są zgodne sprzętowo (tj. na poziomie rejestrów). Mimo faktu, iż większość kart dźwiękowych tytułuje się mianem "kompatybilnych z SoundBlaster", bardzo niewiele z obecnie sprzedawanych kart jest wystarczająco kompatybilnych, aby pracować z linuxowym sterownikiem karty SoundBlaster. Karty te najczęściej pracują lepiej pod kontrolą sterownika MSS/WSS lub MAD16. Jedynie prawdziwe karty SoundBlaster, produkowane przez Creative Labs, zawierające oryginalne układy (tzn. SoundBlaster16 Vibra), karty MV Jaz16 i oparte o ESS688/1688 działają dobrze ze sterownikiem SoundBlaster. Próba użycia ustawienia "16-bitowa karta dźwiękowa kompatybilna z SoundBlaster Pro" to zazwyczaj tylko strata czasu. Jądro Linuxa obsługuje port SCSI wbudowany w niektóre karty dźwiękowe (np. ProAudioSpectrum 16) i firmowy interfejs do niektórych napędów CD-ROM (np. Soundblaster Pro). Więcej informacji znajdziesz w dokumentach Linux SCSI HOWTO oraz Linux CDROM HOWTO Dostępny jest także ładowalny moduł jądra obsługujący porty joysticka - również te, które znajdują się na niektórych kartach dźwiękowych. Zauważ, że obsługa SCSI, CD-ROM, joysticka i sterowniki dźwiękowe w jądrze są od siebie całkowicie niezależne. Najnowsze informacje o sterowniku kart dźwiękowych znajdziesz na stronie WWW Hannu Savolainena, której adres wymieniony jest w rozdziale _Ź_r_ó_d_ł_a _I_n_f_o_r_m_a_c_j_i. 33..22.. DDooddaattkkoowwee SStteerroowwnniikkii DDźźwwiięękkuu Dostępnych jest też kilka "nieoficjalnych" sterowników dźwięku, nie włączonych do dystrybucji jądra Linuxa, używanych zamiast standardowego sterownika dźwięku. Komercyjną wersję sterownika dźwięku pod Linuxa sprzedaje firma 4Front Technologies. Oferowana przez nich wersja ma kilka dodatkowych funkcji w porównaniu ze sterownikiem włączonym do dystrybucji jądra Linuxa. Więcej informacji na ten temat znajdziesz na stronie WWW 4Front Technologies. Markus Mummert (mum@mmk.e-technik.tu-muenchen.de) stworzył pakiet sterowników do kart Turtle Beach MultiSound (classic), Tahiti i Monterey. W dokumentacji czytamy: "Jest on zaprojektowany do wysokiej jakości zapisu/odczytu z dysku twardego bez utraty synchronizacji nawet na obciążonych systemach. Inne funkcje, takie jak synteza fal, MIDI i cyfrowy procesor sygnałowy (DSP) nie mogą być używane. Nie jest również możliwe jednoczesne odtwarzanie i nagrywanie. Obecnie zastępuje on VoxWare i był testowany na kilku wersjach jądra, od 1.0.9 do 1.2.1. Można go również zainstalować na systemach UN*X SysV386R3.2." Można je znaleźć pod adresem <http://www.cs.colorado.edu/~mccreary/tbeach>. Kim Burgaard (burgaard@daimi.aau.dk) napisał sterownik i programy narzędziowe do interfejsu MIDI Roland MPU-401. Opis z mapy oprogramowania Linuxa jest następujący: "Sterownik do interfejsów MIDI w pełni zgodnych z Roland MPU-401 (w tym również Roland SCC-1 i RAP-10/ATW-10). Wraz ze sterownikiem otrzymujemy użyteczny zestaw programów narzędziowych, w skład którego wchodzą między innymi odt­ warzacz i rejestrator standardowych plików MIDI (Standard MIDI Files)." Od czasu wydania wersji 0.11a dokonano licznych ulepszeń. Między innymi, sterownik zawiera obecnie procedury dzielenia pracy IRQ i można go skompilować z nowym interfejsem modułów jądra. Opcja pracy z metronomem, możliwość synchronizowania np. grafiki na podstawie rytmu bez utraty precyzji, zaawan­ sowany interfejs powtarzania/nagrywania/nadpisywania i wiele, wiele więcej." Można to znaleźć pod adresem : <ftp://sunsite.unc.edu/pub/Linux/kernel/sound/mpu401-0.2.tar.gz>. 33..33.. GGłłoośśnniikk PPCC ((PPCC SSppeeaakkeerr)) Dostępny jest sterownik dźwięku, nie wymagający żadnych dodatkowych urządzeń dźwiękowych; wykorzystuje on wewnętrzny głośnik PC. Jest on w większości programowo zgodny ze sterownikiem kart dźwiękowych, jednak jak można się było spodziewać, jakość uzyskiwanego dźwięku jest znacznie gorsza i procesor jest znacznie bardziej obciążony. Wyniki bywają różne, zależnie od charakterystyki danego głośnika. Więcej informacji znajdziesz w dokumentach dołączonych do sterownika głośnika PC. Bieżąca wersja to 0.9b i można ją zdobyć pod adresem <ftp://ftp.informatik.hu-berlin.de/pub/os/linux/hu-sound/> 33..44.. PPoorrtt RRóówwnnoolleeggłłyy Innym wyjściem jest skonstruowanie konwertera cyfrowo-analogowego w oparciu o równoległy port drukarki i kilka dodatkowych komponentów. Jakość dźwięku w tym przypadku jest lepsza niż na głośniku PC, ale nadal sterownik konsumuje dużo czasu procesora. Wskazówki dotyczące budowy takiego konwertera, oraz odpowiedni sterownik zawiera wcześniej wspomniany pakiet sterujący do głośnika PC. 44.. IInnssttaallaaccjjaa Konfiguracja obsługi dźwięku przez Linuxa sprowadza się do następujących kroków: 1. Instalacja karty dźwiękowej. 2. Konfiguracja i kompilacja jądra z obsługą dźwięku. 3. Stworzenie plików urządzeń. 4. Przeładowanie jądra Linuxa i testowanie ustawień. Następne rozdziały szczegółowo opisują każdy z tych kroków. 44..11.. IInnssttaallaaccjjaa KKaarrttyy DDźźwwiięękkoowweejj Postąp zgodnie ze wskazówkami producenta odnośnie instalacji sprzętu, lub zleć instalację dostawcy twojego komputera. Starsze karty dźwiękowe mają zazwyczaj przełączniki lub jumpery pozwalające dobrać ustawienia IRQ, kanałów DMA, itd.; zapisz sobie wartości, które ustawisz. Jeśli nie masz pewności, wykorzystaj ustawienia fabryczne. W miarę możliwości próbuj unikać konfliktów karty z innymi urządzeniami (np. kartami ethernet, kontrolerami SCSI, portami szeregowymi i równoległymi). Zazwyczaj powinieneś używać te same ustawienia portu I/O, IRQ i DMA, które działają pod DOSem. Jednak w niektórych przypadkach (szczególnie przy kartach PnP) dla poprawnego działania karty pod Linuxem ustawienia będą musiały być inne. Może się przydać metoda doświadczalna. 44..22.. KKoonnffiigguurroowwaanniiee jjąąddrraa Przy wstępnej instalacji Linuxa prawdopodobnie użyłeś jądra prekompilowanego. Jądra te zazwyczaj nie zawierają obsługi dźwięku. Najlepiej przekompilować jądro samemu z takimi sterownikami, jakie są Ci potrzebne. Możesz również chcieć przekompilować jądro aby uaktualnić je do nowszej wersji lub aby zwolnić nieco pamięci przez zminimalizowanie jego rozmiarów. Szczegóły odnośnie kompilacji jądra znajdziesz w Linux Kernel HOWTO <http://www.jtz.org.pl/Html/Kernel-HOWTO.pl.html> po polsku (lub w oryginale Linux Kernel HOWTO <http://sunsite.unc.edu/mdw/HOWTO/Kernel- HOWTO.html>). Wspomnę tutaj tylko o kilku kwestiach specyficznych dla kart dźwiękowych. Jeśli nigdy wcześniej nie konfigurowałeś obsługi dźwięku w jądrze, dobrze byłoby, abyś przeczytał _w_s_z_y_s_t_k_i_e dokumenty Readme dołączone do sterowników dźwięku do jądra, w szczególności informację o konkretnym typie karty dźwiękowej, której używasz. Następujące pliki informacyjne można znaleźć w katalogu kodu źródłowego sterownika dźwięku do jądra, zazwyczaj </usr/src/linux/drivers/sound>: CHANGELOG - opis zmian w poszczególnych wersjach COPYING - ograniczenia rozprowadzania i prawa autorskie Readme - najświeższe i najważniejsze informacje Readme.aedsp16 - informacje o karcie dźwiękowej Audio Excel DSP 16 Readme.cards - uwagi na temat konfigurowania konkretnych kart Readme.linux - uwagi o instalacji osobnych wersji sterownika dźwięku Readme.modules - jak skompilować sterownik dźwięku do postaci modułu ładowalnego Readme.v30 - nowe funkcje w wersji 3.0 sterownika dźwięku experimental.txt - uwagi o opcjach eksperymantalnych Postąp zgodnie ze zwykłą procedurą tworzenia jądra. Obecnie dostępne są trzy interfejsy ułatwiające konfigurowanie jądra. Graficzny interfejs działający w X11 można wywołać wpisując "make xconfig". Interfejs oparty o okienkowe menu, wymagający jedynie trybu tekstowego jest dostępny jako "make menuconfig". Pierwotna metoda, wywoływana przez "make config", to prosty, tekstowy interfejs. Szczególnie uważnie należy korzystać z "make xconfig" i "make menuconfig". Należy dokładnie prześledzić wszystkie pytania Yes/No. Domyślną odpowiedzią na te pytania jest zawsze 'No' (nie), co nie we wszystkich przypadkach jest poprawne. W szczególności opcja "/dev/dsp and /dev/audio support" (CONFIG_AUDIO) powinna zazwyczaj być włączona. W tym dokumencie przyjąłem założenie, że konfigurować będziesz jądro metodą tradycyjną "make config" - odpowiadając na kolejne pytania, chociaż sam proces jest podobny w innych przypadkach. Są również dwie różne metody konfigurowania dźwięku. Pierwsza to tzw. "stara" metoda (jedyna dostępna w jądrach przed wersją 2.0.0). Wykorzystuje ona osobny program konfiguracyjny, będący częścią sterownika dźwięku. Sposób ten jest skuteczny w przypadku więszości kart dźwiękowych z wyjątkiem kilku rzadkich modeli, które wymagają dodatkowych sterowników "niskopoziomowych" (miroSOUND, AWE32 i AEDSP16). Druga, "nowa" metoda, jest lepiej zintegrowana z okienkowym systemem konfiguracji jądra. Nie działa ona w przypadku kart, które wymagają pliku załadowanego od producenta. Należą do nich karty PSS, SM Wave, AudioTrix Pro i TurtleBeach Tropez/Maui. Przy tych kartach konieczne jest użycie starej metody. "make xconfig" wywołuje zawsze "nową" metodę. Przy "make menuconfig" możesz wybrać między "starą" i "nową" metodą w okienku konfiguracji dźwięku. Jeśli natomiast używasz "make config", domyślnie wybierana jest "stara" metoda. Jednak jeśli już raz skorzystałeś z "nowej" metody, będzie ona również używana przez "make config". Przełączyć się do "starej" metody możesz wówczas przez uruchomienie "make menuconfig" i wybranie jej w menu. Zalecany sposób to użycie "make menuconfig" w połączeniu ze "starą" metodą. Wiele problemów konfiguracji dźwięku powstaje (przynajmniej częściowo) z powodu niepoprawnego użycia "nowej" metody. Możliwe jest również skompilowanie sterownika dźwięku do postaci ładowalnego modułu jądra. Na początek zalecam wkompilowanie sterownika do rezydentnej części jądra. Z chwilą, gdy już zostanie przetestowany i działa poprawnie, możesz spróbować opcję modułu. Po uruchomieniu make config, włącz obsługę dźwięku odpowiadając "y" na pytanie: Sound card support (CONFIG_SOUND) [M/n/y/?] Po zakończeniu pytań konfiguracyjnych skompilowany i uruchomiony zostanie program konfiguracji dźwięku, który następnie wypyta cię o pożądane opcje dotyczące kart dźwiękowych. Odpowiadaj na te pytania ostrożnie, nieprawidłowa odpowiedź może spowodować, że pewne dalsze pytania w ogóle nie zostaną zadane. Dla przykładu, nie odpowiadaj "yes" na pierwsze pytanie (PAS16) jeśli rzeczywiście nie masz PAS16. Nie włączaj większej ilości kart niż faktycznie potrzebujesz obsłużyć, gdyż jedynie zajmuje to pamięć. Dodatkowo, niektóre sterowniki (jak MPU-401) mogą kłócić się z kontrolerem SCSI i uniemożliwiać ładowanie jądra. Wymieniam poniżej opisy poszczególnych opcji konfiguracji. Odpowiedz "y" (tak) lub "n" (nie) na każde pytanie. Pokazywana jest odpowiedź domyślna, więc "Y/n/?" oznacza domyślnie "y", a "N/y/?" oznacza, że domyślnym ustawieniem jest "n". Aby użyć ustawienie domyślne po prostu naciśnij Enter, ale pamiętaj, że wartość ta niekoniecznie jest poprawna. Wpisując znak zapytania ("?") otrzymasz krótką informację opisującą daną opcję konfiguracji. Zauważ również, że nie wszystkie pytania muszą uzyskać odpowiedź. Program konfiguracyjny może wyłączyć pewne pytania zależnie od wcześniejszych odpowiedzi. Może również wybierać pewne opcje automatycznie. OOlldd ccoonnffiigguurraattiioonn eexxiissttss iinn //eettcc//ssoouunnddccoonnff.. UUssee iitt [[YY//nn//??]] _(_W _/_e_t_c_/_s_o_u_n_d_c_o_n_f _z_n_a_l_e_z_i_o_n_o _p_o_p_r_z_e_d_n_i_ą _k_o_n_f_i_g_u_r_a_c_j_ę_. _U_ż_y_ć _j_ą _[_Y_/_n_/_?_]_)" Jeśli wcześniej kompilowałeś jądro z obsługą dźwięku, mogą być zapisane ustawienia poprzedniej konfiguracji. Jeśli chcesz użyć poprzednio wybrane opcje, odpowiedz "y". Jeśli chcesz spróbować innej konfiguracji lub uaktualniłeś jądro do nowszej wersji, powinieneś odpowiedzieć "n" i przejść przez procedurę konfiguracji. PPrrooAAuuddiiooSSppeeccttrruumm 1166 ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _P_r_o_A_u_d_i_o_S_p_e_c_t_r_u_m _1_6 _[_Y_/_n_/_?_]_)" Odpowiedz "y" _t_y_l_k_o jeśli masz kartę Pro Audio Spectrum _1_6, ProAudio Studio 16 lub Logitech SoundMan 16. Nie odpowiadaj "y" jeśli masz jakąś inną kartę firmy Media Vision lub Logitech, gdyż nie są one kompatybilne z PAS16. SSoouunnddBBllaasstteerr ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _k_a_r_t _S_o_u_n_d_B_l_a_s_t_e_r _[_Y_/_n_/_?_]_)" Odpowiedz "y" jeśli masz oryginalną kartę SoundBlaster produkcji Creative Labs, lub klon w 100% kompatybilny (jak np. Thunderboard lub SM Games). Jeśli twoja karta jest na liście obsługiwanych kart, zerknij na instrukcje do tej konkretnej karty zawarte w pliku Readme.cards zanim odpowiesz na to pytanie. Przy nieznanych kartach możesz odpowiedzieć "y" jeśli w opisie dostarczonym z kartą stwierdzono, że jest kompatybilna z SoundBlasterem. GGrraavviiss UUllttrraassoouunndd ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _G_r_a_v_i_s _U_l_t_r_a_s_o_u_n_d _[_Y_/_n_/_?_]_)" Odpowiedz "y" jeśli masz kartę GUS lub GUS MAX. Odpowiedz "n" gdy ich nie masz, ponieważ sterownik zżera sporo pamięci. MMPPUU--440011 ssuuppppoorrtt ((NNOOTT ffoorr SSBB1166)) [[YY//nn//??]] _(_O_b_s_ł_u_g_a _M_P_U_-_4_0_1 _(_N_I_E _d_o_t_y_c_z_y _S_B_1_6_) _[_Y_/_n_/_?_]_)" Bądź ostrożny z tym pytaniem. Interfejs MPU-401 jest obsługiwany przez prawie wszystkie karty dźwiękowe. Jednakże, pewne obsługiwane przez Linuxa karty mają własne sterowniki do MPU-401. Włączenie opcji MPU-401 dla tych kart wywoła konflikty. Trochę kłopotów spowodować może również włączenie opcji MPU-401 dla sprzętu, który tak naprawdę nie ma MPU-401. Jeśli twoja karta znalazła się na liście obsługiwanego sprzętu, przeczytaj informacje dotyczące tej konkretnej karty w pliku Readme.cards. Bezpiecznie jest odpowiedzieć "y" jeśli masz prawdziwą kartę interfejsu MIDI MPU-401. 66885500 UUAARRTT MMiiddii ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _M_I_D_I _6_8_5_0 _U_A_R_T _[_Y_/_n_/_?_]_)" Bezpiecznie jest odpowiedzieć "n" na to pytanie we wszystkich przypadkach. Interfejs 6850 UART używany jest bardzo rzadko. PPSSSS ((EECCHHOO--AADDII22111111)) ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _P_S_S _(_E_C_H_O_-_A_D_I_2_1_1_1_) _[_Y_/_n_/_?_]_)" Odpowiedz "y" tylko jeśli masz karty Orchid SW32, Cardinal DSP16 lub jakieś inne oparte na układzie PSS (AD1848 codec + kość ADSP-2115 DSP + kość Echo ESC614 ASIC). 1166 bbiitt ssaammpplliinngg ooppttiioonn ooff GGUUSS ((_n_o_t GGUUSS MMAAXX)) [[YY//nn//??]] _(_O_p_c_j_a _1_6_-_b_i_t_o_w_e_g_o _p_r_ó_b_k_o_w_a_n_i_a _w _G_U_S _(_n_i_e _d_o_t_y_c_z_y _G_U_S _M_A_X_) _[_Y_/_n_/_?_]_)" Odpowiedz "y" jeśli masz zainstalowaną 16-bitową kartę siostrzaną na swojej karcie GUS. Odpowiedz "n" jeśli masz kartę GUS MAX. Odpowiedź "y" przy tej opcji powoduje wyłączenie obsługi GUS MAX. GGUUSS MMAAXX ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _G_U_S _M_A_X _[_Y_/_n_/_?_]_)" Odpowiedz "y" tylko jeśli masz kartę GUS MAX. MMiiccrroossoofftt SSoouunndd SSyysstteemm ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _M_i_c_r_o_s_o_f_t _S_o_u_n_d _S_y_s_t_e_m _[_Y_/_n_/_?_]_)" Ponownie, pomyśl dobrze, zanim odpowiesz tutaj "y". Bezpiecznie jest wybrać "y" jeśli masz oryginalną kartę Windows Sound System wyprodukowaną przez Microsoft, lub kartę Aztech SG 16 Pro (lub NX16 Pro). Możesz również odpowiedzieć "y" jeśli twoja karta nie była wymieniona wcześniej w tym dokumencie. Przy kartach obsługiwanych przez VoxWare, przejrzyj instrukcje do konkretnej karty w pliku Readme.cards. Niektóre karty mają własną obsługę MSS i w ich przypadku włączenie tej opcji wywoła konflikty. EEnnssoonniiqq SSoouunnddssccaappee ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _k_a_r_t _E_n_s_o_n_i_q _S_o_u_n_d_s_c_a_p_e _[_Y_/_n_/_?_]_)" Odpowiedz "y" jeśli masz kartę dźwiękowoą opartą na układzie Ensoniq SoundScape. Takie karty produkowane są co najmniej przez Ensoniq, Spea i Reveal (Reveal robi także inne karty). MMeeddiiaaTTrriiXX AAuuddiiooTTrriiXX PPrroo ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _M_e_d_i_a_T_r_i_X _A_u_d_i_o_T_r_i_X _P_r_o _[_Y_/_n_/_?_]_)" Odpowiedz "y" jeśli masz kartę AudioTriX Pro. SSuuppppoorrtt ffoorr MMAADD1166 aanndd//oorr MMoozzaarrtt bbaasseedd ccaarrddss?? _(_O_b_s_ł_u_g_a _k_a_r_t _M_A_D_1_6 _i_/_l_u_b _o_p_a_r_t_y_c_h _n_a _u_k_ł_a_d_z_i_e _M_o_z_a_r_t_?_)" Odpowiedz "y" jeśli twoja karta ma układ interfejsu audio Mozart (OAK OTI-601) lub MAD16 (OPTi 82C928 or 82C929). Owe układy są obecnie dość popularne, więc możliwe jest, że wiele kart no-name ma jeden z nich. Dodatkowo, układ MAD16 montowany jest w niektórych kartach znanych producentów takich jak Turtle Beach (Tropez), Reveal (kilka modeli) i Diamond (ostatnie). SSuuppppoorrtt ffoorr CCrryyssttaall CCSS44223322 bbaasseedd ((PPnnPP)) ccaarrddss [[YY//nn//??]] _(_O_b_s_ł_u_g_a _k_a_r_t _P_n_p _o_p_a_r_t_y_c_h _n_a _C_r_y_s_t_a_l _C_S_4_2_3_2 _[_Y_/_n_/_?_]_)" Odpowiedz "y" jeśli masz kartę opartą na układzie Crystal CS4232. SSuuppppoorrtt ffoorr TTuurrttllee BBeeaacchh WWaavvee FFrroonntt ((MMaauuii,, TTrrooppeezz)) ssyynntthheessiizzeerrss [Y/n/?] _(_O_b_s_ł_u_g_a _T_u_r_t_l_e _B_e_a_c_h _W_a_v_e _F_r_o_n_t _(_M_a_u_i_, _T_r_o_p_e_z_)_)" Odpowiedz "y" jeśli masz jedną z tych kart. SSoouunnddBBllaasstteerr PPrroo ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _S_o_u_n_d_B_l_a_s_t_e_r _P_r_o _[_Y_/_n_/_?_]" Włącz tę opcję jeśli masz kartę SoundBlaster Pro lub SoundBlaster 16. Włącz ją również jeśli masz jakikolwiek klon SoundBlaster Pro. Odpowiedź "n" oszczędza trochę pamięci, ale "y" to bezpieczniejsze wyjście. SSoouunnddBBllaasstteerr 1166 ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _S_o_u_n_d_B_l_a_s_t_e_r _1_6 _[_Y_/_n_/_?_]" Włącz jeśli masz kartę SoundBlaster 16 (również AWE32). AAuuddiioo EExxcceell DDSSPP 1166 iinniittiiaalliizzaattiioonn ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _i_n_i_c_j_a_l_i_z_a_c_j_i _A_u_d_i_o _E_x_c_e_l _D_S_P _1_6 _[_Y_/_n_/_?_]_)" Włącz tę opcję, jeśli masz kartę Audio Excel DSP16. Więcej informacji znajdziesz w pliku Readme.aedsp16. Następnie program konfiguracyjny zadaje kilka pytań o serwisy wyższego poziomu. Zalecana jest odpowiedź "y" na każde z tych pytań. Odpowiadaj "n" tylko wówczas, gdy jesteś pewien, że nie będziesz danej opcji potrzebować. //ddeevv//ddsspp aanndd //ddeevv//aauuddiioo ssuuppppoorrtt ((uussuuaallllyy rreeqquuiirreedd)) [[YY//nn//??]] _(_O_b_s_ł_u_g_a _/_d_e_v_/_d_s_p _i _/_d_e_v_/_a_u_d_i_o _(_z_a_z_w_y_c_z_a_j _w_y_m_a_g_a_n_a_) _[_Y_/_n_/_?_]_)" Odpowiedź "n" wyłącza /dev/dsp i /dev/audio, urządzenia konwerterów A/D i D/A. Odpowiedz "y". MMIIDDII iinntteerrffaaccee ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _i_n_t_e_r_f_e_j_s_u _M_I_D_I _[_Y_/_n_/_?_]_)" Odpowiedź "n" wyłącza urządzenia /dev/midixx i dostęp do jakichkolwiej portów MIDI wykorzystujących /dev/sequencer i /dev/music. Opcja ta również wpływa na wszystkie urządzenia kompatybilne z MPU-401 i/lub General MIDI. FFMM ssyynntthheessiizzeerr ((YYMM33881122//OOPPLL--33)) ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _s_y_n_t_e_z_a_t_o_r_a _F_M _(_Y_M_3_8_1_2_/_O_P_L_-_3_) _[_Y_/_n_/_?_]_)" Odpowiedz na to pytanie "y". //ddeevv//sseeqquueenncceerr ssuuppppoorrtt [[YY//nn//??]] _(_O_b_s_ł_u_g_a _/_d_e_v_/_s_e_q_u_e_n_c_e_r _[_Y_/_n_/_?_]_)" Odpowiedź "n" wyłącza /dev/sequencer i /dev/music DDoo yyoouu wwaanntt ssuuppppoorrtt ffoorr tthhee mmiixxeerr ooff SSGG NNXX PPrroo ?? _(_C_z_y _c_h_c_e_s_z _o_b_s_ł_u_g_ę _m_i_x_e_r_a _S_G _N_X _P_r_o_?_)" Odpowiedz "y" jeśli masz kartę dźwiękową Sound Galaxy NX Pro i życzysz sobie mieć obsługę jej rozszerzonych funkcji miksowania. DDoo yyoouu wwaanntt ssuuppppoorrtt ffoorr tthhee MMVV JJaazzzz1166 ((PPrrooSSoonniicc eettcc..)) ?? _(_C_z_y _c_h_c_e_s_z _o_b_s_ł_u_g_ę _M_V _J_a_z_z_1_6 _(_P_r_o_S_o_n_i_c _i_t_d_._)_?_)" Odpowiedz "y" jeśli masz kartę dźwiękową MV Jazz16. DDoo yyoouu hhaavvee aa LLooggiitteecchh SSoouunnddMMaann GGaammeess [[YY//nn//??]] _(_C_z_y _m_a_s_z _k_a_r_t_ę _L_o_g_i_t_e_c_h _S_o_u_n_d_M_a_n _G_a_m_e_s_[_Y_/_n_/_?_]_) " Odpowiedz "y" jeśli masz kartę dźwiękową Logitech SoundMan Games. Po zadaniu powyższych pytań program konfiguracyjny pyta o szczegółowe informacje dotyczące konfiguracji karty. Zazwyczaj chodzi o adresy I/O i parametry IRQ i DMA. Przy niektórych kartach program pyta o pewne pliki, które mają być użyte w trakcie instalacji karty. Są one używane przez karty posiadające układ DSP lub mikroprocesor, który musi być zainicjalizowany poprzez załadowanie pliku programu (mikrokodu) do pamięci karty. W niektórych przypadkach plik mikrokodu dopisywany jest do pliku .h przez program konfiguracyjny, a następnie włączany do sterownika w trakcie kompilacji. Przeczytaj informacje dotyczące twojej karty w pliku Readme.cards. Na końcu zostaniesz zapytany: The sound driver is now configured. Save copy of this configuration to /etc/soundconf [Y/n/?] (Sterownik dźwięku jest teraz skonfigurowany. Zapisać kopię tej konfiguracji do pliku /etc/soundconf [Y/n/?]) Najczęściej powinieneś wpisać "y" abyś miał możliwość wykorzystanie tej samej konfiguracji sterownika dźwięku następnym razem przy kompilacji jądra. Jeśli uaktualniasz sterownik dźwięku do nowszej wersji, upewnij się, że pliki /usr/include/sys/soundcard.h i /usr/include/sys/ultrasound.h są dowiązaniami symbolicznymi do odpowiadających im plików w katalogu /usr/include/linux, lub że po prostu zawierają wiersze odpowiednio #include <linux/soundcard.h> i #include <linux/ultrasound.h>. Jesteś teraz gotowy do kompilacji i instalacji nowego jądra. 44..33.. TTwwoorrzzeenniiee PPlliikkóóww UUrrzząąddzzeeńń Dla poprawnego działania urządzeń dźwiękowych, należy stworzyć dla nich pliki urządzeń. Zazwyczaj tworzone są one automatycznie podczas instalacji systemu Linux. Można przeprowadzić szybki test przy użyciu poniższych poleceń. Jeśli wynik jest zgodny z poniższym (różne będą daty utworzenia plików), prawie na pewno pliki urządzeń dźwiękowych są ustawione poprawnie. % ls -l /dev/sdnstat crw-rw-rw- 1 root root 14, 6 Apr 25 1995 /dev/sndstat Pamiętaj, że samo posiadanie odpowiednich plików urządzeń niczego jeszcze nie gwarantuje. Sterownik jądra musi być załadowany lub wkompilowany zanim urządzenia zaczną pracować (więcej o tym później). W sporadycznych przypadkach, jeśli przekonany jesteś, że pliki urządzeń są niepoprawne, możesz je utworzyć ponownie przy użyciu krótkiego skryptu powłoki zamieszczonego na końcu pliku Readme.linux w katalogu /usr/src/linux/drivers/sound. Powinieneś powinieneś uruchomić ten skrypt jako root. Dodatkowo, większość dystrybucji Linuxa zawiera skrypt /dev/MAKEDEV, który można wykorzystać do tych celów. Jeśli używasz sterownika dźwięku do głośnika PC, przeczytaj dokumentację dołączoną do pakietu aby ustalić, czy konieczne jest stworzenie jakichś plików urządzeń. 44..44.. PPrrzzeełłaaddoowwyywwaanniiee LLiinnuuxxaa ii TTeessttoowwaanniiee IInnssttaallaaccjjii Powinieneś być teraz gotów do przeładowania nowego jądra i sprawdzenia sterowników dźwięku. Postąp zgodnie ze swoją zwykłą procedurą instalacji i przeładowywania jądra (oczywiście trzymaj poprzednie jądro gdzieś pod ręką na wypadek kłopotów). Sound initialization started <Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5 <Sound Blaster 16> at 0x330 irq 5 dma 0 <Yamaha OPL3 FM> at 0x388 Sound initialization complete Opis powinien pasować do typu twojej karty dźwiękowej i ustawień przełączników (jeśli takowe są). Pamiętaj, że powyższy komunikat nie jest wyświetlany, jeśli używasz ładowalnego modułu jądra (chyba, że to włączysz, np. tak: "insmod sound trace_init=1"). Jeśli sterownik dźwięku jest wkompilowany w jądro, powinny się pojawić komunikaty "Sound initialization started" ("Inicjalizacja dźwięku rozpoczęta") oraz "Sound initialization complete" ("Inicjalizacja dźwięku zakończona"). W przeciwnym wypadku, jądro nie zawiera sterownika dźwięku. Powinieneś wówczas sprawdzić, czy rzeczywiście zainstalowane zostało nowe jądro, które skompilowałeś po włączeniu obsługi dźwięku. Jeśli między napisami "Sound initialization started" i "Sound initialization complete" nie pojawią się żadne wiersze, oznacza to, że nie wykryte zostały żadne urządzenia dźwiękowe. Najprawdopodobniej nie masz włączonego odpowiedniego sterownika, karta nie jest obsługiwana, podałeś zły port I/O lub masz kartę PnP, która nie została skonfigurowana. W trakcie ładowania sterownik może również wyświetlać komunikaty o błędach i ostrzeżenia. Obserwuj je podczas ładowania sterownika po raz pierwszy po kompilacji. Następnie powinieneś sprawdzić plik urządzeń /dev/sndstat. Odczytanie statusu tego pliku powinno udzielić ci dodatkowych informacji o tym, czy sterownik dźwięku poprawnie rozpoczął pracę. Przykładowy wynik powinien wyglądać mniej więce tak: % cat /dev/sndstat Sound Driver:3.5.4-960630 (Sat Jan 4 23:56:57 EST 1997 root, Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586) Kernel: Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586 Config options: 0 Installed drivers: Type 1: OPL-2/OPL-3 FM Type 2: Sound Blaster Type 7: SB MPU-401 Card config: Sound Blaster at 0x220 irq 5 drq 1,5 SB MPU-401 at 0x330 irq 5 drq 0 OPL-2/OPL-3 FM at 0x388 drq 0 Audio devices: 0: Sound Blaster 16 (4.13) Synth devices: 0: Yamaha OPL-3 Midi devices: 0: Sound Blaster 16 Timers: 0: System clock Mixers: 0: Sound Blaster Powyższe polecenie może wywołać kilka komunikatów błędu. "No such file or directory" ("Nie ma takiego pliku lub katalogu") oznacza, że musisz stworzyć pliki urządzeń (patrz rozdział 4.3). "No such device" ("Nie ma takiego urządzenia") oznacza, że sterownik dźwięku nie jest dołączony lub załadowany do jądra. Cofnij się do rozdziału 4.2 aby to poprawić. Jeśli wiersze w sekcji "Card config:" ("Konfiguracja karty:") /dev/sndstat są wyświetlone w nawiasach (jak np. "(SoundBlaster at 0x220 irq 5 drq 1,5)"), oznacza to, że urządzenie to zostało skonfigurowane, ale nie wykryte. Powinieneś teraz móc odtworzyć prosty plik dźwiękowy. Zdobądź przykładowy plik dźwiękowy i wyślij go do urządzenia dźwiękowego, tzn. % cat endoftheworld >/dev/dsp % cat crash.au >/dev/audio (Upewnij się, że nie pomijasz ">" w powyższym poleceniu). Pamiętaj jednak, że używanie cat nie jest, ogólnie rzecz biorąc, poprawną metodą odtwarzania plików dźwiękowych, to tylko szybki test. Na pewno przyda ci się stosowny program odtwarzający dźwięk (opisane później), który zrobi to lepiej. Polecenie to zadziała tylko jeśli na liście urządzeń dźwiękowych w pliku /dev/sndstat masz co najmniej jedno urządzenie. Jeśli część wymieniająca urządzenia dźwiękowe jest pusta, powinieneś sprawdzić, dlaczego urządzenie nie zostało wykryte. Jeśli powyższe polecenie zwróci "I/O error" ("Błąd wejścia/wyjścia"), powinieneś zerknąć na końcówkę komunikatów jądra przy użyciu polecenia "dmesg". Prawdopodobne jest, że znajdziesz tam komunikat o błędzie "Sound: DMA (output) timed out - IRQ/DRQ config error?" (Dźwięk: DMA (wyjście) przekroczenie limitu czasowego - błąd konfiguracji IRQ/DRQ?"). Powyższy komunikat oznacza, że sterownik nie uzyskał oczekiwanego przerwania od karty dźwiękowej. W większości przypadków oznacza to, że IRQ lub kanał DMA ustawione w sterowniku nie działają. Najlepszą metodą ich uruchomienia jest spróbowanie wszystkich możliwych kanałów DMA i numerów IRQ obsługiwanych przez urządzenie. Inną możliwą przyczyną jest fakt, że urządzenie nie jest kompatybilne z urządzeniem, dla którego skonfigurowany jest sterownik dźwięku. Najczęściej tak jest np. gdy karta teoretycznie "kompatybilna z SoundBlaster (Pro/16)" nie działa ze sterownikiem SoundBlaster. W tym przypadku powinieneś spróbować dowiedzieć się, z jakim urządzeniem twoja karta jest kompatybilna (np. wysyłając pytanie do grupy dyskusyjnej comp.os.linux.hardware). Kilka próbnych plików dźwiękowych znaleźć można pod adresem <ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z> Możesz teraz sprawdzić nagrywanie dźwięku. Jeśli masz możliwość nagrywania, przeprowadź szybki test używając poleceń typu: # nagranie 4 sekund dźwięku z mikrofonu EDT% dd bs=8k count=4 </dev/audio >sample.au 4+0 records in 4+0 records out # odtworzenie dźwięku % cat sample.au >/dev/audio Oczywiście, aby to zadziałało, musisz mieć mikrofon podłączony do karty dźwiękowej i powinieneś do niego coś powiedzieć. Możesz również potrzebować program miksujący aby ustawić mikrofon jako urządzenie wejściowe i dostosować poziom nagrywania. Jeśli przejdziesz przez te testy, możesz być dosyć pewny, że sprzęt i oprogramowanie konwersji dźwięku D/A i A/D działają poprawnie. Jeśli napotkasz problemy, zerknij do następnego rozdziału tego dokumentu. 44..55.. UUssuuwwaanniiee bbłłęęddóóww Jeśli nadal masz problemy mimo postąpienia zgodnie z instrukcjami w tym dokumencie, oto kilka rzeczy, które powinieneś sprawdzić. Testy są uszeregowane względem rosnącego stopnia złożoności. Jeśli test się nie powiedzie, usuń problem zanim przejdziesz do następnego etapu. 44..55..11.. KKrrookk 11:: UUppeewwnniijj ssiięę,, żżee rrzzeecczzyywwiiśścciiee uurruucchhoommiiłłeeśś jjąąddrroo,, kkttóórree sskkoommppiilloowwaałłeeśś.. Możesz zerknąć na datę i czas utworzenia pliku jądra aby sprawdzić, czy uruchomione jest to, w które wkompilowałeś obsługę dźwięku. Możesz to zrobić za pomocą polecenia uname: % uname -a Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386 lub wyświetlając zawartość pliku /proc/version % cat /proc/version Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996 Jeśli data i czas nie zgadzają się z momentem, w którym kompilowałeś jądro, uruchomione jest starsze jądro. Czy rzeczywiście przeładowałeś system? Jeśli używasz LILO, czy przeinstalowałeś je (zazwyczaj poprzez uruchomienie /etc/lilo/install)? Jeśli ładujesz system z dyskietki, czy stworzyłeś nową dyskietkę startową i użyłeś jej do załadowania systemu? 44..55..22.. KKrrookk 22:: UUppeewwnniijj ssiięę,, żżee sstteerroowwnniikkii ddźźwwiięękkuu wwkkoommppiilloowwaannee ssąą ww jjąąddrroo.. Najprostszą metodą jest sprawdzenie zawartości "/dev/sndstat", jak to opisano wcześniej. Jeśli zawartość nie jest taka, jakiej się spodziewamy, coś musiało pójść nie tak w trakcie konfigurowania lub kompilacji jądra. Rozpocznij ponownie proces instalacji, począwszy od konfiguracji i kompilacji jądra. 44..55..33.. KKrrookk 33:: CCzzyy jjąąddrroo wwyykkrryyłłoo kkaarrttęę ddźźwwiięękkoowwąą ww ttrraakkcciiee łłaaddoowwaanniiaa?? Upewnij się, że karta dźwiękowa została wykryta w trakcie przeładowywania systemu. Powinieneś zobaczyć komunikat ładowania. Jeśli komunikaty przewinęły się za szybko poza krawędź ekranu, możesz je zazwyczaj przywołać przy użyciu polecenia dmesg: % dmesg lub % tail /var/adm/messages Jeśli karta nie została znaleziona, coś poszło niepomyślnie. Upewnij się, że jest rzeczywiście zainstalowana. Jeśli karta pracuje pod DOS, możesz być dosyć pewny, że sprzęt działa poprawnie, więc najprawdopopdobniej jest jakiś problem z konfiguracją jądra. Albo wkompilowałeś zły typ karty lub złe parametry, albo twoja karta nie jest kompatybilna z żadnym ze sterowników dźwięku do jądra Linuxa. Jest także możliwe, że twoja karta dźwiękowa jest jednym z tych "kompatybilnych" modeli, które wymagają inicjalizacji przez sterownik pod DOS. Spróbuj załadować DOS, a następnie sterownik dostarczony przez producenta karty. Następnie załaduj Linuxa używająć miękkiego przeładowania przez Control-Alt-Delete. Upewnij się, że ustawienia portu I/O karty, DMA i IRQ są takie same, jak użyte pod DOS. Wskazówki na temat konfigurowania danego typu karty znajdziesz w pliku Readme.cards. Jeśli twoja karta dźwiękowa nie jest wymieniona w tym dokumencie, możliwe jest, że sterowniki Linuxa jej nie obsługują. Aby się skonsultować w tej sprawie, możesz sprawdzić kilka odnośników zamieszczonych na końcu tego dokumentu. 44..55..44.. KKrrookk 44:: CCzzyy mmoożżeesszz ppoobbiieerraaćć ddaannee zz uurrzząąddzzeenniiaa ddsspp?? Spróbuj odczytać coś z urządzenia /dev/audio przy użyciu programu dd wymienionego wcześniej w tym dokumencie. Polecenie powinno działać bezbłędnie. Jeśli nie działa, są szanse, że problem polega na konflikcie IRQ lub DMA lub niekompatybilności jakiegoś rodzaju sprzętu (urządzenie nie jest obsługiwane przez Linuxa lub sterownik jest skonfigurowany dla innego urządzenia) Daleka ewentualność to wadliwy sprzęt. Jeśli to możliwe, przetestuj kartę pod DOSem, aby się upewnić. 44..55..55.. JJeeśśllii WWsszzyyssttkkoo IInnnnee ZZaawwiieeddzziiee Jeśli nadal masz problemy, oto kilka ostatecznych sugestii, co możesz jeszcze sprawdzić: ˇ dokładnie przeczytaj ponownie ten dokument HOWTO ˇ przeczytaj dokumenty źródłowe, wymienione na końcu tego dokumentu, w szczególności strony WWW Hannu Savolainena i stosowne pliki Readme dołączone do kodów źródłowych jądra Linuxa ˇ wyślij pytanie do jednej z grup dyskusyjnych comp.os.linux lub innych (dobry wybór to comp.os.linux.hardware; z powodu dużego ruchu w tych grupach, dobrze jest umieszczać słowo "sound" ("dźwięk") w temacie wysyłanego artykułu, aby eksperci mogli łatwo to zauważyć) ˇ użycie przeszukiwarki WWW/Usenetu z inteligentinie dobranymi kryteriami przeszukiwania może szybko przynieść bardzo dobre wyniki. Jednym z takich wyjść jest <http://www.altavista.com>. ˇ spróbuj użyć najświeższe jądro Linuxa (ale jedynie w ostateczności, ostatnie jądra "rozwojowe" (development) mogą być niestabilne). ˇ wyślij pocztę do autora sterownika dźwięku ˇ wyślij pocztę do autora Sound HOWTO ˇ odpal emacsa i wpisz Esc-x doctor :-) 55.. PPrrooggrraammyy OObbssłłuugguujjąąccee DDźźwwiięękk Podaję tutaj przykładowe typy programów, które mogłyby ci się przydać, jeśli masz kartę dźwiękową pod Linuxem. Aby znaleźć więcej bieżących informacji, możesz sprawdzić Mapę Oprogramowania na Linuxa (Linux Software Map), archiwa internetowe i/lub pliki na krążku z dystrybucją Linuxa. Jako minimum, z pewnością będziesz potrzebować następujące programy obsługujące dźwięk: ˇ program do konwersji formatów plików dźwiękowych (np. Sox) ˇ program miksujący (mikser) (np. aumix lub xmix) ˇ odtwarzacz/rejestrator plików dźwiękowych (np. play lub wavplay) ˇ odtwarzacz plików MOD (np. tracker) ˇ odtwarzacz plików MIDI (np. playmidi) W przypadku większości z powyższych programów, istnieją zarówno wersje tekstowe, jak i wzbogacone o interfejs użytkownika. Istnieją również bardziej ezoteryczne programy (np. synteza i rozpoznawanie mowy), które mogłbyś zechcieć spróbować. 66.. OOddppoowwiieeddzzii NNaa CCzzęęssttoo ZZaaddaawwaannee PPyyttaanniiaa W tym rozdziale udzielono odpowiedzi na niektóre pytania spośród często zadawanych w pocztowych grupach dyskusyjnych i grupach Usenetu. Odpowiedzi na więcej pytań można również znaleźć na stronie WWW sterownika dźwięku OSS. 66..11.. CCzzyymm ssąą rróóżżnnee pplliikkii uurrzząąddzzeeńń ddźźwwiięękkoowwyycchh?? Są to najbardziej "typowe" nazwy plików urządzeń, niektóre dystrybucje używają nieco innych nazw. //ddeevv//aauuddiioo zazwyczaj dowiązanie do /dev/audio0 //ddeevv//aauuddiioo00 urządzenie dźwiękowe, kompatybilne ze stacjami roboczymi Sun (tylko częściowa implementacja, nie obsługuje interfejsu ioctl Sun, tylko kodowanie u-law) //ddeevv//aauuddiioo11 drugie urządzenie dźwiękowe (jeśli jest obsługiwane przez kartę dźwiękową lub jeśli masz więcej zainstaowanych kart niż jedną) //ddeevv//ddsspp zazwyczaj dowiązanie do /dev/dsp0 //ddeevv//ddsspp00 pierwsze urządzenie cyfrowego próbkowania //ddeevv//ddsspp11 drugie urządzenie cyfrowego próbkowania //ddeevv//mmiixxeerr zazwyczaj dowiązanie do /dev/mixer0 //ddeevv//mmiixxeerr00 pierwszy mikser dźwięku //ddeevv//mmiixxeerr11 drugi mikser dźwięku //ddeevv//mmuussiicc interfejs wysokiego poziomu sequencera //ddeevv//sseeqquueenncceerr niskopoziomowy dostęp do MIDI, FM, i GUS //ddeevv//sseeqquueenncceerr22 zazwyczaj dowiązanie do /dev/music //ddeevv//mmiiddii0000 pierwszy surowy port MIDI //ddeevv//mmiiddii0011 drugi surowy port MIDI //ddeevv//mmiiddii0022 trzeci surowy port MIDI //ddeevv//mmiiddii0033 czwarty surowy port MIDI //ddeevv//ssnnddssttaatt wyświetla status sterownika dźwięku jeśli przeczytany Sterownik głośnika PC udostępnia następujące urządzenia: //ddeevv//ppccaauuddiioo odpowiednik /dev/audio //ddeevv//ppccsspp odpowiednik /dev/dsp //ddeevv//ppccmmiixxeerr odpowiednik /dev/mixer 66..22.. JJaakk mmooggęę ooddttwwoorrzzyyćć pprróóbbkkęę ddźźwwiięękkoowwąą?? Pliki dźwiękowe stacji roboczych Sun (.au) można odtworzyć wysyłając je do urządzenia /dev/audio. Surowe próbki (pliki raw) można wysłać do /dev/dsp. Jednak zazwyczaj przyniesie to kiepskie efekty i lepiej jest używać program taki jak play, ponieważ rozpoznaje on większość typów plików i ustawia odpowiednią częstotliwość próbkowania i inne parametry na karcie. Programy takie jak wavplay lub vplay (w pakiecie snd-util) dadzą najlepsze rezultaty z plikami WAV. Jednakże nie rozpoznają one plików WAV skompresowanych metodą Microsoft ADPCM. Starsze wersje programu play (z pakietu Lsox) nie działają również zbyt dobrze z 16-bitowymi plikami WAV. Polecenie splay wchodzące w skład pakietu snd-util może być używane do odtwarzania większości plików dźwiękowych jeśli odpowiednie parametry podasz ręcznie w wierszu polecenia. 66..33.. JJaakk mmooggęę nnaaggrraaćć pprróóbbkkęę?? Odczyt /dev/audio lub /dev/dsp zwróci próbkowane dane, które można przekierować do pliku. Program taki jak vrec ułatwia kontrolowanie częstotliwości próbkowania, czas nagrania, itp. Może ci się również przydać programowy mikser do wybierania stosownego urządzenia wejściowego. 66..44.. CCzzyy mmooggęę mmiieećć wwiięęcceejj nniiżż jjeeddnnąą kkaarrttęę ddźźwwiięękkoowwąą?? Przy obecnym sterowniku dźwięku jest możliwe posiadanie kilku kart SoundBlaster, SoundBlaster/Pro, SoundBlaster16, MPU-401 lub MSS jednocześnie w tym samym komputerze. Instalacja dwóch SoundBlasterów jest możliwa, ale wymaga zdefiniowania makr SB2_BASE, SB2_IRQ, SB2_DMA oraz (w niektórych przypadkach) SB2_DMA2 przez ręczną edycję pliku local.h. Możliwe jest również posiadanie karty SoundBlaster jednocześnie z PAS16. Następujące sterowniki nie zezwalają na posiadanie wielokrotnych urządzeń: ˇ GUS (ograniczenie sterownika) ˇ MAD16 (ograniczenie sprzętowe) ˇ AudioTrix Pro (ograniczenie sprzętowe) ˇ CS4232 (ograniczenie sprzętowe) 66..55.. BBłłąądd uurrzząąddzzeeńń ddźźwwiięękkoowwyycchh ""NNoo ssuucchh ffiillee oorr ddiirreeccttoorryy"" _(_B_ł_ą_d_: _N_i_e _z_n_a_l_e_z_i_o_n_o _p_l_i_k_u _l_u_b _k_a_t_a_l_o_g_u_) Musisz stworzyć pliki urządzeń dźwiękowych. Przeczytaj rozdział o tworzeniu plików urządzeń. Jeśli masz pliki urządzeń, upewnij się, że mają poprawne liczby główną i poboczną (niektóre starsze dystrybucje Linuxa na CD-ROM nie tworzą odpowiednich plików urządzeń przy instalacji). 66..66.. BBłłąądd uurrzząąddzzeeńń ddźźwwiięękkoowwyycchh ""NNoo ssuucchh ddeevviiccee"" _(_B_ł_ą_d_: _N_i_e _z_n_a_l_e_z_i_o_n_o _u_r_z_ą_d_z_e_n_i_a_) Nie przeładowałeś jądra zawierającego sterownik dźwięku lub adres I/O nie odpowiada twojemu sprzętowi. Sprawdź, czy uruchomione jest świeżo skompilowane jądro i upewnij się, że ustawienia wpisane w trakcie konfigurowania sterownika odpowiadają charakterystyce sprzętu. 66..77.. BBłłąądd uurrzząąddzzeeńń ddźźwwiięękkoowwyycchh ""NNoo ssppaaccee lleefftt oonn ddeevviiccee"" _(_B_ł_ą_d_: _B_r_a_k _w_o_l_n_e_j _p_r_z_e_s_t_r_z_e_n_i _n_a _u_r_z_ą_d_z_e_n_i_u_) Może się to zdarzyć jeśli próbowałeś nagrywać dane na /dev/audio lub /dev/dsp bez stworzenia niezbędnego pliku urządzeń. Urządzenie dźwiękowe jest teraz zwykłym plikim, który wypełnił twoją partycję. Powinieneś uruchomić skrypt opisany w rozdziale _T_w_o_r_z_e_n_i_e _P_l_i_k_ó_w _U_r_z_ą_d_z_e_ń niniejszego dokumentu. Może się to również przytrafiać przy jądrach Linuxa 2.0 i późniejszych jeśli nie ma wystarczającej ilości wolnej pamięci RAM w momencie, gdy zaczynamy używać urządzenie. Sterownik dźwięku wymaga co najmniej dwóch stron (8k) fizycznie ciągłej przestrzeni RAM dla każdego kanału DMA. Zdarza się to czasami na komputerach z mniej niż 16M pamięci RAM, lub działających przez bardzo długi czas. Możliwe jest zwolnienie nieco pamięci RAM przez skompilowanie i uruchomienie następującego programu w języku C przed ponowną próbą skorzystania z urządzenia. main() { int i; char mem[500000]; for (i = 0; i < 500000; i++) mem[i] = 0; exit(0); } 66..88.. BBłłąądd uurrzząąddzzeeńń ddźźwwiięękkoowwyycchh ""DDeevviiccee bbuussyy"" _(_B_ł_ą_d_: _U_r_z_ą_d_z_e_n_i_e _z_a_j_ę_t_e_) Tylko jeden proces może korzystać z danego urządzenienia dźwiękowego w danym momencie. Najprawdopodobniej jakiś inny proces korzysta z urządzenia, z którym mamy problem. Jedną z metod sprawdzenia tego jest użycie polecenia fuser: % fuser -v /dev/dsp /dev/dsp: USER PID ACCESS COMMAND tranter 265 f.... tracker W powyższym przykładzie, polecenie fuser wykazało, że proces 265 korzysta z urządzenia. Usunięcie procesu lub poczekanie aż się skończy umożliwi ponwne korzystanie z urządzenia. 66..99.. NNaaddaall ppoojjaawwiiaajjąą ssiięę bbłłęęddyy ""uurrzząąddzzeenniiee zzaajjęęttee""!! Zdaniem Briana Gough, przy kartach SoundBlaster używających 1 kanału DMA istnieje potencjalny konflikt ze sterownikiem napędów taśmowych QIC-02, który również korzysta z DMA 1, co wywołuje błędy "device busy" (urządzenie zajęte). Zgodnie z FTAPE-HOWTO sterownik QIC-02 nie jest niezbędny aby używać FTAPE; wymagany jest jedynie sterownik QIC-117. Przekonfigurowanie jądra aby używało sterownika QIC-117 zamiast QIC-02 umożliwi koegzystencję FTAPE i sterownika dźwięku. 66..1100.. NNiieeppeełłnnee ooddttwwaarrzzaanniiee pplliikkuu zz ddźźwwiięękkiieemm ccyyffrroowwyymm Symptom polega zawyczaj na tym, że próbka jest odgrywana przez mniej więcej sekundę, a następnie zatrzymuje się lub wyświetlany jest komunikat "missing IRQ" (brak IRQ) lub "DMA timeout" (przekroczenie limitu czasowego DMA). Najprawdopodobniej masz niepoprawnie ustawione parametry IRQ i DMA. Sprawdź, czy konfiguracja jądra odpowiada ustawieniom na przełącznikach karty i że nie kłócą się one z jakąś inną kartą. Innym objawem są próbki dźwiękowe, które się "zapętlają". Jest to zazwyczaj spowodowane konfliktem IRQ. 66..1111.. WW ttrraakkcciiee ooddttwwaarrzzaanniiaa pplliikkóóww MMOODD ppoojjaawwiiaajjąą ssiięę pprrzzeerrwwyy Odtwarzanie plików MOD wymaga dość znacznej pracy procesora. Być może masz zbyt wiele działających procesów lub twój komputer jest zbyt wolny, aby odtwarzać w czasie rzeczywistym. Masz następujące możliwości: ˇ spróbuj odtwarzać je przy niższej częstotliwości próbkowania lub w trybie monofonicznym ˇ wyeliminuj inne procesy ˇ kup szybszy komputer ˇ kup silniejszą kartę dźwiękową (np. Gravis UltraSound) Jeśli masz kartę Gravis UltraSound, powinieneś używać jednego z programów do odtwarzania plików MOD, napisanych specjalnie dla karty GUS (np. gmof). 66..1122.. BBłłęęddyy pprrzzyy kkoommppiillaaccjjii pprrooggrraammóóww ddźźwwiięękkoowwyycchh Wersja 1.0c i wcześniejsze sterownika dźwięku wykorzystywały inny i niekompatybilny schemat ioctl(). Zdobądź nowsze kody źródłowe lub nanieś niezbędne poprawki aby przystosować dany program do nowego sterownika dźwięku. Więcej szczegółów znajdziesz w pliku Readme sterownika dźwięku. Upewnij się również, że używasz ostatnią wersję soundcard.h i ultrasound.h przy kompilacji programów. Zerknij na wskazówki instalacyjne na początku tego tekstu. 66..1133.. SSEEGGVV pprrzzyy uurruucchhaammiiaanniiuu pprrooggrraammóóww ddźźwwiięękkoowwyycchh,, kkttóórree wwcczzeeśśnniieejj ddzziiaałłaałłyy Jest to prawdopodobnie taki sam problem, jaki opisano w poprzednim pytaniu. 66..1144.. JJaakkiiee zznnaannee bbłłęęddyy lluubb ooggrraanniicczzeenniiaa mmaa sstteerroowwnniikk ddźźwwiięękkuu?? Zobacz pliki Readme i CHANGELOG dostarczone z kodem źródłowym sterownika dźwięku do jądra. 66..1155.. GGddzziiee zznnaajjddęę ooppiiss ooddwwoołłaańń iiooccttll(()) sstteerroowwnniikkaa ddźźwwiięękkuu?? Są one częściowo opisane w _H_a_c_k_e_r_'_s _G_u_i_d_e _t_o _V_o_x_W_a_r_e _(_P_o_d_r_ę_c_z_n_i_k _H_a_c_k_e_r_a _d_o _V_o_x_W_a_r_e_), obecnie dostępny w formie dokumentu draft. Ostatnia wersja to draft 2 i można ją znaleźć w <ftp://nic.funet.fi/pub/OS/Linux/ALPHA/sound>. Pamiętaj, że ten katalog jest "ukryty" i nie pojawia się w liście katalogów. Jeśli wejdziesz do tego katalogu i użyjesz polecenia FTP "dir", pliki tam _b_ę_d_ą. W trakcie pisania tego dokumentu nowa dokumentacja pojawiła się na stronie WWW firmy 4Front Technologies. Innym źródłem informacji jest Przewodnik po Multimediach w Linuxie, opisany w rozdziale _Ź_r_ó_d_ł_a _I_n_f_o_r_m_a_c_j_i. 66..1166.. JJaakkii pprroocceessoorr jjeesstt kkoonniieecczznnyy ddoo ooddttwwaarrzzaanniiaa lluubb nnaaggrryywwaanniiaa bbeezz pprrzzeessttoojjóóww?? Nie ma odpowiedzi na to pytanie, ponieważ zależy to od następujących czynników: ˇ czy używane jest próbkowanie PCM lub synteza FM ˇ częstotliwość próbkowania i rozmiar próbki ˇ który program jest używany do nagrywania bądź odtwarzania ˇ urządzenie karty dźwiękowej ˇ przepustowość dysku, szybkość zegara procesora, rozmiar pamięci podręcznej, itd. Ogólnie rzecz biorąc, każdy komputer 386 powinien z łatwością być w stanie odtwarzać próbki lub muzykę powstałą przez syntezę FM na 8-bitowej karcie. Jednakże odtwarzanie plików MOD wymaga dość dużej pracy procesora. Niektóre eksperymentalne pomiary wykazały, że odtwarzanie przy częstotliwości 44kHz wymaga ponad 40% prędkości 486/50 i komputer 386/25 będzie miał już kłopoty z próbkami powyżej 22kHz (takie są na 8-bitowych kartach, takich jak SoundBlaster). Karty takie jak Gravis UltraSound przeprowadzają więcej operacji sprzętowo i odciążają procesor. Powyższe stwierdzenia są prawdziwe przy zakłożeniu, że komputer nie prowadzi żadnych działań obciążających procesor. Dokonywanie konwersji plików dźwiękowych lub dodawanie efektów przy użyciu programów narządziowych jak np. sox jest również szybsze jeśli masz koprocesor matematyczny (lub procesor z wbudowanym FPU). Sterownik jądra sam w sobie nie wykonuje jednak żadnych obliczeń zmiennoprzecinkowych. 66..1177.. PPrroobblleemmyy zz kkaarrttąą PPAASS1166 ii kkoonnttrroolleerreemm SSCCSSII AAddaapptteecc 11554422 SSCCSSII (następujące wyjaśnienie udostępnił seeker@indirect.com) Linux rozpoznaje 1542 jedynie pod adresem 330 (domyślnie) lub 334, a PAS zezwala na emulację MPU-401 jedynie pod adresem 330. Nawet jeśli wyłączysz MPU-401 programowo, coś nadal chce się kłócić z 1542, jeśli jest on pod preferowanym adresem domyślnym. Przełączenie 1542 pod adres 334 wszystkich uszczęśliwi. Dodatkowo, zarówno 1542, jak i PAS-16 korzystają z 16-bitowego DMA, więc jeśli próbkujesz przy 16 bitach i 44kHz w stereo i zapisujesz plik na dysku SCSI podczepionym pod 1542, jesteś o krok od kłopotów. DMA zachodzą na siebie i nie ma wystarczająco dużo czasu na odświeżenie RAM, więc dostajesz okrutny komunikat ``PARITY ERROR - SYSTEM HALTED'' (BŁĄD PARZYSTOŚCI - SYSTEM ZAWIESZONY), bez jakichkolwiek wskazówek, jak do tego doszło. Tym gorzej, że kilku innych producentów napędów QIC-117 zaleca ustawianie czasu włączania/wyłączania magistrali w taki sposób, że 1542 pozostaje włączony nawet dłużej niż zwykle. Zdobądź program SCSISEL.EXE z BBSu firmy Adaptec lub kilku innych miejsc w Internecie i zmniejszaj czas BUS ON lub zwiększaj BUS OFF dopóki problem nie zniknie, następnie ustaw je jeszcze ździebko dalej. SCISEL zmienia ustawienia EEPROM, więc jest to bardziej trwałe niż poprawka w wierszu sterownika pod DOS w CONFIG.SYS i będzie działać jeśi załadujesz bezpośrednio Linuxa (nie jest tak przy poprawce w DOSie). Następny problem z głowy. Ostatni problem - starsze układy Symphony drastycznie zmniejszały czas cykli I/O aby przyspieszyć dostęp do magistrali. Żadna karta spośród różnych, którymi się bawiłem nie miała _ż_a_d_n_y_c_h problemów ze zmniejszonym czasem, za wyjątkiem PAS-16. BBS firmy Media Vision udostępnia SYMPFIX.EXE, który ma usuwać problem przez zmianę bitu diagnostycznego w kontrolerze magistrali Symphony, ale nie jest to wystarczająca gwarancja. Mogą być konieczne: ˇ spowodowanie, aby sprzedawca płyty głównej wymienił starszą wersję układu magistrali ˇ wymiana płyty głównej, lub ˇ kupno innego typu karty dźwiękowej Firma Young Microsystems uzupełnia płyty główne, które importuje, za mniej więcej $30 (US); inni producenci mogą też to robić jeśli jesteś w stanie dociec, kto sprowadził lub wyprodukował płytę główną (życzę szczęścia). Problem tkwi w układzie interfejsu magistrali ProAudio, o ile mi wiadomo; _n_i_k_t nie kupuje karty dźwiękowej za $120 żeby zaraz wetknąć ją w 6MHz AT. Większość z nich działa znakomicie na komputerach 25-40MHz 386/486 i powinna być w stanie obsłużyć _c_o _n_a_j_m_n_i_e_j 12MHz magistralę, o ile układy są poprawnie zaprojektowane. Pierwszy problem zależy od układów użytych na płycie głównej, prędkości magistrali i innych ustawień BIOS, oraz fazy księżyca. Drugi problem zależy od ustawienia opcji odświeżania (ukryte lub synchroniczne), prędkości DMA 1542 i (być może) prędkości I/O magistrali. Trzeci można wykryć dzwoniąc do Media Vision i pytając, który rodzaj kości Symphony jest niekompatybilny. Bądź jednak ostrzeżony - 3 z 4 techników, z którymi rozmawiałem miało uszkodzenie mózgu. Byłbym bardzo ostrożny zanim bym uwierzył w _c_o_k_o_l_w_i_e_k, co powiedzieli o czyimś sprzęcie, ponieważ nawet swojego nie znają za dobrze. 66..1188.. CCzzyy jjeesstt mmoożżlliiwwee jjeeddnnoocczzeessnnee nnaaggrryywwaanniiee ii ooddttwwaarrzzaanniiee pprróóbbeekk?? Z powodu ograniczeń sprzętowych, nie jest to możliwe na większości kart dźwiękowych. Niektóre nowsze karty to umożliwiają. Więcej informacji znajdziesz w rozdziale o "trybie dwukierunkowym" w _P_o_d_r_ę_c_z_n_i_k_u _H_a_c_k_e_r_a _d_o _V_o_x_W_a_r_e. 66..1199.. MMóójj SSBB1166 jjeesstt uussttaawwiioonnyy nnaa IIRRQQ 22,, aallee ccoonnffiigguurree nniiee ppoozzwwaallaa uussttaawwiićć tteejj wwaarrttoośśccii.. Na '286 i starszych komputerach, przerwanie IRQ 2 jest przeniesione do drugiego kontrolera przerwań. Jest ono równoważne IRQ 9. 66..2200.. CCzzyy SSoouunnddBBllaasstteerr AAWWEE3322 lluubb SSoouunnddBBllaasstteerr1166 AASSPP ssąą oobbssłłuuggiiwwaannee?? Dawniej, firma Creative Labs nie chciała udostępniać informacji dla programistów o tych kartach. Zmienili jednak swą politykę i sterownik do AWE wchodzi obecnie w skład sterowników w jądrach Linuxa 2.1.x. 66..2211.. JJeeśśllii uurruucchhoommiięę LLiinnuuxxaa,, ppoo cczzyymm zzaałłaadduujjee DDOOSS,, ddoossttaajjęę bbłłęęddyy ii//lluubb pprrooggrraammyy ddźźwwiięękkoowwee ddzziiaałłaajjąą nniieeppoopprraawwnniiee.. Zdarza się to po miękkim przełądowaniu DOS. Czasami komunikat o błędzie myląco odnosi się do rzekomego błędu w pliku CONFIG.SYS. Większość obecnych kart dźwiękowych ma programowo konfigurowalne ustawienia IRQ i DMA. Jeśli używasz inne ustawienia na Linuxie i MS- DOS/Windows, możesz napotkać problemy. Niektóre karty dźwiękowe nie przyjmują nowych ustawień bez całkowitego przeładowania (wyłączenie zasilania lub wciśnięcie przycisku reset). Szybkim rozwiązaniem tego problemu jest pełne przeładowanie komputera przy użyciu przycisku reset lub przez wyłączenie i włączenie zasilania, a nie przeładowanie miękkie (np. przez Ctrl-Alt-Del). Poprawne rozwiązanie upewnienie się, że pod MS-DOS i Linuxem używane są te same ustawienia (lub nie używaj DOS :-). 66..2222.. PPrroobblleemmyy zz uurruucchhaammiiaanniieemm ggrryy DDOOOOMM ppoodd LLiinnuuxxeemm Użytkownikom linuxowej wersji gry DOOM firmy ID software mogą się te uwagi przydać. Aby uzyskać poprawny dźwięk wyjściowy, potrzebujesz sterownik dźwięku w wersji 2.90 lub późniejszej; ma on obsługę "trybu DOOM" w czasie rzeczywistym. Próbki dźwiękowe są 16-bitowe. Jeśli masz kartę 8-bitową, możesz nadal usłyszeć dźwięk przy użyciu jednego z kilku programów dostępnych w <ftp://sunsite.unc/edu/pub/Linux/games/doom>. Jeśli gra DOOM działa wolno na twoim komputerze, wyłączenie dźwięku (przez zmianę nazwy pliku sndserver) może ją przyspieszyć. Domyślnie DOOM nie obsługuje dźwięku (jak w wersji na DOS). Program musserver dodaje obsługę dźwięku do DOOMa pod Linuxem. Możesz go znaleźć pod adresem <ftp://pandora.st.hmc.edu/pub/linux/musserver.tgz>. (Ostatnie przełomowe wieści: zdaje się, że sterownik dźwięku do gry DOOM nie chce działać z jądrami 2.0.x. Informuje o błędzie związanym z /dev/sequencer.) 66..2233.. JJaakk mmooggęę zzrreedduukkoowwaaćć sszzuummyy zzbbiieerraannee pprrzzeezz mmoojjąą kkaarrttęę ddźźwwiięękkoowwąą?? Użycie dobrej jakości ekranowanych kabli i próbowanie karty w różnych slotach może pomóc w redukowaniu poziomu szumów. Jeśli karta dźwiękowa ma regulator głośności, możesz spróbować jego różne ustawienia (maksymalne jest prawdopodobnie najlepsze). Użycie programowego miksera pozwala ci się upewnić, że niepożądane sygnały wejściowe (np. mikrofon) są ustawione na zerowym poziomie. Konstrukcja niektórych kart dźwiękowych nie zapewnia dobrego ekranowania i uziemienia, przez co zbierają one sporo szumów. Na koniec, w moim systemie odkryłem, że opcja jądra no-hlt w linii polecenia zmniejsza poziom szumów. Przekazuje ona do jądra informację, aby nie używana była instrukcja halt w trakcie przetwarzania pętli biernego procesu. Możesz sprawdzić to ręcznie w trakcie ładowania systemu, lub ustawić przez dodanie polecenia append="no-hlt" do pliku konfiguracyjnego LILO. 66..2244.. MMooggęę ooddttwwaarrzzaaćć ddźźwwiięękkii,, aallee nniiee mmooggęę nnaaggrryywwaaćć.. Jeśli możesz odtwarzać dźwięk, ale nie nagrywać, spróbuj zrobić następujące rzeczy: ˇ użyj programowego miksera aby wybrać stosowne urządzenie (np. mikrofon) ˇ przy użyciu miksera ustaw poziomy wejściowe na maksymalne ˇ jeśli możesz, spróbuj przetestować nagrywanie na karcie pod MS- DOSem, aby sprawdzić, czy nie ma problemu sprzętowego. Czasami do nagrywania używany jest inny kanał DMA niż do odtwarzania. W tym przyoadku najbardziej prawdopodobnym powodem będzie niepoprawne ustawienie DMA dla nagrywania. 66..2255.. MMoojjaa ""kkoommppaattyybbiillnnaa"" kkaarrttaa ddźźwwiięękkoowwaa ddzziiaałłaa ttyyllkkoo wwóówwcczzaass,, ggddyy zzaaiinniiccjjaalliizzuujjęę jjąą ppoodd MMSS--DDOOSS.. W większości przypadków karty "kompatybilne z SoundBlaster" będą działać lepiej pod Linuxem jeśli zostaną skonfigurowane ze sterownikiem innym niż SoundBlaster. Większość kart jest teoretycznie kompatybilna (tzn. "kompatybilna z 16-bitową SB Pro" lub "16-bitowa kompatybilna z SB"), ale zwykle ów tryb SoundBlaster jest tylko sztuczką dodaną dla kompatybilności gier pod DOSem. Większość kart ma 16-bitowy macierzysty tryb, który jest prawdopodobnie obsługiwany przez ostatnie wersje jądra Linuxa (2.0.1 i późniejsze). Tylko przy niektórych (zazwyczaj raczej starych) kartach niezbędna jest próba uruchomienia ich w trybie SoundBlaster. Jedyne nowsze karty, które są wyjątkami od tej reguły są karty oparte na Mwave. 66..2266.. MMoojjaa 1166--bbiittoowwaa kkaarrttaa ""kkoommppaattyybbiillnnaa"" zz SSoouunnddBBllaasstteerr ddzziiaałłaa ppoodd LLiinnuuxxeemm jjeeddyynniiee ww ttrryybbiiee 88--bbiittoowwyymm.. 16-bitowe karty opisane jako kompatybilne z SoundBlaster są rzeczywiście kompatybilne jedynie z 8-bitową kartą SoundBlaster Pro. Mają zazwyczaj 16-bitowy tryb, który nie jest kompatybliny z SoundBlaster 16 oraz sterownikiem dźwięku w Linuxie. Może ci się udać uruchomić kartę w trybie 16-bitowym przy użyciu sterownika MAD16 lub MSS/WSS. 66..2277.. GGddzziiee mmooggęę zznnaalleeźźćć pprrooggrraammyy ddźźwwiięękkoowwee ppoodd LLiinnuuxxaa?? Oto kilka dobrych archiwów, które możesz przekopać w poszukiwaniu programów obsługujących dźwięk pod Linxem: ˇ <ftp://sunsite.unc.edu:/pub/Linux/kernel/sound/> ˇ <ftp://sunsite.unc.edu:/pub/Linux/apps/sound/> ˇ <ftp://tsx-11.mit.edu:/pub/linux/packages/sound/> ˇ <ftp://nic.funet.fi:/pub/OS/Linux/util/sound/> ˇ <ftp://nic.funet.fi:/pub/OS/Linux/xtra/snd-kit/> ˇ <ftp://nic.funet.fi:/pub/OS/Linux/ALPHA/sound/> 66..2288.. CCzzyy sstteerroowwnniikk ddźźwwiięękkuu mmoożżee bbyyćć sskkoommppiilloowwaannyy jjaakkoo łłaaddoowwaallnnyy mmoodduułł jjąąddrraa?? Przy ostatnich jądrach sterownik dźwięku może być skompilowany do postaci modułu. Szczegóły znajdziesz w plikach </usr/src/linux/drivers/sound/Readme.modules> i </usr/src/linux/Documentation/modules.txt> (lub </usr/src/linux/README>). 66..2299.. CCzzyy mmooggęę uużżyyćć kkaarrttęę ddźźwwiięękkoowwąą aabbyy zzaassttąąppiićć ssyysstteemmoowwyy ssyyggnnaałł nnaa kkoonnssoollii?? Spróbuj program oplbeep, znajdujący się pod adresem <ftp://sunsite.unc.edu/pub/Linux/apps/sound/oplbeep-alpha.tar.gz> Inny wariant to program beep, znajdujący się tu: <ftp://sunsite.unc.edu/pub/Linux/kernel/patches/misc/modreq_beep.tgz> Pakiet modutils zawiera przykładowy program i poprawkę do jądra, które pozwalają uruchamiać dowolny program zewnętrzny generujący dźwięki gdy jest to wymagane przez jądro. Dodatkowo, przy niektórych kartach dźwiękowych możesz podłączyć wyjście głośnika PC do karty - wówczas wszystkie dźwięki wydobywają się z głośników podłączonych do karty. 66..3300.. CCoo ttoo jjeesstt VVooxxWWaarree?? Sterowniki dźwięku do jądra obsługują kilka różnych systemów kompatybilnych z Unixem, opartych na architekturze Intel. Można je zdobyć jako osobny pakiet, oddzielony od jądra. Do lutego 1996 autor nazywał oprogramowanie "VoxWare". Niestety, nazwa ta została zarejestrowana przez VoxWare Incorporated i nie można jej używać. Nowa nazwa sterownika to OSS/Free. Open Sound System (OSS - Otwarty System Dźwiękowy) jest komercyjnie dostępnym steronikiem dźwięku dla różnych systemów Unix, sprzedawanym przez 4Front Technologies. Darmowa wersja, znana jako OSS/Free będzie nadal udostępniana za darmo na systemy Linux. Więcej informacji znajdziesz na stronie WWW firmy 4Front Technologies - <http://www.4front-tech.com/>. Inne nazwy, na jakie mogłeś się natknąć, które były używane wcześniej w odniesieniu do tego samego sterownika to TASD (Tymczasowo Anonimowy Sterownik Dźwięku) oraz USS (Unix Sound System - System Dźwięku dla Unixa). 66..3311.. CCzzyy kkaarrttyy PPlluugg aanndd PPllaayy ssąą oobbssłłuuggiiwwaannee?? Pełna obsługa Plug and Play powinna pojawić się w Linuxie 2.1. Tymczasem, istnieje kilka rozwiązań, pozwalających uruchomić karty Plug and Play. Jeśli masz nowszy system Pentium z BIOSem Plug and Play, powinien się on automatycznie zająć konfigurowaniem kart. Upewnij się, że ustawiłeś sterownik dźwięku w Linuxie na takie same parametry adresu I/O, IRQ i kanału DMA, jakie użyte zostały przez BIOS. Istnieje pakiet programów narzędziowych do Plug and Play dla Linuxa, który można wykorzystać do ustawienia karty. Można go znaleźć na stronach WWW Red Hat : <http://www.redhat.com/> (może być także włączony do twojej dystrybucji Linuxa). Jeśli używasz kartę pod Windows95, możesz użyć menedżera urządzeń do ustawienia karty, następnie miękko przeładować Linuxa przy użyciu programu LOADLIN. Upewnij się, że Windows95 i Linux używają tych samych ustawień karty. Jeśli używasz kartę pod DOSem, do konfigurowania karty pod DOS możesz użyć program narzędziowy icu, dostarczany z kartami SoundBlaster16 PnP. Następnie miękkie przeładowanie Linuxa za pomocą programu LOADLIN. Ponownie, upewnij się, że Linux i DOS używają tych samych ustawień karty. Komercyjny sterownik dźwięku OSS obsługuje kartę dźwiękową SoundBlaster16 PnP. Możesz nabyć ten sterownik od 4Front Technologies. 66..3322.. SSooxx//PPllaayy//VVppllaayy wwyyppiissuujjee ""iinnvvaalliidd bblloocckk ssiizzee 11002244"" ((bbłłęęddnnyy rroozzmmiiaarr bbllookkuu 11002244)) Zmiana w sterowniku dźwięku w wersji 1.3.67 zepsuła kilka programów odtwarzających dźwięk, które (niepoprawnie) sprawdzały, czy wynik odwołania ioctl SNDCTL_DSP_GETBLKSIZE jest większy niż 4096. Programy narzędziowe włączone do ostatniego pakietu snd-util-3.x.tar.gz (pod adresem <ftp://ftp.4front-tech.com/ossfree>.) obecnie obsługują to poprawnie. Ostatnie wersje sterownika dźwięku zostały również poprawione celem uniknięcia alokacji fragmentów krótszych niż 4096 bajtów, co rozwiązuje problem ze starszymi programami. 66..3333.. DDllaacczzeeggoo sstteerroowwnniikk ddźźwwiięękkuu mmaa wwłłaassnnyy pprrooggrraamm kkoonnffiigguurraaccyyjjnnyy?? Sterownik dźwięku obsługuje wiele różnych parametrów konfiguracyjnych. Program configure z pakietu sterownika dźwięku sprawdza wiele zależności między parametrami. Narzędzia używane do konfigurowania jądra nie umożliwiają takiego stopnia funkcjonalności. Powiedziawszy powyższe, ostatnie jądra opcjonalnie pozwalają na użycie standardowych narzędzi konfiguracji jądra do ustawiania sterownika dźwięku (patrz wcześniejszy rozdział - "Konfigurowanie Jądra"). 66..3344.. UUssttaawwiieenniiaa mmiikksseerraa ssąą zzeerroowwaannee zzaa kkaażżddyymm rraazzeemm ggddyy zzaałłaadduujjęę mmoodduułł sstteerroowwnniikkaa ddźźwwiięękkuu Możesz skompilować sterownik dźwięku jako moduł ładowalny i używać kerneld do jego automatycznego ładowania i usuwania. Może to wywołać jeden problem - za każdym przeładowaniem modułu ustawienia miksera powracają do wartości domyślnych. Przy niektórych kartach może to być zbyt głośno (np. SoundBlaster16), lub za cicho. Markus Gutschke (gutschk@uni-muenster.de) znalazł następujące rozwiązanie. Wpisz poniższy wiersz do pliku /etc/conf.modules: options sound dma_buffsize=65536 && /usr/bin/setmixer igain 0 ogain 0 vol 75 Spowoduje to, że twój program miksujący (w tym przypadku setmixer) zostanie uruchomiony niezwłocznie po załadowaniu sterownika dźwięku. Parametr dma_buffsize jest jedynie sztuczną wartością, niezbędną ze względu na wymagany jakikolwiek parametr linii polecenia. Zmień polecenie zgodnie z potrzebami, aby dopasować ustawienia głośności. Jeśli wkompilowałeś sterownik dźwięku do jądra i chcesz ustawiać poziomy głośności w trakcie ładowania jądra, możesz wywołać program miksujący w jednym z systemowych plików startowych, jak np. /etc/rc.d/rc.local. 66..3355.. JJeeddyynniiee uużżyyttkkoowwnniikk rroooott mmoożżee nnaaggrryywwaaćć ddźźwwiięękk Domyślnie, skrypt w Readme.linux, który tworzy pliki urządzeń dźwiękowych ustawia prawa dostępu tak, że urządzenia odczytywane mogą być jedynie przez użytkownika root. Jest tak, aby uniknąć możliwej dziury w systemie. W środowisku sieciowym, zewnętrzni użytkownicy mogliby potajemnie podłączyć się zdalnie do systemu z kartą dźwiękową i mikrofonem i podsłuchiwać. Jeśli cię to nie martwi, możesz zmienić prawa dostępu ustanowione przez skrypt. Przy domyślnych ustawieniach, użytkownicy nadal mogą odtwarzać pliki dźwiękowe. Nie jest to ryzykowne z punktu widzenia bezpieczeństwa, ale może być potencjalnie denerwujące. 77.. ŹŹrróóddłłaa IInnffoorrmmaaccjjii Jeśli masz kartę dźwiękową, która zawiera interfejs CD-ROM lub SCSI, dodatkowe informacje, które mogłyby ci się przydać są w dokumentach Linux SCSI HOWTO oraz Linux CD-ROM HOWTO Sound Playing HOWTO opisuje sposoby użycia różnych typów plików dźwiękowych i muzycznych pod Linuxem. Istnieje stary dokument, zwany _P_o_d_r_ę_c_z_n_i_k _H_a_c_k_e_r_a _d_o _W_o_x_W_a_r_e, dostępny pod adresem <ftp://nic.funet.fi/pub/OS/Linux/ALPHA/sound/>. Większość zawartej tam informacji została zastąpiona dokumentami w <http://www.4front-tech.com/pguide>, ale rozdział o /dev/sequencer może nadal być przydatny. Następujące dokumenty FAQ są regularnie wysyłane do grupy dyskusyjnej Usenetu news.announce, a także archiwizowane pod adresem <ftp://rtfm.mit.edu/pub/usenet/news.answers>: ˇ PCsoundcards/generic-faq (FAQ na temat zwykłych kart dźwiękowych na PC) ˇ PCsoundcards/soundcard-faq (FAQ comp.sys.ibm.pc.soundcard) ˇ PCsoundcards/gravis-ultrasound/faq (FAQ o Gravis UltraSound) ˇ audio-fmts/part1 (Opisy formatów plików dźwiękowych) ˇ audio-fmts/part2 (Opisy formatów plików dźwiękowych) Dokumenty FAQ wymieniają również kilka list pocztowych i archiwów dotyczących konkretnych produktów. Następujące grupy dyskusyjne Usenetu omawiają kwestie dźwięku i/lub pokrewne: ˇ alt.binaries.sounds.* (różne grupy do wysyłania plików dźwiękowych) ˇ alt.binaries.multimedia (do wysyłania plików multimedialnych) ˇ alt.sb.programmer (programowanie kart Soundblaster) ˇ comp.multimedia (o multimediach) ˇ comp.music (teoria i badania muzyki komputerowej) ˇ comp.sys.ibm.pc.soundcard.* (różne grupy dotyczące kart dźwiękowych na IBM PC) Strony WWW poświęcone multimediom znaleźć można tutaj: <http://viswiz.gmd.de/MultimediaInfo/>. Creative Labs ma stronę WWW pod adresem <http://www.creaf.com/>. MediaTrix ma stronę WWW pod adresem <http://www.mediatrix.com/>. Linuxowe pocztowe listy dyskusyjne mają sporo "kanałów" poświęconych różnym tematom, w tym dźwiękowi. Aby dowiedzieć się, jak się do nich przyłączyć, wyślij pocztę ze słowem "help" jako treścią listu na adres majordomo@vger.rutgers.edu. Owe listy pocztowe nie są zalecane jeśli chodzi o pytania na temat konfiguracji kart dźwiękowych, itp. Istnieją z myślą o dyskusjach dotyczących programowania. Jak wspomniano wcześniej kilka razy, do sterownik dźwięku do jądra dołączona jest pewna ilość plików Readme, zawierających użyteczne informacje o sterowniku kart dźwiękowych. Można je zazwyczaj znaleźć w katalogu </usr/src/linux/drivers/sound>. Z autorem sterownika dźwięku do jądra, Hannu Savolainenem, można się skontaktować pod adresem hannu@voxware.pp.fi. Ma on również stronę WWW : <http://personal.eunet.fi/pp/voxware>. Te strony WWW są najlepszym źródłem informacji, jeśli chodzi o bieżący status obsługiwanych kart dźwiękowych, znane problemy i poprawki błędów. Informacje o OSS, komercyjnym sterowniku dźwięku do Linuxa i innych systemów kompatybilnych z Unixem można znaleźć na stronach WWW 4Front Technologies. _M_a_p_a _O_p_r_o_g_r_a_m_o_w_a_n_i_a _L_i_n_u_x_a (Linux Software Map) jest nieocenionym narzędziem wyszukiwania oprogramowania na Linuxa. Przeszukiwanie LSM po słowach kluczowych, jak np. _s_o_u_n_d (dźwięk) jest dobrą metodą wynajdowania programów mających coś wspólnego z urządzeniami dźwiękowymi. LSM można znaleźć w rozmaitych anonimowych archiwach FTP, chociażby <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/LSM.gz>. W ramach Projektu Dokumentacji Linuxa powstało kilka książek o Linuxie, w tym _L_i_n_u_x _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _G_e_t_t_i_n_g _S_t_a_r_t_e_d (Instalacja Linuxa i Pierwsze Kroki). Są one za darmo dostępne poprzez anonimowy FTP z głównych archiwów Linuxa, a także do nabycia w formie drukowanej. Na sam koniec, bezwstydny wtręt: Jeśli chcesz się dowiedzieć znacznie więcej o multimediach pod Linuxem (szczególnie aplikacje i programowanie CD-ROM i dźwięku), sprawdź moją książkę _L_i_n_u_x _M_u_l_t_i_m_e_d_i_a _G_u_i_d_e, ISBN 1-56592-219-0, wydaną przez oficynę O'Reilly and Associates. O szczegółach dowiesz się pod numerem 800-998-9938 w Ameryce Północnej, lub na stronach WWW <http://www.ora.com/catalog/multilinux/noframes.html>. 88.. OOdd ttłłuummaacczzaa Prawa autorskie wersji polskiej tego dokumentu (c) 1997 są własnością Pawła Olszewskiego (alder@amg.net.pl). Dystrybucja wersji polskiej objęta jest klauzulą analogiczną do zawartej w oryginale. Jeśli znalazłeś w niniejszym dokumencie jakieś paskudne literówki, błędy ortograficzne, lub inne tego typu numery, ślij informację w pierwszej kolejności do tłumacza, w tej sytuacji autor oryginału jest najprawdopodobniej niewinny. W kwestii merytorycznej, dokument ten nie różni się specjalnie od oryginału (nie dokonałem żadnych zmian ani poprawek), pomijając odnośnik do pliku LSM.gz, który zmieniłem na lokalne archiwum SunSITE. Dodałem również odnośnik do archiwum polskich wersji dokumentów HOWTO. Najnowsza wersja tego dokumentu znajduje się wraz z innymi przetłumaczonymi na polski dokumentami serii Linux-HOWTO, w archiwum dokumentów JTZ (Jak To Zrobić): ftp://ftp.ippt.gov.pl/pub/Linux/JTZ/Sound-HOWTO.pl.html.gz. Najświeższa wersja angielska znajduje się tutaj: http://sunsite.unc.edu/mdw/HOWTO/Sound-HOWTO.html. _N_a _z_d_r_o_w_i_e_, Pawko Olszewski, alder@amg.net.pl ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Sound-Playing-HOWTO.pl.txt���������������������������������������������0100664�0001750�0001750�00000076724�06717116340�021160� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Linux Sound Playing HOWTO Autor: Yoo C. Chung wacko@laplace.snu.ac.kr v1.5, 7 Listopada 1997 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v 1.0, 28 Marca 1998 Ten dokument opisuje aplikacje dla Linuxa, służące do odgrywania dźwięku w różnych formatach. Dokument ten został napisany w standard­ zie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://laplace.snu.ac.kr/~wacko/howto/ ______________________________________________________________________ Table of Contents: 1. Wprowadzenie 1.1. Prawa autorskie tego dokumentu 1.2. Prawa autorskie opisanych aplikacji 1.3. Gdzie można zdobyć ten dokument 1.4. Kontakt z autorem 1.5. Podziękowania 2. Odtwarzanie różnych formatów dźwięku 2.1. MIDI 2.1.1. "Adagio package" 2.1.2. TiMidity 2.1.3. playmidi 2.2. Moduły 2.2.1. tracker 2.2.2. gmod 2.2.3. MikMod 2.2.4. xmp 2.2.5. s3mod 2.2.6. mod 2.2.7. nspmod 2.2.8. yampmod 2.3. MPEG audio 2.3.1. mpg123 2.3.2. maplay 1.2 2.3.3. maplay 1.3b 2.3.4. maplay3 2.3.5. splay 2.3.6. Sajber Jukebox 2.3.7. amp 2.3.8. XAudio 2.3.9. Layer 3 Shareware Encoder/Decoder 2.4. WAV 2.4.1. wavplay 2.5. Inne rzeczy 2.5.1. sox 2.5.2. bplay 2.5.3. SIDPLAY 2.5.4. RealAudio Player 2.5.5. cat 3. Inne przydatne narzędzia dźwiękowe 3.1. volume 3.2. Sound Studio 3.3. Tickle Music 4. Odnośniki 5. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee To jest Sound Playing HOWTO. Opisuje wiele formatów dźwięku i aplikacje, które mogą być użyte do ich odtwarzania. Opisuje także pare trików i rad dotyczących tych aplikacji. Jest tu też trochę innych interesujących programów związanych z dźwiękiem, nie związanych bezpośrednio z odtwarzaniem. Jednakże ten dokument _n_i_e opisuje, jak ustawić obsługę dźwięku w Linuxie. Zobacz Linux Sound HOWTO autorstwa Jeff'a Tranter'a, dla uzyskania instrukcji konfiguracji obsługi dźwięku i obsługiwanego sprzętu. Ten dokument opisuje tylko normalne aplikacje użytkownika. Znaczy to, że tłumaczy tylko to, co średnio zaawansowany użytkownik powinien wiedzieć o stronie programowej dźwięku, a nie egzotyczne tematy typu synteza dźwięku lub sprzęt - jest on opisany w Sound HOWTO. 11..11.. PPrraawwaa aauuttoorrsskkiiee tteeggoo ddookkuummeennttuu Ten dokument może być dowolnie dystrybuowany i modyfikowany (byłbym wdzięczny, gdybym był zawiadamiany o zmianach), dopóki są zachowane wiadomości o prawach autorskich. Jednakże nie może posiadać żadnych innych ograniczeń, a zmodyfikowany dokument musi mieć te same prawa autorskie, co ten. Musi być także podany autor zmian. 11..22.. PPrraawwaa aauuttoorrsskkiiee ooppiissaannyycchh aapplliikkaaccjjii Jeżeli nie ma informacji o prawach autorskich, aplikacja jest pod Licencją Publiczną GNU (GNU General Public License). 11..33.. GGddzziiee mmoożżnnaa zzddoobbyyćć tteenn ddookkuummeenntt Najnowsza oficjalna wersja tego dokumentu może być ściągnięta z . Najnowsza nieoficjalna wersja znajduje się na Koreańska wersja tego dokumentu (bardzo nieaktualna) znajduje się na Japońska wersja tego dokumentu jest dostępna na http://jf.gee.kyoto-u.ac.jp/JF/JF- ftp/euc/Sound-Playing-HOWTO.euc. 11..44.. KKoonnttaakktt zz aauuttoorreemm Nie jestem ominescentny i nie używam wszystkich aplikacji opisanych tutaj (kilku nawet nie wypróbowałem), więc mogą być błędy. Programy także ewoluują, więc dokumentacja ciągle się przedawnia. Jeżeli więc znajdziesz jakieś błędy, wyślij mi poprawki. Sugestie i dodatki będą także mile widziane. 11..55.. PPooddzziięękkoowwaanniiaa dla wszystkich autorów aplikacji opisanych w tym HOWTO. Także Hannu Savolainenowi za świetny sterownik dźwięku i Linusowi Torvaldsowi za świetny system operacyjny. Chciałbym też podziękować Raymondowi Nijssenowi (raymond@es.ele.tue.nl), Jeroenowi Ruttenowi (jeroen@es.ele.tue.nl), Antonio Perezowi (aperez@arrakis.es), Ianowi Jacksonowi (ijackson@gnu.org) i Peterowi Amstutzowi (amstpi@freenet.tlh.fl.us) za informacje i pomoc. 22.. OOddttwwaarrzzaanniiee rróóżżnnyycchh ffoorrmmaattóóww ddźźwwiięękkuu Istnieje wiele rodzajów formatów dźwięku (WAV, MIDI, MPEG itp.). Poniżej opisuję różne formaty i aplikacje używane do ich odtwarzania. 22..11.. MMIIDDII MIDI znaczy Musical Instrument Device Interface (Interfejs urządeń i instrumentów muzycznych). Pliki MIDI mają zazwyczaj rozszerzenie .mid. Zawierają informacje sekwencerowe, to znaczy informacje kiedy odtworzyć jaki instrument w jaki sposób itp. Zależnie od Twojego sprzętu (i może oprogramowania, którego używasz) dźwięk może być świetny, albo niewyraźny i charczący. 22..11..11.. AAddaaggiioo ppaacckkaaggee"" Ten pakiet zawiera mp (odtwarzacz MIDI obsługiwany z linii komend) i xmp (odtwarzacz MIDI oparty na XView, nie mylić nazwy z odtwarzaczem modułów także nazywanym xmp). Do używania xmp będziesz potrzebował rozszerzeń SlingShot. Pakiet zawiera także inne programy do odtwarzania utworów Adagio. Jeżeli jesteś posiadaczem GUS'a, mpmoże także odtwarzać pliki MOD (zobacz sekcję Moduły, żeby uzyskać więcej informacji o modułach). Jeden mały, ale denerwujący błąd (w wersji 0.5 na niektórych kartach) - dźwięk urywa się przy końcu. Zamiast zakończenia utworu w sposób, który opisuje plik MIDI, kończy się on na przydługim odegraniu przedostatniej nuty. Nie przeszkodziło mi to w używaniu mp, ale może kogoś zniechęcić do używania go do ,,prawdziwej'' pracy. Uruchamia się dosyć wolno. W pakiecie nie ma notatki o prawach autorskich (przynajmniej nie mogłem takiej znaleźć), więc przyjmuję, że może być dowolnie dystrybuowana i modyfikowana. (W dokładnej interpretacji przepisów o prawach autorskich, nie wolno tego robić, ale sądzę, że taka była intencja autora). To jest wersja CMU MIDI Toolkit pod Linuxa (ale tak dużo zostało dodane, że można to zakwestionować) autorstwa Grega Lee (lee@uhunix.uhcc.hawaii.edu). Można go ściągnąć z anonimowego ftp z tsx-11.mit.edu z katalogu /pub/linux/packages/sound/adagio05.tar.gz. Binaria tu załączone są w formacie a.out (z dołączonymi archaicznymi bibliotekami), a binaria xmp działają w środowisku X11R6 (XFree86 3.1.1, libc 4.7.2). Binaria mp działają dobrze w środowisku a.out. Do skompulowania tego będzie potrzebne trochę sztuczek. Właściwie niewiele - wszystko, co musisz zrobić, to załączyć przełącznik -lfl na koniec SHROBJ i XMPOBJ w pliku Makefile. Jest to potrzebne do dołączenia biblioteki flex, co nie jest standardowo zrobione. Dalej postępuj zgodnie z instrukcją instalacji. I nie zapomnij, żeby mieć zainstalowane XView i rozszerzenia SlingShot, jeżeli chcesz skompilować xmp 22..11..22.. TTiiMMiiddiittyy Niektórzy ludzie polecają ten _e_k_s_p_e_r_y_m_e_n_t_a_l_n_y program z powodu dobrej jakości dźwięku (co jest prawdą, brzmi znacznie lepiej niż mp na Sound Blaster'rze 16, jednak nie będzie brzmiał o wiele lepiej na karcie z syntezą wavetable, jak np. GUS). Jednakże jego problemem jest duże obciążanie procesora. Odgrywa MIDI przez skonwertowanie go do WAV i odtworzenie WAV (możesz także skonwertować MIDI do WAV bez odtwarzania). To tłumaczy obciążanie CPU. Ma także opcjonalny interfejs ncurses, SLang, Tcl/Tk lub Motif. Potrzebujesz plików z instrumentami Gravis'a Ultrasound do używania tego programu. Zobacz FAQ załączony z TiMidity. Autorem jest Tuukka Toivonen (tt@cgs.fi). Najnowsza wersja TiMidity znajduje się na stronie domowej TiMidity. Ta strona zawiera też odnośnik do małej biblioteki instrumenów GUS'a. 22..11..33.. ppllaayymmiiddii To jest odtwarzacz MIDI obsługujących syntezę FM, GUS'a i zewnętrzny interfejs MIDI. po odpowiednim "załataniu" także AWE32/64 - przyp. tłum. Uruchamia się szybciej niż inne odtwarzacze MIDI. Może także odgrywać pliki Creative Music Files, pliki Microsoft RIFF i duże archiwa MIDI z gier takich jak Ultima 7. Posiada interfejs X i SVGA. Posiada także opcję śledzenia nut na każdym kanale i zegar odtwarzania (dołączony automatycznie z xplaymidi i splaymidi). Powinieneś napisać coś takiego: $ splaymidi foo.mid; stty sane jeżeli chcesz używać interfejsu SVGA, jednak nie przywraca on trybu tty poprawnie. Tryb SVGA może być usunięty w bliskiej przyłości. Ten program był napisany przez Nathan'a Laredo (laredo@gnu org lub laredo@ix.netcom.com). Znajduje się na anonimowym ftp - sunsite.unc.edu w katalogu /pub/Linux/apps/sound/players/playmidi-2.3.tar.gz. 22..22.. MMoodduułłyy Moduły (w muzyce komputerowej) to pliki z muzyką cyfrową, stworzone ze zbioru próbek (sampli) i informacji sekwencerowych, mówiących odgrywarce kiedy odtworzyć jaką próbkę (instrument) na jakiej ścieżce i z jaką wysokością, opcjonalnie wytwarzając efekt, taki jak np. vibrato. Ma zaletę nad MIDI - może zawierać prawie każdy rodzaj dźwięku (łącznie z głosem ludzkim). Po drugie, brzmi prawie tak samo na każdej platformie, ponieważ próbki są w module. Wadą jest, że moduły mają znacznie większy od MIDI rozmiar, a także to, że nie ma prawdziwego standardowego formatu (jedynym ,,prawdziwym'' jest ProTracker, z którym wiele modułów nie jest kompatybilnych). Pochodzi z Amigi. Najczęściej spotykany format to .mod. Jest wiele rozszerzeń, zależenie od formatu. 22..22..11.. ttrraacckkeerr Ten bardzo elastyczny program (został napisany na wiele platform) odtwarza moduły muzyczne Soundtracker'a i Protracker'a. Używa wyjścia stereofonicznego 16-bitowego, jakość uważam za bardzo dobrą. Jeżeli potrzebujesz prostego sposobu na zredukowanie obciążenia procesora, użyj opcji -mono. To jest program "giftware" (cytując autora). Jest nim Marc Espie (Marc.Espie@ens.fr). Wersja z plikiem Makefile dostosowanym pod Linuxa może być sciągnięta z anonimowego ftp z sunsite.unc.edu z katalogu /pub/Linux/apps/sound/players/tracker-4.3-linux.tar.gz 22..22..22.. ggmmoodd Gmod to odtwarzacz modułów muzycznych dla Gravisa. Obsługiwane formaty to 4/6/8 kanałowy MOD, 8 kanałowy 669, MultiTracker (MTM), UltraTracker (ULT), FastTracker (XM) i ScreamTracker III (S3M). Gmod wymaga wersji 3.0 lub późniejszej sterownika dźwięku. Oraz, oczywiście, GUS'a. Możliwe, że będziesz musiał zmodyfikować jądro żeby kontrola głośności działała tak, jak sobie tego życzysz. Gmod posiada interfejs X'owy. Używa bibliotek QT (wersja 0.99 lub wyższa). Sprawdź stronę domową QT, żeby uzyskać informacje o QT. Program może być darmowo rozpowszechniany. Był początkowo napisany przez Hannu Savolainen'a, a teraz jest nadzorowany przez Andrew J. Robinson'a (robinson@cnj.digex.net). Można go ściągnąć z anonimowego FTP z sunsite.unc.edu (katalog /pub/Linux/apps/sound/players/gmod-3.1.tar.gz. 22..22..33.. MMiikkMMoodd Ten podręczny odtwarzacz modułów odtwarza formaty XM, ULT, STM, S3M, MTM, MOD i UNI. (Format UNI jest wewnętrznym formatem używanym przez MikMod.) Posiada obsługę spakowanych (zipped) plików z modułami. Używa jakości 16bit stereo. Użyj opcji -m (m jak mono) jeżeli potrzebujesz prostego sposobu obniżenia obciążenia procesora. Wersja unixowa może używać bądź to ncurses, bądź to Tcl/Tk jako swój interferjs użytkownika. Może być także użyta jako biblioteka, a nie tylko niezależny program. MikMod był początkowo napisany przez Jean-Paul Mikkers'a (mikmak@via.nl). Teraz jest nadzorowany przez Jake'a Stine'a (dracoirs@epix.net). Jest to shareware, które musi być zarejestrowane, jeżeli chcesz używać je komercyjnie. Potrzebne jest też zezwolenie na dystrybucję komercyjną (niekomercyjne rozpowszechnianie nie wymaga zezwolenia). Program można znaleźć na stronie domowej MikMod. 22..22..44.. xxmmpp Ten odtwarzacz modułów (nie mylić z xmp Adagia) może odtwarzać moduły MOD, S3M, STM, 669 i XM (inne formaty są też obsługiwane, ale ciągle eksperymentalnie lub niecałkowicie) na kartach z syntezą WaveTable (GUS albo SoundBlaster AWE 32) i na systemach z SoftOSS (sterownik miksujący programowo). W bardzo bliskiej przyszłości zwykły DSP będzie też obsługiwany. Wersja pod X jest też dostępna. Program jest napisany przez Claudio Matsuoka'ę (claudio@brasil.enemy.org) i H. Carraro Jr. Znajduje się na stronie domowej xmp 22..22..55.. ss33mmoodd S3mod odtwarza 4/6/8 ścieżkowe moduły MOD i Scream Tracker 3. Używa standardowo jakości 8 bit mono, 22000Hz. Użyj opcji -s, żeby włączyć stereo, -b, żeby włączyć jakość 16 bitową i -f, żeby ustawić częstotliwość. Jednakże jakość dźwięku jest gorsza od tracker'a (szumy), więc polecałbym tracker'a zamiast s3mod do odtwarzania zwykłych plików MOD (chyba, że masz maszynę o małej mocy). S3mod obciąża procesor znacznie mniej niż tracker. Prawa autorskie należą do Daniela Marks'a i David'a Jeske'a (jeske@uiuc.edu), ale możesz zrobić z tym co chcesz (poza twierdzeniem, że to ty go napisałeś). Można go zdobyć przez anonimowe FTP z sunsite.unc.edu (katalog /pub/Linux/apps/sound/players/s3mod-v1.09.tar.gz. 22..22..66.. mmoodd Ten program (_w_e_r_s_j_a _b_e_t_a) odtwarza MOD'y (15/31 instrumentowe, do 32 głosów), MTM'y, ULT'y i S3M'y na Gravisie Ultrasound. Może też używać spakowane moduły, jeżeli masz gzip'a, lharc'a, unzip'a i unarj'a. Nie potrafi odtwarzać modułów spakowanych Powerpacker'em lub modułów spakowanych niektórymi programami do komponowania na Amigę (sygnatura "PACK"). Program wymaga wersji 3.0 sterownika dźwięku. _N_i_e _b_ę_d_z_i_e działać z wersją 2.90-2 lub wcześniejszą. Interfejs tekstowy wymaga ncurses. Jest także załączony interfejs X'owy, który używa Tcl/Tk. Mod jest napisany przez Mikael'a Nordqvist'a (mech@df.lth.se lub d91mn@efd.lth.se). Można go znaleźć na anonimowym FTP z sunsite.unc.edu z /pub/Linux/apps/sound/players/mod-v0.81.tgz. 22..22..77.. nnssppmmoodd Nspmod to odtwarzacz modułów w wersji _a_l_p_h_a, który może odtwarzać moduły MTM, S3M i MOD. Jest przeznaczony dla kart dźwiękowych bez DSP (nie mylić z tym co Creative Labs nazywa DSP). Obciąża procesor porównywalnie z tracker'em Posiada możliwość zapętlenia modułów, jeżeli są tak zaprogramowane. Ilość zapętleń może być limitowana opcją -l. Używa tylko wyjścia 8 bitowego. (jeżeli chodzi o wersję 0.1). Został napisany przez Toru Egashira'ę (toru@jms.jeton.or.jp). Można go ściągnąć z anonimowego FTP (sunsite.unc.edu, katalog /pub/Linux/apps/sound/players/nspmod-0.1.tar.gz). 22..22..88.. yyaammppmmoodd Ten program (_w_e_r_s_j_a _a_l_f_a) był zaprojektowany do odtwarzania 4 kanałowych modułów, minimalnie obciążając procesor. _N_i_e _b_y_ł zaprojektowany do odtwarzania dźwięku wysokiej jakości. A więc jedyna jakość to 22kHz, mono. Dźwięk nie jest też tak czysty jak powinien, co wyjaśnia status alfa programu. Został napisany przez David'a Groves'a (djg@djghome.demon.co.uk). Można go znaleźć na anonimowym FTP z sunsite.unc.edu w katalogu /pub/Linux/apps/sound/players/yampmod-0.1.tar.gz. 22..33.. MMPPEEGG aauuddiioo MPEG jest standardem specyfikującym kodowanie wideo i towarzszącego mu dźwięku w celu cyfrowej archiwizacji. MPEG jest zazwyczaj kojarzony z obrazem, ale część dźwiękowa może być używana oddzielnie. Część dźwiękowa standardu definiuje trzy powłoki (ang. layers), Layer I, II i III. Odtwarzacze mogące dekodować wyższe powłoki mogą także dekodować niższe. (np. odtwarzacze Layer III mogą odtwarzać pliki Layer II). Pliki audio MPEG Layer I mają zwykle rozszerzenie .mpg (więc jeżeli plik z tym rozszerzeniem nie może być odtworzony odtwarzaczem MPEG wideo, to jest to prawdopodobnie strumień audio), Layer II zazwyczaj ma rozszerzenie .mp2, a Layer III zajmie 25 megabajtów jako czysty PCM _o _t_e_j _s_a_m_e_j _j_a_k_o_ś_c_i 22..33..11.. mmppgg112233 Ten program (_w_e_r_s_j_a _b_e_t_a) jest wydajnym odtwarzaczem MPEG audio, z obsługą powłok I, II i III. Jest oparty na kodzie z wielu źródeł. Może odtwarzać w czasie rzeczywistym strumień przez HTTP (tzn. można odtwarzać strumień MPEG bezpośrednio przez World Wide Web). Głównym autorem jest Michael Hipp (Michael.Hipp@student.uni- tuebingen.de). Może być używany i rozpowszechniany w niezmodyfikowanej formie darmowo, przeznaczony do zadań niekomercyjnych. Załączenie w kolekcji darmowego oprogramowania (takiej jak CD-ROM'y lub serwery FTP) jest dozwolone. Najnowszą wersję można znaleźć na stronie mpg123 Oliver'a Fromme'a. 22..33..22.. mmaappllaayy 11..22 Ten odtwarzacz MPEG audio obsługuje tylko Layer I i II. Obsługuje 16 bitowe karty dźwiękowe pod Linuxem. Złużywa dosyć dużo czasu procesora, ok. 55% na Pentium 60MHz. Dźwięk jest niemożliwy do słuchania na 486 66MHz, ponieważ procesor nie może nadążyć z dźwiękiem. Jeżeli to ci się zdarzy, spróbuj odtwarzać tylko jedną stronę strumienia audio (opcją -l lub -r), zamiast domyślnego stereo. Mała zmiana w jednym z plików może być potrzebna do skompilowania programu. Musisz dodać taką linię na początek pliku configuration.sh. #! /bin/sh Autorem jest Tobias Bading (bading@cs.tu-berlin.de). maplay 1.2 można znaleźć na anonimowym FTP na ftp.cs.tu-berlin.de z /pub/multimedia/maplay1.2/maplay1_2.tar 22..33..33.. mmaappllaayy 11..33bb To jest nieoficjalna modyfikacji (tzn. nie przez oryginalnego autora) maplay'a 1.2, może działać z o wiele mniejszym obciążeniem procesora. Udaje się jej to głównie przez używanie wyjścia u-law na innych platformach poza SPARC'em. Zauważ, że używa wyjścia u-law domyślnie, więc jakość dźwięku jest niższa. Modyfikacje były przeprowadzone przez Orlando Andico (orly@gibson.eee.upd.edu.ph). Program można znaleźć na anonimowym FTP na sunsite.unc.edu z katalogu /pub/Linux/apps/sound/players/maplay-1.3b-Linux.tar.gz. 22..33..44.. mmaappllaayy33 To jest kolejny krewny maplay'a 1.2. Dodaje obsługę formatu MPEG Layer 3. W tej chwili ma pewne błędy w odtwarzaniu (możesz słyszeć skrzeczące odgłosy). Możesz pobawić się opcjami żeby to zmienić. Modyfikacje były przeprowadzone przez Timo Jantunen'a (timo.jantunen@hut.fi lub jeti@cc.hut.fi. Mówi, że może być używany darmowo, ale zarabianie nim pieniędzy nie jest dozwolone. Jakkolwiek nie jestem całkowicie przekonany o poprawności praw autorskich, ponieważ oryginalny maplay jest na Licencji Publicznej GNU (GNU General Public License), która nie pozwala zmodyfikowanym pracom mieć innych praw autorskich. Program może być znaleziony na anonimowym FTP na sunsite.unc.edu z katalogu /pub/Linux/apps/sound/players/maplay3.tar.gz. 22..33..55.. ssppllaayy Ten odtwarzacz (_w_e_r_s_j_a _b_e_t_a) jest kolejnym krewnym maplay'a 1.2 (właściwie jest krewnym maplay'a 1.2+, który jest Windows'owym krewnym maplay'a 1.2). Dodaje obsługę strumieni MPEG Layer 3. Może też odtwarzać pliki WAV. Może także odtwarzać strumienie audio przez połączenie HTTP. Inna opcja splay'a, to możliwość używania go jako biblioteki (na licencji GPL), więc może być używany w innych programach. Próbuje też polepszyć wydajność przez używanie grupowania (threading) (potrzebujesz pthread, żeby używać tą opcję) i trochę assemblera w kodzie. Splay używa interfejsu linii komend i opcjonalnego X'owego (który używa QT). Jeżeli nie działa po kompilacji (np. zwraca błąd segmentacji), spróbuj skompilować go jeszcze raz bez grupowania (threading). Autorem jest Jung Woo-jae (jwj95@eve.kaist.ac.kr). Program można znaleźć na stronie domowej splay'a. 22..33..66.. SSaajjbbeerr JJuukkeebbooxx Ten program jest odtwarzaczem MPEG z graficznym interfejsem użytkownika. Jest oparty na splay'u, więc obsługuje powłoki MPEG do III. Może też odtwarzać strumienie MPEG w czasie rzeczywistym, ze strumieniem podawanym przez HTTP. Jest także łatwy do skonfigurowania. Używa bibliotek QT toolkit (w wersji 1.2<). Używa też LinuxThreads (załączone binaria działają tylko z wersją 0.5). Autorem jest Joel Lindholm (wizball@kewl.campus.luth.se). Najnowszą wersję można znaleźć na anonimowym FTP na kewl.campus.luth.se z katalogu /pub/jukebox. 22..33..77.. aammpp Ten odtwarzacz MPEG audio (_w_e_r_s_j_a _b_e_t_a) obsługuje tylko MPEG Layer 3. Może odtwarzać bezpośrednio do karty dźwiękowej i do plików PCM lub WAV. Daje też dosyć duży ładunek dla procesora (około 60% na Pentium 133MHz). Został napisany przez Tomislav'a Uzelac'a (tuzelac@rasip.fer.hr). Może być darmowo używany i rozpowszechniany, dotąd, dokąd nie będzie sprzedawany komercyjnie bez zezwolenia (załączanie go na CD-ROM'ach z darmowym oprogramowaniem jest dozwolone). Można go znaleźć na anonimowym FTP na ftp.rasip.fer.hr z katalogu /pub/mpeg/amp-0.7.3.tgz. 22..33..88.. XXAAuuddiioo Ta biblioteka (_a_l_f_a) została napisana jako szybka implementacja bibliotek dekodowania MPEG audio, do użycia w różnych interfejsach GUI. Obsługuje powłoki I, II i III. Może losowo pobierać dane ze strumieni. Interfejs linii komend jest załączony. Wersja Motif (Lesstif) jest też załączona w wersji pod Linuxa. Autorzy to Gilles Boccon-Gibod, Alain Jobart i inni. Wykończenia (front-ends) biblioteki mogą być darmowo pobierane. Biblioteka sama w sobie musi być licencjonowana (dostępna jest licencja źródłowa i binarna). Wykończenia tej biblioteki mogą być ściągnięte ze strony domowej XAudio. 22..33..99.. LLaayyeerr 33 SShhaarreewwaarree EEnnccooddeerr//DDeeccooddeerr Właściwie jest to konwerter, który przekształca strumienie audio MPEG Layer 3 w WAV, AIFF, SND, AIFC lub po prostu czyste PCM. Wersja pod Linuxa nie kieruje wyjścia bezpośrednio do karty dźwiękowej. Trzeba najpierw skonwertować plik do innego formatu. Jakkolwiek, jeżeli spróbjesz odtworzyć skonwertowany plik używając sox'a, otrzymasz prawdopodobnie tylko szum, poniewać porządek słów (to taki rodzaj "liczby" komputerowej - przyp. Tygrys) w próbkach PCM nie jest poprawny (przynajmniej na platformach Intelowych). Musisz odpalić sox'a z opcją -x, żeby pozbyć się tego problemu. Ale niektóre odtwarzacze nie muszą być zawiadomione, że porządek słów jest zły, więc nie musisz się o to martwić. Jeżeli masz naprawdę szybki komputer (prawdopodobnie co najmniej Pentium 100MHz), możesz spróbować odtwoezyć strumienie MPEG Layer 3 bezpośrednio, bez potrzeby skonwertowania dźwięku na inny format, tak jak w następującym przykładzie (przyjmuje on, że używasz sox'a i odtwarzasz próbkę 44.1kHz stereo). $ l3dec foo.mp3 -sto | play -t raw -x -u -w -c 2 -r 44100 - Liczba po -r jest częstotliwością próbkowania strumienia audio, a liczba po -c zależy od tego, czy to ma być mono, stereo, czy nawet kwadro. Jeżeli to wygląda zbyt skomplikowanie, możesz użyć skryptu lub aliasu. To jest shareware z prawami autorskimi Fraunhofer-IIS. Wersja demo pod Linuxa na systemy x86 może być ściągnięta z anonimowego FTP na ftp.fhg.de z katalogu /pub/layer3. Wersja demo konwertuje tylko strumienie Layer 3. 22..44.. WWAAVV Cytując ze strony podręcznika man sox'a: Wydają się być podobne do plików IFF, ale nie takie same. Są oryginalnym formatem dźwiękowym Windows 3.1. Oczywiście Windows 3.1 jest tak ważne dla przemysłu komputerowego, że musiało mieć własny format plików dzwiękowych. Mają zazwyczaj rozszerzenie .wav 22..44..11.. wwaavvppllaayy Ten program obsługuje odtwarzanie i nagrywanie w formacie WAV. Używa blokowania (locking), więc tylko jeden dźwięk może być odtwarzany w danej chwili. Jego możliwości blokowania mogą też być użyte oddzielnie od jego możliwości odtwarzania dźwięku. Jako dodatek do interfejsu linii komend, ma także interfejs Motif, który może być używany z Lesstif'em. Był początkowo napisany przez Andre Fuechsel'a (af1@irz.inf.tu- dresden.de), ale został całkowicie przepisany przez Warren'a W. Gay'a (bx249@freenet.toronto.on.ca lub wwg@ica.net). Można go znaleźć na anonimowym FTP z sunsite.unc.edu w katalogu /pub/Linux/apps/sound/players/wavplay-1.0.tar.gz. 22..55.. IInnnnee rrzzeecczzyy Ta sekcja opisuje rzeczy, które odtwarzają formaty dźwięku nie zasługujące na oddzielną sekcję (np. formaty mające tylko jeden odtwarzacz), lub odtwarzacze obsługujące kilka formatów. 22..55..11.. ssooxx Ten program jest właściwie konwerterem, zamienia jednen format dźwięku na drugi. Jakkolwiek, niektóre wersje sox'a, przywoływane komendą play, odtwarzają dźwięk. (Aplikacja play w Sound HOWTO prawdopodobnie odnosi się do tego). Obsługuje czyste (bez nagłówka) binaria i dane tekstowe , Pliki Dźwiękowe IRCAM, .voc Sound Blaster'a, formaty Sndtool'a i Sounder'a, .snd NeXT'ta RIFF/WAV Windows 3.1, Gdzieś w kernelu 1.3.6x, musisz dokonać małej zmiany w jednym pliku, żeby dźwięk był odtwarzany bezpośrednio. Musisz zmienić linię 179 w pliku sbdsp.c z if (abuf_size < 4096 || abuf_size > 65536) { na if (abuf_size < 1 || abuf_size > 65536) { Ale może nie będziesz musiał tego robić. Jednak zrobienie tego nic nie zepsuje. Został napisany przez wielu ludzi i może być użyty w każdym przeznaczeniu. Można go znaleźć na anonimowym FTP na sunsite.unc.edu w katalogu /pub/Linux/apps/sound/convert/Lsox-linux.tar.gz. Nowsza wersja, której autorem jest Chris Bagwell (cbagwell@sprynet.com) (oparta na najnowszej wesji gamma oryginalnego sox'a, z załączoną powyższą poprawką) może być ściągnięta przez anonimowe FTP na sunsite.unc.edu z katalogu /pub/Linux/apps/sound/convert/sox-11gamma-cb3.tar.gz. 22..55..22.. bbppllaayy Ten program (_w_e_r_s_j_a _b_e_t_a) odtwarza czyste audio, WAV i VOC. Może też nagrywać takie pliki. Używa różnych technik do osiągnięcia najwyższej możliwej prędkości, a więc może chodzić przystępnie nawet na wolnych maszynach. Jedna z tych technik wymaga, żeby zainstalowane programy miały identyfikator setuid root. Jeżeli koniecznie chcesz tego używać, możesz użyć paczki Debiana, której autorem jest Ian Jackson (ijackson@gnu.org), która wyłącza funkcję potrzebującą bitu setuid. Autorem jest David Monro (davidm@gh.cs.usyd.edu.au). Można go znaleźć na anonimowym FTP na sunsite.unc.edu w katalogu /pub/Linux/apps/sound/players/bplay-0.96.tar.gz. 22..55..33.. SSIIDDPPLLAAYY Ten program emuluje układ SID (Sound Interface Device, MOS 6581) i MPU (Micro Processor Unit, MOS 6510) Commodore'a 64. Jest więc w stanie załadować i uruchomić programy w kodzie maszynowym C64 wydające dźwięki lub muzykę. Głównie są to fragmenty kodu i danych, które zostały wyciągnięte (ripped) z gier i programów demonstracyjnych i przesłane bezpośrednio z C64. Standardowo używa linii komend. Są też interfejsy Tk i QT, dostępne oddzielnie z głównej paczki. Sidplay jest nadzorowany przez Michael'a Schwendt'a (sidplay@geocities.com). Jest dostępny ze strony domowej SIDPLAY'a. 22..55..44.. RReeaallAAuuddiioo PPllaayyeerr Pozwala ci słuchać dźwięku, zapisanego w odpowiednim formacie, w czasie rzeczywistym przez Internet bez pobierania całego pliku. Może być użyty oddzielnie, ale tak naprawdę jest przeznaczony do użytku z przeglądarką web (najlepiej obsługiwane są Mosaic i Netscape). Nie może być używany bez X'ów (nie możesz używać go z Lynxem na konsoli tekstowej). Autorem jest firma Progressive Networks, Inc. Program nie może być rozpowszechniany, modyfikowany itp. Zajrzyj do licencji, żeby uzyskać dokładne informacje o tym, co możesz robić. Program można ściągnąć ze strony domowej RealAudio. 22..55..55.. ccaatt Ktoś może pomyśleć co cat, czasami nadużywane narzędzie wypisujące, może mieć wspólnego z odgrywaniem dźwięku. Pokażę jak można to zużytkować na przykładzie. $ cat sample.voc > /dev/dsp $ cat sample.wav > /dev/dsp $ cat sample.au > /dev/audio Wykonanie cat'a pliku .au na urządzenie /dev/audio będzie zwykle działać, a jeżeli będziesz miał szczęście, porządek bajtów w pliku będzie odpowiedni do twojej platformy itp., uda się nawet "zcatowanie" pliku PCM (takiego jak /dev/audio czy /dev/dsp) na urządzenie /dev/dsp. To wcale nie jest bezużyteczny sposób wykorzystania cat'a. Może być przydatny np. jeżeli masz plik dźwiękowy nie rozpoznawany przez twoje programy, a wiesz, że używa próbek PCM, możesz mieć przybliżone wyobrażenie tego, jak plik brzmi (jeżeli będziesz miał szczęście). (kurczę, nie pisze skąd to wziąć ;-) - przyp. Tygrys) 33.. IInnnnee pprrzzyyddaattnnee nnaarrzzęęddzziiaa ddźźwwiięękkoowwee Ta sekcja nie ma bezpośrednio nic wspólnego z odtwarzaniem plików dźwiękowych. Jest to raczej kolekcja narzędzi, które mogą być przydatne. 33..11.. vvoolluummee To jest prosty interfejs linii komend, który kontroluje głośność (co innego mogłoby to być?). Ma też oddzielny program z interfejsem Tcl/Tk załączonym w paczce, służącym do kontrolowania głośności i odtwarzania plików .au. Jest też załączony bardzo prosty odtwarzacz CD Tcl/Tk. Jest to Freeware napisany przez Sam'a Lantinga'ę (slouken@cs.ucdavis.edu). Można go znaleźć na anonimowym FTP na sunsite.unc.edu w katalogu /pub/Linux/apps/sound/soundcard/volume-2.1.tar.gz. 33..22.. SSoouunndd SSttuuddiioo To jest aplikacja Tcl/Tk zapewniająca odtwarzanie, nagrywanie i edycję cyfrowego dźwięku używając sox'a. Zawiera sox'a w swojej dystrybucji, żeby uniknąć problemów z kompatybilnością. Program został napisany przez Paul'a Sharpe'a i N. J. Bailey'a (N.J.Bailey@leeds.ac.uk). Może być darmowo używane i rozpowszechniane, jeżeli zostanie wysłana kartka pocztowa. (greetsy i widoczek dla autorów :-) - przyp. Tygrys) Można go znaleźć na stronie domowej Sound Studio. 33..33.. TTiicckkllee MMuussiicc Ta (_w_e_r_s_j_a _b_e_t_a, Tcl/Tk) przeglądarka plików muzycznych pozwala odtwarzać różne formaty dźwięku dotąd, dokąd odpowiednie programy odtwarzające są zainstalowane na twoim systemie. Standardowo moduły odtwarza gmod, a pliki MIDI mp (możesz zmienić źródła, żeby używać innych programów). Został napisany przez Shannon Hendrix (shendrix@pcs.cnu.edu lub shendrix@escape.widomaker.com). Można go ściągnąć przez anonimowe FTP na sunsite.unc.edu z katalogu /pub/Linux/apps/sound/players/tmusic-1.0.tar.gz. 44.. OOddnnoośśnniikkii 1. Dokumentacja załączona z aplikacjami opisanymi w tym dokumencie 2. Linux Sound HOWTO. Można je znaleźć w Linux Documentation Project. (Polska wersja znajduje się w Projekcie JTZ.) 3. Strony MIDI i dźwięku w Linuxie 4. MPEG Audio Layer 3 FAQ 5. Programmer's Guide to OSS 6. Strona domowa SoX 55.. OOdd ttłłuummaacczzaa Zdaję sobie sprawę, że jest tu mnóstwo mniejszych lub większych błędów. Jest to dopiero wersja 1.0 - vis major, błędy muszą być... :-) Jeżeli jakieś znajdziesz, daj mi znać. Prawa autorskie tłumaczenia - (C)1998 tygrys@fidonet.org.pl. ��������������������������������������������doc-linux-pl-2002.06.14.orig/UMSDOS-HOWTO.pl.txt����������������������������������������������������0100664�0001750�0001750�00000075651�07241614560�017477� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ UMSDOS HOWTO Jacques Gelinas jacques@solucorp.qc.ca v1.1, 13 Listopada 1995 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk PPiieettrryykkaa lleessiioo@@mmaaiill..uuww..eedduu..ppll v1.0, 19 Listopada 2000 _U_m_s_d_o_s to alternatywny dla _E_x_t_2 linuksowy system plików. Jego głównym celem jest ułatwienie współistnienia danych _L_i_n_u_k_s_a i _M_S_-_D_O_S poprzez współdzielenie tej samej partycji. Ten dokument najpierw wyjaśnia, jak używać systemu _U_m_s_d_o_s skonfigurowanego na różne sposoby, później opisuje zasadę jego działania, a następnie podaje informacje, które pozwolą ci zdecydować, czy jest to dla ciebie dobry wybór (zobacz PO CO UMSDOS na końcu dokumentu). Dokument ten został napisany w stan­ dardzie ISO-8859-2. Oryginał tego dokumentu znajduje się np. pod adresem: . Wersja polska znajduje się pod tym samym adresem. ______________________________________________________________________ Spis treści 1. UMSDOS: Skąd się wziął? 1.1 Historia 1.2 Dostępność 1.3 Dystrybucje, które go obsługują 1.4 Strona domowa 1.5 Dokumentacja techniczna 1.6 Kto napisał to HOWTO 2. (EM 2.1 Tryb pseudoroot. 2.2 Co trzeba wiedzieć o trybie pseudoroot 3. Różne tematy dotyczące działania 3.1 Opcje montowania 3.2 Jak skonfigurować ustawienia domyślne dla katalogu głównego 3.3 "Wymieniać albo nie wymieniać, oto jest pytanie" 4. Jak załadować 4.1 Loadlin 4.2 Z dyskietki 4.3 LILO 4.4 Jak zdefragmentować partycję 4.5 Zaawansowane sztuczki 5. Podstawowe zasady działania 5.1 Wprowadzenie 5.2 (EM 5.3 Promowanie katalogów 5.4 Jak promować: 5.5 Używanie 5.6 Jak ODpromować 5.7 A co z plikami utworzonymi podczas sesji 6. Instalowanie/ 6.1 Pseudoroot 6.2 Przygotowanie 6.3 Upewnij się, że 6.4 Oops releasing pseudo root ... 6.5 Jak ODinstalować system 6.6 Przenoszenie systemu 6.7 A gdyby tak zainstalować 50 systemów 7. Ustawianie sekcji 8. PO CO UMSDOS 8.1 Jaki jest cel instalacji 8.2 Kto tego potrzebuje 8.3 Wydajność 9. Od tłumacza ______________________________________________________________________ 11.. UUMMSSDDOOSS:: SSkkąądd ssiięę wwzziiąąłł?? 11..11.. HHiissttoorriiaa Projekt _U_m_s_d_o_s powstał w 1992. W sieci pojawił się w styczniu 1994 w postaci łaty. Do standardowej dystrybucji jądra (wersja 1.1.36) dołączono go w lipcu. Dystrybucja _S_l_a_c_k_w_a_r_e zaadoptowała _U_m_s_d_o_s wcześniej, jeszcze zanim znalazł się w oficjalnej wersji jądra. W jądrze 1.1.60 działanie _U_m_s_d_o_s znacznie ulepszono, szczególnie w zakresie zapisu. Od wersji (mniej więcej) 1.1.70 jest on znowu stabilny. W _L_i_n_u_k_s_i_e 1.2.2 usunięto poważny błąd, który od samego początku sprawiał użytkownikom kłopoty (niektóre pliki same z siebie zmieniały nazwy, co stwarzało niezbyt przyjemne wrażenie, że zostały skasowane). Uważaj, gdyż _S_l_a_c_k_w_a_r_e 2.2 ma wersję jądra 1.2.1, czyli że ten błąd jeszcze się w nim znajduje. 11..22.. DDoossttęęppnnoośśćć _U_m_s_d_o_s jest dostępny jako łata dla jądra 1.0.x. W jądro 1.2 jest już wbudowany. Może być wkompilowany na stałe bądź jako moduł. Pamiętaj, że jeśli zamierzasz ładować _U_m_s_d_o_s jako moduł, tak samo jako moduł musisz też ładować obsługę systemu plików _M_S_-_D_O_S. Bierze się to z ograniczeń w systemie modułów (niektóre symbole mogą być wyeksportowane wyłącznie wtedy, gdy sterowniki są zainstalowane jako moduły). 11..33.. DDyyssttrryybbuuccjjee,, kkttóórree ggoo oobbssłłuugguujjąą Jak na razie tylko _S_l_a_c_k_w_a_r_e obsługuje _U_m_s_d_o_s. Tak mi się wydaje. Na pewno się mylę, więc proszę o przesłanie mi informacji, żebym mógł to poprawić. 11..44.. SSttrroonnaa ddoommoowwaa Stroną domową dla _U_m_s_d_o_s jest . Sprawdź w katalogu /pub/Linux/system/filesystems/umsdos. 11..55.. DDookkuummeennttaaccjjaa tteecchhnniicczznnaa Istnieje dość sporo dokumentacji na temat budowy i działania _U_m_s_d_o_s. Jest ona dostępna w formatach HTML i txt pod tym samym adresem, co użytki. O ile wiem, wersja HTML nie jest dostępna dla bezpośredniego czytania na żadnej stronie w sieci. Musisz ją ściągnąć, "odtarować" i czytać lokalnie. 11..66.. KKttoo nnaappiissaałł ttoo HHOOWWTTOO Jacques Gelinas jacques@solucorp.qc.ca 22.. UUmmssddooss jjaakkoo ttwwoojjaa ppaarrttyyccjjaa rroooott 22..11.. TTrryybb ppsseeuuddoorroooott.. Dzięki _U_m_s_d_o_s, _L_i_n_u_k_s_a można zainstalować na zwykłej partycji _D_O_S. _L_i_n_u_x jest wtedy instalowany jako drugi (lub trzeci) system operacyjny na partycji. Aby uniknąć problemów z nazwami (na dysku C: może znajdować się już katalog bin lub tmp) _U_m_s_d_o_s stosuje pewną sprytną sztuczkę: ppsseeuuddoorroooott. Wszystkie pliki _L_i_n_u_k_s_a instalowane są w podkatalogu _D_O_S_a o nazwie linux. Z reguły jest to C:\LINUX. Umieszczana tam jest typowa struktura plików _L_i_n_u_k_s_a_/_U_n_i_k_s_a. Tak więc otrzymujesz: ˇ C:\LINUX\BIN ˇ C:\LINUX\ETC ˇ C:\LINUX\LIB ˇ C:\LINUX\ROOT ˇ C:\LINUX\SBIN ˇ C:\LINUX\TMP ˇ C:\LINUX\USR ˇ C:\LINUX\VAR Kiedy ładujesz _U_m_s_d_o_s, sprawdza on dysk w poszukiwaniu katalogu linux, a następnie /linux/etc. Jeśli je znajdzie, uruchamia tryb pseudoroot. Przede wszystkim tryb pseudoroot przełącza główny katalog partycji do C:\LINUX, co daje w efekcie standardowy układ plików _U_n_i_k_s_a ˇ /bin ˇ /etc ˇ /lib ˇ /root ˇ /sbin ˇ /tmp ˇ /usr ˇ /var Do tej listy _U_m_s_d_o_s dodaje nowy katalog o nazwie DOS. Jest to katalog wirtualny. 22..22.. CCoo ttrrzzeebbaa wwiieeddzziieećć oo ttrryybbiiee ppsseeuuddoorroooott ˇ Tryb pseudoroot można uruchomić wyłącznie podczas startu systemu. Nie można uruchomić go poleceniem _m_o_u_n_t. ˇ Ten mechanizm to zupełnie inne podejście do zwykłego systemu plików _U_m_s_d_o_s. To znaczy, że partycję, zwykle używaną jako główną, można zamontować normalnie, bez stosowania czegoś takiego jak pseudoroot. Przykładowo, jeśli ładujesz _L_i_n_u_k_s_a z dyskietki i montujesz swoją zwykłą partycję główną pod /mnt, wszystkie twoje linuksowe katalogi będą w /mnt/linux/bin, /mnt/linux/etc i tak dalej. 33.. RRóóżżnnee tteemmaattyy ddoottyycczząąccee ddzziiaałłaanniiaa UUmmssddooss 33..11.. OOppccjjee mmoonnttoowwaanniiaa Możesz używać tych samych opcji montowania, co dla systemu plików _M_S_- _D_O_S. W systemie _U_m_s_d_o_s można mieć zastrzeżenia co do opcji conv=. Sugeruję, żeby jej nie stosować. Większość opcji, których być może będziesz używał, to: ˇ uid= ˇ gid= ˇ umask= Pamiętaj tylko, że _U_m_s_d_o_s obsługuje niepromowane katalogi tak samo, jak system _M_S_-_D_O_S. Powyższe opcje będą stosowane globalnie dla wszystkich niepromowanych katalogów. _u_i_d ustawia domyślnego właściciela, _g_i_d ustawia domyślną grupę, zaś _u_m_a_s_k ustawia domyślne prawa dostępu. 33..22.. JJaakk sskkoonnffiigguurroowwaaćć uussttaawwiieenniiaa ddoommyyśśllnnee ddllaa kkaattaalloogguu ggłłóówwnneeggoo Aby umożliwić w czasie rzeczywistym ustawienie domyślnego właściciela katalogu głównego, utworzono _u_m_s_s_e_t_u_p. Dla innych partycji _U_m_s_d_o_s można użyć albo polecenia mount, albo umssetup. Dla nich najlepiej zapisać opcje montowania w /etc/fstab Oto przykład. Dopisz go do /etc/rc.d/rc.S: /sbin/umssetup -u jack -g group -m 0755 / 33..33.. ""WWyymmiieenniiaaćć aallbboo nniiee wwyymmiieenniiaaćć,, oottoo jjeesstt ppyyttaanniiee"" Plik wymiany jest generalnie wolniejszy w działaniu, niż partycja wymiany, ale taka opcja daje więcej możliwości. Można ustawić plik wymiany na partycji _U_m_s_d_o_s tak samo, jak dla każdego innego linuksowego systemu plików. Przykładowo, aby ustawić 8-megabajtowy plik wymiany w katalogu głównym: dd if=/dev/zero bs=1024k count=8 of=/swap mkswap /swap 8192 sync swapon /swap Następnie dopisz następujący wiersz do pliku /etc/fstab: /swap swap swap default Plik wymiany będzie wówczas aktywowany przy każdym uruchomieniu systemu. Z reguły w pliku /etc/rc.d/rc.S jest już wiersz "swapon -a". 44.. JJaakk zzaałłaaddoowwaaćć UUmmssddooss 44..11.. LLooaaddlliinn Pakiet loadlin15.tgz jest dostępny pod adresem w katalogu _/_p_u_b_/_l_i_n_u_x_/_s_y_s_t_e_m_/_b_o_o_t_u_t_i_l_s. Narzędzie to zostało przystosowane do bootowania systemu na _U_m_s_d_o_s. Właściwie wszystko, co musisz zrobić, to: Uruchom DOS C:>loadlinx zImage root=D: gdzie _z_I_m_a_g_e to zwykły obraz jądra (skompresowany), skopiowany po prostu gdzieś na dysk _D_O_S. C: to dysk _D_O_Sowy, na którym zainstalowałeś _L_i_n_u_k_s_a. 44..22.. ZZ ddyysskkiieettkkii Ładowanie systemu na _U_m_s_d_o_s z dyskietki nie różni się od ładowania systemu na _E_x_t_2. Plik jądra _z_I_m_a_g_e musi zostać poprawnie skonfigurowany, aby zlokalizować twoją główną partycję systemu na _U_m_s_d_o_s. Z reguły można to osiągnąć przy pomocy polecenia rdev. Następująca sekwencja poleceń skonfiguruje _z_I_m_a_g_e i zapisze go na dyskietce. rdev zImage /dev/hda1 rdev -R zImage 0 dd if=zImage bs=8192 of=/dev/fd0 Jeśli nic z tego nie rozumiesz, po prostu sformatuj startową dyskietkę DOS i zapisz na niej następujące składniki: ˇ loadlin.exe ˇ loadlinx.exe ˇ zImage i w pliku autoexec.bat dopisz: loadlinx zImage rw root=C: 44..33.. LLIILLOO Do ładowania systemu na _U_m_s_d_o_s można też wykorzystać menedżer startowy _L_i_n_u_k_s_a - LLIILLOO. Niestety nie mam z tym doświadczenia. Powino działać od wersji 1.1.60. Wyślij mi e-maila, jeśli coś o tym wiesz. 44..44.. JJaakk zzddeeffrraaggmmeennttoowwaaćć ppaarrttyyccjjęę UUmmssddooss Można to zrobić przy pomocy jakiegokolwiek narzędzia _D_O_S. Pliki utworzone przez _U_m_s_d_o_s nie wyróżniają się niczym szczególnym. Ponadto _U_m_s_d_o_s nie wymaga niczego nadzwyczajnego (układu katalogów, sekwencji nazw katalogów itd...) od swojego systemu plików. O ile wiem, nie ma żadnego narzędzia do defragmentacji dla _L_i_n_u_k_s_a. 44..55.. ZZaaaawwaannssoowwaannee sszzttuucczzkkii _U_m_s_d_o_s do działania potrzebuje pliku --linux-.---, który z kolei potrzebuje katalogu _D_O_S. Dla użytkowników lubiących eksperymentować jest program udosctl, część pakietu umsdos_progs (zawierającego umssync i umssetup) umożliwia podstawowe operacje na katalogach (wyświetlanie zawartości, kasowanie) niezależnie od pliku --linux-.--- i katalogu _D_O_S. 55.. PPooddssttaawwoowwee zzaassaaddyy ddzziiaałłaanniiaa 55..11.. WWpprroowwaaddzzeenniiee _U_m_s_d_o_s przemapowuje pliki _L_i_n_u_k_s_a bezpośrednio do plików _M_S_-_D_O_S. Jest to translacja jeden do jednego. Zawartość pliku w ogóle nie jest zmieniana. _U_m_s_d_o_s funkcjonuje tylko na nazwach. Pliki specjalne (na przykład dowiązania i urządzenia) zarządzane są w sposób specjalny. W każdym katalogu znajduje się plik o nazwie --linux-.---. 55..22.. UUmmssddooss mmoożżee zzaassttąąppiićć ssyysstteemm pplliikkóóww MMSS--DDOOSS .. O _U_m_s_d_o_s można myśleć jako o uniwersalnej specjalnej konfiguracji linuksowego systemu plików _M_S_-_D_O_S. W praktyce ta cecha i możliwość dostosowania wprowadzają zamieszanie w _U_m_s_d_o_s. Oto dlaczego. Spróbuj zamontować nowo sformatowaną dyskietkę _D_O_S tak, jak tutaj: mount -t umsdos /dev/fd0 /mnt Następnie wykonaj: ls / >/mnt/LONGFILENAME ls -l /mnt Otrzymasz następujący rezultat: -rwxr-xr-x 1 root root 302 Apr 14 23:25 longfile Jak na razie wygląda na to, że system plików _U_m_s_d_o_s nie robi o wiele więcej (w praktyce zupełnie nic nie robi), niż zwykły system plików _M_S_-_D_O_S z _L_i_n_u_k_s_e_m. _?_?_? 55..33.. PPrroommoowwaanniiee kkaattaallooggóóww Jak na razie nic nadzwyczajnego. Oto cała sztuczka. Jeśli katalog _D_O_S nie jest promowany, to będzie zarządzany tak samo w _U_m_s_d_o_s, jak i w _M_S_-_D_O_S. _U_m_s_d_o_s stosuje specjalny plik w każdym podkatalogu, do uzyskania translacji rozszerzonych właściwości atrybutów plików (długa nazwa, właściciel itd...) systemu _U_m_s_d_o_s i ograniczeń _D_O_S_a. Ten plik jest niewidoczny dla użytkowników _U_m_s_d_o_s, ale widać go, gdy ładujesz _D_O_S. Żeby uniknąć niepotrzebnego zagracania partycji _D_O_S tymi plikami (--linux-.---), są one opcjonalne. Jeśli ich nie ma, _U_m_s_d_o_s zachowuje się tak, jak _M_S_-_D_O_S. Kiedy katalog jest promowany, wszelkie kolejne operacje będą wykonywane z pełną składnią zwykle dostępną dla użytkowników _L_i_n_u_k_s_a i _U_n_i_k_s_a. W dodatku wszystkie później utworzone katalogi będą domyślnie promowane. Ta właściwość pozwala Ci na logiczny podział swojej partycji _D_O_S na materiał linuksowy i dosowy. Trzeba też zdać sobie sprawę z tego, że pliki --linux-.--- zajmują miejsce (mniej więcej 2k na katalog). _D_O_S używa z reguły dużych klastrów (16k dla partycji 500MB), tak że unikanie tworzenia takiego pliku wszędzie, gdzie się da, może zaoszczędzić wiele miejsca. 55..44.. JJaakk pprroommoowwaaćć:: //ssbbiinn//uummssssyynncc Promować katalog możesz kiedy chcesz, dzięki /sbin/umssync. Można go zastosować w każdym momencie. Żeby wypromować katalog, wykonaj następujące operacje: ˇ Utwórz plik --linux-.---. ˇ Popraw ww. plik, tak aby odzwierciedlał zawartość bieżącego katalogu. /sbin/umssync zarządza istniejącym plikiem --linux-.---. Nie tworzy go jednak za każdym razem od początku. Po prostu dodaje do niego brakujące pozycje (pliki utworzone podczas sesji _D_O_S). Usuwa również z niego pozycje plików, które zostały usunięte z katalogu _D_O_S. Nazwa umssync bierze się właśnie stąd, że synchronizuje zawartość pliku _-_-_l_i_n_u_x_-_._-_-_- z odpowiednim katalogiem _D_O_S. 55..55.. UUżżyywwaanniiee //ssbbiinn//uummssssyynncc ppooddcczzaass uurruucchhaammiiaanniiaa kkoommppuutteerraa Dobrze jest umieścić wiersz uruchamiający /sbin/umssync na końcu pliku /etc/rc.d/rc.S, jeśli go tam nie ma. Następujące polecenie jest poprawne dla większości systemów: /sbin/umssync -r99 -c -i+ / Opcja -c uniemożliwia umssync promowanie katalogów. Uaktualni on jedynie istniejące pliki --linux-.---. To polecenie przydaje się, jeśli potrzebujesz dostępu do katalogu _l_i_n_u_x podczas sesji _D_O_Sa. _L_i_n_u_x nie potrafi poinformować, że katalog został zmodyfikowany przez _D_O_S, tak więc _U_m_s_d_o_s nie może wykonać operacji _u_m_s_s_y_n_c jak należy. 55..66.. JJaakk OODDpprroommoowwaaćć Skasuj plik --linux-.--- z poziomu _D_O_S_a. Będziesz tego żałował. 55..77.. AA ccoo zz pplliikkaammii uuttwwoorrzzoonnyymmii ppooddcczzaass sseessjjii DDOOSS ?? Jeśli nie używasz umssync w katalogu, w którym pliki zostały dodane lub skasowane przez _D_O_S, zauważysz kilka problemów: ˇ Nie spowoduje to padnięcia systemu ani żadnych poważnych kłopotów, ale będziesz się denerwować :-) ˇ Pliki utworzone przez _D_O_S: ˇ Będą niewidoczne z poziomu _L_i_n_u_k_s_a. ˇ Kiedy spróbujesz utworzyć plik o tej samej nazwie, dostaniesz komunikat o błędzie, że taki plik już istnieje. ˇ Powoduje to więcej zamieszania niż prawdziwego problemu. Nie uszkadza to systemu plików. ˇ Pliki skasowane przez _D_O_S to nie problem. _U_m_s_d_o_s zauważy ich brak od razu przy pierwszym uruchomieniu i wygeneruje wiadomość (zwykle zapisując ją w pliku /var/adm/syslog). 66.. IInnssttaalloowwaanniiee// OODD iinnssttaalloowwyywwaanniiee ii kkiillkkaa sszzttuucczzeekk Instalacja _U_m_s_d_o_s nie różni się wiele od instalacji zwykłego _L_i_n_u_k_s_a (opartego na _E_x_t_2). Są tu dwie zasadnicze różnice. 66..11.. PPsseeuuddoorroooott //mmnntt//lliinnuuxx Normalne etapy instalacji to: 1. Ustawienie partycji przy pomocy _f_d_i_s_k_a i sformatowanie jej. 2. Zamontowanie jej jako /mnt odpowiednio do tego, gdzie jest główny system plików. 3. Skopiowanie wszystkich pakietów do /mnt. W przypadku _U_m_s_d_o_s krok pierwszy nie jest potrzebny (czy brak potrzeby ponownego formatowania nie był właśnie celem _U_m_s_d_o_s?). Można zainstalować system _U_m_s_d_o_s po prostu kopiując wszystkie pakiety do /mnt. To oczywiście będzie działać. Ale utworzy to całą kupę podkatalogów w twoim głównym katalogu _D_O_S (C:), a to ci się nie spodoba. Właśnie dlatego wszystkie instalacje _U_m_s_d_o_s stosują pseudoroot. I to jest najważniejsza różnica między zwykłą instalacją _E_x_t_2 a instalacją _U_m_s_d_o_s: wszystki pliki kopiowane są do /mnt/linux. 66..22.. PPrrzzyyggoottoowwaanniiee //mmnntt//lliinnuuxx /mnt/linux to nie zwykły katalog. Musi on być promowany, aby poprawnie obsługiwać linuksowe długie nazwy plików i pliki specjalne (dowiązania, urządzenia). Kroki potrzebne do utworzenia /mnt/linux to: 1. mkdir /mnt/linux 2. umssync /mnt/linux I już! 66..33.. sskkoonnffiigguurroowwaannyy UUppeewwnniijj ssiięę,, żżee //mmnntt//lliinnuuxx jjeesstt ppoopprraawwnniiee Jeśli nawet skonfigurowanie /mnt/linux to łatwizna, jest wiele pakietów instalacyjnych, które powodują, że coś źle działa. Dlaczego? Najpoważniejszy problem podczas instalacji bierze się z niekompatybilności umssync. W wersji _L_i_n_u_k_s_a 1.1.88 (nie pamiętam dokładnie) uaktualniono _U_m_s_d_o_s i wykryto błąd w umssync. Aby uniknąć bałaganu wśród społeczności linuksowej, zdecydowano zwiększyć kompatybilność wszystkich narzędzi _U_m_s_d_o_s. Stare wersje narzędzi po prostu odrzucono. Wygląda na to, że wiele dystrybucji nie uaktualniło swojego programu umssync na dysku instalacyjnym. Jest jeszcze wiele podobnych dystrybucji. Efekt tego jest po prostu taki, że katalog /mnt/linux w ogóle nie jest promowany i w rezultacie "obetnie" wszystkie długie nazwy plików i odrzuci wszystkie pliki specjalne. Można bardzo wcześnie, jeszcze podczas instalacji, wykonać test, aby dowiedzieć się, czy coś poszło nie tak. Dzięki mechanizmowi konsoli wirtualnych _L_i_n_u_k_s_a możesz to zrobić bez opuszczania programu instalacyjnego. Wykonaj następujące kroki: 1. Wciśnij Alt-F2 (klawisz Alt w tym samym momencie, co klawisz F2). 2. Zaloguj się jako root. 3. cd /mnt/linux Jeśli to nie działa, próbujesz za wcześnie. Najlepiej przeprowadzić te kroki pod koniec selekcji pakietów. 4. >TOTO 5. ls -l Powinieneś zobaczyć pusty plik TOTO pisany wielkimi literami. Jeśli jest napisany małymi literami, to coś poszło nie tak. Spróbuj ponownie wykonać umssync. Można go używać raz po raz ( :-) ) bez problemu. umssync Jeśli nie ma komunikatu o błędzie, spróbuj znowu wykonać test TOTO. Jeśli TOTO wygląda jak trzeba, to wszystko jest w porządku. Jest w tej instalacji coś dziwnego, ale po prostu ją zapisz i kontynuuj. 6. Wciśnij Alt-F1, aby powrócić do ekranu instalacyjnego. Jeśli test się nie powiódł, najprościej to naprawić poprzez zaopatrzenie się w nowszą dyskietkę instalacyjną root. Można z reguły taką dyskietkę naprawić poprzez instalację nowszej wersji umssync. Nie jest to trudne, ale potrzebny jest do tego komputer z działającym _L_i_n_u_k_s_e_m. Musisz po prostu zamontować dyskietkę root i wymienić źle działający umssync na nowy. 66..44.. OOooppss rreelleeaassiinngg ppsseeuuddoo rroooott ...... Większość instalacji _U_m_s_d_o_s, w których coś się nie udaje, wypisuje na ekranie taką dziwną wiadomość. Nie jest to błąd w _U_m_s_d_o_s, chociaż wygląda to osobliwie. Oto znane powody: ˇ Najczęstszy z nich Instalacja _S_l_a_c_k_w_a_r_e próbuje ustawić plik wymiany już na początku instalacji. Aby to zrobić, najpierw proszony jesteś o wybranie partycji (napędu _D_O_S), następnie zamontowanie jej i ustawienie pliku wymiany. Podczas instalacji systemu _S_l_a_c_k_w_a_r_e musisz ustawić docelową partycję jeszcze przed instalacją. Z reguły system montuje partycję _D_O_S w /mnt, tworzy katalog /mnt/linux i wykonuje w nim umssync. To właśnie stąd bierze się najwięcej problemów. Większość użytkowników po prostu zapomina "ustawić partycję docelową" i bezpośrednio przechodzi do reszty instalacji. Ponieważ /mnt jest już zamontowany, ta pomyłka uchodzi niezauważona. To znaczy, że /mnt/linux nie został utworzony poprawnie (nie wypromowany). Nie można poprawnie utworzyć wszystkich plików specjalnych, dowiązań i długich nazw. ˇ Niewłaściwy program _u_m_s_s_y_n_c /mnt/linux został źle ustawiony. Najczęściej spowodowane jest to niewłaściwą wersją programu umssync na dysku instalacyjnym. ˇ Stary błąd w _U_m_s_d_o_s W wersji _U_m_s_d_o_s przed _L_i_n_u_k_s_e_m _1_._2_._2 był błąd. Tryb pseudoroot nie aktywował się poprawnie, gdy brakowało pliku /etc/init. init znajduje się teraz w /sbin. Możesz to naprawić, zaopatrzywszy się w nowszą wersję jądra. Jest to zalecane, w wersji 1.2.2 wykryto i poprawiono jeszcze inny błąd. Jeśli nie masz możliwości aktualizacji, zrób coś takiego: 1. Załaduj system z dyskietki instalacyjnej. 2. Zaloguj się jako root. 3. mount -t umsdos /dev/hdXX /mnt gdzie /dev/hdXX to twoja partycja _D_O_S. 4. cd /mnt/linux/etc 5. ln -s ../sbin/init init 6. cd / 7. Ctrl-Alt-Del 8. Załaduj _U_m_s_d_o_s normalnie. Niestety pierwsze dwa problemy (te z instalacją) w rezultacie powodują, że instalacja jest kompletnie do niczego. Odinstaluj _U_m_s_d_o_s (zobacz w następnym podpunkcie) i zainstaluj jeszcze raz. 66..55.. JJaakk OODDiinnssttaalloowwaaćć ssyysstteemm UUmmssddooss Jedną fajną rzeczą w _U_m_s_d_o_s i mechanizmie pseudoroot jest to, że można go bez kłopotu OODDinstalować. Po prostu uruchamiasz _D_O_S_a i kasujesz katalog linux. To wszystko. _U_m_s_d_o_s nie potrzebuje żadnych specjalnych sterowników w config.sys, nie tworzy też nic specjalnego poza katalogiem linux. 66..66.. PPrrzzeennoosszzeenniiee ssyysstteemmuu UUmmssddooss nnaa iinnnnyy nnaappęędd zz DDOOSSeemm Można to zrobić albo z poziomu _L_i_n_u_k_s_a, albo spod _D_O_S_a. Wystarczy tylko skopiować cały katalog linux z jednego dysku na drugi. Potem trzeba dostosować mechanizm ładowania (z reguły polecenie loadlin) i plik /etc/fstab. _U_m_s_d_o_s może istnieć na jakimkolwiek dysku _D_O_S_o_w_y_m. Nie trzeba instalować go na dysku C:, ani w ogóle na pierwszym dysku twardym. Nie ma to żadnego znaczenia. W rzeczywistości jeśli chcesz, to możesz mieć kilka instalacji _U_m_s_d_o_s na różnych dyskach tylko po to, żeby poeksperymentować. 66..77.. AA ggddyybbyy ttaakk zzaaiinnssttaalloowwaaćć 5500 ssyysstteemmóóww UUmmssddooss A co, gdyby chcieć zainstalować wiele _L_i_n_u_k_s_ó_w w krótkim czasie? Systemy _U_m_s_d_o_s istnieją w świecie _D_O_S. Możesz to wykorzystać, jeśli chcesz łatwo zainstalować _L_i_n_u_k_s_a. Możesz zainstalować i skonfigurować _U_m_s_d_o_s na swojej stronie internetowej. Kiedy będziesz zadowolony z wyników konfiguracji i pakietów, które wybrałeś, możesz załadować _D_O_S_a i skopiować cały katalog linux do swojego dosowego serwera plików. Można następnie uruchomić inną stację z _D_O_S_e_m i po prostu skopiować pliki z sieciowego systemu plików na dysk lokalny. I to wszystko. Trzeba tylko dostosować skrypt ładujący (_l_o_a_d_l_i_n_x) i gotowe. Przy minimalnej zmianie ustawień (nazwa hosta, numer IP) każdy będzie mógł zainstalować _L_i_n_u_k_s_a w kilka chwil. Dla zainteresowanych: instalacja systemów linuksowych poprzez kopiowanie włączonych systemów działa również dla innych _L_i_n_u_k_s_ó_w, w tym tych opartych na _E_x_t_2. Piękne w _L_i_n_u_k_s_i_e jest to, że nie ma tam żadnych ukrytych plików, które trzeba instalować przy pomocy magicznych programów instalacyjnych. 77.. UUssttaawwiiaanniiee sseekkccjjii LLiinnuuxx nnaa ppaarrttyyccjjii DDOOSS _U_m_s_d_o_s nadaje się nawet dla użytkowników _E_x_t_2 (rodzinny system plików _L_i_n_u_k_s_a). Często ma miejsce taka sytuacja: ˇ _L_i_n_u_x jest twoim wybranym systemem, partycja linuksowa zaczyna się wypełniać i wypełniać i wypełniać... ˇ Partycja _D_O_S pokrywa się kurzem, pozostając na wpół pusta. ˇ Nagle zaczyna brakować ci miejsca na partycji _E_x_t_2. ˇ Ciągle nie jesteś pewny, że chcesz pozbyć się _D_O_S_a. Tu właśnie może pomóc _U_m_s_d_o_s. Możesz stworzyć katalog _L_i_n_u_x na partycji _D_O_S i bez ograniczeń korzystać z niego spod _L_i_n_u_k_s_a. Dla przykładu, chcesz utworzyć nowy katalog o nazwie "extra" na swoim dysku C:. Chcesz też, aby działał on podobnie, jak normalny katalog linuksowy. Zrób tak (zakładając, że C: to /dev/hda1): mkdir /c /sbin/mount -t umsdos /dev/hda1 /c mkdir /c/extra umssync /c/extra Musisz do tego mieć uprawnienia roota. Jeśli ustawisz /etc/fstab w odpowiedni sposób, zawsze będziesz miał dostęp do katalogu /c/extra. 88.. PPOO CCOO UUMMSSDDOOSS Nie wystarczy wyjaśnić, jak zainstalować i posługiwać się systemem _U_m_s_d_o_s. Większość ludzi chce się dowiedzieć, czy warto używać _U_m_s_d_o_s, czy nie. 88..11.. JJaakkii jjeesstt cceell iinnssttaallaaccjjii UUmmssddooss Celem tym było ułatwienie instalacji _L_i_n_u_k_s_a. Innym celem było ułatwienie jego OODDinstalowania. Ideą była promocja _L_i_n_u_k_s_a. Instalacja nowego systemu operacyjnego zawsze sprawia kłopoty. Na przykład _O_S_/_2 zaśmieci twój główny dysk C: całym mnóstwem nowych katalogów. Jeśli jesteś tak sprytny, jak ja, skasuje on również twoje pliki config.sys i autoexec.bat :-( Tryb pseudoroot systemu _U_m_s_d_o_s pozwala na uniknięcie tej niechcianej ingerencji. Można odinstalować _L_i_n_u_k_s_a bez skutków ubocznych. 88..22.. KKttoo tteeggoo ppoottrrzzeebbuujjee Jeśli masz mały dysk, _U_m_s_d_o_s da ci możliwość dzielenia przestrzeni na dysku między _D_O_S_e_m a _L_i_n_u_k_s_e_m Dysk poniżej 300 MB to według mnie mały dysk. Opieram swoją opinię na rozmiarach dostępnych pakietów. Pewien popularny procesor teksu może zająć 70 MB, jeśli wybierze się wszystkie opcje. Jeśli masz większy dysk, możesz rozważyć posiadanie wydzielonej partycji linuksowej z systemem plików _E_x_t_2. _E_x_t_2używa mniejszych klastrów niż _D_O_S (faktycznie jest to 1k), więc kiedy tworzysz wiele małych plików, zajmie to mniej miejsca, niż na partycji _U_m_s_d_o_s. 88..33.. WWyyddaajjnnoośśćć Poniższe punkty dotyczą porównania _U_m_s_d_o_s z _E_x_t_2. ˇ Zarządzanie katalogami jest szybsze w _E_x_t_2. Bierze się to z ogólnej podwójnej struktury katalogu _U_m_s_d_o_s. ˇ Dostęp do plików (odczyt i zapis) jest prawdopodobnie szybszy w _U_m_s_d_o_s, niż w _E_x_t_2. Bierze się to z nieskomplikowanej budowy systemu plików _F_A_T, używanego przez _D_O_S. Uwaga: ta prostota kosztuje: ˇ Najwyżej około 65 000 plików lub klastrów na partycję. Znaczy to również, że partycja 500MB będzie używać 16k klastrów. Innymi słowy, plik zawierający jeden bajt, zajmie 16k miejsca na dysku. ˇ Wszystko jest kontrolowane przez FAT (file allocation table - tablica alokacji plików) umieszczoną na początku dysku twardego. System plików _D_O_S jest z tego powodu prawdopodobnie bardziej podatny na uszkodzenia. ˇ Nie ma możliwości uniknięcia fragmentacji plików. System _U_m_s_d_o_sz reguły będzie używany jako pojedyńcza stacja robocza. W takim przypadku fragmentacja nie ma znaczenia. Jednakże jeśli z komputera będzie korzystać wielu użytkowników, pliki rozlezą się po całym dysku, co spowoduje spadek wydajności dostępu do plików. ˇ Dowiązania symboliczne są zapisywane jako normalne pliki. Jeśli zamierzasz mieć ich dużo, zobaczysz, że _U_m_s_d_o_s zabiera o wiele więcej miejsca na dysku w porównaniu do _E_x_t_2. 99.. OOdd ttłłuummaacczzaa Tłumaczenie to jest chronione prawami autorskimi Š Leszka Pietryki. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Nie zmieniłem zasadniczej treści dokumentu. Dodałem tylko odnośniki do stron z polskimi wersjami tłumaczeń dokumentów HOWTO oraz pozmieniałem kilka znaczników w celach estetyki. Jeśli znajdziesz tu jakieś poważne błędy, literówki itp., wyślij mi, proszę, e-maila, żebym mógł je poprawić. Nie ponoszę żadnej odpowiedzialności za ewentualne efekty stosowania się do rad zawartych w tym dokumencie. ���������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/User-Group-HOWTO.pl.txt������������������������������������������������0100664�0001750�0001750�00000174156�07457640740�020505� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ O Grupach Użytkowników Linuksa (LUG-ach) Autor: Kendall Grant Clark <mailto:kclark@cmpu.net> v.1.6.2, 24 kwietnia 1998 WWeerrssjjaa ppoollsskkaa:: TToommaasszz ``ttssccaa'' SSiieenniicckkii,, ttssccaa@@ccrryyooggeenn..ccoomm v1.0, 30 czerwca 1999 Dokument ten służyć ma pomocą w zakładaniu, prowadzeniu i rozbudowywa­ niu Grup Użytkownków Linuksa (LUG-ów). ______________________________________________________________________ Spis treści 1. Wstęp 1.1 Cel tego dokumentu 1.2 Inne źródła informacji 2. Czym jest Grupa Użytkowników Linuksa? 2.1 Czym jest Linux? 2.2 Co to znaczy, że Linux jest wyjątkowy? 2.3 Czym jest Grupa Użytkowników? 2.4 Podsumowanie 3. Istniejące Grupy Użytkowników Linuksa 3.1 Listy LUG-ów 3.2 Jedność kontra wygoda 4. Czym zajmują się LUG-i? 4.1 Promowanie Linuksa 4.2 Nauczanie Linuksa 4.3 Pomoc 4.3.1 Użytkownicy 4.3.2 Konsultanci 4.3.3 Firmy, szkoły i organizacje typu non-profit 4.3.4 Rozwój wolnodostępnego oprogramowania 4.3.4.1 Chris Browne o finansowym wsparciu idei oprogramowania wolnodostępnego 4.3.5 Społeczność Linuksa 4.4 Linux socjalizuje 5. Działanie lokalnych LUG-ów 5.1 Spotkania 5.2 Zasoby w sieci 6. Praktyczne wskazówki 6.1 Organizacje udzielające wsparcia Linuksowi 6.2 Zakładanie LUG-a 6.3 Prowadzenie i rozwijanie LUG-a 7. Zagadnienia prawne i polityczne 7.1 Zagadnienia prawne 7.1.1 Stany Zjednoczone 7.1.2 Kanada 7.2 Zagadnienia politczne 7.2.1 Wątpliwości na temat idei wolnodostępnego oprogramowania. 7.2.2 Organizacje typu non-profit i problem pieniędzy 8. O tym dokumencie 8.1 Warunki stosowania 8.2 Nowe wersje 8.3 Pomóż w tworzeniu tego dokumentu! 8.4 Historia dokumentu 8.5 Podziękowania 9. Od tłumacza ______________________________________________________________________ 11.. WWssttęępp 11..11.. CCeell tteeggoo ddookkuummeennttuu Dokument ten służyć ma pomocą w zakładaniu, prowadzeniu i rozbudowywaniu Grup Użytkownków Linuksa (zwanych dalej LUG-ami). Linux jest wolnodostępną wersją Unix-a na komputery osobiste, serwery i stacje robocze. Stworzony został na procesory i386, w tej chwili obsługiwane są również i486, Pentium, Pentium Pro, Pentium II (oraz klony x86 produkowane przez AMD, Cyrix itd), SPARC-e, DEC-Alpha, PowerPC/PowerMac, Motorola 68x0 (Amiga i Mac). 11..22.. IInnnnee źźrróóddłłaa iinnffoorrmmaaccjjii Jeśli chcesz dowiedzieć się więcej na temat Linuksa, rozpocznij od Linux Documentation Project <http://sunsite.unc.edu/LDP/>. Ogólne informacje na temat grup użytkowników komputerów znajdziesz w zasobach Stowarzyszenia Grup Użytkowników Komputerów Osobistych (Association of PC Users Groups) <http://www.apcug.org/>. 22.. CCzzyymm jjeesstt GGrruuppaa UUżżyyttkkoowwnniikkóóww LLiinnuukkssaa?? 22..11.. CCzzyymm jjeesstt LLiinnuuxx?? Aby w pełni pojąć i docenić ważką rolę odgrywaną w społeczności Linuksa przez LUG-i istotne jest zrozumienie co takiego czyni Linuksa wyjątkowym systemem operacyjnym. Linux jest potężnym i niezwykle efektywnym OS-em, a rozumiany jako ucieleśnienie _i_d_e_i rozwoju oprogramowania jest jeszcze potężniejszy. Linux, dzięki oparciu o licencję GNU, jest ddaarrmmoowwyy ii ooggóóllnnooddoossttęęppnnyy. Kod źródłowy -- zawsze dostępny dla wszystkich zainteresowanych -- jest rozwijany pod technicznym nadzorem Linusa Torvaldsa i innych głównych koordynatorów przez niepowiązaną w struktury grupę programistów na całym świecie. Linux rozwija się bez centralnego sterowania, biurokracji, ani ciała zajmującego się nadzorem, koordynacją, czy kierunkowaniem działań. Sytuacja taka stanowi lwią część uroku tego systemu, zapewnia mu techniczną jakość, ale jest również przyczyną nieefektywnego wykorzystania zasobów ludzkich (również na polu nauczania nowych użytkowników) oraz nieskutecznej - lub wręcz szkodliwej - promocji (a co za tym idzie tworzenia niewłaściwego wizerunku systemu). 22..22.. CCoo ttoo zznnaacczzyy,, żżee LLiinnuuxx jjeesstt wwyyjjąąttkkoowwyy?? Na szczęście nic nie zapowiada zmiany luźnej struktury projektu. Linux istnieje, ponieważ ludzie mogą przyłączać się do projektu i odchodzić - i zależy to tylko od nich. WWoollnnyy pprrooggrraammiissttaa jjeesstt sszzcczzęęśślliiwwyymm pprrooggrraammiissttąą jjeesstt eeffeekkttyywwnnyymm pprrooggrraammiissttąą. Jednak owa luźna struktura może nieco skomplikować życie przeciętnego użytkownika, szczególnie jeśli nie jest on programistą z zawodu lub powołania. Dokąd zwrócić się o pomoc? Gdzie szukać kursów? Gdzie dowiedzieć się, do jakich celów Linux nadaje się najlepiej? Odpowiedziami na wiele z tych pytań powinny służyć LUG-i biorąc na siebie zadania wypełniane normalnie przez lokalne biura koropracji, w przypadku Linuksa naturalnie nieistniejące. Dlatego właśnie lokalne grupy użytkowników są tak ważne. Linux jest wyjątkowy, ponieważ zadania takie jak planowanie wykorzystania zasobów, nauczanie użytkowników, czy udzielanie wszelkiego rodzaju pomocy nie są odgórnie ani centralnie sterowane przez żadną ociężałą strukturę biurokratyczną. Zadania te, wykonywane przez wiele podmiotów (Internet, konsultantów, handlowców, szkoły i uniwersytety), coraz częściej przejmowane są przez lokalne LUG-i. 22..33.. CCzzyymm jjeesstt GGrruuppaa UUżżyyttkkoowwnniikkóóww?? Grupy Użytkowników Komputerów nie są niczym nowym, przynajmniej w Stanach Zjednoczonych. W istocie odegrały one istotną rolę w historii komputeryzacji. Powstanie komputera osobistego było w dużej mierze odpowiedzią na zapotrzebowanie grup zrzeszających pasjonatów elektroniki, radia HAM, oraz innych hobbystów i uczestników różnego rodzaju prezentacji i spotkań handlowych na prosty dostęp do niedrogiego sprzętu liczącego, gromadzącego i przetwarzającego dane. Naturalnie po pewnym czasie giganty takie jak IBM odkryły, że PC może być źródłem dochodu, ale impet swojego rozwoju zawdzięcza komputer osobisty głównie zwykłym użytkownikom, ich pracy i potrzebom. Charakter tych grup zmienił się z czasem, często na gorsze. Szeroko opisywane były finansowe kłopoty największej kiedykolwiek istniejącej grupy Boston Computer Society <http://www.bcs.org/>, a i w innych grupach w całych Stanach Zjednoczonych zmniejszyła się ilość członków. W okresie rozkwitu amerykańskie grupy użytkowników koncentrowały się na wydawaniu broszur informacyjnych, utrzymywaniu dyskietkowych bibliotek oprogramowania shareware, organizowaniu spotkań (także towarzyskich), a czasem nawet BBS-ów. Jednak z rozpowszechnieniem się Internetu wiele aspektów działalności tych grup przejętych zostało przez CompuServe, AOL i, ogólnie, sieć. Powstanie Linuksa zbiegło się (a nawet zostało przyspieszone przez) z ogólnym ,,odkryciem'' Internetu. Wraz z rozwojem popularności Internetu wzrastała popularność Linuksa. Internet przysporzył społeczności Linuksa nowych użytkowników, programistów i handlowców. W momencie więc, gdy ilość tradycyjnych grup użytkowników komputerów osobistych zmniejszała się z powodu popularności Internetu, ta właśnie popularność popchnęła Linuksa do przodu i stworzyła zapotrzebowanie na grupy temu konkretnie systemowi poświęcone. Prostym przykładem pokazującym odmienność LUG-ów od tradycyjnych grup użytkowników jest podejście do sprawy kopiowania i wymiany programów podczas spotkań członków. Tradycyjne grupy zmuszone były do ścisłej kontroli rodzaju owego oprogramowania. Nielegalne kopiowanie komercyjnych programów, chociaż naturalnie miało podczas owych spotkań miejsce, było oficjalnie zabronione. W przypadku spotkań LUG-owskich problem ten po prostu nie występuje. Nie tylko nie należy zabraniać kopiowania Linuksa, przeciwnie -- darmowe rozpowszechnianie go powinno być jednym z głównych zadań LUG-ów! Wiadomo skąd inąd, że grupy tradycyjne mają problemy z zaakceptowaniem faktu, że Linuksa można legalnie kopiować do woli :-). 22..44.. PPooddssuummoowwaanniiee Rozbudowa istniejących i powstawanie nowych LUG-ów jest jednym z koniecznych warunków dalszego rozwoju Linuksa. Z powodu wyjątkowego statusu tego systemu LUG-i przejmować muszą część funkcji wypełnianych normalnie przez regionalne przedstawicielstwa takich korporacji jak IBM, Microsoft, czy Sun. LUG-i mogą i muszą oferować użytkownikom oraz konsultantom wiedzę i pomoc, promować Linuksa jako rozwiązanie tam, gdzie istnieje zapotrzebowanie na pracę komputerów, oraz być źródłem wszelkiego rodzaju informacji dla lokalnych mediów, takich jak gazety, czy telewizja. 33.. IIssttnniieejjąąccee GGrruuppyy UUżżyyttkkoowwnniikkóóww LLiinnuukkssaa Ponieważ ten dokument jest pomocą nie tylko w prowadzeniu, ale również i w zakładaniu lokalnych LUG-ów, omówmy sposoby sprawdzania, czy i gdzie takie grupy już istnieją. 33..11.. LLiissttyy LLUUGG--óóww W sieci dostępny jest szereg takich spisów. Jeśli planujesz założenie lokalnej grupy, sprawdź po pierwsze gdzie znajduje się najbliższy istniejący LUG. _L_e_p_i_e_j _d_o_ł_ą_c_z_y_ć _d_o _i_s_t_n_i_e_j_ą_c_e_j _j_u_ż _w _p_o_b_l_i_ż_u _g_r_u_p_y _n_i_ż _z_a_k_ł_a_d_a_ć _n_o_w_ą_. Według danych z połowy roku 1997, LUG-i istnieją we wszystkich pięćdziesięciu stanach USA, w Kolumbii, i w 26 innych krajach (włączając w to Indie, Rosję, oraz większą część Zachodniej i Wschodniej Europy.) Na marginesie: Największym niezdobytym jeszcze komputerowo rynkiem na naszej planecie są Chiny, w których, jak się wydaje, nie istnieje ani jeden LUG. Indie, drugi pod względem zaludnienia kraj na świecie, ma ich zaledwie kilka. ˇ Poszukiwanie LUG-ów <http://www.ssc.com/glue/groups/> ˇ LUG List Project <http://www.nllgg.nl/lugww/> ˇ Rejestr LUG-ów <http://www.linux.org/users/index.html> Pierwsza z w/w list skupia się głównie na LUG-ach amerykańskich, natomiast lista druga oferuje spis bardziej międzynarodowy. 33..22.. JJeeddnnoośśćć kkoonnttrraa wwyyggooddaa Znajdujące się w sieci listy są raczej aktualne, istnieje jednak możliwość, że nie wszystkie LUG-i znajdują się w spisie. Dlatego oprócz przejrzenia owych list warto wysłać ogłoszenie o planach założenia nowej grupy na grupy dyskusyjne comp.os.linux.announce <news:comp.os.linux.announce>, comp.os.linux.misc <news:comp.os.linux.misc>, oraz na grupy w hierarchii lokalnej. Ogłoszenia takie, jeśli w pobliżu nie ma LUG-a, posłużą za informację dla potencjalych członków nowej grupy. Założenie lokalnej grupy wymaga czasem dokonania wyboru między wygodą a jednością. Jeśli na przykład w dużej aglomeracji istnieje już LUG, ale na drugim końcu miasta, można zastanowić się nad założeniem nowej grupy -- po prostu dla wygody. Z drugiej jednak strony może lepiej wziąć pod uwagę korzyści płynące ze współpracy i, aby nie rozbijać pewnych całości na kawałki, dołączyć do grupy już istniejącej. _W_i_ę_k_s_z_a _i_l_o_ś_ć _c_z_ł_o_n_k_ó_w _o_z_n_a_c_z_a _w_i_ę_k_s_z_e _m_o_ż_l_i_w_o_ś_c_i_, _w_p_ł_y_w_y _i _e_f_e_k_t_y_w_n_o_ś_ć_! Owszem, ,,fajnie'' jest mieć ,,swojego'' LUG-a, jednak grupa dwustuosobowa jest lepsza niż dwie stuosobowe. Oczywiście w przpadku małych miasteczek czy wsi lepiej założyć grupę małą, niż nie zakładać jej wcale. Podsumowując, założenie LUG-a jest trudnym przedsięwzięciem, wymagającym rozważenia wielu problemów -- włącznie z efektem, jaki powstanie nowej grupy może mieć na istniejące już LUG-i. 44.. CCzzyymm zzaajjmmuujjąą ssiięę LLUUGG--ii?? Cele lokalnych LUG-ów są różne, podobnie jak różne są regiony, w których grupy te działają. Nie istnieje żaden ,,plan przewodni'' dla LUG-ów (również ten dokument takiego planu nie poda), ponieważ Linux (a więc i grupy jego użytkowników) wolny jest od biurokracji i centralnego sterowania. Można jednak sprecyzować kilka najważniejszych celów działalności LUG-ów: ˇ promowanie Linuksa ˇ nauczanie ˇ pomoc ˇ socjalizacja członków grupy Każdy z lokalnych LUG-ów powienien łączyć te cele w indywidualny sposób zaspokajając różne przecież potrzeby swoich członków. 44..11.. PPrroommoowwaanniiee LLiinnuukkssaa Promowanie Linuksa jest dla jego użytkownika potrzebą tak naturalną jak odżywianie się czy sen. Zwykłą reakcją na odkrycie czegoś działającego, i to działającego ddoobbrrzzee, jest chęć podzielenia się odkryciem z jak największą ilością osób. Nie sposób nie docenić roli LUG-ów w promowaniu Linuksa, szczególnie w sytuacji gdy jego -- zasłużona przecież -- odpowiednio wysoka pozycja w świecie producentów oprogramowania komercyjnego i sprzętu nie została jeszcze osiągnięta. Oczywiście każda pozytywna wzmianka o Linuksie w prasie działa na jego korzyść, jednak równie istotne są opinie użytkowników tego systemu przekazywane osobiście znajomym, szefom, czy pracownikom. Rozpowszechnianie wiedzy o Linuksie możne przynieść pozytywne efekty, może również jednak społeczności linuksowej zaszkodzić. Jako członkowie tej społeczności musimy starać się promować Linuksa w sposób przynoszący korzyści zarówno jemu, jak i jego autorom, programistom i użytkownikom. Linux-Advocacy mini-HOWTO dostępne (również po polsku) w ramach Linux Documentation Project zawiera na ten temat kilka rozsądnych rad. Podsumowując: promowanie Linuksa jest ważną częścią misji lokalnego LUG-a. Być może nadejdzie dzień, w którym promowanie Linuksa zacznie mijać się z celem, gdyż system ten osiągnie zasłużoną sobie pozycję i możliwość używania go zostanie powszechnie zakceptowana. Dopóki to jednak nie nastąpi, w promocji tej LUG-i odgrywają niezastąpioną rolę. Odgrywają ją dobrze, gdyż ich działalność promocyjna jest darmowa, służy dobrej sprawie, i poparta jest szczerym zapałem. Osoba dowiadująca się o istnieniu Linuksa dzięki działaniom lokalnego LUG-a jest jako nowy użytkownik na korzystnej pozycji wyjściowej: _w_i_e _o _i_s_t_n_i_e_n_u _o_r_g_a_n_i_z_a_c_j_i _g_o_t_o_w_e_j _p_o_m_ó_c _m_u_/_j_e_j _w _i_n_s_t_a_l_a_c_j_i_, _k_o_n_f_i_g_u_r_a_c_j_i _i _n_a_w_e_t _k_o_n_k_r_e_t_n_e_j _p_r_a_c_y _z _L_i_n_u_k_s_e_m _n_a _d_o_w_o_l_n_y_c_h _k_o_p_u_t_e_r_a_c_h_, _k_t_ó_r_e _d_o _t_e_g_o _p_r_z_e_z_n_a_c_z_y_. Nowi użytkownicy będący w kontakcie z lokalnym LUG-iem mają poważną przewagę nad ludźmi, który dowiedzieli się o Linuksie z gazet, ale nie znają nikogo, kto mógłby im pomóc w instalacji, konfiguracji i nauce tego systemu. Dlatego tak istotne jest propagowanie Linuksa właśnie przez LUG-i, których działalność jest efektywna i dobrowolna. 44..22.. NNaauucczzaanniiee LLiinnuukkssaa Propagowanie Linuksa nie jest jedynym celem lokalnych LUG-ów. Grupy te mogą również skupić się na praktycznym i teoretycznym nauczaniu Linuksa oraz oferowaniu pomocy we wszelaki sposób związanej z komputerami społeczności lokalnej. Według mojej oceny to właśnie nauczanie jest najważniejszym z celów, na którym może skoncentrować się lokalny LUG. Oczywiście, jak już powiedziałem, LUG-i same decydują o swojej organizacji i priorytetach. Wierzę jednak, że nauczanie praktyki i teorii Linuksa przynosi społeczności Linuksa najwięcej korzyści. Lokalne LUG-i mogą skupić się na edukowaniu swoich członków chociażby dlatego, że nie istnieje żadna inna lokalna organizacja czy instytucja taką naukę oferująca. Prawdą jest, że coraz więcej uniwersytetów i wszelkiego rodzaju szkół zaczyna, dzięki efektywności i niskim kosztom tej metody, używać Linuksa w procesie nauczania o Unixowych systemach operacyjnych. Niestety, część użytkowników nie może lub z różnych powodów nie chce zapoznawać się z Linuxem chodząc na kursy. Dla takich właśnie użytkowników istnienie LUG-ów jest cenną pomocą w procesie zdobywania i poszerzania bardziej zaawansowanych umiejętności: administracji systemów Unixowych, programowania, tworzenia i obsługi technologii Inter- i intranetowych, itd. Mało oczywistym jest fakt, że lokalne LUG-i często pośrednio ułatwiają dużym korporacjom organizację i przeprowadzanie szkoleń pracowników. Każdy z pracowników korporacji X poszerzający swoją wiedzę i nabierający dzięki uczestnictwu w życiu lokalnego LUG-a nowych umiejętności zmniejsza o jeden ilość pracowników, dla których X musi zorganizować (lub zapłacić za) odpowiednie kursy. Nawet jeśli używanie i administrowanie domowym Linuksem nie może równać się zarządzaniu korporacyjnym systemem komputerowym, centrum telekomunikacyjnym, czy podobnie zaawansowanym zadaniom, jest to o niebo bardziej skomplikowane, kształcące i ciekawsze wyzwanie niż praca z Windows 95. Ponieważ Linux zaczyna wspierać system plików z kroniką (JFS), operacje wykonywane w czasie rzeczywistym, podwyższoną niezawodność i dostępność (High Availability) i inne cechy znane z zaawansowanych Uniksów, już teraz trudna do określenia różnica międzi Linuksem a ,,prawdziwymi'' Uniksami staje się coraz mniejsza. Takie nauczanie jest nie tylko formą szkolenia pracowników. Technologie informatyczne stają się coraz istotniejsze w globalnej ekonomii, nauczanie więc o nich jest też służbą społeczeństwu. W większości amerykańskich aglomeracji lokalne LUG-i wprowadzać mogą Linuksa do szkół, małych firm, socjalnych i społecznych organizacji oraz innych niekorporacyjnych środowisk. Jest to aktywna promocja Linuksa -- jako, że wiele z wyżej wymienionych podmiotów planuje prędzej czy później zaznaczyć swoją obecność w Internecie lub umożliwić doń dostęp swoim uczniom/studentom/pracownikom, LUG-i mają tu wymarzoną wręcz okazję do rozpowszechniania wiedzy o darmowym i wolnodostępnym systemie operacyjnym. Ten rodzaj społecznej działalności umożliwia przeciętnemu użytkownikowi Linuksa wykazanie ,,dobroczynności'' od samego początku charakteryzującej Linuksa i całą społeczność oprogramowania wolnodostępnego. Większość użytkowników nie ma umiejętności programistycznych Linusa Torvaldsa, wszyscy jednak możemy poświęcić trochę naszego czasu i umiejętności innym użytkownikom Linuksa, jego społeczności, i -- szerzej -- społeczności w której pracujemy i żyjemy. Linux w naturalny sposób wpasowuje się w profil w/w organizacji, ponieważ stosowanie go nie wymaga wyokich licencyjnych, aktualizacyjnych, ani bieżących opłat. Linux jest również niezwykle elegncki i oszczędny -- swobodnie działa na wszelkiego rodzaju ,,przestarzałym'' sprzęcie, który korporacje zazwyczaj wyrzucają na śmietnik, a który organizacje nie nastawione na zysk z radością mogą wykorzystać. Coraz więcej osób odkrywa, że kurzący się w szafie stary 486 może wykonywać rreeaallnnąą pprraaccęę, jeśli tylko zainstaluje się na nim Linuksa. Nauczanie Linuksa ma pozytywny wpływ na pozostałe cele LUG-a, szczególnie na omówione poniżej zadanie udzielania pomocy. Lepsza znajomość Linuksa oznacza więcej możliwości udzielania wsparcia. Im więcej osób, na które LUG może liczyć w udzielaniu wsparcia technicznego, tym łatwiejsze owo udzielanie, a co za tym idzie -- łatwiej dostępna pomoc. Im więcej nowych niedoświadczonych użytkowników uzyska pomoc i wiedzę z LUG-a, tym większa i efektywniejsza staje się grupa. Innymi słowy, jeśli LUG skoncentruje się głównie na pomocy zapominając o szkoleniu, wzrosną naturalne bariery rozwoju grupy. Jeśli tylko dwa lub trzy procent członków weźmie na siebie zadanie udzielania wsparcia innym, rozwój grupy zostanie zahamowany. Jedno jest pewne: _n_o_w_y _i _n_i_e_d_o_ś_w_i_a_d_c_z_o_n_y _u_ż_y_t_k_o_w_n_i_k _n_i_e _z_o_s_t_a_n_i_e _n_a _d_ł_u_g_o _c_z_ł_o_n_k_i_e_m _L_U_G_-_a _j_e_ś_l_i _n_i_e _u_z_y_s_k_a _o_d _n_i_e_g_o _s_p_o_d_z_i_e_w_a_n_e_j _p_o_m_o_c_y. Jeśli większy procent członków LUG-a zajmie się pomocą mniej zaawansowanym osobom, grupa powiększy się o wiele bardziej. Nauczanie o Linuksie jest kluczem do jego dynamicznego rozwoju: przekształca ono nowych użytkowników w użytkowników doświadczonych. Darmowość nauczania o Linuksie podkreśla fakt, iż Linux jest częścią społeczności oprogramowania wolnodostępnego. Wydaje się więc stosowne koncentrowanie się nie tylko na rozpowszechnianiu wiedzy o Linuksie, ale również o wszelkich systemach, oprogramowaniu i technologiach pod nim działających. Należą do nich narzędzia i programy na licencji GNU, serwer WWW Apache, XFree86 -- darmowa wersja systemu X-Window, TeX, LaTeX, itd. Szczęśliwie lista darmowego oprogramowania pod Linuksa jest bardzo długa i różnorodna. Zaznaczyć należy, że Linux jest systemem samo-dokumentującym się. Innymi słowy: jeśli sami nie stworzymy dokumentacji, nikt tego za nas nie zrobi. Dlatego upewnić się należy, że wszyscy użytkownicy Linuksa znają zasoby Linux Documentation Project <http://sunsite.unc.edu/LDP/>, dostępne również w licznych kopiach. Zastanów się, czy masz możliwość stworzenia na swoim serwerze kopii LDP dla lokalnej społeczności Linuksa i członków LUG-a. Pamiętaj również o ogłaszaniu i publikacji (na przykład przez comp.os.linux.announce, wyżej wspomniany adres, czy inne powszechnie dostępne źródła informacji o Linuksie) wszelkiego rodzaju dokumentacji stworzonej przez LUG: prezentacji technicznych, podręczników, zbiorów FAQ (odpowiedzi na najczęściej zadawane pytania), itd. Istnieje bowiem duża ilość stworzonych przez LUG-i wartościowych materiałów, z których światowa społeczność użytkowników nie może skorzystać po prostu dlatego, że materiały owe nie opuściły wcale macierzystego LUG-a. Nie marnujmy w ten sposób swojej pracy i osiągnięć; jest bardzo prawdopodobnie, że ludzie z innych grup borykają się z problemem, który my już rozwiązaliśmy i opisaliśmy. 44..33.. PPoommoocc Dla zdesperowanego nowicjusza najważniejszą rolą lokalnego LUG-a jest naturalnie ppoommoocc. Błędem byłoby jednak założenie, że ,,pomoc'' oznacza tu tylko wspomaganie nowicjuszy. ,,Pomoc'' może, i powinna, oznaczać znacznie więcej. Lokalne LUG-i mogą oferować swoją szeroko rozumianą pomoc ˇ użytkownikom ˇ konsultantom ˇ przedsiębiortwom, firmom, organizacjom non-profit, oraz szkołom ˇ idei rozwoju Linuksa 44..33..11.. UUżżyyttkkoowwnniiccyy Nowi użytkownicy świeżo po instalacji pierwszego Linuksa najczęściej żalą się na stromą krzywą nauki, nie tyle zresztą typową dla Linuksa, ile generalnie współczesnych Uniksów. Krzywa ta jednak uzasadniona jest potęgą, możliwościami i elastycznością tego systemu operacyjnego. LUG jest często jedynym źródłem pomocy w pokonywaniu i łagodzeniu tej krzywej. Jednak nawet jeśli świeżo upieczony użytkownik Linuksa jeszcze tego nie wie, potrzebuje on czegoś więcej niż tylko wsparcia technicznego. Linux i świat oprogramowania wolnodostępnego są gwałtownie rozwijającymi się rynkami; lokalne LUG-i mogą być bezcennym źródłem informacji na te tematy. Prawdą jest, że rozwojem Linuksa nie steruje centralna struktura. Oznacza to jednak, że nie posiada on żadnego rodzaju stałego zaplecza prasowego, tak pomocnego użytkownikom innych systemów. Owszem, istnieją zasoby takie, jak Linux Journal <http://www.ssc.com/lj/>, czy Linux Gazette <http://www.ssc.com/lg/>. Niestety, wielu nowych użytkowników nie ma pojęcia o ich istnieniu. Na domiar złego są to _m_i_e_s_i_ę_c_z_n_i_k_i, informacje o łatach, problemach z bezpieczeństwem, poprawkach, nowych jądrach, itp są więc często po prostu przedawnione. Informacjami aktualnymi -- równie istotnymi dla nowych, jak i doświadczonych użytkowników -- powinny więc służyć lokalne LUG-i. Na przykład dopóki nowy użytkownik Linuksa nie dowie się, że najnowsze wersje jądra znajdują się pod adresem ftp.kernel.org <ftp://ftp.kernel.org>, lub, że na serwerze LLiinnuuxx DDooccuummeennttaattiioonn PPrroojjeecctt zazwyczaj znadują się nowsze niż na CD wersje dokumentów HOWTO, LUG posłużyć musi jako główne źródło informacji i pomocy, poinformować zainteresowanych o owych zasobach i ułatwić im korzystanie z nich. Jednak skupianie się LUG-ów wyłącznie na pomocy udzielanej nowym użytkownikom jest lekkim nieporozumieniem. Również bowiem średnio i mocno zaawansowani użytkownicy skorzystają z dostępu do bogatego źródła informacji o użytecznych sztuczkach i sekretach Linuksa. Jest to system tak rozbudowany, że nawet osoby o dużej wiedzy często poznać mogą nowe techniki i sposoby jego wykorzystania. Po przyłączeniu się do grupy nawet one mogą dowiedzieć się o istnieniu ciekawych pakietów, czy też przypomnieć sobie zapomnianą od czasów studiów karkołomną sekwencję poleceń vi. 44..33..22.. KKoonnssuullttaannccii Truizmem jest stwierdzenie, że LUG-i powinny być źródłem pomocy dla nowych użytkowników, któż bowiem inny może im ową pomocą służyć? Mniejszą jednak oczywistością jest fakt, że LUG-i mogą odgrywać istotną rolę we wspieraniu osób pracujących jako konsultanci (tj. oferujących instalację i administrację Linuksa, itd). Niezależnie od tego, czy pracują oni na pół etatu, czy na pełny etat, mogą być istotną częścią lokalnego LUG-a. Jaką pomoc może im LUG oferować? Odpowiedź na powyższe pytanie jest jednocześnie odpowiedzią na pytanie następujące: czego chcą i czego potrzebują konsultanci? _P_o_t_r_z_e_b_u_j_ą _r_y_n_k_u_: _z_a_p_o_t_r_z_e_b_o_w_a_n_i_a _n_a _k_o_n_s_u_l_t_a_c_j_e_. Lokalny LUG pośredniczyć może między osobami _o_f_e_r_u_j_ą_c_y_m_i konsultacje a podmiotami tych konsultacji _p_o_t_r_z_e_b_u_j_ą_c_y_m_i. LUG może nieformalnie sprzyjać tworzeniu takich kontaktów poprzez gromadzenie w jednym miejscu wszystkich (lub ilu się tylko da) osób w regionie zainteresowanych Linuksem i inicjowanie dialogu. Konkretne sposoby omówimy poniżej, w tym miejscu wspominamy tylko kolejne zadanie, którym LUG-i mogą i powinny się zajmować. Linux-Consultants-HOWTO (zawierające także polskie kontakty -- przyp. tłum.) jest tu niezwykle pomocnym dokumentem, oczywistym jest jednak, że wymieniona jest w nim jedynie część pracujących na cały lub pół etatu konsultatów. Związek ten jest obopólnie korzystny. Konsultanci wzbogacają LUG-i o swoje doświadczenie, zarówno organizacyjne, jak i merytoryczne, natomiast LUG-i ułatwiają konsultantom kontakt z klientami potrzebującymi ich usług. Nowi i niedoświadczeni użytkownicy zyskują na kontaktach z LUG-iem, który udzieli _d_a_r_m_o_w_e_j pomocy w typowych i prostych przypadkach, a w bardziej skomplikowanych, w oczywisty sposób wymagających zatrudnienia konsultanta, sytuacjach ułatwi z takim specjalistą kontakt. Granica między zapotrzebowaniem na pomoc, której może udzielić konsultant, a pomoc, którą może zapewnić LUG, choć bywa niewyraźna, w większości przypadków jest oczywista. Naturalnie niepożądana jest sytuacja, w której LUG zyskuje złą opinię z powodu wmuszania potrzebującym konsultantów -- takie zachowanie byłoby po prostu nieuprzejme i źle świadczące o użytkownikach Linuksa -- nie ma jednak nic złego w ułatwianiu kontaktów między podmiotami potrzebującymi pomocy profesjonalnej i osobami takiej pomocy udzielającymi. Międzynarodowa lista konsultantów znajduje się w napisanym przez Martina Michlmayr-a Linux Consultants HOWTO <http://sunsite.unc.edu/LDP/HOWTO/Consultants-HOWTO.html>. 44..33..33.. FFiirrmmyy,, sszzkkoołłyy ii oorrggaanniizzaaccjjee ttyyppuu nnoonn--pprrooffiitt LUG-i mogą również służyć pomocą lokalnym firmom i organizacjom. Pomoc taka przejawiać się może dwojako. Po pierwsze, LUG-i mogą wspierać organizacje chcące w swojej działalności korzystać z Linuksa. Pod drugie, LUG oferować może pomoc lokalnym firmom i organizacjom tworzącym oprogramowanie/sprzęt pod Linuksa, instalującym, lub w inny sposób wspieracjącym ten system. Rodzaj pomocy oferowanej firmom chcącym używać Linuksa nie różni się w istocie wiele od wsparcia udzielanego osobom korzystającym z Linuksa w domu. Na przykład kompilowanie jądra nie przebiega w inny sposób w domu i w firmie. Współpraca z firmami może oznaczać jednak konieczność zaangażowania się również w prace nad oprogramowaniem komercyjnym. Jeśli Linux nadal rozwijał się będzie w dotychczasowym tempie pewne jest zainteresowanie się twórców oprogramowania możliwością przeniesienia lub napisania swoich programów pod ten -- interesujący już komercyjnie -- system. Jeśli LUG-i będą w stanie odnieść sukces w przekonaniu przedsiębiorstw do komercjalnego wykorzystania Linuksa, zainteresowanych firm będzie coraz więcej. Powyższe wiąże się bezpośrednio z kolejnym związkiem LUG-ów z lokalnymi firmami. LUG-i mogą i powinny dostarczać w zasadzie nigdzie indziej niedostępnych informacji takich jak: ˇ Który z lokalnych dostawców usług internetowych jest nastawiony przyjaźnie do Linuksa? ˇ Czy/gdzie znajdują się sklepy, w których można nabyć komputer złożony z myślą o Linuksie? ˇ Gdzie w pobliżu można nabyć CD z Linuksem? Gromadzenie i upublicznianie tych informacji nie tylko jest pomocne członkom LUG-ów, korzystają na tym również wspomniane firmy. Dzięki stworzeniu wokół nich przyjaznej atmosfery powstać może sytuacja, w której inne przedsiębiortwa, nie chcąc pozostać w tyle, zainteresują się Linuksem. 44..33..44.. RRoozzwwóójj wwoollnnooddoossttęęppnneeggoo oopprrooggrraammoowwaanniiaa LUG-i mogą również wspierać rozwój idei Linuksa poprzez inicjowanie i organizowanie sponsoringu. Poniżej zapoznać się możesz z opinią Chrisa Browne <mailto:cbbrowne@hex.het> na ten temat. 44..33..44..11.. CChhrriiss BBrroowwnnee oo ffiinnaannssoowwyymm wwssppaarrcciiuu iiddeeii oopprrooggrraammoowwaanniiaa wwoollnn­­ ooddoossttęęppnneeggoo Głębsze zaangażowanie przejawiać się może w zachęcaniu do finansowego wspierania rozmaitych związanych z Linuksem organizacji. Całkiem rozsądnym wydaje się pomysł finansowego wspierania idei przez użytkowników Linuksa. Według znajdującego się pod adresem spisu <http://counter.li.org> użytkowników tych są miliony, a całkiem rozsądna cena ,,wdzięczności'' -- sto dolarów od osoby (kwota równa zresztą sumie pieniędzy wydanych w tym roku na aktualizację systemu Microsoftu) mogłaby złożyć się na _m_i_l_i_o_n_y _d_o_l_a_r_ó_w przeznaczone na rozwój i ulepszanie narzędzi oraz aplikacji linuksowych. LUG zachęcać może swoich członków do finansowego wsparcia rozmaitych projektow związanych z rozwojem oprogramowania. Jeśli istnieje możliwość odpisania sobie takiej darowizny od podatku, zachęcać można członków do kierowania pieniędzy prosto do kasy grupy, skąd przekazane one będą dalej odpowiednim organizacjom. Jest w każdym razie na miejscu zachęcanie członków LUG-a do składania bezpośrednich darowizn na rzecz organizacji pracujących nad projektami, które chcą oni popierać. W bieżącym rozdziale podam konkretne propozycje organizacji, nad których wsparciem warto się zastanowić. Żadna z nich nie jest tu wyraźnie i wprost polecana, jest to lista, która ma sprowokować do zastanowienia się. Wiele z nich jest w Stanach Zjednoczonych zarejestrowanych jako organizacje dobroczynne, datki na ich rzecz można więc odliczyć sobie od podatku. Oto lista organizacji _b_e_z_p_o_ś_r_e_d_n_i_o zaanngażowanych w prace nad oprogramowaniem dla Linuksa: ˇ Linux International Project Sponsorship Fund <http://www.li.org/About/Fund/Welcome.html> ˇ Debian/Software In the Public Interest <http://www.debian.org/donations.html> ˇ Free Software Foundation <http://www.fsf.org/help/donate.html> ˇ The XFree86 Project <http://www.xfree86.org/donations.html> Datkowanie tych organizacji jest w istocie bezpośrednim wspieraniem procesu tworzenia wolnodostępnego oprogramowania pracującego pod Linuksem. Ziarnko do ziarnka, a zebrana miarka będzie z pewnościa miała większy wpływ na rozwój Linuksa niż jakakolwiek inna forma wsparcia. Istnieją też organizacje w mniej bezpośredni sposób związane z Linuksem, również jednak warte chwili zastanowienia. Są to: ˇ League for Programming Freedom <http://www.lpf.org>. Nie jest to typowo Linuksowa organizacja. LPF zajmuje się ogólną działalnością promocyjną na rzecz osób zaangażowanych w rozwój oprogramowania. Popieranie tej organizacji jest w pewnym sensie zaangażowaniem się w coś w rodzaju politycznego lobby. LPF koncentruje się oczywiście głównie na Stanach Zjednocznoych, jednak sytuacja amerykańskiego świata komputerowego ma bardzo często wpływ na branżową społeczność międzynarodową; działa to zresztą w obie strony. ˇ The LaTeX3 Project Fund TeX Users Group (TUG) <http://www.tug.org> pracuje nad nową wersją systemu do składu publikacji LaTeX -- LaTeX3. Linux jest platformą idealnie nadającą się do pracy z TeX-em oraz LaTeX-em. Wpłaty na rzecz projektu kierować należy na adres: TeX Users Group P.O. Box 1239 Three Rivers, CA 93271-1239 USA lub, w Europie: UK TUG 1 Eymore Close Selly Oaks Burmingham B29 4LB UK ˇ Projekt Gutenberg <http://www.promo.net/pg/lists/list.html> Celem PG jest powszechne udostępnienie w wersji cyfrowej książek nie objętych prawami autorskimi. Nie jest to inicjatywa w bespośredni sposób związana z Linuksem, warto się jednak nad nią na chwilę zatrzymać. ,,Projekt Gutenberg'' aktywnie promuje ideę nieuzależniania produktu od platformy systemowej -- oznacza to, że udostępnianych przez PG książek bez problemu można używać pod Linuksem. 44..33..55.. SSppoołłeecczznnoośśćć LLiinnuukkssaa W dokumencie tym używam wyrażenia ssppoołłeecczznnoośśćć LLiinnuukkssaa. Nie istnieje chyba lepsze określenie na międzynarodowe zjawisko, jakim jest rozwój Linuksa i jego użytkownicy. Jest to ruch zorganizowany bez biurokracji, nie jest to korporacja, a liczą się z nim korporacje na całym świecie. Najlepszym sposobem wspierania Linuksa jako międzynarodowego zjawiska jest utrzymywanie tej społeczności silnej, aktywnej i rosnącej. Linux jest rozwijany międzynarodowo -- wystarczy zajrzeć do pliku /usr/src/linux/MAINTAINERS, by się o tym przekonać. Linux jest również _używany_ na całym świecie. Ta stale rosnąca rzesza użytkowników jest kluczem do sukcesu tego systemu. I tu również LUG-i odgrywają istotną rolę. Międzynarodowa siła przebicia Linuksa spowodowana jest przede wszystkim jego nieznaną dotychczas za swoją cenę i przy swojej dostępności mocą obliczeniową i wyrafinowaniem. Kluczem jest tu wartość systemu i jego niezależność od nadzoru własnościowego. Każda nowa osoba, grupa, czy organizacja mająca okazję zapoznać się z rzeczywistymi możliwościami tego systemu oznacza wzmocnienie i rozwój społeczności Linuksa. Lokalne LUG-i mogą zwiększać ilość takich osób. 44..44.. LLiinnuuxx ssooccjjaalliizzuujjee Ostatnim z omawianych przeze mnie celów istnienia Grup Użytkowników Linuksa jest cel towarzyski. W pewnym sensie jest to punkt najtrudniejszy do opisania, nie wiadomo bowiem do jakiego stopnia i ile LUG-ów uważa go za istotny. Dziwna byłaby grupa nie zainteresowana realizacją pozostałych celów, bez trudu jednak można wyobrazić sobie LUG-a nie przywiązującego zbytniej wagi do towarzyskich aspektów swojego istnienia. W każdym razie jakoś tak się składa, że zawsze kiedy spotyka się dwóch czy trzech ,,linuksiarzy'' zaczyna się robić wesoło, i często kończy się to wysyłaniem kogoś po piwo. Sam Linus Torvalds określa jeden z celów istnienia Linuksa jako ,,dla zabawy''. Dla hakerów, programistów, czy zwykłych użytkowników nie ma nic ciekawszego niż ściąganie nowej wersji jądra, ponowna kompilacja starego, obgadywanie nowego windows managera, czy tworzenie kodu. To właśnie tak rozumiana zabawa konsoliduje grupę i prowadzi w naturalny sposób do zawierania przyjaźni. Przez słowo ,,socjalizacja'' rozumiemy głównie dzielenie doświadczeń, zawieranie znajomości, wzajemne uznanie i szacunek. Istnieje jednak również naukowe znaczenie tego słowa. Jak wyjaśniają specjaliści, w każdym ruchu, instytucji, czy społeczności ludzkiej istnieje tendencja do przemiany newbies w hakerów (jeśli użyjemy terminów z naszego podwórka). Innymi słowy, socjalizacja oznacza przemianę z ,,jednego z nich'' w ,,jednego z nas''. Proces ten znamy na przykład z wojska lub szkoły, gdzie ,,koty'' stają się pełnoprawnymi członkami grupy. Sytuacja w społeczności Linuksa jest analogiczna -- nowi użytkownicy muszą nauczyć się, co oznacza ,,używać Linuksa'', czego oczekuje się od nich, jako członków międzynarodowej społeczności. ,,Nowi'' muszą poznać specjalne słownictwo, wymagania i szanse dawane przez przynależność do grupy. Może to być taki drobiazg, jak poprawna wymowa słowa ,,Linux'', mogą to być równie dobrze sposoby korzystnego promowania Linuksa, i -- co nawet ważniejsze -- sposoby, których _n_i_e _n_a_l_e_ż_y stosować. Proces socjalizacji poprzez Linuksa, w odróżnieniu od tego z ,,prawdziwego świata'' może też przebiegać przez listy i grupy dyskusyjne. Skuteczność jednak takiego procesu ciągle podważają przykłady mało towarzyskich użytkowników. Wydaje się, że najlepiej poznawać ludzi z krwi i kości, a przyjaźnie zawierać z żywymi osobami, a nie bezcielesnymi szeregami literek na newsach. 55.. DDzziiaałłaanniiee llookkaallnnyycchh LLUUGG--óóww W rozdziale poprzednim skupiłem się wyłącznie na omawianiu tego, czym powinny się LUG-i zajmować. Teraz przejdźmy do praktycznych sposobów osiągnięcia wymienionych wyżej celów. Działalność LUG-a przejawia się na dwa podstawowe sposoby: po pierwsze, ludzie spotykają się, po drugie, komunikują się w sieci. Jedno przeplata się z drugim, generalnie jednak życie LUG-a to spotkania i zasoby sieciowe. 55..11.. SSppoottkkaanniiaa Jak już wspomniałem spotkania są istotą LUG-ów, jak zresztą i innych grup użytkowników. LUG może organizować następujące rodzaje spotkań: ˇ zebrania towarzyskie ˇ prezentacje techniczne ˇ zebrania nieformalnych grup dyskusyjnych ˇ zebrania członkowskie (omawianie spraw grupy) ˇ instalowanie systemu chętnym ˇ pomoc w konfigurowaniu i strojeniu systemu Czym zajmują się LUG-i podczas owych spotkań? ˇ instalowaniem Linuksa nowym użytkownikom, i wszystkim zainteresowanym tym osobom, ˇ nauczaniem swoich członków o Linuksie ˇ porównywaniem Linuksa do innych systemów operacyjnych ˇ prezentacją i nauczaniem oprogramowania działającego pod Linuksem ˇ omawianiem sposobów promocji Linuksa ˇ omawianiem istoty zjawiska wolnodostępnego oprogramowania ˇ omawianiem problemów innych grup ˇ piciem, jedzeniem, i lulek paleniem :) 55..22.. ZZaassoobbyy ww ssiieeccii Komercyjny rozwój Internetu chronologicznie pokrywa się mniej więcej z powstaniem Linuksa i ma w jego powstaniu i późniejszym rozwoju swój pokaźny udział. Nie inaczej jest w przypadku LUG-ów. Większość z nich ma swoją stronę lub strony w Internecie. W zasadzie przeszukanie sieci jest chyba jedynym sposobem zlokalizowania najbliższego LUG-a. Świat komercyjny odkrywa, że użycie Internetu jest skuteczną formą reklamy, informowania, nauczania, a nawet sprzedaży. I LUG-i powinny więc używać wszelkich dostępnych im technologii internetowych: WWW, list i grup dyskusyjnych, FTP, e-maila, WAIS-a i fingera. Drugim powodem do szerokiego wykorzystywania usług Internetu jest fakt, że istotą Linuksa jest _z_a_p_e_w_n_i_e_n_i_e stabilnej i bogatej w możliwości platformy, na której owe usługi można uruchamiać. Ogłoszenie istnienia i organizacja działań danego LUG-a nie jest więc jedyną korzyścią z pojawienie się w Internecie. Wykorzystanie tych technologii daje bowiem członkom grupy okazję do nauki uruchamiania tego typu usług internetowych na Linuksie i obserwacji systemu w działaniu. Oto kilka przykładowych LUG-ów efektywnie wykorzystujących Internet: ˇ Atlanta Linux Enthusiasts <http://www.ale.org/> ˇ North Texas Linux Users Group <http://www.ntlug.org/> ˇ Boston Linux and Unix <http://www.blu.org/> ˇ Colorado Linux Users and Enthusiasts <http://spot.elfwerks.com/~clue/> ˇ BLUG - BHZ Linux Users Group (Brazil) <http://www.bhz.ampr.org/~linux/> ˇ Ottawa Carleton Linux Users Group <http://www.oclug.on.ca/> ˇ Provence Linux Users Group <http://www.pipo.com/plug/> ˇ Düsseldorf Linux Users Group <http://www.hsp.de/~dlug/> ˇ Linux User Group Austria <http://www.luga.or.at/> ˇ Israeli Linux Users Group <http://www.linux.org.il/> ˇ Tokyo Linux Users Group <http://www.twics.co.jp/~tlug/> ˇ Linux in Mexico <http://www.linux.org.mx/> ˇ Netherlands Linux Users Group (NLLGG) <http://www.nllgg.nl/> ˇ St. Petersburg Linux User Group <http://ethereal.ru/~mbravo/spblug/index.html> ˇ Linux User Group of Singapore <http://www.lugs.org.sg/> ˇ Victoria Linux User Group <http://www.linux.victoria.bc.ca/> ˇ Essex Linux User Group <http://www.epos.demon.co.uk/> ˇ Turkish Linux User Group <http://www.linux.org.tr/> ˇ Linux User Group of Rochester <http://www.lugor.org/> ˇ Korean Linux Users Group <http://www.linux-kr.org> Poinformuj mnie, jeśli Twój LUG wykorzystuje Internet w interesujący sposób, dołączę wtedy adres waszych stron do powyższego spisu. 66.. PPrraakkttyycczznnee wwsskkaazzóówwkkii Na zakończenie podam kilka bardzo praktycznych, wręcz przyziemnych porad dla chcących założyć, prowadzić, lub rozbudować LUG. 66..11.. OOrrggaanniizzaaccjjee uuddzziieellaajjąąccee wwssppaarrcciiaa LLiinnuukkssoowwii Istnieje szereg organizacji udzielających wsparcia Linuksowi: GGLLUUEE Groups of Linux Users Everywhere jest zainicjowanym przez SSC (ludzi wydających _L_i_n_u_x _J_o_u_r_n_a_l) programem koordynującym i wspierającym LUG-i. Program GLUE <http://www.ssc.com/glue/> jest niezbyt kosztownym sposobem poszerzenia zasobów Twojego LUG-a. LLiinnuuxx SSyysstteemmss LLaabbss LSL <http://www.lsl.com/> bardzo tanio oferuje LUG-om do dalszej dystrybucji swój Tri-Linux Disk set (trzy dystrybucje Linuksa na czterech kompaktach -- Red Hat, Slackware, Debian). LLiinnuuxx MMaallll UUsseerr GGrroouupp PPrrooggrraamm Sponsorowany przez WorkGroup Solutions Linux Mall User Group Program <http://www.LinuxMall.com/usergrp.program.html> oferuje należącym doń LUG-om szereg korzyści. LUG-i mogą również uczestniczyć w Linux Mall's Referral Program <http://www.LinuxMall.com/mallrfr.html>. CClleevveellaanndd LLiinnuuxx UUsseerr''ss GGrroouupp jest właścicielem domeny internetowej lug.net. Dadzą Twojemu LUG-ow domenę w lug.net: miasto-LUG-a.lug.net. Więcej informacji na ten temat znajdziesz pod adresem LUG.NET <http://www.lug.net/>, lub pocztą elektroniczną: Jeff Garvas. RReedd HHaatt SSooffttwwaarree''ss UUsseerr GGrroouupp PPrrooggrraamm Wspomaga rowój LUG-ów. Więcej informacji pod adresem Red Hat Web site <http://www.redhat.com/redhat/rhug.html> 66..22.. ZZaakkłłaaddaanniiee LLUUGG--aa ˇ Znajdź najbliższy istniejący LUG ˇ Ogłoś swoje plany na comp.os.linux.announce i odpowiednich grupach lokalnych ˇ Ogłoś swoje plany we wszystkich miejscach, w których mogą natknąć się na nie użytkownicy komputerów w Twoim otoczeniu. Mogą to być księgarnie, copy-parties, kawiarnie internetowe, szkoły, uniwersytety, firmy, siedziby dostarczycieli usług internetowych, itd ˇ Znajdź w swoim regionie przyjazne Linuksowi firmy i instytucje; być może pomogą Ci one w utworzeniu LUG-u ˇ Załóż listę dyskusyjną lub stwórz sposób komunikacji dla osób wyrażających zainteresowanie przyłączeniem się do projektu ˇ Poproś osoby mające takie możliwości o rozpowszechnienie wiadomości o zakładaniu LUG-a ˇ Zarezerwuj miejsce w sieci na kilka stron z informacjami o grupie ˇ Zastanów się nad miejscem spotkań ˇ Ustal i ogłoś datę pierwszego spotkania ˇ Na pierwszym spotkaniu ogłoś i przedyskutuj cele LUG-a 66..33.. PPrroowwaaddzzeenniiee ii rroozzwwiijjaanniiee LLUUGG--aa ˇ Nie stawiaj wygórowanych wymagań potencjalnym członkom grupy ˇ Pamiętaj o prowadzeniu strony WWW. Staraj się, aby umieszczone na niej informacje były aktualne, a obwieszczenia o spotkaniach (kto, co, gdzie, itp) łatwe do odnalezienia. Umieść adresy kontaktowe, zapewnij też inne możliwości kontaktu. ˇ Instaluj Linuksa każdemu, kto o to poprosi ˇ Umieść ogłoszenia i ulotki w miejscach uczęszczanych przez użytkowników komputerów w Twoim regionie ˇ Postaraj się o oddane kierownictwo ˇ Prowadząc grupę idź za przykładem Linusowego modelu _o_ś_w_i_e_c_o_n_e_j _d_y_k_t_a_t_u_r_y ˇ Ważne decyzje podejmuj wraz z członkami grupy drogą głosowania ˇ Załóż liste dyskusyjną oferującą wsparcie techniczne i poproś lokalnych guru o udzielanie się na niej ˇ Organizuj zarówno prezentacje proste, jak i zaawansowane, formalne oraz luźne ˇ Zapewniaj wsparcie rozwijanemu przez członków grupy oprogramowaniu ˇ Znajdź sposób zdobywania środków finansowych inny niż obowiązkowe składki, np. sprzedawaj linuksowe gadżety członkom grupy i osobom nie związanym z LUG-iem ˇ Zastanów się nad nadaniem grupie osobowości prawnej, np. podorganizacji, czy podmiotu zwolnionego z obowiązku płacenia podatków ˇ Zastanów się, czy wybrane miejsce spotkań nie utrudnia rozwoju grupy ˇ Łącz spotkania grupy z lokalnymi copy-parties, targami komputerowymi i innymi wydarzeniami, na których pojawić się mogą potencjalni przyszli użytkownicy Linuksa ˇ Kiedy tylko zacznie to mieć sens wybierz formalne kierownictwo. Rozważ stanowiska takie, jak: przewodniczący, skarbnik, sekretarz, gospodarz (wygłaszanie komunikatów ogólnych, przedstawianie prowadzących wykłady, otwieranie i zamykanie spotkań, itd.), rzecznik (obsługa grup dyskusyjnych i poczty elektronicznej, local publicity), koordynator (zapewnienie prowadzących prezentacje na spotkaniach grupy, tworzenie planu spotkań) ˇ Zapewnij członkom możliwość wyrażenia opinii o kierunkach rozwoju, celach i strategiach grupy ˇ Wspieraj idee Linuksa i oprogramowania wolnodostępnego poświęcając im strony WWW, listy dyskusyjne oraz serwery FTP ˇ Otwórz serwer FTP z odpowiednim oprogramowaniem ˇ Prowadź na stronie WWW archiwum działalności grupy ˇ Zorganizuj ,,prezenty'' od lokalnych sprzedawców Linuksa, sklepów komputerowych, etc i rozdawaj je na spotkaniach grupy np. rozdając kupony uczestnikom i losując numer wygrywający. ˇ Okazuj uzasadnione zaufanie ˇ Zostań członkiem prowadzonych przez SSC Wszystkich Grup Użytkowników Linuksa (GLUE); pamiętaj jednak, że GLUE żąda opłat członkowskich ˇ Postaraj się o dodanie informacji o swojej grupie do wszystkich spisów LUG-ów ˇ Publikuj informacje o spotkaniach LUG-a w odpowiednich grupach dyskusyjnych oraz lokalnych kręgach i wydawnictwach komputerowych ˇ Stwórz materiały promocyjne, np. pliki postscriptowe, które członkowie wykorzystać będą mogli w miejscu pracy, księgarnich, sklepach komputerowych, itd. ˇ Upewnij się, że wiesz jakiego rodzaju działalności oczekują od grupy jej członkowie ˇ Ogłaszaj w lokalnych mediach wszelkie niecodzienne wydarzenia w LUG-u (takie jak Dzień Instalowania, Dzień Sieci, itd) ˇ Używaj zasobów i możliwości LUG-a do zaspokajania informatycznych potrzeb lokalnych organizacji typu non-profit i szkół. ˇ Promuj użycie Linuksa entuzjastycznie, ale odpowiedzialnie ˇ Motywuj członków grupy do poszerzania wiedzy i rozwijania umiejętności ˇ Utrzymuj dobre stosunki z dystrybutorami i sprzedawcami Linuksa, programistami, itd. ˇ Odszukaj pracujących w Twoim regionie konsultantów/firmy oferujące konsultacje i nawiąż z nimi kontakt. ˇ Wymieniaj się doświadczeniami i zasobami z LUG-ami w okolicy, mieście, regionie, kraju. ˇ Informuj członków grupy o aktualnym stanie rozwoju oprogramowania dla Linuksa (np. nowe wersje jądra, bugi, łaty, porady dot. bezpieczeństwa) i innych związanych z Linuksem sprawach (np. nowe obsługiwane platformy, zagadnienia prawne, gdzie mieszka i pracuje Linus, itd). ˇ Informuj Linux Documentation Project i inne liczące się źródła informacji o tworzonej przez LUG-a dokumentacji: opisach technicznych, podręcznikach, dokumentach HOWTO, itd. 77.. ZZaaggaaddnniieenniiaa pprraawwnnee ii ppoolliittyycczznnee 77..11.. ZZaaggaaddnniieenniiaa pprraawwnnee 77..11..11.. SSttaannyy ZZjjeeddnnoocczzoonnee Wiele wskazuje na to, że powinieneś zastanowić się nad formalną rejestracją swojego LUG-a. Nie będę przytaczał tu argumentów, jeśli jednak planujesz nadanie LUG-owi osobowości prawnej, rozdział ten wprowadzi Cię w część zagadnienia. UUwwaaggaa:: nie traktuj treści tego rozdziału jako profesjonalnych porad prawnych. Omawiane tu problemy wymagają fachowej opinii, dlatego też przed podjęciem jakiegokolwiek działania powinieneś skonsultować się z prawnikiem. Zgodnie z prawem Stanów Zjednoczonych status zlokalizowanych na ich terenie LUG-ów może przybrać jedną z co najmniej dwóch form: 1. organizacji typu non-profit (nie przynoszącej zysku) 2. organizacji zwolnionej z obowiązku płacenia podatków Chociaż wymienione rodzaje statusu prawnego niekoniecznie oznaczają to samo we wszystkich stanach, prawo większości stanów zezwala na rejestrowanie LUG-ów jako organizacji typu non-profit. Zyskami płynącymi z takiej rejestracji mogą być m. in. ograniczenie odpowiedzialności członków i współpracowników grupy, a także zmniejszenie podatków lub nawet zwolnienie z koniecznosci ich płacenia. Przed zarejestrowaniem LUG-a jako organizacji non-profit powinieneś oczywiście zasięgnąć kompetentnej porady prawnej. Z pewnością zaoszczędzisz na kosztach owej porady, jeśli przed zasięgnięciem jej zapoznasz się z zagadnieniem; polecam tu publikację _N_o_n_-_L_a_w_y_e_r_s _N_o_n_- _P_r_o_f_i_t _C_o_r_p_o_r_a_t_i_o_n _K_i_t (ISBN 0-937434-35-3). Drugi z wymienionych rodzajów statusu, zwolnienie od podatku, jest tak naprawdę nie tyle statusem prawnym, ile decyzją IRS (amerykańskiego Biura Podatkowego). Pamiętaj, że zarejestrowanie organizacji jako nie przynoszącej zysków nniiee oozznnaacczzaa aauuttoommaattyycczznniiee zwolnienia od podatków! Niektóre organizacje typu non-profit muszą płacić podatki. IRS wydał względnie prosty dokument omawiający kryteria i sam proces zwalniania od podatku. Jest to PPuubblliiccaattiioonn 555577:: _T_a_x_-_E_x_e_m_p_t _S_t_a_t_u_s _f_o_r _Y_o_u_r _O_r_g_a_n_i_z_a_t_i_o_n _(_,_,_Z_w_o_l_n_i_e_n_i_e _T_w_o_j_e_j _o_r_g_a_n_i_z_a_c_j_i _o_d _p_o_d_a_t_k_u_'_'_). Dokument ten, w formacie Adobe Acrobat, dostępny jest na stronie IRS. Zdecydowanie polecam zapoznanie się z jego treścią pprrzzeedd wypełnieniem wniosku o rejestrację LUG-a jako organizacji typu non-profit. Zarejestrowanie grupy jako organizacji typu non-profit nie zapewnia automatycznie zwolnienia jej przez IRS od podatku, a niektóre rodzaje rejestracji mogą wręcz uunniieemmoożżlliiwwiićć takie zwolnienie. Wspomniany wyżej dokument (_T_a_x_-_E_x_e_m_p_t _S_t_a_t_u_s _f_o_r _Y_o_u_r _O_r_g_a_n_i_z_a_t_i_o_n) jasno omawia warunki konieczne do uzyskania przez Twoją organizację zwolnienia od podatków. W sieci znajduje się trochę wiadomości na temat organizacji typu non- profit i zwalniania od podatku. Część z nich zapewne ma zastowosowanie w przypadku lokalnych LUG-ów. 77..11..22.. KKaannaaddaa Podziękowania dla Chrisa Browne za następujące komentarze na temat sytuacji w Kanadzie: Kanadyjski system podatkowy bardzo przypomina system amerykański w tym, że status organizacji ,,dobroczynnej'' oznacza dla dawców większe ulgi podatkowe niż status non-profit; podobnie otrzymanie i utrzymanie statusu organizacji dobroczynnej wymaga dodatkowej roboty papierkowej przy stałych kontaktach z władzami podatkowymi. 77..22.. ZZaaggaaddnniieenniiaa ppoolliittcczznnee Chris Browne <mailto:cbbrowne@hex.net> w następujący sposób komentuje zagadnienia polityczne mogące budzić emocje w grupie: 77..22..11.. WWąąttpplliiwwoośśccii nnaa tteemmaatt iiddeeii wwoollnnooddoossttęęppnneeggoo oopprrooggrraammoowwaanniiaa.. Użytkownicy Linuksa są różni. Gdy kilku z nich zbierze się w jednym miejscu, mogą rozgorzeć pewne dyskusje. Politycznie radykalni użytkownicy wierzą, że każdy rodzaj oprogramowania powinien ,,zawsze'' być darmowy. Caldera życzy sobie całkiem sporej sumy za swoją dystrybucję i nniiee przekazuje wszystkich zysków do _(_t_u _w_s_t_a_w _s_w_o_j_ą _u_l_u_b_i_o_n_ą _o_r_g_a_n_i_z_a_c_j_ę _p_r_o_m_o_c_y_j_n_ą_) -- dlatego sądzą oni, że Caldera to ,,zło''. Podobnie Red Hat i S.u.S.E. Pamiętać jednak warto, że wszystkie trzy organizacje mocno już zasłużyły się, i nadal aktywnie działają na rzecz idei wolnodostępnego oprogramowania. Inni zastanawiać się mogą nad sposobami na dogłębne wykorzystanie darmowości Linuksa dla zabawy lub zysków. Na przykład wielu użytkowników systemów BSD uważa, że _i_c_h licencje, pozwalające na tworzenie własnych wersji ich OS-ów są lepsze niż ,,zmuszająca do darmowości'' licencja GPL, z której korzysta Linux. Nie zakładaj automatycznie, że osoby wyrażające takie opinie muszą być chciwcami. Kiedy osoby o takich poglądach spotkają się, łatwo o nieporozumienia. W podobnych sytuacjach osoba przewodząca grupie powinna zwrócić uwagę, że: ˇ Istnieje mnóstwo różnych opinii na temat licencji GPL i jej działania, a zarówno GPL, jak i pokrewne licencje łatwo źle zinterpretować. ˇ Linux wiele zawdzięcza wkładom z rozmaitych źródeł; dlatego też może dzielić się swym dorobkiem, szczególnie jeśli takie działanie zachęci więcej osób do przłączenia się do ruchu, i, co za tym idzie, spowoduje kolejne wkłady w rozwój systemu. ˇ Również i komercyjny świat ma swój -- i to duży -- wkład w rozwój Linuksa. Możesz przekonać się o tym zaglądając do źródeł jądra, czy istotnych elementów systemu (np. XFree86 i GCC). ˇ ,,Komercjalny'' nie oznacza zawsze ,,lepszy'', ale nie musi też oznaczać ,,beznadziejny''. Takie różnice zdań nie ograniczają się zresztą tylko do tego konkretnego problemu, toczenie przeróżnych ,,świętych wojen'' komputerowych nie jest bowiem niczym nowym. Dziś jest to opozycja Linux -- inne systemy Unixowe, czy systemy operacyjne Microsoftu, IBM PC -- komputery oparte na Motoroli 68000, KDE -- GNOME. Kiedyś walczyli ze sobą zwolennicy różych typów ośmiobitowców. Osoba przewodząca LUG-owi powinna starać się łagodzić takie postawy i w żadnym wypadku nie dolewać oliwy do ognia; dlatego przywódcy grupy powinny być silnymi osobowościami. Przy tak wielu sprzecznych poglądach nieporozumień nniiee ddaa ssiięę uniknąć. Osoby przewodzące grupie muszą umieć radzić sobie z podobnymi sytuacjami i łagodzić konflikty, a nie je zaogniać. 77..22..22.. OOrrggaanniizzaaccjjee ttyyppuu nnoonn--pprrooffiitt ii pprroobblleemm ppiieenniięęddzzyy Zajmowanie się finansami organizacji typu non-profit zawsze wymaga dużej ostrożności. W przypadku podmiotów, których celem jest zarabianie pieniędzy, ,,niepowodzenia'' takie jak np. niewłaściwe zużytkowanie niewielkiej sumy nie spędzają zazwyczaj ludziom snu z powiek. Sytuacja w organizacjach nie nastawionych na zysk jest odmienna. Część osób jest w nie zaangażowana dla idei i w ich oczach każdy niewielki problem może urosnąć do nieadekwatnie dużych rozmiarów. Możliwość powszechnego uczestnictwa w naradach finansowych dodatkowo zwiększa niebezpieczeństwo skupienia nadmiernej uwagi na sprawach ekonomicznych. Płynie z tego wniosek, że najlepiej chyba _z_r_e_z_y_g_n_o_w_a_ć w ogóle ze składek członkowskich, członkowie LUG-u bowiem, co zrozumiałe, będą chcieli wiedzieć, czy zebrane pieniądze są rozsądnie wydawane. A pieniędzy, które nie istnieją, zmarnować nie można. Jeśli jednak grupa dysponuje dużymi środkami pieniężnymi lub innymi, osoby odpowiedzialne za gospodarowanie nimi powinny w każdej chwili móc się z nich rozliczyć przed członkami grupy. Nad sprawami finansowymi aktywnej, rozwijającej się grupy pieczę powinna sprawować więcej niż jedna osoba. Niezdrowa jest sytuacja, w której zajmujący się finansami kurczowo trzyma się stanowiska, i nie chce oddać kontroli nad ekonomią. W sytuacji idealnej wszystkie oficjalne stanowiska we władzach LUG-u, włączając w to skarbnika, podlegają rotacji. Wszyscy zainteresowani powinni mieć możliwość regularnego zapoznawania się ze zrozumiale napisanymi raportami finansowymi. LUG-i, które ze względów podatkowych utrzymują oficjalny status ,,organizacji dobroczynnych'', co najmniej raz do roku muszą przedstawić takie raporty lokalnym urzędom podatkowym. Raporty te służyć również mogą zainteresowanym finansami grupy członkom. W wraz z rozwojem działającego pod Linuksem oprogramowania do księgowości tworzenie regularnych raportów finansowych staje się coraz łatwiejsze, a ekspansja Internetu umożliwia nawet ich publikację na WWW. 88.. OO ttyymm ddookkuummeenncciiee 88..11.. WWaarruunnkkii ssttoossoowwaanniiaa Prawa autorskie: Copyright (c) 1997 by Kendall Grant Clark. Zezwala się na rozpowszechnianie niniejszego dokumentu na warunkach określonych w licencji LDP, dostępnej pod adresem http://sunsite.unc.edu/LDP/COPYRIGHT.html <http://sunsite.unc.edu/LDP/COPYRIGHT.html>. 88..22.. NNoowwee wweerrssjjee Nowe wersje JTZ o Grupach Użytkowników Linuksa będą od czasu do czasu umieszczanie na odpowiednich serwerach WWW i FTP, przede wszystkim na mojej stronie <http://www.ntlug.org/~kclark/> oraz stronie Linux Documentation Project <http://sunsite.unc.edu/LDP/>. 88..33.. PPoommóóżż ww ttwwoorrzzeenniiuu tteeggoo ddookkuummeennttuu!! Z radością powitam pytania i komentarze dotyczące ninejszego dokumentu. Proszę przysyłać je (w jęz. angielskim) pod adresem kclark@cmpu.net. _S_z_c_z_e_g_ó_l_n_i_e _i_n_t_e_r_e_s_u_j_ą _m_n_i_e _o_p_i_n_i_e _o_s_ó_b _p_r_o_w_a_d_z_ą_c_y_c_h _L_U_G_-_i _n_a _c_a_ł_y_m _ś_w_i_e_c_i_e. Chciałbym móc przytoczyć z życia wzięte przykłady realizacji opisanych tu zagadnień. Chciałbym również dołączyć rozdział na temat LUG-ów spoza Stanów Zjednoczonych, w tej chwili bowiem dokument ten skupia się głównie na problemach grup amerykańskich. Proszę również o informację, jeśli Twoja grupa zajmuje się nie wspomnianą tu działalnością. 88..44.. HHiissttoorriiaa ddookkuummeennttuu Wersja ˇ 1.0 ogłoszona 13 lipca 1997 ˇ 1.1: poszerzony rozdział o zasobach w sieci ˇ 1.3: dodane info o organizacjach wspierających LUG-i, poszerzony rozdział o zagadnieniach prawnych i organizacyjnych ˇ 1.3.1: przeredagowania celem zwiększenia przejrzystości i zwięzłości ˇ 1.4: przeredagowania, dodane info o nowych zasobach ˇ 1.4.1: ogólne przeredagowanie celem zwiększenia przejrzystości ˇ 1.5: dodane informacje o zasobach, komentarz n/t dokumentacji LUG-ów, ogólne przeredagowania ˇ 1.5.1: zmiana adresu WWW tego dokumentu i e-maila autora ˇ 1.5.2: nowa licencja i prawa autorskie ˇ 1.5.3: różne zmiany i drobne reorganizacje ˇ 1.6: dodany materiał Chrisa Browne'a: datki na rzecz rozwoju Linuksa i zagadnienia polityczne dot. LUG-ów ˇ 1.6.1: niewielkie uzupełnienia ˇ 1.6.2: drobne poprawki 88..55.. PPooddzziięękkoowwaanniiaa Chciałbym tu podziękować wszystkim wspaniałym ludziom, których poznałem i z którymi pracowałem podczas zajmowania stanowiska Przewodniczącego Grupy Użytkowników Linuksa w Półn. Teksasie. Dzięki nim całkowicie przeniosłem się na Linuksa. Najlepszą rzeczą w Linuksie są ludzie, których się dzięki mu poznaje! Specjalne podziękowania kieruję do Chrisa Browne <mailto:cbbrowne@hex.net> za opis sytuacji kanadyjskich ogranizacji dobroczynnych i non-profit, wypowiedź o finansowych datkach jako sposobie wspierania rozwoju Linuksa i oprogramowania wolnodostęnego, oraz refleksji n/t zagadnień politycznych mogących być przedmiotem dyskusji w LUG-ach. Następującym osobom dziękuję za komentarze i sugestie: ˇ Hugo van der Kooij ˇ Greg Hankins ˇ Charles Lindahl ˇ Rick Moen ˇ Jeff Garvas ˇ James Hertzler 99.. OOdd ttłłuummaacczzaa Copyright for the translation (c) 1999 by Tomasz 'tsca' Sienicki (tsca@edb.dk) Strona WWW Polskiej Grupy Użytkowników Linuksa: PLUG <http://www.linux.org.pl> Tłumaczenia innych dokumentów HOWTO: JTZ <http://www.jtz.org.pl/> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/Wacom-Tablet-HOWTO.pl.txt����������������������������������������������0100664�0001750�0001750�00000106534�07073204340�020731� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Wacom Tablet HOWTO Autor: Stefan Runkel runkel@runkeledv.de v1.0.4, listopad 1999 WWeerrssjjaa ppoollsskkaa:: MMaarreekk GGuueevvaarraa BBrraauunn mmaarreekk@@aattmm..ccoomm..ppll v1.0, 2 kwietnia 2000 Instalacja graficznych tabletów (nie tylko) Wacoma pod Linuksem i/lub XFree86. ______________________________________________________________________ Spis treści 1. Prawa autorskie 2. Wprowadzenie 2.1 Nowe wersje dokumentu 2.2 Uwagi i Poprawki 2.3 Podziękowania 3. Wymagania 3.1 Jaki sprzęt jest obsługiwany 3.2 Jakiego oprogramowania potrzebujemy 3.3 Jakie oprogramowanie jest obsługiwane 4. Tablety jako zamiennik myszy dla konsoli Linuksa 4.1 Tablety i gpm 5. Tablety w XFree 5.1 Wymagana wersja XFree 5.2 Przykładowy wycinek XF86Config (prosty) 5.3 Sekcja modułu 5.4 Rodzaje urządzeń 5.5 Nazwa urządzenia 5.6 Port 5.7 Poziom DebugLevel 5.8 Numer seryjny (tylko dla tabletów Intuos) 5.8.1 Jak uzykać numer seryjny danego urządzenia 5.8.2 Numer seryjny - przykład tego co zostało zalogowane 5.9 Tryby pracy bezwzględny (absolute) i względny (relative) 5.10 Tryby pracy urządzeń Extension, Core oraz AlwaysCore 5.11 Parametr HistorySize 5.12 Parametr Suppress 5.13 Parametr TiltMode (tylko Intuos) 5.14 Ustawienia TopX, TopY, BottomX, BottomY 5.14.1 Określanie maksymalnych wartości X, Y, aktualnej konfiguracji oraz rozdzielczości 5.14.2 Określanie rozdzielczości - przykład tego co zostało zalogowane 5.15 Ustawienie KeepShape 6. Zmiany konfiguracji pod działającymi X-ami 6.1 Konfigurowanie Gimpa w celu wykorzystania urządzeń XInput 6.2 Urządzenie przełącznika (SWITCH) 6.3 Przyciski 6.4 Przyporządkowywanie przycisków przy użyciu xmodmap dla urządzeń pracujących w trybie podstawowym 6.5 Przyporządkowywanie przycisków przy użyciu xinput dla urządzeń pracujących w trybie rozszerzonym 6.6 xsetmode - zmiany trybu pracy na względny oraz bezwzględny 6.7 xsetpointer - ustawianie domyślnego urządzenia podstawowego 6.8 Klawisze 6.9 Narzędzia do korzystania z więcej niż jednego tableta oraz do włączania i wyłączania obsługi 7. Dalsze informacje/wykorzystane dokumenty 8. Od tłumacza ______________________________________________________________________ 11.. PPrraawwaa aauuttoorrsskkiiee Prawa autorskie należą do Stefana Runkela (c) 1999 Runkel@runkeledv.de Dokument ten opisuje proces instalacji tabletów Wacoma pod systemem Linux. Nieskrępowane używanie, rozpowszechnianie oraz reprodukowanie tego dokumentu jest możliwe pod następującymi warunkami: ˇ Nie wolno pomijać lub modyfikować informacji o prawach autorskich do tego dokumentu. ˇ Nie wolno pomijać lub modyfikować numeru wersji oraz daty tego dokumentu. ˇ Nie wolno pomijać lub modyfikować wskazania do aktualnej wersji WWW dokumentu. ˇ Należy jednoznacznie oznaczać wszelkie skrócone, poprawione lub zmodyfikowane wersje tego dokumentu. 22.. WWpprroowwaaddzzeenniiee Tablety graficzne są obecnie niezbyt drogie i mogą być bardzo pomocne przy obróbce obrazów. Obok tego czego możemy dokonać przy użyciu myszy tablety cechuje dodatkowa funkcjonalność: ˇ możliwość określenie poziomu nacisku i nachylenia ˇ precyzyjna kontrola ruchów ˇ określanie położenia kursora z dokładnością do jednego punktu (pixela) ˇ podobne do piórka i jak ono obsługiwane urządzenie wejściowe Dokument ten opisuje głównie produkty firmy Wacom. Powodem tego jest fakt posiadania przeze mnie trzech różnych urządzeń tego producenta oraz to, że są one bardzo popularne w Europie. Niemniej jednak, sądzę że zaadaptowanie nakreślonej koncepcji do innych produktów nie powinno być rzeczą trudną. Powodem napisania tego dokumentu było to, iż nigdzie w Sieci nie mogłem znaleźć niczego podobnego. Zamiast tego miałem bardzo dużo dokumentów opisujących temat tylko częściowo. Po ich przeczytaniu, wciąż pozostawały (i nadal pozostają) otwarte pytania, na które nie znałem odpowiedzi. Zmusiło mnie to do zadawania pytań wielu różnym ludziom. Po tym wszystkim co zostało zrobione, nadal jestem przekonany, że dokument ten był tego wart. 22..11.. NNoowwee wweerrssjjee ddookkuummeennttuu Oryginał tego dokumentu znajduje się pod adresem: http://www.runkeledv.de/linux.htm 22..22.. UUwwaaggii ii PPoopprraawwkkii Mile widziane są wszelkie komentarze, poprawki oraz uzupełnienia. Skontaktować się można ze mną pod adresem: Runkel@runkeledv.de 22..33.. PPooddzziięękkoowwaanniiaa Chciałbym podziękować wszystkim autorom wymienionym w sekcji ``Dalsze informacje/wykorzystane dokumenty'' oraz wszystkim osobom, które odpowiedziały na moje pytania pocztą elektroniczną. Ten dokument jest odzwierciedleniem ich pracy. 33.. WWyymmaaggaanniiaa Ten rozdział mówi co jest potrzebne aby tablet zaczął działać 33..11.. JJaakkii sspprrzzęętt jjeesstt oobbssłłuuggiiwwaannyy Na początek powinieneś zdobyć tablet. Ponieważ obsługa USB pod Linuksem jest wciąż w fazie rozwoju, a ADB najprawdopodobniej długo już nie pociągnie, powinien to być model wyposażony w port szeregowy (RS232) Obsługiwane są następujące tablety Wacoma: ˇ seria ArtZ II (znana w Europie jako UltraPad - ta sama nazwa używana była przez częściowo obsługiwane wcześniejsze modele) ˇ ArtPad II ˇ PL300 (połączenie tableta i wyświetlacza LCD) ˇ Pen Partner ˇ Graphire (mysz i rysik, do ich obsługi musisz mieć sterownik przynajmniej w wersji alpha 11 - szczegóły poniżej) ˇ seria Intuos (sterowniki zawarte w bieżących dystrybucjach XFree86 mogą obsługiwać je tylko częściowo, aktualną wersję alpha można znaleźć na stronie Frederica Lepieda: http://www.lepied.com/xfree86/) Pomimo, iż starsze tablety Wacoma z serii SD oraz HD nie są standardowo obsługiwane przez sterowniki XFree86, istnieje zmodyfikowany sterownik obsługujący zarówno te, jak i inne urządzenia (np. produkty OEM ze zintegrowanymi wyświetlaczami, takie jak IBM Thinkpad 360 PE oraz Toshiba T200). Wspomniany sterownik znajduje się pod adresem: http://hwr.nici.kun.nl/pen-computing/pen-computing- formats.html 33..22.. JJaakkiieeggoo oopprrooggrraammoowwaanniiaa ppoottrrzzeebbuujjeemmyy ˇ Jeśli potrzebujesz obsługi tableta pod linuksową konsolę, ściągnij najnowszą wersję programu gpm spod adresu ftp://ftp.prosa.it/pub/gpm lub z ftp://animal.unipv.it/pub/gpm (kopia) ˇ Jeśli chcesz korzystać z tableta pod XFree86, musisz posiadać to oprogramowanie przynajmniej w wersji 3.3.3.1. Najnowsze aktualizacje znajdują się pod adresem http://www.xfree.org 33..33.. JJaakkiiee oopprrooggrraammoowwaanniiee jjeesstt oobbssłłuuggiiwwaannee ˇ Jedynym programem jaki znam dla konsoli linuksowej jest gpm. ˇ Dla XFree słowem kluczowym jest XInput. Po pierwsze specyfikacja ta musi być obsługiwana przez sterownik urządzenia, który dostarcza dodatkowe informacje. Po drugie programy, które chcą używać alternatywnych urządzeń wskazujących, muszą rozumieć XInput. Wiele programów bazuje na bibliotece gtk. Gtk posiada obsługę specyfikacji XInput dzięki czemu łatwo jest z niej skorzystać. Wsparcie dla XInput zawieraja poniższe aplikacje: ˇ The Gimp - potężny program do przetwarzania obrazów w stylu pakietu Photoshop. Niestabilna wersja rozwojowa 1.1.x standardowo obsługuje XInput. W chwili pisania niniejszego dokumentu (10/99) Gimp 1.1.x znajdował sie w fazie zamrażania funkcjonalności. Mam nadzieję że do końca roku 1999 wydana zostanie stabilna wersja 1.2. Gimpa można ściągnąć spod adresu http://www.gimp.org, naprawdę na to zasługuje! Jestem pewny, że większość z Was zna ten program i że to właśnie on był powodem kupna tableta. ˇ gsumi - prosty, czarno-biały program do rysowania obsługujący zmiany nacisku i nachylenia podczas kreślenia/wycierania. Dostępny na stronie: http://www.gtk.org/~otaylor/gsumi/ ˇ xink (autorstwa Ralpha Leviena) - kolejny prosty program graficzny dla X. xink można ściągnąć z serwera plików: ftp://kiwi.cs.berkeley.edu/pub/raph/xink.tar.gz ˇ RasMol - program do wizualizacji molekularnej obsługujący specjalistyczne urządzenie wejściowe (dial box) przy użyciu XInput. Zajżyj na stronę http://www.umass.edu/microbio/rasmol/distrib/rasman.htm. ˇ xinput (autorstwa Frederica Lepieda) - bardzo przydatne narzędzie do konfigurowania i testowania urządzeń XInput. xinput jest dostępny pod adresem: ftp://ftp.x.org/contrib/utilities/xinput-1.2.tar.gz 44.. TTaabblleettyy jjaakkoo zzaammiieennnniikk mmyysszzyy ddllaa kkoonnssoollii LLiinnuukkssaa 44..11.. TTaabblleettyy ii ggppmm Demon ``gpm'' obsługuje całkiem sporą liczbę urządzeń wejściowych, w tym tablety. Jeżeli chciałbyś otrzymać listę obsługiwanych przez Twoją wersję gpm urządzeń wykonaj następujące polecenie: _g_p_m _-_t _h_e_l_p Pomimo tego, że nie znalazłem nic na ten temat w dokumentacji, wydaje mi się że zawarty w gpm-ie sterownik do Wacoma został napisany dla bardzo starych modeli UltraPad. Testowałem go z modelami PenPartner, Graphire oraz Intuos ale nie działał. Dopisałem obsługę Graphire dla gpm, aby jej użyć potrzebna jest przynajmniej wersja 1.18.1 programu gpm. Jeżeli posiadasz starego ArtPada, spróbuj wykonać: _k_i_l_l_a_l_l _g_p_m _; _g_p_m _-_t _w_a_c_o_m _-_m _/_d_e_v_/_t_t_y_S_0 powinno zadziałać. Jeśli używasz modelu Graphire, polecenie powinno wyglądać następująco: _k_i_l_l_a_l_l _g_p_m _; _g_p_m _-_t _g_r_a_p_h_i_r_e _-_m _/_d_e_v_/_t_t_y_S_0 Oczywiście, uzyskasz dostęp wyłącznie do funkcji ruchu i klawiszy, nacisk i pochylenie nie będą obsługiwane, gdyż tak naprawdę nie są to zbyt przydatne funkcje w aplikacjach tekstowych. Jeżeli równocześnie korzystasz z gpm i XFree86 to możesz, choć nie musisz, popaść w kłopoty w związku z tym, że w tym samym czasie urządzenie zwykle może być używane tylko przez jeden program. Istnieją dwa rozwiązania tego problemu: ˇ Tryb powtarzania gpm. Jeżeli uruchomisz serwis gpm z opcją "-R protokół" to wszystkie otrzymane dane będą przesyłane do urządzenia /dev/gpmdata. Powiedzmy, że masz mysz typu ps2 i twoje wywołanie gpm wygląda następująco: _g_p_m _-_t _p_s_2 _-_R_m_m_a_n. Serwis gpm otrzymuje dane od myszy ps2 i próbuje przetłumaczyć je na pakiety mman, które z kolei są przesyłane do /dev/gpmdata. Niestety w chwili pisania tego dokumentu gpm potrafi przetłumaczyć dane tylko dla kilku protokołów. Jeżeli chciał(a)byś pominąć proces tłumaczenia i przesyłać dane bajt po bajcie, wywołaj po prostu _g_p_m _-_t _p_s_2 _-_R _r_a_w. Następnie, umieszczając linie _D_e_v_i_c_e _"_/_d_e_v_/_g_p_m_d_a_t_a_" w sekcji pointer lub Xinput pliku XF86Config umożliwiamy XFree korzystanie z tego drugiego urządzenia. ˇ Jeżeli używasz startx, możesz zmodyfikować to polecenie tak by wykonywało _g_p_m _-_k przed uruchomieniem serwera X. Ta opcja usuwa działający serwis gpm. 55.. TTaabblleettyy ww XXFFrreeee 55..11.. WWyymmaaggaannaa wweerrssjjaa XXFFrreeee Minimalną wersją ``XFree'' powinna być 3.3.3.1. Jest to związane z rozszerzoną obsługą XInput, działaniem drugiego przełącznika oraz zlikwidowaniem efektu blokowania myszy. Jeżeli musisz korzystać z wersji wcześniejszej, obsługa XInput powinna być dostępna od 3.1.2.d. Obsługa XInput w XFree jest zwykle konfigurowana w pliku XF86Config. W większości wypadków plik XF86Config umieszczony jest w katalogu /etc lub /etc/x11. Pokażę teraz bardzo krótką sekcję konfiguracyną i wyjaśnię co może być zmienione i dlaczego jest to potrzebne. 55..22.. PPrrzzyykkłłaaddoowwyy wwyycciinneekk XXFF8866CCoonnffiigg ((pprroossttyy)) Section "Module" # sterownik urządzenia Wacom Load "xf86Wacom.so" EndSection Section "Xinput" # ustawienia dla rysika Wacoma SubSection "WacomStylus" # typ urządzenia wejściowego DeviceName "Pen1" # nazwa, wybierz dowolną Port "/dev/ttyS0" # port szeregowy Baudrate 9600 # użyteczne tylko dla Intuosa Mode Absolute # mapuj obszar tableta na ekran AlwaysCore # patrz opis HistorySize 200 # rozmiar bufora dla ruchu EndSubSection EndSection 55..33.. SSeekkccjjaa mmoodduułłuu Obsługa XInput w XFree jest osiągana przez użycie modułów. Moduł sterownika urządzenia dla Wacoma nosi nazwę ``xf86Wacom.so''. Jego wywołanie umieszczamy w sekcji "Module" pliku XF86Config tylko jeden raz. 55..44.. RRooddzzaajjee uurrzząąddzzeeńń Urządzeniem fizycznym może być: ˇ czubek rysika ˇ gumka umieszczona na rysiku ˇ myszka - kursor z "celownikiem" Wacoma, mysz 4d, mysz Graphire ˇ rozpylacz (airbrush) PenPartner oraz Graphire rozpoznaja typ urządzenia ale nie potrafią ich rozróżnić. Dla przykładu, nie możesz użyć dwóch różnych rysików, skonfigurowanych powiedzmy, jeden na czerwono, drugi na niebiesko - wszystko co te urządzenia rozpoznają to: "Znalazłem czubek rysika na mojej powierzchni", lub "Znalazłem gumkę na mojej powierzchni", lub "znalazłem myszkę na mojej powierzchni". XInput przypisuje urządzeniom ich rodzaj, które z kolei zostaną później opisane w pliku XF86Config w podsekcjach sekcji Xinput: ˇ WacomStylus czubek rysika lub rozpylacza ˇ WacomErasor gumka na rysiku lub rozplaczu ˇ WacomCursor myszy takie jak mysz Graphire, kursor "z celownikiem", mysz 4d 55..55.. NNaazzwwaa uurrzząąddzzeenniiaa Każdemu skonfigurowanemu urządzeniu musisz nadać unikalną nazwę. Nazwa ta będzie później używana w Twoim programie do komunikacji z tym urządzeniem. Wybór nazwy zależy od ciebie. 55..66.. PPoorrtt XInput chce wiedzieć do którego portu szeregowego podłączone jest nasze urządzenie. Pozwala mi to na używanie dwóch różnych tabletów w tym samym czasie, na przykład Graphire podłączonego do /dev/ttyS0 i PenPartnera podłączonego do /dev/ttyS01. 55..77.. PPoozziioomm DDeebbuuggLLeevveell Dzięki ustawieniu poziomu DebugLevel możemy kontrolować poziom "gadatliwości" sterownika Wacoma do logów. Poziomy mogą przybierać wartości od 0 do 10. Jeżeli pominiemy to ustawienie przyjęta zostanie wartość domyślna DebugLevel równa 0, co odpowiada bardzo skąpemu logowaniu. PPrrzzyykkłłaadd:: SubSection "WacomStylus" # rysik DeviceName "PenRed" # nazwa, wybież dowolną ... DebugLevel 10 # generuj bardzo dużo komunikatów ... EndSubSection 55..88.. NNuummeerr sseerryyjjnnyy ((ttyyllkkoo ddllaa ttaabblleettóóww IInnttuuooss)) Tablety Intuos są bardziej wydajne niż PenPartner i Graphire ponieważ potrafią rozróżnić wiele urządzeń tego samego rodzaju. Znaczy to tyle, że możemy już używać dwa rysiki, jeden skonfigurowany jako czerwony, drugi skonfigurowany jako niebieski. Jak widać rozróżnianie wyłącznie rodzajów urządzeń nie daje wystarczającej informacji do obsługi różnych rysików. Dlatego, każde urządzenie Intuosa, niech będzie to rysik, piórko, mysz lub cokolwiek, posiada numer seryjny, który możesz wyspecyfikować by umożliwić rozpoznanie konkretnego urządzenia przez XInput. Wygląda to następująco: Section "Xinput" SubSection "WacomStylus" # rysik DeviceName "PenRed" # nazwa, wybierz dowolną ... Serial 2609917443 # numer seryjny tego urządzenia ... EndSubSection SubSection "WacomStylus" # inny rysik DeviceName "PenBlue" # nazwa, wybierz dowolną ... Serial 2609918664 # numer seryjny tego urządzenia ... EndSubSection EndSection Chciałbym zaznaczyć że złożone urządzenia wejściowe posiadają tylko jeden mumer seryjny. Sterownik używa otrzymany numer seryjny do rozpoznania specyficznego rysika, natomiast czubek rysika od gumki jest rozpoznawany na podstawie rodzaju urządzenia. 55..88..11.. JJaakk uuzzyykkaaćć nnuummeerr sseerryyjjnnyy ddaanneeggoo uurrzząąddzzeenniiaa 1. Ustaw DebugLevel na 6 2. Uruchom serwer X wypisując polecenie _X _2_>_t 3. Dotknij powierzchni tableta po kolei wszystkimi urządzeniami, zapamiętując kolejnosć. 4. Usuń proces serwera X (zwykle Ctrl+Alt+Backspace) 5. Uruchom _g_r_e_p _s_e_r_i_a_l___n_u_m _t Powinieneś otrzymać listę z różniącymi się numerami. 55..88..22.. NNuummeerr sseerryyjjnnyy -- pprrzzyykkłłaadd tteeggoo ccoo zzoossttaałłoo zzaallooggoowwaannee BEGIN xf86WcmProc dev=0x8354d60 priv=0x833e3f0 type=stylus flags=9 what=1 xf86WcmProc pWcm=0x8354d60 what=ON END xf86WcmProc Success what=1 dev=0x8354d60 priv=0x833e3f0 device_id=0x96 serial_num=2595227137 type=cursor [cursor] abs prox=false x=0 y=0 z=0 button=false buttons=0 55..99.. TTrryybbyy pprraaccyy bbeezzwwzzggllęęddnnyy ((aabbssoolluuttee)) ii wwzzggllęęddnnyy ((rreellaattiivvee)) Jeżeli ustawisz tablet do pracy w trybie bezwzględnym, cała powierzchnia urządzenia będzie odpowiadała ekranowi komputera. Za każdym razem gdy opuścisz rysik na ten sam punkt tableta wskaźnik pojawi się w odpowiadającym mu tym samym punkcie ekranu. Jeżeli ustawisz urządzenie do pracy w trybie względnym, uzyskasz dobrze Ci znane zachowanie myszy. Jeśli podniesiesz myszkę z powierzchni, przesuniesz ją i ponownie opuścisz, wskaźnik (idealnie) nie poruszy się. PPrrzzyykkłłaadd:: Mode Absolute 55..1100.. TTrryybbyy pprraaccyy uurrzząąddzzeeńń EExxtteennssiioonn,, CCoorree oorraazz AAllwwaayyssCCoorree XFree zna dwa rodzaje wskaźników: pierwszy, posiadający tylko podstawową funkcjonalność (klawisze, możliwość ruchu), wykorzystywany jest do wybierania pozycji menu, zaznaczania tekstu, naciskania guzików i tym podobnych rzeczy. Jest to urządzenie podstawowe _C_o_r_e. Drugi rodzaj wskaźnika wykorzystują aplikacje potrzebujące dodatkowych informacji, takich jak poziom nacisku czy nachylenia. Urządzenie to nazywamy rozszerzonym - _E_x_t_e_n_s_i_o_n. Począwszy od wersji 3.3.3.1, ustawienie _A_l_w_a_y_s_C_o_r_e mówi sterownikowi by powinien osługiwać obydwa rodzaje zdarzeń. Jeżeli w pliku XF86Config nie zostanie wyspecyfikowane ustawienie AlwaysCore, wskaźnik zostanie zainicjowany w trybie rozszerzonym - będzie można z niego skorzystać wewnątrz aplikacji, ale już nie do kontroli pozycji menu systemu zarządzania oknem. Jeżeli pozycja AlwaysCore została wpisana, urządzenie (obok myszy) będzie działać jako wskaźnik podstawowy wysyłając dodatkowo informacje na temat nachylenia i nacisku do wszystkich programów, które uzyskały dostęp do wskaźnika w trybie rozszerzonym. Dzięki użyciu dwóch różnych urządzeń logicznych możemy tak skonfigurować jedno fizycznie urządzenie, by pracowało zarówno w trybie podstawowym jak i rozszerzonym. Aby tego dokonać musimy stworzyć dwie identyczne sekcje różniące się jedynie ustawieniem nazwy urządzenia DeviceName. Następnie musimy dodać wpis AlwaysCore od ostatniej z tych sekcji. PPrrzzyykkłłaadd:: AlwaysCore 55..1111.. PPaarraammeettrr HHiissttoorryySSiizzee Ustawienie HistorySize określa rozmiar bufora używanego do przechowywania informacji o zdarzeniach ruchu. 55..1122.. PPaarraammeettrr SSuupppprreessss Ustawienie to określa liczbę jednostek, o które urządzenie musi być przesunięte zanim sterownik poruszy wskaźnikiem. Jest ono zwykle niezbędne przy użyciu wysokich rozdzielczości. PPrrzzyykkłłaadd:: Suppress 6 55..1133.. PPaarraammeettrr TTiillttMMooddee ((ttyyllkkoo IInnttuuooss)) TiltMode umożliwia wysyłanie informacji na temat pochylenia dla urządzeń wejściowych tableta Intuos. Jeżeli pominiemy ten parametr, przesyłana zostanie jedynie informacja o nacisku. 55..1144.. UUssttaawwiieenniiaa TTooppXX,, TTooppYY,, BBoottttoommXX,, BBoottttoommYY Te cztery parametry pozwalają na zredukowanie aktywnego obszaru tableta. Dla przykładu, mój Intuos A4 oversize jest tak wielki, że nie da się na nim normalnie malować, gdyż ruchy rysika muszą być zbyt duże. Używam tych parametrów aby tak poinstruować sterownik by przypisał do ekranu tylko lewą dolną ćwiartkę tableta. PPrrzzyykkłłaadd:: TopX 0 # współrzędne lewego górnego punktu TopY 5000 BottomX 5000 # współrzędne prawego dolnego punktu BottomY 10000 55..1144..11.. OOkkrreeśśllaanniiee mmaakkssyymmaallnnyycchh wwaarrttoośśccii XX,, YY,, aakkttuuaallnneejj kkoonnffiigguurraaccjjii oorraazz rroozzddzziieellcczzoośśccii Jeśli używasz powyższych ustawień, najprawdopodobniej będziesz chciał obliczyć rozmiar oraz położenie definiowanego prostokąta. Zwykle potrzebne są do tego maksymalne współrzędne oraz rozdzielczość. Aby poznać te wartości uruchom swój serwer: _X _2_>_t. Następnie usuń proces serwera X (zwykle Ctrl+Alt+Backspace) i wykonaj _g_r_e_p _"_X_=_" _t. W odpowiedzi powinieneś otrzymać wartości które Cię interesowały. 55..1144..22.. OOkkrreeśśllaanniiee rroozzddzziieellcczzoośśccii -- pprrzzyykkłłaadd tteeggoo ccoo zzoossttaałłoo zzaalloo­­ ggoowwaannee (--) Wacom IV tablet maximum X=5103 maximum Y=3711 X resolution=1000 Y resolution=1000 suppress=6 (--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711 (--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711 (--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711 55..1155.. UUssttaawwiieenniiee KKeeeeppSShhaappee Opcja ta korzysta ze zmiennych TopX i TopY (lub wbudowanych wartości domyślnych, jeśli je pomineliśmy) do ustawienia parametrów BottomX i BottomY tak aby ˇ współczynnik wysokość/szerokość ekranu był identyczny z tabletem ˇ aktywny obszar tableta, począwszy od punktu TopX, TopY, był jak największy z uwzględnieniem powyższego warunku. Jakiekolwiek wcześniejsze ustawienia BottomX i BottomY są ignorowane, gdyż wartości tych zmiennych zostaną obliczone. 66.. ZZmmiiaannyy kkoonnffiigguurraaccjjii ppoodd ddzziiaałłaajjąąccyymmii XX--aammii 66..11.. KKoonnffiigguurroowwaanniiee GGiimmppaa ww cceelluu wwyykkoorrzzyyssttaanniiaa uurrzząąddzzeeńń XXIInnppuutt Począwszy od wersji 1.1.x ``Gimp'' posiada wbudowaną obsługę XInput. Aplikacja musi jednak wiedzieć, którego urządzenia powinna użyć i w jakim trybie. Aby to ustawić powinieneś otworzyć okno dialogowe _P_l_i_k_/_O_k_n_a _d_a_l_o_g_o_w_e_/_U_r_z_ą_d_z_e_n_i_a _w_e_j_ś_c_i_o_w_e (w wersji angielskiej _F_i_l_e_/_D_i_a_l_o_g_s_/_I_n_p_u_t _D_e_v_i_c_e_s). U góry okna znajdziesz dwie rozwijane listy z etykietami _U_r_z_ą_d_z_e_n_i_e (_D_e_v_i_c_e) oraz _T_r_y_b (_M_o_d_e). Z pierwszej wybierz urządzenie z drugiej tryb obsługi. Tryby te to: ˇ Wyłączone (disabled): Gimp nie wykorzystuje danego urządzenia. ˇ Okno (window): Gimp korzysta z urządzenia. (Kursor jest rysowany przez tą apliakcje ???) ˇ Ekran (screen): Gimp korzysta z urządzenia. (Kursor jest rysowany przez serwer X ???) Jeżeli widzimy, że znaszym urządzeniem związane są dwa kursory, mamy dwa rozwiązania: ˇ Możemy użyć trybu ekranu, ale może to (choć nie musi) spowodować utrate specjalnych kursorów gimp-tool. Jeśli tak się stanie, wszystkie kursory zostaną zastąpione przez kursor-ołówek. ˇ Możemy też w pliku XF86Config skonfigurować dwa różne urządzenia, jedno jako _A_l_w_a_y_s_C_o_r_e a drugie bez tej opcji. Musimy jeszcze powiadomić gimpa by drugie z urządzeń wykorzystywał w trybie okna. Jeśli tak uczynimy, a w naszym pliku XF86Config używamy jednego z ustawień _T_o_p_X_, _T_o_p_Y_, _B_o_t_t_o_m_X _o_r_a_z _B_o_t_t_o_m_Y_, musimy zadbać by obydwa urządzenia logiczne miały te same ustawienia dla tych parametrów. W przeciwnym wypadku możemy być zaskoczeni, tym że X-y wyswietlą kursor jednego z urządzeń podczas gdy aktywne będzie drugie. Efektem tego będzie kursor znacznie odsunięty od punktu akcji. Poniżej obydwu rozwijanych list znajdują się pola kontrolne z zakładkami _O_s_i_e _(_A_x_e_s_) oraz _K_l_a_w_i_s_z_e _(_K_e_y_s_). _O_s_i_e przypisują osiom funkcje. W większości przypadków nie potrzeba zmieniać tych ustawień, ale możesz zastanowić się nad ekranem dotykowym, który został zamontowany w pozycji obróconej o 90 stopni. W tym przypadku moglibyśmy chcieć zamienić ze sobą osie x i y. Niektóre tablety posiadają umieszczone u góry specjalne klawisze makropoleceń (makro), kórym mogą być przypisane często używane funkcje. Zakładka _K_l_a_w_i_s_z_e pozwala na przypisanie do klawisza makro pwnego znaku. Na przykład do klawisza makro można przypisać kombinację Ctrl+Shift+R. Jeżeli zostanie on naciśnięty, wywołana zostanie funkcja włączenia/wyłączenia linijki. Obecne sterowniki do tabletów Wacoma obsługują klawisze makro jedynie w UltraPadach, pola klawiszy w tabletach Intuos nie są wykorzystane w ten sposob. Powinniśmy teraz omówić jak możemy korzystać z naszych urządzeń. Otwórz okno dialogowe _P_l_i_k_/_O_k_n_a _d_i_a_l_o_g_o_w_e_/_S_t_a_n _u_r_z_ą_d_z_e_n_i_a _(_F_i_l_e_/_D_i_a_l_o_g_s_/_D_e_v_i_c_e _S_t_a_t_u_s_). Otwórz dowolny plik z rysunkiem. Każde urządzenie wejściowe w gimpie jest konfigurowane osobno. Jeżeli będziesz poruszał kursorem w oknie rysunku przy użyciu różnych urządzeń zauważysz zmianę urządzeń w oknie dialogowym Stan urządzenia. Jeśli wybierzesz dowolne narzędzie, pędzel, wzór lub kolor zmiana także zostanie uwzględniona. Aby wybrane ustawienia zostały odtworzone przy następnej sesji gimpa można je tam zapisać. 66..22.. UUrrzząąddzzeenniiee pprrzzeełłąącczznniikkaa ((SSWWIITTCCHH)) Jest to, cały czas aktywne, urządzenie specjalne. Generuje ono zdarzenia za każdym razem gdy nowe urządzenie przejmuje wskaźnik w trybie podstawowym. Posiada ono pseudo "oś". "Wartość" na tej osi jest identyfikatorem urządzenia będącego wskaźnikiem podstawowym. Nie mam pojęcia co użytkownik mógłby zrobić z urządzeniem przełącznika - głównie jest ono przydatne dla programistów. 66..33.. PPrrzzyycciisskkii Przyciski, w które są wyposażone urządzenia wejściowe mogą być tak zróżnocowane jak same urządzenia: Rysik posiada przynajmniej czubek, ale może też mieć jeden lub dwa przyciski na boku oraz gumke na drugim końcu. Myszy mogą mieć do 32 klawiszy (choć zwykle mają ich 3). Przyciski ponumerowane są od 1 do liczby klawiszy. Opisane poniżej dwa programy pozwalają na modyfikacje liczby wykorzystywanych klawiszy. 66..44.. PPrrzzyyppoorrzząąddkkoowwyywwaanniiee pprrzzyycciisskkóóww pprrzzyy uużżyycciiuu xxmmooddmmaapp ddllaa uurrzząąddzzeeńń pprraaccuujjąąccyycchh ww ttrryybbiiee ppooddssttaawwoowwyymm xmodmap będzie modyfikował jedynie wskaźnik podstawowy (Core Pointer). Jako że w danym momencie istnieje tylko jeden wskaźnik podstawowy, nie mają znaczenia różnice pomiędzy fizycznymi urządzeniami, które mogą stać się takim wskaźnikiem. Na jakiś czas zapomnijmy o całym tym XInput i pomyślmy o osobie leworęcznej, która chciałaby zamienić znaczenie prawego i lewego przycisku myszy. Aby poznać stan aktualny można wykonać polecenie _x_m_o_d_m_a_p _-_p_p. W odpowiedzi powinniśmy otrzymać następującą tabelę: Physical Button Button Code 1 1 # ( lewy przycisk ) 2 2 # ( prawy przycisk ) 3 3 # ( środkowy przycisk ) Aby zamienić klawisze należy wykonać polecenie _x_m_o_d_m_a_p _-_e _"_p_o_i_n_t_e_r _= _2 _1 _3_", oraz _x_m_o_d_m_a_p _-_e _"_p_o_i_n_t_e_r _= _d_e_f_a_u_l_t_" aby przywrócić poprzednie przypisanie. Powinno to działać dla dowolnych urządzeń posiadających przynajmniej dwa przyciski. Należy zaznaczyć, że wyrażenie _"_p_o_i_n_t_e_r _= _x _x _x_" musi być zawarte w cudzysłowach by zapobiec jego modyfikacji ze strony powłoki. 66..55.. PPrrzzyyppoorrzząąddkkoowwyywwaanniiee pprrzzyycciisskkóóww pprrzzyy uużżyycciiuu xxiinnppuutt ddllaa uurrzząąddzzeeńń pprraaccuujjąąccyycchh ww ttrryybbiiee rroozzsszzeerrzzoonnyymm Wróćmy ponownie do XInput. Jeśli używasz gimpa, możesz chcieć zmienić przyporządkowanie klawiszy dla każdego urządzenia osobno (możesz być zadowolony z myszy, ale chciałbyś zamienić znaczenia dwóch bocznych przycisków rysika). Frederic Lepied napisał w tym celu program o nazwie ``xinput''. Aby zamienić boczne przyciski powinieneś wykonać polecenie _x_i_n_p_u_t _l_i_s_t w celu uzyskania listy urządzeń wraz z ich aktualnymi ustawieniami. Zamiana realizowana jest przez wykonanie _x_i_n_p_u_t _s_e_t_-_b_u_t_t_o_n_-_m_a_p _P_e_n_1 _1 _3 _2 gdzie _P_e_n_1 jest urządzeniem, które chcemy zmienić. Począwszy od XFree 3.3.2 rozwiązanie to działa dla urządzeń skonfigurowanych (w pliku XF86Config) jako _A_l_w_a_y_s_C_o_r_e. 66..66.. xxsseettmmooddee -- zzmmiiaannyy ttrryybbuu pprraaccyy nnaa wwzzggllęęddnnyy oorraazz bbeezzwwzzggllęęddnnyy Przy pomocy xsetmode możliwe jest przełączanie urządzenia pomiędzy trybem bezwzględnym (absolute) a względnym (relative) trybem pracy. PPrrzzyykkłłaadd:: _x_s_e_t_m_o_d_e _G_r_a_p_h_i_r_e_M_o_u_s_e _A_B_S_O_L_U_T_E 66..77.. xxsseettppooiinntteerr -- uussttaawwiiaanniiee ddoommyyśśllnneeggoo uurrzząąddzzeenniiaa ppooddssttaawwoowweeggoo Jeżeli żadne z naszych urządzeń nie zostało skonfigurowane jako _A_l_w_a_y_s_C_o_r_e a chcielibyśmy by jedno z nich zostało wskaźnikiem podstawowym musimy użyć programu xsetpointer. Wykonaj polecenie _x_s_e_t_p_o_i_n_t_e_r _N_a_z_w_a_U_r_z_ą_d_z_e_n_i_a. Stare urządzenie podstawowe (zwykle jest to mysz) nie będzie już dłużej wykorzystywane, jego miejsce zajmie urządzenie wyspecyfikowane w naszym poleceniu. Dla przykładu możliwe jest przypisanie funkcji wskaźnika podstawowego myszy Graphire w uruchomionych wczesniej XFree. _x_s_e_t_p_o_i_n_t_e_r _-_l wypisuje listę wszystkich urządzeń oraz ich trybów pracy. 66..88.. KKllaawwiisszzee Niektóre urządzena posiadają klawisze makro lub specjalne pola, którym można przypisać pojedyncze znaki sterujace lub też ich ciągi. Działa to wyłącznie dla urządzeń pracujących w trybie rozszerzonym, a co za tym idzie, realizowane jest przez te aplikacje, które chcielibyśmy by wykorzystywały klawisze. _x_i_n_p_u_t _-_l daje nam informacje na temat liczby klawiszy czy też wysyłanych znaków sterujących. 66..99.. NNaarrzzęęddzziiaa ddoo kkoorrzzyyssttaanniiaa zz wwiięęcceejj nniiżż jjeeddnneeggoo ttaabblleettaa oorraazz ddoo wwłłąącczzaanniiaa ii wwyyłłąącczzaanniiaa oobbssłłuuggii Posiadam 3 tablety Wacoma, które używam wraz z moim notebookiem. Za każdym razem gdy uruchamiam X-y, a żaden z tabletów nie jest podłączony do komputera, musi upłynąć sporo czasu nim sterowniki się poddadzą. Jeżeli uruchamiany jest xdm okres oczekiwania znacznie się wydłuża. Stworzyłem dwa narzędzia, które powinny ułatwić życie wszystkim którzy są w takiej samej sytuacji: ˇ Skrypt powłoki ssxx dla tych, którzy używają startx. sx korzysta z pola dialogowego do prezentacji całkiem ładnego menu pozwalającego na wybór: ˇ jednego z 10 urządzeń (tablet, joystick, ...) ˇ wykorzystywanego wyświetlacza dla notebooków (ekran wewnętrzny lub zewnętrzny) ˇ używanego window managera ˇ Mała aplikacja gtk xxiinnppuutt--cchhoooosseerr dla tych, którzy używają xdm. Za każdym razem, gdy wyświetlany jest ekran logowania xdm, xinput- chooser prezentuje użytkownikowi listę menu, z której można wybrać jedną z dziesięciu różnych konfiguracji. Koncepcją, która leży u podstaw działania obu programów, jest podział pliku XF86Config na plik XF86Config.bare, zawierający informacje wspólne dla wszystkich konfiguracji, oraz szereg małych plików zawierających specyficzne informacje na temat poszczególnych konfiguracji. Obydwa narzędzia łączą te części w działającą całość. Pakiet ten jest dostępny na stronie http://www.runkeledv.de/download, pod nazwą xinput_chooser_sr. 77.. DDaallsszzee iinnffoorrmmaaccjjee//wwyykkoorrzzyyssttaannee ddookkuummeennttyy gpm: strona podręcznika (man) gpm, FAQ gpm, kod źródłowy pliku mice.c XInput: dokument XInput HOWTO autorstwa Owena Taylora XFree oraz Wacom: podręcznik XF86Config strona Web Frederica Lepieda dużo, dużo listów... 88.. OOdd ttłłuummaacczzaa Dokument ten został napisany w standardzie ISO-8859-2. Tłumaczenie to jest chronione prawami autorskimi (c) Marka Guevara Braun. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeżeli znalazłeś(łaś) jakieś błędy ortograficzne, gramatyczne, składniowe lub techniczne to napisz do mnie na adres marek@atm.com.pl Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp://www.jtz.org.pl/pub/Linux/JTZ/ Zmiany wprowadzone przez tłumacza w stosunku do oryginału to odnośniki do polskich serwerów ftp i WWW oraz zmiana pisowni nazw produktów Wacoma (Intuos zamiast intuos, Graphire zamiast graphire, itp.) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/configure-stamp��������������������������������������������������������0100644�0001750�0001750�00000000000�07502344762�017414� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-linux-pl-2002.06.14.orig/build-stamp������������������������������������������������������������0100644�0001750�0001750�00000000000�07502344762�016532� 0����������������������������������������������������������������������������������������������������ustar �coven���������������������������coven������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������