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.
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:
/dev, /proc, /bin, /etc, /lib, /usr,
/tmp
,sh, ls, cp, mv
, stb.,rc, inittab, fstab
, stb.,/dev/hd*, /dev/tty*, /dev/fd0
, stb.,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:
fsck
-t
az eredeti gyökér meghajtódra, amíg nincs beillesztve.
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.
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:
RAMDISK_SIZE = nnnsor, 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.
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.
Í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.
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
.
Ez az alkönyvtár számos konfigurációs állományt tartalmaz. A legtöbb állományrendszeren ezeket három csoportba sorolhatjuk:
rc, fstab, passwd
.
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:
rc.d/*
-- rendszerindító és futásszint váltó szkriptekfstab
-- beillesztendő állományrendszerek listájainittab
-- az init
folyamat állományai, az indításkor
elsőként elinduló folyamat.
passwd
-- felhasználók listája, home könyvtárak, stb.group
-- felhasználói csoportok
shadow
-- felhasználók jelszavai. Nem kötelező ezt használnod.
termcap
-- a terminál képesség-adatbázisa.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.
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 KangarooBizonyosodj 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 defaultsLemá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.
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.
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.
A rendszerednek olyan dinamikusan betöltendő eljáráskönyvtárakra is szüksége lehet, amiket a ldd nem mutat meg.
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.
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.
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.
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.
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.