1997, Július 1. Verziószám: 4
E Mini-Hogyan szándéka, hogy elmagyarázza, miként hozzuk létre a kliens root könyvtárakat azon a szerveren, amelyet az NFS Root mountolt kliensek használnak. Ennek a Hogyan-nak az utolsó, legfrissebb (HTML vagy Text) verziója hozzáférhető a következő URL címen: http://www.hadar.co.il/ofer/nfs-root-client/
(c) 1996 Ofer Maor (ofer@hadar.co.il)
Hacsak a dolog másképp nem áll, a Linux HOGYAN dokumentumok szerzői joga mindíg a szerzőket illeti meg. Bár a Linux HOGYAN dokumentumok másolása, illetve terjesztése teljes egészében vagy részlegesen is történhet - bármilyen fizikai vagy elektronikus adatközvetítő eszközön -, ám ezen szerzői jogot tartalmazó megjegyzést is tartalmaznia kell valamennyi másolatnak. Kereskedelmi viszontterjesztése is engedélyezett, illetve támogatott; mindemellet a szerzőt valamennyi disztribúcióban fel kell tüntetni.
Valamennyi fordításnak, ezen dokumentum felhasználásával készült egyéb dokumentációnak, vagy kiegészítő anyagnak - értve itt bármilyen Linux HOGYAN dokumentumot - biztosítania kell ezen szerzői jog megjegyzést. Ez az, amit egy a HOGYAN-ból származtatott munkában nem írhatsz a magad nevére. Bizonyos körülmények esetén engedélyezett az e szabályok alóli kívétel: kérjük, hogy az ilyen ügyekben lépj kapcsolatba a Linux HOGYAN koordinátorával az alábbi címen.
Röviden, mi elő kívánjuk segíteni ezen információk terjesztését a lehetséges legtöbb csatornán keresztül. Ám mindezek mellet e dokumentumok szerzői jogát is meg kívánjuk tartani, és szeretnénk azt, hogy ez bármely viszontterjesztett HOGYAN-ban fel legyen tüntetve.
Ha kérdéseid merülnének fel, kérjük lépj kapcsolatba Ofer Maor-ral (ofer@hadar.co.il), e Mini-HOGYAN szerzőjével, vagy Greg Hankins-val, a Linux HOGYAN koordinátorával a greg@sunsite.unc.edu email címen, vagy a következő telefonszámon: +1 404 853 9989.
Ha bármilyen kiegészítésed lenne ezen Mini-HOGYAN-nal kapcsolatban, kérjük küldj emailt a szerzőnek (Ofer Maor, ofer@hadar.co.il) a kapcsolt információval . Bármilyen új és a tárgyhoz tartozó információt méltányolunk.
Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.
All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.
In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.
If you have questions, please contact Ofer Maor (ofer@hadar.co.il), the author of this mini-HOWTO, or Greg Hankins, the Linux HOWTO coordinator, at gregh@sunsite.unc.edu via email, or at +1 404 853 9989.
If you have anything to add to this Mini-Howto, Please mail the author (Ofer Maor, ofer@hadar.co.il), with the information. Any new relevant information would be appreciated.
Itt kívánom kifejezni hálámat az NFS-Root HOGYAN szerzőjének, Andreas Kostyrca-nak (andreas@medman.ag.or.at). Az Ő Mini-HOGYAN leírása segített az NFS Root Mountolt kliensek létrehozásának első lépései közben. A Mini-HOGYAN dokumentumom nem csak úgy a levegőben lóg, hanem megpróbáltam hozzáfűzni az ö munkájához, de úgy, hogy kihangsúlyozzam azt - felhasználva az e folyamat közben megszerzett tapasztalataimat.
Köszönetet kívánok még mondani Mark Kushinsky-nek (mark026@imb.net) angol tudásom csiszolásáért és e HOGYAN nyelvtani hibáinak javításáért, miáltal még érthetőbbé vált.
Ez a Mini-Hogyan azért íródott, hogy segítséget nyújtson azoknak, akik az NFS Root mountolást kívánják használni a kliens gépeik könyvtárainak létrehozására. Azt azonban jegyezzük meg, hogy ennek véghezviteléhez igen sok út létezik attól függően, hogy mit szeretnénk elérni és hogy mire van szükségünk egyáltalán. Amennyiben a kliensek mind különálló gépek, és valamennyinek megvannak a saját felhasználói, illetve van külön rendszergazdája, szükséges lehet, hogy néhány alavető kliens könyvtárat ne osszunk meg más kliensekkel. Másrészről, ha a kliens előreláthatólag sok felhasználót fog kiszolgálni és valamennyit egyazon személy fogja adminisztrálni (egy számítógéposztály esetén például), érdemes minél több fájlt egymás között megosztottá tenni, még könnyebbé téve ezzel az adminisztációt. Ezen HOGYAN a másodjára megemlített témára fog összpontosítani.
Amikor felépítjük egy kliens /root könyvtárat és megpróbáljuk korlátozni magunkat, hogy minimalizáljuk ezáltal a kliens méretét, főként azokra a fájlokra összpontosítunk, amelyeket meg tudunk osztani, vagy mountolhatunk a szervertől. Ebben a HOGYAN-ban a saját tapasztalataimon alapuló kliens konfigurációját fogom javasolni. De mielőtt elkezdeném, engedtessék meg néhány megjegyzés:
Mindenekelőtt létre kell hoznod magát a könyvtárstruktúrát. Én valamennyi kliensen a /kliens/számítógépnév alatt hozom létre a könyvtárfa struktúrát és az alábbiakban felsorolt példákban is ezt fogom alkalmazni. Ezt természetesen akármi másra is megváltoztathatod. Az első lépés után létrehozzuk a /root könyvtárban a lényeges könyvtárakat. A következő könyvtárakat kellene létrehozni:
bin, dev, etc, home, lib, mnt, proc, sbin, szerver, tmp, usr, var
és persze bármilyen egyéb könyvtárat, amelyet még a rendszered számára használni akarsz.
A helyi, /proc
és /dev
könyvtárakat valamennyi gép
külön-külön fogja használni, míg a teljes könyvtárstruktúrát részlegesen, vagy
teljesen megosztjuk valamennyi kliens között.
Habár a /dev
könyvtár megosztható, ám jobb megoldás, ha valamennyi
kliens részére létrehozunk egyet-egyet. A kliens /dev
könyvtára létrehozható
a megfelelő MAKEDEV script segítségével is, de a legtöbb esetben egyszerűbb csak
átmásolni a szervertől:
cp -a /dev /kliens/számítógépnév
Azt azért tartsd észben, hogy a /dev/mouse
, a /dev/cdrom
és a /dev/modem
mind csak egy-egy szimbolikus link a valódi meghajtókra,
és emiatt bizonyosodj meg arról, hogy ezek a linkek megfelelnek-e a kliens hardverén.
Bár mindent a szervertől mountolunk, van egy minimum, amit szükséges minden kliensre átmásolni. Először is kell az ,,init'', hiszen a rendszerünk semmit sem képes futtatni addig, amíg nem ,,inicializálták'' (ahogy erre a szerző is csak nehezen jött rá ;-). Tehát előszőr a /sbin/init -et kell átmásolni a kliens /sbin könyvtárába; és mivel ez majd az rc.S -t fogja lefuttani, a /bin/sh fájlt is át kell másolnunk a kliens /bin könyvtárába. A mountoláshoz pedig elengedhetetlen a /sbin/mount parancs, amit szintén másoljunk a kliens /sbin könyvtárába. Nos, ez a minimum; feltételezve, hogy az rc.S fájlod első sora amount -av. Ettől függetlenül javaslom még néhány olyan fájl másolását, mint például az uptade, ls, rm, cp és az umount, mert így rendelkezel majd egy alap segédeszköztárral arra az esetre, ha a kliensnek problémái adódnának a mountolással kapcsolatban. Amennyiben a swap területedet még a mountolás előtt használni szeretnéd, úgy a swapon binárist is át kell másolnod.
Mióta a legtöbb bináris alapértelmezésben dinamikusan linkelt, elég csak a
/lib
könyvtár egy megfelelő részét átmásolni:
cp -a /lib/ld* /lib/libc.* /lib/libcursses.* /kliens/számítógépnév/lib
A hardlinkek maguk is binárisok és másolásukat meg kell fontolni. Kérlek olvasd el ezzel kapcsolatosan a 2.1-es pontban tett megjegyzéseimet.
Kérlek, azt jegyezd meg, hogy valamennyi információ azt feltételezi, hogy a kernel megkapta a hálózati paramétereket a bootolás ideje alatt. Amennyiben tervezed a rarp vagy a bootp használatát, úgy valószínűleg a hozzájuk tartozó binárisokra is szükséged lesz.
Általában szükséges egy minimális fájlmennyiség ahhoz, hogy konfigurálni lehessen
a hálózatot és az rc.S futása eljusson addig a pontig, amikor mountolja a teljes
fájlrendszert. Kukkants bele a /etc/init és az rc.S fájlokba és bizonyosodj meg
arról, hogy nincs bennük egyéb ,,meglepetés'', amely számára esetleg még szükség
lehet további fájlok hozzáférésére, mielőtt még az első mountolás megtörténik. Ha tényleg ez a helyzet és találsz még néhány fájlt,
akkor vagy másold át azokat is, vagy töröld ki a megfeleő sorokat az init, illetve
az rc.S fájlodból.
A /var könyvtárat - a legtöbb esetben - szükséges elkülöníteni valamennyi kliens számára. Viszont egy csomó adatát meg tudjuk osztani. Hozz létre a szerver könyvtár alatt egy /var nevű könyvtárat. Ide fogjuk mountolni a szerver /var könyvtárát. A helyi /var könyvtár létrehozásához egyszerűen csak gépeld be azt, hogy:
cp -a /var /kliens/számítógépnév/
Most lehetőségünk van arra, hogy eldöntsük, mit akarunk különválasztani és mit akarunk megosztani. A megosztani kívánt könyvtárakat egyszerűen csak töröljük le a kliens /var könyvtárából és készítsük rá egy szimbolikus linket a /szerver/var könyvtárban. Azt azért jegyezd meg, hogy a szimbolikus linket vagy a /szerver/var, vagy a ../szerver/var könyvtárra készítsd és ne a /kliens/számítógépnév/szerver/var könyvtárra, mert egyébként a root megváltozása után már nem fog működni.
Általánosan javasolható, hogy a /var/run, /var/lock, /var/spool és a /var/log
könyvtárakat különítsük el.
Ez a rész főként az olyan /etc könyvtár felépítésére utal, amely megosztott
a kliensek között. Amennyiben a merevlemez nélküli klienseidnek önálló rendszeradminisztrátorai
vannak, úgy a legjobb, ha valamennyi kliens részére különálló /etc könyvtárt hozol
létre.
Habár elkülönítjük a kliensek /etc könyvtárait, az itt taláható fájlok jelentős részét meg szeretnénk megosztani. A szerver /etc könyvtárának fájljait általában nem jó ötlet megosztani. Ezért javaslom inkább, hogy hozzunk létre egy /kliens/etc könyvtárat, amely majd a kliens részére szükséges információkat fogja tárolni. Kezdetnek egyszerűen csak másoljuk át a szerver /etc könyvtárának tartalmát a /kliens/etc könyvtárba.
Valamennyi nem gépspecifikus konfigurációs fájl szükséges e könyvtár számára (ilyenek például a motd, issue, ..., stb) és még néhány nem kliensspecifikus fájl is kell (mint például az inittab vagy az fstab fájl).
A legfontosabb változások az rc.d könyvtáradban fognak történni. Először is a helyi beállításaid szerint meg kell változtatnod az rc.init1 fájlt. Én valamennyi hálózati paraméteremet a LILO/Loadlin-en keresztül adom meg a kernel részére, ezért majdnem mindent kitörlök az rc.inet1 fájlból. Az egyetlen dolog, amit itt meghagyok, helyi gép (localhost) ifconfig és route parancsai. Amennyiben használsz rarp-ot vagy bootp-t, akkor ennek megfelelően építsd fel a fájl tartalmát.
Másodszor, át kell szerkesztened az rc.S fájlod tartalmát, kitörölve onnan minden olyan részt, amely az fsck ellenőrzésekkel kapcsolatos, hiszen az fsck elindul, mihelyt a szerver bootol. Ezután keresd meg azt a sort, amely mountolja az fstab-odat. Ez valahogy úgy néz ki, hogy:
mount -avt nonfs
A -t nonfs amiatt van, hogy a normál kliensek előszőr az rc.S-t futtatják és csak később - az rc.inet1 használata alatt - történik meg az Ethernet konfigurálása. Ez viszont azt fogja okozni, hogy amíg ezt a sort nem töröljük, addig nem lehet NFS partíciókat mountolni. Ezért változtassuk meg ezt a sort a következőképpen: mount -av . Ha szükséges a rarp/bootp -t futtatnod a hálózatod konfigurálására, akkor ezt a rc.S fájlból tedd meg (vagy hivd meg a megfelelő scriptet ebből a fájlból), de még a mountolás előtt, és bizonyosodj meg arról, hogy a /bin és az /sbin könyvtáraidban a szükséges fájlok a rendelkezésre állnak.
Miután a mount -av végbement, egy kis dolgod van még a fájlrendszerrel. Írj meg egy hétköznapi fstab fájlt, hogy át tudd másolni valamennyi kliensre. Az fstab fájlodnak valahogy így kell kinéznie:
szerver:/kliens/számítógépnév / nfs default 1 1 szerver:/bin /bin nfs default 1 1 szerver:/usr /usr nfs default 1 1 szerver:/sbin /sbin nfs default 1 1 szerver:/home /home nfs default 1 1 szerver:/lib /lib nfs default 1 1 szerver:/kliens/etc /szerver/etc nfs default 1 1 szerver:/kliens/var /szerver/var nfs default 1 1 none /proc proc default 1 1
Arra figyelj, hogy az ,,alapértelmezett'' (default) kulcsszó nem minden mount verzió esetében működik. Esetleg meg kell változtani rw vagy ro -ra, letörölve valamennyi default 1 1 részt.
A szervered /etc/exports fájlja hasonlítson az itt következőhöz:
/kliens/számítógépnév számítógépnév.domainnév(rw,no_root_squash) /kliens/etc számítógépnév.domainnév(ro,no_root_squash) /kliens/var számítógépnév.domainnév(ro,no_root_squash) /usr számítógépnév.domainnév(ro,no_root_squash) /sbin számítógépnév.domainnév(ro,no_root_squash) /bin számítógépnév.domainnév(ro,no_root_squash) /lib számítógépnév.domainnév(ro,no_root_squash) /home számítógépnév.domainnév(rw,no_root_squash)
Az első sort valamennyi számítógép részére el kell különíteni. A maradék sorokat helyettesítsük egy-egy számítógépmaszkkal, megnevezve ezáltal valamennyi számítógépünket (mint például pc*.domain - a * csak egy olyan sztringgel helyettesíthető, amely nem tartalmaz magában pontot). Javaslom, hogy a legtöbb könyvtárat tegyük csak olvashatóvá (read only), bár ez igazán csak rád tartozik. A no_root_squash opció a kliens root felhasználói részére a valódi root jogokat fogja biztosítani az nfsd démon fölött is. Nézz utána az exports(5) kézikönyv lapjának (man). Ha szeretnéd, hogy a felhasználóid tudják futtatni a kliensektől is a passwd parancsot, akkor ellenőrizd le, hogy a /etc -nek rw jogosultága legyen és ne ro. Mindemellett ez nem igazán ajánlatos.
Jegyezz meg még egy dolgot az rc.S fájl esetleges problémáival kapcsolatosan. A Slackware disztribúcióban alapértelmezésként ez a fájl hozza létre valamennyi lefutása alkalmával az új /etc/issue és a /etc/motd fájlokat. Ezt a funkciót TILTANI KELL, amennyiben ezeket a fájlokat ro opcióval mountolod a szervertől, és ha javasolhatom, akkor ezt inkább minden esetben tiltsd le.
Végül, ha azt szeretnéd, hogy ugyanaz a felhasználói bázis legyen szerveren
és a kliensen is, választhatod a (1) NIS (Yellow Pages - vizsgáld meg az yp-hogyan-t)
használatát. Ekkor valamennyi kliensnek különálló /etc/passwd és /etc/group fájlja
lesz, amelyet a NIS szervertől kap. Illetve megvalósíthatod a gyakoribb megoldást
(2) is, amikor mindössze elég egy egyszerű szimbolikus link is. Ezesetben szükséges
vagy egy hardlink a /kliens/etc/passwd -ről a /etc/passwd -re, vagy ha jobban
kedveled a szimbolikus linket, akkor készíts egyet a /etc/passwd -ről a /kliens/etc/passwd
-re (nincs további lehetőség, mivel a kliens nem mountolja a szerver /etc könyvtárát).
A /etc/group fájl esetében is járd végig az iménti lépéseket.
Általában a kliens /etc könyvtárának fájljai csak egy-egy szimbolikus link a /szerver/etc könyvtár fájljairól. Ám néhány fájl eltérhet gépenként, és lehet néhány olyan is, amelynek csak akkor kell ott lennie, amikor a kernel betölti. Minimálisan a következő fájlokra van szükség az /etc könyvtártól:
resolv.conf hosts inittab rc.d/rc.S fstab
Ha ez az öt fájl megegyezik az összes kliensen, elég, ha hardliket készítesz rájuk, vagy egyszerűen csak újra lemásolod őket, bár az rc.S és az fstab fájlok esetében tanácsos inkább különálló másolatokat fenntartani valamennyi kliensen. Szükséges lehet még egy-egy különálló etc/HOSTNAME fájl minden kliens részére. Én - személy szerint - javaslom, hogy valamennyi kliens számára külön rc.d fájlok legyenek elérhetők, mert a beállítandó harver eszközök gépenként eltérők lehetnek.
Valamennyi kliens számára adjuk hozzá a megfelelő swap sort az fstab fájljához:
/dev/swap_partíció swap swap default 1 1
A kliens további /etc fájljait hardlinkelheted a /kliens/etc/* fájlokra, vagy készíthetsz rájuk szimbolikus linket is a /szerver/etc könyvtárról (amely a /kliens/etc/ mountolási pontja).
Bizonyosodj meg arról, hogy a számítógéped azonosítása visszafejthető (resolve) vagy a named démonon, vagy az /etc/hosts fájlon keresztül. A szerver IP címét az /etc/hosts fájlban érdemes tartani, a visszafejtési IP címek helyett (counting on resolving). Ha csak a named visszafejtésére számolsz, a klienseid bootolása meghíúsulhat egy - a namedben fellépő - esetleges hiba miatt.
Most már csak bootolnod kell a gépedet. Kulcsold imára a kezed és reménykedj, hogy minden úgy fog majd működni, ahogyan kellene :-).
Amennyiben végigkövetted az utasításaimat, ez már igazán egyszerűen fog menni - lépj be a cd paranccsal a /kliens/ könyvtárba és gépeld be:
cp -a hostname1 hostname2
majd ellenőrizd le a következő pontokat:
az rc.d/* fájlok feleljenek meg a hardvernek és a kívánt szoftvernek, az /etc/HOSTNAME beállítása megfelelő legyen, az fstab swap sora hibátlan legyen és a /dev/mouse, /dev/modem, /dev/cdrom szimbolikus linket is helyesek legyenek.
Sok szerencsét...