2 Kataloogipuu ülevaade

Selles peatükis kirjeldatakse standardse Linuxi kataloogipuu tähtsamaid osi, mis põhinevad failisüsteemi FSSTND standardil. Esitatakse tavaline viis kataloogipuu jaotamiseks erinevate eesmärkidega failisüsteemideks ja selgitatakse üksikasjaliselt vajadust sellise jaotuse järele. Samuti kirjeldatakse ka mõningaid alternatiivseid jaotusviise.

2.1 Taust

See peatükk põhineb üldjoontes Linuxi failisüsteemi standardil FSSTND (versioon 1.2), mis üritab kehtestada üldist standardit kataloogipuu organiseerimiseks süsteemis Linux. Sellise standardi eeliseks on, et ta muudab hõlpsamaks tarkvara kirjutamise ja ülekande Linuxisse ning lihtsustab ka Linuxi arvutite haldamist, kuna kõik on alati n-ö omal kohal. Standard ei oma mingit autoritaarset kohustavat võimu, ent tema kasuks räägib enamiku, kui mitte kõigi, Linuxi tarnijate toetus. Ilma eriti olulise põhjuseta ei ole soovitav FSSTND-st kõrvale kalduda. FSSNTD üritab järgida Unixi traditsioone ning käibivaid suundi, muutes Linux-süsteemid koduseks neile, kel on kogemusi teiste Unix-süsteemidega ja vastupidi.

Käesolevas peatükis ei ole eesmärgiks mitte kõigi failide detailne kirjeldamine, vaid süsteemist ülevaate andmine failisüsteemi vaatenurgast. Täpsem informatsioon iga faili kohta on toodud järgnevates osades.

Terve kataloogipuu on ette nähtud jaotada väiksemateks osadeks, igal oma ketas või kettasektsioon, et kohandada kettamahu limiite ja lihtsustada varukoopiate tegemist ning süsteemihaldust. Tähtsamad osad on failisüsteemid /, /usr, /var ja /home (vt Joonis 2.1), neist igaühel loomulikult eraldi ülesanne. Kataloogipuu on kujundatud nii, et ta töötaks hästi Linuxi masinate võrgus, mis võivad kasutada mõningaid failisüsteemi osi ka ühiselt ainult lugemiseks mõeldud seadmetel või võrgus NFS-i abil.

Joonis 2.1 Unixi kataloogipuu osad (punktiirjoon näitab jaotuse piire)

Kataloogipuu erinevate osade ülesanded on kirjeldatud allpool.

/ Juurfailisüsteem on iga masina jaoks ainulaadne (tavaliselt salvestatud kohalikul kettal, kuigi võib asuda ka virtuaalkettal või võrgukettal) ning sisaldab faile, mis on vajalikud süsteemi alglaadimiseks ja tema viimiseks sellisele tasemele, et saaks ühendada teisi failisüsteeme. Seetõttu on juurfailisüsteemi sisu ainukasutaja korral piisav. Samuti sisaldab ta vahendeid vigase süsteemi parandamiseks ja failide taastamiseks varukoopiate järgi.

 

/usr Sisaldab kõiki käske, teeke, juhendi lehekülgi ja teisi püsifaile, mida võib vaja minna tavalise kasutamise käigus. Ükski fail kataloogis /usr ei tohiks olla eriline ühegi arvuti jaoks ega tavalise kasutamise korral muudetav. See võimaldab nende failide ühiskasutust läbi võrgu, mis annab säästu, kuna hoiab kokku arvutite kettaruumi (kataloogis /usr võib hõlpsasti olla sadu megabaite) ning kergendab haldust (rakendusprogrammi värskendamisel tuleb muuta ainult etalonkataloogi /usr, mitte igas arvutis eraldi). Isegi kui failisüsteem on kohalikul kettal, peaks selle ühendama kirjutuskaitstult, et vähendada krahhi puhul failisüsteemi rikkumise võimalust.

 

/var Sisaldab muutuvaid faile: näiteks puhverkataloogid (posti, uudiste ja printerite jaoks jne), logifailid, juhendi vormindatud leheküljed ja ajutised failid. Traditsiooniliselt olid kõik kataloogi /var failid kusagil /usr-kataloogi all, ent see tegi võimatuks ühendada /usr kirjutuskaitsega.

 

