Következő Előző Tartalom

4. Gyökér állományrendszer készítése.

A gyökér állományrendszer készítéséhez ki kell választani a rendszer futásához szükséges állományokat. Ebben a fejezetben megmutatjuk, hogy hogyan kell tömörített gyökér állományrendszert készíteni. Kevésbé gyakori lehetőség amikor tömörítetlen állományrendszert készítünk olyan lemezre, ami közvetlenül gyökérként lesz beillesztve a rendszerbe; ezt az alternatívát a Nem-memórialemez gyökér állományrendszer fejezetben mutatjuk be.

4.1 Áttekintés.

A gyökér állományrendszernek mindent tartalmaznia kell, amire a teljes Linux rendszernek szüksége van. Ahhoz, hogy ezt megtehessük, a lemeznek tartalmaznia kell a Linux rendszer minimális szükségleteit:

  • Az alap állományrendszer-struktúra,
  • Minimális alkönyvtár-struktúra: /dev, /proc, /bin, /etc, /lib, /usr, /tmp,
  • Alap eszközök: sh, ls, cp, mv, stb.,
  • Minimálisan szükséges konfigurációs állományok: rc, inittab, fstab, stb.,
  • Eszközök: /dev/hd*, /dev/tty*, /dev/fd0, stb.,
  • Eszközök által használt alap függvényeket nyújtó futásidejű eljáráskönyvtárak.

Természetesen bármely rendszer akkor hasznos, ha tudsz rajta futtatni is valamit. A gyökérlemez általában csak akkor válik használhatóvá, ha valami ilyesmit megtehetsz vele:

  • Másik meghajtón állományt ellenőrzöl, például azért, hogy leelenőrizd a merevlemezeden lévő gyökér állományrendszeredet, másik meghajtóról el kell, hogy tudd indítani a Linux rendszeredet, mint ahogy azt egy gyökér lemezről meg is teheted. Ezután lefuttathatod az fsck-t az eredeti gyökér meghajtódra, amíg nincs beillesztve.
  • Visszaállíthatod az eredeti gyökér meghajtódat biztonsági mentésből olyan archiváló és tömörítő eszközök használatával, mint a cpio, tar, gzip és az ftape.

Megmutatjuk, hogy hogyan készíthetsz tömörített állományrendszert. Így hívják, mert a lemezen tömörítve tárolódik, majd indításkor pedig kitömörítődik a memórialemezre.

Tömörített állományrendszerrel sok állományt rázsúfolhatsz (körülbelül hat megabájtot) egy hagyományos 1440K-s lemezre. Mivel az állományrendszer lényegesen nagyobb a lemeznél, nem is lehet lemezen elkészíteni. Máshol kell elkészíteni, tömöríteni, majd rápakolni a lemezre.

4.2 Az állományrendszer elkészítése.

