1 Süsteemi Linux ülevaade

See peatükk annab ülevaate süsteemist Linux ja tema haldamisest. Esiteks kirjeldatakse operatsioonisüsteemi arendusfilosoofiat ja tähtsamaid võimalusi, teiseks vaadeldakse süsteemihaldusega seonduvaid probleeme. Kolmandaks tutvustatakse üksikasjadesse laskumata programme, mis viivad need võimalused ellu. Lõpetuseks antakse mõned viited, kust otsida vastuseid ebaselgeks jäänud küsimustele. Selle peatüki eesmärk on teha süsteem kui tervik arusaadavaks. Iga osa kirjeldatakse täpsemalt järgnevates peatükkides.

1.1 Linuxi struktuur ja arendusfilosoofia

Kasutajatel tekivad Linuxiga esimest korda kokku puutudes tihti väärarusaamad. Linux on ainulaadne operatsioonisüsteem ja tema efektiivseks kasutamiseks tuleb mõista süsteemi struktuuri ja arendusfilosoofiat.

Operatsioonisüsteemi Unix müügiks väljatöötavates firmades käib arendustöö karmi kvaliteedikontrolli, programmide lähtetekstide modifitseerimissüsteemi, dokumenteerimise, vigade registreerimise ja nende kõrvaldamise keerukate protseduuride kaudu. Programmeerijatel pole lubatud lihtsalt niisama uusi võimalusi lisada ega omaalgatuslikult programmi lähteteksti tähtsamaid osi muuta — nad peavad muudatuse vormistama ametliku veaparandusena ning lisaks registreerima kõik muudatused lähtetekstide haldussüsteemis (et lähtetekstid saaks vajaduse korral algkujule tagasi viia). Igale arendusprogrammeerijale kinnistatakse süsteemi konkreetne osa (või osad), kus temal on muudatuste tegemise ainuõigus.

Kvaliteedikontrolli osakond testib põhjalikult iga uut versiooni ja registreerib avastatud vead. Vastavad programmeerijad peavad leitud vead kõrvaldama. Lisaks kasutatakse keerukat statistilise analüüsi süsteemi, mis tagab, et enne järgmise versiooni müükisaatmist parandatakse mingi kindel protsent vigu ja et süsteem tervikuna vastab kindlatele tootekriteeriumidele.

Teiste sõnadega — meetod, mille abil ärilise Unixi tootjad säilitavad oma lähtekoodi järjepideva tervikluse ja teevad vajalikke muudatusi, on väga keeruline ning seda põhjendatult. Firmal peab olema kindlustunne, et operatsioonisüsteemi järgmine versioon oleks müügiks valmis. Sellest omakorda tuleneb vajadus koguda statistilisi andmeid operatsioonisüsteemi töö kohta ja neid analüüsida. Kommertssüsteemi Unix loomine on suur töö — tihtipeale nii suur, et see hõlmab sadu (kui mitte tuhandeid) programmeerijaid, testijaid, dokumenteerijaid ja juhtpersonali.

Loomulikult ei eksisteeri kahte täpselt ühesugust Unixi tootjat, aga selle kirjelduse eesmärk oli selgitada põhimõtet.

Linuxi puhul võib mõtte organiseeritud arendusest, lähtetekstide kontrollisüsteemist, süstematiseeritud vigade registreerimisest ja statistilisest analüüsist kohe alguses kõrvale jätta. Linux on praegu ning väga suure tõenäosusega jääbki alatiseks häkkerite operatsioonisüsteemiks.

Häkkeri all peetakse siin silmas pühendunud programmeerijat, kes naudib arvutite kasutamist ja teeb tavaliselt arvutitega huvitavaid asju (vastandina kräkkerile või arvutikurikaelale).

Linux on ennekõike Internetis seiklevate vabatahtlike ühise pingutuse vili. Üle kogu Interneti võib igaüks, kel on piisavalt teadmisi, osaleda tuuma arendamises ja vigade otsimises, uute tarkvararakenduste ületoomises, dokumentatsiooni kirjutamises ja vähekogenud kasutajate abistamises. Süsteemi arenduse eest ei vastuta ükski eraldiseisev organisatsioon. Enamasti suhtleb Linuxi seltskond mitmete meililoendite ja USENET-i uudisegruppide kaudu. Selle arendustöö käigus on tekkinud mitmeid tavasid. Näiteks kui keegi soovib oma uuenduse lisada “ametliku” versiooni tuuma, siis peab ta selle saatma Linus Torvaldsile, kes vastavat programmi testib ja siis tuuma lisab (kui uuendus midagi ei riku ega ole vastuolus süsteemi üldise struktuuriga, siis üsna kindlasti ta seda ka teeb).

Süsteemi loomisel on oldud väga avatud uuendustele ja mitmekesistele võimalustele. Kuigi viimasel ajal uute funktsioonide ja kriitiliste muudatuste arv kahaneb, on üldiselt reegliks, et tuuma uus versioon antakse välja paarikuuse intervalliga (vahel isegi sagedamini). Tegemist on muidugi ligikaudse hinnanguga, sest see sõltub mitmest asjaolust, nagu näiteks vastavas ajavahemikus avastatud vigade arvust, tagasisidest “ametlikult” väljaandmata versioone testivate kasutajatega ning ka sellest, kuipalju Linusel nädala jooksul on õnnestunud magada.

