Következő
Előző
Tartalom
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:
- Az alap állományrendszer-struktúra,
- Minimális alkönyvtár-struktúra:
/dev, /proc, /bin, /etc, /lib, /usr,
/tmp ,
- Alap eszközök:
sh, ls, cp, mv , stb.,
- Minimálisan szükséges konfigurációs állományok:
rc, inittab, fstab , stb.,
- Eszközök:
/dev/hd*, /dev/tty*, /dev/fd0 , stb.,
- Eszközök által használt alap függvényeket nyújtó futásidejű eljáráskönyvtárak.
Természetesen bármely rendszer akkor hasznos, ha tudsz rajta futtatni
is valamit. A gyökérlemez általában csak akkor válik használhatóvá, ha
valami ilyesmit megtehetsz vele:
- Másik meghajtón állományt ellenőrzöl, például azért, hogy leelenőrizd
a merevlemezeden lévő gyökér állományrendszeredet, másik meghajtóról
el kell, hogy tudd indítani a Linux rendszeredet, mint ahogy azt egy
gyökér lemezről meg is teheted. Ezután lefuttathatod az
fsck -t
az eredeti gyökér meghajtódra, amíg nincs beillesztve.
- Visszaállíthatod az eredeti gyökér meghajtódat biztonsági mentésből
olyan archiváló és tömörítő eszközök használatával, mint a
cpio, tar, gzip
és az ftape .
Megmutatjuk, hogy hogyan készíthetsz tömörített állományrendszert.
Így hívják, mert a lemezen tömörítve tárolódik, majd indításkor pedig
kitömörítődik a memórialemezre.
Tömörített állományrendszerrel sok állományt rázsúfolhatsz (körülbelül
hat megabájtot) egy hagyományos 1440K-s lemezre. Mivel az állományrendszer
lényegesen nagyobb a lemeznél, nem is lehet lemezen elkészíteni. Máshol
kell elkészíteni, tömöríteni, majd rápakolni a lemezre.
Ahhoz, hogy ilyen gyökér állományrendszert készíthess, olyan tároló
eszközre lesz szükséged, ami elég nagy, hogy a tömörítés előtt
elférjenek rajta az állományok. Egy körülbelül négy megabájt szabad
hellyel rendelkező eszközre lesz szükséged. Több lehetőség áll
rendelkezésedre:
- Használhatsz memórialemezt (ESZKÖZ = /dev/ram0).
Ebben az esetben a memóriát használjuk a lemez szimulálására. A memórialemeznek
elég nagynak kell lennie, hogy a megfelelő méretű állományrendszer elférjen rajta.
Ha LILO-t használsz, nézd meg a konfigurációs állományát (/etc/lilo.conf),
hogy szerepel-e benne a
RAMDISK_SIZE = nnn
sor, ami megadja, hogy mekkora RAM legyen maximálitan memórialemez számára
lefoglalható. Az alapértelmezett érték 4096K, aminek elegendőnek kell lennie.
Nem célszerű 8MB-nál kevesebb memóriával rendelkező gép esetén memórialemezt
használni.
Nézd meg, hogy vannak-e olyan eszközeid, mint a /dev/ram0, /dev/ram,
vagy a /dev/ramdisk. Ha nincsenek, készítsd el a /dev/ram0-t
az mknod (major 1, minor 0) paranccsal.
- Jó megoldás, ha van egy elég nagy (néhány megabájt) használaton kívüli
merevlemez-partíciód.
- Használj loopback eszközt, amivel lemez állományt
eszközként kezelhetsz. Loopback eszközzel elkészíthetsz egy 3 megabájtos
állományt a merevlemezeden, és felépítheted benne az állományrendszert.
A loopback eszközök használatának bővebb ismertetéséhez használd a
man losetup
parancsot. Ha nincs losetup -od, az
ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/
címről letöltheted a mount és unmount programokkal
kompatibilis util-linux csomagot, amiben megtalálod.
Ha nincs a rendszereden (/dev/loop0, /dev/loop1, stb.)
loop eszköz, készítened kell egyet az ``mknod /dev/loop0 b 7 0 ''
paranccsal. Miután feltelepítetted ezeket a különleges mount és umount
binárisokat, készíts egy elegendő kapacitással rendelkező ideiglenes
állományt a merevlemezeden (pl. /tmp/fsfile).
Használhatod a
dd if=/dev/zero of=/tmp/fsfile bs=1k count=<it/nnn/
parancsot a nnn-blokk méretű állomány készítéséhez.
Ezt az állománynevet használd lejjebb az ESZKÖZ helyett. Ha a mount
utasítást használod, a ``-o loop '' kapcsolót is használnod
kell, hogy megmond a mount-nak, hogy loopback eszközt használjon.
Például a
mount -o loop -t ext2 /tmp/fsfile /mnt
parancs beilleszti a /tmp/fsfile-t (loopback eszközön keresztül)
az /mnt illesztési pontba. Egy df parancs ezt meg is erősíti.
Miután kiválasztottad valamely opciót, készítsd el az ESZKÖZt a
dd if=/dev/zero of=DEVICE bs=1k count=3000
utasítással. Ez a parancs lenullázza az eszközt. Ez a lépés azért fontos,
mert később tömöríteni fogjuk az állományrendszert, így minden használaton
kívüli területet nullával kell feltölteni, hogy maximális tömörítést
érhessünk el.
Következik az állomáynrendszer elkészítése. A Linux kernel kétféle gyökér
lemeztípust ismer, amit automatikusan memórialemezre másol. Az egyik a
minix, a másik az ext2, ami a preferált állományrendszer. Ha ext2-t
használsz, hasznosnak találhatod a -i kapcsolót, hogy az
alapértelmezettnél több inode-t adhass meg; a -i 2000 ajánlott legalább,
hogy ne fogyhass ki inode-okból.
Másfelől viszont meg is takaríthatsz inode-okat, ha letörlöd a sok felesleges
eszközállományt a /dev alkönyvtárból. Az mke2fs parancs 360
inode-t készít alapértelmezés szerint egy 1.44Mb-s lemezen. Úgy találtam, hogy
120 inode bőven elegendő a helyreállító lemezemen, de ha a /dev alkönyvtár
összes állományát szeretnéd csatolni, hamar ki fogsz fogyni a 360 inode-ból.
A tömörített gyökér állományrendszer nagyobb állományrendszert enged meg, és
így alapértelmezés szerint több inode-t, de még mindig szükség lehet rá, hogy
egyrészről csökkentsd az állományok számát, vagy növeld az inode-k számát.
Így tehát az utasítás így néz ki:
mke2fs -m 0 -i 2000 ESZKÖZ
(Ha loopback eszközt használsz, meg kell adnod hogy az ESZKÖZ hol található.
Ebben az esetben az mke2fs meg fog kérdezni, hogy biztosan ezt szeretnéd-e,
válaszolj igennel.)
Az mke2fs utasítás automatikusan megállapítja a szabad hely méretét, és
annak megfelelően konfigurálja be magát. A -m 0 paraméter megakadályozza,
hogy a root számára helyet foglaljon le, így több használható hely lesz a lemezen.
Ezután beillesztheted az eszközt:
mount -t ext2 ESZKÖZ /mnt
(Létre kell hoznod a /mnt beillesztési pontot, ha még nem létezik.)
A további fejezetekben minden alkönyvtárnevet az /mnt -hez képest
relatív alkönyvtárnak tekintünk.
Íme egy kellően lecsupaszított alkönyvtárcsoport a gyökér
állományrendszered számára:
-
/dev -- Eszközök, melyek a B/K műveletekhez szükségesek
-
/proc -- Alkönyvtár-rendszer, amire a proc állományrendszernek van szüksége
-
/etc -- Rendszerkonfigurációs állományok
-
/sbin -- Kritikus rendszer-binárisok
-
/bin -- A rendszer részét alkotó alap binárisok
-
/lib -- Futásidejű támogatást nyújtó osztott eljáráskönyvtárak
-
/mnt -- Más lemezek karbantartására szolgáló beillesztési pont
-
/usr -- Egyéb eszközök és alkalmazások
(Az itt bemutatott alkönyvtár-struktúra csak a gyökér lemezre vonatkozik.
A valódi Linux rendszerek sokkal összetettebb és sokkal fegyelmezettebb
irányvonallal rendelkeznek. Állományrendszer Hierarchia Szabványnak
hívják ezt a rendszert, és ez a szabvány határozza meg, hogy melyik
állománynak hova kell kerülnie.)
A gyökér lemezen három alkönyvtár üresen marad, tehát csak az mkdir
parancsra van szükség a létrehozásukhoz. A /proc alkönyvtár
tulajdonképpen csak egy törzs, ahova a proc állományrendszer kerül. Az
/mnt és az /usr alkönyvtárak pedig olyan beillesztési
pontok, melyeket majd az indító/gyökér rendszer lefutása után használunk.
Ezért tehát ezeket az alkönyvtárakat csak létre kell hozni.
A maradék négy alkönyvtár tartalmát a következő bekezdésekben részletezzük.
/dev
A /dev alkönyvtár minden Linux rendszerben használatos eszköz számára
egy-egy különleges állományt tartalmaz. A /dev alkönyvtár maga hagyományos
alkönyvtár, és az mkdir paranccsal létre is hozható a már megismert
módon. Az eszközök különleges állományok, így különleges módon kell létrehozni
őket az mknod paranccsal.
Azonban létezik egy gyosabb módszer is -- másold le a már létező /dev
alkönyvtárad tartalmát, majd töröld le azokat az eszközöket, amikre nincs
szükséged. Az egyetlen szükséges teendő a -R kapcsoló használata a
különleges eszköz állományok másolásakor. Ez úgy másolja át az alkönyvtárat,
hogy nem próbálkozik az állományok belsejének másolásával. Figyelj nagyon,
hogy nagybetűs R-t használj!. Ha kisbetűs -r kapcsolót használod,
valószínűleg meg sem állsz a teljes merevlemez-tartalmad átmásolásáig, vagy
legalábbis addig, amíg nem telítődik a lemezed. Ezért légy óvatos, és a következő
utasítást használd:
cp -dpR /dev /mnt
feltéve, hogy a lemezt a /mnt alkönyvtárba illesztetted. A dp
kapcsoló gondoskodik a szimbolikus láncok láncokként való másolásáról, így
nem a célállományt másolod át, valamint megőrzi az eredetleg használt
attribútumokat, így a tulajdonos információkat is.
Ha a nehezebb utat szeretnéd járni, használd a ls -l parancsot a
major és minor eszközszámok megjelenítéséhez a másolandó eszközökről,
majd hozd létre őket az mknod paranccsal a lemezeden.
Habár az eszközöket lemásoltad, megéri leellenőrizni, hogy minden
általad szükségesnek tartott különleges eszköz rákerült-e a biztonsági
helyreállító lemezedre. Például, a szalagos eszközök az ftape
állományt használják, így ha szalagos lemezmeghajtódhoz hozzá szeretnél
férni az indítólemezről, minden ilyen állományt át kell másolnod.
Jegyezzük meg, hogy minden egyes különleges eszköz állományhoz egy-egy
inode-ra van szükség, és az inode nagyon szűkös erőforrás, különösen
lemezen lévő állományrendszereken. Ez szükségessé teszi, hogy minden
szükségtelen eszköz specifikus állományt eltávolíts, csak azokat hagyd meg
a /dev alkönyvtárban, amikre valóban szükséged lesz. Például
ha nincsenek SCSI lemezeid, minden további nélkül eltávolíthatsz minden
sd -vel kezdődő eszköz állományt. Hasonlóképpen, ha nem akarsz
soros csatolót használni, minden cua -val kezdődő eszköz törölhető.
Bizonyosodj meg arról, hogy a következő állományokat csatolod ebből az
alkönyvtárból:
console, kmem, mem, null, ram, tty1 .
/etc
Ez az alkönyvtár számos konfigurációs állományt tartalmaz. A legtöbb
állományrendszeren ezeket három csoportba sorolhatjuk:
- Minden esetben szükségesek, pl.
rc, fstab, passwd .
- Lehet, hogy kellenek, de senki sem elég biztos benne.
- 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:
- Állományok, melyeket be kell konfigurálni az indító/gyökér rendszerhez.
rc.d/* -- rendszerindító és futásszint váltó szkriptek
fstab -- beillesztendő állományrendszerek listája
inittab -- az init folyamat állományai, az indításkor
elsőként elinduló folyamat.
- Állományok, melyekről gondoskodni kell az indító/gyökér rendszerhez.
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.
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.
- 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.
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.
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.
Következő
Előző
Tartalom
|