A root fájlrendszer mountolása NFS-en keresztül (nfsroot)Írta: Gero Kuhlmann gero@gkminix.han.de 1996Amennyiben egy merevlemezt nem tartalmazó (diskless) rendszert kívánsz használni X-terminál gyanánt vagy nyomtató szerverként, a root fájlrendszeredet egy nem-lemez (non-disk) típusú eszközre kell helyezned. Ez lehet egy ramdiszk (lásd ugyanebben a könyvtárban az inird.txt fájl a további információkért), vagy egy NFS-en keresztül mountolt fájlrendszer. A következő szöveg leírja, hogy miként használjuk az NFS-t a root fájlrendszer számára. A szövegben a ,,kliens'' elnevezés jelöli a lemezegység nélküli rendszert, míg a ,,szerver'' jelenti az NFS szervert. 1.) Az nfsroot képesség engedélyezéseAz nfsroot használatához ki kell választanunk a kernel konfigurálása alatt az NFS támogatást. Jegyezzük meg, hogy ebben az esetben az NFS támogatás nem tölthető be modulként. A konfigurációs szkript ezután meg fogja kérdezni, hogy vajon akarjuk-e használni az nfsroot képességet, és ha igen, akkor miféle autokonfigurálási rendszert akarunk használni. Biztos ami biztos; válasszuk ki mind a BOOTP-t, mind pedig a RARP-ot. 2.) A kernel parancs sorAmint a kernelt betölti egy bootbetöltő (bootloader), ami lehet a loadlin, LILO vagy éppen egy hálózati boot program (netboot); meg kell mondanunk neki, hogy milyen root fs eszközt fog használni, merre találja a szervert, valamint mi annak a szerveren lévő könyvtárnak a neve, amelyet root-ként fog mountolni. Mindezek megadhatók néhány kernel parancs sori paraméterként:
nfsroot=[<
nfsaddrs=< Amennyiben hiányzik ez a paraméter a kernel parancssorából, valamennyi mező üresnek feltételezett, és az alább megemlített alapértelmezések kerülnek alkalmazásra. Általánosságban ez azt jeleni, hogy a kernel megpróbál mindent beállítani, felhasználva ehhez mind a RARP, mind a BOOTP protokollt. (Attól függően persze, hogy mit engedélyeztünk a kernel konfigurálása alatt, és ha mindkettőt engedélyeztük, akkor amelyik protokoll előszőr válaszol.)
Az < 3.) A kernel betöltőjeA kernel memóriába való bejuttatására többféle mód is használható. A megvalósítás a rendelkezésre álló adottságoktól függ:
3.1) A kernel írása floppy-ra, a dd parancs segítségével:Ahogy mindíg, most is felírhatjuk a kernelt egy floppy-ra, használva a dd parancsot, ekkor egyáltalán nem lehetséges a kernel parancssorok használata. A ,,root='' paraméter helyettesítésére hozz létre egy báb eszközfájlt (dummy device) bármely linux rendszeren, a 0 főértékkel és a 255 mellékértékkel, használva az mknod parancsot:mknod /dev/boot255 c 0 255 Ezután letörölheted a báb eszközfájlt (dummy device), hiszen nincs már számára elérhető, valódi eszközfájl. A másik két kernel parancssori paraméter nem helyettesíthető az rdev paranccsal. Emiatt használatos az az eljárás, hogy a kernel alapértelmezésban használja a RARP és/vagy a BOOTP protokollt, és ha a RARP protokollon keresztül kap egy választ, akkor a /tftpboot/<kliens-ip-cím>/ könyvtárat fogja mountolni root -ként. Amennyiben a kernel egy BOOTP választ kapott, a válaszban lévő könyvtár nevét használja.
3.2) A LILO használataAmikor LILO-t használsz, a LILO konfigurációs fájljában az ,,append='' paranccsal meg tudod adni valamennyi szükséges parancssori paramétert. Mindemellett a ,,root='' parancs használatához szükséges lehet beállítani egy báb eszközfájlt (dummy device), amelynek beállításáról az előbbi 3.1 -es részben olvashatsz bővebben. A LILO használatáról és az ,,append='' parancsról a LILO dokumentációjában találhatsz leírást.
3.3) A loadlin használataHa DOS parancspromptról akarsz Linux-ot bootolni és helyi merevlemez nélkül akarsz root fájlrendszert mountolni, akkor használatod a loadlin-t is. Azt modtam az imént, hogy működik, de valójában még soha sem próbáltam. Általában létrehozhatod a kernel parancssorokat itt is, hasonlóan, mint ahogy azt a LILO-nál meg tudod tenni. További információknak nézz utána a loadlin dokumentációjában.
3.4) Bootrom használataEz talán a lemez nélküli (diskless) kliensek bootolásának legelegánsabb módja. Bootrom használata esetén a kernel a TFTP protokollon keresztül töltődik be. Amennyire tudom, a nem kereskedelmi bootromok már támogatják a Linux bootolását nfs felett, de létezik két ingyenes bootrom a sunsite.unc.edu -n és ennek tükrein. Az egyik a ,,netboot-nfs'', míg a másik az ,,etherboot''. Mindkettő tartalmaz mindent, amire szükséged lehet a lemez nélküli (diskless) Linux kliensek bootolásához. 4.) JóváírásAz nfsroot kódot a kernelben én, Gero Kuhlmann <gero@gkminix.han.de> írtam, a BOOTP kódjával együtt és Martin Mares <mj@k332.feld.cvut.cz> működött közre jónéhány hiba kijavításában. Az nfsroot legelső verziójának megírásakor kapott segítségért szeretnék köszönetet mondani Jens-Uwe Mager-nek <jum@anubis.han.de>.
Magyar változat: Murzsa Norbert email: kuksi@igyuk.hu
|