Loomulikult ei ole uues versioonis kõik vead parandatud ega probleemid kõrvaldatud. Kui näib, et süsteemis ei ole kriitilisi või tihtiesinevaid vigu, siis peetakse seda “stabiilseks” ja kuulutatakse uueks versiooniks. Linuxi edasiviivaks jõuks ega eesmärgiks ei ole veavaba süsteem, vaid Unixi rakendamine ja arendamine. Linux on mõeldud eeskätt just neile, kes tegelevad arenduse ja programmeerimisega.

Igaüks, kes soovib lisada süsteemi uut funktsiooni või programmi, levitab seda esmalt “alfaversioonina”. See on staadium, kus julged kasutajad üritavad lähtetekstidest vigu leida ja neid kõrvaldada. Kuna Linuxiga seotud inimesed suhtlevad enamasti Interneti vahendusel, siis kopeeritakse alfaversioonid ühte või mitmesse Linuxi ftp-serverisse ning saadetakse mõnda USENET-i uudisegruppi vastav teade, kuidas seda programmi saada ja testida. Kasutajad, kes alfaversioone katsetavad, saavad seega autor(e)ile kirja teel leitud vigadest teatada või neile küsimusi esitada.

Kui alfaversioonis on esimesed vead parandatud, siis liigub programm “beetafaasi”, kus programmi peetakse stabiilseks, kuid mitte valmisolevaks (st programm töötab, aga tal pole veel näiteks kõiki funktsioone). Mõnel juhul võib programm siiski minna alfafaasist otse “lõppfaasi”, kus tarkvara loetakse terviklikuks ja kasutatavaks. Kui funktsioonid, mida soovitakse tuuma lisada, on jõudnud testimisega lõppfaasi, siis võib kasutaja paluda Linusel lisada nad standardsesse tuuma või muuta uueks valikuvõimaluseks.

Tuleb meeles pidada, et need on üldised tavad, mitte reeglid. Mõned inimesed on omakirjutatud programmides nii kindlad, et nad ei näe vajadust alfa- või testversiooni järele. See jääb programmeerija enda otsustada.

Võib-olla imestate, kuidas selline struktureerimata vabatahtlike hulk üldse suudab midagi lõplikku valmis teha. Aga ilmneb, et tegemist on ühe kõige efektiivsema ja motiveerituma arendusprojektiga. Kogu Linuxi tuum kirjutati algusest lõpuni tühjalt kohalt ilma kõrvalist koodi kasutamata. Vabatahtlikud on teinud ära väga suure töö, tuues kõikvõimalikku priivara üle ka Linuxi keskkonda. Loodi tugiprogramme, arendati failisüsteeme ja kirjutati suurele hulgale levinud riistvarale draiverid.

Linux antakse tavaliselt välja tarnekomplektina, kuhu kuulub mitu eelnevalt koostatud tarkvarapaketti, mis koos moodustavad tervikliku süsteemi. Enamikule kasutajatest valmistaks ületamatuid raskusi ehitada süsteem algusest lõpuni käsitsi üles — alustada tuumast, lisada utiliidid ning seejärel kõik muud vajalikud programmid. Selle asemel on mitmeid Linuxi pakette, mis sisaldavad kõiki süsteemi installeerimiseks, käivitamiseks ning kasutamiseks vajalikke mooduleid. Jällegi ei eksisteeri standardset paketti, vaid mitu erinevat, millest igaühel on oma eelised ja puudused.

Hoolimata Linuxi terviklusest on kogu süsteemi korralikuks tööks ikkagi vaja teadmisi Unixi kohta. Ükski Linuxi komplekt pole veavaba, seega tuleb olla valmis väiksemate vigade käsitsikõrvaldamiseks. Unix-süsteemi käigushoidmine ei ole lihtne ülesanne isegi mitte kommerts-Unixi puhul. Kui teil on tõsine plaan Linuxit kasutada, siis pidage silmas, et süsteemi käigushoid nõuab märkimisväärset tähelepanu ja pingutust — see kehtib iga Unix-süsteemi kohta ja Linux pole siin mingiks erandiks. Kuna Linuxiga tegelev seltskond on väga mitmekülgne ning lahendatavaid probleeme palju, siis pole võimalik, et teie jaoks kõik kogu aeg ära tehtaks.

1.1.1 Näpunäiteid värsketele Unixi kasutajatele

Linuxi installeerimiseks ja kasutamiseks pole kauaaegne kogemus Unixiga vajalik. Tegelikkuses õnnestub paljudel, kes pole Unixiga varem kokku puutunud, Linux edukalt installeerida. See on õppimise seisukohalt kasulik kogemus, mis võib mõnele siiski väga piinarikkaks kujuneda. Hea õnne korral läheb teil korda Linux installeerida ja tööle saada ka ilma igasuguse Unixi kogemuseta. Kui te aga olete juba valmis keerukamate ülesannete lahendamiseks (nagu näiteks uue tarkvara installeerimine, tuuma kompileerimine jne), siis muutuvad teadmised Unixist vajalikuks.

Õnneks on teil võimalus Linuxit kasutades Unixi põhitõed selgeks saada. Käesolev raamat sisaldab hulga materjali, mis peaks hõlbustama esimesi samme.

Keegi ei saa Unixi süsteemiülemaks üleöö. Ühestki Unixist ei oodata, et see töötaks täiesti vea- ja hooldusvabalt. Tuleb ennast valmis seada eesseisvaks pikaks reisiks. Vastasel korral, kui teil pole varasemaid kogemusi Unixiga, võite süsteemiga lõplikult konflikti sattuda.

1.1.2 Näpunäiteid kogenud Unixi kasutajatele

Isegi aastatepikkuste Unixikogemustega inimesed võivad vajada pisut abi, enne kui nad Linuxi tööle saavad. On aspekte, millega Unixi profid peaksid enne Linuxisse sukeldumist tutvuma. Esiteks: Linux ei ole kommerts-Unix. Linuxi keskkond ei üritagi järgida samu standardeid, millele vastab Unix. Teiste sõnadega — kuigi stabiilsus mängib Linuxi arenduse juures olulist rolli, pole see sugugi ainus tegur.

Funktsionaalsust peetakse võib-olla isegi tähtsamaks. Paljudel juhtudel satub uus programmijupp standardsesse tuuma isegi siis, kui ta sisaldab veel rohkesti vigu ning pole funktsionaalselt mitte päris valmis. Taolist teguviisi põhjendab see, et tähtsam on levitada testitavaid ja kasutatavaid programme, kui venitada väljaandmisega programmi lõpliku valmimiseni. Näiteks WINE (Microsoft Windowsi emulaator Linuxile) anti välja “ametliku” alfaversioonina enne täielikku testimist.

1.2 Süsteemihaldus

Käesolevas peatükis antakse ülevaade Linuxi süsteemihaldusest, mille hulka kuulub palju selliseid funktsioone, mis on vajalikud ka teistele asjaosalistele peale süsteemiülema. Igal süsteemil on oma ülem ja süsteemi käigushoid on väga tähtis ning tihtipeale aeganõudev töö isegi siis, kui olete süsteemis ainus kasutaja.

1.2.1 Juur (root), võlukepike ja võim

Nagu teada eristab Unix kasutajaid sel teel, et võimaldab reguleerida, mida igal kasutajal lubatakse teha endale, teistele ja kogu süsteemile (näiteks ei soovi mõni inimene, et teised tema armastuskirju loeksid). Igale kasutajale antakse kasutajaõigused, mis koosnevad kasutajanimest, kodukataloogist jne. Lisaks tavalistele kasutajatele on igas süsteemis määratletud erikasutajad, kes omavad erilisi õigusi. Neist kõige tähtsamad on juure (root) kasutajaõigused.

1.2.2 Juure kasutajaõigused

Tavakasutajatele seatakse harilikult sellised piirangud, mis ei võimalda neil kellelegi peale enda kahju teha. Kõigi ühiskasutuses olevaid faile ja katalooge ei saa kasutajad muuta ega kustutada (näiteks /bin ja usr/bin). Enamik kasutajaid kaitseb ka ise oma faile samamoodi (st nii, et teised kasutajad ei saaks neid muuta ega kustutada).

Juurkasutajal pole mingeid piiranguid. Juur võib süsteemis lugeda, muuta või kustutada kõiki faile. Ta võib muuta failide pääsuõigusi ning faili omaniku nime ja käivitada spetsiaalseid programme (näiteks selliseid, millega luuakse kettasektsioone või failisüsteeme). Põhiidee on selles, et tavalisele kasutajale keelatud ülesannete täitmiseks siseneb volitatud isik süsteemi kasutajanimega root. Kuna aga root võib teostada suvalisi operatsioone, on lihtne teha vigu, millel võivad olla süsteemi jaoks katastroofilised tagajärjed.

Näiteks kui üritate tavalise kasutajana kataloogist /etc kõik failid ära kustutada, siis see teil ei õnnestu. Juurkasutaja puhul ei nurise süsteem aga sugugi. Seega on süsteemi kasutamiskõlbmatuks muutmine kasutajanimega root ülimalt lihtne. Selliste õnnetuste ärahoidmiseks tuleb:

Loomulikult leidub hulk Unixi häkkereid, kes kasutavad juure õigusi igal võimalikul juhul (vaatamata sellele, et igaüks neist on mingil nõrkushetkel teinud rumala vea ja muutnud süsteemi töövõimetuks). Üldise reeglina võib siiski soovitada, et kuni te pole veel päriselt tajunud juurkasutaja kõigi piirangute puudumist ja ei tunne end sellises olukorras mugavalt, vältige võimaluse korral süsteemi sisenemist juurkasutaja nime all.

Loomulikult teeb igaüks vigu. Linus Torvalds ise kustutas ükskord kogemata kogu tuuma kataloogisüsteemi. Hulk töötunde oli igaveseks kadunud. Õnneks, tundes hästi süsteemi, läks tal korda teha alglaadimine ja kataloogipuu kettal käsitsi taastada.

