Mini Howto dla bezdyskowych stacji<newline> <author>Robert Nemkin, <htmlurl url="mailto:buci@math.klte.hu" name="buci@math.klte.hu"><newline> v0.0.3, 12 Września 1996.<newline> <bf>Wersja polska: Bartosz Maruszewski <htmlurl url="mailto:B.Maruszewski@zsmeie.torun.pl" name="B.Maruszewski@zsmeie.torun.pl"><newline> </bf> v1.12, 26 Lipca 1997 <abstract> 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 <tt>bkis@cartan.math.klte.hu</tt> za przetłumaczenie tego dokumentu na język angielski. Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje się pod adresem <url url="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/" name="ftp.icm.edu.pl">. </abstract> <toc> <sect>Zmiany. <p> <itemize> <item>v0.0.3 12 Września 1996: Małe poprawki błędów. </itemize> <sect>Jak zainstalować bezdyskową stację roboczą Linux-a ? <p> 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. <sect>Dokumenty związane z tym. <p> <itemize> <item>NFS-root Mini Howto <item>Linux NET-2/3-HOWTO napisane przez Terry Dawsona, <em>94004531@postoffice.csu.edu.au</em> <item><tt>/usr/src/linux/README</tt> na temat konfiguracji i kompilacji nowego jądra. </itemize> <sect>Sprzęt. <p> Cokolwiek tu było opisane, sprawdzone zostało na następującej konfiguracji: <itemize> <item>Sun-OS 4.1.3 jako serwer startowy <item>Slackware 2.3 + Linux 1.2.8 + wd 8013 ethercard <item>Działająca sieć lokalna oparta na Ethernecie. </itemize> <sect>Podstawowe idee. <p> 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. <footnote>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.</footnote> Aby to zrobić postepuj zgodnie z poniższymi krokami. <sect1>Ustawianie PC-ta. <p> Zdobądź pakiet <tt/nfsboot/. (Dostępny jest np. z <htmlurl url="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/Linux-boot/" name="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: <itemize> <item>jeśli twój komputer nie jest całkowicie bezdyskowy, wtedy możesz użyć małego DOS-owego programu albo <item>obrazu dyskietki binarnej z tego samego pakietu. </itemize> Jeśli wybierzesz tę druga opcję musisz zapisać obraz na dyskietke poleceniem <tt/dd/. Obrazy te zawierają klienta bootp oraz tftp. Musisz także przygotować jądro, które będzie zawierało opcję nfs-root. <itemize> <item>Jeśli używasz najnowszej stabilnej wersji jądra, linux-1.2.13, to musisz załatać jądro łatą zawartą w pakiecie <tt/nfsboot/. <footnote>Zobacz patch(1)</footnote> <item>Jeśli próbujesz użyć najnowszej wersji jądra z serii 1.3.x, to musisz skonfigurować opcję nfs-root. </itemize> 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. <sect1>Ustawianie bootpd na serwerze. <p> Można go znleźć w pakiecie <tt>>bootpd-2.4.tar.gz</tt> na serwerze <htmlurl url="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/network/boot.net/" name="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: <tt>bootpd -s</tt> albo używając inetd. W tym wypadku musisz: <itemize> <item>zmienić plik <tt>/etc/inetd.conf</tt> przez usunięcie znaku # z początku tych linii: <code> # tftp dgram udp wait root /usr/sbin/in.tftpd tftpd /export # bootps dgram udp wait root /usr/sbin/in.bootpd bootpd </code> <item>dołożyć lub także odkomentować następujące linie w pliku <tt>/etc/services</tt> <code> bootps 67/tcp # serwer BOOTP tftp 69/udp # serwer TFTP </code> <item>ponownie zainicjować inetd przez kill -HUP <PID inetd> </itemize> <sect1>Konfiguracja bottpd na serwerze. <p> Po pierwsze bootpd ma plik konfiguracyjny o nazwie <tt>bootptab</tt>, który z reguły znajduje się w katalogu <tt>/etc</tt>. 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 <tt>/etc/bootptab</tt>: <code> 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 </code> <it>global.prof</it> jest ogólnym szablonem dla pól host-a, gdzie <itemize> <item>sm jest maską podsieci <item>ds jest adresem serwera DNS <item>gw jest adresem gatway-a <item>ht jest typem sprzętu LAN <item>bf jest nazwą pliku startowego </itemize> Potem każdy komputer musi mieć swoją linię: <itemize> <item>pierwsze pole jest nazwą host-a <item>pole hd jest katalogiem, w którym znajduje się plik startowy <item>ogólny szablon może być zawarty przez pole tc <item>pole ha jest adresem sprzętowym karty ethernet <item>pole ip jest adresem przypisanym do danego host-a </itemize> <sect1>Rozumienie tftp. <p> TFTP (<tt>Trivial File TRansfel Protocol</tt>) 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: <itemize> <item>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). <item>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: <tt>/export/root/machine1</tt>. Podczas używania bezpiecznego tftp z katalogiem <tt>/expoprt</tt> jako katalog główny, wtedy <tt>/export</tt> staje się / a pole hd musi zawierać <tt>/root/machine1</tt>. </itemize> Prawie każda implementacja Unix-a zawiera serwer tftp, przypuszczalnie nie musisz instalować własnego. <sect1>Ustawianie minimalnej konfiguracji Linux-a na odległym serwerze. <p> 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 <tt>/</tt> na <tt>/mnt</tt>. 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 <tt>/usr</tt> (nie zaweira on żadnych prywatnych danych) i stworzyć osobne podkatalogi dla każdej bezdyskowej stacji. Na przykład, jeśli <tt>/export/linux/machine1</tt> zostałby zamontowany na <tt>/mnt</tt> wtedy struktura katalogów po inicjacyjny ustawieniu wyglądałaby tak: <code> /export/linux/machine1/bin /export/linux/machine1/sbin /export/linux/machine1/lib /export/linux/machine1/etc /export/linux/machine1/var /export/linux/machine1/usr </code> <p>Po zmianach wyglądałaby tak: <code> /export/linux/machine1/bin /export/linux/machine1/sbin /export/linux/machine1/lib /export/linux/machine1/etc /export/linux/machine1/var /export/linux/usr </code> 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: <code> #!/bin/bash cd /export/linux for x in machine2 machine3 ; do mkdir $x; cd $x (cd ../machine1; tar cf - *) | tar xvf - done </code> Potem zrób nastepujące eksporty: <itemize> <item>/export/linux/usr tylko-do-odczytu dla każdego <item>/export/liunx/machine1 tylko dla machine1 z prawami rw, root <item>/export/liunx/machine2 tylko dla machine2 z prawami rw, root <item>/export/liunx/machine3 tylko dla machine3 z prawami rw, root </itemize> tak jak tutaj:<footnote>format tego przykładowego pliku odpowiada składni pliku eksportowego z SunOS-u 4.1.3</footnote> <code> # 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 </code> Nie zapomnij uruchomić exportfs -a. <sect1>Konfiguracja serwera tftp. <p> Teraz czas na konfigurację serwera tftp. Jeśli nie potrzebujesz bezpiecznego tftp, to wszystko jest raczej proste, twoje klienty mogą być startowane z katalogu <tt>/export</tt>. Jeśli używany jest bezpieczny tftp, to możesz albo zrobić pełną strukturę katalogów <tt>/export/linux</tt> pod <tt>tftpboot</tt> (z jednym rzeczywistym jądrem i symbolicznymi dołączeniami dla innych maszyn), albo niech katalog <tt>/export</tt> będzie katalogiem startowym dla bezpiecznego tftpd. Albo, jeśli masz odrębny katalog <tt/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: <code> mkdir -p /tftpboot/export/linux/machine1 cd /tftpboot/export/linux/machine1 cp /export/linux/machine1/<name of the kernel> . </code> <sect1>Praca końcowa. <p> Ostatecznie musisz wpisać: <code> /sbin/mount nfs_server:/export/linux/usr /usr </code> jako pierwszą linię pliku <code> /export/linux/<machinex>/etc/rc.d/rc.S </code> gdzie <machinex> to machine1, machine2, itd. <sect>Wymagania pamięciowe i dyskowe; prędkość. <p> Slackware 2.3; dla innych dystrybucji/wersji podane liczby mogą być różne. <itemize> <item>Miejsce na dysku: 28MB + 6,5MB/maszynę <item>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 <tt>/tmp</tt>.<newline> Nie zapomnij uruchomić <it>mkswap</it>. <item>Prędkość: Nie miałem problemów na 486 DX2/66 z 8MB RAM-u. </itemize> <sect>Możliwe błędy. <p> <itemize> <item>Znalazłem dziwny błąd: w podkatalogu <tt>/dev</tt> 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.) <item>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: <itemize> <item>skonfigurować każdy rc.S dla każdej maszyny, <item>użyć pakietu z klientem <it/bootp/ i napisać uogólniony skrypt ustawiający. </itemize> </itemize> <sect>Błędy i możliwy dalszy rozwój tego dokumentu. <p> <sect1>Od autora. <p> <itemize> <item>Poprawne cytowanie dokumentów związanych. <item>SunOS powstał na podstawie BSD. Trzeba dołączyć konfigurację bazowaną na SVR4 (np. Solaris) <item>Pomimo, iż Linux jest dość podobny do SunOS-a jako serwer bootp/tftp, to jednak przydałby się przykład wziętyz Linux-a. <item>Odnowienie tego dokumentu w związku z bieżącą wersja pakietu etherboot. <item>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. <item>Trzeba wypróbować inne karty niż wd8013. <item>Dołączyć informacje na temat konfiguracji <it/bootpc/, klienta bootp dla Linux-a, żeby ustawić poprawną tablicę rutingu. <item>Literówki i inne błędy: zgłaszaj je do <htmlurl url="mailto:buci@math.klte.hu" name="buci@math.klte.hu"> Dziękuję. </itemize> <sect1>Od tłumacza. <p> Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: <htmlurl url="mailto:B.Maruszewski@zsmeie.torun.pl" name="B.Maruszewski@zsmeie.torun.pl"> Oficjalną stroną tłumaczeń HOWTO jest <htmlurl url="http://www.jtz.org.pl/" name="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 <tt>ftp.ippt.gov.pl/pub/Linux/JTZ/</tt> Przetłumaczone przeze mnie dokumenty znajdują się także na <url url="http://www.zsmeie.torun.pl/~bart/tlumaczenie.html" name="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 <tt>subscribe jtz Imię Nazwisko</tt> na adres <tt>listproc@ippt.gov.pl</tt> Zmiany wprowadzone przeze mnie do tego dokumentu to polskie odnośniki do serwerów ftp i WWW. </article>