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 <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/mini/NFS-Root>. 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 <j±dro> /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 _<ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/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/<_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 <adr_ip> <adr_sprzêtowy> ______________________________________________________________________ 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 <leutloff@sundancer.tng.oche.de>): · 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 <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/boot/> 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 <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/system/network/admin/> 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. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> 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