Teisiti võiks olukorda kirjeldada nii: kasutajanimi root on nagu võimas võlukepike, mida vibutades võib terveid linnu hävitada. Seega oleks mõistlik võlukepikese vehkimisega ettevaatlik olla. Kuna niisugune hävitav liigutus võib aset leida ka tahtmatult, võtke võluriistapuu kätte vaid hädavajadusel.

1.2.3 Süsteemi väärkasutus

Võimuga kaasneb tendents teda oma huvides ära kasutada. Siin on Unixi süsteemihalduse nõrk koht ja igaüks puutub sellega mingil hetkel kokku. Enamik kasutajaid ei saavuta Unix-süsteemis kunagi sellist võimu — ülikoolide ja firmade süsteemides sisenevad juurõigustega ainult kõrge kvalifikatsiooniga (ja kõrgepalgalised) süsteemiülemad. Nendes süsteemides on juurkasutaja parool tähtis saladus, mida peetakse vastava institutsiooni Pühaks Graaliks. Süsteemi sisenemist juurkasutajana loetakse peaaegu müstiliseks: root on kõikvõimas jõud, millele pääsevad ligi vaid üksikud väljavalitud.

Selline suhtumine juurkasutajasse tekitab pahatahtlikkust ja põlgust. Kuna kasutajanime root ümber tehakse niipalju kära, siis üritavad mõningad kasutajad oma esimesest juurkasutajana süsteemi (Linuxisse või mõnda teise) pääsemise võimalusest maksimaalselt tulu lõigata. Leidub ka selliseid niinimetatud “süsteemiülemaid”, kes loevad teiste kasutajate kirju, kustutavad hoiatamata kolleegide faile ja käituvad niivõrd võimsa “mänguasjaga” nagu lapsed.

Kuna root on süsteemis kõikvõimas, siis eeldab nende õiguste sihipärane kasutamine — st süsteemi käigushoid — teatavat küpsust ja enesekontrolli. Süsteemiülema ning kasutajate vahel eksisteerivad kirjutamata vastastikuse austuse reeglid. Mis tunne teil oleks, kui süsteemiülem loeks teie meilisõnumeid ja uuriks teie faile. Siiani ei leidu ühtki juriidilist pretsedenti elektroonilise privaatsuse kohta hajussüsteemides. Unix-süsteemides on juurkasutajal võimalik vältida kõiki süsteemi turvalisust ja privaatsust tagavaid mehhanisme. Seetõttu on väga tähtis, et süsteemiülema ning kasutajate vahel kujuneksid välja usalduslikud suhted.

1.2.4 Kasutajate käsitlemine

Unixi turvalisus oli alguses üsna lõtv. Süsteemi turbele hakati mõtlema alles hiljem, sest arendustöö toimus esialgu keskkonnas, kus kasutajate vastastikust pahatahtlikkust peeti olematuks. Seetõttu on tavakasutajatel võimalik turvameetmetest hoolimata inetuid tegusid toime panna.

Süsteemiülemad võivad pahandust teinud kasutajasse suhtuda kas paranoiliselt või usaldavalt. Ülikahtlustav süsteemiülem tekitab süsteemis reeglina rohkem kahju, kui ta suudab ära hoida. Ei maksa kunagi pidada kuritahtlikuks tegu, mis võib olla tingitud rumalusest. See tähendab, et enamikul kasutajaist puuduvad teadmised ja oskused süsteemis tahtlikult kurja teha. 90 % juhtudest ei ole kasutaja üldse teadlik, et ta oma tegevusega probleeme tekitab (näiteks täidab kasutajaile mõeldud sektsiooni mahukate failidega, käivitab korduvalt suure programmi teda eelnevalt sulgemata jne). Leidub arvukalt kasutajaid, kes põhjustavad palju pahandust mitte kuritahtlikkusest, vaid lihtsalt teadmatusest.

Kui suhtlete kasutajatega, kes võivad potentsiaalselt probleeme tekitada, siis ei maksa neid kohe süüdistama hakata. Kehtib ammutuntud reegel “süütu, kuni tõestatakse vastupidist”. Kõige parem on kasutajaga lihtsalt vestelda ning selgitada problemaatilisi küsimusi, mitte aga hakata vastastikku vaenutsema. Kõige hullem asi on sattuda kasutajate silmis halba nimekirja. See võib tekitada kahtluse, kas teie — süsteemiülem — ikka suudate süsteemi korrektselt hallata. Kui kasutajal tekib mulje, et ta on teile vastumeelne või te ei usalda teda, siis võib ta hakata teid süüdistama oma failide kustutamises ja privaatsuse rikkumises. Sellisesse olukorda pole ilmselt meeldiv sattuda.

Ka siis kui avastate, et kasutaja on tõepoolest üritanud süsteemi sisse tungida või tahtlikult kahju tekitada, ei maksa kurjale kurjaga vastata. Selle asemel saatke hoiatus ning olge paindlik. Tihtipeale võite kasutaja tabada otse “pahateolt” — piirduge hoiatusega. Öelge, et nii ei ole ilus. Kui te siiski leiate, et sama kasutaja põhjustab jälle probleeme, veenduge veel kord tegevuse tahtlikkuses. Sageli võib ikkagi olla tegemist süsteemiülema enda veaga või lihtsalt õnnetusega, kuigi esmapilgul näib kurja juureks olevat kasutaja.

1.2.5 Käitumisreeglid süsteemis

Ei maksa üritada süsteemi administreerida nagu sõjaväge — Unix ei ole loodud sellise distsipliini jaoks. On mõistlik anda kasutajatele lihtne ja paindlik süsteemi käitumisjuhiste loetelu. Mida vähem reegleid, seda vähem on võimalusi neid rikkuda. Isegi kui teie reeglid tunduvad arukad ja selged, astutakse neist vahetevahel tahtmatult üle. See kehtib eriti värskete Unixi kasutajate kohta, kes alles õpivad süsteemis töötama. Näiteks igaühele pole sugugi endastmõistetav, et hea tooni hulka ei kuulu laadida Internetist gigabait programme ja siis need elektronpostiga süsteemi kõigile kasutajaile laiali saata. Kasutajad vajavad reeglite ning nende olemasolu põhjuste mõistmiseks abi.

Kui te annate süsteemi kasutamiseks juhiseid, siis selgitage ka asjakohast tausta. Vastasel juhul mõtlevad kasutajad välja mitmeid leidlikke viise reeglitest möödahiilimiseks, mõistmata samas reegli ja rikkumise tegelikke seoseid.

1.2.6 Mis siis ikkagi on süsteemihaldus?

Pole võimalik täpselt kirjeldada, kuidas te peaksite oma süsteemi haldama. Meetod tuleneb süsteemi eesmärgist ja kasutusviisist. Paljude kasutajate korral tuleb süsteemi hallata teisiti kui väikese hulga puhul või siis, kui olete süsteemi ainus kasutaja. Ent sellegipoolest tuleks igal juhul mõista, mida süsteemiülemaks olemine tegelikult tähendab.

Süsteemiülema amet ei tee teist veel Unixi proffi. Leidub palju süsteemiülemaid, kes teavad Unixist üpris vähe. Samuti eksisteerib suur hulk “normaalseid” kasutajaid, kelle teadmised Unixi kohta ületavad enamiku süsteemiülemate omi. Süsteemiülema staatus ei luba teil oma kasutajate suhtes ebaausaid võtteid kasutada. Võimalus kasutajate failidele ligi pääseda ei tähenda veel, et teil on selleks ka õigus.

Lõppeks ei ole süsteemiülema amet midagi erilist. Pole vahet, kas teie süsteemiks on mõni 386 või Cray superarvuti. Süsteemi haldamine käib ikka ühtmoodi. Juurkasutaja parooli teadmine ei lisa raha ega kuulsust, vaid lubab teil lihtsalt süsteemi käigus hoida. See ongi kõik.

1.3 Operatsioonisüsteemi osad

Operatsioonisüsteem Unix koosneb tuumast ja mõnest süsteemiprogrammist. Töötamiseks on seal ka mitmeid rakendusprogramme. Tuum on operatsioonisüsteemi süda (tihti peetakse teda ekslikult operatsioonisüsteemiks eneseks, operatsioonisüsteem pakub palju rohkem võimalusi kui tavaline tuum). Tuum säilitab kettal faile, käivitab programme ja hoiab neid samaaegselt töös, eraldab erinevatele protsessidele mälu ning teisi ressursse, võtab võrgust vastu ja saadab võrku pakette jne. Tuum teeb ise väga vähe, aga ta pakub vahendeid, millele saab rajada kõik teenused. Samuti takistab tuum otsest juurdepääsu riistvarale, sundides kõiki kasutama olemasolevaid erivahendeid. Niiviisi võimaldab tuum kasutajatele teineteise eest teatud kaitset. Vahendeid, mida tuum pakub, saab kasutada süsteemipöörduste kaudu.

Süsteemiprogrammid kasutavad tuuma pakutavaid vahendeid teostamaks erinevaid operatsioonisüsteemile vajalikke teenuseid. Erinevus süsteemi- ja rakendusprogrammide vahel seisneb nende tegevuse eesmärgis: rakendusprogrammid on kasutajatele kasulike asjade tegemiseks (näiteks mängimiseks), aga süsteemiprogrammid tagavad süsteemi töö. Näiteks tekstiredaktor on rakendusprogramm, telnet aga süsteemiprogramm. Vahe on tihti üsna ähmane ja oluline ainult kohustuslikes kategooriates.

Operatsioonisüsteem võib sisaldada ka kompilaatoreid ja nendega seotud teeke (GCC ja C-teegid Linuxi all), ehkki mitte kõik programmeerimiskeelte kompilaatorid ei pea olema operatsioonisüsteemi osad. Operatsioonisüsteemi võib kuuluda dokumentatsioon ning vahel isegi mängud. Traditsiooniliselt on operatsioonisüsteem määratletud installeerimisketta sisuga. Linuxiga pole asi nii selge, sest ta on kättesaadav paljudes eri tarneversioonides.