/home Sisaldab kasutajate kodukatalooge, st tegelike kasutajate kogu teavet. Kodukataloogide eraldamine omaette kataloogipuusse või failisüsteemi lihtsustab varukoopiate tegemist, kuna teisi osi pole vaja nii tihti varundada ( sest nad muutuvad harva). Suure kodukataloogi korral võib jaotada ta omakorda eraldi failisüsteemideks, mis tekitab vajaduse täiendava nimetaseme järele allpool kataloogi /home (näiteks /home/students ja /home/staff).

Kuigi kataloogipuu erinevaid osi on ülal kutsutud failisüsteemideks, ei ole nõutud, et nad asuksid ka tegelikult eraldi failisüsteemides. Kui süsteem on väike ainukasutajasüsteem ja kasutaja soovib hoida asju lihtsal kujul, võib neid säilitada ka ühes failisüsteemis. Kataloogipuud võib jagada failisüsteemideks ka teisiti sõltuvalt sellest, kui suured on kettad ja kuidas on ruum jaotatud eri otstarbega programmide vahel.

Unixi failisüsteem liigitab failid otstarbe järgi, st kõik käsud on ühes kohas, kõik andmefailid teises, dokumentatsioon kolmandas kohas jne. Alternatiivne võimalus oleks rühmitada failid vastavalt programmidele, mille juurde nad kuuluvad (st kõik Emacsi failid oleksid ühes kataloogis, kõik TEX-i omad teises jne). Viimatimainitud lähenemisel seisneb probleem selles, et failide ühiskasutus muutub tülikaks. Programmi kataloog sisaldab tihti mõlemaid, nii staatilisi (muutumatuid ehk ühiskasutatavaid) kui ka muutuvaid ehk ühiskasutuseks mittemõeldud faile ning mõnikord raskendub isegi failide leidmine (näiteks kui juhendi üksikud leheküljed asuvad väga paljudes kohtades).

2.2 Juurfailisüsteem

Juurfailisüsteem peaks üldiselt olema väike, kuna ta sisaldab väga olulisi ja rikkumistundlikke faile. Väikesel ja harvamuudetaval failisüsteemil on suurem tõenäosus rikkumata püsida. Rikutud juurfailisüsteem tähendab reeglina seda, et süsteem võib muutuda alglaadimatuks (välja arvatud eriliste meetmete abil, näiteks alglaadimine disketilt). Niisiis ei maksa riskida.

Juurkataloog ise harilikult faile ei sisalda, välja arvatud ehk standardse alglaadimise kujutis süsteemi jaoks (harilikult nimega /boot/vmlinuz). Kõik ülejäänud failid asuvad juurfailisüsteemi alamkataloogides:

/bin Käsud, mida vajatakse süsteemi alglaadimisel ja mida võivad kasutada tavakasutajad (loomulikult pärast alglaadimist).
/sbin Nagu /bin, aga sisaldab süsteemseid vahendeid, mis üldiselt pole mõeldud tavakasutajatele (kuigi nad võivad neid kasutada vajadusel ja eeldusel, et see on lubatud).
/etc Konfiguratsioonifailid, mis on konkreetsele arvutile spetsiifilised.
/root Kodukataloog juurkasutajale.
/lib Ühisteegid, mida vajavad teised juurfailisüsteemi programmid.
/lib/modules Laaditavad tuumamoodulid. Peamiselt need, mida vajatakse süsteemi alglaadimiseks taastamisel pärast krahhi (näiteks võrgu ja failisüsteemi draiverid).
/dev Seadmefailid.
/tmp Ajutised failid. Pärast alglaadimist töötavad programmid peaksid kasutama mitte kataloogi /tmp vaid kataloogi /var/tmp (asub tõenäoliselt kettal, kus on rohkem ruumi).
/boot Failid, mida kasutab alglaadur (näiteks LILO). Tuuma kujutist hoitakse tihti juurkataloogi asemel hoopis siin. Mitme kujutise korral võib kataloog kergesti üsna suureks kasvada ja on parem hoida teda eraldi failisüsteemis. Sellega oleks ka tagatud, et tuuma kujutised paikneksid IDE-kettal esimese 1024 silindri sees.
/mnt Ühenduspunkt süsteemiülema ajutistele ühendustele. Programmid ei peaks kataloogi /mnt ühenduma automaatselt. Kataloog /mnt võib olla omakorda jaotatud alamkataloogideks (näiteks /mnt/dosa võiks olla disketidraiv, mida kasutab MS-DOS-i failisüsteem, ja /mnt/exta sama failisüsteemi ext2 jaoks).
/proc, /usr, /var, /home Ühenduspunktid teistele failisüsteemidele.

