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.