1.3.1 Tuuma tähtsamad osad

Linuxi tuum koosneb mitmest olulisest osast: protsessihaldur, mäluhaldur, riistvaradraiverid, failisüsteemi draiverid, võrguteenused jne. Mõningaid neist leiate jooniselt (vt Joonis 1.1).

Joonis 1.1 Mõned tähtsamad Linuxi tuuma osad

Tuuma kõige tähtsamad osad on tõenäoliselt mälu- ja protsessihaldur, kuna miski ei tööta nendeta. Mäluhaldur hoolitseb mälu ja saalealade jaotuse eest protsessidele, tuuma osadele ning puhvermälule. Protsessihaldur käivitab protsesse ja teostab multitegumtööd, vahetades protsessoril aktiivseid protsesse.

Tuuma madalaimal tasemel paiknevad riistvaradraiverid kõikvõimaliku riistvara jaoks, mida tuum toetab. Kuna maailm on täis erinevat riistvara, leidub ka suur hulk riistvaradraivereid. Tihti esineb sarnaseid seadmeid, mis erinevad vaid juhttarkvara poolest. Sarnasuste tõttu võib draiverid rühmitada üldklassidesse, mis toetavad analoogilisi operatsioone. Iga klassi liige omab ülejäänud tuumaga sama tüüpi liidest, mis erineb vaid liidese tekitamiseks vajalike atribuutide poolest. Näiteks kõik kettadraiverid näivad ülejäänud tuuma jaoks sarnased, st neil kõigil on sellised operatsioonid nagu “algväärtusta ketas”, “loe sektor N”, “kirjuta sektor N” jne.

Mõned tuuma tarkvarateenused omavad sarnaseid atribuute ja neid võib seetõttu klassideks rühmitada. Näiteks eri võrguprotokollid on koondatud ühe programmeerimisliidese alla. Teine näide on virtuaalse failisüsteemi (VFS) kiht, mis eraldab failisüsteemi operatsioonid nende teostusest. Iga failisüsteemi tüüp pakub teostust kõigile failisüsteemi operatsioonidele. Kui keegi üritab kasutada failisüsteemi, suunatakse vastav soov läbi VFS-i, mis omakorda saadab selle edasi sobivale failisüsteemi draiverile.

1.4 Süsteemi Unix põhiteenused

Siin kirjeldatakse detailidesse laskumata mõningaid tähtsamaid Unixi teenuseid. Üksikasjalisemaid kirjeldusi võite leida hilisemates peatükkides.

1.4.1 Programm init

Kõige tähtsamat teenust pakub Unix-süsteemis init, mis käivitatakse igas süsteemis esimese protsessina ehk tuuma viimase tegevusena alglaadimise käigus. Pärast käivitumist jätkab init alglaadimisprotsessi, teostades erinevaid käivitustöid (kontrollib ja ühendab failisüsteemid, käivitab deemonid jne).

Protsessi init täpne toimingute nimekiri sõltub tema tüübist. Init pakub harilikult ainukasutajarežiimi, kus keegi ei saa end sisse logida ja juur kasutab pulti. Võimalik on ka ühiskasutusrežiim. Mõnede tüüpide puhul eeldatakse, et tegemist on erinevate töötasemetega. Ainukasutaja- ja ühiskasutusrežiimi peetakse kaheks eritasemeks, ent võib olla ka täiendavaid tasemeid (näiteks töö X-iga puldilt).

Normaalse töö korral kontrollib init, kas getty'd töötavad (lubamaks kasutajatel sisse logida), ja adopteerib orbprotsessid (protsessid, mille emaprotsessid on surnud; emaprotsess loob uusi tütarprotsesse). Unixis peavad kõik protsessid olema ühes puus, seega tuleb orvud adopteerida.

Süsteemi sulgemisel juhib init teiste protsesside kõrvaldamist, lahutab kõik failisüsteemid, peatab protsessori ja sooritab muud konfiguratsioonis ettenähtud operatsioonid.

1.4.2 Logimised terminalidest

Logimised terminalidest ja puldist (kui ei kasutata X-i) toimuvad programmiga getty. Init käivitab iseseisva getty eksemplari iga terminali jaoks, millelt on sisselogimine lubatud. Getty loeb kasutajanime ja käivitab programmi login, mis loeb parooli. Kui kasutajanimi ja parool on õiged, siis käivitab login kasutaja kesta. Pärast kesta töö lõppu (st kui kasutaja logib end välja või login lõpetatakse ebaõige kasutajanime ja parooli tõttu) käivitab init getty uue eksemplari. Tuumal ei ole sisselogimistest ülevaadet, selle kõige eest hoolitsevad süsteemiprogrammid.

1.4.3 Programm syslog

Tuum ja mitmesugused süsteemiprogrammid väljastavad vea-, hoiatus- ja muid teateid. Tihti on vajalik neid ka hiljem vaadata, seega peaks teated faili kirjutama. Seda teeb programm nimega syslog. Programmi syslog saab konfigureerida teateid saatja või prioriteedi järgi eri failidesse sortima. Näiteks tuuma teated suunatakse sageli eraldi faili, kuna tegemist võib olla eriti olulise teabega, mis võimaldab avastada tekkinud või potentsiaalseid probleeme.

