A LINUX ALAPJAI:
Kernel röviden:
A modern operációs rendszerek több szintből épülnek fel. Minden szintnek megvan a maga szerepe. Az egyik a grafikus felhasználói felületről (GUI) gondoskodik, a másik a lemez hozzáférést biztosítja. De az alapvető szint, ami nélkül az operációs rendszered el sem indul, na őt hívjuk kernelnek. A kernelben találhatók többek közt az alacsony szintű szolgáltatások, amilyen a memória-menedzsment,hardver összefüggések kezelése stb.
Bevezető:
A most induló kis cikksorozatban szeretnénk a Linux alapjait emberközeli módon bemutatni, különös tekintettel a fogalmakra, az installálásra és egyéb olyan dolgokra, amelyek a kezdő linuxos vagy linuxozni vágyó egyedeknek gondot szoktak jelenteni. Ez nem meglepő, hiszen aki még nem találkozott Unix rendszerrel vagy annak valamelyik változatával, és nem ismeri a filozófiát - esetleg Windows-hoz van szokva, mint a felhasználók döntő többsége -, annak nem könnyű megérteni a linux felépítését, amely egyébként alapvetően nagyon is egyszerű és logikus, de gyökeresen más, mint a dos vagy windows.
Először kezdjük egy kis történeti áttekintéssel. Egy Linus Torvalds nevű finn egyetemista 1991 augusztusában nekiállt fejleszteni egy operációs rendszert, amivel semmi komolyat nem akart, csak annyit, hogy az ő személyes igényeinek megfeleljen. Nem volt elégedett a DOS és Windows szegényes képességeivel, de nem engedhette meg magának a drága Unixokat vagy más operációs rendszert. Aztán úgy alakultak a dolgok, hogy felfigyeltek rá mások is, és a linux első változata megjelent néhány ftp szerveren kipróbálásra. Linus hamar kapott sok támogató levelet meg felajánlásokat a továbbfejlesztésre. Egy részletes és érdekes interjút olvashatunk erről többfelé a hálózaton, Linux Manifesto címen.
Ahol ma tart a linux:
Ebből nőtte ki magát a linux mára azzá, ami: az internet sokezer programozója által fejlesztett, sokfunkciós operációs rendszer, teljes mértékben nyílt forráskóddal. Ez azt jelenti, hogy minden, a linux részét alkotó program szöveges forráskódja szabadon és ingyenesen hozzáférhető, ellenőrizhető és módosítható. Ebből kifolyólag a Linux maga ingyenes - persze bizonyos programok, pl. irodai segédeszközök, játékok lehetnek pénzesek -, amit a linuxért esetleg fizetni kell, az a csomagolás, kézikönyv és anyagköltség.
Egy másik, gyakran feltett kérdés a disztribúciók problémája. A linuxnak több változata (disztribúciója) létezik, ezek alapvetően ugyanazokat a - disztribúciótól függetlenül fejlesztett - programokat, könyvtárakat, stb. tartalmazzák, általában kis eltérésekkel. Ezek többnyire kimerülnek a grafikus felület alapértelmezett konfigurációjában (menük szerkezete, ikonok), illetve a konfigurációs file-ok, dokumentációk elhelyezésében. Lényeges különbségek tehát nincsenek a disztribúciók között, sem tudásban, sem képességekben. A legjobb tanács, hogy melyiket válasszuk: azt, amelyik a havernak van. Nyilván, ha elkezdünk linuxozni, sok problémával szembesülünk folyamatosan - ezt én személy szerint is tudom garantálni -, és a legkönnyebb ahhoz segítséget kérni, amiben a környezetünkben levő emberek tudnak segíteni. Néhány nevesebb linux disztribúció, a teljesség igénye nélkül: Red Hat, Debian, SuSE, Mandrake.
Fogalmak:
A linux valójában egy ingyenes Unix változat. Ebből következően a felépítése hasonló, ún. réteges, mely mind elméletében, mind megvalósításában megfelel a modern operációs rendszerekkel szemben támasztott követelményeknek. A linux magja a kernel (lásd a "Mi is az a Kernel?" c. cikket), ebben foglalnak helyet a driverek az alaplap funkcióihoz, kártyákhoz, egérhez, billentyűzethez, egyszóval mindenhez, ami a gép alkatrészállományát képezi. A kernel a linuxon belül is egy külön állatfaj, nagyon nagy hangsúlyt fektetnek a fejlesztésére, mivel a legfontosabb biztonsági és egyéb alapvető funkciókat látja el. A kernel feladatai közé tartozik továbbá a memóriakezelés, virtuális tárkezelés (swap mechanizmus), filerendszerek (erről később) támogatása, valamint a kapcsolat biztosítása a fölötte levő réteggel, a könyvtárakkal és az azokat használó programokkal.
A linux teljesen hálózat-orientált operációs rendszer. Néhány kényesebb dolgot kivéve, egy a célra bekonfigurált linux rendszeren ugyanazt meg lehet csinálni távolról, hálózaton keresztül, mint a gép konzoljáról. Interaktív kapcsolatot lehet vele létesíteni, parancsokat lehet kiadni, programokat indítani, amelyek a linux szerveren futnak és visszajelzéseiket a munkaállomáson dolgozó felhasználónak küldik, illetve az ő parancsait fogadják. Ehhez szüksége van egy jelszóval védett hozzáférési lehetőségre minden felhasználónak, hasonlóan a Windows-ban megszokott login/password-höz, csak sokkal szigorúbban és biztonságosabban nyilvántartva, amelyről az operációs rendszer és a rendszergazda együttesen gondoskodik. A hálózat ilyen magasszintű támogatása magával hordozza ennek hátrányát is: számtalan (elméleti) lehetőség adódik a betörésre, azaz az illetéktelen hozzáférésre, ami a legveszélyesebb dolog, ami egy szerverrel történhet, hiszen a felhasználók a linuxos gép erőforrásain osztoznak, és azon a saját személyes dolgaikat tárolják.
Általános benyomások:
A linux használatához kell számítógépes érdeklődés. Aki csak játszani szokott, és nem érez motivációt arra, hogy mást is kezdjen a számítógépével, annak - egyelőre - nem igazán éri meg a linuxszal próbálkozni. Ezzel együtt megeshet, hogy az érdeklődés menet közben alakul ki, és mostmár tart olyan szinten a linux, hogy a kezdeti ismerkedések alkalmával is folyamatosan jönnek a sikerélmények. Cserébe egy stabil, megbízható, a gépet teljes mértékben - általában igen gazdaságosan - kihasználó operációs rendszert kapunk, aminek egyik legnagyobb előnye a konfigurálhatóságában rejlik. Teljesen saját képünkre alakíthatjuk a gépet, és egy jól üzemeltetett linux rendszer pontosan azokat, és csak azokat a funkciókat csinálja, amiket mi parancsolunk neki. Nincsenek titokzatos lefagyások, nincs olyan, hogy az egérdriver frissítése után a videokártya nem azt csinálja, amit eddig, nem kell időnként rebootolnunk, mert "nem tudom, hogy mi a baja, de valami nem jó", és az egyetlen funkció, ami teljesen hiányzik a linuxból, az a nevezetes kék képernyő a fehér szöveggel.
A linux mint desktop OS:
A linux leginkább kiváló szerver
tulajdonságai miatt híres, azonban nem ez az a
jellemzője, ami új híveket szerezhet neki a szórakozni
(is) vágyó felhasználók körében.
Kétségtelenül a legnagyobb - talán egyetlen
- hátránya jelenleg a rendelkezésre álló
desktop alkalmazások Windows-éhoz viszonyított
kis száma. Szerencsére ez a hézag rohamléptekkel
csökken, és az operációs rendszer
adottságai miatt a lehetőségek legalább olyan
jók a könnyen kezelhető, szép, és
ugyanakkor hatékony programok kifejlesztésére. A
linux eredetileg szöveges felhasználói felülete,
bár nagyon alkalmas az operációs rendszer
kezelésére, nem a legvonzóbb a
felhasználóbarátság szempontjából.
Az általában Unixok körében használt,
és folyamatosan javítás, bővítés
alatt álló X Window System (röviden: X) nevet
viselő grafikus felület, amely képességeiben,
hatékonyságában és konfigurálhatóságában
messze meghaladja a Windows legszebb álmait is, szerencsére
azonban működik és elérhető linux alatt is, sőt, a
mostani disztribúciók már mind szerves
részükként tartalmazzák. Érdeklődőbbek
nézelődjenek például az e.themes.org
vagy a wm.themes.org házatáján,
gyors elrettentésül álljon itt saját
desktopom kicsit régebbi változata:
Mint
gyakorlatilag minden a linuxban, az X is a szerver-kliens modellen
alapul: az X szerver az, ami a grafikus képernyőt kezeli, és
az alkalmazások ezzel a szerverrel kommunikálnak, az ő
segítségével nyitják meg ablakaikat a
képernyőre. Általában a szerver és az
egyéb programok ugyanazon a gépen futnak, így a
modellnek nincs túl nagy jelentősége, azonban a
lehetőség adott arra, hogy tetszőleges gépen futtatott
program a például a saját képernyőnkön
jelenjen meg, legyen az mondjuk egy Netscape Navigator egy másik
gépről indítva, az egyetlen feltétel, hogy a
hálózati összeköttetés meglegyen.
A desktop változatai:
A grafikus rendszer egyik legfontosabb eleme az
ablakkezelő, a window manager. Ez az a háttérben futó
program, ami az ablakok elhelyezéséért,
mozgatásáért, bekeretezéséért,
ikonizálásáért és hasonló
dolgaiért felelős. A Windows-ban ennek nem nagyon van
megfelelője, hiányát észlelhetjük akkor,
amikor valami várakozik és mi a homokórát
nézzük: ekkor az ablakot nem tudjuk mozgatni sem.
Ablakkezelőből sokfajta létezik, ez felelős leginkább a
desktop kinézetéért; vannak olyanok, amelyek egy
nagyteljesítményű Unix gép érzetét
keltik, mások azt hitetik el velünk, hogy egy Mac,
esetleg Amiga előtt ülünk, de nem kell elszakadni az
ismerttől :) sem (fvwm95 ablakkezelő):
A grafikus felület jelenlegi állapotában
azonban már ehhez képest is továbbfejlődött:
kialakult két ág, a Gnome
és a K Desktop Environment,
amelyek egy egységes felhasználói felületet
nyújtanak saját vagy kompatibilis ablakkezelővel, saját
alkalmazásokkal és konfiguráló
segédprogramokkal. A leggyakrabban használt
ablakkezelők a WindowMaker,
az Afterstep és minden
idők legelvetemültebbje, az Enlightenment.
Hogy ki melyiket választja, az ízlés dolga,
semmi megkötés nincs, természetesen valamennyi
modern ablakkezelő
a szokásos megjelenítésen kívül sok
egyéb kényelmi funkciót is nyújt.
..és amiket használni lehet:
Mára szinte teljes körűvé vált a felhasználói programok palettája. Van sokféle MP3-lejátszó, közülük a legismertebb az X Multimedia System, melyre winamp skineket húzhatunk; számos képnézegető, például az XV vagy a GQview, és ott a The Gimp, a híres sokfunkciós rajzolóprogram. Az itt felsoroltak mindegyike teljesen ingyenes, így (végre :)) anyagi kiadások nélkül élvezhetjük a legális programok áradatát.
A filerendszer:
A filerendszer ismerete minden linuxos számára elengedhetetlen. Olyannyira, hogy már az installáló program - egyébként egyszerű - kérdéseire sem tudunk válaszolni, ha nem ismerjük a fogalmakat, amelyek legfeljebb a másfajta elnevezések miatt lehetnek először furcsák, azonban hamar világossá válik a jelentésük.
A linux filerendszerének logikai felépítése hasonlatos a dos/windows-éhoz. Pontosabban, ez utóbbi hasonlít a linuxhoz, hiszen a harminc éves Unix szabvány (gyenge minőségű) koppintása. Az állományok ugyanúgy könyvtárakban vannak, a könyvtárak pedig ugyanolyan hierarchikus szervezésűek, azzal az eltéréssel, hogy nem \ (backslash) karakter az elválaszó, hanem / (per). A meghajtók (merevlemezek, partíciók) nem betűjelekkel (A:, C:, stb.) vannak azonosítva, hanem a könyvtárstruktúra részeként jelennek meg (erről kicsit később, a Mount oldalon). Mit is takar ez? Egy, és csak egy gyökérkönyvtár (root directory) van, ennek jelölése "/", minden alkönyvtárnak a gyökérkönyvtár tagjának kell lennie. Van egy speciális könyvtár linuxban, a "/dev" - itt a per jel azt jelöli, hogy a "dev" könyvtár közvetlenül a gyökérkönyvtárhoz kapcsolódik -, ez a "devices" rövidítése. Mint a neve is mutatja, ebben találhatók az eszközök, legalábbis azok logikai megjelenése a linux számára. Eszközök alatt minden olyan hardware elem értendő, amelyhez a kernel driverrel rendelkezik, tehát merevlemezek, CD-olvasó/író, IDE, SCSI és egyéb csatolóbuszra kapcsolt perifériák, hangkártyák, billentyűzet, egér és még sokminden más. Minden eszköz egy file-ként érhető el, így például:
/dev/mouse: egér, valójában egy mutató a /dev/psaux-ra (PS/2 device), vagy /dev/ttyS0-ra (serial port 1 - a COM0 megfelelője, soros egér esetén), stb.
/dev/hda: az első merevlemez, illetve az egyetlen, ha nincs több a gépben (hd = hard disk). A továbbiak /dev/hdb, /dev/hdc, stb. sorrendben kerülnek automatikusan elnevezésrea gép bootolásakor, ide a CD-k is beszámítanak. Az adott periféria esetleges partíciói pedig számozva vannak, pl. /dev/hda1, /dev/hda2.
/dev/cdrom: neve elég jól mutatja, hogy mi is ez, egy mutató a megfelelően besorolt CD rom-ra, pl. /dev/hdb.
/dev/console: ha olvasunk róla, akkor ez a billentyűzet, ha írunk bele, akkor alapértelmezés szerint a monitor.
Ha ezeket a file-bejegyzéseket piszkáljuk, akkor valójában a kernel driverével kommunikálunk, a kernel tudja, hogy melyik file mit jelent a számára és mit kell vele tennie. Ez a legalacsonyabb (leggépközelibb) szintje az operációs rendszernek, amivel a felhasználónak foglalkoznia kell(het), ennél mélyebbre már csak a programozóknak kell ásniuk. Egy szemléletes példa ezeknek a /dev/xxx bejegyzéseknek a közvetlen használatára az image olvasása/írása: ahogyan az ismert Norton Ghost program a partíciót teljes egészében leolvassa és file-ba menti, úgy érhetjük el mi is a merevlemez partícióját közvetlenül a /dev/hda[X] olvasásával/írásával. Ha CD-ROM-ot adunk meg (például /dev/hdb), akkor az eszköz olvasása ISO formátumú CD image-t for produkálni. (Bátrabbaknak: dd parancs, NAGYON vigyázzunk az írással!) A linux filerendszerében további meghatározott nevű és funkciójú könyvtárak találhatók, ezeket később részletesebben bemutatjuk.
A mount:
Az egyik legfontosabb fogalom, amivel mindjárt az installálásnál találkozunk, a mount. Linux rendszerben ez egy parancs is: "mountolni" annyit jelent, mint valamely fizikai egységet, amin filerendszer van, logikailag a meglévő struktúrához csatolni. Ha például merevlemezünk első partícióján windows foglal helyet, ezt beilleszthetjük a linuxos könyvtárstruktúrába a kernelnek köszönhetően, amely gond nélkül írja-olvassa a FAT (dos és windows95/98 által használt filerendszer) valamennyi ismert változatát. Létrehozhatunk a példa kedvéért egy /win könyvtárat, ami valójában üres, de a windowsos partíció beillesztése után láthatjuk a tartalmát, mert a kernel tudni fogja, hogy az ezen a könyvtáron belüli hivatkozásokat a másik partícióra kell irányítani. Ezek az alkönyvtárakba beillesztett partíciók lesznek a C:, D: és a többi, windows-ban betűjellel azonosított meghajtó megfelelői. Így a "mountolás" után elérhető lesz a /win/Windows, /win/Windows/System, /win/Temp, és minden, amit windows alatt létrehoztunk. Természetesen írhatunk is ide, másolhatunk file-okat, amiket aztán windows-ban is látni fogunk. Visszafelé azonban ez nem igaz, a windows - néhány kényelmetlen és nem megbízható segédprogram nélkül - nem képes kezelni a linux lényegesen bonyolultabb (ext2) filerendszerét.
Itt kerül elő a /dev-ben található bejegyzések fontossága: a filerendszer csatolása nem más, mint egy könyvtár és egy meghajtó, például /win és /dev/hda2 összekapcsolása. Enélkül a partíción lévő adatokat csak image-ként érhetjük el, az egyes file-okat nem. Azért van szükség erre az eljárásra, mert mountolni sokféle filerendszert lehet, amelyek nem szükségszerűen a merevlemez partíciói vagy CD meghajtók, de lehetnek akár a hálózaton keresztül elérhető gépek kiajánlott vagy megosztott meghajtói is, a linux kernel pedig biztosítja a tökéletes átlátszóságot, azaz egy csatolt filerendszer használatakor a programok, illetve a felhasználó elől rejtve marad, hogy az valójában hol helyezkedik el. A file-okon végezhető műveletek általánosságban ugyanazok, a kernel pedig magától megoldja az esetlegesen szükséges hálózatkezelést. Jó példa erre a samba programcsomag, amellyel a windows-ban megismert share-elt (megosztott) könyvtárakat lehet linuxban mountolni egy alkönyvtárba és használni. Ezen kívül mountolható még az Unix világában általános szabványként elfogadott NFS (Network File System), illetve a fejlesztés alatt álló CODA filerendszer is. Ennek a modellnek az alkalmazásával általános módszerekkel lehet a csatolt filerendszereket kezelni, legyen az floppy meghajtó vagy file-ban levő ISO formátumú CD image, amelyet szintén lehet mountolni és így a tartalmát vizsgálni, illetve a file-okat egyenként elérni (kernel: loopback device support).
A csatolt filerendszereket, ha már biztosan nincs rájuk szükség, érdemes leválasztani a könyvtárstruktúrából. Erre szolgál az umount parancs, amely a gyorsítótárban (cache) esetlegesen levő adatokat felírja a helyükre, majd törli a csatolással kapcsolatos adminisztratív bejegyzéseket. Ezt mindenképpen el kell végezni - shutdownkor a scriptek le is csatolnak minden filerendszert -, mert különben előfordulhatna, hogy a felhasználó számára látszólag befejeződött írási művelet valójában még nem hajtódott végre, és a kiírandó adat a cache-ben várja a sorsát, miközben a médiumot (tipikusan pl. floppylemez) már eltávolítottuk, és ez adatvesztéshez vezetne. A másik ok a konzisztencia megőrzése. A kernel szereti megelőzni a problémát, és nem akar olyan helyzetbe kerülni, hogy el akar érni olyan file-t, ami az ő tudomása szerint elérhető, azonban a kedves felhasználó (rosszabb esetben - kivédhetetlen - a hálózat ördöge) már elérhetetlenné tette. Tehát a lecsatolás előbb-utóbb kötelező. A kernel védekezik, amennyire tőle telik, azaz például CD-rom használata esetén amíg a lecsatolás meg nem történt, a meghajtó lockolva van, a CD-t nem engedi kivenni. Ennek a mechanizmusnak egy kellemetlen következménye, hogy mindent, így az esetleg gyakran cserélt floppylemezeket is mountolni-umountolni kell. Szerencsére ennek a helyzetnek az orvoslására megszületett az mtools programcsomag, amellyel FAT formátumra formázott floppy lemezeket mount nélkül lehet kezelni (mdir, mcopy, stb).
Hda,Hdb stb ...
Egy kis kiegészítés a device fájlokhoz:
hda
: primary master
hdb : primary slave
hdc : secondary master
hdd
: secondary slave
hda1 : első partíció a primary
masteren
hdd2 : második partíció a secondary
slave-en
stb.
Kernel fordítás 0.1.1:
A következőkben egy teljes kernel fordítását
írom le. Nem patchelésről lesz tehát szó.
Amivel
kezdened kell, hogy letöltöd a legfrissebb (stabil, tehát
az x.szam.x-nél a szám legyen páros) kernelt.
Ennek a www.kernel.org-on tudsz
utánna nézni.
A letöltött kernel
csomagolva lesz, vmi.tar.gz néven. Ezt kicsomagolva be kell
másolni a /usr/src könyvtárba (mielőtt
elfelejteném, természetesen mindezt root-ként
kell végezned). Én javaslom az MC (midnight commander)
használatát. Én úgy szoktam, hogy az
usr/src-be csinálok egy könyvtárat, olyan névvel
ami megmondja, hogy milyen kernelről van szó. Például
most van egy usr/src/linux2214 nevű könyvtáram amiben a
2.2.14-es kernel source van. A linux2214 könyvtárra pedig
mutat egy symlink, /usr/src/linux néven. Mindig így
használd, tehát a symlinken keresztül lépj
a könyvtárba (pl.: cd /usr/src/linux).
Négy
módon tudsz a kernel fordításra előkészülni
és a makefile-ket konfigurálni. Kézzel editálod
(kezdőknek nem javasolt) Futtatod a make config-ot, ennek az a baja,
hogy ha valamit elrontasz, újra kell kezdened a konfigurációt
make menuconfig (én legtöbbször ezt használom),
karakteres felületű,menüvezérelt konfigurálást
tesz lehetővé make xconfig az előzőhöz hasonló,
csak grafikus módban (én nem kedvelem)
Na szóval
ha bemásoltad amit fentebb leírtam, először lépj
be a linux könyvtárba, cd /usr/src/linux.
1., make
clean (erre az első kernel fordításkor nincs szüség,
de ha újra fordítasz akkor már igen)
2., make
menuconfig (így nagyon kényelmesen tudod konfigurálni
a kerneledet)
3., make dep (meghatározza a
függőségeket)
4., make bzImage (létrehozza az
új kernelt, tömörítve és elhelyezi a
/usr/linux/arch/i386/boot könyvtárba, bzImage néven.
5.,
make modules (ha a kernel egyes részeit modulba konfiguráltad
akkor szükséges. Szinte biztos van ilyen)
6., make
modules_install (elhelyezi a modulokat a megfelelő könyvtárba)
7.,
a bzImage kernelt másold a /boot könyvtárba, és
adj neki valami normális nevet, például
kernel-2214.
8., készítsd el a gyökérből
a rámutató symlinket és konfiguráld a
lilót (a liló konfigurálását egy
másik cikkben írom meg)
9., futtasd a lilót-->
lilo .
10. Ha a rendszert újra bootolod , már
indíthatod is az új kerneleddel.
Egy jó
tanács: Mindig hagyd fenn a korábbi, jól működő
kerneledet is. Csak akkor töröld ha az új kernel már
mindenben okésan működik. Nálam mindig minimum
három kernel van, két stabil, meg egy
kísérleti.
Természetesen a kernel fordításhoz
is van részletes dokumentáció, a linuxdoc-on.
Installálni jó:
Linuxot többféleképpen szerezhetünk. Megrendelhetjük/megvásárolhatjuk például a hivatalos kereskedőtől, ilyenkor dobozban kapjuk, nyomtatott dokumentációval. Ennél egyszerűbb hozzájutni ismert számítástechnikai lapok CD-mellékleteként, vagy hálózatról letöltéssel. Letölteni általában lehet iso-t is, amivel egyből írhatunk install CD-t, de gyors hálózati kapcsolattal megáldottak számára érdemesebb a saját magát installálás közben letöltő változatot választani. Sok magyar ftp szerveren találhatunk linux mirrorokat, az ismertebbek:
Redhat: ftp.math.bme.hu, egy teljesebb mirror: ftp.jate.u-szeged.hu
Mandrake: ftp.kando.hu
Debian: ftp.kando.hu, ftp.kfki.hu, ftp.bme.hu
SuSE: ftp.bke.hu
Egy minimális install, ami már munkaállomásként is használható (értsd: nem csak szerverfunkciók ellátására), körülbelül 300 Mbyte helyet igényel. Emellett a linuxnak még szüksége lesz munkaterületre a logfile-ok és egyéb állományok tárolására, valamint a felhasználónak is nyilván kell majd élettér. Így a minimális ajánlott partícióméret 500M, persze minél nagyobb, annál jobb. Kis előrelátással - sokaknak ez visszatekintés, tapasztalat :P - rövidesen úgyis szükség lesz egyre és egyre nagyobb területre, szóval miért ne adjunk neki legalább 1G-t? Természetesen ez valószínűleg valamelyik másik partíció rovására fog menni, de valamit valamiért. A csomagok, amelyeket a hálózaton át le kell tölteni, tömörítve vannak, így adatmennyiség szempontjából a választott csomagok számától függően kb. 150-400M-ra kell számítani.
Első lépésként, ha nem CD-ről akarjuk installálni, érdemes bootlemezt készíteni. Az ehhez szükséges cuccost szintén a mirrorokon találhatjuk meg, általában beszédes nevű, például "disks" vagy "images" könyvtárban. Az ott található readme-k tartalmazzák a könyvtárban lévő állományok leírását, például Redhat-nál a bootnet.img-re lesz szükség a hálózatról installáláshoz. Ezek a file-ok floppy image-k, ezért nem a szokványos módon kell őket a lemezre másolni, hanem például - ha van kéznél installált, működő linux - a "dd if={image neve} of=/dev/fd0; sync" paranccsal. Ha nincs linux, akkor a "dosutils", vagy az image-ekkel azonos könyvtárban található rawrite.exe vagy rawrite2.exe fogja elvégezni a feladatot. Ez utóbbiak használata nagyon egyszerű, a helpjük tökéletesen elég a megértésükhöz.
Ha a lemez elkészült, akkor arról directory-t kérve DOS filerendszert találunk, rajta néhány file-t, ezek önmagukban nem érdekesek számunkra. Az itt található vmlinuz nevű állomány egyébként a linux kernel, ami tartalmazza a drivert az összes hálózati kártyához, scsi vezérlőhöz és mindenhez, amire az installáláshoz szükség lehet. Az installálás megkezdéséhez bootoljunk a floppyról vagy CD-ről. Választhatunk, hogy szöveges vagy grafikus kezelőfelülettel akarjuk installálni, mindkettőben maradéktalanul elérhetünk minden funkciót, tehát sok gyakorlati jelentősége nincs, hogy melyiket választjuk, ám általában text módban jóval hamarabb végezhetünk. Ha nem kínálná fel a gép a választás lehetőségét, az egeret kihúzva valószínűleg nem fogja erőltetni a grafikus módot. :) A felkínált "expert" lehetőség választása esetén teljes irányításunk lesz az installálás felett, így a telepítés valamivel tovább fog tartani, de a cél érdekében megéri a befektetett energiát.
A menük és egyebek:
A továbbiakban a Redhat installálóján keresztül mutatjuk be röviden a lényegesebb pontokat. A telepítőfelületben minden disztribúció különbözik, azonban a legfontosabb teendők mindenhol ugyanazok: partícionálás, csomagok kiválasztása, a rendszergazdai jelszó megadása és a linux loader (LILO) telepítése. Lépésről lépésre-leírás helyett általános receptet próbálunk adni, az önállóságra mindenképpen szükség lesz a későbbiek során is.
Az installálás módjának kiválasztása után a memóriába töltődik a kernel. Ez sorban felismeri a csatlakoztatott eszközöket, aktivizálja a megfelelő drivereket, az üzeneteiből pedig pontosan nyomon követhetjük, hogy mit is csinál éppen. Floppyról való installálásnál az egyik legelső szükséges lépés a hálózati kártya felismerése, hiszen a csomagokat a hálózaton át kell letöltenie telepítés közben. Amennyiben valamiért nem találná meg magától a kártyát, a felkínált listából a megfelelőt kiválasztva továbbléphetünk. A hálózat eléréséhez szükséges dolgokat tudnunk kell, így például az ip-címünket (ha statikus), átjárót (default gateway), stb., enélkül nyilván nem tudjuk elérni az ftp szervert. Nem árt, ha előrelátóan felírjuk a telepítés előtt az ftp szerver pontos nevét és a könyvtárat, ahol a disztribúciós fa található. Itt nem mindegy, hogy melyik szintig írjuk be az installálónak: Redhat esetén például a ../RedHat/i386 mélységig kell megadnunk a fát, mind ftp, mind NFS szerver esetén.
Az egyik legfontosabb dolog a merevlemez partícionálása. Ezt értelemszerű okokból nagy gonddal kell elvégezni, több szempontot figyelembe véve. Az általános helyelosztási megfontolásokon túl érdemes például arra ügyelni, hogy a swap partíció (erről kicsit később) lehetőleg ne essen távol magától az ext2 linux partíciótól, mert ezzel az elérési időt csökkenthetjük a gyakran használt lemezrészek között, így a hatékonyság nő. Másik létfontosságú szempont, hogy a LILO csak olyan helyről tudja betölteni a kernelt, azaz az operációs rendszert bootolni, amit a BIOS lát, mert bootoláskor még - a kernel hiányában - a BIOS rutinokat használja lemezelérésre. A későbbiekben a linux a BIOS-t figyelmen kívül hagyja. A telepítés első szakaszában a partícionáló program kerül elénk; természetesen, ha már megfelelően partícionált a merevlemezünk, nem szükséges azt megváltoztatni. Magát az operációs rendszert telepíthetjük több partícióra szétosztva is, ennek nagyon sok előnye van - főleg a későbbi frissítéseknél -, azonban erre valószínűleg az első installáláskor nem lesz szükség. A partíciókat a már bemutatott /dev/hdXX jelekkel láthatjuk azonosítva, ezekhez kell meghatároznunk a kezdeti mount point-ot, azaz azt, hogy a könyvtárszerkezetben melyik rész melyik partícióhoz tartozzon. Egyetlen pont, amit mindenképpen meg kell adnunk, az a "/", azaz a gyökérkönyvtár, maga a system partíció. Ha többet nem definiálunk, a teljes operációs rendszer minden alkönyvtárával együtt ezen a partíción fog helyet foglalni.
A linux virtuális tárkezeléskor használhat swap file-t a windows-nál megszokott módon, vagy swap partíciót. A swap partíció jelentősen gyorsabb, ezért mindenképpen ennek a használatát javasoljuk. A swap partíció mérete legyen kicsi, persze igényektől függő, de egy 200M-s méret már elég tekintélyesnek számít. Ha a partícionálás során nem jelölünk ki swap partíciót, az installáló program külön rá fog kérdezni.
A következő teendőnk a telepíteni kívánt csomagok kiválasztása. Ezek a package-k sajátos formátumban vannak tárolva: minden csomag tartalmazza magukat a szükséges állományokat, a dokumentációt - amennyiben ez nem külön csomagban kerül be a disztribúcióba nagy mérete miatt -, egy rövid leírást a csomagról, valamint a csomagkezelőnek az adminisztrációs és biztonsági szempontokból nélkülözhetetlen függőségi információkat. Vannak csomagok, amelyek mindenképpen szükségesek a működéshez, például a basesystem, amely az alap könyvtárstruktúrát tartalmazza, vagy az initscripts, amiben a bootoláskor és shutdown alkalmával lefutó scriptek találhatók. Dönthetünk, hogy csak nagyvonalakban jelöljük ki a telepíteni kívánt software-t (Install KDE Workstation/Install GNOME Environment, ...), vagy egyenként végigböngésszük a csomagokat, kiválasztva a nekünk szükségeseket. Kezdetben ki van jelölve sok csomag, ezek elég jól meg vannak választva, így az összeállítás nem igényel feltétlenül sok változtatást. Aránylag könnyű eligazodni a listában, mert kategóriákba van szervezve (Graphics/Games/Utilities/System/...), a csomagokhoz tartozó rövid információt pedig a válogatás közben is olvasgathatjuk. Ha a gép nem verné nagydobra a help elérési módját, a szokásos F1 taposásával általában jó eredményt lehet elérni.
Csomagok, szolgáltatások:
Kétféle elterjedt eredeti csomagkezelő használatos:
az rpm (Redhathoz, Redhat Package Manager) és a deb
(Debianhoz). Sajnos ezeket több más
disztribúció is használatba vette, ezzel sok
inkompatibilitási problémát okozva, például
rpm-et használ még a SuSE és a Mandrake,
valamint a deb-et átvette az újnak számító
Corel Linux is. Mindkét csomagkezelő nagy gondot fordít
a függőségek kezelésére: például
egy több program által használt függvénykönyvtárat
(shared library), melyet külön csomagban tartalmaz a
disztribúció, mindenképpen fel kell
telepítenünk, ha a rá épülő
alkalmazásokat használni akarjuk. Ha a csomagválogatás
közben kijelölünk installálásra valamit,
amihez a szükséges csomag(ok)at esetleg nem választottuk
ki, akkor a telepítő - egy kérdés után -
automatikusan felteszi a szükséges dolgokat. Az
installáláskor összeválogatott operációs
rendszer összeállítása nem szentírás,
a későbbiekben természetesen tetszés szerint
tehetünk fel újabb csomagokat, vagy törölhetünk
a fent lévőkből.
Több apróbb kérdésre
kell még felelnünk a telepítés folyamán,
például az időzónánk és a
billentyűzetkiosztásunk, az egér típusa, stb.,
ezekre elég egyértelmű a válasz. A következő
kérdés, amivel szembesülünk, hogy milyen
szolgáltatásokat szeretnénk automatikusan,
bootoláskor elindítani a gépen. Álljanak
itt a példa kedvéért a legismertebbek:
network: A hálózati kommunikációért felelős programok
syslog: "system logger", a kernel- és egyéb üzeneteket rendszerbe fogó program, kvázi eseménynapló
crond: "cron daemon", a programok rendszeresen, meghatározott időpontokban vagy időközönként való futtatását irányító program
gpm: konzolon futó egérkezelő, copy-paste funkciókkal
sendmail: levélküldő- és fogadó agent
lpd: printer daemon, a nyomtatót vezérlő program
inet: "inetd", az univerzális, hálózati kapcsolatkérésekre figyelő program (egyre kevésbé használt, főleg biztonsági szempontokból)
A kezdetben ismeretlen elnevezésű dolgok céljára
a gyakorlat során rájövünk, egyelőre a
listában nyugodtan elfogadhatjuk a felkínált,
alapértelmezett kiválasztásokat. Ezek után
a rendszergazdai jelszó, a root password megadása
következik. Aki ezt a jelszót birtokolja, az teljhatalmú
ura a gépnek, viszont enélkül semmi változtatásra
nincs lehetőség, ami a rendszer egészét érinti.
Épp ezért nagyon fontos, hogy ezt ne tudja meg
illetéktelen személy, és ne felejtsük el,
mert igen kellemetlen következményei lehetnek;
kényelmetlenség és elpazarolt idő egy rescue
disk-ről, vagy LILO-ból single user módban bootolni,
hogy a hibát kijavítsuk, vagy jogosultságunkat
újból helyreállítsuk.
Mindjárt
érdemes egy normál, userjogú felhasználót
is létrehozni, erre az installáló rögtön
itt lehetőséget is ad. Az alapelv az, hogy rendszergazdaként
csak akkor legyünk bejelentkezve, ha arra ténylegesen
szükség van, egyéb célokra az egységsugarú
felhasználói hozzáférést
használjuk. Ez a szokásos biztonsági
megfontolásokon túl az operációs rendszer
védelmét szolgálja saját magunk elől:
rootként könnyű helyrehozhatatlan kárt tenni, a
gép semmi törlési vagy írási
műveletnek nem áll útjába, és ellentétben
a FAT filerendszerrel, az ext2-n törölt állományokat
NEM lehet visszaállítani,
csak legfeljebb megbízhatatlan segédprogramokkal,
mindenesetre sokkal kényelmetlenebbül, mint dos vagy
windows alatt.
LILO és az X:
A telepítő ezek után megkérdezi, hogy a
LILO-t hova kívánjuk tenni. Két lehetőség
közül választhatunk: az MBR-be (Master Boot Record),
vagy a boot partíció első szektorába. Amennyiben
nem használunk más boot managert, nyugodtan tehetjük
az MBR-be is; de mivel a LILO más operációs
rendszereket is tud bootolni, általános célú
boot managerként ugyanúgy használható. Ha
a következő kérdésre, miszerint milyen
paramétereket kívánunk bootoláskor átadni
a kernelnek, nem tudjuk a választ, akkor ezt a mezőt nyugodtan
üresen hagyhatjuk.
A telepítés utolsó
lépése az X, a grafikus felület alapvető
konfigurálása. Mivel az X maga eddigi élettörténetének
legradikálisabb fejlesztési fázisán megy
keresztül, ez a konfigurálási metódus
nagyon könnyen megváltozhat, akár előfordulhat,
hogy a következő kiadású disztribúciókban
már teljesen másképp fog kinézni. A
jelenlegi állapot szerint - és erre nyilván
ezután is szükség lesz -, a monitor és a
videokártya adatai a legelsők és legfontosabbak.
Általában gond nélkül felismeri a telepítő
a csatlakoztatott videokártyát, ha ez mégsem
történne meg, egy tekintélyes listából
kiválaszthatjuk azt. A monitorok felsorolása is elég
kimerítő, amennyiben nem találjuk meg a sajátunkat,
megadhatjuk magunk a maximális vízszintes és
függőleges frissítési frekvenciákat,
amelyeket a monitor könyvében megtalálunk.
Az
installálás ezzel véget ért. Rebootoljuk
a gépet - vegyük észre, ez az egyetlen reboot,
amire installáláskor szükség volt/van -, és
ha minden jól ment, a LILO prompt-hoz kerülünk. TAB
nyomásával megnézhetjük a bootolható
operációs rendszerek listáját, az ENTER
pedig az alapértelmezettet bootolja, ami szerencsés
esetben a frissen installált linuxunk lesz. A kernel már
látott message-jein kívül a bootkor indításra
kijelölt szolgáltatások start üzenetét
is láthatjuk, majd ennek végeztével a login
prompt-hoz kerülünk, ahol akár felhasználóként,
akár rendszergazdaként bejelentkezhetünk, és
csinálhatjuk a ..semmit, melyet a sorozat következő
cikkében részletezünk. :ţ
Processzek:
A linux, mint minden modern operációs rendszer,
teljes multitaszk képességekkel rendelkezik. Ez alatt
azt kell érteni, hogy egymástól független
programokat képes elszigetelten, látszólag
egyszerre futtatni, és ehhez kihasználja a processzor
hardveres támogatását. Nagyrészt ez
biztosítja híres stabilitását is. A
kernel egyik legfontosabb része az ütemező, amelynek
feladata a futó programok (taszkok, processzek ->
folyamatok) irányítása, szabályozása,
és közöttük az erőforrások megosztása.
Az ütemező dönti el, hogy egy adott folyamat a processzor
teljesítményének hány százalékával
rendelkezhet, a memória mekkora részét kaphatja
meg és mikor. Ha egy taszk "szabálytalan
műveletet" :) hajtana végre, a kernel kilövi és
ezzel megakadályozza, hogy az operációs rendszer
működésében bármi kárt okozhasson.
Így felhasználói szintű programokkal linuxot
kiakasztani elég reménytelen eset, az ennek ellenére
ritkán fellépő ilyen jellegű hibákat pedig a
kernel fejlesztői nagyon hamar kijavítják. A
hibajavítások sebességének
illusztrálására jó példa a Pentium
processzorokon pár éve felfedezett, hírhedt
F00F-bug, aminek megelőzésére a hiba napvilágra
kerülésétől számított 4 órán
belül megvolt a kernelpatch.
Linuxban minden folyamatnak
van szülője. Egy processz indíthat több további
processzt, amelyek az ő gyerekei lesznek. A különböző
szolgáltatások mind processzként vannak jelen a
rendszerben. Néhány fontosabb:
init: Az init a legelső induló processz. A kernel utolsó dolga bootoláskor ezt elindítani, és az init folytatja a bootolást, a megfelelő scripteket indítva, amelyek ellenőrzik és mountolják a filerendszereket és fellövik a daemon-okat (háttérben futó, általában kapcsolatkérésekre figyelő program, például ftp szerver, webszerver, vagy sshd). Több további funkciót tud még az init ellátni: biztosítja a single user módot, ahol senki sem tud távolról hozzáférni a géphez, csak a konzolhoz, rendszergazdai joggal, valamint a multiuser módot, ami a szokásos üzemelési formája egy linuxos gépnek. Normális működés esetén az init gondoskodik róla, hogy a getty processzek fussanak, amelyek a belépést teszik lehetővé, valamint örökbe fogadja azokat a processzeket, amelyeknek a szülője eltávozott az élők sorából (linuxban minden processznek egyazon "családfához" kell tartoznia, tehát az árvákat örökbe kell fogadni). A gép leállításakor az init feladata a többi processzt kilőni, a filerendszereket lecsatolni és a processzort halt-olni.
login-ok: A bejelentkezés, tehát a felhasználói névvel és jelszóval védett hozzáférés kezelése. Az init minden terminálhoz, legyen az soros vonalra kötött, vagy konzolon lévő virtuális terminál, ahol be lehet lépni, külön getty példányt indít. Ez beolvassa a felhasználói nevet, majd maga helyett elindítja a login programot, ami bekéri a jelszót. Ha mindkettő érvényes, elindítja a parancsértelmezőt, a shell-t. Ha ez leáll, azaz a felhasználó kilép, vagy még a login szakad meg, mert a jelszó nem volt helyes, akkor az init ezt észreveszi és a getty egy új példányát indítja el.
shell: Parancsértelmező. Funkciója nagyjából ugyanaz, mint a command.com-nak DOS alatt, de a modernebb shell-ek ennél nagyságrendekkel több és bonyolultabb dolgot tudnak, például filenév-kiegészítés, és szinte egy komplett programozási nyelv, amelyben a shell scriptek íródnak, ciklusokkal, feltételekkel, változókkal és filekezeléssel. Az egyik leggyakrabban használt shell, a bash2 tudását jól reprezentálja, hogy pl. a manual-ja (leírása) egyszerű text file-ban 280 Kbyte terjedelmű.
A filerendszer további részei:
Az ezelőtt már röviden ismertetett /dev mellett vannak még további könyvtárak, amelyeknek meghatározott funkciójuk van. Ezek nagyvonalakban:
/bin: A bootoláskor szükséges, és néhány, felhasználók által gyakran használt futtatható (bináris) állomány(ok).
/sbin: Ezek is binárisok, de azok, amelyekre általában csak a rendszergazdának van szüksége. Ezzel együtt, ha engedélyezett, normál felhasználóknak is elérhető.
/etc: A gépre vonatkozó konfigurációs állományok. A legtöbb rendszerszintű program konfigurációja itt foglal helyet, például az init-hez tartozó inittab, a filerendszereket leíró fstab, a jelszavakat (kódolt formában) tartalmazó passwd illetve shadow, de pl. redhat esetén itt találhatók a daemon-okat indító-leállító scriptek is.
/root: A rendszergazda (root) home könyvtára.
/lib: Könyvtári függvényeket tartalmazó bináris állományok, amelyek a futtatható programokhoz szükségesek. Ez nagyjából a Windows-ból ismert .dll-ek (dynamically linked library) linuxos megfelelőinek, a .so-knak (shared object) a gyűjtőhelye.
/lib/modules: Külön betölthető kernel-modulok, különös tekintettel azokra, amelyek a bootoláshoz szükségesek egy esetleges katasztrófa utáni állapot helyrehozásakor. (például hálózati eszközök és filerendszerek meghajtói)
/tmp: Ideiglenes file-ok. Sokféle program szó nélkül használhatja, és használja is ezt a könyvtárat átmeneti tárolásra.
/boot: A betöltő, például LILO által használt állományok. Sokszor maga a kernel is itt foglal helyet, nem a gyökérkönyvárban. Adott esetben megéri külön partícióra tenni. Ennek egyik nagy előnye, hogy könnyen elhelyezhetjük olyan területre, ami az első 1024 cilinderhez tartozik, így a BIOS látja, és a LILO tud róla kernelt bootolni.
/mnt: Könyvtár fizikai eszközök ideiglenes mountolásához. Programoknak nem illik ide maguktól bármit is mountolni, a rendszergazda kiváltsága, hogy ezen belül milyen könyvtárakat hoz létre, és mit hova csatol be.
/proc: Ez egy igen furcsa állat. Fizikailag nem is létezik semmilyen lemezen, csak a kernel képzeletében, amit egy könyvtárként jelenít meg számunkra, feltéve, hogy az ehhez szükséges támogatást a kernel tartalmazza (belefordították). Itt nagyon sok hasznos információt találhatunk a gépünkről, általában text file-ként érhetők el a könyvtárban lévő dolgok, például cpuinfo, pci. Emellett minden processzhez tartozik egy saját alkönyvtár benne, amelyben az adott folyamat dolgai találhatók.
/home: Az egységsugarú felhasználók home könyvtárai.
/usr: Általában a legnagyobb terjedelmű könyvtár a struktúrában. Az ezen belül található alkönyvtárak hasonlítanak a gyökérkönyvtárban találhatókhoz, itt is van bin, lib, stb. A legtöbb nem rendszerszintű program (például grafikus felület) alkatrészei ide kerülnek be.
/var: Azok az állományok vannak itt, amelyek futás közben íródnak, ill. megváltoznak. Tipikusan kisebb adatbázisok, a naplózó program logjai, meg szemaforok annak jelzésére, hogy bizonyos programok egy adott file-t vagy erőforrást lefoglalva tartanak.
Shellről picit bővebben:
Ha sikerrel válaszoltunk a gép roppant bonyolult login/password kérdésére, a login elindítja a shell-ünket. Hogy ez melyik bináris file a merevlemezen, azt a /etc/passwd-ben található több mezője közül az egyik mondja meg. Ha ez például /bin/bash2, akkor az interaktív parancsértelmező jelentkezik, és várja parancsainkat. Ha a shell felismeri a parancsot, akkor vérehajtja, ha nem ismeri fel, akkor a megfelelő nevű file-t indítja el. Néhány, gyakran használt parancs:
ls: A dir megfelelője, file-ok kilistázására szolgál. Mint a linuxban általában, ez is számtalan paraméterrel szabályozható, a kijelzés színezhető, rendezhető. (list)
rm: Agresszív rendszergazdák legkedvesebb jóbarátja, állományok, vagy - megfelelő paraméterrel kisegítve - teljes könyvtárstruktúrák rekurzív és végérvényes törlésére. (remove)
cp: Állományok vagy könyvtárak - akár rekurzív - másolására szolgáló parancs. Jól használható természetesen különböző filerendszerek közötti másolásra is, például egy NFS-en (hálózaton) át mountolt helyről a helyi merevlemezre. Ilyenkor a kernel a hálózaton áttölti a cuccost. (copy)
mv: Mozgatásra vagy átnevezésre szolgál, azaz az eredeti file/könyvtár nem marad meg. (move)
ln: Ennek a dos/windows környezetben nincs megfelelője, bár funkciójában a .lnk kiterjesztésű file-ok hasonlítanak rá. Linket (általában szimbolikusat), azaz mutatót hozhatunk létre a segítségével, ami egy állományra vagy könyvtárra mutat. Ilyenkor a linkre történő hivatkozás (írás, olvasás) olyan, mintha az eredeti file-ra hivatkoztunk volna. Például ezzel a módszerrel mutat a /dev/mouse a /dev/ttySX-re (soros port) vagy /dev/psaux-ra (PS/2 device). (link)
cat: Az ismert nyávogó funkcióján kívül alkalmas még adatok továbbítására a megadott input-ról a megadott output-ra is. Ha valamelyiket nem adjuk meg (esetleg egyiket sem..), akkor az a standard input/output lesz. Megadhatunk neki például file-t inputként, az alapértelmezett output pedig a képernyő lesz, így - magyarul - ki fogja listázni a file tartalmát. (catenate)
mkdir/rmdir: Könyvtárak létrehozására/törlésére való.
Ezeknek a filekezelő parancsoknak a használatát meg lehet kerülni file manager, például mc (Midnight Commander) használatával, azonban sokszor kerülhetünk olyan helyzetbe, hogy ez nem elérhető, ezenkívül sok esetben ezek a parancsok hatékonyabban használhatók a menüvezérelt programoknál.
Lilo konfigurálása:
A lilo konfigurálása. A lilo a linux boot managere.
Ő felelős a rendszer betőltéséért. A
konfigurációs fájl az /etc-ben található,
lilo.conf néven. Mint már a kernel fordítás
cikkben említettem, egy kernel fordítás után
a lilót is konfigurálnod kell. Emlékeztetőként,
a lefordított kernel a /boot könyvtárban van,
legyen a neve kernel-2214. A gyökérből pedig egy symlink
mutat rá, aminek a neve: vmlinuz. Természetesen ha
modulokat is fordítottál a kernelhez akkor azok a
/lib/modules valamelyik alkönyvtárában vannak, de
ez a lilo konfigurálásánál nem játszik
szerepet. Ekkkor a lilo.conf igy fog kinézni
(példa):
boot=/dev/hda -->itt van a boot (a hda
stb-ről a másik cikkben
olvashatsz)
root=/dev/hda3
install=/boot/boot.p
map=/boot/map
vga=normal
delay=25
--> ennyi tizedmásodpercet vár mielőtt elindítja
a default op.rendszert
<--- Most jön a kernel
beállítása
--->
image=/vmlinuz
label=vmlinuz
read-only
<---
és ha még van fent mondjuk windows is
--->
other=/dev/hda1
label=windows
Ennyi.
Ezekután még a promptnál be kell írni,
hogy lilo és vége. Természetesen ha több
kernel is van lefordítva, akkor a 'Most jön...' részt
a megfelelö adatokkal ismételni kell. Hogy biztos érthető
legyen itt van az én lilo.conf-om.
boot=/dev/hda
root=/dev/hda3
install=/boot/boot.b
map=/boot/map
vga=normal
delay=25
image=/vmlinuz
label=vmlinuz
read-only
image=/kernel2214
label=kernel2214
read-only
image=/kernel2399
label=Linux2399
read-only
other=/dev/hda1
label=dos
Néhány script:
Egy linux rendszerben a legtöbb fontos funkciót
scriptek csinálják. Ezeket a shell értelmezi és
hajtja végre, általában - a kompatibilitás
miatt - sh, a bash elődje, mert ez a legtöbb
szabvány Unixon megtalálható. A bootkor lefutó
scriptek a legtöbb disztribúciónál az
rc.sysinit és az rc, ezek ellenőrzik a
filerendszereket, és indítják el a
daemon-okat.
A daemon-ok (sshd, ftpd, nfsd, stb.) saját
scriptekkel rendelkeznek, amelyek a /etc/rc.d/init.d-ben (Redhat,
Mandrake), /etc/init.d-ben (Debian), vagy a /etc/rc.d-ben (SuSE)
találhatók. Ezeknek a szokásos paraméterei
általában start, stop, restart,
esetleg reload, az ftpd példáján
bemutatva:
/etc/rc.d/init.d/ftpd restart
Ez a parancs
leállítja az ftp szervert, majd újraindítja.
Akkor van erre szükség, ha például a
konfigurációt megváltoztattuk, ilyenkor a
szerver a változásokat életbe léptetve
működik tovább. Némely daemonok, amelyek a reload
parancsot is támogatják, a konfigurációt
újraolvastatják a szolgáltatás leállítása
nélkül, így például a letöltések
nem szakadnak meg. Hasonlóképpen vonatkozik ez a
hálózati, ip- és egyéb beállításokra,
egérdriverre, így nem kell a változtatások
elvégzésekor rebootolnunk. Ez egyébként
kézenfekvő, mert egy olyan operációs
rendszernél, amely elsősorban szerverfunkciókra és
megbízhatóságra lett tervezve, nem járható
út a gép újraindítgatása a
beállítások tekergetésekor.
Mostanra
a linux régi, hagyományos problémái sokat
javultak. Így például jó a konfigurálás
lehetősége: a disztribúciók tartalmaznak olyan
rendszergazdai felületet, ahol egy helyen gyakorlatilag mindent
be lehet állítani, a felhasználók
adminisztrálásától a filerendszereken és
a szolgáltatásokon át a modem, a LILO illetve a
rendszeróra paraméterezéséig
(yast/linuxconf). Egy linuxos rendszergazdának, ha nem
sokfelhasználós, komoly szervernek használja a
gépet, ritkán kell más segédeszközhöz
nyúlnia a gépe üzemben tartásához,
mint a konfiguráló segédprogram és a
szolgáltatásokat irányító
scriptek. Egy screenshot saját képernyőmről (RH 6.2,
gnome-linuxconf):
Job control:
A felhasználó irányítással
rendelkezik saját processzei (futó programjai) fölött.
Beavatkozhat, állíthatja a prioritásukat,
felfüggesztheti és folytathatja, vagy véglegesen
leállíthatja őket. Mindehhez nincs közük a
programoknak, ők erről nem tudnak, és nem is kell tudniuk,
hiszen a beavatkozásokat a kernel végzi. A shell is
tartalmaz beépített funkciókat a processzek
irányítására, így például
a bg (background) paranccsal tudunk egy, a shell gyermekeként
született, de felfüggesztett programot további
futásra utasítani, és az fg paranccsal
tudjuk előtérbe hozni. A jobs segítségével
megnézhetjük, hogy kedvenc shellünk milyen
processzeket szült; ezek sorszámozva vannak, ezekkel a
számokkal hivatkozhatunk rájuk a bg, illetve fg
parancsoknál.
Egy program, amit a shellből indítunk
(többnyire: begépeljük a nevét),
alapértelmezés szerint általában
"előtérben" fut, azaz a promptot nem kapjuk vissza
addig, amíg be nem fejeződött, az esetleges inputot pedig
a program tőlünk várja. Ha a program neve mögé
egy & jelet teszünk, a shell automatikusan a háttérben
indítja el. Ugyanez történik, ha felfüggesztünk
valamit, és a bg paranccsal háttérbe küldjük.
Ekkor a promptot visszakapjuk, a shell továbbra is várja
a parancsainkat, ennek viszont az a következménye, hogy a
billentyűzetről nem tudunk közvetlenül kommunikálni
a háttérbe tett programmal, hiszen amit beírunk,
el sem jut hozzá. A processz kimenete (ahova ír)
viszont változatlan marad, tehát például
az általa kiírt szöveg ugyanott jelenik meg, ahol
elindítottuk, így alkalmasint a képernyő
összekuszálódhat, keveredhetnek a beírt
dolgok a kijelzettekkel. Ebben az esetben a CTRL+L lenyomásával
a képernyőt frissíthetjük, a szemetet
eltüntethetjük.
Shelltől függetlenül is
megnézhetjük a futó processzek listáját
ps paranccsal (sokféleképp paraméterezhető).
Minden processz PID-et (Process Identification Number) kap a
kerneltől, ezek a célszerűség kedvéért
sorban számozódnak a gép indítása
óta. Az összes programot elérhetjük, ha ezzel
a számmal hivatkozunk rá, melyet a ps is
kijelez. A processzeknek jelzéseket (SIGNAL) küldhetünk,
amelyekkel utasíthatjuk - szintén shelltől függetlenül
- őket például befejezésre (SIGTERM),
felfüggeszthetjük (SIGSTOP), újraindíthatjuk
(SIGCONT), vagy feltétel nélkül, erőszakkal, a
kernel segítségével kilőhetjük (SIGKILL).
Erre az utóbbi lépésre akkor lehet szükség,
ha valamelyik program beragad és nem válaszol, egyéb
esetben nem célszerű alkalmazni.
További nagyon
hasznos segédprogram a top, amellyel folyamatosan
nézhetjük, hogy mely processzek futnak milyen
prioritással, és mekkora erőforrásokat
használnak:
Ide írhatsz ha kérdésed vagy véleményed van a lappal illetve a témával kapcsolatban: