Ebben a fejezetben a fájlrendszer szót két különböző értelemben fogom használni. Vannak fájlrendszerek a lemez particiókon és más eszközökön, és van egy fájlrendszer, amit a futó Linux alól látsz. A Linuxban "felcsatolod" (mount) a lemezes fájlrendszereket az operációs rendszer fájlrendszerére.
Az előző fejezetben megemlítettem, hogy az" init" szkriptek leellenőrzik és felcsatolják a
fájlrendszereket. Ezt az "fsck
" és a "mount
" parancsok végzik el.
A merevlemez csak egy nagy tárhely, ahova egyeseket és nullákat írhatsz. A fájlrendszer erre rárak
egy szerkezetet, és ettől néz ki úgy, mintha fájlok lennének könyvtárakon belül és azok is
további könyvtárakon belül... Minden fájlnak van egy leíró táblája (inode), ami nyilvántartja
kié a fájl, mikor hozták létre és hol vannak a részei. A könyvtárakat is inode-ok írják
le, de ezekben a tárolódik, hogy hol találhatók azoknak a fájloknak az inode-jai, amik a
könyvtárban
vannak. Ha a rendszer olvasni akarja a /home/greg/bigboobs.jpeg
fájlt, először megkeresi a
gyökér
(root) / könyvtár leíró tábláját a "superblock"-ban, ezután megkeresi a / tartalmában
lévő home
könyvtár inode-ját, ezután megkeresi a /home
tartalmában lévő
greg
könyvtár
inode-ját, ezután megkeresi a bigboobs.jpeg
leíró tábláját, ami jelzi melyik
lemezblokkot kell olvasnia.
Ha hozzáfűzünk egy kis adatot egy fájl végéhez, megeshet, hogy először az adat íródik ki,
mielőtt a leíró tábla frissülne (ami jelezné, hogy az új blokkok a fájlhoz tartoznak),
vagy fordítva. Ha ezen a ponton áramszünet következik be, megsérülhet a fájlrendszer. Ez az a
dolog, amit az "fsck
" megpróbál felderíteni és kijavítani.
A "mount" parancs egy eszközön lévő fájlrendszert hozzáad a használatban lévő rendszered
hierarchiájához. Általában a kernel csak olvasható módban csatolja fel a (root) fájl
rendszert. A "mount" parancsot használják arra, hogy újra felcsatolják írható-olvasható módban,
miután az "fsck
" leellenőrizte, hogy minden rendben.
A Linux támogat másfajta fájlrendszereket is: msdos, vfat, minix stb. Egy bizonyos fájlrendszer részletei el vannak vonatkoztatva egy virtuális fájlrendszerre (VFS). Nem megyek bele a részletekbe, van egy vita erről a "A Linux Kernel"-ben (lásd a A Linux Kernel fejezetet URL-ért).
Egy teljesen más fájlrendszer csatolódik be a /proc
könyvtárba. Valójában ez csak a
kernelben
lévő dolgok megjelenítése. Mindegyik - a rendszerben futó folyamatnak (process) - van egy
könyvtára, ahol a folyamat száma a könyvtár neve. Vannak ott fájlok is, mint például
interrupts
(megszakítások) és meminfo
, amik elárulják, hogy hogyan használja a gép a hardvert.
Nagyon sokat
tanulhatsz a /proc
felfedezése közben.
Vannak az "mke2fs
" parancsnak (ami ext2 fájlrendszert hozza létre) paraméterei is. Ezek
ellenőrzik a
blokkok méretét, a leíró táblák (inode) számát stb. Olvasd el az "mke2fs
" kézikönyv-oldalát
részletekért.
Hogy mi hova csatolódik a fájlrendszereden, az /etc/fstab
fájlban dől el. Ennek is
van kézikönyv-oldala.
Készíts egy nagyon kicsi fájlrendszert, és nézd meg egy hexa editorral. Azonosítsd az inode-okat, szuperblokkokat és a fájl összetevőket.
Biztos vagyok benne, vannak eszközök amik visszadják a fájlrendszered grafikus kinézetét. Keress egyet, próbáld ki, és küldj egy URL-t és leírást nekem e-mailben!
Nézd meg az ext2 fájlrendszer kódját a kernelben.
mount
" parancs az util-linux csomag része, van egy hivatkozás hozzá a
Building a Minimal Linux System from Source Code doksiban.mount
, "fstab
", "fsck
"," mke2fs
"
és a proc
kézikönyv-oldalai.Documentation/proc.txt
fájl a Linux forrásában elmagyarázza a
/proc
fájlrendszert./bin
, /sbin
stb. könyvtáraknak mit kell tartalmaznia.
Jó referencia, ha a célod egy minimális, mégis teljes rendszer megépítése.