Ahhoz, hogy ilyen gyökér állományrendszert készíthess, olyan tároló eszközre lesz szükséged, ami elég nagy, hogy a tömörítés előtt elférjenek rajta az állományok. Egy körülbelül négy megabájt szabad hellyel rendelkező eszközre lesz szükséged. Több lehetőség áll rendelkezésedre:

  • Használhatsz memórialemezt (ESZKÖZ = /dev/ram0). Ebben az esetben a memóriát használjuk a lemez szimulálására. A memórialemeznek elég nagynak kell lennie, hogy a megfelelő méretű állományrendszer elférjen rajta. Ha LILO-t használsz, nézd meg a konfigurációs állományát (/etc/lilo.conf), hogy szerepel-e benne a
            RAMDISK_SIZE = nnn
    
    sor, ami megadja, hogy mekkora RAM legyen maximálitan memórialemez számára lefoglalható. Az alapértelmezett érték 4096K, aminek elegendőnek kell lennie. Nem célszerű 8MB-nál kevesebb memóriával rendelkező gép esetén memórialemezt használni. Nézd meg, hogy vannak-e olyan eszközeid, mint a /dev/ram0, /dev/ram, vagy a /dev/ramdisk. Ha nincsenek, készítsd el a /dev/ram0-t az mknod (major 1, minor 0) paranccsal.
  • Jó megoldás, ha van egy elég nagy (néhány megabájt) használaton kívüli merevlemez-partíciód.
  • Használj loopback eszközt, amivel lemez állományt eszközként kezelhetsz. Loopback eszközzel elkészíthetsz egy 3 megabájtos állományt a merevlemezeden, és felépítheted benne az állományrendszert. A loopback eszközök használatának bővebb ismertetéséhez használd a man losetup parancsot. Ha nincs losetup-od, az ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/ címről letöltheted a mount és unmount programokkal kompatibilis util-linux csomagot, amiben megtalálod.

    Ha nincs a rendszereden (/dev/loop0, /dev/loop1, stb.) loop eszköz, készítened kell egyet az ``mknod /dev/loop0 b 7 0'' paranccsal. Miután feltelepítetted ezeket a különleges mount és umount binárisokat, készíts egy elegendő kapacitással rendelkező ideiglenes állományt a merevlemezeden (pl. /tmp/fsfile). Használhatod a

            dd if=/dev/zero of=/tmp/fsfile bs=1k count=<it/nnn/
    

    parancsot a nnn-blokk méretű állomány készítéséhez.

    Ezt az állománynevet használd lejjebb az ESZKÖZ helyett. Ha a mount utasítást használod, a ``-o loop'' kapcsolót is használnod kell, hogy megmond a mount-nak, hogy loopback eszközt használjon. Például a

            mount -o loop -t ext2 /tmp/fsfile /mnt
    

    parancs beilleszti a /tmp/fsfile-t (loopback eszközön keresztül) az /mnt illesztési pontba. Egy df parancs ezt meg is erősíti.

Miután kiválasztottad valamely opciót, készítsd el az ESZKÖZt a

        dd if=/dev/zero of=DEVICE bs=1k count=3000

utasítással. Ez a parancs lenullázza az eszközt. Ez a lépés azért fontos, mert később tömöríteni fogjuk az állományrendszert, így minden használaton kívüli területet nullával kell feltölteni, hogy maximális tömörítést érhessünk el.

Következik az állomáynrendszer elkészítése. A Linux kernel kétféle gyökér lemeztípust ismer, amit automatikusan memórialemezre másol. Az egyik a minix, a másik az ext2, ami a preferált állományrendszer. Ha ext2-t használsz, hasznosnak találhatod a -i kapcsolót, hogy az alapértelmezettnél több inode-t adhass meg; a -i 2000 ajánlott legalább, hogy ne fogyhass ki inode-okból. Másfelől viszont meg is takaríthatsz inode-okat, ha letörlöd a sok felesleges eszközállományt a /dev alkönyvtárból. Az mke2fs parancs 360 inode-t készít alapértelmezés szerint egy 1.44Mb-s lemezen. Úgy találtam, hogy 120 inode bőven elegendő a helyreállító lemezemen, de ha a /dev alkönyvtár összes állományát szeretnéd csatolni, hamar ki fogsz fogyni a 360 inode-ból. A tömörített gyökér állományrendszer nagyobb állományrendszert enged meg, és így alapértelmezés szerint több inode-t, de még mindig szükség lehet rá, hogy egyrészről csökkentsd az állományok számát, vagy növeld az inode-k számát.

Így tehát az utasítás így néz ki:

        mke2fs -m 0 -i 2000 ESZKÖZ

(Ha loopback eszközt használsz, meg kell adnod hogy az ESZKÖZ hol található. Ebben az esetben az mke2fs meg fog kérdezni, hogy biztosan ezt szeretnéd-e, válaszolj igennel.)

Az mke2fs utasítás automatikusan megállapítja a szabad hely méretét, és annak megfelelően konfigurálja be magát. A -m 0 paraméter megakadályozza, hogy a root számára helyet foglaljon le, így több használható hely lesz a lemezen.

