Stacja robocza z głównym systemem plików z sieci. Autor: Ofer Maor, ofer@hadar.co.il v3, 5 Grudnia 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.02, 26 Lipca 1997 Celem tego dokumentu jest wyjaśnienie jak stworzyć główne katalogi na serwerze, który obsługuje klientów z montowanym głównym systemem plików. Najnowszą wersję oryginału możesz znaleźć pod adresem www.hadar.co.il . Doku­ ment ten został napisany w standardzie ISO-8859-2. Odnośnie nowszych wersji tłumaczenia zobacz sekcję ``Od tłumacza''. ______________________________________________________________________ Spis treści 1. Prawa autorskie. 1.1 Podziękowania. 2. Przedmowa. 2.1 Przegląd ogólny. 3. Tworzenie głównego katalogu klienta. 3.1 Tworzenie drzewa katalogów. 3.2 Tworzenie minimalnego systemu plików potrzebnego do startu. 3.2.1 Tworzenie katalogu dev. 3.2.2 Kopiowanie potrzebnych binariów. 3.2.3 Katalog var. 3.2.4 Reszta katalogów. 3.3 Tworzenie katalogu etc oraz konfiguracja klienta. 3.3.1 Tworzenie katalogu dla wszystkich klientów. 3.3.2 Tworzenie katalogu etc dla klienta. 3.4 Startowanie. 4. Tworzenie większej ilości klientów. 4.1 Od tłumacza. ______________________________________________________________________ 11.. PPrraawwaa aauuttoorrsskkiiee.. Prawa autorskie należą do Ofera Maora . 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 Oferem Maorem pod adresem <_o_f_e_r_@_h_a_d_a_r_._c_o_._i_l> - 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>. Jeśli masz coś do dodania, skontaktuj się proszę z autorem (Ofer Maor ). Szczególnie mile widziane są informacje o pojawieniu się nowszych narzędzi. 11..11.. PPooddzziięękkoowwaanniiaa.. Chciałbym wyrazić podziękowania autorowi NFS-Root Howto, Andreasowi Kostyrce (htmlurl url="mailto:andreas@medman.ag.or.at" name="andreas@medman.ag.or.at"). Jego dokument pomógł mi w pierwszych krokach przy tworzeniu stacji bezdyskowych. Moje mini-howto nie próbuje w żaden sposób zamienić jego pracy, ale rozszerzyć ją posługując się moimi doświadczeniami. Chciałbym także podziękować Markowi Kushinsky (htmlurl url="mailto:mark026@ibm.net" name="mark026@ibm.net") za "wypolerowanie" stylu i sprawdzenie poprawności językowej tego Howto, co znacznie poprawiło jego czytelność. 22.. PPrrzzeeddmmoowwaa.. Dokument ten został napisany, aby pomagać ludziom, którzy chcą używać montowania głównego systemu plików z sieci, żeby stworzyć katalogi klienta. Zauważ, że jest wiele sposobów na zrobienie tego, zależnie od twoich potrzeb i intencji. Jeśli klienci są indywidualni a każdy z nich ma własnych użytkowników i administratora konieczne będzie, aby znaczące katalogi klienta nie były współdzielone z innymi klientami. Z drugiej strony, jeśli klient jest przeznaczony dla wielu użytkowników i wszystkie są administrowane przez tę samą osobę (na przykład, klasa komputerowa), tyle plików ile się tylko da musi być wspołdzielone, aby uczynić zarządzanie prostszym. Dokument ten skupi się na tym drugim zagadnieniu. 22..11.. PPrrzzeegglląądd ooggóóllnnyy.. Podczas tworzenia katalogu głównego dla klienta oraz prób limitowania do minimum rozmiaru tego katalogu, głównie skupiamy się na tym, które pliki możemy współdzielić albo montować z serwera. W tym Howto będę zalecał konfigurację klienta na podstawie moich doświadczeń. Ale zanim zaczniemy zapamiętaj: ˇ Dokument ten nie wyjaśnia jak właściwie zamontować główny system plików. Jeśli chcesz więcej informacji, to odwołaj się do NFS-Root mini-howto . ˇ Większość mojej konfiguracji jest zrobiona poprzez montowanie i symboliczne dołączenia. Wiele z tym dołączeń może zostać zastąpiona dołączeniami stałymi. Wybierz w zależności od własnych upodobań. Robienie dołączenia stałego poprzez montowanie czy dołączenie symboliczne ma swoje zalety, ale może też powodować problemy. Plik nie zostanie skasowany dopóki wszystkie stałe dołączenia do niego nie zostaną zlikwidowane. Przez to, jeśli będziesz uaktualniał jakiś plik, dowiązania będą ciągle wskazywały na stary plik. Musisz więc sprawdzać za każdym razem wszystkie dołączenia, które zrobiłeś. ˇ Podczas montowania informacji z serwera można użyć dwóch sposobów. Pierwszy (bardziej popularny), to zamontować cały katalog główny serwera pod jakiś lokalny katalog a następnie zmienić ścieżkę albo dołączyć tam odpowiednie katalogi. Osobiście nie lubię montowania katalogu głównego serwera na stacji roboczej. Dlatego, poniższy dokument sugeruje montowanie odpowiednich podkatalogów z serwera na odpowiadające im katalogi na stacji. ˇ Dokument ten jest zrobiony na podstawie moich doświadczeń dotyczących robienia katalogów klienta na dystrybucji Slackware 3.1. Poszczególne pliki mogą się różnić (szczególnie rc.*), ale ogólna idea powinna pozostać ta sama. 33.. TTwwoorrzzeenniiee ggłłóówwnneeggoo kkaattaalloogguu kklliieennttaa.. 33..11.. TTwwoorrzzeenniiee ddrrzzeewwaa kkaattaallooggóóww.. Przede wszystkim musisz stworzyć strukturę katalogów. Ja stworzyłem wszystkie katalogi w /clients/hostname i będę używał tego katalogu do przykładów. Chociaż jeśli chcesz, to możesz sobie zmienić ten katalog na inny. Pierwszym krokiem jest zrobienie odpowiednich katalogów. Powinny to być następujące: bin, dev, etc, home, lib, mnt, proc, sbin, server, tmp, usr, var i wszelkie inne katalogi jakie chcesz mieć na stacji. Katalogi _l_o_c_a_l_, _p_r_o_c _i _d_e_v będą użyte oddzielnie dla każdej stacji, a reszta będzie współdzielona. 33..22.. TTwwoorrzzeenniiee mmiinniimmaallnneeggoo ssyysstteemmuu pplliikkóóww ppoottrrzzeebbnneeggoo ddoo ssttaarrttuu.. 33..22..11.. TTwwoorrzzeenniiee kkaattaalloogguu ddeevv.. Właściwie katalog _d_e_v może być współdzielony, ale lepiej jeśli nie jest. Zawartość tego katalogu możesz stworzyć odpowiednim skryptem, chcociaż prościej jest go po prostu skopiować z serwera: ______________________________________________________________________ cp -a /dev /clients/hostname ______________________________________________________________________ Musisz pamiętać, że /dev/mouse, /dev/cdrom i /dev/modem są symbolicznymi dowiązaniami to właściwych urządzeń, i dlatego powinieneś się upewnić, że wskazują one na poprawne urządzenia zgodnie ze sprzętem w stacji. 33..22..22.. KKooppiioowwaanniiee ppoottrrzzeebbnnyycchh bbiinnaarriióóww.. Pomimo, iż montujemy wszystko z serwera jest pewna minimalna ilość plików, które musimy skopiować do każdego klienta. Przede wszystkim potrzebujemy _i_n_i_t_-_a, nasz system nie będzie w stanie uruchomić czegokolwiek przed uruchomieniem _i_n_i_t_-_a (czego autor doświadczył na własnej skórze ;) ). Tak więc najpierw skopiuj /sbin/init do katalogu _s_b_i_n klienta, potem skopiuj /bin/sh do katalogu _b_i_n klienta, żeby skrypt rc.S mógł się wykonać. Żeby wszystko zamontować potrzebujesz także programu _m_o_u_n_t - skopiuj go do katalogu _s_b_i_n klienta. To jest zupełne minimum zakładając, że pierwszą linijką w _r_c_._S jest mount -av Zalecam jednak skopiowanie jeszcze kilku plików: _u_p_d_a_t_e_, _l_s_, _r_m_, _c_p _o_r_a_z _u_m_o_u_n_t, tak żebyś miał podstawowe narzędzia w razie gdyby klientowi nie powiodło się montowanie. Jeśli zostawisz linię właczającą swap przed linią montującą katalogi, to musisz także skopiować program _s_w_a_p_o_n. Ponieważ większość z tych programów jest dynamicznie łączona z bibliotekami, będziesz też potrzebował sporej części katalogu /lib: ______________________________________________________________________ cp -a /lib/ld.* /lib/libc.* /lib/libcursses.* /client/hostname/lib ______________________________________________________________________ Rozważ też możliowość stałego dowiązania zamiast kopiowania. Przeczytaj mój komentarz na ten temat w sekcji ``Przegląd ogólny''. Zauważ, że powyższe informacje zakładają, że parametry sieciowe zostały przekazane do jądra podczas startu. Jeśli masz zamiar użyć RARP lub BOOTP, będziesz także potrzebował odpowiednich binariów. Ogólnie potrzebujesz minimum te programy, które pozwolą ci skonfigurować sieć i uruchomić skrypt _r_c_._S do momentu zamontowania wszystkich katalogów z serwera. 33..22..33.. KKaattaalloogg vvaarr.. W większości przypadków katalog _v_a_r powinien być osobny dla każdego klienta. Chociaż wiele danych może być współdzielonych. Stwórz w katalogu głównym stacji katalog _v_a_r. Zamontujemy tam katalog _v_a_r z serwera. Aby stworzyć katalog _v_a_r napisz: ______________________________________________________________________ cp -a /var /clients/hostname/ ______________________________________________________________________ Teraz możesz wybrać co chcesz współdzielić, a co chcesz mieć osobne dla każdego klienta. Każdy plik/katalog, który chcesz współdzielić usuń i stwórz symboliczne dołączenie do /serwer/var. Zauważ, że musisz dołączyć go albo do katalogu /serwer/var albo do ../serwer/var, ale NNIIEE do /clients/hostname/serwer/var ponieważ nie będzie to działało kiedy zmieni się katalog główny. Ogólnie polecałbym oddzielić katalogi /var/run, /var/lock, /var/spool, oraz /var/log. 33..22..44.. RReesszzttaa kkaattaallooggóóww.. ˇ _e_t_c jest wyjaśniony dokładnie w następnej sekcji ˇ _m_n_t _i _p_r_o_c są przeznaczone do celów lokalnych ˇ _u_s_r _i _h_o_m_e są tylko katalogami do zamontowania ˇ _t_m_p zależy od ciebie. Możesz stworzyć różne katalogi _t_m_p dla klientów, albo stworzyć kilka katalogów /clients/tmp i zamontować je dla każdego klienta pod /tmp. Ja zalecałbym osobne katalogi _t_m_p dla każdego klienta. 33..33.. TTwwoorrzzeenniiee kkaattaalloogguu eettcc oorraazz kkoonnffiigguurraaccjjaa kklliieennttaa.. Zapamiętaj - sekcja ta odnosi się do tworzenia katalogu _e_t_c, który w większości przypadków jest współdzielony między klientami. Jeśli twoi klienci mają osobnych administratorów, najlepiej zrobić osobne katalogi _e_t_c dla każdego klienta. 33..33..11.. TTwwoorrzzeenniiee kkaattaalloogguu ddllaa wwsszzyyssttkkiicchh kklliieennttóóww.. Pomimo, iż oddzielamy katalogi _e_t_c, to i tak większą część stamtąd chcemy współdzielić. Ogólnie sądzę, że współdzielenie katalogu _e_t_c z serwerem nie jest dobrym pomysłem, dlatego zalecam stworzenie katalogu /clients/etc, w którym będą przechowywane informacje dla klientów. Na początek po prostu skopiuj katalog _e_t_c serwera do katalogu dla klientów. Powinieneś dodać do tego katalogu wszystkie pliki konfiguracyjne nie związane z konkretnym komputerem, np.: _m_o_t_d_, _i_s_s_u_e itp., ale nie specyficzne dla komputera (_f_s_t_a_b _c_z_y _i_n_i_t_t_a_b). Najważniejsze zmiany będą w katalogu _r_c_._d. Najpierw powinieneś zmienić _r_c_._i_n_e_t_1, tak aby odzwierciedlał twoją lokalną sytuację. Ja przekazuję parametry sieciowe do jądra podczas startu, dlatego wyrzuciłem prawie wszystko z tego pliku. Jedynymi poleceniami jakie tam zostawiłem, to _i_f_c_o_n_f_i_g _i _r_o_u_t_e konfigurujące urządzenie loopback (localhost). Jeśli używasz RARP-a albo BOOTP, to będziesz musiał je stosowanie zrobić. Po drugie powinieneś wyedytować swój plik _r_c_._S. Najpierw wyrzuć stamtąd wszystko co dotyczy sprawdzania dysku (polecenia _f_s_c_k) ponieważ będzie to robione przy starcie serwera. Potem powinieneś znaleźć linię, która montuje twoje katalogi; powinna wyglądać mniej więcej tak: mount -avt nonfs Parametr _-_t _n_o_n_f_s jest dlatego, że normalne stacje robocze najpierw wykonują skrypt _r_c_._S a potem _r_c_._i_n_e_t_1, aby skonfigurować Ethernet. Ponieważ to spowodowałoby, że żaden system NFS nie zamontowałby sie linia ta powinna zostać usunięta. Zmień ją na: mount -av Jeśli musisz uruchomić RARP/BOOTP, aby skonfigurować swoją sieć, zrób to w _r_c_._S (albo wywołaj odpowiedni skrypt z _r_c_._S) przed montowaniem i upewnij się, ze twoje fizyczne katalogu _b_i_n _i _s_b_i_n zawierają potrzebne programy. Po poleceniu _m_o_u_n_t _-_a_v będziesz miał działający system plików. Stwórz ogólny plik _f_s_t_a_b, tak żebyś mógł go skopiować dla każdego klienta. Powinien on wyglądać mniej więcej tak: server/nfs default 1 1 server:/bin /bin nfs default 1 1 server:/usr /usr nfs default 1 1 server:/sbin /sbin nfs default 1 1 server:/home /home nfs default 1 1 server:/lib /lib nfs default 1 1 server:/clients/etc /server/etc nfs default 1 1 server:/clients/var /server/var nfs default 1 1 none /proc proc default 1 1 Upewnij się także, że plik /etc/exports na serwerze wygląda tak: /clients/hostname hostname.domainname(rw,no_root_squash) /clients/etc hostname.domainname(ro,no_root_squash) /clients/var hostname.domainname(ro,no_root_squash) /usr hostname.domainname(ro,no_root_squash) /sbin hostname.domainname(ro,no_root_squash) /bin hostname.domainname(ro,no_root_squash) /lib hostname.domainname(ro,no_root_squash) /home hostname.domainname(rw,no_root_squash) We wszystkich liniach oprócz pierwszej powinieneś wstawić jakąś maskę, do której pasują wszystkie komputery będące klientami (np. pc*.twoja.domena). Sugeruję, żeby większość katalogów była tylko-do- odczytu, ale to zależy od ciebie. Parametr _n_o___r_o_o_t___s_q_u_a_s_h spowoduje, że użytkownicy "root" na kliencie będą także mieli przywileje "root-a" na serwerze. Sprawdź _m_a_n _e_x_p_o_r_t_s. Jeśli chcesz, żeby użytkownicy na klientach mogli uruchamiać _p_a_s_s_w_d , to sprawdź czy katalog _e_t_c jest zamontowany z prawem zapisu, chociaż osobiście tego nie polecam. Zauważ jeszcze jedno dotyczące skryptu _r_c_._S. Domyślnie w Slackware pliki /etc/issue i /etc/motd są tworzone od nowa po każdym resetwoaniu serwera. Jeśli pliki te są montowane bez zapisu, to funkcja ta MMUUSSII zostać wyłączona a ja zalecałbym wyłączyć ją na zapas. I ostatnia sprawa. Jeśli chcesz mieć tę samą bazę użytkowników na kliencie i na serwerze, to musisz wybrać między: 1. używaniem NIS-a (Yellow Pages, sprawdź NIS-HOWTO , a potem każdy klient będzie miał osobne pliki /etc/passwd i /etc/group jak je otrzyma od serwera. 2. w większośći wypadków, proste symboliczne dołączenie wystarczy. Dlatego będziesz musiał, albo dołączyć na stałe /clients/etc/passwd do /etc/passwd, albo jeśli wolisz dołączenia symboliczne to dołączyć /etc/passwd do /clients/etc/passwd (nie w drugą stronę, ponieważ klienci nie montują katalogu _e_t_c serwera). To samo dla /etc/group. 33..33..22.. TTwwoorrzzeenniiee kkaattaalloogguu eettcc ddllaa kklliieennttaa.. Ogólnie, większość plików w katalogu _e_t_c klienta powinna być dołączona symbolicznie do plików z katalogu _e_t_c serwera. Ale niektóre z nich są różne dla każdej maszyny, a niektóre po prostu muszą się tam znajdować kiedy ładuje się jądro. Oto minimalna zawartość katalogu _e_t_c: resolv.conf hosts inittab rc.d/rc.S fstab Ponieważ te pięć plików może być identyczne dla każdego klienta, możesz je skopiować, albo dołączyć na stałe. Chociaż zaleca się żeby pliki _r_c_._S i _f_s_t_a_b były osobne dla każdego klienta. Będziesz także potrzebował osobnego pliku _H_O_S_T_N_A_M_E dla każdego klienta. Osobiście uważam, że cały podkatalog _r_c_._d powinien być osobny dla każdego klienta ponieważ konfiguracja i sprzęt mogą się różnić. Dla każdego klienta dodaj do _f_s_t_a_b odpowiednią linię dla swapa: /dev/swap_prttn swap swap default 1 1 Reszta plików z _e_t_c klienta może być albo dołączona na stałe do plików /clients/etc/* albo podłączona symbolicznie do /serwer/etc (który jest punktem do montowaina dla /clients/etc). Upewnij się, że twój klient umie poprawnie rozwiązywać nazwy kanoniczne poprzez _n_a_m_e_d albo etc/hosts. Nie jest złym pomysłem trzymanie IP serwera w pliku etc/hosts, zamiast liczyć na rozwiązywanie nazw. Jeśli będziesz liczyć tylko na to, to problem z _n_a_m_e_d_-_e_m spowoduje, że twoi klienci nie będą mogli wystartować. 33..44.. SSttaarrttoowwaanniiee.. Teraz wszystko, co musisz zrobić to zrestartować komputer, trzymać kciuki i mieć nadzieję, że wszystko pójdzie gładko. :) 44.. TTwwoorrzzeenniiee wwiięękksszzeejj iilloośśccii kklliieennttóóww.. Jeśli przestrzegałeś moich instrukcji, to powinno to być proste: cd /clients/ cp -a hostname1 hostname2 a potem upewnij się, że sprawdziłeś to: ˇ pliki rc.d/* odpowiadają sprzętowi i konfiguracji oprogramowania ˇ linia dotycząca swap-a w _f_s_t_a_b jest poprawna ˇ symboliczne dowiązania _d_e_v_/_m_o_u_s_e_, _d_e_v_/_m_o_d_e_m _o_r_a_z _d_e_v_/_c_d_r_o_m są poprawne. PPoowwooddzzeenniiaa ...... 44..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.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 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