1.4.4 Käskude perioodiline täitmine: cron ja at

Nii süsteemi kasutajad kui ka ülemad vajavad tihti käskude või programmide perioodilist käivitamist. Näiteks süsteemiülem võib soovida käivitada käsku puhastamaks ajutiste failide katalooge ( /tmp ja /var/tmp ) vanadest failidest, et vältida ketaste liigset täitumist, kuna mitte kõik programmid ei pruugi ketast enda järel korrektselt puhastada.

Selle teostamiseks on ette nähtud teenus nimega cron. Igal kasutajal on olemas crontab, kus ta määratleb käivitatavad käsud ja soovitavad käivitusajad. Deemon cron hoolitsebki käskude käivitamise eest määratud ajal.

Teenus at sarnaneb croniga, ent ta on ühekordne: käsk käivitatakse etteantud ajal ja see ei kordu.

1.4.5 Graafiline kasutajaliides

Unix ja Linux ise otseselt kasutajaliidest tuumaga ei ühenda, vaid nad lasevad selle sideme luua kasutajataseme programmidel. See puudutab nii tekstirežiimi kui ka graafikakeskkonda.

Niisugune ülesehitus muudab süsteemi küll paindlikumaks, ent samas raskemini õpitavaks (kuna saab hõlpsasti luua iga programmi jaoks erineva kasutajaliidese).

Linuxis kasutatakse põhiliselt graafikakeskkonda X Window System (lühidalt X). X ise ei realiseeri kasutajaliidest; vaid ainult aknasüsteemi (st vahendit graafilise kasutajaliidese realiseerimiseks). Kolm kõige populaarsemat X-is teostatud kasutajaliidest on Athena, Motif ja Open Look.

1.4.6 Võrgu loomine

Võrgu loomine on kahe või enama arvuti ühendamine nii, et nad saavad omavahel suhelda ja ühiseid ressursse kasutada. Tegelikud ühendus- ja suhtlusmeetodid on pisut keerukad, kuid lõpptulemus reeglina väga kasulik.

Unix-pere operatsioonisüsteemid omavad mitmeid võrguloomisvahendeid. Enamikku lihtsamaid teenuseid — failide käideldavus, printimine, varukoopiate tegemine jne — saab teha läbi võrgu. See võimaldab süsteemihaldust lihtsustada (tsentraliseerida).

1.4.7 Logimine võrgus

Võrgulogimised toimivad teisiti kui tavalised logimised. Iga terminali jaoks eksisteerib eraldi füüsiline jadakaabel, mille kaudu saab sisse logida. Iga võrgus sisselogiva kasutaja jaoks on olemas iseseisev virtuaalne võrguühendus, kusjuures neid võib olla kuitahes palju (ehkki reaalses elus kujuneb siiski mingi praktiline ülempiir üheaegsetele logimistele läbi antud võrguühenduse, kuna võrgu ribalaius on raskesti kättesaadav ressurss). Seepärast ei saa käivitada eraldi getty't igale võimalikule virtuaalühendusele. Lisaks eksisteerib mitmeid eriviise läbi võrgu sisselogimiseks (näiteks TCP/IP-võrkudes on tähtsaimad telnet ja rlogin). Võrgulogimistel on paljude getty'de asemel üks deemon ühe sisselogimisvõimaluse kohta (telnet ja rlogin omavad eraldi deemoneid), mis kuulab kõiki sissetulevaid logimiskatseid. Kui deemon märkab ühte logimiskatset, siis käivitab ta endast uue eksemplari tegelemaks selle konkreetse katsega; originaaleksemplar aga jätkab teiste katsete kuulamist. Uus eksemplar töötab nagu harilik getty.

1.4.8 Võrgufailisüsteemid

Üks tulusamaid võrguteenuseid on failide ühiskasutus võrgufailisüsteemi kaudu. Tavaliselt rakendatakse selleks firma Sun meetodit Network File System (NFS).

Võrgufailisüsteemis saadetakse iga ühes arvutis tehtav failioperatsioon läbi võrgu ka teise arvutisse. Sisuliselt võrdub see pettusega: programm arvab, et füüsiliselt teises arvutis paiknevad failid on samas arvutis, kus programm ise töötab. Informatsiooni ühiskasutus muutub lihtsamaks, kuna kaob vajadus programmide muutmise järele.

1.4.9 Elektronpost

Elektronpost on inimeste jaoks tavaliselt kõige tähtsam arvutite kaudu suhtlemise meetod. Elektronkiri salvestatakse erivormingu abil faili ning spetsiaalsed programmid (meilerid) saadavad ja võtavad kirju vastu.

Igal kasutajal on sissetulevate kirjade jaoks oma postkast (spetsiaalse vorminguga fail), kuhu kogu post salvestatakse. Kui keegi saadab kirja, siis selgitab meiler välja saaja postkasti asukoha ning lisab kirja vastava postkasti failile. Kui saaja postkast on teises arvutis, siis saadetakse kiri teise arvutisse, mis toimetab ise kirja sobival viisil õigesse postkasti.

