Stacja robocza z głównym systemem plików z sieci.<newline> <author>Autor: Ofer Maor, <htmlurl url="mailto:ofer@hadar.co.il" name="ofer@hadar.co.il"><newline> v3, 5 Grudnia 1996<newline> <bf>Wersja polska: Bartosz Maruszewski <htmlurl url="mailto:B.Maruszewski@zsmeie.torun.pl" name="B.Maruszewski@zsmeie.torun.pl"><newline> </bf> v1.02, 26 Lipca 1997 <abstract> 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 <url url="http://www.hadar.co.il/ofer/nfs-root-client/" name="www.hadar.co.il">. Dokument ten został napisany w standardzie ISO-8859-2. Odnośnie nowszych wersji tłumaczenia zobacz sekcję <ref id="tlum" name="Od tłumacza">. </abstract> <toc> <sect>Prawa autorskie. <p> Prawa autorskie należą do Ofera Maora <<htmlurl url="mailto:ofer@hadar.co.il" name="ofer@hadar.co.il">>. 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 <htmlurl url="mailto:ofer@hadar.co.il" name="Oferem Maorem"> pod adresem <<em/ofer@hadar.co.il/> - autorem tego dokumentu, albo <htmlurl url="mailto:gregh@sunsite.unc.edu" name="Gregiem Hankinsem"> - koordynatorem projektu Linux HOWTO pod adresem <<em/gregh@sunsite.unc.edu/>. Jeśli masz coś do dodania, skontaktuj się proszę z autorem (<htmlurl url="mailto:ofer@hadar.co.il" name="Ofer Maor"> <ofer@hadar.co.il>). Szczególnie mile widziane są informacje o pojawieniu się nowszych narzędzi. <sect1>Podziękowania. <p> 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ść. <sect>Przedmowa. <p> 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. <sect1>Przegląd ogólny.<label id="gen"> <p> 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: <itemize> <item>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 <url url="http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/html/NFS-Root.pl.html" name="NFS-Root mini-howto">. <item>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ś. <item>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. <item>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. </itemize> <sect>Tworzenie głównego katalogu klienta. <p> <sect1>Tworzenie drzewa katalogów. <p> Przede wszystkim musisz stworzyć strukturę katalogów. Ja stworzyłem wszystkie katalogi w <tt>/clients/hostname</tt> 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: <verb> bin, dev, etc, home, lib, mnt, proc, sbin, server, tmp, usr, var </verb> i wszelkie inne katalogi jakie chcesz mieć na stacji. Katalogi <it/local, proc i dev/ będą użyte oddzielnie dla każdej stacji, a reszta będzie współdzielona. <sect1>Tworzenie minimalnego systemu plików potrzebnego do startu. <p> <sect2>Tworzenie katalogu dev. <p> Właściwie katalog <it/dev/ 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: <code> cp -a /dev /clients/hostname </code> Musisz pamiętać, że <tt>/dev/mouse, /dev/cdrom i /dev/modem</tt> 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. <sect2>Kopiowanie potrzebnych binariów. <p> Pomimo, iż montujemy wszystko z serwera jest pewna minimalna ilość plików, które musimy skopiować do każdego klienta. Przede wszystkim potrzebujemy <it/init-a/, nasz system nie będzie w stanie uruchomić czegokolwiek przed uruchomieniem <it/init-a/ (czego autor doświadczył na własnej skórze ;) ). Tak więc najpierw skopiuj <tt>/sbin/init</tt> do katalogu <it/sbin/ klienta, potem skopiuj <tt>/bin/sh</tt> do katalogu <it/bin/ klienta, żeby skrypt rc.S mógł się wykonać. Żeby wszystko zamontować potrzebujesz także programu <it/mount/ - skopiuj go do katalogu <it/sbin/ klienta. To jest zupełne minimum zakładając, że pierwszą linijką w <it/rc.S/ jest <verb> mount -av </verb> Zalecam jednak skopiowanie jeszcze kilku plików: <it/update, ls, rm, cp oraz umount/, 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 <it/swapon/. Ponieważ większość z tych programów jest dynamicznie łączona z bibliotekami, będziesz też potrzebował sporej części katalogu <tt>/lib</tt>: <code> cp -a /lib/ld.* /lib/libc.* /lib/libcursses.* /client/hostname/lib </code> Rozważ też możliowość stałego dowiązania zamiast kopiowania. Przeczytaj mój komentarz na ten temat w sekcji <ref id="gen" name="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 <it/rc.S/ do momentu zamontowania wszystkich katalogów z serwera. <sect2>Katalog var. <p> W większości przypadków katalog <it/var/ powinien być osobny dla każdego klienta. Chociaż wiele danych może być współdzielonych. Stwórz w katalogu głównym stacji katalog <it/var/. Zamontujemy tam katalog <it/var/ z serwera. Aby stworzyć katalog <it/var/ napisz: <code> cp -a /var /clients/hostname/ </code> 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 <tt>/serwer/var</tt>. Zauważ, że musisz dołączyć go albo do katalogu <tt>/serwer/var</tt> albo do <tt>../serwer/var</tt>, ale <bf/NIE/ do <tt>/clients/hostname/serwer/var</tt> ponieważ nie będzie to działało kiedy zmieni się katalog główny. Ogólnie polecałbym oddzielić katalogi <tt>/var/run, /var/lock, /var/spool, oraz /var/log</tt>. <sect2>Reszta katalogów. <p> <itemize> <item><it/etc/ jest wyjaśniony dokładnie w następnej sekcji <item><it/mnt i proc/ są przeznaczone do celów lokalnych <item><it/usr i home/ są tylko katalogami do zamontowania <item><it/tmp/ zależy od ciebie. Możesz stworzyć różne katalogi <it/tmp/ dla klientów, albo stworzyć kilka katalogów <tt>/clients/tmp</tt> i zamontować je dla każdego klienta pod <tt>/tmp</tt>. Ja zalecałbym osobne katalogi <it/tmp/ dla każdego klienta. </itemize> <sect1>Tworzenie katalogu etc oraz konfiguracja klienta. <p> Zapamiętaj - sekcja ta odnosi się do tworzenia katalogu <it/etc/, 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 <it/etc/ dla każdego klienta. <sect2>Tworzenie katalogu dla wszystkich klientów. <p> Pomimo, iż oddzielamy katalogi <it/etc/, to i tak większą część stamtąd chcemy współdzielić. Ogólnie sądzę, że współdzielenie katalogu <it/etc/ z serwerem nie jest dobrym pomysłem, dlatego zalecam stworzenie katalogu <tt>/clients/etc</tt>, w którym będą przechowywane informacje dla klientów. Na początek po prostu skopiuj katalog <it/etc/ serwera do katalogu dla klientów. Powinieneś dodać do tego katalogu wszystkie pliki konfiguracyjne nie związane z konkretnym komputerem, np.: <it/motd, issue/ itp., ale nie specyficzne dla komputera (<it/fstab czy inittab/). Najważniejsze zmiany będą w katalogu <it/rc.d/. Najpierw powinieneś zmienić <it/rc.inet1/, 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 <it/ifconfig i route/ 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 <it/rc.S/. Najpierw wyrzuć stamtąd wszystko co dotyczy sprawdzania dysku (polecenia <it/fsck/) ponieważ będzie to robione przy starcie serwera. Potem powinieneś znaleźć linię, która montuje twoje katalogi; powinna wyglądać mniej więcej tak: <verb> mount -avt nonfs </verb> Parametr <it/-t nonfs/ jest dlatego, że normalne stacje robocze najpierw wykonują skrypt <it/rc.S/ a potem <it/rc.inet1/, aby skonfigurować Ethernet. Ponieważ to spowodowałoby, że żaden system NFS nie zamontowałby sie linia ta powinna zostać usunięta. Zmień ją na: <verb> mount -av </verb> Jeśli musisz uruchomić RARP/BOOTP, aby skonfigurować swoją sieć, zrób to w <it/rc.S/ (albo wywołaj odpowiedni skrypt z <it/rc.S/) przed montowaniem i upewnij się, ze twoje fizyczne katalogu <it/bin i sbin/ zawierają potrzebne programy. Po poleceniu <it/mount -av/ będziesz miał działający system plików. Stwórz ogólny plik <it/fstab/, tak żebyś mógł go skopiować dla każdego klienta. Powinien on wyglądać mniej więcej tak: <verb> 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 </verb> Upewnij się także, że plik <tt>/etc/exports</tt> na serwerze wygląda tak: <verb> /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) </verb> 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 <it/no_root_squash/ spowoduje, że użytkownicy "root" na kliencie będą także mieli przywileje "root-a" na serwerze. Sprawdź <it/man exports/. Jeśli chcesz, żeby użytkownicy na klientach mogli uruchamiać <it/passwd/ , to sprawdź czy katalog <it/etc/ jest zamontowany z prawem zapisu, chociaż osobiście tego nie polecam. Zauważ jeszcze jedno dotyczące skryptu <it/rc.S/. Domyślnie w Slackware pliki <tt>/etc/issue i /etc/motd</tt> są tworzone od nowa po każdym resetwoaniu serwera. Jeśli pliki te są montowane bez zapisu, to funkcja ta <bf/MUSI/ 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: <enum> <item>używaniem NIS-a (Yellow Pages, sprawdź <url url="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/NIS-HOWTO" name="NIS-HOWTO">, a potem każdy klient będzie miał osobne pliki <tt>/etc/passwd i /etc/group</tt> jak je otrzyma od serwera. <item>w większośći wypadków, proste symboliczne dołączenie wystarczy. Dlatego będziesz musiał, albo dołączyć na stałe <tt>/clients/etc/passwd</tt> do <tt>/etc/passwd</tt>, albo jeśli wolisz dołączenia symboliczne to dołączyć <tt>/etc/passwd</tt> do <tt>/clients/etc/passwd</tt> (nie w drugą stronę, ponieważ klienci nie montują katalogu <it/etc/ serwera). To samo dla <tt>/etc/group</tt>. </enum> <sect2>Tworzenie katalogu etc dla klienta. <p> Ogólnie, większość plików w katalogu <it/etc/ klienta powinna być dołączona symbolicznie do plików z katalogu <it/etc/ 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 <it/etc/: <verb> resolv.conf hosts inittab rc.d/rc.S fstab </verb> 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 <it/rc.S/ i <it/fstab/ były osobne dla każdego klienta. Będziesz także potrzebował osobnego pliku <it/HOSTNAME/ dla każdego klienta. Osobiście uważam, że cały podkatalog <it/rc.d/ powinien być osobny dla każdego klienta ponieważ konfiguracja i sprzęt mogą się różnić. Dla każdego klienta dodaj do <it/fstab/ odpowiednią linię dla swapa: <verb> /dev/swap_prttn swap swap default 1 1 </verb> Reszta plików z <it/etc/ klienta może być albo dołączona na stałe do plików <tt>/clients/etc/*</tt> albo podłączona symbolicznie do <tt>/serwer/etc</tt> (który jest punktem do montowaina dla <tt>/clients/etc</tt>). Upewnij się, że twój klient umie poprawnie rozwiązywać nazwy kanoniczne poprzez <it/named/ albo <tt>etc/hosts</tt>. Nie jest złym pomysłem trzymanie IP serwera w pliku <tt>etc/hosts</tt>, zamiast liczyć na rozwiązywanie nazw. Jeśli będziesz liczyć tylko na to, to problem z <it/named-em/ spowoduje, że twoi klienci nie będą mogli wystartować. <sect1>Startowanie. <p> Teraz wszystko, co musisz zrobić to zrestartować komputer, trzymać kciuki i mieć nadzieję, że wszystko pójdzie gładko. :) <sect>Tworzenie większej ilości klientów. <p> Jeśli przestrzegałeś moich instrukcji, to powinno to być proste: <verb> cd /clients/ cp -a hostname1 hostname2 </verb> a potem upewnij się, że sprawdziłeś to: <itemize> <item>pliki <tt>rc.d/*</tt> odpowiadają sprzętowi i konfiguracji oprogramowania <item>linia dotycząca swap-a w <it/fstab/ jest poprawna <item>symboliczne dowiązania <it>dev/mouse, dev/modem oraz dev/cdrom</it> są poprawne. </itemize> <p> <bf>Powodzenia ...</bf> <p> <sect1>Od tłumacza.<label id="tlum"> <p> 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: <htmlurl url="mailto:B.Maruszewski@zsmeie.torun.pl" name="B.Maruszewski@zsmeie.torun.pl"> Oficjalną stroną tłumaczeń HOWTO jest <htmlurl url="http://www.jtz.org.pl/" name="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 <htmlurl url="ftp://ftp.ippt.gov.pl/pub/Linux/JTZ/" name="ftp.ippt.gov.pl"> w katalogu <tt>/pub/Linux/JTZ/</tt>. Przetłumaczone przeze mnie dokumenty znajdują się także na <url url="http://www.zsmeie.torun.pl/~bart/tlumaczenie.html" name="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 <tt>subscribe jtz Imię Nazwisko</tt> na adres <tt>listproc@ippt.gov.pl</tt> </article>