2.2.1 Kataloog /etc

Kataloog /etc sisaldab väga palju faile. Allpool kirjeldatakse mõningaid neist. Teiste jaoks peate ise otsustama, millisele programmile nad kuuluvad, ja lugema selle programmi juhendit. Ka paljud võrgu kasutamise ning konfigureerimise failid asuvad kataloogis /etc.

/etc/rc või /etc/rc.d või /etc/rc?.d Alglaadimise või töötaseme muutmise stsenaariumid või stsenaariumide kataloogid.
/etc/passwd Kasutajate andmebaas, mille väljad sisaldavad iga kasutaja kohta kasutajanime, tegelikku nime, kodukataloogi, krüpteeritud parooli ja muud informatsiooni.
/etc/fdprm Disketi parameetritabel. Kirjeldab, kuidas näevad välja mitmesugused disketivormingud. Tabelit kasutab setfdprm.
/etc/fstab Registreerib käsuga mount -a automaatselt alglaadimisel ühendatavad failisüsteemid (failis /etc/rc või samaväärses alglaadefailis). Linuxi all sisaldab informatsiooni ka saalealade kohta, mida kasutab automaatselt swapon -a.
/etc/group Sama nagu /etc/passwd, aga kirjeldab kasutajate asemel gruppe.
/etc/inittab Faili init konfiguratsioonifail.
/etc/issue Getty väljund enne sisselogimisviipa. Sisaldab tavaliselt lühikirjeldust või süsteemipoolset tervitust, mille sisu määrab süsteemiülem.
/etc/magic Käsu file konfiguratsioonifail. Sisaldab erinevate failivormingute kirjeldusi, mille põhjal file teeb oletuse faili tüübi kohta.
/etc/motd Tervitusteade, väljastatakse automaatselt pärast edukat sisselogimist. Sisu on süsteemiülema määrata. Kasutatakse tihti kõigi kasutajate informeerimiseks (nagu näiteks hoiatus süsteemi plaanitud seisuaja kohta).
/etc/mtab Käesoleval hetkel ühendatud failisüsteemide loend. Koostatakse alglaadimise ajal käivitatud skriptide abil ja värskendatakse automaatselt käsuga mount. Kasutatakse juhul, kui on vaja ühendatud failisüsteemide loendit (näiteks seoses käsuga df).
/etc/shadow Variparoolifail süsteemis, kus on installeeritud variparoolide tarkvara. Variparoolid teisaldavad krüpteeritud parooli failist /etc/passwd faili /etc/shadow. Viimast saab lugeda vaid juurkasutaja. Raskendab paroolide kräkkimist.
/etc/login.defs Konfiguratsioonifail käsule login.
/etc/printcap Nagu /etc/termcap, aga mõeldud printeritele. Loomulikult ka erineva süntaksiga.
/etc/profile, /etc/bashrc, /etc/csh.login, /etc/csh.cshrc Failid, mis on käivitatud sisselogimise või alglaadimise ajal vastavalt Bourne’i ja C kesta poolt. Lubavad süsteemiülemal seada üldise vaikehäälestuse kõigile kasutajatele.
/etc/securetty Identifitseerib turvalised terminalid (st terminalid, millistelt juur tohib sisse logida). Tüüpiliselt registreeritakse vaid virtuaalpuldid, mis muudab võimatuks (või vähemalt raskendab) saavutada eeliskasutaja privileege süsteemi sissetungiga läbi võrgu või modemi.
/etc/shells Registreerib usaldatavad kestad. Käsk chsh lubab kasutajatel vahetada sisselogimiskesta ainult nende kestade vastu, mis on selles failis loetletud. Ftpd on serveriprotsess, mis pakub masinatele FTP-teenuseid, kontrollib kasutaja kesta olemasolu failis /etc/shells ning vastava kesta puudumisel ei lase kasutajal end sisse logida.
/etc/termcap Terminalide andmebaas. Kirjeldab, milliste paojadadega saab erinevaid terminale juhtida. Programmid on kirjutatud nii, et konkreetsele terminalitüübile ettenähtud paojada otsib otsese väljastamise asemel õige jada failist /etc/termcap. Seetõttu töötab enamik programme peaaegu kõigi terminalitüüpidega.