Postisüsteem koosneb mitmest programmist. Kirja toimetamise eest kohalikesse või ka kaugpostkastidesse hoolitseb üks programm (postiedastusagent ehk MTA, näiteks sendmail või smail). Kasutajaile pakutakse ka mitmeid teisi programme (sh postikasutajaagent ehk MUA, näiteks pine või elm). Postkastid paiknevad harilikult kataloogis /var/spool/mail.

1.4.10 Print

Kuigi printerit saab korraga kasutada vaid üks inimene, suurendab ühiskasutus printeri ökonoomsust oluliselt. Printeri tarkvara haldab prindijärjekorda — kõik prindiülesanded pannakse järjekorda ja pärast ühe töö lõpetamist alustab printer automaatselt järgmisega. See vabastab kasutajad prindijärjekorra organiseerimisest ning võitlusest printeri monopoliseerimise eest.

Prindijärjekorra tarkvara puhverdab prindid kettale (st kuni töö on järjekorras, hoitakse teksti erifailis). Nii saab rakendusprogramm anda prinditööd kiiresti üle prindijärjekorra tarkvarale ning ise jätkata oma tegevust, ootamata töö tegelikku valmimist.

1.5 Failisüsteemi jaotus

Failisüsteem on tavaliselt jaotatud mitmeks osaks: juurfailisüsteemiks (/bin, /lib, /etc, /dev ja mõned muud); programme ja püsiandmeid sisaldavaks failisüsteemiks /usr; muutuvate andmetega failisüsteemiks /var (nt logifailid) ning isiklike failide failisüsteemiks /home. Sõltuvalt riistvara konfiguratsioonist ja süsteemiülema otsusest võib see jaotus olla erinev ning põhimõtteliselt võiks kõik paikneda ka ühes failisüsteemis.

1.6 Lisateabe allikad

Süsteemihaldus tähendab tavaliselt ettetulevate vigade kõrvaldamist ja süsteemi pidevat uuendamist ning laiendamist. Loomulikult ei leidu selles raamatus vastuseid kõigile küsimustele. Ka mõned konkreetsed juhised võivad Linuxi vananemise tõttu ebatäpseteks osutuda. Raamatus toodud selgitused peaksid siiski aitama mõista süsteemi osade tööpõhimõtteid ning seega ka vigade võimalikke põhjusi. Kuna enamik Linuxit puudutavat kirjandust on ingliskeelne, siis soodustab edukat haldustööd inglise keele oskus vähemalt veerimise tasemel. Loodetavasti aitavad siintoodud selgitused lahti mõtestada ka neid osi, mis otse inglise keeles lugedes muidu arusaamatuks jääksid.

1.6.1 Kohalikud teabeallikad

Esmaseks teabeallikaks on Linuxiga kaasasolevad materjalid ja leheküljed, mis kirjeldavad programmide funktsioone ning kasutusvõimalusi. Näiteks failide kopeerimisprogrammi cp kohta saab lisateavet käskudega

info cp

man cp

Käsk info üksinda annab kõigi infolehekülgede sisukorra. Kui mingi programmi kohta pole infolehekülge, aga on juhendi lehekülg (manual page), siis käsk info teatab seda. Käsk man võib aga osutuda kasulikuks olukorras, kui te ei tea täpset käsku soovitud tulemuse saamiseks.

man -k võti

Argumendi võti kohale kirjutage mõni teemat iseloomustav sõna ja vastuseks saate käskude loendi, mille lühikirjelduses see sõna esineb.

Lisaks tasub vaadata kataloogi /usr/doc. Kui te installeerisite Linuxi laserkettalt, siis saate kasutada ka CD-l leiduvat dokumentatsiooni. Arvatavasti leiate sealt vähemalt osa LDP (Linux Documentation Project) tulemusi.

1.6.2 Teabeallikad Internetis

Koos Linuxiga areneb ka tema dokumentatsioon. Vastavat projekti nimetatakse LDP-ks (Linux Documentation Project). LDP sisaldab mitmeid käsiraamatuid, hulga "HOW TO" stiilis näpunäiteid ühe või teise olulise haldustöö tegemiseks, viiteid uudisegruppidele, meililoenditele ja teistele teabeallikatele. Lähimad LDP peegeldused võib leida aadressidel

http://www.edu.ee/LDP/  ja http://ldp.mpoli.fi.

Alati on hädas võimalik abi saamiseks pöörduda Linuxi uudisegruppide ja meililoendite poole. Asjalikele küsimustele saab sealt üldjuhul ka asjalikke vastuseid. Püüdke siiski enne küsimist jõuda iseseisvalt olemasoleva dokumentatsiooni põhjal nii kaugele kui võimalik. Keegi ei hakka teile meili teel ümber jutustama või tõlkima vastust küsimusele “Kuidas installeerida elektronposti?”, küll aga võidakse aidata leida sobivat konfigureerimisparameetrit mingi omaduse saavutamiseks. Pisikese probleemi lahendamiseks kulutatud tunde ei tasu pidada kaotsiläinuks. Ainult nii ongi võimalik Linuxit sisemiselt tundma õppida ja paremaks süsteemiülemaks saada.