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

- 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ć)

## 2. Przegląd ogólny.

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 NFSROOT w jądrze Linux-a (dotyczy 1.3.7x) pozwala na następujące rozwiązania:

- Adres IP może być odnaleziony poprzez RARP, albo możemy przekazać do jądra pełną konfigurację poprzez parametry LILO albo LOADLIN-a. Jeśli tego nie zrobimy, to jądro przyjmuje, że serwer RARP jest także serwerem NFS i używa wkompilowanej, domyślnej ścieżki. W tej chwili jest to `/tftpboot/<adres-IP-maszyny>/`.
- Konfiguracja klienta jest pobierana poprzez BOOTP.

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:

- system plików NFS. (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ę RARP lub BOOTP dla "NFS-Root". (Rozumiem przez to pytania zadawane po 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

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

- Jedną ważną rzeczą jest ustawienie eth0. 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.
- UWAGA: 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)

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

- 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 ping do stacji roboczej z serwera. Spójrz do cache'u ARP-a poleceniem:

         /sbin/arp -a

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

- Nie możesz używać "normalnych" bootrom-ów.
- W pakiecie netboot zrobionym przez Gero Kuhlmanna znajdziesz informacje na temat bootrom-ów dla Linux-a i wiele innych. Pakiet ten jest dostępny na SUNSite Polska pod nazwą netboot-*.
- 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.
- Wszelkie informacje na temat sprzedawców bootrom-ów dla Linux-a są mile widziane. Ponieważ nie wszyscy mają dostęp do programatorów PROM-ów (szczególnie w Europie, gdzie ja mieszkam).

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

- Jeśli używasz LILO rozważ użycie cechy lock: po prostu wpisz raz wszystkie parametry i lock. 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 append= w pliku `lilo.conf`.

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

- Pod adresem ftp.icm.edu.pl 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.

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