Linux Indítólemez HOGYAN

Tom Fawcett (fawcett@croftj.net)

3.5, July 1999
Ez a dokumentáció azt mutatja be, hogyan készítheted el a saját Linux indító/gyökér lemezeidet. Ezeket a lemezeket a rendszered biztonsági lemezeként, vagy új rendszerkomponensek tesztelésére használhatod. Ha még nem olvastad el a Linux GYIK-et és az olyan idevágó dokumentációkat, mint a Linux Telepítés HOGYAN és a Linux Telepítési Kézikönyv, nem ajánlatos indítólemez készítésével próbálkoznod. Ha csak vészhelyzet esetére szeretnél biztonsági lemezt készíteni, nézd meg a Előre-gyártott indítólemezek Függeléket.

Appendix

1. Bevezetés.

Megjegyzés: Ez a dokumentáció elavult lehet. Ha a címlapon szereplő dátum több, mint hat hónappal ezelőtti, nézd meg a Linux Documentation Project holapon ( http://metalab.unc.edu/LDP/HOWTO/Bootdisk-HOWTO.html), hogy nincs-e frisebb verzió.

Bár ez a dokumentáció jól olvasható sima szöveges formátumban, sokkal jobban néz ki Postscript (.ps) vagy HTML formátumban, mert tipográfiai jeleket is használunk. Ajánljuk, hogy ezek valamelyikét használd.

1.1 Verzió megjegyzések.

Graham Chapman (grahamc@zeta.org.au) írta az eredeti Bootdisk-HOWTO-t és a 3.1-es verzióig ő támogatta. Tom Fawcett (fawcett@croftj.net) sok dolgot hozzátett a 2.0-s kernel miatt, és ő a dokumentáció karbantartója a 3.2-es verziótól kezdve. Chapman eredeti dokumentációjának nagyrésze változatlanul megmaradt.

A Bootdisk-HOWTO fordítását, az Indítólemez-HOGYAN-t Bábos Balázs (bbk@swi.hu) készítette.

Ez a dokumentáció a 2.0-ás és későbbi kernelekhez készült. Ha ennél régebbi kerneled van (1.2.xx vagy korábbi), nézd meg e dokumentáció korábbi verzióit, melyeket a Graham Chapman honlapja helyről szerezhetsz be.

Ezek az információk kifejezetten Intel Linux platformra készültek. Az itt található dolgok nagyrésze más processzorú Linux rendszerben is felhasználhatók, de nincs saját tapasztalatunk e téren. Ha valaki rendelkezik más platform indítólemezének elkészítésében tapasztalattal, kérjük vegye fel velünk a kapcsolatot.

1.2 Visszacsatolás és köszönet-nyilvánítás.

Szívesen fogadunk minden a dokumentációval kapcsolatos pozitív vagy negatív visszajelzést. A legjobb tudásunk szerint próbáltuk meg összeállítani az itt található utasításokat és információkat, hogy helytállóak és megbízhatóak legyenek. Légyszíves értesíts minket, ha hibát vagy elírást találnál.

Köszönjük sokatoknak, akik segítettetek javításokkal és ötletekkel. A közreműködésetek tette sokkal jobbá, nélkületek nem sikerült volna.

Megjegyzéseket, javításokat, kérdéseket a készítő fentebb olvasható E-mail címére küldheted. Nem bánom, ha kérdésekre kell válaszolnom, de először olvasd el a Hibajavítást-t.

1.3 Terjesztési jogosultság.

Copyright © 1995,1996,1997,1998,1999 by Tom Fawcett and Graham Chapman. Ez a dokumentáció szabadon terjeszhető a Linux Documentation Project License ( http://metalab.unc.edu/LDP/COPYRIGHT.html) figyelembevételével. Fordulj a készítőkhöz, ha nem tudsz hozzájutni a licenszhez.

Ez egy ingyenes dokumentáció. Abban a reményben terjesztjük, hogy hasznos lehet, de bármiféle garancia nélkül.

2. Bevezetés.

A Linux indítólemezek több esetben hasznosak lehetnek, mint például:

Több lehetőség áll rendelkezésedre, hogy beszerezz indító lemezeket:

Néhányan ez utóbbit választják, azaz saját maguk készítik el a rendszerindító lemezeiket. Így ha valami elromlik, ki tudják találni, hogy mi a teendő a megjavításához. Ezen kívül ez egy jó módszer arra, hogy megtanulják, hogy is működik egy Linux rendszer.

Ez a dokumentáció feltételezi, hogy van némi jártasságod a Linux rendszer-adminiszráció alapkérdéseiben. Például nem árt tudnod, hogy mik azok az alkönyvtárak, állományrendszerek és floppy lemezek. Ezen kívül jó ha tudod használni a mount és a df parancsokat, valamint ismerned kell, hogy a /etc/passwd és fstab állományok mire jók, és hogyan néznek ki. Nem árt, ha azt is tudod, hogy a legtöbb parancsot, amit ebben a HOGYAN-ban is használunk root-ként kell futtatnod.

A saját indítólemezed a semmiből való elkészítése meglehetősen bonyolult dolog. Ha még nem olvastad el a Linux GYIK-et és az olyan idevágó dokumentációkat, mint a Linux Telepítés HOGYAN és a Linux Telepítési Kézikönyv, nem ajánlatos indítólemez készítésével próbálkoznod. Ha csak vészhelyzetek esetére kell egy működő indítólemez, sokkal egyszerűbb, ha letöltesz egy megfelelő változatot magadnak. Nézd meg a Előre elkészített indítólemezek függeléket lejjebb, hogy hol is találod ezeket.

3. Indítólemezek és az indítás folyamata.

Az indítólemez tulajdonképpen egy pici, saját magát egyetlen floppy lemezen tartalmazó Linux rendszer. Sok -a teljes méretű Linux rendszerben lévő funkcióhoz hasonló- funkciót kell ellátnia. Mielőtt nekikezdenél egy ilyen rendszer készítésének, meg kell értened az alap Linux rendszer betöltési folyamatát. Azokkal az alapokkal foglalkozunk itt, amikre a dokumentáció további részének megértéséhez szükséged lesz. Több esetben a részleteket és az alternatív lehetőségeket kihagytuk.

3.1 Az indítási folyamat.

Minden PC rendszer az indítási folyamatot a ROM-ban lévő kód végrehajtásával (pontosabban a BIOS-ban) kezdi, hogy betöltse az indító meghajtó 0. szektor, 0. cylinderén található szektort. Az indító meghajtó általában az első floppy lemez meghajtó (DOS alatt A:-val jelölik, Linuxban /dev/fd0). A BIOS ezután megpróbálja végrehajtani ezt a szektort. A legtöbb indítható lemez 0. szektora, 0. cylindere a következők valamelyikét tartalmazza:

Ha a Linux kernel nyers-másolással kerül át egy lemezre, a lemez első szektora magának a kernelnek az első szektorát fogja tartalmazni. Az első szektor fogja folytatni a betöltési folyamatot a kernel többi részének indító eszközről való betöltésével.

Amint a kernel teljes egészében betöltődött, néhány alapvető eszköz-inicializálást hajt végre. Ezután megpróbálja betölteni és beilleszteni a gyökér állományrendszert néhány eszközről. A gyökér állományrendszer egyszerűen az az állományrendszer, amit ``/''-ként illesztünk be. A kernelnek meg kell mondani, hogy hol keresse a gyökér állományrendszert; ha nem talál betölthető állományrendszert itt, megáll.

Néhány esetben az induláskor -- gyakran, amikor lemezről indítunk -- a gyökér állományrendszert memórialemezre töltjük be, amit a rendszer a RAM-ból olvas úgy, mintha lemez lenne. Két indok lehet, ami miatt a rendszert memórialemezre töltjük. Az első, hogy a RAM lényegesen gyorsabb bármely floppy lemeznél, így a rendszer működése nagyon gyors, a második, hogy a kernelt tömörített állományrendszerről töltjük be a lemezről, majd memórialemezre kitömörítjük, ezzel lehetővé téve több állomány lemezre másolását.

Ha a gyökér állományrendszer betöltődött, és beillesztődött, a következőhöz hasonló üzenetet kapsz:

        VFS: Mounted root (ext2 filesystem) readonly.

Ennél a pontnál a renszer megkeresi az gyökér állományrendszeren az init programot (a /bin vagy az /sbin alkönyvtárban), és végrehajtja. Az init az /etc/inittab állományból olvassa a konfigurációt, megkeresi a megfelelő sysinit sort, és végrehajtja a named szkriptet. A sysinit szkript általában valami olyasmi, mint az /etc/rc vagy az /etc/init.d/boot. Ez a szkript parancsértelmező parancsok halmaza, amik az olyan alap rendszer szolgáltatásokat állítják be, mint:

Ez a szkript gyakran meghív más szkripteket, hogy moduláris inicializálást tegyen lehetővé. Például a közös SysVinit szerkezet, az /etc/rc.d/ alkönyvtár olyan alkönyvtárak teljes rendszerét tartalmazza, amelyek állományai megadják, hogy hogy kell engedélyezni és leállítani a legtöbb rendszerszolgáltatást. Mindazonáltal az indítólemezek sysinit szkriptje gyakran nagyon egyszerű.

Amikor a sysinit szkript végez, visszaadja a vezérlést az init-nek, ami ezután az inittab initdefault kulcsszavával megadott alapértelmezett futásszintre lép. A futásszint sor általában meghatároz egy getty-hez hasonló programot, ami a konzolon és tty-ken keresztüli kommunikációért felelős. A getty az a program, ami a már ismerős ``login:'' promptot írja ki. A getty program hívja meg a login programot, hogy a bejelentkezéseket lekezelje, és beállítsa a felhasználói környezetet.

3.2 Lemez típusok.

Miután átnéztük az alap indulási folyamatot, definiálhatjuk a különböző lemeztípusokat. Négy típusba sorolhatjuk a lemezeket. A dokumentációban szereplő ``lemez'' szó alatt a továbbiakban a floppy lemezt értjük, ha másként nem rendelkezünk, bár a legtöbb dolog, amiről szó lesz, érvényes merevlemezre is.

betöltő(boot)

A lemez a betöltendő kernelt tartalmazza. A lemez a kernel betöltésére használható, ami utána másik lemezen levő gyökér állományrendszert töltene be. A betöltőlemezen levő kernelnek meg kell mondani, hogy hol találja a gyökér állományrendszert.

Gyakran a betöltőlemez másik lemezen levő gyökér állományrendszert tölt be, de az is megoldható, hogy merevlemez gyökér állományrendszerét töltse be inkább. Ezt általában új kernel tesztelésére használjuk. (tulajdonképpen a ``make zdisk'' parancs automatikusan készít ilyen betöltő lemezt a kernel forráskódjából).

gyökér(root)

A Linux rendszer működéséhez szükséges állományokat tartalmazó állományrendszer. Az ilyen lemez nem szükségszerűen tartalmaz kernelt, vagy indító betöltőt (boot loader).

Egy gyökér lemezt használhatunk más lemezen lévő rendszertől függetlenül, ha a kernel már betöltődött. A gyökérlemez gyakran automatikusan memórialemezre másolódik. Ez sokkal gyorsabbá teszi a gyökérlemez használatát, és felszabadítja a lemez meghajtót az eszközlemez számára.

betöltő/gyökér(boot/root)

Olyan lemez, ami a kernelt és a gyökér állományrendszert is tartalmazza. Más szavakkal, mindent tartalmaz, amire egy Linux rendszer merevlemez nélküli működéséhez szükség van. Ennek a lemeztípusnak a tömörsége az előnye -- minden szükséges dolgot egyetlen lemezen tartalmaz. Mindazonáltal mivel minden folyamatosan növekszik, egyre nehezebb mindent egy lemezre zsúfolni, még tömörítéssel is.

eszköz(utility)

Olyan lemez, ami nem gyökérként beillesztendő állományrendszert tartalmaz, hanem kiegészítő adatokat. Egyéb eszközök szállítására használhatsz ilyen lemezt a gyökér lemezed kiegészítéseként, ha arra már nem fér más.

Általában amikor ``betöltőlemez készítéséről'' beszélünk, ezalatt egyaránt értjük a betöltő (kernel) és a gyökér (állományok) részek elkészítését. Ezek lehetnek együtt (egylemezes betöltő/gyökér lemez), vagy külön (betöltő+gyökér lemezek). A legrugalmasabb megoldás helyreállító lemezek esetén valószínűleg a különválasztott betöltő és gyökér lemezek használata, és egy vagy több eszköz lemez a többlet kezelésére.

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:

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:

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:

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:

(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.

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.

5. Kernel választása.

Ebben a pillanatban már van egy teljes tömörített gyökér állományrendszered. A következő lépés, hogy választasz egy kernelt. A legtöbb esetben lehetőséged van arra, hogy a saját, éppen használatban lévő kerneledet használd, és azzal induljon az indítólemezed. Mégis, van olyan eset, amikor célszerűbb inkább egy külön kernelt készíteni a lemezed számára.

Az egyik ok lehet a méret. Ha egyetlen indító/gyökér lemezt készítesz, a kernel lesz az egyik legnagyobb állomány a lemezen, tehát le kell csökkenteni a kernel méretét amennyire csak lehetséges. Ahhoz, hogy lecsökkentsd a kernel méretét, csak a kívánt rendszer számára minimálisan szükséges szolgáltatásokhoz tegyél bele támogatást. Ez azt jelenti, hogy minden olyan dolgot, amire nincs szükséged, ki kell hagynod belőle. A hálózatot például jó dolog kihagyni belőle, úgy, mint minden olyan lemez meghajtó szoftvert, és egyéb eszközöket, amikre nincs szükség a betöltő/gyökér rendszer futtatásához. Mint korábban is említettem, a kernelednek feltétlenül tartalmaznia kell a memórialemez és az ext2 támogatást.

Miután kitaláltad, hogy mik lesznek a kernelbe befordított minimális szolgáltatások, ki kell találnod, hogy miket kell visszarakni. Valószínűleg a legtöbb átlagos indító/gyökér lemez rendszer használata sérült gyökér állományrendszer vizsgálata és helyreállítása miatt következik be, és ahhoz, hogy ezt megtehesd, kernel támogatásra lehet szükséged. Például, ha olyan szalagon találhatóak a mentéseid, amik Ftape-et használnak a szalagos egységhez való hozzáféréshez, nem fogod tudni helyreállítani a rendszeredet a szalagos mentésedből. Újra kell telepítened a Linux-ot, le kell töltened és újratelepítened az ftape-t, majd ezek után megpróbálhatod olvasni a mentéseidet.

A lényeg, hogy minden a mentéseid elkészítéséhez használt kernel B/K támogatást célszerű az indító/gyökér lemezed kernelébe is belefordítani.

A kernel elkészítésének pontos leírását a kernellel kapott dokumentációban részletesen megtalálod. Viszonylag könnyű követni, tehát kezdjed az /usr/src/linux alkönyvtárban a keresést. Ha problémád van kernel készítéssel, valószínűleg nem is kellene indító/gyökér lemez készítésével foglalkoznod. Ne felejtsd el tömöríteni a kernelt a ``make zImage'' paranccsal.

6. Rakjuk össze őket: lemez(ek) elkészítése.

Most már van kerneled és tömörített gyökér állományrendszered. Ha indító/gyökér lemezt készítesz, nézd meg a méretüket, és bizonyosodj meg arról, hogy rá fognak-e együtt férni egy lemezre. Ha két lemezes indító+gyökér készletet készítesz, nézd meg a gyökér állományrendszert, hogy ráfér-e egyetlen lemezre.

El kell döntened, hogy LILO-t használsz-e a kernel indítólemez betöltéséhez. Másik megoldás lehet a kernel közvetlenül egy lemezre másolása, és LILO nélküli indítása. A LILO használatának előnye a kernel számára átadható paraméterekben rejlik, amik esetleges hardver inicializálásokhoz szükségesek lehetnek (nézd meg az /etc/lilo.conf állományt a rendszereden. Ha tartalmaz olyan sorokat, amikben szerepel az ``append=...'', akkor valószínűleg szükséged lesz erre a lehetőségre.). A LILO használatának hátránya, hogy megbonyolítja az indítólemez készítését, és egy kicsit több helyet foglal. Egy kis elkülönített állományrendszert kell összeállítanod, amit kernel állományrendszernek hívunk, és ide kell a kernelt, és néhány a LILO számára szükséged állományt másolnod.

Ha LILO-t fogsz használni, olvasd tovább, ha a kernelt közvetlenül a lemezre fogod másolni, akkor ugorj tovább a Without using LILO fejezetre.

6.1 A kernel másolása LILO-val. .

Az első teendő, hogy létre kell hozni egy kis konfigurációs állományt a LILO számára. Így kell kinéznie:


        boot      =/dev/fd0
        install   =/boot/boot.b
        map       =/boot/map
        read-write
        backup    =/dev/null
        compact
        image     = KERNEL
        label     = Bootdisk
        root      =/dev/fd0

A paraméterek magyarázatához nézd meg a LILO felhasználói dokumentációját. Valószínűleg szeretnéd a merevlemezed /etc/lilo.conf állományából hozzáadni az append=...-t tartalmazó sorokat ehhez az állományhoz.

Mentsd el ezt az állományt bdlilo.conf néven.

Most létre kell hoznod egy kis állományrendszert, amit kernel állományrendszernek hívunk, hogy megkülönböztethessük a gyökér állományrendszertől.

Először meg kel nézni, hogy milyen nagynak kell lennie ennek az állományrendszernek. Vedd a kerneled blokkokban vett méretét (ezt a méretet mutatja a ``ls -l KERNEL'', amit 1024-el kell elosztani, majd felfele kerekíteni), és adj hozzá 50-et. Ötven blokk körülbelül elég lesz az indode-k és néhány egyéb állomány számára. Pontosan is kiszámíthatod ezt a számot, ha szeretnéd, vagy egyszerűen használj csak 50-et. Ha két lemezes készletet készítesz, felül is becsülheted a szükséges helyet, mivel az első lemezen csak a kernelt fogod úgyis tárolni. Ezt a számot KERNEL_BLOKK-nak hívjuk.

Helyezz egy lemezt a meghajtóba (az egyszerűség kedvéért feltételezzük, hogy ez az eszköz a /dev/fd0), és készíts rajta ext2 kernel állományrendszert:

        mke2fs -i 8192 -m 0 /dev/fd0 KERNEL_BLOKK

Az ``-i 8192'' mondja meg, hogy egy inode legyen minden 8192 byte-on. Ezután beillesztheted az állományrendszert, távolítsd el a lost+found alkönyvtárat és hozz létre a dev és a boot alkönyvtárakat a LILO számára:

        mount /dev/fd0 /mnt
        rm -rf /mnt/lost+found
        mkdir /mnt/{boot,dev}

Ezután hozd létre a /dev/null és a /dev/fd0 eszközöket. Ahelyett, hogy nekiállnál eszközszámokat keresni, egyszerűen másold át őket a merevlemezedről -R:

        cp -R /dev/{null,fd0} /mnt/dev

A LILO-nak szüksége van egy másolatra az indító betöltőjéhez, a boot.b-re, amit lemásolhatsz a merevlemezedről, amit általában a /boot könyvtárban találsz.

        cp /boot/boot.b /mnt/boot

Végül másold át az előző fejezetben elészített LILO konfigurációs állományt a kerneleddel együtt. Mindkettőt a gyökér alkönyvtárba teheted:

        cp bdlilo.conf KERNEL /mnt

A LILO-hoz szükséges összes állomány most már a kernel állományrendszeren van, tehát készen állsz rá, hogy lefuttasd. A LILO-nak az -r paraméterrel mondhatjuk meg, hogy más gyökérrel telepítse az indító betöltőt:

        lilo -v -C bdlilo.conf -r /mnt

A LILO-nak hiba nélkül le kell futnia, miután a kernel állományrendszernek valahogy így kell kinéznie:


total 361
  1 -rw-r--r--   1 root     root          176 Jan 10 07:22 bdlilo.conf
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:23 boot/
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:22 dev/
358 -rw-r--r--   1 root     root       362707 Jan 10 07:23 vmlinuz
boot:
total 8
  4 -rw-r--r--   1 root     root         3708 Jan 10 07:22 boot.b
  4 -rw-------   1 root     root         3584 Jan 10 07:23 map
dev:
total 0
  0 brw-r-----   1 root     root       2,   0 Jan 10 07:22 fd0
  0 crw-r--r--   1 root     root       1,   3 Jan 10 07:22 null

Ne aggódj, ha az állományok méretei egy kicsit eltérnek nálad.

Most hagyd a lemezt a meghajtóban, és folytasd a Setting the ramdisk word fejezettel.

6.2 A Kernel másolása LILO nélkül.

Ha nem LILO-t használsz, a dd utasítással másold át a kernelt az indítólemezre:

        % dd if=KERNEL of=/dev/fd0 bs=1k
        353+1 records in
        353+1 records out

Ebben a példában a dd 353 teljes rekordot + 1 részleges rekordot írt, így a kernel a lemez első 354 blokkját foglalja el. Ezt a számot KERNEL_BLOKK-nak hívjuk, és a következő fejezetben használni fogjuk.

Végül állítsd be a gyökér eszköznek magát a lemezt, majd állítsd be a gyökeret írható/olvasható betölthetőre:

        rdev /dev/fd0 /dev/fd0
        rdev -R /dev/fd0 0

Légy óvatos, a második rdev utasításnál nagybetűt használj az -R kapcsoló esetén.

6.3 Memórialemez szó beállítása.

A kernel image belsejében van a memórialemez szó, ami megadja, hogy hol található a gyökér állományrendszer, több más paraméterrel együtt. A szó az rdev utasítással érhető el, és a következőképpen kell értelmezni:

        bits  0-10:     Offset to start of ramdisk, in 1024 byte blocks
        bits 11-13:     unused
        bit     14:     Flag indicating that ramdisk is to be loaded
        bit     15:     Flag indicating to prompt before loading rootfs

Ha a 15. bit be van állítva, induláskor új lemez meghajtóba tételére szólít fel a rendszer. Erre a kétlemezes indító készlet esetén van szükség.

Két eset lehetséges, attól függően, hogy egy indító/gyökér lemezt készítesz, vagy kétlemezes ``indító+root'' lemezkészletet.

  1. Ha egyetlen lemezt készítesz, a tömörített gyökér állományrendszer közvetlenül a kernel után kerül, tehát az eltolás az első szabad blokkra (aminek meg kell egyeznie a KERNEL_BLOKK-al) fog mutatni. A 14. bit 1, a 15. nulla. Például, tegyük fel, hogy egy lemezt készítesz, és a gyökér állományrendszer a 253. (decimális) blokknál kezdődik. A memórialemez szó értékének 253-nak (decimális) kell lennie, a 14. bitet 1-re, a 15. bitet 0-ra kell állítani. Ahhoz, hogy kiszámítsd az értéket, egyszerűen csak össze kell adnod a decimális számokat. 253 + 2^14 = 253 + 16384 = 16637. Ha nem érted, hogy honnan jönnek ezek a számok, üsd be őket egy tudományos számológépbe, és alakítsd át binárissá.
  2. Ha két lemezes készletet készítesz, a gyökér állományrendszer a második lemez 0. blokkjánál kezdődik, tehát az eltolást nullára kell állítani. A 14. bitet 1-re kell állítani, és a 15. bitet is 1-re kell állítani. Ebben az esetben a decimális érték 2^14 + 2^15 = 49152.

Miután gondosan kiszámítottad a memórialemez szó értékét, állítsd be az rdev -r paranccsal. Figyelj rá, hogy a decimális értéket használd. Ha LILO-t használtál, az rdev paraméterének a beillesztett kernel útvonalat kell használnod, pl. /mnt/vmlinuz, ha dd-vel másoltad a kernelt, használd inkább a lemez eszköz nevét (pl., /dev/fd0).

        rdev -r KERNEL_VAGY_FLOPPY_MEGHAJTÓ  ÉRTÉK

Ha LILO-t használtál, most lecsatolhatod a lemezt.

6.4 A gyökér állományrendszer átvitele.

A legutolsó lépés a gyökér állományrendszer átvitele.

Gratulálok, készen vagy! Mindig célszerű letesztelned az indítólemezed, mielőtt félreteszed vészhelyzet esetére! Ha hibás a betöltés, olvass tovább.

7. Hibakeresés, avagy a Legyőzött Gyötrődése.

Amikor indítólemezeket készítesz, az első néhány próba esetén valószínűleg nem fog indulni. A gyökér lemezt egy általános megközelítés szerint a már létező rendszered komponenseiből célszerű összeállítanod, és próbálj meg addig eljutni, hogy a lemez-alapú rendszered üzeneteket jelenít meg a konzolon. Ha már elkezd veled beszélgetni, a csatát félig megnyerted, mert már láthatod, hogy miről van szó, és kijavíthatod a felmerülő különálló problémákat, amíg a rendszer zökkenőmentesen nem működik. Ha a rendszer minden magyarázat nélkül áll meg, a hiba okát megtalálni elég nehéz. Ahhoz, hogy a rendszer addig eljusson, amikor már kommunikál veled, több fontos komponens jelenlétére, és helyes konfigurálásra van szükség. Amikor a rendszer nem beszél hozzád, a probléma kivizsgálásának ajánlott eljárása a következő:

Ha ezeket az általános dolgokat megvizsgáltad, íme néhány konkrétabb állomány, amit ellenőrizhetsz.

  1. Győződj meg róla, hogy az init-et /sbin/init vagy /bin/init néven mellékelted. Ellenőrizd, hogy futtatható-e.
  2. Futtasd a ldd init-et, hogy ellenőrizd az init eljáráskönyvtárait. Általában ez csak a libc.so, de azért csak ellenőrizd. Bizonyosodj meg róla, hogy mellékelted az összes eljáráskönyvtárat és a betöltőket.
  3. Bizonyosodj meg róla, hogy a megfelelő betöltőket használod az eljáráskönyvtárakhoz -- ld.so-t az a.out-hoz, vagy ld-linux.so-t az ELF-hez.
  4. Nézd meg az indítólemezed állományrendszerén az /etc/inittab állományban a getty (vagy valami getty-szerű program, mint a agetty, mgetty vagy getty_ps) programhívásokat. Kétszer is hasonlítsd össze ezeket a merevlemezeden lévő inittab-bal. Nézd meg az általad használt program manuálját, hogy egyáltalán értelmes dolgok vannak-e benne. Az inittab valószínűleg a legtrükkösebb rész, mert a szintakszis, és a tartalom az általad használt init programtól és a rendszer természetétől függ. Az egyetlen lehetőség, hogy megbirkózz vele, ha elolvasod az init és inittab programokra vonatkozó manuál oldalakat, valamint pontosan megvizsgálod, hogy mit is csinál a rendszered induláskor. Ellenőrizd, hogy az /etc/inittab-nak van-e inicializáló bejegyzése. Ennek a rendszer inicializáló szkript végrehajtására kell utasítást tartalmaznia, és a szkriptnek is léteznie kell.
  5. Mint az init-nél, futtasd az ldd-t a getty-dre is, hogy lássad, mi szükséges hozzá, és hogy meggyőződhess róla, hogy a szükséges eljáráskönyvtár-állományokat és betöltőket elhelyezted a gyökér állományrendszereden.
  6. Győződj meg róla, hogy csatoltál-e parancsértelmezőt (pl. bash vagy ash), mely képes futtatni az rc szkriptjeidet.
  7. Ha van /etc/ld.so.cache állomány a mentő lemezeden, generáld újra.

Ha az init elindul, de a következő üzenetet kapod:

        Id xxx respawning too fast: disabled for 5 minutes

az az init-ből jön, általában azt jelzi, hogy a getty vagy login az elindulása után közvetlenül meg is hal. Ellenőrizd a getty és a login futtatható állományokat és az eljáráskönyvtárakat, amiktől függenek. Nézd meg, hogy a /etc/inittab állománybeli meghívásuk helyes-e. Ha szokatlan üzeneteket kapsz a getty-től, az jelentheti azt, hogy hibásan hívod a /etc/inittab-ból. A getty paraméterei változnak, még az agetty különböző verziói között is számos inkompatibilis hívásformát jeleztek.

Ha megkapod a bejelentkező promptot és érvényes felhasználói nevet adsz meg, de a rendszer azonnal egy újabb felhasználói név megadását kéri, a probléma valószínűleg a PAM-mal vagy az NSS-el lesz. Nézd meg a PAM and NSS fejezetet. A probléma származhat még abból is, hogy shadow jelszavakat használsz, de nem másoltad át az indítólemezedre a /etc/shadow állományt.

Ha megpróbálsz néhány futtatható állományt lefuttatni, mint például a df parancsot, ami megtalálható a mentő lemezeden, és ilyen üzenetet kapsz: df: not found(a df nem található), két dolgot nézz meg: (1) Győződj meg róla, hogy a binárist tartalmazó alkönyvtár szerepel a PATH elérési útvonalban, és (2) Győződj meg róla, hogy a program számára szükséges eljáráskönyvtárak (és betöltők) rendelkezésedre állnak-e.

8. Vegyes témakörök.

8.1 A gyökér állományrendszer méretének csökkentése

Előfordul, hogy a gyökér állományrendszer túl nagy, hogy ráférjen egy lemezre, még tömörítés után is. Létezik néhány módszer az állományrendszer méretének csökkentésére, amit a hatékonyság szerint csökkenő sorrendben bemutatunk:

Lemez sűrűségének növelése

Alapértelmezés szerint a formázott floppy lemezek 1440K méretűek, de nagyobb sűrűségre is formázhatók. Az fdformat a következő formátumokra képes a lemezeid megformázni: 1600, 1680, 1722, 1743, 1760, 1840, és 1920. A legtöbb 1440K-s meghajtó támogatja az 1722K-t, ezért ez az indítólemezek által használt formátum. Nézd meg a fdformat manuált és a /usr/src/linux/Documentation/devices.txt-t.

Parancsértelmező cseréje

A Linux néhány népszerű parancsértelmezője, mint a bash és a tcsh, nagy és sok eljáráskönyvtárat igényel. Léteznek könnyű súlyú alternatív parancsértelmezők, mint az ash, lsh, kiss és a smash, amik jóval kisebbek és nagyon kevés (vagy egy sem) eljáráskönyvtárat idényelnek. Ezek legtöbbjét az következő címen találod: http://metalab.unc.edu/pub/Linux/system/shells/ Győződj meg róla, hogy az általad használni kívánt parancsértelmező képes-e futtatni az összes rc-beli állományt, amit csatolni szeretnél az indítólemezedre.

Eljáráskönyvtárak és binárisok megnyirbálása

A legtöbb eljáráskönyvtár és bináris nincs megnyirbálva (debug információt is tartalmaznak). A 'file' programot lefuttatva ezekre az állományokra megtudod, hogy 'not stripped (nincs megnyírbálva)', vagy mégis. Amikor binárisokat másolsz a gyökér állományrendszeredre, jó ötleg a következőket használnod:

        objcopy --strip-all HONNAN HOVÁ

Amikor eljáráskönyvtárt másolsz, használd a következőt:

        objcopy --strip-debug HONNAN HOVÁ

Nem-kritikus állományok eszközlemezre másolása

Ha valamely binárisra nincs szükség közvetlenül a rendszerindításkor, vagy a bejelentkezéskor, átteheted az eszközlemezre. Nézd meg a Building a utility disk fejezetet a részletekért. Elgondolkodhatsz a modulok eszközlemezre való áthelyezéséről is.

8.2 Nem memórialemez gyökér állományrendszerek.

A Building a root filesystem fejezet megmutatta, hogy hogyan készíthetsz tömörített gyökér állományrendszert, ami a rendszer indulásakor a memórialemezre töltődik. Sok előnye van ennek a technikának, így előszeretettel használják. Azonban néhány kevés memóriával rendelkező rendszer esetén nincs elegendő RAM ehhez, így közvetlenül a lemezről kell használnia a beillesztett gyökér állományrendszert.

Az ilyen állományrendszereket pillanatnyilag könnyebb elkészíteni, mint a tömörített gyökér állományrendszereket, mert közvetlenül a lemezen elkészíthetők, nem kell más eszközt használni, és nem kell őket tömöríteni. Megmutatjuk, hogy ennek elkészítése hol különbözik a korábban ismertetett eljárástól. Ha ezt választod, tartsd észben, hogy sokkal kevesebb helyet tudsz majd használni.

  1. Számold ki, hogy mennyi helyed lesz a gyökér állományok számára. Ha egy indító/gyökér lemezt készítesz, rá kell hogy férjen egyetlen lemezre a kernel összzes blokkja és a gyökér állományrendszer összes blokkja.
  2. Használd az mke2fs-t, hogy megfelelő méretű gyökér állományrendszert készíthess a lemezen.
  3. Méretezd az állományrendszert a fentiek szerint.
  4. Ha készen vagy vele, csatold le az állományrendszert, és másold át egy lemez állományba, de ne tömörítsd be.
  5. Vidd át a kernelt a fent leírt módon a lemezre. Amikor elkészültél a memórialemez szó kiszámolásával, állítsd a 14. bitet nullára, hogy jelezd a rendszer számára, nem kell a gyökér állományrendszert memórialemezre tölteni. Futtasd a rdev's parancsot a fent leírt módon.
  6. Vidd át a gyökér állományrendszert, mint korábban.

Több gyorsítást eszközölhetsz. Ha két-lemezes készletet készítesz, az egész gyökér állományrendszert elkészítheted a második lemezen, nem kell átmozgatnod merevlemezre lemez állományba, majd vissza. Ezenkívül ha egylemezes indító/gyökér lemezt készítesz és LILO-t használsz, készíthetsz a lemezen egyetlen állományrendszert, mely tartalmazza a kernelt, a LILO állományait és a gyökér állományokat, majd egyszerűen lefuttatod a LILO-t az utolsó lépésben.

8.3 Eszközlemez készítése.

Eszközlemezt készíteni viszonylag könnyű -- egyszerűen készíts állományrendszert egy formázott lemezre, majd másolj állományokat rá. Ahhoz, hogy indítólemezzel használhasd, illeszd be kézzel a rendszer elindulása után.

A fentebb említett utasításokban említettük, hogy az eszközlemezt a /usr-be illesztve is használhatjuk. Ebben az esetben a binárisokat a /bin alkönyvtárba kell tenni az eszköz lemezeden, hogy a path-ban levő /usr/bin megtalálja őket. Egyéb az eszköz lemezen elhelyezett binárisokhoz szükséges eljáráskönyvtárakat a /lib alkönyvtárba kell tenned az eszközlemezen.

Több fontos dolgot észben kell tartanod, amikor eszközlemezt tervezel:

  1. Ne tegyél kritikus rendszer binárisokat és eljáráskönyvtárakat az eszközlemezre, mert nem lesz beilleszthető, míg a rendszer teljesen el nem indult.
  2. Nem tudsz egyszerre floppy lemez és floppy szalag meghajtót használni. Ez azt jelenti, hogyha floppy szalag meghajtód van, nem fogsz tudni hozzáférni, amíg az eszköz lemezed be van illesztve.
  3. Az eszközlemezen lévő állományok hozzáférése lassú lesz.

A Sample utility disk directory listing függelékben találsz példát az eszközlemezre. Íme néhány hasznos ötlet az állományokat illetően: lemez vizsgáló és manipuláló programok (format, fdisk), állományrendszer vizsgáló és manipuláló programok (mke2fs, fsck, debugfs, isofs.o), kicsi szövegszerkesztő (elvis, jove), tömörítő és archiváló eszközök (gzip, tar, cpio, afio), szalag eszközök (mt, tob, taper), kommunikációs eszközök (ppp.o, slip.o, minicom) és eszközkezelő szerszámok (setserial, mknod).

9. Hogy csinálják a profik?

Valószínűleg észrevetted már, hogy a fontosabb disztribúciókhoz mellékelt indítólemezek, mint például a Slackware, RedHat vagy Debian, sokkal kidolgozottabbak, mint ahogy ebben a dokumentációban bemutatjuk. A professzionális disztribúciós lemezek néhány itt nem említett alapelven nyugszik, és több különböző trükköt is bevetnek, mert különleges szükségleteik vannak. Előszöris, széles hardver választékon kell üzemelniük, tehát együtt kell működnie a felhasználóval és különböző eszköz meghajtókat kell betöltenie. Másodszor fel kell készíteni őket különböző telepítési lehetőségepkre, különböző fokú automatizálással. Végül a disztribúciós lemezeket gyakran mentő lemez képességekkel is felruházzák.

Néhány indítólemezt initrd (initial ramdisk: kezdeti memórialemez) funkcióval látnak el. Ezt a képességet a 2.0.x-es kernelverzió környékén vezették be, és lehetővé teszi a kernel két fázisú betöltését. Amikor először elindul a kernel, betölti a keztedi memórialemezt image-t az indítólemezről. Ez a kerdeti memórialemez a gyökérlemez, ami olyan programokat tartalmaz, amik a valódi gyökér állományrendszer betöltődése előtt lefutnak. Ezek a programok gyakran a környezetet vizsgálják, és/vagy megkérdezik a felhasználók különböző indító lehetőségekről, mint például melyik eszközről töltse be a valódi gyökér állományrendszert. Ezek a programok töltik be általában a kernelbe be nem épített modulokat. Amikor a kezdeti program kilép, a kernel betölti a valódi gyökér állományrendszer, és hagyományos módon folytatódik a rendszerindításl. Az initrd-vel kapcsolatos részletesebb információkért nézd meg a /usr/src/linux/Documentation/initrd.txt és a ftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/initrd-example.tgz címeket.

A következő összefoglalja, hogyan működnek a különböző disztribúciók telepítő lemezei, az állományrendszer vizsgálatára és/vagy forráskódra alapozva. Nem garantáljuk, hogy tökéletesen teljes információval szolgálhatunk, vagy hogy nem változtak a legutóbbi verzióváltás óta.

A Slackware (v.3.1) nyíltan LILO-t használ, hasonlóan a Transferring the kernel with LILO fejezetben bemutatotthoz. A Slackware indítólemez indításkor a LILO message paraméterét használva egy ``Welcome to the Slackware Linux bootkernel disk!'' üzenettel fogad (Üdvözöllek a Slackware Linux kernelindító lemezén!). Ezzel hívja fel a felhasználót arra, hogy írja be szükség esetén az indító paramétereket. Miután elindult a rendszer, a második lemezről betöltődik a gyökér állományrendszer. A felhasználó meghív egy setup szkriptet, amivel el is kezdődik a telepítés. A Slackware nem moduláris kernelt használ, hanem több különböző kernelt használ. A felhsználónak kell kiválasztania, melyik az a kernel, ami a lehető legjobban illeszkedik a rendszeréhez.

A RedHat (v.4.0) szintén LILO alapú indítást használ. Az első lemezről betölt egy tömörített memórialemezt, ami egyedi init programot futtat. Ez a program lekérdezi a meghajtóprogramokat, majd szükség esetén egyéb állományokat tölt be a kiegészítő lemezről.

A Debian (v.1.3) valószínűleg a legkifinomultabb telepítő lemezkészlet. A SYSLINUX betöltőt használja különböző betöltő kapcsolókkal, majd az initrd-t használja, hogy végigvezesse a felhasználót a telepítés lépésein. Úgy tűnik, hogy egyaránt egyedi init-et és egyedi parancsértelmezőt használ.

10. Gyakran ismételt kérdések (GYIK) listája

K. Elindítom a rendszert az indító/gyökér lemezemről, de semmi nem történik. Mit tegyek?

Lásd a Troubleshooting fejezetet feljebb.

K. Hogy működik a Slackware/Debian/RedHat indítólemez?

Lásd a What the pros do fejezetet feljebb.

K. Hogyan készíthetek XYZ eszközmeghajtóval indítólemezt?

A legegyszerűbb módja, hogy megszerzel egy Slackware kernelt a legközelebbi Slackware tükör szerverről. A Slackware kernelek általános kernelek, amikbe megpróbálják az összes létező eszközt belepakolni, így ha SCSI vagy IDE vezérlőd van, nagy az esélye, hogy a Slackware kernelben benne lesz az ahhoz szükséges meghajtóprogram.

Menj az a1 alkönyvtárba, és válaszd ki az IDE vagy SCSI kernelt attól függően, hogy milyen vezérlőd van. Nézd meg az xxxxkern.cfg állományt, hogy a kiválaszott kernel milyen eszközmeghajtókat tartalmaz. Ha az általad használni kívánt eszköz szerepel a listában, az adott kernellel indulnia kell a gépednek. Töltsd le az xxxxkern.tgz állományt, másold át a lemezedre az indítólemez készítésével foglalkozó fejezetben leírtak szerint.

Le kell ellenőrizned a gyökér eszközödet a kernelben a következő paranccsal:

        rdev zImage

Az rdev ki fogja írni a kerneled aktuális indító eszközét. Ha ez nem egyezik meg az általad kívánt gyökér eszközzel, használd az rdev parancsot, hogy megváltoztasd. Például az a kernel, amit próbáltam, /dev/sda2-re volt állítva, de az én SCSI gyökér partícióm a /dev/sda8. Ahhoz, hogy gyökér lemezként használhassam, a következő parancsot kell kiadnom:

        rdev zImage /dev/fd0

Ha tudni szeretned, hogy hogyan kell egy Slackware gyökér lemezt beállítani, az már kívül esik e HOGYAN keretein, javaslom, hogy nézd meg a Linux Telepítő Kézikönyvet, vagy szerezz be egy Slackware disztribúciót. Nézd meg a ``Referenciák'' fejezetet.

K. Hogy frissíthetem az indítólemezem a legfrisebb kernellel?

Állományrendszer használata nélkül egyszerűen másold a dd, vagy indító/gyökér lemez esetén a cp paranccsal a kernelt az indítólemezedre. Konzultálj e HOGYAN ``Indító'' fejezetével az indítólemez készítésének részleteiért. A leírás egyaránt érvényes a kernel frissítésére is.

K. Hogy frissíthetem a gyökér lemezem állományait újakkal?

A legegyszerűbb módja, hogy visszamásolod a gyökérlemezed állományrendszerét az általad használt ESZKÖZRE ( lásd feljebb a Creating the filesystem fejezetet). Ezután illeszd be az állományrendszert és végezd el a változtatásokat. Emlékezned kell arra, hogy honnan indul a gyökér állományrendszered és hány blokkot foglal el:

        dd if=/dev/fd0 bs=1k skip=ROOTBEGIN count=BLOCKS | gunzip > DEVICE
        mount -t ext2 DEVICE /mnt

Miután elvégezted a változtatásokat, folytasd, mint korábban ( Wrapping it up fejezet) és tedd vissza a gyökér állományrendszeredet a lemezre. Nem kell újra átvinned a kernelt, illetve újraszámolni a memórialemez szót, ha nem változtattál az új gyökér állományrendszer kezdőpozícióján.

K. Hogy távolíthatom el a LILO-t úgy, hogy újra DOS-t indíthassak?

Ez nem kifejezetten Indítólemez probléma, de gyakran kérdezik. Linux alatt futtasd a

        /sbin/lilo -u

parancsot.Használhatod a dd utasítást is, hogy visszamásold a LILO által elmentett indító szektort. Tanulmányozd a LILO dokumentációját, hogy ezt hogyan teheted meg.

DOS és Windows alatt használhatod a

        FDISK /MBR

utasítást. Az MBR a Master Boot Record-ot jelenti (Mester Indító Rekord), ami kicseréli az indító szektort egy tiszta DOS-ossal, anélkül, hogy belepiszkálna a partíciós táblába. Néhányan nem teljesen értenek ezzel egyet, de még a LILO készítője, Werner Almesberger is ajánlja. Könnyű, és működik.

Q. Hogy indítsak, ha elvesztettem a kernelem és az indító lemezem?

Ha nincs kéznél indító lemez, a legegyszerűbb valószínűleg egy Slackware kernel beszerzése a rendszerednek megfelelő lemezvezérlő típussal (IDE vagy SCSI), ahogy az a ``Hogyan készítsek indítólemezt XXX eszközzel'' kérdésnél is olvashattad. Ezután el tudod indítani a géped ezzel a kernellel, és kijavíthatod a felmerült problémákat.

A kernelben, amit megszerzel előfordulhat, hogy nem a neked megfelelően van beállítva a gyökér eszköz lemezed típusához és a partícióhoz. Például a Slackware általános SCSI kernelének gyökér eszköze a /dev/sda2 eszközre mutat, holott az én gyökér Linux partícióm /dev/sda8-ként látszik. Ebben az esetben a kernel gyökér eszközét meg kell változtatni.

Még akkor is megtudod változtatni a kernel gyökér eszköz és a memórialemez beállításait, ha csak egy kerneled van és valami más operációs rendszered, mint a DOS például.

Az rdev úgy változtatja a kernel beállításait, hogy fix eltolásoknál megváltoztatja a kernel állomány értékét, így egy hexa szerkesztővel te is megteheted ugyanezt, ha van kéznél valamilyen működő operációs rendszer alatti szerkesző -- például a DOS alatti Norton Utilities Disk Editor. Ekkor meg kell nézned az összes értéket, majd szükség esetén meg kell változtatnod az itt szereplő eltolások alapján:

HEX     DEC  LEÍRÁS
0x01F8  504  A MEMÓRIALEMEZ szó alacsony bájtja
0x01F9  505  A MEMÓRIALEMEZ szó magas bájtja
0x01FC  508  Gyökér eszköz minor száma - lásd alább
0X01FD  509  Gyökér eszköz major száma - lásd alább

A memórialemez szót fejlebb, a Setting the ramdisk word fejezetben tárgyaltuk.

A major és minor eszköz számokat arra az eszközre mutatva kell beállítanod, ahova szeretnéd a gyökér állományrendszered beillesztését. Néhány hasznos érték, hogy választhass:

ESZKÖZ          MAJOR MINOR
/dev/fd0            2     0   Első lemezmeghajtó
/dev/hda1           3     1   1. partíció az 1. IDE eszközön
/dev/sda1           8     1   1. partíció az 1. SCSI eszközön
/dev/sda8           8     8   8. partíció az 1. SCSI eszközön

Ha beállítottad ezeket az értékeket, kiírhatod az állományt akár a Norton Utilities Disk Editort, akár a rawrite.exe programot használva. Ezt a programot minden disztribúció tartalmazza. Ez egy DOS program, ami a lemezre ``nyersen'' írja ki az állományt az indító szektortól kezdve, nem a lemezen található állományrendszerre. Ha Norton Utilies-t használsz, a lemez elején kezdődő fizikai lemezre kell kiírnod az állományt.

K.Hogyan készíthetnék extra másolatot az indító/gyökér lemezeimről?

Mivel a mágneses média bizonyos idő után lemágneseződik, célszerű a biztonsági lemezedről több másolatot tartanod, felkészülve arra az esetre, ha az eredeti lemezed olvashatatlanná válna.

A lemezek másolásának legegyszerűbb módja, beleértve az indítható és az eszköz lemezeket is, ha a dd paranccsal átmásolod az eredeti lemez tartalmát egy a merevlemezeden lévő állományba, majd ugyanezzel az utasítással visszamásolod az új lemezre. Jegyezzük meg, hogy nem kell, és nem is célszerű beillesztened a lemezeket a rendszerbe, mert a dd nyers eszköz interfészt használ.

Az eredeti lemásolásához a

        dd if=ESZKÖZNEVE of=ÁLLOMÁNYNEVE
        ahol az ESZKÖZNEVE a lemezmeghajtód eszközneve
        és az ÁLLOMÁNYNEVE a (merevlemezen levő) kimeneti állomány neve
utasítást használd.

Ha elhagyod a count paramétert, a dd az egész lemezt átmásolja (nagy sűrűségű lemez esetén 2880 blokk).

A kész állomány új lemezre való visszamásolásához helyezd be az új lemezt, és fordítsd meg az utasítást:

        dd if=ÁLLOMÁNYNEVE of=ESZKÖZNEVE

Jegyezzük meg, hogy a fenti utasítássorozat az feltételezi, hogy csak egyetlen lemezmeghajtód van. Ha két ugyanolyan típusú lemezmeghajtód van, akkor használhatod a következő utasítást a közvetlen lemezről-lemezre másoláshoz:

        dd if=/dev/fd0 of=/dev/fd1

K. Hogyan indíthatnám el a rendszerem a "ahaxxxx=nn,nn,nn" minden induláskor történő beírása nélkül?

Ahol a lemez eszközt nem lehet automatikusan felismertetni a rendszerrel, el kell látni a kernelt az eszköz paramétereinek sztringjével, mint pl.:

        aha152x=0x340,11,3,1
Ezt a paramétert többféleképpen is át lehet adni a LILO-nak:

Például egy példa parancssor, ami a fenti paraméter sztringer használja, így nézne ki:

        zImage  aha152x=0x340,11,3,1 root=/dev/sda1 lock

Ez mindig átadná a kernelnek a paramétersztringet, és megkérné a kernelt, hogy állítsa be a gyökér eszköznek a /dev/sda1-t, és mentse az egész parancssort a későbbi indításokra.

Egy példa az APPEND sorra:

        APPEND = "aha152x=0x340,11,3,1"

Jegyezzük meg, hogy a paramétersztringet NEM szabad idézőjelbe tenni a parancssor esetén, de az APPEND sornál muszáj idézőjelet használni.

Jegyezzük meg, hogy a ahhoz, hogy a paramétersztring működjön, a kernelnek tartalmaznia kell a megadott lemeztípus eszközmeghajtóját. Ha nem tartalmazza, semmi sem fog a paramétersztringre hallgatni, és újra kell fordítanod a kernelt a megfelelő eszközmeghajtóval, ha működésre szeretnéd bírni. A kernel újrafordításának részleteiért lépj be az /usr/src/linux alkönyvtárba, és olvasd el a README állományt, majd olvasd el a Linux GYIK-et és a Telepítés HOGYAN-t. Létezik még egy lehetséges alternatíva is, szerezz egy kifejezetten ahhoz a lemez típushoz készült kernelt, és telepítsd.

Az olvasók figyelmét mindig felhívjuk a LILO dokumentáció alapos áttanulmányozására, mielőtt LILO telepítéssel kísérletezgetnének. Az indító leíró elővigyázatlan használata tönkreteheti a partíciókat.

K. Bekapcsoláskor "A: cannot execute B" hibaüzenetet kapok. Miért?

Több esetben előfordulhat, hogy különböző eszközökben program neveket bedrótoztak. Ezek az esetek nem jönnek elő mindenütt, de megmagyarázza, hogy néhány végrehajtható állomány miért nem található meg a rendszereden, még ha ott is látod. Megnézheted, hogy be van-e drótozva egy adott programba egy másik, ha kiadod a strings parancsot, és átküldöd csövön a grep-nek.

A bedrótozás tipikus példái:

A probléma javításához vagy mozgasd a programokat a megfelelő alkönyvtárba, vagy változtasd meg a konfigurációs állományokat (pl. inittab), hogy a helyes alkönyvtárra mutassanak. Ha kétségeid támadnának, tedd a programokat ugyanolyan alkönyvtárba, mint a merevlemezeden vannak, és használd ugyanazt az inittab és /etc/rc.d állományt, ami a merevlemezeden található.

K. A kernelembe belefordítottam a memórialemez támogatást, de 0K-val inicializálja magát.

Amikor ez történik, a megjelenő kernelüzenet valahogy így néz ki a kernel indulásakor:

        Ramdisk driver initialized : 16 ramdisks of 0K size

Ez valószínűleg azért van, mert a méretét 0-ra állítod kernel paraméterekkel az indulás idejekor. Ez valószínűleg egy elnézett LILO paraméter miatt lehetséges:

ramdisk= 0

Ezt néhány korábbi disztribúció LILO példa konfigurációs állománya tartalmazza,és minden korábbi kernel beállítást felülbírál. Ha van ilyen sorod, távolítsd el.

Jegyezzük meg, hogy ha 0K-ra állított memórialemezt próbálsz meg használni, a működés kiszámíthatatlanná válik, és kernel pánikor okozhat.

11. Erőforrások és mutatók.

Ha újraírsz egy csomagot, mindig a legfrisebb változatot szerezd be, ha nincs jó indokod másként cselekedni.

11.1 Előre elkészített indítólemezek.

Ezek a disztribúciós lemezek forrásai. Légyszíves tükör szervert használj a letöltéskor, hogy csökkentsd ezen gépek terheltségét.

A disztribúciós lemezek mellett a következő mentő lemezeket használhatod. Ha máshogy nem rendelkeztek, a http://metalab.unc.edu/pub/Linux/system/recovery/!INDEX.html alkönyvtárban megtalálod őket.

11.2 Mentő csomagok.

Jónéhány mentő lemez készítésére alkalmas csomagot találsz a metalab.unc.edu címen. Ezekkel a csomagokkal megadod, hogy mely állományokat szeretnéd csatolni, és a szoftver automatizálja (változó mélységben) az indítólemez készítését. Nézd meg a http://metalab.unc.edu/pub/Linux/system/recovery/!INDEX.html címet további információkért. Gondosan ellenőrizd az állományok dátumát -- néhány ilyen csomagot jóideje nem frissítettek, és nem támogatja a memóriába töltődő tömörített gyökér állományrendszer készítését. A legjobb tudomásunk szerint csak a Yard csomag tudja ezt.

11.3 Graham Chapman parancsértelmező szkriptje

Graham Chapman készített egy szkriptcsomagot, ami hasznos példa lehet az indítólemezek készítésére. Eme HOGYAN előző verziójának függelékében szerepeltek a szkriptek, de átkerültek az alábbi honlapra:

http://www.zeta.org.au/~grahamc/linux.html

Kényelmesnek találhatod ezen szkriptek használatát, és ha így van, gondosan olvasd el az utasításokat -- például, ha rossz swap eszközt választasz, úgy találnád, hogy a gyökér állományrendszered teljesen és véglegesen letörlődött. Ügyelj rá, hogy pontosan konfigurálod, mielőtt használod!

11.4 LILO -- a Linux betöltő.

Werner Almesberger írta. Nagyon jó indító betöltő, a dokumentációja az indító szektor tartalmáról és az indulási folyamat korai fázisáról is tartalmaz tartalmaz információkat.

Ftp-vel megtalálod a ftp://tsx-11.mit.edu/pub/linux/packages/lilo/ címen, valamint a Metalab-on és a tükrözésein.

11.5 Linux GYIK és HOGYANok.

Több forrásból is beszerezheted őket. Nézd meg a news.answers és a comp.os.linux.announce usenet hírcsoportokat.

A GYIK-et megtalálod a http://metalab.unc.edu/pub/Linux/docs/faqs/linux-faq címent, és a HOGYAN-okat a http://metalab.unc.edu/pub/Linux/docs/HOWTO címen.

A Linux legtöbb dokumentációját megtalálod a A Linux Dokumentációs Project honlapja címen.

Ha végképp kétségbeestél, küldj levelet a mail-server@rtfm.mit.edu címre, a levél törzse legyen ``help'', majd kövesd a kapott utasításokat.

11.6 Memórialemez használat.

Nagyon jó leírást találsz a Linux kernel mellett található dokumentációban az új memórialemez-kód működéséről. Lásd: /usr/src/linux/Documentation/ramdisk.txt. Ezt Paul Gortmaker írta, és tartalmaz egy fejezetet a tömörített memórialemezekről.

11.7 A Linux betöltési folyamata.

A Linux betöltő folyamatának részletesebb ismertetéséhez íme néhány kiindulási pont:

12. LILO indulási hibakódok.

A Usenet-en gyakran tesznek fel ilyen hibákkal kapcsolatos kérdéseket, tehát nyilvános szolgáltatásként csatoljuk őket. Ez az összefoglaló a http://metalab.unc.edu/pub/Linux/system/boot/lilo/lilo-u-21.ps.gz címen található Werner Almsberger's LILO User Documentation-ból származik.

Amikor a LILO betölti magát, a ``LILO'' szót jelzi ki. Minden kiírt betű néhány specifikus művelet végrehajtása előtt vagy után kerül kiírásra. Ha a LILO hibázik valahol, a kiírt betűk segítenek a probléma azonosításában.

(semmi)

A LILO egyetlen részét sem sikerült betölteni. A LILO vagy nincs feltelepítve, vagy nem aktív az a partíció, amire telepítve lett.

L

Az indító betöltő betöltődött, és elindult, de nem tudta betölteni a második szintű indító betöltőt. A kétszámjegyű hibakód jelzi a probléma típusát (lásd még a ``Lemez hibakódokat''). Ez a feltétel általában médium hibára utal, vagy geometria eltérésre (például hibás lemez paraméterek).

LI

Az indító betöltő betöltötte a második szintű indító betöltőt, de nem tudta végrehajtani. Ezt vagy a geometria eltérése okozza, vagy a /boot/boot.b elmozgatása a map telepítő futtatása nélkül.

LIL

Az indító betöltő elindult, de nem tudta betölteni a leíró táblát a map állományból. Ezt általában a médium hibája okozza, vagy geometriai eltérés.

LIL?

Az indító betöltő második fázisa hibás címre töltődött. Ezt tipikusan hibás geometria okozza, vagy a /boot/boot.b elmozgatása a map telepítő futtatása nélkül.

LIL-

A leíró tábla hibás. Ez lehet egyrészt a geometria hibája, vagy a /boot/map elmozgatásaa map telepítő futtatása nélkül.

LILO

All parts of LILO have been successfully loaded.

If the BIOS signals an error when LILO is trying to load a boot image, the respective error code is displayed. These codes range from 0x00 through 0xbb. See the LILO User Guide for an explanation of these.

13. Példa egy gyökérlemez könyvtárlistájára.

Íme egy példa a gyökér állományrendszerre és egy eszközlemezre.

Gyökér könyvtár:
drwx--x--x   2 root     root         1024 Nov  1 15:39 bin
drwx--x--x   2 root     root         4096 Nov  1 15:39 dev
drwx--x--x   3 root     root         1024 Nov  1 15:39 etc
drwx--x--x   4 root     root         1024 Nov  1 15:39 lib
drwx--x--x   5 root     root         1024 Nov  1 15:39 mnt
drwx--x--x   2 root     root         1024 Nov  1 15:39 proc
drwx--x--x   2 root     root         1024 Nov  1 15:39 root
drwx--x--x   2 root     root         1024 Nov  1 15:39 sbin
drwx--x--x   2 root     root         1024 Nov  1 15:39 tmp
drwx--x--x   7 root     root         1024 Nov  1 15:39 usr
drwx--x--x   5 root     root         1024 Nov  1 15:39 var

/bin:
-rwx--x--x   1 root     root        62660 Nov  1 15:39 ash
-rwx--x--x   1 root     root         9032 Nov  1 15:39 cat
-rwx--x--x   1 root     root        10276 Nov  1 15:39 chmod
-rwx--x--x   1 root     root         9592 Nov  1 15:39 chown
-rwx--x--x   1 root     root        23124 Nov  1 15:39 cp
-rwx--x--x   1 root     root        23028 Nov  1 15:39 date
-rwx--x--x   1 root     root        14052 Nov  1 15:39 dd
-rwx--x--x   1 root     root        14144 Nov  1 15:39 df
-rwx--x--x   1 root     root        69444 Nov  1 15:39 egrep
-rwx--x--x   1 root     root          395 Nov  1 15:39 false
-rwx--x--x   1 root     root        69444 Nov  1 15:39 fgrep
-rwx--x--x   1 root     root        69444 Nov  1 15:39 grep
-rwx--x--x   3 root     root        45436 Nov  1 15:39 gunzip
-rwx--x--x   3 root     root        45436 Nov  1 15:39 gzip
-rwx--x--x   1 root     root         8008 Nov  1 15:39 hostname
-rwx--x--x   1 root     root        12736 Nov  1 15:39 ln
-rws--x--x   1 root     root        15284 Nov  1 15:39 login
-rwx--x--x   1 root     root        29308 Nov  1 15:39 ls
-rwx--x--x   1 root     root         8268 Nov  1 15:39 mkdir
-rwx--x--x   1 root     root         8920 Nov  1 15:39 mknod
-rwx--x--x   1 root     root        24836 Nov  1 15:39 more
-rws--x--x   1 root     root        37640 Nov  1 15:39 mount
-rwx--x--x   1 root     root        12240 Nov  1 15:39 mt
-rwx--x--x   1 root     root        12932 Nov  1 15:39 mv
-r-x--x--x   1 root     root        12324 Nov  1 15:39 ps
-rwx--x--x   1 root     root         5388 Nov  1 15:39 pwd
-rwx--x--x   1 root     root        10092 Nov  1 15:39 rm
lrwxrwxrwx   1 root     root            3 Nov  1 15:39 sh -> ash
-rwx--x--x   1 root     root        25296 Nov  1 15:39 stty
-rws--x--x   1 root     root        12648 Nov  1 15:39 su
-rwx--x--x   1 root     root         4444 Nov  1 15:39 sync
-rwx--x--x   1 root     root       110668 Nov  1 15:39 tar
-rwx--x--x   1 root     root        19712 Nov  1 15:39 touch
-rwx--x--x   1 root     root          395 Nov  1 15:39 true
-rws--x--x   1 root     root        19084 Nov  1 15:39 umount
-rwx--x--x   1 root     root         5368 Nov  1 15:39 uname
-rwx--x--x   3 root     root        45436 Nov  1 15:39 zcat

/dev:
lrwxrwxrwx   1 root     root            6 Nov  1 15:39 cdrom -> cdu31a
brw-rw-r--   1 root     root      15,   0 May  5  1998 cdu31a
crw-------   1 root     root       4,   0 Nov  1 15:29 console
crw-rw-rw-   1 root     uucp       5,  64 Sep  9 19:46 cua0
crw-rw-rw-   1 root     uucp       5,  65 May  5  1998 cua1
crw-rw-rw-   1 root     uucp       5,  66 May  5  1998 cua2
crw-rw-rw-   1 root     uucp       5,  67 May  5  1998 cua3
brw-rw----   1 root     floppy     2,   0 Aug  8 13:54 fd0
brw-rw----   1 root     floppy     2,  36 Aug  8 13:54 fd0CompaQ
brw-rw----   1 root     floppy     2,  84 Aug  8 13:55 fd0D1040
brw-rw----   1 root     floppy     2,  88 Aug  8 13:55 fd0D1120
brw-rw----   1 root     floppy     2,  12 Aug  8 13:54 fd0D360
brw-rw----   1 root     floppy     2,  16 Aug  8 13:54 fd0D720
brw-rw----   1 root     floppy     2, 120 Aug  8 13:55 fd0D800
brw-rw----   1 root     floppy     2,  32 Aug  8 13:54 fd0E2880
brw-rw----   1 root     floppy     2, 104 Aug  8 13:55 fd0E3200
brw-rw----   1 root     floppy     2, 108 Aug  8 13:55 fd0E3520
brw-rw----   1 root     floppy     2, 112 Aug  8 13:55 fd0E3840
brw-rw----   1 root     floppy     2,  28 Aug  8 13:54 fd0H1440
brw-rw----   1 root     floppy     2, 124 Aug  8 13:55 fd0H1600
brw-rw----   1 root     floppy     2,  44 Aug  8 13:55 fd0H1680
brw-rw----   1 root     floppy     2,  60 Aug  8 13:55 fd0H1722
brw-rw----   1 root     floppy     2,  76 Aug  8 13:55 fd0H1743
brw-rw----   1 root     floppy     2,  96 Aug  8 13:55 fd0H1760
brw-rw----   1 root     floppy     2, 116 Aug  8 13:55 fd0H1840
brw-rw----   1 root     floppy     2, 100 Aug  8 13:55 fd0H1920
lrwxrwxrwx   1 root     root            7 Nov  1 15:39 fd0H360 -> fd0D360
lrwxrwxrwx   1 root     root            7 Nov  1 15:39 fd0H720 -> fd0D720
brw-rw----   1 root     floppy     2,  52 Aug  8 13:55 fd0H820
brw-rw----   1 root     floppy     2,  68 Aug  8 13:55 fd0H830
brw-rw----   1 root     floppy     2,   4 Aug  8 13:54 fd0d360
brw-rw----   1 root     floppy     2,   8 Aug  8 13:54 fd0h1200
brw-rw----   1 root     floppy     2,  40 Aug  8 13:54 fd0h1440
brw-rw----   1 root     floppy     2,  56 Aug  8 13:55 fd0h1476
brw-rw----   1 root     floppy     2,  72 Aug  8 13:55 fd0h1494
brw-rw----   1 root     floppy     2,  92 Aug  8 13:55 fd0h1600
brw-rw----   1 root     floppy     2,  20 Aug  8 13:54 fd0h360
brw-rw----   1 root     floppy     2,  48 Aug  8 13:55 fd0h410
brw-rw----   1 root     floppy     2,  64 Aug  8 13:55 fd0h420
brw-rw----   1 root     floppy     2,  24 Aug  8 13:54 fd0h720
brw-rw----   1 root     floppy     2,  80 Aug  8 13:55 fd0h880
brw-rw----   1 root     disk       3,   0 May  5  1998 hda
brw-rw----   1 root     disk       3,   1 May  5  1998 hda1
brw-rw----   1 root     disk       3,   2 May  5  1998 hda2
brw-rw----   1 root     disk       3,   3 May  5  1998 hda3
brw-rw----   1 root     disk       3,   4 May  5  1998 hda4
brw-rw----   1 root     disk       3,   5 May  5  1998 hda5
brw-rw----   1 root     disk       3,   6 May  5  1998 hda6
brw-rw----   1 root     disk       3,  64 May  5  1998 hdb
brw-rw----   1 root     disk       3,  65 May  5  1998 hdb1
brw-rw----   1 root     disk       3,  66 May  5  1998 hdb2
brw-rw----   1 root     disk       3,  67 May  5  1998 hdb3
brw-rw----   1 root     disk       3,  68 May  5  1998 hdb4
brw-rw----   1 root     disk       3,  69 May  5  1998 hdb5
brw-rw----   1 root     disk       3,  70 May  5  1998 hdb6
crw-r-----   1 root     kmem       1,   2 May  5  1998 kmem
crw-r-----   1 root     kmem       1,   1 May  5  1998 mem
lrwxrwxrwx   1 root     root           12 Nov  1 15:39 modem -> ../dev/ttyS1
lrwxrwxrwx   1 root     root           12 Nov  1 15:39 mouse -> ../dev/psaux
crw-rw-rw-   1 root     root       1,   3 May  5  1998 null
crwxrwxrwx   1 root     root      10,   1 Oct  5 20:22 psaux
brw-r-----   1 root     disk       1,   1 May  5  1998 ram
brw-rw----   1 root     disk       1,   0 May  5  1998 ram0
brw-rw----   1 root     disk       1,   1 May  5  1998 ram1
brw-rw----   1 root     disk       1,   2 May  5  1998 ram2
brw-rw----   1 root     disk       1,   3 May  5  1998 ram3
brw-rw----   1 root     disk       1,   4 May  5  1998 ram4
brw-rw----   1 root     disk       1,   5 May  5  1998 ram5
brw-rw----   1 root     disk       1,   6 May  5  1998 ram6
brw-rw----   1 root     disk       1,   7 May  5  1998 ram7
brw-rw----   1 root     disk       1,   8 May  5  1998 ram8
brw-rw----   1 root     disk       1,   9 May  5  1998 ram9
lrwxrwxrwx   1 root     root            4 Nov  1 15:39 ramdisk -> ram0
***  Csak az általam használt IDE partíciók számára csatoltam az eszközöket.
***  Ha SCSI-t használsz, akkor a /dev/sdXX eszközöket kell ezek helyett használod.
crw-------   1 root     root       4,   0 May  5  1998 tty0
crw--w----   1 root     tty        4,   1 Nov  1 15:39 tty1
crw-------   1 root     root       4,   2 Nov  1 15:29 tty2
crw-------   1 root     root       4,   3 Nov  1 15:29 tty3
crw-------   1 root     root       4,   4 Nov  1 15:29 tty4
crw-------   1 root     root       4,   5 Nov  1 15:29 tty5
crw-------   1 root     root       4,   6 Nov  1 15:29 tty6
crw-------   1 root     root       4,   7 May  5  1998 tty7
crw-------   1 root     tty        4,   8 May  5  1998 tty8
crw-------   1 root     tty        4,   9 May  8 12:57 tty9
crw-rw-rw-   1 root     root       4,  65 Nov  1 12:17 ttyS1
crw-rw-rw-   1 root     root       1,   5 May  5  1998 zero

/etc:
-rw-------   1 root     root          164 Nov  1 15:39 conf.modules
-rw-------   1 root     root          668 Nov  1 15:39 fstab
-rw-------   1 root     root           71 Nov  1 15:39 gettydefs
-rw-------   1 root     root          389 Nov  1 15:39 group
-rw-------   1 root     root          413 Nov  1 15:39 inittab
-rw-------   1 root     root           65 Nov  1 15:39 issue
-rw-r--r--   1 root     root          746 Nov  1 15:39 ld.so.cache
***  Az ld.so.cache-t az ldconfig készítette, és cache-li a könyvtárak helyét.
***  Több dolog összeomlik indulás-időben, ha az ld.so.cache hiányzik.
***  Vagy újragyártod az indítólemez készítése után, vagy csatolod az
***  ldconfig-ot az indítólemezen, és egy rc.x szkriptből indítod
***  a cache frissítéséhez.
-rw-------   1 root     root           32 Nov  1 15:39 motd
-rw-------   1 root     root          949 Nov  1 15:39 nsswitch.conf
drwx--x--x   2 root     root         1024 Nov  1 15:39 pam.d
-rw-------   1 root     root          139 Nov  1 15:39 passwd
-rw-------   1 root     root          516 Nov  1 15:39 profile
-rwx--x--x   1 root     root          387 Nov  1 15:39 rc
-rw-------   1 root     root           55 Nov  1 15:39 shells
-rw-------   1 root     root          774 Nov  1 15:39 termcap
-rw-------   1 root     root           78 Nov  1 15:39 ttytype
lrwxrwxrwx   1 root     root           15 Nov  1 15:39 utmp -> ../var/run/utmp
lrwxrwxrwx   1 root     root           15 Nov  1 15:39 wtmp -> ../var/log/wtmp

/etc/pam.d:
-rw-------   1 root     root          356 Nov  1 15:39 other

/lib:
*** Nekem ELF rendszerem van glibc-vel, tehát az ld-2.so betöltőre van szükségem.
-rwxr-xr-x   1 root     root        45415 Nov  1 15:39 ld-2.0.7.so
lrwxrwxrwx   1 root     root           11 Nov  1 15:39 ld-linux.so.2 -> ld-2.0.7.so
-rwxr-xr-x   1 root     root       731548 Nov  1 15:39 libc-2.0.7.so
lrwxrwxrwx   1 root     root           13 Nov  1 15:39 libc.so.6 -> libc-2.0.7.so
lrwxrwxrwx   1 root     root           17 Nov  1 15:39 libcom_err.so.2 -> libcom_err.so.2.0
-rwxr-xr-x   1 root     root         6209 Nov  1 15:39 libcom_err.so.2.0
-rwxr-xr-x   1 root     root       153881 Nov  1 15:39 libcrypt-2.0.7.so
lrwxrwxrwx   1 root     root           17 Nov  1 15:39 libcrypt.so.1 -> libcrypt-2.0.7.so
-rwxr-xr-x   1 root     root        12962 Nov  1 15:39 libdl-2.0.7.so
lrwxrwxrwx   1 root     root           14 Nov  1 15:39 libdl.so.2 -> libdl-2.0.7.so
lrwxrwxrwx   1 root     root           16 Nov  1 15:39 libext2fs.so.2 -> libext2fs.so.2.4
-rwxr-xr-x   1 root     root        81382 Nov  1 15:39 libext2fs.so.2.4
-rwxr-xr-x   1 root     root        25222 Nov  1 15:39 libnsl-2.0.7.so
lrwxrwxrwx   1 root     root           15 Nov  1 15:39 libnsl.so.1 -> libnsl-2.0.7.so
-rwx--x--x   1 root     root       178336 Nov  1 15:39 libnss_files-2.0.7.so
lrwxrwxrwx   1 root     root           21 Nov  1 15:39 libnss_files.so.1 -> libnss_files-2.0.7.so
lrwxrwxrwx   1 root     root           14 Nov  1 15:39 libpam.so.0 -> libpam.so.0.64
-rwxr-xr-x   1 root     root        26906 Nov  1 15:39 libpam.so.0.64
lrwxrwxrwx   1 root     root           19 Nov  1 15:39 libpam_misc.so.0 -> libpam_misc.so.0.64
-rwxr-xr-x   1 root     root         7086 Nov  1 15:39 libpam_misc.so.0.64
-r-xr-xr-x   1 root     root        35615 Nov  1 15:39 libproc.so.1.2.6
lrwxrwxrwx   1 root     root           15 Nov  1 15:39 libpwdb.so.0 -> libpwdb.so.0.54
-rw-r--r--   1 root     root       121899 Nov  1 15:39 libpwdb.so.0.54
lrwxrwxrwx   1 root     root           19 Nov  1 15:39 libtermcap.so.2 -> libtermcap.so.2.0.8
-rwxr-xr-x   1 root     root        12041 Nov  1 15:39 libtermcap.so.2.0.8
-rwxr-xr-x   1 root     root        12874 Nov  1 15:39 libutil-2.0.7.so
lrwxrwxrwx   1 root     root           16 Nov  1 15:39 libutil.so.1 -> libutil-2.0.7.so
lrwxrwxrwx   1 root     root           14 Nov  1 15:39 libuuid.so.1 -> libuuid.so.1.1
-rwxr-xr-x   1 root     root         8039 Nov  1 15:39 libuuid.so.1.1
drwx--x--x   3 root     root         1024 Nov  1 15:39 modules
drwx--x--x   2 root     root         1024 Nov  1 15:39 security

/lib/modules:
drwx--x--x   4 root     root         1024 Nov  1 15:39 2.0.35

/lib/modules/2.0.35:
drwx--x--x   2 root     root         1024 Nov  1 15:39 block
drwx--x--x   2 root     root         1024 Nov  1 15:39 cdrom

/lib/modules/2.0.35/block:
-rw-------   1 root     root         7156 Nov  1 15:39 loop.o

/lib/modules/2.0.35/cdrom:
-rw-------   1 root     root        24108 Nov  1 15:39 cdu31a.o

/lib/security:
-rwx--x--x   1 root     root         8771 Nov  1 15:39 pam_permit.so

***  Alkönyvtár törzs beillesztéshez
/mnt:
drwx--x--x   2 root     root         1024 Nov  1 15:39 SparQ
drwx--x--x   2 root     root         1024 Nov  1 15:39 cdrom
drwx--x--x   2 root     root         1024 Nov  1 15:39 floppy

/proc:

/root:
-rw-------   1 root     root          176 Nov  1 15:39 .bashrc
-rw-------   1 root     root          182 Nov  1 15:39 .cshrc
-rw-------   1 root     root           47 Nov  1 15:39 .glintrc
-rwx--x--x   1 root     root          455 Nov  1 15:39 .profile
-rw-------   1 root     root         4014 Nov  1 15:39 .tcshrc

/sbin:
-rwx--x--x   1 root     root        23976 Nov  1 15:39 depmod
-rwx--x--x   2 root     root       274600 Nov  1 15:39 e2fsck
-rwx--x--x   1 root     root        41268 Nov  1 15:39 fdisk
-rwx--x--x   1 root     root         9396 Nov  1 15:39 fsck
-rwx--x--x   2 root     root       274600 Nov  1 15:39 fsck.ext2
-rwx--x--x   1 root     root        29556 Nov  1 15:39 getty
-rwx--x--x   1 root     root         6620 Nov  1 15:39 halt
-rwx--x--x   1 root     root        23116 Nov  1 15:39 init
-rwx--x--x   1 root     root        25612 Nov  1 15:39 insmod
-rwx--x--x   1 root     root        10368 Nov  1 15:39 kerneld
-rwx--x--x   1 root     root       110400 Nov  1 15:39 ldconfig
-rwx--x--x   1 root     root         6108 Nov  1 15:39 lsmod
-rwx--x--x   2 root     root        17400 Nov  1 15:39 mke2fs
-rwx--x--x   1 root     root         4072 Nov  1 15:39 mkfs
-rwx--x--x   2 root     root        17400 Nov  1 15:39 mkfs.ext2
-rwx--x--x   1 root     root         5664 Nov  1 15:39 mkswap
-rwx--x--x   1 root     root        22032 Nov  1 15:39 modprobe
lrwxrwxrwx   1 root     root            4 Nov  1 15:39 reboot -> halt
-rwx--x--x   1 root     root         7492 Nov  1 15:39 rmmod
-rwx--x--x   1 root     root        12932 Nov  1 15:39 shutdown
lrwxrwxrwx   1 root     root            6 Nov  1 15:39 swapoff -> swapon
-rwx--x--x   1 root     root         5124 Nov  1 15:39 swapon
lrwxrwxrwx   1 root     root            4 Nov  1 15:39 telinit -> init
-rwx--x--x   1 root     root         6944 Nov  1 15:39 update

/tmp:

/usr:
drwx--x--x   2 root     root         1024 Nov  1 15:39 bin
drwx--x--x   2 root     root         1024 Nov  1 15:39 lib
drwx--x--x   3 root     root         1024 Nov  1 15:39 man
drwx--x--x   2 root     root         1024 Nov  1 15:39 sbin
drwx--x--x   3 root     root         1024 Nov  1 15:39 share
lrwxrwxrwx   1 root     root           10 Nov  1 15:39 tmp -> ../var/tmp

/usr/bin:
-rwx--x--x   1 root     root        37164 Nov  1 15:39 afio
-rwx--x--x   1 root     root         5044 Nov  1 15:39 chroot
-rwx--x--x   1 root     root        10656 Nov  1 15:39 cut
-rwx--x--x   1 root     root        63652 Nov  1 15:39 diff
-rwx--x--x   1 root     root        12972 Nov  1 15:39 du
-rwx--x--x   1 root     root        56552 Nov  1 15:39 find
-r-x--x--x   1 root     root         6280 Nov  1 15:39 free
-rwx--x--x   1 root     root         7680 Nov  1 15:39 head
-rwx--x--x   1 root     root         8504 Nov  1 15:39 id
-r-sr-xr-x   1 root     bin          4200 Nov  1 15:39 passwd
-rwx--x--x   1 root     root        14856 Nov  1 15:39 tail
-rwx--x--x   1 root     root        19008 Nov  1 15:39 tr
-rwx--x--x   1 root     root         7160 Nov  1 15:39 wc
-rwx--x--x   1 root     root         4412 Nov  1 15:39 whoami

/usr/lib:
lrwxrwxrwx   1 root     root           17 Nov  1 15:39 libncurses.so.4 -> libncurses.so.4.2
-rw-r--r--   1 root     root       260474 Nov  1 15:39 libncurses.so.4.2

/usr/sbin:
-r-x--x--x   1 root     root        13684 Nov  1 15:39 fuser
-rwx--x--x   1 root     root         3876 Nov  1 15:39 mklost+found

/usr/share:
drwx--x--x   4 root     root         1024 Nov  1 15:39 terminfo

/usr/share/terminfo:
drwx--x--x   2 root     root         1024 Nov  1 15:39 l
drwx--x--x   2 root     root         1024 Nov  1 15:39 v

/usr/share/terminfo/l:
-rw-------   1 root     root         1552 Nov  1 15:39 linux
-rw-------   1 root     root         1516 Nov  1 15:39 linux-m
-rw-------   1 root     root         1583 Nov  1 15:39 linux-nic

/usr/share/terminfo/v:
-rw-------   2 root     root         1143 Nov  1 15:39 vt100
-rw-------   2 root     root         1143 Nov  1 15:39 vt100-am

/var:
drwx--x--x   2 root     root         1024 Nov  1 15:39 log
drwx--x--x   2 root     root         1024 Nov  1 15:39 run
drwx--x--x   2 root     root         1024 Nov  1 15:39 tmp

/var/log:
-rw-------   1 root     root            0 Nov  1 15:39 wtmp

/var/run:
-rw-------   1 root     root            0 Nov  1 15:39 utmp

/var/tmp:

14. Példa egy eszköz lemez alkönyvtár listájára.

teljes 579
-rwxr-xr-x   1 root     root        42333 Jul 28 19:05 cpio*
-rwxr-xr-x   1 root     root        32844 Aug 28 19:50 debugfs*
-rwxr-xr-x   1 root     root       103560 Jul 29 21:31 elvis*
-rwxr-xr-x   1 root     root        29536 Jul 28 19:04 fdisk*
-rw-r--r--   1 root     root       128254 Jul 28 19:03 ftape.o
-rwxr-xr-x   1 root     root        17564 Jul 25 03:21 ftmt*
-rwxr-xr-x   1 root     root        64161 Jul 29 20:47 grep*
-rwxr-xr-x   1 root     root        45309 Jul 29 20:48 gzip*
-rwxr-xr-x   1 root     root        23560 Jul 28 19:04 insmod*
-rwxr-xr-x   1 root     root          118 Jul 28 19:04 lsmod*
lrwxrwxrwx   1 root     root            5 Jul 28 19:04 mt -> mt-st*
-rwxr-xr-x   1 root     root         9573 Jul 28 19:03 mt-st*
lrwxrwxrwx   1 root     root            6 Jul 28 19:05 rmmod -> insmod*
-rwxr-xr-x   1 root     root       104085 Jul 28 19:05 tar*
lrwxrwxrwx   1 root     root            5 Jul 29 21:35 vi -> elvis*