2.2.2 Kataloog /dev

Kataloog /dev sisaldab kõigi seadmete jaoks spetsiaalseid seadmedraivereid. Seadmefailide nimed määratakse erikokkulepete alusel. Seadmefailid luuakse installeerimise käigus ja hiljem skriptiga /dev/MAKEDEV. Skript /dev/MAKEDEV.local on süsteemiülema kirjutatud skript, mis loob ainult kohalikke seadmefaile või linke (st neid, mis pole standardse MAKEDEV-i osad) nagu näiteks mõne mittestandardse seadmedraiveri failid.

2.3 Failisüsteem /usr

Failisüsteem /usr on sageli suur, kuna reeglina installeeritakse sinna kõik programmid. Süsteemi /usr failid tulevad tavaliselt Linuxi tarnijatelt. Lokaalselt installeeritud programmid paigutatakse kataloogi /usr/local alla. See võimaldab süsteemi tarnevariandi järgi värskendada või isegi installeerida täiesti uue süsteemi ilma neid programme uuesti installeerimata. Süsteem /usr sisaldab alljärgnevaid alamkatalooge (mõned vähemtähtsad kataloogid on välja jäetud).

/usr/X11R6 Kõik süsteemi X Window System failid. Lihtsustamaks X-i installeerimist ja värskendamist ei integreerita X-i faile ülejäänud süsteemi. Kataloogis /usr/X11R6 on kataloogipuu, mis sarnaneb süsteemi /usr enda kataloogipuuga.
/usr/X386 Sarnane kataloogiga /usr/X11R6, aga X11-e viienda väljalaske jaoks.
/usr/bin Peaaegu kõik kasutajate käsud. Mõned on ka kataloogides /bin ja /usr/local/bin.
/usr/sbin Süsteemihalduse käsud, mida pole vaja juurfailisüsteemis (näiteks enamik serveriprogramme).
/usr/man, /usr/info, /usr/doc Juhendi leheküljed, GNU Info dokumendid ja mitmesugused teised dokumendifailid.
/usr/include Programmeerimiskeele C päisfailid. Peaks tegelikult asuma kataloogi /usr/lib all nende ühtekuuluvuse tõttu, aga traditsioonid toetavad seda nime.
/usr/lib Programmide ja alamsüsteemide püsiandmefailid, kaasa arvatud mõned arvutikomplekti konfiguratsioonifailid. Nimi lib tuleneb sõnast library ja varem hoiti /usr/lib'is programmeerimisel kasutatavate alamprogrammide teeke.
/usr/local Koht lokaalselt installeeritud tarkvara ja teiste failide jaoks.

2.4 Failisüsteem /var

Failisüsteem /var sisaldab teavet, mis süsteemi normaalse töö käigus muutub. See on erinev süsteemi iga osa jaoks, st ei ole ühiskasutatav võrgus.

/var/catman Vahemälu juhendi lehekülgedele, mida nõudmisel vormindatakse. Juhendi lehekülgede allikas on harilikult salvestatud kataloogis /usr/man/man* (mõned leheküljed võivad aga olla vormindamata kujul kataloogis /usr/man/cat*’). Juhendi leheküljed vajavad vormindamist esimesel vaatamisel. Vormindatud versioon salvestatakse seejärel kataloogi /var/man ja järgmine isik, kes sama lehekülge vaatab, ei pea enam vormindamist ootama (kataloogi /var/catman puhastatakse sagedasti nagu teisigi ajutisi katalooge).
/var/lib Failid, mis süsteemi normaalse töö käigus muutuvad.
/var/local Muutandmed programmidele, mis on installeeritud kataloogis /usr/local (st süsteemiülema installeeritud programmidele). Pange tähele, et isegi lokaalselt installeeritud programmid peaksid kasutama süsteemi /var teisi sobivaid katalooge (näiteks /var/lock).
/var/lock Lukustusfailid. Mitmed programmid loovad tavaliselt lukustusfaili /var/lock osutamaks, et nad juba kasutavad konkreetset seadet või faili. Teised programmid jälgivad lukustusfaili ega ürita seda seadet või faili samaaegselt kasutada.
/var/log Mitmesuguste programmide logifailid: näiteks programmilt login (/var/log/wtmp, kus salvestatakse süsteemi kõik sisse- ja väljalogimised) ning programmilt syslog (/var/log/messages, kus salvestatakse kõik tuuma ja süsteemiprogrammide teated). Süsteemi /var/log failid võivad sageli piiramatult kasvada ning seega vajab ta regulaarsete ajavahemike tagant puhastamist.
/var/run Failid, mis sisaldavad kuni järgmise alglaadimiseni kehtivat teavet süsteemi kohta. Näiteks /var/run/utmp sisaldab antud hetkel sisseloginud kasutajate andmeid.
/var/spool Kataloogid posti, uudiste, prindijärjekordade ja muude järjekorraga tööde jaoks. Iga puhver omab kataloogis /var/spool oma alamkataloogi (näiteks kasutajate postkastid asuvad kataloogis /var/spool/mail).
/var/tmp Ajutised failid, mis on suured või eeldavad pikemat eluiga kui seda lubab /tmp (kuigi süsteemiülem võib keelata igivanade failide hoidmise ka kataloogis /var/tmp).

2.5 Failisüsteem /proc

Failisüsteem /proc sisaldab virtuaalset failisüsteemi, mida kettal tegelikult ei eksisteeri. Tuum loob selle hoopis mälus. Kasutatakse süsteemiteabe hoidmiseks (algselt protsesside kohta, kust pärineb ka nimi). Allpool selgitatakse mõningaid tähtsamaid faile ja katalooge. Failisüsteemi /proc kirjeldatakse detailsemalt juhendi leheküljel /proc.

/proc/1 Kataloog informatsiooniga protsessi nr 1 kohta. Iga protsess omab süsteemis /proc kataloogi, mille nimeks on protsessi identnumber.
/proc/cpuinfo Informatsioon protsessori kohta (nagu näiteks tüüp, mark, mudel ja jõudlus).
/proc/devices Loend antud hetkel tuuma konfigureeritud seadmedraiveritest.
/proc/dma Näitab, millised DMA-kanalid on praegu kasutusel.
/proc/filesystems Tuuma konfigureeritud failisüsteemid.
/proc/interrupts Näitab, millised katkestused on kasutusel ja kuipalju iga katkestust on esinenud.
/proc/ioports Näitab, millised S/V-pordid on praegu kasutusel.
/proc/kcore Süsteemi füüsilise mälu kujutis. Täpselt sama suur kui füüsiline mälu, kuid kettamälu niipalju tegelikult ei lähe. Luuakse programmi poole pöördumise hetkel (kui /proc/kcore pole kuhugi mujale kopeeritud, siis kataloogi /proc all ei kulu üldse kettaruumi).
/proc/kmsg Tuuma väljastatud teated. Need on suunatud ka programmi syslog.
/proc/ksyms Sümbolitabel tuuma jaoks.
/proc/loadavg Süsteemi keskmine koormus. Kolm indikaatorit, mis näitavad, kuipalju tööd süsteemil antud hetkel on.
/proc/meminfo Teave mälukasutuse kohta. Näitab mõlema, nii füüsilise kui ka saalemälu kasutamist.
/proc/modules Näitab, millised tuuma moodulid on hetkel laaditud.
/proc/net Võrguprotokollide oleku teave.
/proc/self Sümboolne link süsteemi /proc poole pöörduva programmi protsessikataloogi. Kui kaks protsessi loevad /proc'i, antakse neile eri lingid. See on suures osas mugavus hõlbustamaks programmide juurdepääsu oma protsessikataloogi.
/proc/stat Mitmesugused statistilised andmed süsteemi kohta (nagu näiteks lehekülje vigade arv alates alglaadimisest jne).
/proc/uptime Süsteemi töövõimeaeg.
/proc/version Tuuma versioon.

Pange tähele, et kuigi ülaltoodud failid on põhiliselt lihtsad tekstifailid, võib nende vormindusviis olla mõnikord üpris raskesti loetav. Leidub mitmeid käske, mis peale lugemise vormindavad nimetatud faile arusaadavamale kujule. Näiteks programm free loeb faili /proc/meminfo ning muudab baitides antud summad kilobaitideks (lisades samas ka veidi teavet).