Następna strona Poprzednia strona Spis treści

3. Tworzenie głównego katalogu klienta.

3.1 Tworzenie drzewa katalogów.

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 local, proc i dev będą użyte oddzielnie dla każdej stacji, a reszta będzie współdzielona.

3.2 Tworzenie minimalnego systemu plików potrzebnego do startu.

Tworzenie katalogu dev.

Właściwie katalog 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:


     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.

Kopiowanie potrzebnych binariów.

Pomimo, iż montujemy wszystko z serwera jest pewna minimalna ilość plików, które musimy skopiować do każdego klienta. Przede wszystkim potrzebujemy init-a, nasz system nie będzie w stanie uruchomić czegokolwiek przed uruchomieniem init-a (czego autor doświadczył na własnej skórze ;) ). Tak więc najpierw skopiuj /sbin/init do katalogu sbin klienta, potem skopiuj /bin/sh do katalogu bin klienta, żeby skrypt rc.S mógł się wykonać. Żeby wszystko zamontować potrzebujesz także programu mount - skopiuj go do katalogu sbin klienta. To jest zupełne minimum zakładając, że pierwszą linijką w rc.S jest

      mount -av

Zalecam jednak skopiowanie jeszcze kilku plików: 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 swapon.

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 rc.S do momentu zamontowania wszystkich katalogów z serwera.

Katalog var.

W większości przypadków katalog var powinien być osobny dla każdego klienta. Chociaż wiele danych może być współdzielonych. Stwórz w katalogu głównym stacji katalog var. Zamontujemy tam katalog var z serwera. Aby stworzyć katalog var 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 NIE 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.

Reszta katalogów.

3.3 Tworzenie katalogu etc oraz konfiguracja klienta.

Zapamiętaj - sekcja ta odnosi się do tworzenia katalogu 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 etc dla każdego klienta.

Tworzenie katalogu dla wszystkich klientów.

Pomimo, iż oddzielamy katalogi etc, to i tak większą część stamtąd chcemy współdzielić. Ogólnie sądzę, że współdzielenie katalogu etc 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 etc serwera do katalogu dla klientów.

Powinieneś dodać do tego katalogu wszystkie pliki konfiguracyjne nie związane z konkretnym komputerem, np.: motd, issue itp., ale nie specyficzne dla komputera (fstab czy inittab).

Najważniejsze zmiany będą w katalogu rc.d. Najpierw powinieneś zmienić 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 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 rc.S. Najpierw wyrzuć stamtąd wszystko co dotyczy sprawdzania dysku (polecenia 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:

      mount -avt nonfs

Parametr -t nonfs jest dlatego, że normalne stacje robocze najpierw wykonują skrypt rc.S a potem 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:

     mount -av

Jeśli musisz uruchomić RARP/BOOTP, aby skonfigurować swoją sieć, zrób to w rc.S (albo wywołaj odpowiedni skrypt z rc.S) przed montowaniem i upewnij się, ze twoje fizyczne katalogu bin i sbin zawierają potrzebne programy.

Po poleceniu mount -av będziesz miał działający system plików. Stwórz ogólny plik fstab, 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 no_root_squash spowoduje, że użytkownicy "root" na kliencie będą także mieli przywileje "root-a" na serwerze. Sprawdź man exports. Jeśli chcesz, żeby użytkownicy na klientach mogli uruchamiać passwd , to sprawdź czy katalog etc jest zamontowany z prawem zapisu, chociaż osobiście tego nie polecam.

Zauważ jeszcze jedno dotyczące skryptu rc.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 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:

  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 etc serwera). To samo dla /etc/group.

Tworzenie katalogu etc dla klienta.

Ogólnie, większość plików w katalogu etc klienta powinna być dołączona symbolicznie do plików z katalogu 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 etc:

    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 rc.S i fstab były osobne dla każdego klienta. Będziesz także potrzebował osobnego pliku HOSTNAME dla każdego klienta. Osobiście uważam, że cały podkatalog rc.d powinien być osobny dla każdego klienta ponieważ konfiguracja i sprzęt mogą się różnić.

Dla każdego klienta dodaj do fstab odpowiednią linię dla swapa:

    /dev/swap_prttn                     swap    swap    default  1 1

Reszta plików z etc 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 named 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 named-em spowoduje, że twoi klienci nie będą mogli wystartować.

3.4 Startowanie.

Teraz wszystko, co musisz zrobić to zrestartować komputer, trzymać kciuki i mieć nadzieję, że wszystko pójdzie gładko. :)


Następna strona Poprzednia strona Spis treści