Ezután beillesztheted az eszközt:

        mount -t ext2 ESZKÖZ /mnt

(Létre kell hoznod a /mnt beillesztési pontot, ha még nem létezik.) A további fejezetekben minden alkönyvtárnevet az /mnt-hez képest relatív alkönyvtárnak tekintünk.

4.3 Az állományrendszer benépesítése.

Íme egy kellően lecsupaszított alkönyvtárcsoport a gyökér állományrendszered számára:

  • /dev -- Eszközök, melyek a B/K műveletekhez szükségesek
  • /proc -- Alkönyvtár-rendszer, amire a proc állományrendszernek van szüksége
  • /etc -- Rendszerkonfigurációs állományok
  • /sbin -- Kritikus rendszer-binárisok
  • /bin -- A rendszer részét alkotó alap binárisok
  • /lib -- Futásidejű támogatást nyújtó osztott eljáráskönyvtárak
  • /mnt -- Más lemezek karbantartására szolgáló beillesztési pont
  • /usr -- Egyéb eszközök és alkalmazások

(Az itt bemutatott alkönyvtár-struktúra csak a gyökér lemezre vonatkozik. A valódi Linux rendszerek sokkal összetettebb és sokkal fegyelmezettebb irányvonallal rendelkeznek. Állományrendszer Hierarchia Szabványnak hívják ezt a rendszert, és ez a szabvány határozza meg, hogy melyik állománynak hova kell kerülnie.)

A gyökér lemezen három alkönyvtár üresen marad, tehát csak az mkdir parancsra van szükség a létrehozásukhoz. A /proc alkönyvtár tulajdonképpen csak egy törzs, ahova a proc állományrendszer kerül. Az /mnt és az /usr alkönyvtárak pedig olyan beillesztési pontok, melyeket majd az indító/gyökér rendszer lefutása után használunk. Ezért tehát ezeket az alkönyvtárakat csak létre kell hozni.

A maradék négy alkönyvtár tartalmát a következő bekezdésekben részletezzük.

/dev

A /dev alkönyvtár minden Linux rendszerben használatos eszköz számára egy-egy különleges állományt tartalmaz. A /dev alkönyvtár maga hagyományos alkönyvtár, és az mkdir paranccsal létre is hozható a már megismert módon. Az eszközök különleges állományok, így különleges módon kell létrehozni őket az mknod paranccsal.

Azonban létezik egy gyosabb módszer is -- másold le a már létező /dev alkönyvtárad tartalmát, majd töröld le azokat az eszközöket, amikre nincs szükséged. Az egyetlen szükséges teendő a -R kapcsoló használata a különleges eszköz állományok másolásakor. Ez úgy másolja át az alkönyvtárat, hogy nem próbálkozik az állományok belsejének másolásával. Figyelj nagyon, hogy nagybetűs R-t használj!. Ha kisbetűs -r kapcsolót használod, valószínűleg meg sem állsz a teljes merevlemez-tartalmad átmásolásáig, vagy legalábbis addig, amíg nem telítődik a lemezed. Ezért légy óvatos, és a következő utasítást használd:

        cp -dpR /dev /mnt

feltéve, hogy a lemezt a /mnt alkönyvtárba illesztetted. A dp kapcsoló gondoskodik a szimbolikus láncok láncokként való másolásáról, így nem a célállományt másolod át, valamint megőrzi az eredetleg használt attribútumokat, így a tulajdonos információkat is.

Ha a nehezebb utat szeretnéd járni, használd a ls -l parancsot a major és minor eszközszámok megjelenítéséhez a másolandó eszközökről, majd hozd létre őket az mknod paranccsal a lemezeden.

Habár az eszközöket lemásoltad, megéri leellenőrizni, hogy minden általad szükségesnek tartott különleges eszköz rákerült-e a biztonsági helyreállító lemezedre. Például, a szalagos eszközök az ftape állományt használják, így ha szalagos lemezmeghajtódhoz hozzá szeretnél férni az indítólemezről, minden ilyen állományt át kell másolnod.

Jegyezzük meg, hogy minden egyes különleges eszköz állományhoz egy-egy inode-ra van szükség, és az inode nagyon szűkös erőforrás, különösen lemezen lévő állományrendszereken. Ez szükségessé teszi, hogy minden szükségtelen eszköz specifikus állományt eltávolíts, csak azokat hagyd meg a /dev alkönyvtárban, amikre valóban szükséged lesz. Például ha nincsenek SCSI lemezeid, minden további nélkül eltávolíthatsz minden sd-vel kezdődő eszköz állományt. Hasonlóképpen, ha nem akarsz soros csatolót használni, minden cua-val kezdődő eszköz törölhető.

Bizonyosodj meg arról, hogy a következő állományokat csatolod ebből az alkönyvtárból: console, kmem, mem, null, ram, tty1.

/etc

Ez az alkönyvtár számos konfigurációs állományt tartalmaz. A legtöbb állományrendszeren ezeket három csoportba sorolhatjuk:

  1. Minden esetben szükségesek, pl. rc, fstab, passwd.
  2. Lehet, hogy kellenek, de senki sem elég biztos benne.
  3. Szükségtelen hulladék.

A lényegtelen állományokat a következő utasítással ismerheted fel:

        ls -ltru

Ez a fordított sorrendben kilistázza a legutóbbi hozzáférés szerint rendezve az állományokat, tehát amelyik állományhoz nem volt hozzáférés, le lehet hagyni a gyökér lemezről.

Az én gyökér lemezemen 15 darab konfigurációs állomány található. Ez három csoportra szűkíti a kezelendő állományok halmazát:

  1. Állományok, melyeket be kell konfigurálni az indító/gyökér rendszerhez.
    1. rc.d/* -- rendszerindító és futásszint váltó szkriptek
    2. fstab -- beillesztendő állományrendszerek listája
    3. inittab -- az init folyamat állományai, az indításkor elsőként elinduló folyamat.
  2. Állományok, melyekről gondoskodni kell az indító/gyökér rendszerhez.
    1. passwd -- felhasználók listája, home könyvtárak, stb.
    2. group -- felhasználói csoportok
    3. shadow -- felhasználók jelszavai. Nem kötelező ezt használnod.
    4. termcap -- a terminál képesség-adatbázisa.
    Ha fontos a biztonság, a passwd és a shadow le kell csupaszítani, hogy megakadályozd a felhasználói jelszavak lemásolását a rendszerről, és így amikor lemezről indítod a rendszert, a nemkívánatos bejelentkezéseket visszautasítja a rendszer. Győződj meg arról, hogy a passwd legalább a root-ot tartalmazza. Ha szeretnél más felhasználót is beengedni, gondoskodj róla, hogy létezzen a home könyvtára, és a parancsértelmezője. termcap, a terminál adatbázis tipikusan több száz kbyte hosszú. Az indító/gyökér lemezeden lévő változatot célszerű úgy lecsupaszítani, hogy csak az általad használt terminál(ok) számára tartalmazzon leírást, ami általában a linux-console bejegyzés.
  3. A maradék. Működnek ebben a pillanatban, így békén hagyom őket.

Ezután ténylegesen lét állományt kell konfigurálnom, és meglepően kevés dolgot fognak tartalmazni.

  • rc-nek a következőket kellene tartalmaznia:
            #!/bin/sh
            /bin/mount -av
            /bin/hostname Kangaroo
    
    Bizonyosodj meg róla, hogy az alkönyvtárak helyesek. Nem kell a hostname-t futtatnod, egyszerűen csak jól néz ki, ha teszed.
  • fstab-nak legalább a következőket kell tartalmaznia:
            /dev/ram0       /               ext2    defaults
            /dev/fd0        /               ext2    defaults
            /proc           /proc           proc    defaults
    
    Lemásolhatod a már létező fstab-od bejegyzéseit, de nem célszerű automatikusan beillesztened a merevlemezed partícióit. Használd a noauto kulcsszót esetükben. A merevlemezed sérült, vagy halott is lehet, amikor az indító lemezt használod.

Az inittab-ot úgy kell megváltoztatnod, hogy a sysinit sora a rc-t futtassa, vagy valami alap indító szkriptet használjon. Emellett, ha biztos akarsz lenni benne, hogy soros portról se tudjanak felhasználók bejelentkezni, kommentezd ki az összes olyan getty bejegyzést, ami a sor végén ttys vagy ttyS eszközre hivatkozik, csak a tty portokat hagyd meg, így csak a konzolon tudsz bejelentkezni.

Egy minimális inittab állomány például így nézhet ki:

        id:2:initdefault:
        si::sysinit:/etc/rc
        1:2345:respawn:/sbin/getty 9600 tty1
        2:23:respawn:/sbin/getty 9600 tty2

Az inittab állomány mondja meg, hogy milyen rendszer fusson a különböző állapotokban, beleértve az indulást, a több-felhasználós üzemmódba váltást, stb. Bizonyosodj meg az inittab-ban hivatkozott állománynevek helyességéről. Ha az init nem találja valamely említett programot, az induló lemez futtatása meg fog állni, és még csak hibaüzenetet sem fogsz kapni.

Jegyezzük meg, hogy néhány programot nem lehet máshova mozgatni, mert más programok bedrótozva tartalmazzák a helyét. Például az én rendszeremen a /etc/shutdown a /etc/reboot-ba van bedrótozva. Ha reboot-ot átmozgatom /bin/reboot-ra, és kiadom a shutdown parancsot, az nem fog működni, mert nem találja a reboot állományt.

A többiről annyit, hogy az /etc alkönyvtáradban levő összes szöveges állományt egyszerűen csak másold át, és az összes olyan /etc-beli összes olyan futtatható állományt, amiről nem tudod biztosan, hogy nem lesz rá szükség. Támpontot adhat ebben a Sample rootdisk directory listings fejezet. Valószínűleg elegendő lesz csak ezokat az állományokat átmásolni, de sokmindenben különbözhetnek egymástól a Linux rendszerek, tehát nem lehetsz biztos benne, hogy a te rendszereden ugyanazon állományok halmaza pontosan egyezik a listában megadott állományokkal. Az egyetlen megbízható megoldás az, hogy az inittab-ból kiindulva megvizsgálod, hogy mire van szükség.

A legtöbb mai rendszer a /etc/rc.d/ alkönyvtárat tartalmazza a különböző futásszintek parancsértelmező szkriptjeinek tárolására. Az alkönyvtár állhat egyetlen rc szkriptből is, de talán egyszerűbb átmásolni az inittab és az /etc/rc.d alkönyvtárat a már működő rendszeredről, és kiszedni a rc.d alkönyvtár szkriptjeiből a lemezes rendszerkörnyezet számára nem fontos dolgokat.

/bin és /sbin

A /bin alkönyvtár a megállapodás szerint az alap műveletek elvégzése szempontjából szükséges extra eszközök tárolóhelye, olyan eszközök találhatóak itt, mint az ls, mv, cat és a dd. A Sample rootdisk directory listings függelékben találsz egy példát a /bin alkönyvtár állományairól, illetve az /sbin alkönyvtár tartalmáról. Ez nem tartalmaz minden mentéshez és mentésből való visszaállításhoz szükséges eszközt, mint például a cpio, tar és gzip parancsok, mert az indító/gyökér lemezen való helytakarékosságból külön eszközlemezre tettem őket. Amikor az indító/gyökér lemez betöltődik, bemásolódik a memórialemezre, hogy felszabadítsa a lemez meghajtót másik lemez beillesztéséhez, ami esetünkben az eszköz lemez lesz. Általában én ezt az /usr alkönyvtárba illesztem be.

Az eszköz lemez készítését ebben a fejezetben olvashatod a Building a utility disk bekezdésben. Minden bizonnyal célszerű eltenni egy biztonsági másolat készítése esetén az ehhez használt biztonsági mentő eszközöket, hogy ne kelljen időt pazarolnod olyan verziók telepítésére, amik esetleg nem is olvasság a biztonsági mentéseket tartalmazó szalagokat, lemezeket.

Győződj meg róla, hogy csatoltad-e a következő programokat: init, getty vagy ezzel egyenértékű program, login, mount, valamelyik az rc szkriptjeidet futtatni tudó parancsértelmező, az sh-ból a parancsértelmezőre mutató lánc.

/lib

A /lib alkönyvtárban tárolhatod a szükséges osztott eljáráskönyvtárakat és a betöltőket. Ha a szükséges eljáráskönyvtárak nem találhatóak a /lib alkönyvtárban, akkor a rendszer nem fog tudni elindulni. Ha szerencséd van, láthatsz olyan hibaüzenete, ami utal arra, hogy miért is nem tudott elindulni a rendszered.

Majdnem minden programnak szüksége van legalább a libc eljáráskönyvtárra, libc.so.N, ahol az N az aktuális verziószám. Nézd meg a /lib alkönyvtárad. A libc.so.N valószínűleg csak egy szimbolikus lánc, ami egy teljes verziószámú állományra mutat:

% ls -l /lib/libc*
-rwxr-xr-x   1 root     root      4016683 Apr 16 18:48 libc-2.1.1.so*
lrwxrwxrwx   1 root     root           13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so*

Ebben az esetben a libc-2.1.1.so-ra van szükséged. Ahhoz, hogy megtudd, melyik eljáráskönyvtárakra van még ezen kívül szükséged, meg kell nézned, hogy a csatolni kívánt binárisoknak mik a függőségeik. A függőségek ellenőrzését az ldd paranccsal tudod leellenőrizni. Például:

        % ldd /sbin/mke2fs
        libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000)
        libuuid.so.1 => /lib/libuuid.so.1 (0x40028000)
        libc.so.6 => /lib/libc.so.6 (0x4002c000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Minden jobboldalon szereplő állományra szükség van. Az állomány lehet szimbolikus lánc is.

Jegyezzük meg, hogy néhány eljáráskönyvtár elég nagy, és nem könnyen fog ráférni a gyökér lemezedre. Például a fent is említett libc.so közel 4 mega. Valószínűleg meg kell nyírbálnod az eljáráskönyvtárakat, amikor a gyökér lemezre másolod őket. Nézd meg a Reducing root filesystem size fejezetet, hogy ezt hogyan teheted meg.

A /lib alkönyvtárban az eljáráskönyvtárak betöltőjét is csatolnod kell. A betöltő lehet egyrészt ld.so (a.out eljáráskönyvtárakhoz), vagy ld-linux.so (ELF eljáráskönyvtárakhoz). Az ldd újabb változatai pontosan meg is mondják, hogy melyik betöltőkre van szüksége az eljáráskönyvtárnak, mint a fenti példában is láthattad, de régebbi verziók esetleg nem adják ezt meg. Ha nem vagy biztos benne, hogy melyikre van szükséged, futtasd a file parancsot az eljáráskönyvtárra. Például:

        % file/lib/libc.so.4.7.2 /lib/libc.so.5.4.33 /lib/libc-2.1.1.so
        /lib/libc.so.4.7.2: Linux/i386 demand-paged executable (QMAGIC), stripped
        /lib/libc.so.5.4.33: ELF 32-bit LSB shared object, Intel 80386, version 1, stripped
        /lib/libc-2.1.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1, not stripped

A QMAGIC jelzi, hogy a 4.7.2-esek az a.out eljáráskönyvtáraké, az ELF jelzi, hogy a 5.4.33-esek és a 2.1.1-ek az ELF-eké.

Másold a szükséges betöltőkez az építendő gyökérállományrendszerre. Az eljáráskönyvtárakat és a betöltőket gondosan össze kell vetni a csatolt binárisokkal. Ha a kernel nem tudja betölteni a szükséges eljáráskönyvtárat, általában hibaüzenet nélkül azonnal megáll a futása.

4.4 PAM és NSS számára szolgáltatandók.

A rendszerednek olyan dinamikusan betöltendő eljáráskönyvtárakra is szüksége lehet, amiket a ldd nem mutat meg.

PAM (Pluggable Authentication Modules: Beilleszthető Hitelesítő Modul).

Ha a rendszered PAM-ot (Pluggable Authentication Modules: Beilleszthető Hitelesítő Modul) használ, néhány külön intézkedést kell végezned az indítólemezeden ehhez, különben nem fogsz tudni bejelentkezni. A PAM röviden egy kifinomult, moduláris felépítésű módszer a felhasználók hitelesítésére és a szolgáltatásokhoz való hozzáférésük szabályozására. A legegyszerűbben úgy tudod kideríteni, hogy a rendszered használ-e PAM-ot, ha megnézed a merevlemezed /etc alkönyvtárát, hogy találsz-e benne pam.conf nevű állományt, vagy pam.d nevű alkönyvtárt. Ha bármelyik létezik, minimális PAM támogatásról gondoskodnod kell. (Másik lehetőség, ha lefuttatod az ldd-t a login állományodra. Ha a kimenet tartalmazza a libpam.so állományt, szükséged van a PAM-ra.)

Szerencsére a biztonság betöltő lemezek esetében nem kulcsfontosságú tényező, mivel bárki, akinek fizikai hozzáférése van a géphez gyakorlatilag úgyis bármit megtehetne. Ezért gyakorlatilag le is tilthatod a PAM-et egy egyszerű /etc/pam.conf állomány létrehozásával a gyökér lemezeden, ami így néz ki:


OTHER   auth       optional     /lib/security/pam_permit.so
OTHER   account    optional     /lib/security/pam_permit.so
OTHER   password   optional     /lib/security/pam_permit.so
OTHER   session    optional     /lib/security/pam_permit.so

Valamint másold le a /lib/security/pam_permit.so állományt a gyökér állományrendszeredre. Ez az eljáráskönyvtár körülbelül 8K, tehát minimális többletet jelent csak.

Jegyezzük meg, hogy ez a konfiguráció bárkinek teljes hozzáférést biztosít a gépeden levő összes állományhoz és szolgáltatáshoz. Ha valami miatt lényeges számodra az indítólemezed biztonsága, néhány, vagy az összes merevlemezeden lévő PAM beállítást a gyökér állományrendszeredre kell másolnod. Ehhez gondosan tanulmányozd át a PAM dokumentációját, és másolj át minden szükséges eljáráskönyvtárt a /lib/security alkönyvtárból a gyökér állományrendszeredre.

Az indítólemezedre rá kell tenned még a /lib/libpam.so állományt is, de már tudod, mivel futtattad a /bin/login-ra az ldd-t, hogy melyiket a megjelenített függőség alapján.

NSS (Name Service Switch: Név Szolgáltatás Kapcsoló).

Ha glibc-t (azaz libc6) használsz, külön kell foglalkoznod a név szolgáltatásokkal, vagy nem fogsz tudni bejelentkezni. Az /etc/nsswitch.conf állomány szabályozza a különböző szolgáltatásokhoz szükséges adatbázis fellapozásokat. Ha nem tervezel más hálózatok szolgáltatásaihoz való hozzáférést (pl. DNS vagy NIS feloldás), csak egy egyszerű nsswitch.conf állományt kell előkészítened, ami így néz ki:


     passwd:     files
     shadow:     files
     group:      files
     hosts:      files
     services:   files
     networks:   files
     protocols:  files
     rpc:        files
     ethers:     files
     netmasks:   files
     bootparams: files
     automount:  files
     aliases:    files
     netgroup:   files
     publickey:  files

Ez azt mondja meg, hogy minden szolgáltatást csak helyi állományok biztosítanak. Csatolnod kell a /lib/libnss_files.so.1 állományt is, ami dinamikusan fog betöltődni, hogy az állomány feloldásokat kezelje.

Ha hálózathoz való hozzáférést is tervezel az indítólemezedről, akkor gondosabban kidolgozott nsswitch.conf állományra lesz szükséged. Nézd meg az nsswitch manuál oldalt a részletekért. Tartsd észben, hogy minden szolgáltatáshoz, amit csatolsz, szükséged van a /lib/libnss_szolgáltatás.so.1-ra.

4.5 Modulok.

Ha moduláris kerneled van, össze kell szedned, hogy a lemezed rendszerindítás után mely modulokat szeretnéd betölteni. Esetleg szeretnéd mellékelni az ftape és zftape modulokat, ha mentő szalagos egységeid vannak, modulokat az SCSI eszközeid számára, ha vannak, és valószínűleg modulokat a PPP vagy SLIP támogatáshoz, ha szeretnél vészhelyzet esetén is hálózati hozzáférést.

Ezekez a modulokat a /lib/modules alkönyvtárban helyezheted el. Célszerű még az insmod, rmmod és az lsmod parancsokat is mellékelned. Ha automatikusan betöltődő modulokat szeretnél, mellékeld a modprobe, depmod és a swapout programokat is. Ha kerneld-t használsz, az /etc/conf.modules-el együtt kell a lemezre tenned.

Mégis, a modulok használatának legfőbb előnye abban van, hogy a nem kritikus modulokat átpakolhatod az eszközlemezre, és szükség esetén betöltheted, így kevesebb helyet használsz el a gyökér lemezen. Ha több eszközzel kell bajlódnod, jobb megoldásnak kínálkozik a modulok használata, mintha egy hatalmas kernelt készítenél az összes meghajtó szoftverrt belefordítva.

Jegyezzük meg, hogy ahhoz, hogy tömörített ext2 állományrendszerről rendszert indíthass, a memórialemezt és az ext2 támogatást bele kell fordítanod a kernelbe. Nem lehet őket modulként mellékelni.

4.6 Néhány utolsó simítás.

Néhány rendszerprogram, mint például a login, problémázik, ha nem létezik a /var/run/utmp állomány és a /var/log alkönyvtár. Így:

        mkdir -p /mnt/var/{log,run}
        touch /mnt/var/run/utmp

Végül, miután összeszedted az összes szükséges eljáráskönyvtárt, futtasd az ldconfig programot, hogy újrageneráld az /etc/ld.so.cache állományt a gyökér állományrendszeren. A cache megadja a betöltőnek, hogy hol találj az eljáráskönyvtárakat. Az ld.so.cache újragenerálásához a következő parancsot kell kiadnod:

        chdir /mnt; chroot /mnt /sbin/ldconfig

A chroot szükséges, mert az ldconfig mindig a gyökér állományrendszer számára generálja újra a cache-t.

4.7 Töltsük fel.

Ha végeztél a gyökér állományrendszer összeállításával, csatold le, másold át egy állományba, és tömörítsd be:

        umount /mnt
        dd if=ESZKÖZ bs=1k | gzip -v9 > rootfs.gz

Ha ezzel készen vagy, létrejön a rootfs.gz állomány, ami a tömörített gyökér állományrendszered. Ellenőrizd le a méretét, hogy biztosan ráfér-e egy lemezre. Ha nem, akkor vissza kell menned, és néhány állományt el kell távolítanod. A Reducing root filesystem size fejezet ad néhány támpontot arra, hogy hogyan tudod csökkenteni a gyökér állományrendszered méretét.


Következő Előző Tartalom