# 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.

- v0.0.3 12 Września 1996: Małe poprawki błędów.

## 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.

- NFS-root Mini Howto
- Linux NET-2/3-HOWTO napisane przez Terry Dawsona, 94004531@postoffice.csu.edu.au
- `/usr/src/linux/README` na temat konfiguracji i kompilacji nowego jądra.

## 4. Sprzęt.

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.

## 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 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.

## 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:

- 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 <PID inetd>

## 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

- 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

## 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:

- 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.

## 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:

- /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.

## 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.

- 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ć mkswap.
- Prędkość: Nie miałem problemów na 486 DX2/66 z 8MB RAM-u.

## 7. Możliwe błędy.

- 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 bootp i napisać uogólniony skrypt ustawiający.

## 8. Błędy i możliwy dalszy rozwój tego dokumentu.

## 8.1 Od autora.

- 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 bootpc, 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ę.

## 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.