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 . 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 /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 _ Jak już zdecydowałeś, gdzie umieścisz główny system plików, stwórz go np. poleceniem ______________________________________________________________________ mkdir -p tar cClf / - | tar xpCf - ______________________________________________________________________ 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 ______________________________________________________________________ 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 ): ˇ 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 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 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. 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