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:

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:

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:

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:

 

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:

 

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:

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: