Linux Hasznalat

December 3, 2017 | Author: Lucaci Carol | Category: N/A
Share Embed Donate


Short Description

linux program hasznalata...

Description

Linux rendszeradminisztrátorok kézikönyve Verzió 0.8

Lars Wirzenius [email protected]

Joanna Oja [email protected]

Stephen Stafford [email protected]

Alex Weeks [email protected]

Linux rendszeradminisztrátorok kézikönyve: Verzió 0.8 Lars Wirzenius Joanna Oja Stephen Stafford Alex Weeks Megjelent 2003.12.03 Bevezetés egy Linux rendszer adminisztrációjába, kezd˝ok számára.

Copyright 1993-1998 Lars Wirzenius. Copyright 1998-2001 Joanna Oja. Copyright 2001-2003 Stephen Stafford. Copyright 2003-jelenleg Stephen Stafford & Alex Weeks. A védjegyek a tulajdonosaik birtokát képezik. Jelen dokumentum a GNU Free Documentation Licence, Version 1.1 (GNU Szabad Dokumentációs Licenc, 1.1 verzió) feltételei szerint másolható, terjeszthet˝o és/vagy módosítható; állandó fejezetek, el˝ooldali és hátoldali szövegek nélkül. A licenc egy másolata megtalálható a "GNU Free Documentation License" cím˝u fejezetben.

Tartalomjegyzék A dokumentum forráskódja (XML) és konvertált formátumai ................................................................................i 1. Bevezetés ....................................................................................................................................................................1 1.1. Magyar fordítás ..............................................................................................................................................2 2. Néhány szó a kézikönyvr˝ol.......................................................................................................................................3 2.1. Köszönetnyilvánítás .......................................................................................................................................3 2.2. A kézikönyvben használt jelölések ................................................................................................................4 3. Egy Linux-rendszer áttekintése ...............................................................................................................................5 3.1. Egy operációs rendszer különböz˝o részei ......................................................................................................5 3.2. A rendszermag fontos részei ..........................................................................................................................5 3.3. A UNIX rendszerek f˝o szolgáltatásai.............................................................................................................6 4. A könyvtárfa áttekintése ........................................................................................................................................11 4.1. Háttér ............................................................................................................................................................11 4.2. A gyökér fájlrendszer ...................................................................................................................................12 4.3. Az /etc könyvtár ........................................................................................................................................14 4.4. A /dev könyvtár ..........................................................................................................................................17 4.5. Az /usr fájlrendszer....................................................................................................................................17 4.6. A /var fájlrendszer .....................................................................................................................................18 4.7. A /proc fájlrendszer ...................................................................................................................................20 5. Eszközfájlok.............................................................................................................................................................23 5.1. A MAKEDEV szkript .................................................................................................................................23 5.2. Az mknod parancs .......................................................................................................................................23 5.3. Eszközlista....................................................................................................................................................24 6. Lemezek és egyéb tárolóeszközök használata ......................................................................................................28 6.1. Az eszközök két fajtája.................................................................................................................................28 6.2. Merevlemezek ..............................................................................................................................................29 6.3. Hajlékonylemezek ........................................................................................................................................31 6.4. CD-ROM-ok.................................................................................................................................................31 6.5. Szalagos egységek........................................................................................................................................32 6.6. Formázás ......................................................................................................................................................32 6.7. Partíciók........................................................................................................................................................34 6.8. Fájlrendszerek ..............................................................................................................................................37 6.9. Fájlrendszer nélküli lemezek........................................................................................................................49 6.10. Lemezterület foglalás .................................................................................................................................50 7. Memóriakezelés.......................................................................................................................................................54 7.1. Mi a virtuális memória? ...............................................................................................................................54 7.2. Swap terület létrehozása...............................................................................................................................54 7.3. A swap terület használata .............................................................................................................................55 7.4. Swap területek megosztása különböz˝o operációs rendszerek között ...........................................................56 7.5. A swap terület nagysága...............................................................................................................................57 7.6. A cache puffer ..............................................................................................................................................58

iii

8. Rendszerindítás és leállítás.....................................................................................................................................60 8.1. A rendszer indításának és leállításának áttekintése......................................................................................60 8.2. A rendszerindítási folyamat közelebbr˝ol......................................................................................................60 8.3. A rendszerleállítás közelebbr˝ol ....................................................................................................................63 8.4. Újraindítás (reboot) ......................................................................................................................................64 8.5. Egyfelhasználós (single user) mód...............................................................................................................64 8.6. Rendszerindító-hajlékonylemez vészhelyzet esetére ...................................................................................64 9. init.............................................................................................................................................................................66 9.1. Az init az els˝o ..............................................................................................................................................66 9.2. Az init beállítása a getty elindítására: az /etc/inittab fájl....................................................................66 9.3. Futási szintek (run levels).............................................................................................................................67 9.4. Speciális beállítások az /etc/inittab fájlban..........................................................................................68 9.5. Rendszerindítás egyfelhasználós üzemmódban ...........................................................................................69 10. Be- és kijelentkezés ...............................................................................................................................................71 10.1. Bejelentkezés terminálokon keresztül ........................................................................................................71 10.2. Bejelentkezés hálózaton keresztül..............................................................................................................71 10.3. Mit csinál a login........................................................................................................................................72 10.4. Az X és az xdm ..........................................................................................................................................73 10.5. Az elérési jogok szabályozása....................................................................................................................73 10.6. shell indítás.................................................................................................................................................73 11. A felhasználói fiókok (account) menedzselése ....................................................................................................75 11.1. Mi az a felhasználói fiók (account)? ..........................................................................................................75 11.2. Felhasználó létrehozása..............................................................................................................................75 11.3. A felhasználók tulajdonságainak megváltoztatása .....................................................................................77 11.4. A felhasználók törlése ................................................................................................................................78 11.5. Egy felhasználó átmeneti felfüggesztése....................................................................................................78 12. Biztonsági mentések (backup) .............................................................................................................................80 12.1. A biztonsági mentések fontossága .............................................................................................................80 12.2. A biztonsági mentések adathordozójának megválasztása ..........................................................................80 12.3. A biztonsági mentést végz˝o segédeszköz kiválasztása ..............................................................................81 12.4. Egyszer˝u biztonsági mentések ...................................................................................................................82 12.5. Többszint˝u mentések..................................................................................................................................84 12.6. Mit mentsünk?............................................................................................................................................86 12.7. Tömörített mentések...................................................................................................................................86 13. Id˝obeállítás ............................................................................................................................................................87 13.1. Id˝ozónák .....................................................................................................................................................87 13.2. A hardver- és a szoftver-órák .....................................................................................................................87 13.3. Az id˝o beállítása és kijelzése......................................................................................................................88 13.4. Ha rosszul jár az óra ...................................................................................................................................89 13.5. NTP - Hálózati id˝o protokoll (Network Time Protocol) ............................................................................89 13.6. Alapvet˝o NTP beállítások ..........................................................................................................................90 13.7. NTP eszközök ............................................................................................................................................91 13.8. Néhány ismert NTP szerver .......................................................................................................................93 13.9. NTP-vel kapcsolatos hivatkozások.............................................................................................................93

iv

14. Hol találsz segítséget? ...........................................................................................................................................94 14.1. Hírcsoportok és levelez˝olisták....................................................................................................................94 14.2. IRC .............................................................................................................................................................95 A. GNU Free Documentation License .......................................................................................................................98 0. PREAMBLE....................................................................................................................................................98 1. APPLICABILITY AND DEFINITIONS........................................................................................................98 2. VERBATIM COPYING..................................................................................................................................99 3. COPYING IN QUANTITY ............................................................................................................................99 4. MODIFICATIONS........................................................................................................................................100 5. COMBINING DOCUMENTS ......................................................................................................................101 6. COLLECTIONS OF DOCUMENTS............................................................................................................101 7. AGGREGATION WITH INDEPENDENT WORKS...................................................................................101 8. TRANSLATION ...........................................................................................................................................102 9. TERMINATION............................................................................................................................................102 10. FUTURE REVISIONS OF THIS LICENSE ..............................................................................................102 How to use this License for your documents ....................................................................................................102 Szójegyzék (egyel˝ore piszkozat, de remélhet˝oleg nem sokáig)..............................................................................104

v

A táblázatok listája 6-1. Partíció típusok (a Linux fdisk programjából) ......................................................................................................36 9-1. Futási szintek .........................................................................................................................................................68 12-1. Hatékony mentési séma sok mentési szint használatával ....................................................................................85

Az ábrák listája 3-1. A Linux rendszermag néhány fontosabb része........................................................................................................5 4-1. A Unix könyvtárfa részei. A szaggatott vonalak partícióhatárokat jelölnek .........................................................11 6-1. Egy merevlemez vázlatos rajza .............................................................................................................................30 6-2. Egy példa a merevlemez particionálására..............................................................................................................35 6-3. Három különálló fájlrendszer ................................................................................................................................43 6-4. A /home és az /usr felcsatolva............................................................................................................................43 6-5. Példa a dumpe2fs kimenetére ...............................................................................................................................49 10-1. Bejelentkezés terminálon keresztül: az init, a getty, a login és a shell kölcsönhatása. ......................................71 12-1. Példa egy többszint˝u mentés ütemezésére...........................................................................................................85

vi

A dokumentum forráskódja (XML) és konvertált formátumai E könyv forráskódja és egyéb, gép által olvasható formátumok az Interneten elérhet˝ok anonymous FTP-vel a The Linux Documentation Project honlapján http://www.tldp.org/, vagy e könyv honlapján http://www.taylexson.org/sag/ (http://www.taylexson.org/sag//). A HTML és PDF formátumok mindenképpen elérhet˝ok.

i

Fejezet 1. Bevezetés “Kezdetben a fájl alaktalan és tartalom nélküli vala; és üresség vala a bitek színén. És a Szerz˝o Ujjai lebegtek vala a billenty˝uzet felett. És mondá a Szerz˝o: "Legyenek szavak", és levének szavak.”

Ez a kézikönyv, a Linux rendszeradminisztrátorok kézikönyve, a rendszeradminisztrációt a Linux szempontjából ismerteti. Azoknak ajánlom, akik a semminél (azaz annál, hogy “mi is az?”) csak egy kicsivel tudnak többet a rendszeradminisztrációról, de legalábbis a normális használat alapjaival tisztában vannak. Ez a kézikönyv nem mondja el - többek között - azt sem, hogyan kell a Linuxot telepíteni; err˝ol a "Telepítés és kezd˝o lépések" (Installation and Getting Started) szól. Lásd lejjebb a Linux kézikönyvekr˝ol szóló részt. A rendszeradminisztráció mindazon dolgok összessége, melyet valakinek meg kell csinálnia ahhoz, hogy egy számítógépes rendszert használható állapotban tartson. Ez magában foglalja a fájlok biztonsági mentését (illetve szükség esetén visszaállítását), új programok telepítését, felhasználók létrehozását (és törlését, ha már nincs rájuk szükség), a fájlrendszerek épségének ellen˝orzését stb. Ha a számítógép mondjuk egy ház volna, a rendszeradminisztrációt karbantartásnak neveznénk, mely tartalmazza a takarítást, a törött ablakok javítását és más, hasonló dolgokat. E könyv szerkezete olyan, hogy a fejezetek jelent˝os része egymástól függetlenül is használható, így ha mondjuk a biztonsági mentésekr˝ol akarsz információkhoz jutni, csak azt a fejezetet olvasd el. Mindazonáltal ez a könyv els˝osorban tankönyv, és olvasható részenként, vagy egészben is. Ezen kézikönyvet nem arra szántam, hogy egymagában használják. A Linux dokumentációjának sok más része szintén fontos a rendszeradminisztrátoroknak. Elvégre a rendszeradminisztrátor csak egy különleges el˝ojogokkal és kötelességekkel rendelkez˝o felhasználó. Nagyon fontos források a kézikönyv oldalak (manual pages) gy˝ujteménye, amelynek lapjait mindig célszer˝u elolvasni, ha egy parancs nem ismer˝os. Ha nem tudod, melyik parancsra van szükséged, akkor az apropos parancsot érdemes használni. További részletek a parancs kézikönyv oldalán olvashatók. Noha ez a könyv a Linuxról szól, általában használható lehet más UNIX alapú rendszerek esetén is. Sajnálatos módon azonban a UNIX egyes változatai közt akkora lehet az eltérés (különösen a rendszeradminisztráció tekintetében), hogy reménytelen vállalkozás lenne minden változat lefedése. Még a Linux összes lehet˝oségének lefedése is bonyolult a fejlesztésének természete miatt. Nincs egyetlen hivatalos Linux terjesztés (disztribúció), így különböz˝o embereknek különbözhetnek a beállításaik, és sokan maguk alkotják meg a beállításokat. Ez a könyv nem irányul egyetlen terjesztésre sem. Hacsak lehetséges, megpróbáltam rámutatni a különbségekre, és megmagyarázni több változatot. Megpróbáltam megmagyarázni, hogyan m˝uködnek a dolgok, és nemcsak egy “öt egyszer˝u lépés” jelleg˝u receptet adni az egyes feladatokra. Ez azt jelenti, hogy sok információ szerepel itt, melyet nem szükséges mindenkinek tudni, de ezen részeket megjelöltem, és átugorhatók, ha egy el˝ore beállított rendszert használsz. Természetesen ha mindent elolvasol, azáltal jobban megérted a rendszert, ez a rendszeradminisztrációt és használatot élvezetesebbé teheti. 1 Mint minden Linuxszal kapcsolatos fejlesztés, e kézikönyv megírása is önkéntes alapon történt: azért csináltam, mert úgy gondoltam, szórakoztató lesz, és mert úgy éreztem, meg kell tennem. Azonban - mint minden önkéntes munka esetében - határa van annak, mennyi id˝ovel, tudással és tapasztalattal rendelkezik egy-egy ember. Ez azt jelenti, hogy a kézikönyv nem szükségszer˝uen olyan jó, mintha egy varázslót szépen megfizettek volna azért, hogy megírja, és évezredek álltak volna rendelkezésére a tökéletesítésére. Tekintsd ezt figyelmeztetésnek! Az egyik fontos ok, ami miatt határvonalakat szabtam magamnak, hogy sok témát már nagyon jól dokumentáltak egyéb szabadon elérhet˝o kézikönyvekben, így ezekre nem mindig tértem ki. Ez különösen a program-specifikus

1

Fejezet 1. Bevezetés dokumentációra vonatkozik, mint például a mkfs használatának részletei. Mindössze a program funkcióját, és e kézikönyv célkit˝uzéseihez mérten elengedhetetlenül szükséges tudnivalókat írtam itt le. További információért érdemes a fent említett egyéb kézikönyveket fellapozni. A hivatkozott dokumentáció rendszerint a teljes Linux-dokumentáció része.

1.1. Magyar fordítás A magyar fordítást (v0.6) Horváth András (mailto:[email protected]_NO_SPAM) és Murzsa Norbert készítette (1998.11.08). A fordítás pontosításában Sir Zero (mailto:[email protected]_NO_SPAM), Papp István (mailto:[email protected]_NO_SPAM), Gyulai Mihály (mailto:[email protected]_NO_SPAM), Németh László (mailto:[email protected]_NO_SPAM) és Dragugyi Tanyiloo (mailto:[email protected]_NO_SPAM) m˝uködött közre. A frissítést (v0.8) Konkoly Katalin (mailto:kata[kukac]linuxforum[pont]hu) készítette (2005.03.26). A frissítés lektorálását Daczi László (mailto:dacas[kukac]fsf[pont]hu) végezte (2005.03.27). Javítva 2005.03.29.-én. A képek magyar változatát Hatala László (mailto:hatalal[kukac]gmail[pont]com) készítette (2005.01.06). A dokumentum legfrissebb változata megtalálható a Magyar Linux Dokumentációs Projekt (http://tldp.fsf.hu/index.html) honlapján.

Megjegyzések 1. A "megértés" a Linux sikeres használatának kulcsa. Ez a könyv ad ugyan néhány receptet - de mi van, ha olyan problémával találkozol, amire e könyvben nem találsz megoldást? Ha ez a kézikönyv segíteni tud a Linux logikájának megértésében, akkor nem lesz szükség receptekre, mert a megoldás kézenfekv˝o lesz.

2

˝ Fejezet 2. Néhány szó a kézikönyvrol 2.1. Köszönetnyilvánítás 2.1.1. Joanna köszönetnyilvánítása Lars igyekezett a lehet˝o legjobban megírni ezt a kézikönyvet, én pedig, mint a jelenlegi karbantartó, szeretném ˝ folytatni a jó munkát. Oszintén örülnék a visszajelzéseknek, ha bárkinek van ötlete arra vonatkozóan, hogyan lehetne még jobbá tenni a könyvet. Minden érdekel: nyelvi hibák, tárgyi tévedések, további kifejtésre érdemes témák, újraírandó részek, információ arról, hogy a különböz˝o UNIX változatok hogyan m˝uködnek. Az interneten a következ˝o helyen vagyok elérhet˝o: http://www.iki.fi/viu/ (http://www.iki.fi/viu/) . Sokan segítettek e kézikönyv megírásában, közvetve vagy közvetlenül. Külön köszönet illeti a következ˝oket: Matt Welsh (az inspirációért és az LDP vezetésért), Andy Oram (értékes visszajelzéseivel újabb munkára ösztönzött), Olaf Kirch (megmutatta, hogy meg lehet írni a könyvet), valamint Adam Richter at Yggdrasil és mások (mert bebizonyították nekem, hogy mások számára is érdekes lehet e munka). Stephen Tweedie, H. Peter Anvin, Remy Card, Theodore Ts’o, és Stephen Tweedie kölcsönadták nekem m˝uveiket (s így vastagabbá és jóval hatásosabbá tehettem a sajátomat): a xia és ext2 fájlrendszerek összehasonlítása, az eszközlista és az ext2 fájlrendszer leírása tartozik ezek közé. Ezek már nem részei a könyvnek. Rendkívül hálás vagyok e segítségért, és utólag kérek elnézést azért, hogy a korábbi verziókból id˝onként hiányzott a szerz˝ok pontos feltüntetése. Továbbá szeretnék köszönetet mondani Mark Komarinskinak, amiért 1993-ban elküldte nekem a saját anyagát, és a Linux Journalban megjelent sok rendszeradminisztrációs cikkért, amelyek igen informatívak voltak és inspirálóan hatottak rám. Sok olvasó küldött be igen hasznos megjegyzéseket. Az archívumomban megjelent apró fekete lyuk miatt nem sorolhatom fel mindegyiküket, de álljon itt néhányuk neve ABC-rendben: Paul Caprioli, Ales Cepek, Marie-France Declerfayt, Dave Dobson, Olaf Flebbe, Helmut Geyer, Larry Greenfield és édesapja, Stephen Harris, Jyrki Havia, Jim Haynes, York Lam, Timothy Andrew Lister, Jim Lynch, Michael J. Micek, Jacob Navia, Dan Poirier, Daniel Quinlan, Jouni K Seppänen, Philippe Steindl, G.B. Stotte. Elnézést kérek mindazoktól, akiket elfelejtettem.

2.1.2. Stephen köszönetnyilvánítása Szeretném megköszönni Larsnak és Joannának, hogy olyan keményen dolgoztak az útmutatón. Egy ilyen kézikönyvben valószín˝uleg el˝ofordulnak apróbb pontatlanságok, és minden bizonnyal vannak fejezetek, amelyek id˝ovel elavulnak. Ha ezek bármelyikét észreveszed, kérlek, tudasd velem a következ˝o e-mail címen: . Gyakorlatilag bármilyen formában elfogadom a visszajelzést (diff-ek, sima szöveg, html, bármi), mert semmiképp sem vetem meg mások segítségét egy ekkora terjedelm˝u szöveg karbantartásában :) Sok-sok köszönet illeti meg Helen Topping Shaw-t, amiért el˝ovette a piros tollát és sokkal jobbá tette a szöveget, mint amilyen egyébként lett volna. Valamint köszönet illeti azért is, mert egyszer˝uen csodálatos. A kézikönyv jelenlegi webhelye: http://people.debian.org/~bagpuss (http://people.debian.org/~bagpuss)

3

Fejezet 2. Néhány szó a kézikönyvr˝ol

2.1.3. Alex köszönetnyilvánítása Szeretném megköszönni Larsnak, Joannának és Stephennek, hogy évekig kitartóan dolgoztak ezen a dokumentumon. Csak remélhetem, hogy hozzájárulásom méltó folytatása lesz annak a munkának, amelyet elkezdtek. Sokan voltak, akikt˝ol segítséget kaptam a "Windows-mentes" világban való utazásom során. Akinek érzésem szerint legnagyobb köszönettel tartozom, az nem más, mint els˝o UN*X-mentorom, Mike Velasco. Akkoriban, amikor az SCO még nem számított "szitokszónak", Mike segített haladnom a tar, cpio és sok-sok más man-oldal ösvényén. Köszönöm, Mike! Te vagy a "kanapékirály" (Sofa King).

2.2. A kézikönyvben használt jelölések A kézikönyvben végig igyekeztem az egyezményes tipográfiai jelöléseket alkalmazni. Remélem, olvashatóbbá teszik a szöveget. Ha jobbító ötleteid vannak, kérlek, vedd fel velem a kapcsolatot. Fájlnevek jelölése: /usr/share/doc/foo. parancsok jelölése: fsck Email-címek jelölése: URL-ek jelölése: http://www.tldp.org A listát kiegészítem, amint szerkesztés közben új dolgok merülnek fel. Ha úgy gondolod, hogy ki kellene egészíteni még valamivel, kérlek, tudasd velem.

4

Fejezet 3. Egy Linux-rendszer áttekintése “És látá Isten, hogy minden, amit teremtett vala, ímé igen jó. ” - Biblia, Károli Gáspár fordítása. 1Mózes 1:31

Ez a fejezet áttekintést nyújt egy Linux-rendszerr˝ol. El˝oször is az operációs rendszer által nyújtott legfontosabb szolgáltatások ismertetésére kerül sor. Utána az ezen szolgáltatásokat nyújtó programok nem túl részletes leírása következik. Ennek a fejezetnek az a célja, hogy a rendszerr˝ol, mint egészr˝ol adjon képet, ezért az egyes részletek leírása máshol következik majd.

3.1. Egy operációs rendszer különbözo˝ részei Egy UNIX operációs rendszer a rendszermagból és néhány rendszerprogramból áll. Van még néhány alkalmazás is, amelyek a munkavégzéshez szükségesek. A rendszermag az operációs rendszer szíve. 1 Ez követi nyomon a lemezen lév˝o fájlokat, elindítja és egymással párhuzamosan futtatja a programokat, memóriát és egyéb er˝oforrásokat rendel különböz˝o folyamatokhoz (processzekhez), csomagokat fogad és küld a hálózaton keresztül stb. A rendszermag ezek közül nagyon keveset végez maga, de eszközöket ad ahhoz, hogy ezek a szolgáltatások felépíthet˝ok legyenek. Továbbá megakadályozza, hogy bárki közvetlenül elérhesse a hardvert, mindenkit a számára nyújtott eszközök használatára kényszerítve. 2 A rendszermag így bizonyos fokú védelmet is biztosít, elkülönítve a felhasználókat egymástól. A rendszermag által nyújtott szolgáltatások rendszerhívásokon (system call) keresztül érhet˝ok el. (Lásd a UNIX kézikönyv lapok 2. fejezetét.) A rendszerprogramok a rendszermag által nyújtott eszközöket használják az operációs rendszert˝ol elvárt szolgáltatások megvalósítására. A rendszerprogramok és minden más program is a "rendszermag legfels˝o szintjén" futnak, melyet felhasználói módnak (user mode) nevezünk. A rendszerprogramok illetve az alkalmazások között egy szempont szerint tehetünk különbséget: az alkalmazások hasznos dolgokat (vagy egy játékot) valósítanak meg, míg a rendszerprogramok a rendszer m˝uködését biztosítják. Egy szövegszerkeszt˝o program - alkalmazás; a mount egy rendszerprogram. A két kategória közti határ gyakran elmosódik, habár ez csak a megrögzött kategorizálók számára fontos. Egy operációs rendszer tartalmazhat még fordító programokat (compiler) és a megfelel˝o programkönyvtárakat (library) (a GCC és a C programkönyvtárak a szokásosak Linux alatt), habár nem mindegyik programozási nyelv része az operációs rendszernek. Dokumentáció és néha még néhány játék is lehet az operációs rendszer része. Hagyományosan az operációs rendszert a telepít˝o szalag vagy lemez tartalma definiálja, de ez a Linux esetén nem olyan egyértelm˝u, mert a világ FTP szerverein rengeteg változata terjedt el.

3.2. A rendszermag fontos részei A Linux rendszermag több fontos részb˝ol áll: processzkezelés (process management), memóriakezelés, hardvereszköz-vezérl˝ok (device drivers), fájlrendszer-vezérl˝ok, hálózatkezelés és egy csomó, változatos kisebb rész. Itt 3-1 Ábra láthatunk néhányat.

5

Fejezet 3. Egy Linux-rendszer áttekintése Ábra 3-1. A Linux rendszermag néhány fontosabb része

Valószín˝uleg a legfontosabb részek (hiszen semmi más nem m˝uködik nélkülük) a memóriakezelés és a processzkezelés. A memóriakezelés gondoskodik a memória- és swap területek processzekhez, rendszermag-részekhez és a cache pufferekhez való rendelésér˝ol. A processzkezelés létrehozza a processzeket és megvalósítja a többfeladatúságot (multitasking) az aktív processz váltogatásával. Legalacsonyabb szinten a rendszermag mindenféle támogatott hardvereszközhöz való vezérl˝ot tartalmaz. Mivel a világ tele van különféle hardverrel, az eszközvezérl˝ok száma igen nagy. Nagyon sok, egyébként hasonló részekb˝ol álló hardverelem különbözik a szoftveres ellen˝orzés módjában. A hasonlóságok lehet˝ové teszik, hogy a vezérl˝oprogramokat általános csoportokba osszuk be, melyen belül a m˝uveletek hasonlóak; a csoport minden eleme azonos kommunikációs felületet mutat a rendszermag többi része felé, de különbözik a m˝uveletek megvalósításának módja. Például minden lemezvezérl˝o a rendszermag többi része felé hasonló képet mutat, azaz mindnek van "meghajtó inicializáló", "N. szektor beolvasó", "N. szektorba író" m˝uvelete. A rendszermag által nyújtott néhány szolgáltatásnak hasonló jellemz˝oi vannak, ezért osztályokba lehet o˝ ket sorolni. Például a különféle hálózati protokollok egyetlen programozási felületbe, a "BSD socket könyvtárba" lettek

6

Fejezet 3. Egy Linux-rendszer áttekintése összegy˝ujtve. Másik példa a virtuális fájlrendszer (virtual filesystem; VFS) rétege, mely a megvalósítástól független, absztrakt formára hozza a fájlrendszereken végzett m˝uveleteket. A fájlrendszer-típusok mindegyike a megfelel˝o fájlrendszer-m˝uveletet tartalmazza. Amikor valami használni akarja a fájlrendszert, a kérés keresztülmegy a VFS-en, amely a megfelel˝o fájlrendszer-vezérl˝ohöz irányítja.

3.3. A UNIX rendszerek fo˝ szolgáltatásai Ez a fejezet a legfontosabb UNIX szolgáltatások közül ismertet néhányat, nem túl részletesen. A kés˝obbi fejezetekben finomabb leírást is adunk.

3.3.1. init Egy UNIX rendszer legfontosabb szolgáltatását az init parancs nyújtja. Ez indul minden UNIX rendszer els˝o processzeként, mint az utolsó dolog, amit a rendszermag a rendszerindítás (boot) után csinál. Amikor az init elindul, folytatja a rendszerindítási folyamatot különböz˝o indulási aprómunkák elvégzésével, azaz például ellen˝orzi és felcsatolja (mount) a fájlrendszereket, démonokat indít stb. Azon dolgok pontos listája, amit az init végez, egy sajátos paramétert˝ol függ, mely többérték˝u lehet, és a m˝uködés módját, jellegét határozza meg. Az init általában egyfelhasználós üzemmódot (single user mode) nyújt, mely esetén egyetlen felhasználó sem jelentkezhet be, csakis a root, aki a konzolon használhatja a shell-t. A szokásos üzemmód a többfelhasználós üzemmód (multiuser mode). Néhány esetben ezt általánosítják, és bevezetik a futási szinteket (run level); az egy- és többfelhasználós üzemmód két futási szintnek felel meg, de vannak mások is, mint például az X automatikus futtatása a konzolon. A Linux tíz futási szintet engedélyez (0-9), de ezek közül rendszerint csak néhányat definiálnak alapértelmezésben. A 0. futási szintet “rendszerleállításként” definiálták. Az 1. futási szint az “egyfelhasználós üzemmód”. A 6. futási szint a “rendszer újraindítása”. A többi futási szint attól függ, hogyan definiálta o˝ ket egyik vagy másik disztribúció, s ezek között jelent˝os eltérések lehetnek. Ha vetünk egy pillantást az /etc/inittab tartalmára, rendszerint tájékozódhatunk arról, melyek az el˝ore definiált futási szintek, s miként definiálták o˝ ket. Normál m˝uködés esetén az init megbizonyosodik arról, hogy a getty program m˝uködik (azaz a felhasználók be tudnak jelentkezni), és az árva processzeket (amelyeknek a szül˝oje meghalt) örökbe fogadja, mivel a UNIX típusú rendszerekben minden processznek egyetlen fastruktúrához kell tartoznia. Amikor a rendszer leáll (shut down), az init az, amely a többi processz leállításával foglalkozik, lecsatolja a fájlrendszereket, és leállítja a processzort, valamint egyéb dolgokat is végez, ha úgy állították be.

3.3.2. Bejelentkezés (login) terminálról A terminálokról (soros vonalon keresztül) és a konzolról (X nélkül) való bejelentkezéseket a getty program végzi el. Az init minden bejelentkezésre használható terminálhoz a getty egy-egy példányát indítja el. A getty beolvassa a felhasználó nevét és futtatja a login programot, mely a jelszót olvassa be. Ha a név és a jelszó érvényes, a login elindítja a shell-t. Ha a shell futása megszakad (mert például a felhasználó kilép), vagy ha a login leáll (mert a megadott név és a jelszó nem érvényes), ezt az init észreveszi, és a getty egy új példányát indítja el. A rendszermag egyáltalán nem tud a bejelentkezésekr˝ol, ezeket teljes egészében a rendszerprogramok kezelik.

7

Fejezet 3. Egy Linux-rendszer áttekintése

3.3.3. Syslog A rendszermag és sok rendszerprogram hibaüzeneteket (error message), figyelmeztetéseket (warning) és más üzeneteket adhat. Gyakran fontos, hogy ezeket az üzeneteket kés˝obb, esetleg sokkal kés˝obb is meg lehessen nézni, ezért érdemes ezeket egy fájlba írni. Ezt végzi el a syslog program. Beállítható úgy, hogy az üzeneteket fontosságuk, vagy az üzenet adója szerint különböz˝o fájlokba rendezze. Például a rendszermag üzeneteit sokszor külön fájlba irányítják, mivel ezek gyakran sokkal fontosabbak az egyéb üzeneteknél és rendszeresen olvasni kell o˝ ket a problémák kisz˝urése érdekében.

3.3.4. Periodikus parancsvégrehajtás: cron és at A felhasználók és rendszeradminisztrátorok számára is gyakran szükséges bizonyos parancsok periodikus futtatása. Például a rendszeradminisztrátor id˝onként le szeretné törölni az ideiglenes fájloknak kijelölt könyvtárakból (ilyen például a /tmp és a /var/tmp) a régi fájlokat, hogy ne teljen be a lemez. Néhány program ugyanis nem takarít megfelel˝oen maga után. A cron szolgáltatást éppen erre találták ki. Minden felhasználónak lehet egy crontab fájlja, ahol felsorolja a periodikusan elindítandó parancsokat és ezek végrehajtási id˝opontjait. A cron démon pedig arra fog ügyelni, hogy a megadott id˝opontban elindítsa a parancsokat. Az at szolgáltatás hasonló a cron-hoz, de csak egyszeri alkalomra szól: a parancsot egy el˝ore megadott id˝opontban, egyszer indítja el. További információért lásd a cron(1), crontab(1), crontab(5), at(1) és atd(8) kézikönyv oldalakat.

3.3.5. Grafikus felhasználói felület (graphical user interface; GUI) A UNIX és a Linux nem ágyazza bele a felhasználói felületet a rendszermagba; ehelyett felhasználói szint˝u programokra bízza megvalósítását. Ez igaz a szöveges és a grafikus környezetekre is. Ez az elrendezés a rendszert rugalmasabbá teszi, de rendelkezik egy hátránnyal: egyszer˝uvé teszi azt, hogy minden programnak más felhasználói felülete legyen, ezzel viszont megnehezíti a rendszer megtanulását. A Linux által els˝odlegesen használt grafikus felület az "X Window System" (rövidítve "X"). Az X maga sem valósít meg felhasználói felületet, csak egy ablakozó rendszert ad, azaz olyan eszközöket, mellyel a grafikus felhasználói felület megvalósítható. Népszer˝u ablakkezel˝ok (window manager; WM): fvwm, icewm, blackbox és windowmaker. Létezik két népszer˝u asztali munkakörnyezet (desktop environment) is: a KDE és a Gnome.

3.3.6. Hálózatok A hálózat két vagy több számítógép oly módon való összekötését jelenti, hogy azok kommunikálni tudjanak egymással. A kapcsolatfelvétel és a kommunikáció tényleges módszerei kissé bonyolultak, de az eredmény igen hasznos. A UNIX operációs rendszerek kiterjedt hálózati lehet˝oségekkel rendelkeznek. A legtöbb alapvet˝o szolgáltatás (fájlrendszerek, nyomtatás, biztonsági mentések stb.) elvégezhet˝o hálózaton keresztül is. Ez könnyebbé teheti a rendszeradminisztrációt, hiszen megengedi a centralizált karbantartást, miközben kihasználja a számítógép ("microcomputing") és az elosztott számítások ("distributed computing") el˝onyeit is, azaz az alacsony költségeket és a jobb hibat˝urést.

8

Fejezet 3. Egy Linux-rendszer áttekintése Mindamellett ez a kézikönyv éppen csak érinti a hálózatokat. Részletesebb információk beszerzésére a Linux Network Administrators’ Guide (Linux hálózati adminisztrátorok kézikönyve) http://www.tldp.org/LDP/nag2/index.html (http://www.tldp.org/LDP/nag2/index.html) cím˝u m˝uvet ajánljuk; itt a hálózatok m˝uködésének alapvet˝o leírását is megtalálod.

3.3.7. Hálózati bejelentkezés A hálózati bejelentkezés kicsit másként m˝uködik, mint a normális bejelentkezés. Minden terminálnak, melyr˝ol be lehet jelentkezni, fizikailag különálló soros vonala van. A hálózaton bejelentkez˝o minden egyes felhasználónak külön virtuális hálózati kapcsolata van, és ezekb˝ol bármennyi lehet. 3 Ezért nem lehetséges, hogy külön getty fusson minden lehetséges virtuális kapcsolat számára. Továbbá, a hálózati bejelentkezésnek több módja is van, mint például a TCP/IP hálózatok esetén a telnet és a rlogin. 4 Ahelyett, hogy egy egész csapat getty lenne fenntartva a hálózati bejelentkezéseknek, bejelentkezési módonként egy-egy démon figyel minden bejelentkezési kísérletet. (Például külön démon figyeli a telnet illetve rlogin használatával való bejelentkezéseket.) Amikor egy ilyen démon belépési kísérletet észlel, saját magát indítja még egy példányban azon kísérlet kezelésére, az eredeti példány pedig tovább folytatja a további próbálkozásokra való várakozást. Az új példány pedig a getty-hez hasonlóan m˝uködik.

3.3.8. Hálózati fájlrendszerek (network file system; NFS) Az egyik leghasznosabb dolog, amit a hálózatokkal tehetünk, a fájlok megosztása a hálózati fájlrendszeren keresztül. Ennek szokásos elnevezése: "Network File System", vagy röviden "NFS", melyet a Sun fejlesztett ki. A hálózati fájlrendszer segítségével minden fájlm˝uveletet, melyet az egyik gép programja végez, a hálózaton keresztül egy másik gépre küldhetünk. Ez becsapja a programot, így az azt hiszi, hogy a másik számítógép fájljai a saját gépen vannak. Ez roppant egyszer˝uvé teszi az információk megosztását, hisz nem követeli meg a programok módosítását. A fájlmegosztás másik népszer˝u módja a Samba (http://www.samba.org). Ez a protokoll lehet˝ové teszi MS Windowst futtató gépekkel is a fájlmegosztást (a Network Neighbourhood segítségével). Ily módon nyomtatókat is megoszthatunk a gépek között.

3.3.9. Levelezés Az elektronikus levél (e-mail) a számítógépes kommunikáció legelterjedtebb módszere. Az elektronikus levél egy olvasható, de speciális formátumú fájlban tárolódik, és megfelel˝o levelez˝oprogramok használhatók küldésükre és olvasásukra. Minden felhasználónak van egy bejöv˝o levelesládája (incoming mailbox); ez egy speciális formátumú fájl, ahol az új levelek tárolódnak. Amikor valaki levelet küld, a levelez˝oprogram megkeresi a címzett levelesládáját és a levelet hozzáf˝uzi a levelesláda-fájlhoz. Ha a címzett ládája másik gépen van, a levél a másik gépre lesz elküldve, amely azután a legmegfelel˝obbnek látszó levelesládába kézbesíti. A levelezési rendszer sok programból áll. A helyi vagy távoli levelesládákba történ˝o kézbesítést egy program, az úgynevezett mail transfer agent (MTA), például a sendmail vagy az smail végzi, míg a felhasználó által használt programok nagyon sokfélék lehetnek. (Ezek az úgynevezett mail user agent vagy MUA programok, mint például a pine, a mutt vagy az elm.) A levelesládák általában a /var/spool/mail könyvtárban találhatók.

9

Fejezet 3. Egy Linux-rendszer áttekintése

3.3.10. Nyomtatás Egyszerre csak egy személy használhat egy nyomtatót, de nagyon gazdaságtalan, ha nem osztjuk meg a nyomtatókat a felhasználók között. A nyomtatót ezért egy olyan program vezérli, mely egy nyomtatási sort (print queue) valósít meg: minden nyomtatási feladat (job) egy várakozási sorba kerül, és valahányszor a nyomtató végzett egy feladattal, automatikusan a következ˝o nyomtatásába kezd. Ez mentesíti a felhasználókat a várakozási sor szervezését˝ol és a nyomtató feletti irányításért való harctól 5 A várakozási sort szervez˝o program puffereli (spool) a nyomtatási feladatokat a lemezre, azaz a szöveget egy fájlban tárolja, amíg a nyomtatási feladat a sorban várakozik. Ez lehet˝ové teszi, hogy a felhasználói programok gyorsan átdobják a nyomtatási feladatot a várakozási sort szervez˝o programnak, így a felhasználói programnak nem kell megvárni a nyomtatás végét. Ez valóban kényelmes, hisz lehet˝ové teszi, hogy kinyomtassunk egy változatot, és még ennek tényleges kinyomtatása el˝ott teljesen átjavíthassuk a munkánkat.

3.3.11. A fájlrendszer elrendezése A fájlrendszer több részre oszlik; általában a gyökér (root) fájlrendszerben foglal helyet a /bin, /lib, /etc, /dev és még néhány könyvtár; az /usr fájlrendszerben programok és nem változó adatok; a /var fájlrendszerben változó adatok (mint például naplófájlok); és végül a /home fájlrendszer, ahol a felhasználók személyes fájljai találhatók. A hardvert˝ol és a rendszeradminisztrátor döntését˝ol függ˝oen a felosztás ett˝ol eltérhet; akár mindez egyetlen fájlrendszeren is lehet. A 4 fejezet részletesebben ismerteti a fájlrendszert; a Filesystem Hierarchy Standard pedig még jobban elmélyed a részletekben. 6

Megjegyzések 1. Tény, hogy a rendszermagot (kernel) sokszor hibásan magával az operációs rendszerrel azonosítják, pedig nem az. Egy operációs rendszer sokkal több szolgáltatást nyújt, mint a rendszermag önmagában. 2. Erre mindig úgy gondolok, mint egyfajta egységbe zártságra (encapsulation), ami talán segíthet az objektum-orientált programozói háttérrel rendelkez˝oknek jobban elképzelni a m˝uködését. 3. Nos, legalábbis sok. A hálózati sávszélesség még mindig sz˝ukösnek t˝unik, így a párhuzamosan létrehozható hálózati bejelentkezéseknek még mindig van egy gyakorlati fels˝o határa. 4. Manapság sok Linux rendszeradminisztrátor nem tartja biztonságosnak a telnet és a rlogin belépést, inkább az ssh -t használják, a “secure shell”-t (biztonságos héjprogram), amely titkosítja a hálózaton áthaladó forgalmat, így kisebb a valószín˝usége annak, hogy rosszindulatú felhasználók “lehallgassák” a kapcsolatot és olyan bizalmas adatokat szerezzenek meg, mint például a felhasználónevek és a hozzájuk tartozó jelszavak. Er˝osen ajánlott az ssh használata a telnet vagy az rlogin helyett. 5. Ehelyett a felhasználók egy új sort alkotnak a nyomtató el˝ott a kinyomtatott dokumentumaikra várva, mivel még senki sem látott olyan várakozási sor szervez˝o programot, mely mindig pontosan meg tudná mondani, mikor is fejez˝odik be egy-egy nyomtatási feladat. Ez nagyon fellendíti a hivatalon belüli társasági kapcsolatokat. 6.

http://www.pathname.com/fhs/ (http://www.pathname.com/fhs/)

10

Fejezet 4. A könyvtárfa áttekintése “ Két nappal kés˝obb még mindig ott ült a fa ágán, lóbálta a lábát négy mézes csupor kellemes társaságában...” (A.A. Milne: Micimackó; Karinthy Frigyes fordítása)

Ez a fejezet a Linux szabványos könyvtárszerkezetének lényeges részeit írja le, ami a Filesystem Hierarchy Standard (FHS) szabványon alapul. Ez körvonalazza a könyvtárfa különböz˝o fájlrendszerekre tagolásának szokásos módját és megadja a mögötte rejl˝o szándékokat. Nem minden Linux-disztribúció követi szolgai módon ezt a szabványt, de ahhoz elég általános, hogy áttekintést kapjunk róla.

4.1. Háttér Ez a fejezet a Filesystems Hierarchy Standard (FHS) 1 2.1-es változatán alapul, amely megkísérel létrehozni egy szabványt, amely szerint felépíthet˝o egy könyvtárfa egy Linux-rendszerben. 2 Egy ilyen szabványos felépítésnek az az el˝onye, hogy könnyebb lesz írni vagy áthozni programokat Linux alá, illetve adminisztrálni egy linuxos gépet, ha minden a szokásos helyén található. Ezen szabvány mögött nem áll hatalom, amely mindenkit kényszerítene ennek betartására, de ezt támogatja a legtöbb (ha ugyan nem minden) Linux terjesztés. Nem túl jó ötlet eltérni az FHS-t˝ol nagyon alapos indok nélkül. Az FHS megpróbálja a UNIX szokásokat és az aktuális tendenciákat követni, ezáltal a Linux rendszer ismer˝os lesz a más Unix rendszereken gyakorlatot szerzettek számára is. Ez a fejezet nem olyan részletes, mint az FHS. A rendszeradminisztrátoroknak célszer˝u elolvasni az FHS-t is a teljes megértés kedvéért. Ez a fejezet nem magyaráz el minden fájlt részletesen. A cél nem minden fájl részletes leírása, hanem a rendszer áttekintése a fájlrendszer oldaláról. A fájlokról további információkat találhatunk a kézikönyvben, illetve az elektronikus kézikönyv oldalakban (man pages). A teljes könyvtárfa úgy lett megtervezve, hogy kisebb részekre lehessen bontani, melyek akár külön lemezpartíción is elhelyezkedhetnek, hogy a korlátozott lemezmérethez igazodhasson, és könnyebb legyen a biztonsági mentés, valamint egyéb rendszeradminisztrációs feladatok. A legfontosabb részek a gyökér / (root), /usr, /var és /home fájlrendszerek (lásd 4-1 Ábra). Mindegyik résznek más a feladata. A könyvtárfát úgy tervezték meg, hogy jól m˝uködjön hálózatba kötött linuxos gépek esetében is, amikor egyes részek csak olvasható módon kerülnek megosztásra, például CD-ROM-ról vagy NFS-en keresztül. Ábra 4-1. A Unix könyvtárfa részei. A szaggatott vonalak partícióhatárokat jelölnek

11

Fejezet 4. A könyvtárfa áttekintése

Az egyes részek szerepeinek leírását az alábbiakban adjuk meg:



A gyökér fájlrendszernek minden gépnél egyedinek kell lennie (általában egy helyi lemezen található, noha lehetne ramdiszken vagy hálózati meghajtón is), és tartalmaznia kell mindazt, ami a rendszerindításhoz kell addig a pillanatig, amikor már a többi fájlrendszer is felcsatolható (mount). Ezért a gyökér fájlrendszer tartalma csak az egyfelhasználós (single user) üzemmódhoz elegend˝o. Ez a rendszer tartalmazza továbbá az elromlott rendszer javításához és az elveszett fájlok biztonsági mentésb˝ol való visszaállításához szükséges eszközöket is.



Az /usr fájlrendszer tartalmazza mindazokat a parancsokat, könyvtárakat, kézikönyv oldalakat és egyéb változatlan fájlokat, amelyek a normális m˝uködéshez szükségesek. Az /usr könyvtárban lév˝o fájlok nem specifikusak egyetlen gépre vonatkozóan sem, s nem is kell megváltoztatni o˝ ket normális m˝uködés során. Így lehet˝oség van a fájlok hálózaton keresztüli megosztására, ami nagyon takarékos, hisz ezzel sok lemezterület megtakarítható. (Könnyen lehet több száz megabyte-nyi, vagy akár gigabyte-nyi is az /usr tartalma.) További el˝ony, hogy könnyebb lesz a rendszer karbantartása, mert csak a központi /usr partíción kell az alkalmazásokat frissíteni, nem minden gépen külön-külön. De még helyi lemez esetén is megtehetjük, hogy az /usr könyvtárat csak olvasható módon csatlakoztatjuk, ami csökkenti a fájlrendszer sérülésének veszélyét egy rendszerösszeomlás esetén.



A /var fájlrendszer változó fájlokat tartalmaz, mint például a spool könyvtárak (a levelezéshez, hírekhez, nyomtatáshoz), naplófájlokat (log file), formázott kézikönyv oldalakat és ideiglenes fájlokat. Valaha minden, ami a /var könyvtárban van, valahol az /usr könyvtárban volt, de úgy nem lehetett az /usr könyvtárat csak olvasható módban csatlakoztatni.



A /home fájlrendszer tartalmazza a felhasználók home könyvtárait, azaz minden igazi adatot a rendszerben. A home könyvtárak külön fájlrendszerbe való elkülönítése megkönnyíti a biztonsági mentéseket; a többi részt általában nem, vagy csak ritkábban kell elmenteni, mivel ritkábban változnak. Egy nagy /home fájlrendszert esetleg érdemes néhány további fájlrendszerre szétszedni, ami egy plusz elnevezési szint bevezetését követeli meg a /home alatt, mint például /home/students és /home/staff.

Noha a különböz˝o részeket fájlrendszereknek neveztük az eddigiekben, nem feltétlenül szükséges, hogy valóban külön fájlrendszereken legyenek. Egy kicsi, egyfelhasználós rendszeren akár egyetlen fájlrendszeren is tárolhatók, ami egyszer˝ubbé teszi a dolgokat. A könyvtárfa esetleg máshogy is felosztható fájlrendszerekre, annak függvényében, hogy mekkora lemezeink vannak és hogy hogyan foglaljuk a helyet különféle célokra. A fontos az, hogy minden szabványos név m˝uködjön, például, ha a /var és az /usr egy partíción van, az /usr/lib/libc.a és /var/log/messages neveknek m˝uködniük kell, mondjuk úgy, hogy a /var alatti fájlokat az /usr/var könyvtárba másoljuk és a /var csak egy szimbolikus hivatkozás az /usr/var könyvtárra. A Unix fájlrendszer szerkezete a fájlokat cél szerint csoportosítja, azaz például a parancsok egy helyen vannak, az adatfájlok máshol, a dokumentáció egy harmadik helyen és így tovább. Egy másik megoldás lehetne a fájlok csoportosítása aszerint, hogy melyik programhoz tartoznak, például minden Emacs-hoz tartozó fájl egy könyvtárban lenne, a TeX-hez tartozók egy másikban, és így tovább. Az utóbbi megközelítéssel az a baj, hogy megnehezítené a fájlmegosztást (a programkönyvtárak gyakran tartalmaznak statikus, megosztható és változó, nem megosztható fájlokat egyaránt), és néha még a fájlok (mondjuk a kézikönyv oldalak) megtalálása is nagyon bonyolult lenne, a karbantartóik számára pedig egyenesen rémálom.

12

Fejezet 4. A könyvtárfa áttekintése

4.2. A gyökér fájlrendszer A gyökér fájlrendszernek általában kisméret˝unek kell lennie, mivel a kritikus fájlokat tartalmazza, és egy kicsi, ritkán módosított fájlrendszernek jobb esélye van a sérülések elkerülésére. Egy sérült gyökér fájlrendszer általában azt jelenti, hogy a rendszer nem képes elindulni (boot), legfeljebb különleges segítséggel (például hajlékony lemezr˝ol), és ezt nem érdemes kockáztatni. A gyökérkönyvtár (/) általában nem tartalmaz fájlokat, legfeljebb a szabványos rendszerfájlt (boot image), melynek szokásos neve /vmlinuz. Minden más fájl a gyökérkönyvtár alkönyvtáraiban helyezkedik el: /bin

A rendszerindítás során szükséges parancsok, melyeket (a rendszerindítás után) a normál felhasználók is használhatnak.

/sbin

Hasonló a /bin könyvtárhoz, de az ebben lév˝o parancsokat nem a normál felhasználóknak szánták, noha szükség esetén használhatják (ha van rá engedélyük). Az /sbin rendszerint nincs benne a normál felhasználók alapértelmezett elérési útvonalában, viszont a root felhasználóéban igen.

/etc

Gépspecifikus konfigurációs fájlok.

/root

A root felhasználó home könyvtára. A rendszer többi felhasználója számára rendszerint nem elérhet˝o.

/lib

Megosztott könyvtárak a gyökér fájlrendszer programjaihoz.

/lib/modules

Betölthet˝o rendszermag modulok, különösen azok, melyek a rendszer indulásához (boot) szükségesek, például egy baleset utáni helyreállításkor (például hálózati és fájlrendszer vezérl˝ok).

/dev

Eszközmeghajtók. A leggyakrabban használt eszközök meghajtóprogramját az 5 fejezetben vizsgáljuk meg.

13

Fejezet 4. A könyvtárfa áttekintése /tmp

Ideiglenes fájlok. A rendszerindítás után futó programoknak inkább a /var/tmp használata ajánlott a /tmp helyett, mivel az el˝obbi valószín˝uleg egy nagyobb kapacitású lemezen van. A /tmp gyakran a /var/tmp könyvtárra mutató szimbolikus hivatkozás (symbolic link).

/boot

A rendszerbetölt˝o (bootstrap loader), például a LILO által használt fájlok könyvtára. A rendszermag fájl (kernel image) is gyakran itt van, nem a gyökérkönyvtárban. Ha több rendszermag fájl is van, a könyvtár gyorsan megn˝ohet, ezért célszer˝u lehet külön fájlrendszerre rakni. Egy másik ok erre az, hogy így biztosíthatjuk, hogy a rendszermag fájl az IDE lemez els˝o 1024 cilinderén belül legyen. 3

/mnt

Felcsatolási pontok a rendszergazda által létrehozott ideiglenes csatlakozásokhoz. A programoktól nem várható el, hogy automatikusan felcsatolódjanak az /mnt alá. Az /mnt felosztható további alkönyvtárakra (például /mnt/dosa lehet az MS-DOS formátumú hajlékonylemezek csatlakozási pontja, /mnt/exta pedig az ext2-es hajlékonylemezeké).

/proc, /usr, /var, /home

A többi fájlrendszer csatolási pontjai. 4

4.3. Az /etc könyvtár Az /etc könyvtár sok fájlt tartalmaz. Néhányat ezek közül az alábbiakban ismertetünk. A többi fájl esetében érdemes megkeresni, hogy melyik programhoz tartoznak, és elolvasni az ahhoz tartozó kézikönyv oldalakat. Sok hálózati konfigurációs fájl is található itt; ezek leírása a Networking Administrators’ Guide dokumentumban található meg. /etc/rc vagy /etc/rc.d vagy /etc/rc?.d

Szkriptek, vagy szkripteket tartalmazó könyvtárak, melyeket induláskor vagy futási szint-váltáskor futtat a rendszer. További információ a 9 fejezetben található.

14

Fejezet 4. A könyvtárfa áttekintése /etc/passwd

A felhasználók adatbázisa a következ˝o mez˝okkel: felhasználói név (username), valódi név (real name), home könyvtár, titkosított jelszó és egyéb információk. A formátum leírása megtalálható a passwd kézikönyv oldalon. A titkosított jelszavak manapság inkább az /etc/shadow fájlban találhatók. Ez azt jelenti, hogy a felhasználókkal kapcsolatos minden információ, kivéve a jelszavakat, a passwd fájlban tárolódnak. Történelmi okokból és a közmegegyezés miatt nem kívánatos a fájl nevének megváltoztatása.

/etc/fdprm

Hajlékonylemez paraméter-táblázat, mely leírja, hogyan néznek ki a különböz˝o hajlékonylemezes formátumok. A setfdprm használja. B˝ovebb információ a setfdprm kézikönyv oldalán található.

/etc/fstab

Itt találhatók a rendszerindításkor automatikusan (mount -a paranccsal) felcsatolt fájlrendszerek (az /etc/rc könyvtárban, vagy más egyenérték˝u indítófájlban leírva). Linux alatt itt vannak az automatikusan bekapcsolandó swap területek (swapon -a) leírásai. Részletesebben lásd a 6.8.5 fejezetben, valamint a mount kézikönyv oldalán. Az /fstab -hoz is tartozik kézikönyv oldal az 5. részben.

/etc/group

Hasonló az /etc/passwd fájlhoz, de a csoportokat írja le, nem a felhasználókat. Lásd a group kézikönyv oldalát.

/etc/inittab

Az init konfigurációs fájlja.

/etc/issue

A getty üzenete a bejelentkezési prompt el˝ott. Általában egy rövid rendszerleírást vagy egy üdvözl˝o üzenetet tartalmaz. A tartalma a rendszeradminisztrátortól függ.

/etc/magic

A file parancs konfigurációs fájlja. Különböz˝o fájlformátumok leírását tartalmazza, amely alapján a file megpróbálja kitalálni a fájl típusát. Lásd a magic és a file kézikönyv oldalakat.

15

Fejezet 4. A könyvtárfa áttekintése /etc/motd

A napi üzenet, mely a sikeres bejelentkezés után automatikusan megjelenik. A tartalma a rendszeradminisztrátortól függ. Gyakran használják olyan üzenetek küldésére, melynek minden felhasználóhoz el kell jutnia, mint például a tervezett gépleállások ideje.

/etc/mtab

A pillanatnyilag csatlakoztatott fájlrendszerek listája. Az inicializáló szkriptek adnak neki kezd˝oállapotot, majd a mount frissíti automatikusan. Olyankor használatos, amikor szükség van a csatlakoztatott fájlrendszerek listájára, mint például a df parancs esetében.

/etc/shadow

Az árnyékjelszó-fájl (shadow password file) azokon a gépeken, amelyekre árnyékjelszavakat kezel˝o programokat telepítettek. Az árnyékjelszavak használata esetén a jelszavak az /etc/passwd helyett az /etc/shadow fájlban tárolódnak, amelyet csak a root olvashat. Ez megnehezíti a jelszavak feltörését. Ha az általad használt disztribúció felkínálja a választást, hogy használjon-e árnyékjelszavakat, er˝osen ajánlott igennel válaszolni.

/etc/login.defs

A login parancs konfigurációs fájlja. A login.defs fájlhoz az 5. részben található a kézikönyv oldal.

/etc/printcap

Ugyanaz, mint az /etc/termcap, csak a nyomtatók számára, és más szintaxissal. Ehhez is tartozik kézikönyv oldal.

/etc/profile, /etc/csh.login, /etc/csh.cshrc

Ezeket a fájlokat a Bourne illetve a C burok hajtja végre bejelentkezéskor vagy induláskor. Ez lehet˝ové teszi a rendszeradminisztrátornak, hogy minden felhasználónak azonos beállításokat adjon. Lásd a megfelel˝o shell kézikönyv-oldalát.

/etc/securetty

A biztonságos terminálokat azonosítja, tehát azokat, ahonnét a root számára engedélyezett a belépés. Általában csak a virtuális konzolok szerepelnek a listán, így lehetetlen (de legalábbis nehezebb) root jogosultságokhoz jutni a rendszer hálózaton vagy modemen keresztüli feltörésével. Ne engedélyezzük a root esetében a hálózaton keresztüli bejelentkezést! Inkább jelentkezzünk be egyszer˝u felhasználóként, és használjuk a su vagy a sudo parancsot a root jogosultságok megszerzéséhez.

16

Fejezet 4. A könyvtárfa áttekintése /etc/shells

A megbízható shell-ek listája. A chsh parancs megengedi a felhasználóknak a bejelentkezési shell megváltoztatását olyan programra, mely szerepel ezen a listán. Az ftpd démon, amely a gép FTP-szolgáltatását biztosítja, ellen˝orzi, hogy a felhasználó shell-je szerepel-e az /etc/shells listában. Amennyiben a bejelentkezési shell nem szerepel ezen a listán, a gép nem engedi a bejelentkezést.

/etc/termcap

A terminál lehet˝oségeinek adatbázisa. Azt írja le, milyen “escape sorozatokkal” lehet a terminálokat vezérelni. A programok ugyanis nem közvetlenül írják ki az escape sorozatokat, mert így csak egyes termináltípusokon m˝uködnének, hanem az /etc/termcap fájlból veszik a célnak megfelel˝o sorozatokat. Ennek eredményeként a legtöbb program a legtöbb terminálon fut. Lásd a termcap, curs_termcap és terminfo kézikönyv oldalakat.

4.4. A /dev könyvtár A /dev könyvtár a speciális eszközfájlokat tartalmazza az összes eszköz számára. Az eszközfájlok elnevezése speciális megállapodások szerint történik; ezek az 5 fejezetben találhatók meg. Az eszközfájlok a telepítéskor jönnek létre, illetve kés˝obb a /dev/MAKEDEV szkript segítségével. A /dev/MAKEDEV.local egy szkript, melyet a rendszeradminisztrátor ír, és amely csak helyi használatú eszközfájlokat vagy hivatkozásokat hoz létre (azaz amelyek nem részei a szabványos MAKEDEV-nek, például olyan esetekben, amikor az eszközvezérl˝o nem szabványos).

4.5. Az /usr fájlrendszer Az /usr fájlrendszer gyakran nagyon nagy, mert lényegében minden programot ide telepítünk. Az /usr összes fájlja rendszerint egy Linux disztribúcióból (terjesztésb˝ol) származik; a helyileg telepített programok és egyéb anyagok az /usr/local alá kerülnek. Ez a módszer lehet˝ové teszi, hogy a rendszert a terjesztés egy új változatával frissítsük, vagy akár egy teljesen új terjesztéssel, anélkül, hogy minden programot újra kellene telepítenünk. Az /usr néhány alkönyvtárát az alábbiakban röviden ismertetjük (a kevésbé fontosakat kihagytuk; ezekr˝ol az FHS-b˝ol szerezhetünk információkat). /usr/X11R6

Az X Window System minden fájlja. Az X fejlesztésének és telepítésének egyszer˝usítése érdekében az X-hez tartozó fájlok nem integrálódnak be a rendszer egyéb részei közé. Az /usr/X11R6 alatt található könyvtárak szerkezete az /usr felépítéséhez hasonló.

/usr/bin

Majdnem minden felhasználói parancs itt van. Néhány a /bin és az /usr/local/bin -ben található.

17

Fejezet 4. A könyvtárfa áttekintése

/usr/sbin

Rendszeradminisztrációs programok, melyek nem szükségesek a gyökér fájlrendszer számára, például a legtöbb kiszolgáló (szerver) program.

/usr/share/man, /usr/share/info, /usr/share/doc

Kézikönyv oldalak, GNU Info dokumentumok és vegyes dokumentációs fájlok. (Ebben a sorrendben.)

/usr/include

Fejléc (header) fájlok a C programozási nyelvhez. A következetesség miatt az /usr/lib alatt kellene lenniük, de a megszokás miatt ez a név maradt használatban.

/usr/lib

Programokhoz és alrendszerekhez tartozó nem változó adatfájlok, többek között globális konfigurációs fájlok. A lib név a "library"-ból származik; eredetileg a programozási szubrutinok programkönyvtárai voltak elhelyezve itt.

/usr/local

A helyileg telepített szoftverek és egyéb fájlok helye. A terjesztések ide semmit sem telepíthetnek; kizárólag a helyi rendszeradminisztrátor használhatja. Ily módon egészen biztos lehet abban, hogy a terjesztés frissítése nem fogja felülírni azokat az extra programokat, amelyeket helyileg telepített.

4.6. A /var fájlrendszer A /var olyan adatokat tartalmaz, melyek a rendszer normális üzemelése során megváltoznak. Ez rendszerspecifikus, azaz nem osztható meg a hálózaton más számítógépekkel. /var/cache/man

Az igény esetén megformázott kézikönyv oldalak számára fenntartott cache. A kézikönyv-oldalak forrása rendszerint az /usr/share/man/man? alatt található (a ? a kézikönyv megfelel˝o szekciójára utal; például a man parancs kézikönyve a 7. szekcióban van). Néhány kézikönyv-oldal el˝ore formázott változatban van a gépen, ezek az /usr/share/man/cat* fájlban tárolódnak. Más kézikönyv-oldalakat az els˝o megtekintés el˝ott

18

Fejezet 4. A könyvtárfa áttekintése formázni kell; az így formázott változat aztán a /var/cache/man alá kerül, s ha valaki újra meg akarja nézni, már nem kell várnia arra, hogy megformázza neki a rendszer.

/var/games

Ide kell kerülnie minden olyan változó adatnak, amely az /usr-ben található játékokhoz tartozik. Ez abban az esetben érvényes, ha az /usr csak olvasható módon van felcsatolva.

/var/lib

Fájlok, melyek a normál üzem során változnak.

/var/local

Az /usr/local alá (azaz a rendszeradminisztrátor által) telepített programok változó adatai számára fenntartott hely. Megjegyezzük, hogy a helyileg telepített programoknak is használniuk kell a többi /var könyvtárat, ha az indokolt, például a /var/lock-ot.

/var/lock

Zároló (lock) fájlok. Sok program követi azt a szokást, hogy egy lezáró fájlt hoz létre ebben a könyvtárban, így jelzi azt, hogy egy adott eszközt vagy fájlt használ. Más programok ezt figyelhetik, és nem kísérlik meg annak használatát, ha a zároló fájl létezik.

/var/log

Naplófájlok (log files) a különböz˝o programokhoz, különösen a login-hoz (/var/log/wtmp, amely a be- és kijelentkezéseket naplózza), a syslog-hoz (/var/log/messages, ahol minden rendszermag- és rendszerprogram üzenet tárolódik). A /var/log könyvtárban lév˝o fájlok gyakran hatalmasra n˝onek, ezért célszer˝u szabályos id˝oközönként törölni o˝ ket.

/var/mail

Ez az FHS által jóváhagyott helye a felhasználói postaláda-fájloknak (mailbox files). A szabvány gyakorlati alkalmazása terjesztésenként eltérhet, ezért lehet, hogy ezek a fájlok még a /var/spool/mail könyvtárban vannak.

/var/run

Fájlok, melyek a következ˝o rendszerindításig érvényes rendszerinformációkat tartalmaznak. Például a /var/run/utmp a pillanatnyilag bejelentkezett felhasználókról tárol információt.

19

Fejezet 4. A könyvtárfa áttekintése /var/spool

A hírek, nyomtatási sorok és más sorba állított feladatok könyvtára. Mindegyik várakozó feladattípusnak saját könyvtára van a /var/spool alatt, például a híreknek a /var/spool/news-ban. Megjegyezzük, hogy néhány terjesztés még nem alkalmazza teljesen az FHS szabványait, ezért a felhasználók levelesládái lehetnek a /var/spool/mail alatt.

/var/tmp

Nagyobb méret˝u ideiglenes fájlok, vagy olyan állományok, melyeknek hosszabb ideig kell létezniük, mint amit a /tmp megenged. (Igaz, lehet, hogy a rendszeradminisztrátor ez utóbbiban sem t˝ur meg nagyon régi fájlokat.)

4.7. A /proc fájlrendszer A /proc fájlrendszer egy látszólagos fájlrendszer. Nem is lemezen létezik, hanem a rendszermag hozza létre a memóriában. Arra használják, hogy a rendszerr˝ol (eredetileg a processzekr˝ol - innen a neve) adjon információkat. A legfontosabb fájlok és könyvtárak közül néhánynak a leírása megtalálható lentebb. Részletes leírást a proc kézikönyv oldal ad. /proc/1

Könyvtár, mely az 1-es számú processzr˝ol ad információkat. Minden processznek saját könyvtára van a /proc alatt a processzazonosító számmal megegyez˝o néven.

/proc/cpuinfo

Processzorinformációk, mint például típus, modell, sebesség.

/proc/devices

Az aktuálisan futó rendszermag eszközvezérl˝oinek listája.

/proc/dma

Megmutatja, mely DMA csatornák vannak pillanatnyilag használatban.

20

Fejezet 4. A könyvtárfa áttekintése /proc/filesystems

A rendszermagban beállított fájlrendszerek.

/proc/interrupts

Megmutatja, mely megszakítások vannak pillanatnyilag használatban, és összesen hány van bel˝olük.

/proc/ioports

Megmutatja, mely I/O portok vannak pillanatnyilag használatban.

/proc/kcore

A rendszer fizikai memóriájának képe. Ez pontosan akkora, mint a fizikai memória, de igaziból nem használ akkora területet; a rendszermag röptében generálja a tartalmát, ahogyan a programok éppen hozzáférnek. (Emlékezzünk: ha nem másoljuk máshova, a /proc alatti fájlok nem foglalnak lemezterületet.)

/proc/kmsg

A rendszermag kimen˝o üzenetei. Ezek a syslog felé is át vannak irányítva.

/proc/ksyms

A rendszermag szimbólumtáblázata.

/proc/loadavg

A rendszer átlagos terhelési (load average) értéke; három jelentés nélküli szám, mely a rendszer pillanatnyilag elvégzend˝o feladatainak mennyiségét jellemzi.

/proc/meminfo

Információk a memóriahasználatról. (A fizikai és a swap memóriáról is.)

/proc/modules

A pillanatnyilag betöltött rendszermag-modulok listája.

21

Fejezet 4. A könyvtárfa áttekintése /proc/net

A hálózati protokollok állapotának információi.

/proc/self

Szimbolikus hivatkozás azon program processzkönyvtárára, amelyik épp a /proc -ot olvassa. Amikor több processz nézi a /proc -ot, különböz˝o hivatkozásokat kapnak. Ez f˝oként kényelmi szempontokat elégít ki, hisz könnyebbé teszi a programoknak saját processzkönyvtáruk megtalálását.

/proc/stat

Különféle statisztikák, mint például a lapozási hibák (page fault) száma a rendszerindítás óta.

/proc/uptime

A rendszer folyamatos m˝uködési idejét mutatja.

/proc/version

A rendszermag verziószáma.

Megjegyzend˝o, hogy bár az el˝obbi fájlok többnyire könnyen olvasható szöveges fájlok, néha a formátumuk olyan, hogy nehezen értelmezhet˝ok. Sok olyan parancs van, amely gyakorlatilag csak ezeket olvassa, majd könnyebben emészthet˝ové teszi. Ilyen például a free, amely a /proc/meminfo-t olvassa és a byte-okat kilobyte-tá alakítja, valamint néhány plusz információt is ad.

Megjegyzések 1.

http://www.pathname.com/fhs/ (hhtp://www.pathname.com/fhs/)

2. Vagy bármilyen UNIX-szer˝u rendszerben, például a BSD-származékokban. 3. Ez az 1024 cilinderes korlátozás többnyire már nem érvényes. A modern BIOS-ok és a LILO (a LInux LOader; Linux-betölt˝o) újabb verziói lehet˝ové teszik, hogy átugorjuk az 1024 cilinderes határt az LBA (logical block addressing; logikai blokkcímzés) segítségével. A lilo kézikönyv oldalain több információt is találsz err˝ol. 4. Jóllehet a /proc a valóságban nem található egyetlen lemezen sem. Lásd a fejezet kés˝obbi részében a /proc bekezdést.

22

Fejezet 5. Eszközfájlok Ebben a fejezetben áttekintjük, mi az eszközfájl és hogyan kell létrehozni, valamint felsoroljuk a leggyakoribb eszközfájlokat. Az eszközfájlok kanonizált listája megtalálható az /usr/src/linux/Documentation/devices.txt fájlban, amennyiben a Linux rendszermag forráskódja is telepítve van a rendszeren. Az itt felsorolt eszközfájlok a rendszermag 2.2.17-es verziójától fogva érvényesek.

5.1. A MAKEDEV szkript A legtöbb eszközfájl már a Linux telepítésekor elkészül és azonnal kész a használatra. Ha valamilyen oknál fogva olyan eszközfájlra van szükséged, ami nincs a rendszeren, akkor el˝oször érdemes megpróbálni készíteni egyet a MAKEDEV szkript segítségével. Ez rendszerint a /dev/MAKEDEV-ben található, de lehet róla másolat (vagy szimbolikus hivatkozás) a /sbin/MAKEDEV-ben. Ha nincs benne az elérési útvonalban, akkor külön meg kell adni hozzá az elérési utat. Általában a következ˝o formában használjuk a parancsot: # /dev/MAKEDEV -v ttyS0 create ttyS0 c 4 64 root:dialout 0660

Ez karakteres eszközként létrehozza a /dev/ttyS0 eszközfájlt, amely f˝ocsomópont-száma (major node) 4, alcsomópont-száma (minor node) 64, 0660-as hozzáférési jogokkal, tulajdonosa a root, és a dialout csoportba tartozik. A ttyS0 soros port. Az al- és f˝ocsomópont számokat a rendszermag értelmezi. A rendszermag ugyanis számokkal hivatkozik a hardvereszközökre, nekünk viszont ezeket nagyon nehéz lenne megjegyezni, ezért inkább fájlneveket használunk. A 0660-as hozzáférési jog azt jelenti, hogy a tulajdonos (ez esetben a root) írhatja és olvashatja, a csoport (ez esetben a "dialout") tagjai szintén írhatják és olvashatják, rajtuk kívül azonban senki más nem férhet hozzá.

5.2. Az mknod parancs A MAKEDEV a legkedveltebb módja a hiányzó eszközfájlok létrehozásának, de el˝ofordulhat, hogy a MAKEDEV szkript nem ismeri fel a létrehozni kívánt eszközt. Ez esetben jól jön a mknod parancs. Használatához ismernünk kell a létrehozandó eszközhöz tartozó f˝o- és alcsomópont számokat. A rendszermag forrásának dokumentációjában, a devices.txt fájlban megtaláljuk az ehhez szükséges adatokat. Lássunk egy példát! Tegyük fel, hogy a MAKEDEV gépünkön lév˝o verziója nem tudja létrehozni a /dev/ttyS0 eszközfájlt, ezért a mknod-ot kell használnunk. Miután belenéztünk a devices.txt fájlba, tudjuk, hogy karakteres eszköznek kell lennie, a f˝ocsomópont-száma 4, az alcsomópont-száma 64. Így mindent tudunk, ami a fájl létrehozásához szükséges. # mknod /dev/ttyS0 c 4 64 # chown root.dialout /dev/ttyS0 # chmod 0644 /dev/ttyS0 # ls -l /dev/ttyS0 crw-rw---1 root dialout 4, 64 Oct 23 18:23 /dev/ttyS0

23

Fejezet 5. Eszközfájlok Mint látható, jóval több lépés kell a fájl létrehozásához. Ebben a példában valamelyest érzékelni lehet a szükséges lépések folyamatát. Rendkívül valószín˝utlen, hogy a MAKEDEV ne tudná létrehozni a ttyS0 fájlt, a példa csak az illusztrációt szolgálta.

5.3. Eszközlista A következ˝o lista semmiképp sem törekszik a teljességre, sem a maximális részletességre. A felsorolt eszközök némelyike csak akkor m˝uködik, ha a rendszermagba fordítják a megfelel˝o támogatást. Egy-egy adott eszközre vonatkozóan érdemes elolvasni a rendszermag dokumentációját. Ha úgy gondolod, hogy további eszközöknek is fel kellene kerülniük a listára, kérlek, jelezd nekem, és igyekszem beletenni a következ˝o kiadásba. /dev/dsp

Digitális jelprocesszor. Ez az alapvet˝o felület, amelyen keresztül a hangkártyád és a hangokat létrehozó program kommunikál. Karaktereszköz, f˝ocsomópont-száma 14, alcsomópont-száma 3.

/dev/fd0

Ez az els˝o hajlékonylemez meghajtó. Ha több is van, akkor folyamatos számozást kapnak. Karaktereszköz, f˝ocsomópont-száma 2, alcsomópont-száma 0.

/dev/fb0

Az els˝o framebuffer-eszköz. A framebuffer egy absztrakciós réteg a programok és a grafikus hardver között. Tehát az alkalmazásoknak nem kell tudniuk arról, hogy milyen hardvered van; elég annyi, hogyan kommunikáljanak a framebuffer meghajtó jól definiált és szabványosított API-jával (Application Programming Interface). A framebuffer karaktereszköz, f˝ocsomópont-száma 29, alcsomópont-száma 0.

/dev/hda

A /dev/hda az els˝odleges IDE vezérl˝on (controller) lév˝o master IDE meghajtó. A /dev/hdb a slave meghajtó ugyanitt. A /dev/hdc és a /dev/hdd a másodlagos vezérl˝on (controller) lév˝o master és slave meghajtók (ebben a sorrendben). Minden lemez partíciókra tagolódik. Az 1-4-ig tartó partíciók az els˝odleges partíciók, az 5.-t˝ol kezd˝od˝oen pedig a logikai partíciók vannak a kiterjesztett partíciókon belül. Ezért az egyes partíciókra hivatkozó eszközfájlok több részb˝ol állnak. Például a /dev/hdc9 a 9-es partíciót jelenti (logikai partíció egy kiterjesztetten belül) a másodlagos IDE vezérl˝o master IDE meghajtóján. A f˝o- és alcsomópont-számok némileg összetettek. Az els˝o IDE vezérl˝on minden partíció blokkeszköz, a f˝ocsomópont-száma 3. A /dev/hda master meghajtó alcsomópont-száma 0, a /dev/hdb slave meghajtó alcsomópont-száma 64. A meghajtón belül minden partíciónál hozzáadjuk a partíciószámot a meghajtó alcsomópont-számához. Így például a /dev/hdb5 esetén a f˝ocsomópont száma 3, az alcsomópont száma 69 (64+5=69). A másodlagos vezérl˝on lév˝o meghajtókat ugyanígy kezeljük, csak az alcsomópont-száma 22 lesz.

24

Fejezet 5. Eszközfájlok /dev/ht0

Az els˝o IDE szalagos meghajtó. A sorban következ˝o meghajtók a ht1 stb. számozást kapják. Ezek is karaktereszközök, f˝ocsomópont-száma 37, alcsomópont-száma 0 lesz a ht0 esetében, 1 lesz a ht1-nél, és így tovább.

/dev/js0

Az els˝o analóg botkormány. Az egymást követ˝o botkormányok a js1, js2 stb. számozást kapják. A digitális botkormányok elnevezése djs0, djs1 és így tovább. Ezek karaktereszközök, a f˝ocsomópont-szám 15. Az analóg botkormány alcsomópont-száma 0-ánál kezd˝odik, a maximális szám 127 lehet (ez több, mint elég, még a legfanatikusabb gamernek is). A digitális botkormányok alcsomópont-száma 128-nál kezd˝odik.

/dev/lp0

Az els˝o párhuzamos nyomtató. A sorban következ˝o nyomtatók a lp1, lp2 stb. neveket kapják. Karaktereszközök, a f˝ocsomópont-szám 6, az alcsomópont-szám 0-nál kezd˝odik és folyamatos számozást kap.

/dev/loop0

Az els˝o loopback (vizsgálóhurok) eszköz. A loopback eszközök olyan fájlrendszerek felcsatolására használatosak, amelyek nem valamelyik blokkeszközön (például lemezen) helyezkednek el. Ha például szeretnél felcsatolni egy ISO9660-as CD-ROM képmást (image) anélkül, hogy CD-re írnád, akkor a a loopback eszközt kell erre használni. Ez általában látható a felhasználó számára, és a mount parancs kezeli. Lásd a mount és a losetup parancsok kézikönyv oldalait. A loopback blokkeszköz, f˝ocsomópont-száma 7, alcsomópont-száma 0-ánál kezd˝odik és folyamatos számozást kap.

/dev/md0

Az els˝o metadiszk (metadisc) csoport. A metalemezek a RAID-lemezekkel (Redundant Array of Independent Disks) kapcsolatosak. Részleteket az LDP-n található különféle RAID-HOGYANokban olvashatunk. A metalemez blokkeszköz, f˝ocsomópont-száma 9, alcsomópont-száma 0-nál kezd˝odik, és folyamatos számozást kap.

/dev/mixer

Az OSS (Open Sound System; nyílt hangrendszer) része. Lásd az OSS dokumentációját a http://www.opensound.com webhelyen. Karaktereszköz, f˝ocsomópont-száma 14, alcsomópont-száma 0.

/dev/null

Ez az eszköz a "bit-szemetes". Vagyis egy fekete lyuk, ahová olyan adatokat küldhetsz, amiket soha többé nem akarsz viszontlátni. Bármi, amit ide küldesz, elt˝unik, megsemmisül. Ez például akkor lehet hasznos, ha futtatni

25

Fejezet 5. Eszközfájlok akarsz egy parancsot, de nem akarsz semmilyen visszajelzést a terminálon. Ez is karaktereszköz, f˝ocsomópont-száma 1, alcsomópont-száma 3.

/dev/psaux

A PS/2 egérport. Karaktereszköz, f˝ocsomópont-száma 10, alcsomópont-száma 1.

/dev/pda

Párhuzamos portra csatlakozó IDE lemezek. Elnevezésük hasonló a bels˝o IDE vezérl˝ore csatlakozó lemezekéhez (/dev/hd*). Blokkeszközök, f˝ocsomópont-számuk 45. Az alcsomópont-számok némi magyarázatra szorulnak ez esetben. Az els˝o eszköz a /dev/pda és az alcsomópont-száma 0. Ezen az eszközön úgy találjuk meg a partíciókat, hogy hozzáadjuk a partíció számát az eszköz alcsomópont-számához. Mindegyik eszközön maximum 15 partíció lehet (ellentétben a bels˝o IDE lemezek 63-as korlátjával). A /dev/pdb alcsomópont-száma 16-nál kezd˝odik, a /dev/pdc-é 32-nél, a /dev/pdd-é pedig 48-nál. Így tehát a /dev/pdc6 alcsomópont-száma 38 lesz (32+6=38). Ez a séma maximum 4 párhuzamos lemezt engedélyez, egyenként 15 partícióval.

/dev/pcd0

Párhuzamos portra csatlakozó CD-ROM meghajtók, 0-tól kezd˝od˝o számozással. Mind blokkeszköz, f˝ocsomópont-számuk 46. A /dev/pcd0 alcsomópont-száma 0, a következ˝o meghajtók sorban kapják az 1, 2, 3-as stb. alcsomópont-számokat.

/dev/pt0

Párhuzamos portra csatlakozó szalagos eszközök. A szalagos meghajtókon nincsenek partíciók, így ezeket egyszer˝uen csak sorban megszámozzuk. Karaktereszközök, f˝ocsomópont-számuk 96. Az alcsomópont-szám 0-tól kezd˝odik: 0 a /dev/pt0-nek, 1 a /dev/pt1-nek és így tovább.

/dev/parport0

Feldolgozatlan párhuzamos portok. A legtöbb ide csatlakoztatott eszköznek saját meghajtója van. Ezek a port közvetlen elérésére szolgáló eszközök. Karaktereszközökr˝ol van szó, a f˝ocsomópont-szám 99, az alcsomópont-szám 0. A sorban egymás után következ˝o eszközök az alcsomópont számát fokozatosan növelve számozódnak.

/dev/random vagy /dev/urandom

Ezek a rendszermag véletlenszám-generátorai. A /dev/random nem-determinisztikus generátor, azaz a következ˝o szám értékét nem lehet kitalálni az el˝oz˝oekb˝ol. A rendszer hardverelemeinek entrópiáját használja fel a számok generálására. Ha elfogy a használható entrópia, akkor várnia kell, amíg újra összegy˝ulik annyi, hogy újabb számokat olvashasson ki bel˝ole. A /dev/urandom hasonló elv szerint m˝uködik. Kezdetben ez is a

26

Fejezet 5. Eszközfájlok rendszerhardver entrópiáját használja, de ha ez elfogy, akkor is folytatja a számok küldését, egy ál-véletlenszám-generátor képlet segítségével. Ezt a módszert kevésbé biztonságosnak tartják, ha olyan életbe vágóan fontos célokról van szó, mint például titkos kulcspárok generálása. Ha a biztonság az els˝odleges szempontod, akkor használd a /dev/random-ot, ha viszont a gyorsaság fontosabb, akkor megteszi a /dev/urandom is. Mindkett˝o karaktereszköz, f˝ocsomópont-száma 1, alcsomópont-száma 8 a /dev/random eszköznek, és 9 a /dev/urandom eszköznek.

/dev/zero

Ennek segítségével egyszer˝uen juthatunk sok nullához. Valahányszor ezt az eszközt olvasod, 0-át ad vissza. Ez olyankor lehet hasznos, ha például fix hosszúságú fájlra van szükséged, de nem számít, mi a tartalma. Karaktereszköz, f˝ocsomópont-száma 1, alcsomópont-száma 5.

27

Fejezet 6. Lemezek és egyéb tárolóeszközök használata “Üres lemezen az örökkévalóságig keresgélhetsz. ”

Amikor telepíted vagy frissíted a rendszeredet, sok munkát kell végezned a lemezeiddel. Fájlrendszereket kell létrehoznod lemezeiden oly módon, hogy a fájlok tárolására alkalmasak legyenek, és be kell osztani a helyet a rendszer különböz˝o részei számára. Ez a fejezet leírja mindezeket a kezdeti tennivalókat. Általában, ha egyszer a rendszert m˝uköd˝oképessé tetted, nem kell még egyszer megcsinálni mindezt, kivéve a hajlékonylemezek esetében. Igazából akkor szükséges visszatérni ehhez a fejezethez, ha új lemezt adsz a rendszerhez, vagy finomítani szeretnéd a lemezhasználatot. A lemezek adminisztrálásának alapvet˝o feladatai: •

A lemez formázása. Ez különféle dolgok el˝okészítését jelenti, mint például a hibás szektorok ellen˝orzése. (Az (alacsony szint˝u) formázás mostanában nem szükséges a legtöbb merevlemez esetében.)



A merevlemez particionálása. Ez akkor szükséges, ha több olyan célra szeretnéd használni, melyek feltehet˝oen nem befolyásolják egymást. A particionálás egyik oka lehet különböz˝o operációs rendszerek tárolása azonos lemezen. Másik ok lehet a felhasználók fájljainak elkülönítése a rendszerfájloktól, ami egyszer˝usíti a biztonsági mentéseket és védi a rendszerfájlokat a sérülést˝ol.



Megfelel˝o típusú fájlrendszer készítése az egyes partíciókon. A lemez semmit sem jelent a Linuxnak, amíg nincs rajta fájlrendszer; csak azután hozhatók létre és használhatók fájlok a lemezen.



A különböz˝o fájlrendszerek felcsatolása (mount) egyetlen fastruktúrába, akár automatikusan, akár kézzel. (A kézzel felcsatolt fájlrendszereket valószín˝uleg kézzel is kell lecsatolni.)

A 7 fejezetben találhatunk információkat a virtuális memóriáról és a lemez gyorstárazásról (disk caching), melyeket szintén ismerni kell a lemezkezeléshez.

6.1. Az eszközök két fajtája A UNIX, és így a Linux is, két eszközfajtát ismer: a véletlen elérés˝u blokkeszközöket (mint például a lemezek) és a karaktereszközöket (mint például a szalagok vagy a soros vonalak), melyek közül egyesek soros-, mások véletlen elérés˝uek. Mindegyik támogatott eszközt a fájlrendszerben egy eszközfájl (device file) képviseli. Amikor egy eszközfájlba írsz vagy olvasol, az adat a megfelel˝o eszközhöz megy, illetve onnan jön. Ily módon nem szükséges speciális program (illetve programozási technika, mint például megszakítás elfogás, vagy a soros portok lekérdezése) az eszközök elérésére; például egy fájlt a nyomtatóra a következ˝oképp is kiküldhetünk: $ cat filename > /dev/lp1 $

Az iménti sor kinyomtatja a fájlt (persze csak akkor, ha a nyomtató megérti a fájl formátumát). Ámbár az is igaz, hogy nem jó ötlet közvetlenül a nyomtatóra küldeni a fájt, mert ha ezt egyszerre többen teszik, az gondot okozhat. Ezért egy programot szokás használni a fájlok nyomtatóra küldésére. (Ez rendszerint a lpr nevet viseli.) Ez a program gondoskodik arról, hogy egyszerre csak egy fájl legyen nyomtatás alatt, és automatikusan küldi a következ˝o

28

Fejezet 6. Lemezek és egyéb tárolóeszközök használata fájlt a nyomtatóra, mihelyt az el˝oz˝ovel végzett. Valami hasonló szervezés természetesen a legtöbb eszközhöz szükséges. Valójában ritkán kell magukkal az eszközfájlokkal közvetlenül dolgozni. Mivel az eszközök a fájlrendszer fájljaiként jelennek meg (a /dev könyvtárban), könny˝u megnézni, milyen eszközfájlok léteznek, az ls vagy hasonló programmal. Az ls -l kimenete az els˝o oszlopban a fájl típusát és engedélyeit tartalmazza. Például a rendszerem egyik soros eszközét megvizsgálva, ez kapjuk: $ ls -l /dev/ttyS0 crw-rw-r-1 root $

dialout

4,

64 Aug 19 18:56 /dev/ttyS0

Az els˝o oszlop els˝o karaktere, azaz a "c" a fenti "crw-rw-rw-"-b˝ol a tájékozott felhasználónak elárulja, hogy ez egy karaktereszköz (character device). A hagyományos fájlok esetében ez az els˝o karakter a "-", könyvtárakra (directory) "d", és blokkeszközökre "b". (Lásd az ls kézikönyv-oldalait.) Megjegyzend˝o, hogy általában minden lehetséges eszközfájl létezik, még akkor is, ha az eszköz ténylegesen nincs is beszerelve. Így ha például a rendszereden van egy /dev/sda fájl, ez önmagában még nem jelenti azt, hogy valóban van SCSI merevlemezed. Az összes eszközfájl létezése egyszer˝ubbé teszi a telepít˝oprogramok m˝uködését, és az új hardver hozzáadását, hisz nem kell a megfelel˝o paramétereket megkeresni az új eszközfájl létrehozásához.

6.2. Merevlemezek Ez az alfejezet a merevlemezekkel kapcsolatos szakkifejezések használatába vezet be. Ha már tisztában vagy ezekkel, nyugodtan átugorhatod ezt a részt. A 6-1 Ábra egy merevlemez fontos részeinek vázlatos rajza. A merevlemez egy vagy több korongból (platter) áll. 1 Ezen korongok egyik, vagy mindkét felülete (surface) egy mágneses tulajdonságokkal rendelkez˝o anyaggal van bevonva, mely az adatokat rögzíti. Mindegyik felszínhez tartozik egy író-olvasó fej (read-write head), amely olvassa vagy módosítja a rögzített adatokat. A korongok közös tengelyen forognak; általában 5400 vagy 7200 fordulat/perc sebességgel, de a nagy sebesség˝u merevlemezek ennél gyorsabban is foroghatnak, régebbi lemezek pedig lassabban. A fejek a korongok sugarának irányában mozognak; a fejek mozgása és a lemezek forgása együttesen lehet˝ové teszik, hogy a fejek a felszín tetsz˝oleges pontját elérjék. A processzor (CPU) és a merevlemez a lemezvezérl˝on (disk controller) keresztül kommunikálnak egymással. Ez mentesíti a számítógép többi részét attól, hogy tudniuk kelljen, hogyan kell a merevlemezzel kommunikálni, hisz a vezérl˝ok segítségével az eltér˝o típusú merevlemezek egy egységes felületen keresztül érhet˝ok el a számítógép többi része irányából. Ezért a számítógépnek csak azt kell mondania, hogy “Hé, lemez! Addsza, amit akarok!”, ahelyett, hogy egy hosszú és összetett elektromos jelsorozatot adna le, ami a fejet a megfelel˝o pozícióba viszi, és megvárná, hogy a lemez a megfelel˝o pozícióba forduljon a fej alatt stb. (Valójában a vezérl˝o illesztési felülete még így is elég összetett, de sokkal kevésbé, mint a közvetlen vezérlés lenne.) A vezérl˝onek lehetnek még további feladatai is, például pufferelés, hibás szektorok automatikus cseréje. A fenti hardverismeretek általában elégségesek a legtöbb ember számára. Egy csomó más dolog is van még, mint például a motor, amely a korongokat forgatja és mozgatja a fejeket, az elektronika, amely a mechanikus részeket vezérli, de ezek általában nem tartoznak a legfontosabb dolgok közé a merevlemez m˝uködésének alapszint˝u megértését illet˝oen. A felületek általában koncentrikus körökre, úgynevezett sávokra (track) vannak osztva, ezek pedig szektorokra (sector) oszlanak. A felosztás a merevlemezen való helymegadás és a lemezterület fájloknak történ˝o lefoglalásában játszik szerepet. A merevlemez egy helyének meghatározásához mondhatjuk például, hogy “3. felület, 5. sáv, 7. szektor”. Általában a szektorok száma minden sávon azonos, de néhány merevlemez több szektort helyez a küls˝o

29

Fejezet 6. Lemezek és egyéb tárolóeszközök használata sávokra, mert ott azonos méret˝u szektorból több fér el. Általában egy szektor 512 byte-nyi adatot tartalmaz. A lemez nem képes ennél kevesebb adatot kezelni. Ábra 6-1. Egy merevlemez vázlatos rajza

Mindegyik korong felülete azonos módon oszlik sávokra és szektorokra. Ez azt jelenti, hogy amikor az egyik felülethez tartozó fej egy sávon van, a többi felület fejei is az annak megfelel˝o sávon találhatók. Ezért az így összetartozó sávokat együttesen cilindernek (cylinder) nevezzük. Id˝obe telik, amíg a fejek egyik cilindert˝ol a másikig elérnek, ezért célszer˝u az összetartozó adatokat (mondjuk egy fájl blokkjait) lehet˝oleg egy cilinderen elhelyezni, hogy ne kelljen ezen adatok olvasása közben a fejet mozgatni. Ez javítja a teljesítményt. Azonban nyilván nem mindig lehet így elhelyezni a fájlokat. Azokat a fájlokat, melyeknek különböz˝o részei több cilinderen helyezkednek el, töredezettnek (fragmented) nevezzük. A felületek (illetve fejek), a cilinderek és a szektorok száma nagyon változatos; ezen számok megadása jelenti a merevlemez geometriájának definiálását. A geometria általában egy speciális, elemr˝ol táplált memóriaelemben van

30

Fejezet 6. Lemezek és egyéb tárolóeszközök használata tárolva, amit CMOS RAM-nak nevezünk. Innét veszi az operációs rendszer a meghajtóprogram inicializálásához szükséges információkat a rendszerindításkor. (A legtöbb modern BIOS-ban beállítható automatikus felismerés is, ekkor mindig a gép indulásakor érvényes értékek állítódnak be. - a lektor) Szerencsétlen módon a BIOS-nak 2 tervezési korlátai vannak, ami lehetetlenné teszi 1024-nél nagyobb számú sáv megadását a CMOS RAM-ban, ez az érték pedig általában nem elegend˝o a nagy merevlemezekhez. Ezt kikerülend˝o, a merevlemez-vezérl˝o hazudik a geometriával kapcsolatban és címfordítást végez olyan alakra, amit a számítógép el tud fogadni. Például egy merevlemeznek lehet 8 feje, 2048 sávja és sávonként 35 szektora. 3 A lemezvezérl˝o azt hazudhatja a számítógépnek, hogy 16 feje, 1024 sávja és sávonként 35 szektora van. Így nem haladja meg az 1024-es sávhatárt, de le kell fordítania a számítógép által megadott adatokat: felezi a fejszámot és duplázza a sávszámot. A számítások ennél bonyolultabbak is lehetnek a gyakorlatban, mert a számok nem mindig jönnek ki olyan kerek értékre, mint a példában, de ezek a részletek nem fontosak az alapelvek szempontjából. Ez a fordítás eltorzítja az operációs rendszer látását a lemez elrendezésével kapcsolatban, így használhatatlanná teszi a fentebb említett "minden adat egy cilinderen" sebességjavító trükköt. A fordítás csak az IDE lemezek problémája. Az SCSI lemezek soros szektorszámozást használnak, azaz a vezérl˝o egyetlen sorszámot fordít egy fej-cilinder-szektor hármasra, és a processzor is teljesen másként kommunikál a vezérl˝ovel, így nem lép fel ez a probléma. Azt azért megjegyezzük, hogy a számítógépnek egyáltalán nem is kell tudnia az SCSI lemezek valódi geometriájáról. Mivel a Linux gyakran semmit sem tud a lemez valódi geometriájáról, a fájlrendszerei nem is próbálják a fájlokat egy cilinderen belül tartani. Ehelyett egymást követ˝o sorszámú szektorokat próbálnak adni a fájlok részeinek, ami majdnem mindig hasonló teljesítményt ad. Ezt a kérdést tovább bonyolítja a merevlemez-vezérl˝o beépített gyorstár memóriája (cache memory), és az automatikus el˝oreolvasás esetleges megléte. Mindegyik merevlemezt különálló eszközfájl jeleníti meg. Általában 2 vagy 4 IDE merevlemez lehet egy rendszerben. Ezek rendre a /dev/hda, /dev/hdb, /dev/hdc és /dev/hdd eszközfájlokon keresztül érhet˝ok el. Az SCSI merevlemezek eszközfájljai a /dev/sda, /dev/sdb stb. Hasonló elnevezési szokások léteznek a többi merevlemez-típusra is; err˝ol b˝ovebben a 5 fejezet. Megjegyzend˝o, hogy a merevlemez eszközfájlok az egész lemezhez engedélyezik a hozzáférést, nem tör˝odve a partíciókkal (lásd lentebb), ezért könny˝u a partíciókat és az adatokat összezavarni, ha nem vagy óvatos. A lemez eszközfájlokat általában csak a "master boot record" (MBR) elérésére használják (lásd lentebb).

6.3. Hajlékonylemezek A hajlékonylemez tulajdonképpen egy hajlékony membrán, melynek egyik vagy mindkét oldala a merevlemezéhez hasonló mágneses anyaggal van bevonva. A hajlékonylemeznek önmagában nincs író-olvasó feje, az a meghajtó részét képezi. A hajlékonylemez megfelel a merevlemez egy korongjának, de kivehet˝o, és egy meghajtó különböz˝o hajlékonylemezek olvasására is alkalmas, míg a merevlemez egy oszthatatlan egység. Akárcsak a merevlemez, a hajlékonylemez is sávokra és szektorokra oszlik (és a két oldalán lev˝o, egymásnak megfelel˝o sávot együttesen cilindernek nevezzük), de sokkal kevesebb van bel˝olük, mint a merevlemezek esetében. Egy hajlékonylemez meghajtó rendszerint többféle típusú lemezt képes kezelni; például egy 3,5 hüvelykes meghajtó 720 kB és 1.44 MB kapacitású lemezeket is tud írni és olvasni. Mivel az operációs rendszernek ismernie kell a lemez méretét, sok eszközfájl van a hajlékonylemezek kezelésére, mindegyik típus/meghajtó kombinációra egy-egy. Így például ha a /dev/fd0H1440 az els˝o hajlékonylemezes egység (fd0), akkor ennek egy 3,5 hüvelykes meghajtónak kell lennie, melyben egy megfelel˝o méret˝u nagy s˝ur˝uség˝u (high density, HD) lemez van, 1440 kB kapacitással (1440), azaz egy normál 3,5 hüvelykes HD hajlékonylemez.

31

Fejezet 6. Lemezek és egyéb tárolóeszközök használata Bár a hajlékonylemez meghajtók nevei bonyolultak, a Linuxnak egy speciális hajlékonylemez eszköztípusa van, mely automatikusan észleli a meghajtóbeli lemez típusát. Ez úgy m˝uködik, hogy az újonnan betett hajlékonylemez els˝o szektorát próbálja újraolvasni különböz˝o formátumok feltételezése mellett, amíg a megfelel˝o paraméterekre nem talál. Ez természetesen megköveteli, hogy a hajlékonylemez el˝ozetesen formázva legyen. Az automatikus eszközök: /dev/fd0, /dev/fd1 stb. Az automatikus eszköz által használt paramétereket a setfdprm paranccsal állíthatjuk be. Ez akkor lehet hasznos, ha olyan lemezeket használunk, melyeknek a megszokottól eltér˝o szektorszámuk van, vagy az automatikus érzékelés valamiért sikertelen és a megfelel˝o eszközfájl hiányzik. A Linux képes kezelni a nem szabványos formátumú hajlékonylemezeket is. Ezek némelyike speciális formázóprogramot igényel. Ezeket a lemeztípusokat most nem tárgyaljuk, de érdemes megnézni az /etc/fdprm fájlt, melyben a setfdprm által ismert beállítások vannak. Az operációs rendszernek tudnia kell arról, ha lemezt cserélünk a hajlékonylemez meghajtóban, például azért, hogy az egyikr˝ol a pufferbe került információ ne keveredjen a másik tartalmával. Sajnálatos módon azonban az erre használt jelz˝o vonal néha hibás, vagy ami még rosszabb nem is mindig észlelhet˝o, amikor MS-DOS-on belülr˝ol használjuk az egységet. Ha furcsa problémák adódnak a hajlékonylemezek használatakor, ez lehet a hiba oka. Az egyetlen megoldást a meghajtó javítása jelenti.

6.4. CD-ROM-ok A CD-ROM meghajtó m˝uanyaggal bevont lemezeket olvas optikai úton. Az információ a lemez felületén 4 kis "lyukak" formájában tárolódik, melyek spirálisan helyezkednek el a középponttól a peremig terjed˝oen. A meghajtó lézernyalábot irányít a spirálra, és a visszavert fény alapján dönti el, hogy az adott pontban volt-e lyuk vagy sem. Ily módon könnyen lehet biteket, azaz információt kódolni. A többi már gyerekjáték, színtiszta mechanika. A CD-ROM eszközök a merevlemezekhez képest lassúak. Egy átlagos merevlemeznek 15 ms elérési ideje van, míg egy gyors CD-ROM-nak is tizedmásodpercek szükségesek a pozicionáláshoz. Az adatátviteli sebesség elég magas; több száz kilobyte lehet másodpercenként. A lassúság azt jelenti, hogy a CD-ROM meghajtókat kényelmetlenebb használni merevlemez helyett, de azért lehetséges. (Néhány Linux terjesztés "él˝o" (live) fájlrendszereket is kínál CD-ROM-on. Ezáltal feleslegessé válik a fájlok merevlemezre másolása, ami megkönnyíti a telepítést, és kisebb lesz a helyfoglalás is. Ennek ára a lassabb m˝uködés, és persze a lefoglalt CD-ROM.) Új szoftver telepítésekor a CD-ROM nagyon jó, mert ilyenkor a nagy sebesség nem annyira fontos. Adatokat sokféleképpen rendezhetünk el egy CD-ROM-on. A legnépszer˝ubb módot az ISO 9660 nemzetközi szabvány határozza meg. Ez egy nagyon minimális fájlrendszert ad meg, amely még az MS-DOS fájlrendszerénél is durvább. Másrészr˝ol ezt a minimumot minden operációs rendszer képes leképezni a saját fájlrendszerére. Normális UNIX-os célokra az ISO 9660 fájlrendszer nem használható, ezért kifejlesztették ezen szabvány egy kiterjesztését, melyet Rock Ridge kiterjesztésnek nevezünk. A Rock Ridge hosszabb fájlneveket, szimbolikus hivatkozásokat (symbolic link), és sok hasznos dolgot enged meg, melyek által a CD-ROM többé-kevésbé egy modern UNIX fájlrendszernek megfelel˝oen használható. További el˝ony, hogy a Rock Ridge fájlrendszer egyben érvényes ISO 9660 fájlrendszer is, így a nem UNIX rendszerek is tudják használni. A Linux támogatja az eredeti ISO 9660 és a Rock Ridge kiterjesztés˝u fájlrendszereket is; a kiterjesztés meglétét automatikusan észleli. A fájlrendszer azonban csak a problémák egyik része. A legtöbb, nem Linux alá szánt CD-ROM speciális programokat igényel az adatok elérésére, és ezek a programok többnyire nem futnak Linux alól. (Hacsak nem a Linux MS-DOS emulátora, a "dosemu", vagy a "wine" nev˝u Windows-emulátor alól. 5 Létezik még a VMware is, ami kereskedelmi termék, és szoftveresen emulál egy teljes x86-os gépet. 6) .

32

Fejezet 6. Lemezek és egyéb tárolóeszközök használata A CD-ROM eszközöket a megfelel˝o eszközfájlon keresztül érhetjük el. Sok módja lehetséges a CD-ROM számítógéphez való csatlakoztatásának: SCSI-n, hangkártyán, EIDE-csatolón keresztül. A részletes információk kívül esnek ezen könyv keretein, de a kapcsolat típusa meghatározza az eszközfájlt.

6.5. Szalagos egységek A szalagos egységek a normál zenei magnószalaghoz hasonló 7 szalagokat használnak. A szalag természeténél fogva soros elérés˝u, ami azt jelenti, hogy egy adott részének eléréséhez el˝oször át kell jutni az el˝otte lev˝o adatokon. Ezzel ellentétben egy lemez véletlenszer˝uen is elérhet˝o, azaz közvetlenül ugorhatunk a lemez tetsz˝oleges részére. A soros elérés így érthet˝oen lassabbá teszi a szalagok használatát. Másrészt azonban a szalagokat viszonylag olcsó el˝oállítani, mivel nem fontos, hogy gyorsak legyenek. Viszonylag könnyen növelhet˝o a szalag hossza, azaz nagy tárolókapacitásúvá is tehet˝ok. Ez alkalmassá teszi a szalagokat olyan feladatokra, mint például az archiválás, biztonsági mentés, melyek nem kívánnak nagy sebességet, de el˝onyösebbek, ha olcsón tudunk nagy adattömeget tárolni.

6.6. Formázás A formázás az a folyamat, melynek során a mágneses adathordozóra jeleket írunk, melyek a sávokat és szektorokat jelölik meg. Egy lemez formázása el˝ott a mágneses felszín csak össze-vissza jeleket tartalmaz. A formázás bizonyos rendet visz ebbe a káoszba oly módon, hogy lényegében vonalakat húz a sáv- és szektorhatárokra. A pontos részletek ett˝ol egy kicsit eltérnek, de most ez lényegtelen. Az viszont fontos, hogy formázás nélkül nem használhatók a lemezek. A szóhasználat kicsit zavaros itt: MS-DOS és MS Windows alatt a "formázás" a fentieken kívül még a fájlrendszer létrehozását (lásd lentebb) is jelenti. Ott a két folyamat gyakran keveredik, különösen a hajlékonylemezek esetében. Ha a kett˝ot fontos megkülönböztetni, akkor a valódi formázást alacsony szint˝u formázásnak, a fájlrendszer létrehozását magas szint˝u formázásnak nevezik. Unixos körökben ezeket a folyamatokat formázásnak illetve fájlrendszer létrehozásnak nevezik. Ezt a szóhasználatot követjük a továbbiakban. IDE és SCSI lemezeknél a formázást többnyire már a gyárban elvégzik, és sosem kell megismételni, így általában nem is kell vele tör˝odni. A merevlemezek "házi" formázása rosszabb eredményekhez vezethet, mert például a lemezt speciálisan kell formázni, hogy a hibás szektorok automatikus áthelyezése m˝uködhessen. A merevlemezek, melyeket meg kell vagy meg lehet formázni, gyakran igényelnek speciális programot, mivel a formázás meghajtón belüli logikája meghajtóról meghajtóra más és más. A formázó program gyakran a vezérl˝oben lév˝o BIOS-ban van, vagy egy MS-DOS program; egyik sem használható könnyen Linux alól. (Igaz, többnyire nincs is rájuk szükség.) A formázás során rossz "foltokat" észlelhetünk a lemezen, amit hibás blokknak vagy hibás szektornak nevezünk. Ezeket néha maga a meghajtó is tudja kezelni, de még ebben az esetben is tennünk kell valamit, hogy biztosan elkerüljük a hibás részek használatát, ha a hibás szektorok száma nagyon megnövekszik. Ennek logikája bele van építve a fájlrendszerbe; a hibás szektorokról szóló információ megadásáról lásd a lentieket. Egy másik lehet˝oség, hogy létrehozunk egy olyan partíciót, amely csak a lemez rossz részeit fedi le; ez jó ötlet lehet, ha a hibás rész nagyon nagy, mivel ez megzavarhatja a fájlrendszerek m˝uködését. A hajlékonylemezeket az fdformat paranccsal formázhatjuk. A megadott hajlékonylemez eszközfájl az egyetlen paraméter. Például a következ˝o parancs egy 3,5 hüvelykes HD hajlékonylemezt formáz meg az els˝o meghajtóban: $ fdformat /dev/fd0H1440

33

Fejezet 6. Lemezek és egyéb tárolóeszközök használata Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting ... done Verifying ... done $

Megjegyzend˝o, hogy ha automatikusan érzékel˝o eszközfájlt akarunk használni (mint például a /dev/fd0), el˝oször a setfdprm paranccsal be kell állítani az eszköz paramétereit. A fentivel egyez˝o eredmény érhet˝o el az alábbi módon: $ setfdprm /dev/fd0 1440/1440 $ fdformat /dev/fd0 Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting ... done Verifying ... done $

Általában kényelmesebb a megfelel˝o eszközfájlt használni. Megjegyezzük, hogy nem bölcs dolog egy hajlékonylemezt nagyobb kapacitásúra formázni, mint amire tervezve lett. Az fdformat érvényesíti is a hajlékonylemezt, azaz megkeresi a hibás blokkokat. Többször ki is próbálja mindegyiket, ami jól hallhatóan megváltoztatja a meghajtó hangját. Ha a lemez csak kicsit hibás (mert például poros az író/olvasó fej), az fdformat nem tör˝odik vele, de egy valódi probléma megszakítja az érvényesítési folyamatot. A rendszermag ekkor naplóüzenetet (log message) küld minden egyes megtalált I/O hibáról; ezek az üzenetek a konzolra vagy a syslog használata esetén az /usr/adm/messages fájlba kerülnek. Maga az fdformat nem mondja meg, hol van a hiba, ami többnyire nem probléma, mert a hajlékonylemezek elég olcsók, és már egy hibás blokk miatt is érdemes inkább kidobni o˝ ket, mintsem kockáztatni az adatbiztonságot. $ fdformat /dev/fd0H1440 Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting ... done Verifying ... read: Unknown error $

A badblocks parancs arra használható, hogy egy merev- vagy hajlékonylemezen, esetleg egy partíción a hibás blokkokat megkeressük. Ez nem formázza a lemezt, így egy már létez˝o fájlrendszer esetén is használható. Például egy normál hajlékonylemez esetén két hibás blokkal a következ˝ot kapjuk: $ badblocks /dev/fd0H1440 1440 718 719 $

A badblocks parancs a megtalált hibás blokkok sorszámát adja meg. A legtöbb fájlrendszer képes kikerülni a hibás blokkok használatát: egy listát tartanak fenn az ismert hibás szektorokról, amely a fájlrendszer létrehozásakor veszi fel kezd˝oállapotát, és a rendszer kés˝obb is képes módosítani azt. A hibás blokkok kezdeti keresése az mkfs paranccsal is elvégezhet˝o (ez hozza létre a fájlrendszert), de kés˝obbi ellen˝orzést a badblocks paranccsal kezdeményezhetünk, és az esetleges új hibás blokkokat az fsck paranccsal adhatjuk hozzá a listához. Kés˝obb részletesen szólunk az mkfs és fsck parancsokról. Sok modern lemez automatikusan észleli a hibás blokkokat, és megkísérli kijavítani egy speciális, e célra fenntartott jó blokk használatba vételével. Ez az operációs rendszer számára észrevétlenül zajlik. Ha kíváncsi vagy, képes-e erre

34

Fejezet 6. Lemezek és egyéb tárolóeszközök használata a merevlemezed, a hozzá mellékelt kézikönyvben nézz utána. Persze még az ilyen lemezek is hibázhatnak, ha a hibás blokkok száma nagyon megn˝o, de jó eséllyel ez már csak akkor következik be, amikor a lemez amúgy is teljesen használhatatlanná vált.

6.7. Partíciók A merevlemezek több partícióra oszthatók, melyek mindegyike külön merevlemezként viselkedik. Az alapötlet az, hogy ha egy merevlemezed van, de mondjuk két operációs rendszered, a lemezt két partícióra oszthatod az egyes operációs rendszerek számára. Az operációs rendszerek csak a saját partíciójukat használják, a másikról nem vesznek tudomást, így képesek békésen egymás mellett élni azonos merevlemezen. (Ugyanakkor például a Linux képes más rendszerek [FAT32, NTFS stb.] partícióit használni, valamint komolyabb Linux rendszer maga is több partíción helyezkedik el. - a lektor) A partíciók nélkül külön merevlemez kellene minden operációs rendszer számára. A hajlékonylemezeket nem particionáljuk. Ugyan nincs technikai ok, mely ez ellen szólna, de olyan kicsik, hogy nem lenne értelme tovább osztani o˝ ket. A CD-ROM-ok rendszerint szintén nem particionáltak, mivel egyszer˝ubb egyetlen nagy lemezként használni o˝ ket, s csak igen ritkán kell több operációs rendszert egyetlen CD-ROM-ra feltenni. (A több menetben írt CD lemez nem tévesztend˝o össze a több partícióval. - a lektor)

6.7.1. Az MBR, a rendszerindító szektorok és a partíciós tábla A merevlemez particionálásáról szóló információk a lemez els˝o szektorában (azaz az els˝o lemezfelület els˝o sávjának els˝o szektorában) tárolódnak. Ez a legels˝o szektor a lemez master boot record-ja (MBR); ezt a szektort olvassa be a BIOS és indítja el tartalmát, amikor a számítógép elindul. Az MBR egy kis programot tartalmaz, mely beolvassa a partíciós táblát, ellen˝orzi, melyik partíció az aktív (azaz melyiken van rendszerindító jelzés), és beolvassa annak az els˝o szektorát, amit rendszerindító szektornak (boot sector) nevezünk. (Az MBR szintén egy rendszerindító szektor, de különleges státusza, és emiatt különleges neve van.) Ez a szektor egy másik kis programot tartalmaz, mely beolvassa az operációs rendszer els˝o részeit az adott partícióról (ha indítható), és elindítja azt. A particionálási séma nincs beépítve a hardverbe vagy a BIOS-ba. Ez csak egy megállapodás, amelyet sok operációs rendszer követ. Vannak ugyan kivételek, amelyek nem követik, de ezek ritkák. Néhány operációs rendszer támogatja a partíciókat, de lefoglal magának egy partíciót, és a saját bels˝o particionálási módszerét használja ezen belül. Ez utóbbiak békésen együtt tudnak m˝uködni a többi operációs rendszerrel (például a Linuxszal), de a partíciókat nem támogatók nem tudnak egy lemezen megférni egy másik operációs rendszerrel. Óvintézkedésként jó ötlet leírni a partíciós táblát egy darab papírra, így még ha teljesen össze is zavarodik minden, nem veszted el az összes fájlodat. A szükséges információkhoz az fdisk -l paranccsal juthatunk hozzá, majd szükség esetén a rossz partíciós táblát az fdisk paranccsal tudjuk helyreállítani. $ fdisk -l /dev/hda Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders Units = cylinders of 855 * 512 bytes Device Boot /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 /dev/hda5 /dev/hda6

Begin 1 25 49 409 409 745

Start 1 25 49 409 409 745

End 24 48 408 790 744 790

Blocks 10231+ 10260 153900 163305 143611+ 19636+

Id 82 83 83 5 83 83

System Linux swap Linux native Linux native Extended Linux native Linux native

35

Fejezet 6. Lemezek és egyéb tárolóeszközök használata $

6.7.2. Kiterjesztett (extended) és logikai partíciók A PC-s merevlemezek eredeti particionálási sémája csak négy partíciót engedett meg. Ez hamarosan kevésnek bizonyult: részben azért, mert néha négynél több operációs rendszert kellett egy lemezre telepíteni (Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD vagy Windows/NT, hogy csak néhányat említsünk), de inkább azért, mert gyakran jó ötlet több partíciót is egy operációs rendszerhez rendelni. Például a swap területet jobb külön partícióra helyezni a nagyobb sebesség elérése céljából. (Err˝ol részletesebben szólunk kés˝obb.) E tervezési probléma megoldására találták fel a kiterjesztett partíciókat (extended partition). Ez azt jelenti, hogy egy ún. els˝odleges partíciót (primary partition) al-partíciókra oszthatunk. Az els˝odleges partíciót, melyet felosztunk, kiterjesztett partíciónak, míg ennek al-partícióit logikai partícióknak nevezzük. Ezek úgy viselkednek, mint az els˝odleges partíciók, de más a létrehozásuk módja. Sebességkülönbség nincs köztük. Egy merevlemez partíciós szerkezetét ábrázolja a 6-2 Ábra. A lemez három els˝odleges partícióra oszlik, melyek közül a második két logikai partícióra bomlik tovább. A lemez egy része nincs particionálva. Az egész lemeznek, és minden els˝odleges partíciónak van rendszerindító szektora. Ábra 6-2. Egy példa a merevlemez particionálására

36

Fejezet 6. Lemezek és egyéb tárolóeszközök használata

6.7.3. Partíció típusok A partíciós táblák (az MBR-beli egyetlen és a kiterjesztett partícióbeliek is) egy-egy byte-ot tartalmaznak partíciónként, melyek a partíció típusát határozzák meg. Ez a partíciót használó operációs rendszert, vagy a partíció célját próbálja azonosítani. A típusok definiálásának célja az, hogy védekezzünk az ellen, hogy két operációs rendszer véletlenül ugyanazt a partíciót használja. Ennek ellenére az operációs rendszerek nem igazán tör˝odnek a típus byte-tal; például a Linuxot sem érdekli az értéke. Még rosszabb eset, hogy néhány rendszer helytelenül használja; például a DR-DOS egyes változatai figyelmen kívül hagyják a byte legjellegzetesebb bitjét, míg más változatai nem. Nincs szabványügyi hivatal, amely el˝oírná, mit jelentenek az egyes értékek, de néhány gyakran használt értéket feltüntettünk az 6-1 Táblázatban. A teljes lista a Linux fdisk parancsával is megkapható. Táblázat 6-1. Partíció típusok (a Linux fdisk programjából) 0

Empty (üres)

40

Venix 80286

94

Amoeba BBT

1

DOS 12-bit FAT

51

Novell?

a5

BSD/386

2

XENIX root

52

Microport

b7

BSDI fs

3

XENIX usr

63

GNU HURD

b8

BSDI swap

4

DOS 16-bit FAT =32M

80

Old MINIX

e1

DOS access

7

OS/2 HPFS

81

Linux/MINIX

e3

DOS R/O

8

AIX

82

Linux swap

f2

DOS secondary

9

AIX bootable (indítható)

83

Linux native

ff

BBT

a

OS/2 Boot Manager

93

Amoeba

6.7.4. A merevlemez particionálása Sok program létezik a partíciók létrehozására és törlésére. A legtöbb operációs rendszernek van sajátja, és jó ötlet minden operációs rendszer sajátját használni, mert esetleg képes néhány speciális dologra, amely csak az adott rendszerre jellemz˝o, és a többi particionáló program ezt nem tudja. A legtöbb ilyen programot fdisk -nek nevezik, így a Linuxét, illetve annak változatait is. A Linux fdisk parancsának részletes használata megtalálható a parancs kézikönyv oldalán. A cfdisk parancs hasonló az fdisk-hez, de kellemesebb (teljes képerny˝os) felhasználói felülete van. Ha IDE lemezeket használunk, a rendszerindító partíciónak (tehát amelyen az indítható rendszermag-fájlok vannak) az els˝o 1024 cilinderen belül kell lennie. Ez azért van, mert a lemez a BIOS-tól kap vezérlést a rendszerindítás során

37

Fejezet 6. Lemezek és egyéb tárolóeszközök használata (amíg nem lép be a védett módba), és a BIOS legfeljebb 1024 cilindert tud kezelni. Néha lehetséges olyan partícióról is indulni, mely csak részben van benne az els˝o 1024 cilinderben. Ez abban az esetben m˝uködik, ha a BIOS számára szükséges fájlok az els˝o 1024 cilinderen belül vannak. Mivel ezt nehéz biztosítani, nagyon rossz ötlet ezzel próbálkozni, mivel egy rendszermag frissítés vagy töredezettségmentesítés indíthatatlanná teheti a rendszert. Ezért legbiztosabb, ha a rendszerindító partíció az els˝o 1024 cilinderen belül helyezkedik el. 8 . Néhány újabb BIOS változat és IDE lemez tud 1024-nél több cilindert kezelni. Ha biztosan ilyen a rendszerünk, err˝ol a problémáról elfeledkezhetünk. Minden partíción páros számú szektornak kell lennie, mert a Linux fájlrendszerei 1 kB-os blokkméretet (két szektor) használnak. Páratlan szektorszám esetén az utolsó használhatatlan marad. Ez nem okoz nagy problémát, de csúnya, és az fdisk néhány változata figyelmeztet rá. Egy partíció méretének megváltoztatása általában a következ˝o módon zajlik: lementünk mindent a partícióról, töröljük a partíciót, újat hozunk létre, majd visszaállítjuk az eredeti adatokat az új partíción. Ha a partíciót megnöveljük, a szomszédos partíciókat is át kell állítanunk (és onnan is adatokat menteni, majd visszaállítani). Mivel a partícióméret megváltoztatása fájdalmas lehet, célszer˝u már kezdetben jó partícióméreteket választani, vagy hatékony biztonsági ment˝orendszert használni. Ha a telepítés módja nem követel sok emberi beavatkozást (mint például CD-ROM-ról, ellentétben a hajlékonylemezekr˝ol történ˝o telepítéssel), könnyen eljátszhatunk a különböz˝o lehetséges partícióbeállításokkal. Mivel ilyenkor még nincsenek elmentend˝o adataink, nem jelent problémát a partíciók többszöri átméretezése. Létezik egy MS-DOS program, a fips 9 , mely az MS-DOS partíciót méretezi át mentés és visszaállítás nélkül, de más fájlrendszerekre nem létezik ilyen nem destruktív particionáló program.

6.7.5. Eszközfájlok és partíciók Minden partíciónak és kiterjesztett partíciónak saját eszközfájlja van. Az elnevezési megállapodás az, hogy a partíciószám követi a teljes lemez azonosítóját. Az els˝odleges partíciók száma 1-4-ig terjed (függetlenül attól, hogy valójában mennyi els˝odleges van), a logikai partícióké 5-t˝ol kezd˝odik (függetlenül attól, melyik els˝odleges partícióban foglalnak helyet). Például a /dev/hda1 eszközfájl az els˝o IDE lemez els˝o els˝odleges partíciója, míg a /dev/sdb7 a harmadik logikai partíció a második SCSI lemezen.

6.8. Fájlrendszerek 6.8.1. Mik a fájlrendszerek? Fájlrendszeren (filesystem) azokat a módszereket és adatstruktúrákat értjük, melyeket egy operációs rendszer használ egy lemez vagy partíció fájljainak kezelésére; azaz ahogyan a fájlok elrendez˝odnek a lemezen. Ezt a szót még a lemez adott típusú fájlrendszert tartalmazó partíciójára is használják, vagy csak a típus megjelölésekor. Így például mondhatjuk, hogy “Két fájlrendszerem van.”, ami azt jelenti, hogy két partíciónk van, melyeken a fájlokat tároljuk. Azt is mondhatjuk, hogy valaki “kiterjesztett fájlrendszert” használ, ami viszont az általa használt fájlrendszer típusát jelenti. A lemez (vagy partíció) és a rajta lév˝o fájlrendszer közti különbség nagyon fontos. Néhány program, mint például a fájlrendszereket létrehozó programok, közvetlenül a lemez szektoraival dolgoznak. Ilyen program egy már esetleg meglév˝o fájlrendszert súlyosan megrongálhat, vagy meg is semmisíthet. A legtöbb program viszont csak a fájlrendszert használva ír a lemezre, ezért ezek csak megfelel˝o fájlrendszert már tartalmazó partíción m˝uködnek.

38

Fejezet 6. Lemezek és egyéb tárolóeszközök használata Miel˝ott egy lemezt vagy partíciót fájlrendszerként kezdünk használni, inicializálni kell, és a nyilvántartó adatstruktúrákat a lemezre kell írni. Ezt a folyamatot fájlrendszer készítésnek nevezzük. A legtöbb UNIX fájlrendszernek hasonló az általános felépítése, bár a részletek egy kicsit változhatnak. A központi fogalmak: szuperblokk, inode, adatblokk, könyvtárblokk és az indirekció blokk. A szuperblokk a fájlrendszer egészér˝ol tartalmaz információkat, mint például a teljes méret. A szuperblokk pontos tartalma fájlrendszerfügg˝o. Az inode-ok egy-egy fájl minden adatát tartalmazzák a nevén kívül. A név ugyanis a könyvtárban tárolódik az inode sorszámával együtt. Egy könyvtárbejegyzés a fájlnévb˝ol és a fájlt jelképez˝o inode számából áll. Az inode több adatblokk sorszámát tartalmazza, melyek a fájl adatait tárolják. Az inode-ban azonban csak néhány adatblokk sorszámának van hely, és ha ennél több szükséges, automatikusan több terület kerül lefoglalásra. Ezek a dinamikusan lefoglalt blokkok az indirekt blokkok; a név azt jelzi, hogy az adatblokk megtalálásához el˝obb az indirekt blokkban kell megkeresni a megfelel˝o blokk sorszámát. A UNIX fájlrendszerek rendszerint megengedik a fájlbeli lyukak (hole) létrehozását (lásd az lseek() rendszerhívás kézikönyv oldalát), ami azt jelenti, hogy a fájlrendszer megjegyzi, hogy a fájl egy adott helyén egymás után adott számú 0 byte van, de nem foglal ezen nullák számára blokkot. Ez kisebb lemezhasználatot eredményez. Egymást követ˝o nullák gyakran el˝ofordulnak kis bináris programokban, a Linux megosztott programkönyvtáraiban, adatbázisokban és néhány más esetben. (A lyukak megvalósítása úgy történik, hogy egy speciális érték kerül beírásra az adatblokk sorszámának helyére az inode-ban vagy az indirekt blokkban. Ez a speciális érték azt jelenti, hogy a fájl azon részéhez nem tartozik adatblokk, azaz lyuk van a fájlban.)

6.8.2. A fájlrendszerek galériája A Linux sokféle fájlrendszer típust ismer. Az írás pillanatában a legfontosabbak: minix A legrégibb, vélhet˝oleg a legmegbízhatóbb, de korlátozottak a lehet˝oségei. (Néhány id˝obélyeg hiányzik, legfeljebb 30 karakteresek a fájlnevek, legfeljebb 64 MB-os fájlrendszerek.)

xia A minix módosított változata, melyben megemelték a fájlok és fájlnevek méretére vonatkozó korlátokat, de egyéb új lehet˝oségeket nem vezettek be. Nem túl népszer˝u, de a beszámolók szerint nagyon jól m˝uködik.

ext3 Az ext3 rendelkezik az ext2 fájlrendszer minden képességével. A különbség abban áll, hogy naplózással is ellátták, ami javítja a teljesítményét és rendszerösszeomlás esetén lerövidíti a helyreállítási id˝ot. Népszer˝ubb, mint az ext2.

ext2 A Linux alap fájlrendszerei közül a legtöbb szolgáltatást nyújtja. A tervezése biztosítja a felfelé kompatibilitást, azaz az új változatok bevezetése esetén nem kell újra generálni a létez˝o fájlrendszereket.

39

Fejezet 6. Lemezek és egyéb tárolóeszközök használata ext A ext2 régebbi változata, amely nem kompatibilis felfelé. Új rendszer telepítésekor gyakorlatilag nem használják, és szinte mindenki konvertálta már ext2 fájlrendszerre a régi ext fájlrendszereit.

reiserfs Robusztus fájlrendszer. A naplózás csökkenti az adatvesztés esélyét. Ezt egy olyan mechanizmussal érik el, melynek során minden elvégzend˝o vagy elvégzett m˝uvelet rögzítésre kerül. Így a fájlrendszer igen könnyen kijavítja magát, például a nem megfelel˝o leállítás során keletkezett hibákat.

Létezik továbbá sok küls˝o fájlrendszer típushoz is támogatás, hogy könnyebben lehessen adatokat cserélni más operációs rendszerekkel. Ezek a linuxos fájlrendszerekhez hasonlóan m˝uködnek, de esetenként nem tudják a UNIX összes lehet˝oségét biztosítani, vagy furcsa korlátaik, egyéb hiányosságaik vannak. msdos Kompatibilis az MS-DOS (valamint az OS/2 és a Windows NT) FAT fájlrendszereivel.

umsdos Az msdos fájlrendszer kiterjesztése oly módon, hogy Linux alól hosszú fájlnevek, tulajdonosok, engedélyek, hivatkozások (link) és eszközfájlok is használhatók legyenek. Ezzel lehetséges egy normál msdos fájlrendszert használni a Linux tárolására, azaz nem szükséges külön partíció a Linuxnak.

vfat A FAT fájlrendszer FAT32 néven ismert kiterjesztése, amely képes nagyobb lemezméreteket kezelni, mint el˝odje. A legtöbb MS Windows lemez vfat fájlrendszert tartalmaz.

iso9660 A szabványos CD-ROM fájlrendszer; a népszer˝u Rock Ridge kiterjesztés (amely a hosszú fájlneveket engedélyezi) szükség esetén automatikusan bekapcsolódik.

nfs Hálózati fájlrendszer, mely megengedi a fájlok több számítógép közötti megosztását.

40

Fejezet 6. Lemezek és egyéb tárolóeszközök használata smbfs Szintén hálózati fájlrendszer, kifejezetten MS Windowst futtató számítógépekkel való fájlmegosztásra. Kompatibilis a Windows fájlmegosztási protokolljaival.

hpfs Az OS/2 fájlrendszere.

sysv SystemV/386, Coherent, és Xenix fájlrendszerek.

A fájlrendszer kiválasztása a helyzett˝ol függ. Kompatibilitási vagy egyéb okok néha rákényszerítenek egy-egy nem-linuxos típus használatára. Ha van szabad választásunk, általában a legbölcsebb az ext3 választása, mivel rendelkezik az ext2 összes el˝onyével, naplózással kiegészítve. Egy különleges fájlrendszertípus a proc, mely általában a /proc alatt érhet˝o el, és ami igaziból nem fájlrendszer, habár úgy néz ki. A proc fájlrendszer megkönnyíti a rendszermag néhány adatstruktúrájának elérését, mint például a processzek neveinek listája (innen a név). A rendszermag ezeket az adatstruktúrákat fájlrendszerként jeleníti meg, és így azok a szokásos fájlkezel˝o eszközökkel befolyásolhatók. Például a processzek listázása a következ˝o módon is lehetséges: $ ls -l /proc total 0 dr-xr-xr-x 4 dr-xr-xr-x 4 dr-xr-xr-x 4 dr-xr-xr-x 4 dr-xr-xr-x 4 dr-xr-xr-x 4 -r--r--r-1 -r--r--r-1 -r--r--r-1 -r--r--r-1 -r-------1 -r--r--r-1 -r--r--r-1 -r--r--r-1 -r--r--r-1 -r--r--r-1 dr-xr-xr-x 2 dr-xr-xr-x 4 -r--r--r-1 -r--r--r-1 -r--r--r-1

root liw liw liw root liw root root root root root root root root root root root root root root root

root users users users users users root root root root root root root root root root root root root root root

0 0 0 0 0 0 0 0 0 0 8654848 0 0 0 0 0 0 0 0 0 0

Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan

31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31

20:37 20:37 20:37 20:37 20:37 20:37 20:37 20:37 20:37 20:37 20:37 11:50 20:37 11:51 20:37 20:37 20:37 20:37 20:37 20:37 20:37

1 63 94 95 98 99 devices dma filesystems interrupts kcore kmsg ksyms loadavg meminfo modules net self stat uptime

41

Fejezet 6. Lemezek és egyéb tárolóeszközök használata version $

(Megjegyzend˝o, hogy van néhány extra fájl, ami nem felel meg egy processznek sem, valamint hogy a fenti listát rövidítettük.) Hangsúlyozzuk, hogy bár a proc fájlrendszer úgy néz ki, mint egy normális fájlrendszer, valójában semmi köze a lemezekhez, egyedül a rendszermag "képzeletében" létezik. A proc fájlrendszerre való hivatkozás rendszermag hívássá alakul, és a rendszermag ad olyan választ, mintha fájlokról lenne szó. Így például a sok megabyte-os /proc/kcore fájl sem foglal helyet a lemezen.

6.8.3. Melyik fájlrendszert használjuk? A gyakorlatban ritkán van értelme több különféle fájlrendszert használni. Pillanatnyilag az esetek többségében az ext3 fájlrendszer használata t˝unik a legokosabb választásnak, ez a legelterjedtebb fájlrendszer, a naplózás miatt. A reiserfs szintén a naplózási képességei miatt válik egyre népszer˝ubbé. Az adatnyilvántartó struktúrák miatti többletszámítások, a sebesség, a megbízhatóság, a kompatibilitás és sok más szempont esetenkénti mérlegelése döntheti el, hogy az egyes esetekben milyen típusú fájlrendszert használjunk. A naplózó fájlrendszerek nyilvántartják, mi minden történt a rendszeren. Egy rendszerösszeomlás esetén, vagy ha kétéves fiad megnyomja a "power" gombot - ahogy az enyém ezt szokta tenni - , a naplózó fájlrendszer ezekb˝ol a naplókból helyreállítja az el nem mentett, elveszett adatokat. Így az adatvesztés lehet˝osége jóval kisebb, s valószín˝uleg ez lesz a Linux fájlrendszerek szabványos formája. Persze ne bízzuk el magunkat, hibák mindig történhetnek, ezért rendszeresen készítsünk biztonsági mentést az adatainkról.

6.8.4. Fájlrendszer létrehozása A fájlrendszerek létrehozása (inicializálása) az mkfs paranccsal történik. Tulajdonképpen minden fájlrendszer típushoz különálló program létezik, és az mkfs parancs csak egy el˝otét, mely ezek közül a megfelel˝ot futtatja. A típust a -t fstype (fájlrendszer típusa) opcióval választhatjuk ki. Az mkfs által hívott programok parancssori felülete kissé különbözhet egymástól. A közös és legfontosabb opciókat lentebb összegezzük; a kézikönyv oldalakon többet olvashatunk róluk. -t típus

A fájlrendszer típusát adja meg.

-c

Hibás blokkok keresése és listájuk inicializálása.

-l fájlnév A kezdeti hibás blokk listát a megadott fájlból veszi.

42

Fejezet 6. Lemezek és egyéb tárolóeszközök használata

Például ext2 fájlrendszert az alábbi módon hozhatunk létre egy hajlékonylemezen: $ fdformat -n /dev/fd0H1440 Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting ... done $ badblocks /dev/fd0H1440 1440 $>$

bad-blocks $ mkfs -t ext2 -l bad-blocks /dev/fd0H1440 mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10 360 inodes, 1440 blocks 72 blocks (5.00%) reserved for the super user First data block=1 Block size=1024 (log=0) Fragment size=1024 (log=0) 1 block group 8192 blocks per group, 8192 fragments per group 360 inodes per group Writing inode tables: done Writing superblocks and filesystem accounting information: done $

El˝oször is formáztuk a lemezt (az -n opció kikapcsolja az érvényesítést, azaz a hibás blokkok figyelését). A hibás blokkokat a badblocks paranccsal kerestük meg, melynek kimenetét a bad-blocks fájlba irányítottuk. Végül létrehoztuk a fájlrendszert az el˝obbi lista figyelembe vételével. A -c opció használatával ugyanezt elérhetjük, csak egyszer˝ubben, a badblocks parancs és külön fájl nélkül: $ mkfs -t ext2 -c

/dev/fd0H1440 mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10 360 inodes, 1440 blocks 72 blocks (5.00%) reserved for the super user First data block=1 Block size=1024 (log=0) Fragment size=1024 (log=0) 1 block group 8192 blocks per group, 8192 fragments per group 360 inodes per group Checking for bad blocks (read-only test): done Writing inode tables: done Writing superblocks and filesystem accounting information: done $

43

Fejezet 6. Lemezek és egyéb tárolóeszközök használata A -c opció kényelmesebb, mint a badblocks parancs külön használata a fájlrendszer létrehozásakor, de a badblocks segítségével a fájlrendszer létrehozása után is ellen˝orizhetjük a lemezt. A fájlrendszerek létrehozása ugyanígy történhet merevlemezen is, de ott a formázás nem szükséges.

6.8.5. Fel- és lecsatolás (mounting, unmounting) A fájlrendszerek használatba vétele el˝ott fel kell csatolni o˝ ket. Az operációs rendszer ezután különféle adminisztratív m˝uveleteket végez a m˝uködés biztosítására. Mivel a UNIX-ban minden fájl egyetlen könyvtárstruktúrába illeszkedik, a felcsatolás m˝uvelete az új fájlrendszer tartalmát úgy jeleníti meg, mintha alkönyvtár lenne egy már felcsatolt fájlrendszerben. Például a 6-3 Ábra három független fájlrendszert mutat, külön-külön gyökérkönyvtárral. Amikor az utóbbi kett˝ot a /home és /usr alá felcsatoljuk az els˝o fájlrendszeren, egyetlen fastruktúrát kapunk, ahogyan a 6-4 Ábra mutatja. Ábra 6-3. Három különálló fájlrendszer

Ábra 6-4. A /home és az /usr felcsatolva

Ezek a felcsatolások például a következ˝o módon hozhatók létre: $ mount /dev/hda2 /home $ mount /dev/hda3 /usr $

A mount parancsnak ezekben a példákban két argumentuma van. Az els˝o az eszközfájl, ami annak a lemeznek vagy partíciónak felel meg, amely a fájlrendszert tartalmazza. A második az a könyvtár, ami alá a fel szeretnénk csatolni a

44

Fejezet 6. Lemezek és egyéb tárolóeszközök használata fájlrendszert. A parancsok kiadása után két fájlrendszer tartalma úgy látszik, mintha a /home illetve /usr könyvtárak tartalma lenne. Ezt úgy szokás mondani, hogy például a “/dev/hda2 a /home alá lett felcsatolva (hunglishül: "mountolva" vagy "felmountolva", de hangosan ilyet csak akkor mondjatok, ha Grétsy tanár úr vagy Szy Gyuri nincs a közelben :-) - a lektor)”. Ha valamelyik fájlrendszert meg akarjuk tekinteni, annak a könyvtárnak a tartalmát fogjuk nézni, amelyik alá csatlakoztattuk, mintha csak egy másik könyvtár lenne. Figyeljük meg az eszközfájl (például /dev/hda2) illetve a csatlakozási könyvtár (/home) közti különbséget. Az eszközfájl a lemez nyers tartalmához enged hozzáférést, míg a csatolási könyvtáron keresztül ugyanezeket az adatokat érjük el, csak formázva, fájlok és könyvtárak formájában. A csatolási könyvtárat szokás csatolási pontnak (mount point) is nevezni. A Linux sok fájlrendszer típust támogat, melyek közül a mount megpróbálja automatikusan kiválasztani a megfelel˝ot. Használhatjuk a -t fstype opciót is a típus megadására. (Ez néha elengedhetetlen is, mert a mount által használt ökölszabályok nem mindig m˝uködnek.) Például egy MS-DOS hajlékonylemez felcsatolását a következ˝oképpen tehetjük meg: $ mount -t msdos /dev/fd0

/floppy $

A csatolási könyvtárnak nem kell üresnek lennie, de azért léteznie kell. Viszont ha voltak fájlok alatta, azok láthatatlanok lesznek a rendszer számára, amíg a felcsatolás érvényben van. (Pontosabban: a felcsatoláskor már megnyitott fájlok továbbra is elérhet˝ok, valamint a felcsatolás el˝ott máshonnan létrehozott hivatkozásokon (link) keresztül is.) Általában nem szoktak ezzel tör˝odni, de néha hasznos lehet. Például néhányan szeretik, ha a /tmp és a /var/tmp gyakorlatilag ugyanaz, ezért a /tmp könyvtárat egy szimbolikus hivatkozásnak állítják be, mely a /var/tmp könyvtárra mutat. A rendszerindítási folyamat során, miel˝ott a /var felcsatolódna, a gyökér fájlrendszeren lév˝o /var/tmp könyvtárat használja helyette. Amikor a /var felcsatolódik, elérhetetlenné válik a gyökér fájlrendszer /var/tmp könyvtára. Ha nem létezne a /var/tmp a gyökér fájlrendszeren, a /var csatlakozása el˝ott nem lehetne ideiglenes fájlokat használni. Ha nem szándékozol írni a fájlrendszerre, a -r kapcsolót kell megadni a mount programnak, hogy csak olvasható felcsatolás (readonly mount) jöjjön létre. Ez azt eredményezi, hogy a rendszermag minden írási kísérletet leállít az ilyen fájlrendszerre, még a fájlok elérési idejének frissítését is. A csak olvasható felcsatolás a nem írható adathordozóknál (például CD-ROM) lehetnek szükségesek. A figyelmes olvasó már észrevehetett egy apró logisztikai problémát. Hogy csatolódik fel a legels˝o, azaz a gyökér fájlrendszer, amikor efelett nincs fájlrendszer, amihez felcsatolódhatna? Nos, a válasz az, hogy egy kis varázslattal. 10 A gyökér fájlrendszer mágikusan csatolódik a rendszerindítás során, és biztosra vehetjük, hogy mindig fel van csatolva van. Ha ugyanis a gyökér fájlrendszer nem csatolódik fel, a rendszer fel sem áll. A fájlrendszer neve, ami ily módon mágikusan csatolódik fel, vagy a rendszermagba van fordítva, vagy a LILO illetve az rdev parancs segítségével állítható be. A gyökér fájlrendszer el˝oször általában csak olvashatóan csatlakozik. Az indító szkriptek ekkor ellen˝orzési célokból lefuttatják az fsck programot, és ha nem volt probléma, újracsatolják (re-mount), de már írható/olvasható módon. Az fsck parancsot tilos futtatni írhatóan csatlakoztatott fájlrendszeren, mivel az fsck futása közbeni változások a fájlrendszeren mindenképpen hibát okoznak. Mivel az ellen˝orzés alatt a gyökér fájlrendszer csak olvashatóan van csatlakoztatva, az fsck nyugodtan kijavíthatja az esetleges hibákat, mivel az újracsatolás minden, a fájlrendszerre vonatkozó és memóriában tartott metaadatot kitöröl. (Mivel a fájlrendszer csak olvasható módban volt felcsatolva, ezért semmilyen változás nem íródik ki rá, kivéve az, amit az fsck maga kiír az operációs rendszer megkerülésével. Ha az esetleges javítás után a fájlrendszerre vonatkozó adatok és metaadatok (a metaadatok a fájlrendszer egészére

45

Fejezet 6. Lemezek és egyéb tárolóeszközök használata vonatkozó információk) a memóriából visszaíródnának, akkor a fájlrendszer sérülne, mivel azok az fsck m˝uködése során elavulttá váltak - a lektor.) A legtöbb rendszeren más fájlrendszereket is fel kell csatolni a rendszerindítás folyamán. Ezeket az /etc/fstab fájlban adhatjuk meg. (Lásd az fstab kézikönyv oldalt.) A további fájlrendszerek felcsatolásának részletei sok mindent˝ol függenek, és a rendszeradminisztrátor állítja be, ha szükséges; lásd a 8 fejezetet. Amikor egy felcsatolt fájlrendszerre a továbbiakban nincs szükség, lecsatolható az umount 11 paranccsal, amelynek egy argumentuma van: akár az eszközfájl, akár a felcsatolási pont megadható. Az el˝oz˝o példában szerepl˝o könyvtárak lecsatolását megtehetjük tehát így is: $ umount /dev/hda2 $ umount /usr $

Az umount kézikönyv oldalán találhatjuk meg a részletes információkat a parancsról. Nagyon fontos, hogy mindig lecsatoljuk a felcsatolt fájlrendszereket. Ne vegyük ki csak úgy a hajlékonylemezt a meghajtóból, lecsatolás nélkül! A gyorstárazás miatt az adatok nem azonnal íródnak rá a lemezre, hanem esetleg csak a lecsatoláskor, így a lemez lecsatolás nélküli kivétele azt eredményezheti, hogy tartalma összezagyválódik. Ha csak olvastunk a lemezr˝ol, ennek esélye igen kicsi, de ha akár csak véletlenül írtunk rá, az eredmény katasztrofális lehet. A felcsatolás és a lecsatolás szuperfelhasználói jogosultságokat kíván meg, azaz csak a root teheti meg. Ennek oka az, hogy ha bármelyik felhasználó felcsatolhatna hajlékonylemezen lév˝o fájlrendszert bármely könyvtárhoz, akkor nagyon könny˝u lenne egy /bin/sh-nak (vagy bármely más, gyakran használt programnak) látszó trójaival ellátott lemezt készíteni. Ez pedig lényegében nullára redukálná a rendszer biztonságát. Ugyanakkor mégis gyakran szükség van arra, hogy engedélyezzük a felhasználóknak a hajlékonylemezek használatát, s ennek számos módja van: •

Adjuk meg a felhasználóknak a root jelszót. Ez nyilvánvalóan rossz megoldás a biztonság szempontjából, de ez a legkönnyebb. Ha nincs szükség a biztonságra, mint például hálózat nélküli, személyes rendszer esetén, akkor elfogadható.



Egy program, például a sudo segítségével megengedjük a felhasználóknak a mount használatát. Ez is nagyon rontja a biztonságot, de nem ad közvetlenül szuperfelhasználói jogosultságokat a felhasználóknak. 12



Bocsássuk az mtools csomagot a felhasználók rendelkezésére az MS-DOS fájlrendszer használatához. Ekkor nincs szükség a mount használatára. Ha csak MS-DOS-os hajlékonylemezeket használatunk, akkor ez jó megoldás.



A hajlékonylemezes eszközöket és a megengedhet˝o felcsatolási pontokat a megfelel˝o opciókkal ellátva jegyezzük be az /etc/fstab fájlban.

Az utóbbi lehet˝oség úgy valósítható meg, ha beírjuk a következ˝o sort az /etc/fstab fájlba: /dev/fd0

/floppy

msdos

user,noauto

0

0

Az egyes oszlopok jelentése: a csatolandó eszközfájl, a csatlakozási könyvtár, a fájlrendszer típusa, opciók, mentési gyakoriság (amit a dump használ) és az fsck ellen˝orzés gyakorisága (pass number). Ez utóbbi a rendszerindítás során való ellen˝orzés rendjét szabályozza; a 0 érték az ellen˝orzést kikapcsolja. A noauto opció kikapcsolja az automatikus felcsatolást, azaz a rendszer elindulásakor az inicializáló szkriptek által kiadott mount -a nem csatolja fel ezeket. A user opció minden felhasználónak megengedi a felcsatolást, és biztonsági okokból lehetetlenné teszi a felcsatolt lemezen lev˝o programok futtatását és az itteni eszközfájlok

46

Fejezet 6. Lemezek és egyéb tárolóeszközök használata használatát. Ha megtettük a fenti bejegyzést az /etc/fstab fájlba, akkor bármelyik felhasználó felcsatolhat MS-DOS fájlrendszer˝u hajlékonylemezt a következ˝o paranccsal: $ mount /floppy $

A lemezt a kivétel el˝ott a megfelel˝o umount paranccsal lehet (és persze kell) lecsatolni. Ha többféle típusú hajlékonylemezt szeretnénk használni, több felcsatolási pontra lehet szükségünk, eltér˝o beállításokkal. Például ha MS-DOS és ext2 lemezeket is használni szeretnénk, a következ˝o sorokat írjuk az /etc/fstab fájlba: /dev/fd0 /dev/fd0

/dosfloppy /ext2floppy

msdos ext2

user,noauto user,noauto

0 0

0 0

MS-DOS fájlrendszerek esetében (nemcsak hajlékonylemezeknél) érdemes az elérést az uid, gid és umask opciókkal korlátozni. Ezeket a mount kézikönyv oldala írja le részletesen. Ha nem vagy óvatos, egy MS-DOS fájlrendszert felcsatolva, az azon lév˝o fájlokat legalábbis olvasni mindenki tudja, ami nem túl jó ötlet.

˝ 6.8.6. Fájlrendszerek épségének ellenorzése az fsck paranccsal A fájlrendszerek bonyolult képz˝odmények, ezért hajlamosak a meghibásodásra. Egy fájlrendszer helyessége és érvényessége az fsck paranccsal ellen˝orizhet˝o. Ez a program képes a megtalált kisebb problémákat kijavítani, és figyelmeztetni a nem javítható hibákra. Szerencsére a fájlrendszert megvalósító kódot nagyon hatékonyan hibamentesítették, ezért nagyon ritkán akad probléma, és az is többnyire áramkimaradás, hardverhiba vagy kezelési hiba (nem megfelel˝o rendszerleállítás) miatt keletkezik. A legtöbb rendszer úgy van beállítva, hogy rendszerindításkor automatikusan futtatja az fsck programot, így remélhet˝oen minden hiba kiderül és javításra kerül a rendszer használata el˝ott. Sérült fájlrendszer használata esetén a hibák csak szaporodnak; ha az adatstruktúrákban van zavar, a fájlrendszer használata még több adatvesztéshez vezethet. Igaz ugyan, hogy az fsck futtatása eltarthat egy kis ideig, ha nagy fájlrendszereket használunk, és az ellen˝orzés szinte mindig felesleges, ha a rendszerleállás szabályos volt, ezért néhány trükkel meg lehet gátolni az ellen˝orzés állandó automatikus végrehajtását. Az els˝o trükk, hogy ha létezik az /etc/fastboot fájl, nem történik ellen˝orzés. A második, hogy az ext2-es fájlrendszereknek van egy speciális jelzése a szuperblokkban, mely jelzi, hogy a fájlrendszer szabályosan lett-e lecsatolva az utolsó felcsatolás óta. Ez lehet˝ové teszi, hogy az ext2 rendszereket ellen˝orz˝o e2fsck program figyelje ezt a jelet, és csak hibás lecsatolásra utaló jelzés esetén végezze el az ellen˝orzést. (Közben feltételezzük, hogy a szabályos leállítás egyenl˝o a hibamentességgel.) Az, hogy az /etc/fastboot -os trükk megy-e, a rendszer indító szkriptjeit˝ol függ, de az ext2-es el˝obb említett trükkje mindig m˝uködik, ha az e2fsck -t használjuk. (Természetesen az ellen˝orzés kikényszeríthet˝o, ha kell. Ennek módja az e2fsck kézikönyv oldalán olvasható.) Az automatikus ellen˝orzés természetesen csak azokra a rendszerekre vonatkozik, melyeket automatikusan csatolunk fel a rendszerindítás során. Az fsck parancsot kézzel kell indítanunk a többi fájlrendszer (például hajlékonylemezek) esetén. Ha az fsck javíthatatlan hibát észlel, akkor vagy nagyon alapos tudásra van szükséged a fájlrendszer m˝uködését illet˝oen, vagy jó biztonsági mentésre. Utóbbi az egyszer˝ubb, bár néha unalmas. Az el˝obbihez szükség lehet egy barát vagy egy levelezési lista segítségére, esetleg más forrásokra, ha magad nem ismered a fájlrendszer bels˝o m˝uködését. Szeretnék többet is mondani err˝ol, de csekély tudásom és gyakorlatom meggátol ebben. Theodore T’so debugfs programja hasznos lehet.

47

Fejezet 6. Lemezek és egyéb tárolóeszközök használata Az fsck programot csak lecsatolt fájlrendszeren szabad alkalmazni! (Egyetlen kivétel a csak olvasható gyökér fájlrendszer a rendszerindítás során.) Ez azért van, mert a program a nyers lemezblokkokkal dolgozik, és ezért úgy módosíthatja a fájlrendszert, hogy azt az operációs rendszer nem veszi észre, ami biztosan jelent˝os hibákhoz vezet.

˝ 6.8.7. Lemezhibák ellenorzése a badblocks paranccsal Nem árt id˝onként ellen˝orizni a hibás szektorokat a badblocks paranccsal, és a megtalált hibás szektorok listáját átadni az fsck-nak, hogy az operációs rendszer a kés˝obbiekben ne használja a hibás lemezterületeket. Íme egy példa: $ badblocks /dev/fd0H1440 1440 >

bad-blocks $ fsck -t ext2 -l bad-blocks /dev/fd0H1440 Parallelizing fsck version 0.5a (5-Apr-94) e2fsck 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Check reference counts. Pass 5: Checking group summary information. /dev/fd0H1440: ***** FILE SYSTEM WAS MODIFIED ***** /dev/fd0H1440: 11/360 files, 63/1440 blocks $

Ha egy hibás blokk már használatban van, az e2fsck megpróbálja a blokkot más helyre mozgatni. Ez csak akkor sikerül, ha kisebb hiba volt csak, komoly hibánál az adott fájl tartalma sérülhet.

˝ 6.8.8. A töredezettség (fragmentation) megelozése Amikor egy fájlt a lemezre írunk, nem mindig lehet egymást követ˝o blokkokat használni. Azokat a fájlokat, melyek blokkjai nem egymást követik, töredezettnek (fragmented) nevezzük. A töredezett fájlok olvasása lassabb, mivel a lemez író-olvasó feje sokat mozog ilyenkor. Ezért szükséges védekezni a töredezettség ellen, habár a probléma csökkenthet˝o jó gyorstár (cache puffer) és el˝oreolvasás (read-ahead) alkalmazásával is. Az ext2 fájlrendszer a fájlok blokkjainak egymás közelébe rakásával igyekszik a töredezettséget minimális szinten tartani, még akkor is, ha egymást szorosan követ˝o blokkok nem találhatók a lemezen. Ezt úgy éri el, hogy gyakorlatilag mindig a legközelebbi blokkot foglalja le egy fájl következ˝o blokkjaként. Ezért az ext2 fájlrendszerek esetén többnyire nem kell a töredezettség miatt aggódnunk. Ha mégis szükség lenne a töredezettségmentesítésre ext2 fájlrendszer esetében, létezik erre program, amelynek meglep˝o módon defrag a neve. 13 . Sok MS-DOS töredezettségmentesít˝o program létezik, mely a blokkok átrendezésével csökkenti a töredezettséget. Más fájlrendszerek esetén a töredezettség úgy szüntethet˝o meg, hogy lementjük a rendszer fájljait, újra létrehozzuk a fájlrendszert, majd visszaállítjuk az elmentett fájlokat. A töredezettségmentesítés el˝ott mindenképp jó ötlet a mentés elkészítése (ext2 és msdos típus esetében is), mert egy töredezettségmentesítés közben sok minden elromolhat.

48

Fejezet 6. Lemezek és egyéb tárolóeszközök használata

6.8.9. Egyéb általános eszközök fájlrendszerek kezelésére Van még néhány hasznos eszköz fájlrendszerek kezelésére. A df megmutatja a szabad lemezterületet egy vagy több fájlrendszeren; a du egy könyvtár és a benne lév˝o fájlok által használt lemezterületet adja meg. Ezeket a lemezpazarló felhasználók/programok levadászására lehet használni. Mindkét parancs kézikönyv oldalát érdemes átolvasni, mert sok opciójuk van. A sync a lemez gyorstár minden ki nem írt blokkját lemezre íratja (lásd 7.6 ). Ezt csak ritkán kell kézzel kiadni, az update démon teszi ezt meg automatikusan. A sync-et akkor használjuk közvetlenül, ha baj van, például az update vagy annak segédprocessze, a bdflush meghal, vagy ha mindenképpen most azonnal kell lekapcsolni az áramot, és nem lehet az update-re várni. Ezekhez is tartoznak kézikönyv oldalak. A man a legjobb linuxos barátod. Testvére, az apropos szintén jó szolgálatot tehet, ha nem tudod, mi a neve egy-egy parancsnak.

6.8.10. Egyéb eszközök ext2/ext3 fájlrendszerekhez A fájlrendszer létrehozására szolgáló mke2fs és azt ellen˝orz˝o e2fsck programokon kívül, melyek közvetlenül, vagy a fájlrendszert˝ol független el˝otét programokon keresztül is hívhatók, létezik még néhány hasznos eszköz az ext2 fájlrendszerek kezelésére. A tune2fs a fájlrendszer paramétereit állítja át. Néhány fontos paraméter: •

Maximális felcsatolást számláló (maximal mount count). Az e2fsck kikényszeríti az ellen˝orzést, ha a rendszer túl sokszor lett felcsatolva, még akkor is, ha az el˝oz˝o lecsatolás rendben ment az ezt mutató állapotjelz˝o szerint. Tesztelési és fejlesztési célokat szolgáló rendszeren ezt célszer˝u lehet csökkenteni.



Maximális id˝o két ellen˝orzés között. Az e2fsck két ellen˝orzés között eltel˝o maximális id˝ore is beállítható, ilyenkor tehát akkor is ellen˝oriz, ha egyébként nem túl gyakran csatolták fel és le a fájlrendszert. Ez a lehet˝oség akár ki is kapcsolható.



A root számára fenntartott blokkok száma. Az ext2 fájlrendszer néhány blokkot fenntart a rendszergazda számára, így ha a fájlrendszer megtelik, a rendszeradminisztráció még mindig elvégezhet˝o el˝ozetes törlés, helycsinálás nélkül. Alapértelmezés szerint a blokkok 5%-a kerül ilyen célú lefoglalásra, ami többnyire valóban nélkülözhet˝o. Hajlékonylemezek esetén ezt akár 0-ra is állíthatjuk.

A tune2fs kézikönyv oldalon találhatjuk meg a részletes információkat. A dumpe2fs információkkal szolgál egy ext2 fájlrendszerr˝ol, f˝oleg a szuperblokk alapján. A 6-5 Ábra egy példa kimenetet mutat. Némely kijelzett információt csak a fájlrendszer m˝uködésének ismeretében lehet értelmezni, de a legtöbb mindenki számára könnyen érthet˝o. Ábra 6-5. Példa a dumpe2fs kimenetére dumpe2fs 0.5b, 11-Mar-95 for EXT2 FS 0.5a, 94/10/23 Filesystem magic number: 0xEF53 Filesystem state: clean Errors behavior: Continue Inode count: 360 Block count: 1440 Reserved block count: 72 Free blocks: 1133 Free inodes: 326

49

Fejezet 6. Lemezek és egyéb tárolóeszközök használata First block: 1 Block size: 1024 Fragment size: 1024 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 360 Last mount time: Tue Aug 8 01:52:52 1995 Last write time: Tue Aug 8 01:53:28 1995 Mount count: 3 Maximum mount count: 20 Last checked: Tue Aug 8 01:06:31 1995 Check interval: 0 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) Group 0: Block bitmap at 3, Inode bitmap at 4, Inode table at 5 1133 free blocks, 326 free inodes, 2 directories Free blocks: 307-1439 Free inodes: 35-360 A debugfs egy fájlrendszerhiba-keres˝o (debugger). A lemezen tárolt adatstruktúrákhoz való közvetlen hozzáférést biztosítja, így olyan lemez javítására is használható, melyet az fsck nem tud automatikusan korrigálni. Bizonyos körülmények közt törölt fájlok visszaállítására is használható. Azonban a debugfs használata nagy figyelmet követel; ha nem pontosan értjük, amit csinálunk, akár az összes adatunkat is elveszthetjük. A dump és restore programok ext2 fájlrendszer mentésére és visszaállítására használhatók. Ezek tulajdonképpen a szokásos UNIX eszközök ext2-re specializált változatai. A 12 fejezetben további tudnivalók vannak a mentésr˝ol.

6.9. Fájlrendszer nélküli lemezek Nem minden lemezt vagy partíciót használunk fájlrendszerként. Például a swap partíción sincs fájlrendszer. Sok hajlékonylemezt is szalagszer˝uen használnak, azaz a tar (tape archive; szalagos archívum) kimenete vagy más fájl közvetlenül a nyers lemezre íródik fájlrendszer nélkül. A Linux rendszerindító hajlékonylemezek is ilyenek: csak a nyers rendszermagot tartalmazzák. A fájlrendszer elhagyásának az az el˝onye, hogy nagyobb lemezterületet használhatunk, mivel a fájlrendszer mindig nyilvántartást is jelent. Továbbá javítja a kompatibilitást is különböz˝o rendszerek között: például a tar kimenetének formátuma minden rendszeren azonos, de a fájlrendszerek sokszor különböznek az egyes rendszereken. A fájlrendszer nélküli lemezek használata gyorsan megtanulható. A linuxos rendszerindító hajlékonylemezeken sincs feltétlenül fájlrendszer, noha lehetséges. Az egyik ok a nyers lemezek használatára a lenyomat-készítés (image copy). Mondjuk ha a lemez részlegesen sérült fájlrendszert tartalmaz, nem árt egy pontos másolatot készíteni róla a hibajavítás megkezdése el˝ott, mivel hibás javítás esetén legalább az eredeti állapot visszakapható, és lehet újra próbálkozni. Ennek egyik módja a dd használatával képzelhet˝o el: $ dd if=/dev/fd0H1440

50

Fejezet 6. Lemezek és egyéb tárolóeszközök használata of=floppy-image 2880+0 records in 2880+0 records out $ dd if=floppy-image

of=/dev/fd0H1440 2880+0 records in 2880+0 records out $

Az els˝o dd a lemez pontos lenyomatát készíti el a floppy-image fájlba, a második ezt a lenyomatot hajlékonylemezre írja. (Feltehet˝oen a második parancs kiadása el˝ott lemezt cserélünk, különben semmi értelme ezen két parancsnak.)

6.10. Lemezterület foglalás 6.10.1. Particionálási sémák Nem könny˝u egy lemezt a lehet˝o legjobb módon particionálni. Nincs erre univerzális recept, mivel túl sok tényez˝ot kell figyelembe venni. A szokásos mód az, hogy egy viszonylag kicsi gyökér fájlrendszert hozunk létre, mely a /bin, /etc, /dev, /lib, /tmp könyvtárakat és egyéb olyan fájlokat tartalmaz, melyek a rendszer felállásához és futtatásához szükségesek. Ily módon a gyökér fájlrendszer egy külön partíción helyezkedik el, melynek tartalma önmagában elegend˝o a rendszer elindításához. Ez azért célszer˝u, mert ha a gyökér fájlrendszer kicsi és ritkán használatos, kevéssé valószín˝u, hogy egy rendszerösszeomláskor megsérül, ezért könnyebb lesz az utólagos hibaelhárítás. A többi fontos rész is külön partíción helyezkedhet el, vagyis az /usr-nek, /home-nak (a felhasználók saját könyvtárai) és a swap területnek külön partíciót tartunk fenn. A felhasználók home könyvtárait külön partícióra téve a biztonsági mentés leegyszer˝usödik, mivel a programokat (vagyis az /usr) tartalmát ritkán kell menteni. Hálózati környezetben az /usr akár meg is osztható több gép között (például NFS használatával), így több gép esetén több száz megabyte lemezterület is megtakarítható gépenként. A sok partícióval az a probléma, hogy a teljes lemezterületet több kis részre osztja. Manapság, amikor a lemezek és (remélhet˝oleg) az operációs rendszerek egyre megbízhatóbbak, sokan inkább egyetlen nagy partíciót hoznak létre, mely az összes fájlt tartalmazza. Másrészt azonban egy kisebb partíciót könnyebb menteni és visszaállítani. Kis merevlemez esetén (hacsak nem végzünk rendszermag-fejlesztést) a legjobb egyetlen nagy partícióra pakolni mindent. (Persze a swap-et mindig külön partícióra érdemes rakni.) Nagyobb lemezeknél viszont - a fentiek figyelembevételével - érdemes a rendszer biztonsága és a könnyebb rendszeradminisztráció kedvéért több nagyobb partíciót használni. (A "kicsi" és "nagy" itt természetesen viszonylagosan értend˝o; kinek-kinek saját igényei döntik el, hol van a küszöb.) Több lemez esetén a felhasználók könyvtárait, azaz a /home-ot érdemes külön lemezre tenni a rendszerfájloktól, azaz a gyökér és /usr fájlrendszerekt˝ol. Nem baj, ha gyakorlatot szerzünk a különféle particionálási sémák terén az id˝ok során, s nem csak a rendszer els˝o telepítésekor. Ez ugyan egy kis munkát jelent, mert a rendszer többszöri teljes újratelepítését igényli 14 , de az egyetlen módja a magabiztos és helyes particionálás elsajátításának.

51

Fejezet 6. Lemezek és egyéb tárolóeszközök használata

6.10.2. Helyigények A telepíteni szándékozott Linux terjesztések általában szolgálnak némi információval, mekkora terület kell bizonyos jelleg˝u telepítésekhez. Ugyanez igaz a külön telepített programokra. Ez alapján megtervezhet˝o a lemezigény, de a jöv˝obeli igényeinkre gondolva becslés alapján további területeket is fenn kell tartani. A felhasználói fájlok számára szükséges hely a felhasználók céljaitól függ. A legtöbb ember természetesen minél nagyobb területet szeretne, de az a terület, amely ténylegesen kielégíti o˝ ket, nagyon változatos. Egyesek csak egy kis szövegfeldolgozást végeznek, így b˝oven elég nekik pár megabyte, mások esetleg képeket dolgoznak fel, ezért gigabyte-ok kellenek nekik. Egyébként a "kilobyte" és "megabyte" fogalmakkal egy kicsit vigyázni kell a lemezek esetén. Néhány lemezgyártó szeret úgy számolni, hogy egy kilobyte az 1000 byte és egy megabyte az 1000 kilobyte, míg a számítástechnikai világ másik fele 1024-es szorzókat használ. Ezért egy 345 MB-osnak mondott merevlemez a valóságban csak 330 MB-os. A swap terület lefoglalásáról a 7.5 fejezetben szólunk.

6.10.3. Példák merevlemez helyfoglalásra Régebben egy 109 MB-os merevlemezem volt, most egy 330 MB-os van. Elmagyarázom, hogyan és miért pont úgy particionáltam ezeket. A 109 MB-osat többféle módon particionáltam, ahogy az igényeim és az operációs rendszereim változtak. Ezek közül két esetet ismertetek. Eleinte MS-DOS-t és Linuxot is használtam. Az MS-DOS-nak elég volt 20 MB, mert ezen elfért egy C fordító, egy szövegszerkeszt˝o, néhány segédprogram, a program, amin dolgoztam, és egy kis szabad hely, hogy ne legyen klausztrofóbiám. A Linuxnak volt egy 10 MB-os swap partíciója, a maradék 79 MB pedig egyetlen partíció volt az összes linuxos fájlommal. Sokat kísérleteztem különálló gyökér-, /usr és /home partíciókkal, de egyik vagy másik részen mindig elfogyott a hely. Amikor már nem volt szükségem az MS-DOS-ra, újra particionáltam a lemezt 12 MB-os swap-re, és a maradék ismét egyetlen partíció volt. A 330 MB-os lemezt már több partícióra osztottam: 5 MB

gyökér fájlrendszer

10 MB

swap partíció

180 MB

/usr fájlrendszer

120 MB

/home fájlrendszer

15 MB

rögtönzött (scratch) partíció

A scratch partíciót olyan játszadozásra tartottam fenn, melyek külön partíciót igényelnek, mint például különféle Linux terjesztések kipróbálása, mindenféle fájlrendszer sebességmérése. Amikor épp nem használom ilyesmire, swap-nek fogom be. (Szeretek sok nyitott ablakkal dolgozni.) 15

6.10.4. Lemezterület növelése Linux alatt Több lemezterület hozzáadása a Linuxhoz könny˝u, ha a hardver helyesen van beszerelve. (A hardver telepítése kívül esik a könyv keretein.) Ha szükséges, formázással kell kezdeni, majd particionálni, létrehozni a fájlrendszereket, végül megtenni a megfelel˝o bejegyzéseket az /etc/fstab fájlban, és így már automatikusan felcsatolható lesz az új terület.

52

Fejezet 6. Lemezek és egyéb tárolóeszközök használata

6.10.5. Lemezterület-takarékossági tippek A legjobb tipp, ha lemezterületet akarunk megtakarítani, hogy ne telepítsünk szükségtelen programokat. A legtöbb Linux terjesztés esetén beállítható, hogy csak bizonyos csomagokat telepítsen, és az igények felmérésével a telepít˝o rendszer figyelmeztet, hogy mely csomagokra nem lesz valószín˝uleg szükséged. Ezzel sok terület megtakarítható, hiszen némelyik program elég nagy méret˝u. Az is lehet, hogy egy csomagnak bizonyos részei feleslegesek, például a dokumentáció bizonyos részei, néhány Elisp fájl a GNU Emacs-hoz, néhány karakterkészlet az X11-hez vagy néhány programkönyvtár (library). Ha a csomagok válogatásával több hely nem nyerhet˝o, a tömörítéshez kell fordulni. Az olyan tömörít˝oprogramok, mint például a gzip vagy a zip (és bzip2 - a lektor), tömöríteni és kicsomagolni képesek fájlokat vagy fájlok csoportját. A gzexe program végrehajtható fájlokat képes tömöríteni a felhasználó számára észrevétlenül, egy kicsit lassítva a program indulását a kicsomagolási folyamattal. Ritkán futtatott programoknál célszer˝u lehet használni. A kísérleti DouBle rendszer egy egész fájlrendszert képes tömöríteni, az azt használó programok számára észrevétlen módon. (Aki ismeri mondjuk az MS-DOS-hoz írt Stacker programot vagy a Windowsra írt DriveSpace-t, az könnyen megérti ennek alapelvét is.)

Megjegyzések 1. A korongok valamilyen merev anyagból, például alumíniumból készülnek, innen kapta nevét a "merevlemez". 2. A BIOS egy beépített szoftver, melyet ROM chipek tárolnak. Ez gondoskodik többek között a rendszerindítás kezdeti lépéseir˝ol. 3. Ezek teljesen képzeletbeli adatok. 4. Azaz a bels˝o, fémlemez felületén, a m˝uanyag borításon belül. 5. Bármilyen ironikusan is hangzik, a "wine" valójában egy bet˝uszó, melynek feloldása: “Wine Is Not an Emulator” ("A Wine nem emulátor"). A Wine szigorúan véve egy API-helyettesítés (Application Program Interface; alkalmazás-programozói felület). Figyelmedbe ajánlom a wine dokumentációját a következ˝o helyen: http://www.winehq.com 6. Lásd a VMware honlapját: http://www.vmware.com 7. De attól természetesen teljesen eltér˝o. (Értsd: az elvi m˝uködésük azonos, de a konkrét megvalósítás eltér˝o. - a lektor) 8. Ez az állítás már nem igaz a LILO frissebb verzióira, amelyek támogatják az LBA-t (Logical Block Addressing; logikai blokkcímzés). Érdemes a használt Linux-terjesztés dokumentációjában megnézni, hogy LBA-támogatással rendelkez˝o LILO-t használ-e. 9. A fips a legtöbb Linux-terjesztésben megtalálható. A “Partition Magic” nev˝u kereskedelmi particionáló program is hasonló képességekkel bír, de szebb a felülete. Ne feledd, hogy a particionálás veszélyes tevékenység. Feltétlenül készíts friss biztonsági mentést minden fontos adatról, miel˝ott belefogsz az “él˝o” partíciók átméretezésébe. A parted nev˝u GNU program képes más, például MS-DOS típusú partíciók átméretezésére is, de id˝onként korlátozott formában. Miel˝ott használnád, olvasd el a parted dokumentációját, mert jobb félni, mint megijedni. 10. Részleteket a rendszermag forrásában vagy a Kernel Hackers’ Guide-ban olvashatunk err˝ol. 11. Természetesen unmount-nak kellene nevezni a parancsot, hogy következetesek legyünk. Az n bet˝u azonban titokzatos körülmények között elt˝unt a 70-es években, és azóta sem látták. Aki megtalálja, kérjük, szolgáltassa

53

Fejezet 6. Lemezek és egyéb tárolóeszközök használata vissza a Bell Labs, NJ társaságnak. 12. Bár néhány másodpercnyi er˝oteljes gondolkodással hozzájuthatnak. A sudo-t úgy is be lehet állítani, hogy csak bizonyos parancsokat hajthassanak végre a segítségével (lásd a sudo(8), sudoers(5) és visudo(8) kézikönyv oldalakat). 13. http://www.go.dlr.de/linux/src/defrag-0.73.tar.gz (http://www.go.dlr.de/linux/src/defrag-0.73.tar.gz) 14. Ez tulajdonképpen nem igaz, mert lehetséges átmozgatni a partíciókat és a felcsatolási pontokat újratelepítés nélkül is, de ennek részletezése (egyel˝ore) kívül esik e könyv keretein. Rajta van a TODO-listámon, de ha valakinek van e téren tapasztalata, esetleg meg is írhatná helyettem ezt a részt :) 15. Ez a fejezet mára már kissé idejétmúltnak t˝unik. Manapság már sok-sok gigabyte-os (s˝ot terabyte-os) merevlemezek használatosak. Mindazonáltal a skála érzékeltetésére még jó lehet, csak meg kell szorozni annyival, hogy a gépedre alkalmazható legyen. A fejezet frissítése terveim között szerepel.

54

Fejezet 7. Memóriakezelés “Minnet, jag har tappat mitt minne, är jag svensk eller finne, kommer inte ihåg...” (Bosse österberg) Svéd kocsmadal, nyersfordításban kb. így hangzik: “Emlékezet, elvesztettem az emlékezetemet. Svéd vagyok vagy finn? Nem emlékszem...”

Ez a fejezet a Linux memóriakezelési lehet˝oségeit írja le, azaz a virtuális memóriát és a lemez cache puffereket. Ezen dolgok célját, m˝uködését a rendszeradminisztrátorok igényeinek figyelembevételével ismertetjük.

7.1. Mi a virtuális memória? A Linux támogatja a virtuális memória (virtual memory) kezelését. Ez azt jelenti, hogy képes lemezterületet RAM b˝ovítésként kezelni, azaz a felhasználható memória mérete ennek megfelel˝oen n˝o. A rendszermag a pillanatnyilag nem használt memóriablokkok tartalmát kiírja a merevlemezre, így a felszabaduló memória más célra felhasználható lesz. Amint az eredeti tartalomra újra szükség lesz, visszaolvassa a memóriába. Ez teljesen láthatatlan a felhasználó számára; a Linux alatt futó programok csak a nagy memóriaterületet látják és nem veszik észre, hogy bizonyos részei id˝onként a lemezre kerülnek. Természetesen a merevlemez írása és olvasása sokkal lassabb, mint a valódi memória használata, ami a programok futását lassítja. (A memória és a merevlemez olvasási és írási sebessége közt pár ezerszeres szokott lenni a különbség.) A merevlemez azon részét, amelyet a virtuális memória használ, swap területnek (swap space) nevezzük. A Linux a fájlrendszer egy közönséges fájlját vagy egy külön partíciót is tud használni swap területként. A swap partíció gyorsabb, viszont a swap fájl mérete sokkal könnyebben állítható. (A partíció méretének megváltoztatása sokszor csak a rendszer újratelepítésével lehetséges.) Ha el˝ore tudod a szükséges swap terület nagyságát, a swap partíció használata ajánlott, de ha bizonytalan vagy, használj el˝oször swap fájlt, majd egy kis rendszerhasználat után megbecsülhet˝o a ténylegesen szükséges swap méret, és így már beállítható egy megfelel˝o swap partíció. Tudni kell még, hogy a Linux megengedi egyszerre több swap partíció és/vagy fájl egyidej˝u használatát. Ez azt jelenti, hogy ha esetenként szokatlanul nagy swap területre van szükséged, egy új swap fájl létrehozásával megoldható a probléma a teljes terület állandó lefoglalása helyett. Egy megjegyzés az operációs rendszerek szóhasználatához: a számítástechnika tudománya általában különbséget tesz a swappelés (swapping: a teljes processz swap területre írása) és a lapozás (paging: csak bizonyos fix méret˝u részek, általában pár kilobyte kiírása) között. A lapozás általában hatékonyabb, és ezt használja a Linux is, de valamiért a linuxos szóhasználat ezt is swappelésnek nevezi. 1

7.2. Swap terület létrehozása A swap fájl egy közönséges fájl; a rendszermag sem kezeli speciális módon. Az egyetlen, ami számít a rendszermagnak, hogy ez a fájl ne tartalmazzon lyukakat, és el˝o legyen készítve a mkswap paranccsal. Mindenképpen helyi lemezen kell lennie; megvalósítási okokból nem lehet NFS-en keresztül felcsatolt lemezen. A lyukmentesség nagyon fontos. A swap fájl úgy foglalja le a területet, hogy a rendszermag gyorsan ki tudjon tenni egy lapot egy új szektor foglalásának hosszadalmas m˝uvelete nélkül. A rendszermag pusztán felhasználja a fájlhoz el˝oz˝oleg hozzárendelt szektorokat. A lyuk esetén viszont a fájl adott részéhez nem tartozik lemezterület, így nem jó, ha a rendszermag ezeket próbálja használni.

55

Fejezet 7. Memóriakezelés Lyukak nélküli swap fájl létrehozásának egyik bevált módja: $ dd if=/dev/zero of=/extra-swap bs=1024

count=1024 1024+0 records in 1024+0 records out $

ahol /extra-swap a swap fájl neve, a mérete pedig a count= után van megadva (jelen példánkban kilobyte-ban). Célszer˝u 4 kB egész számú többszörösét venni méretnek, mert a Linux memória lapjainak mérete 4 kB, és a swappelés ilyen egységekben történik. Ha a méret ennek nem többszöröse, az utolsó pár kilobyte kihasználatlan marad. A swap partíció sem különleges semmiféle szempontból. Úgy kell létrehozni, mint bármely más partíciót; az egyetlen különbség, hogy nyersen, azaz fájlrendszer nélkül használjuk. Jó, ha a swap partíció 82-es típusú (Linux swap), ez világosabbá teszi a partíciós táblát. A rendszermag nem figyeli a partíció típusát, tehát használhatunk nem ilyen típusút is swap célokra. (Igaz, ez csökkentheti a rendszer áttekinthet˝oségét.) A swap fájl vagy partíció létrehozása után egy megjelölést kell az elejére írni, ami a rendszermag által használt adminisztratív információt tartalmaz. Ezt a mkswap parancs végzi el: $ mkswap /extra-swap 1024 Setting up swapspace, size = 1044480 bytes $

Jegyezzük meg, hogy mindezek után még nincs használatban a swap terület; létezik ugyan, de a rendszermag nem használja virtuális memóriaként. Óvatosan bánjunk a mkswap paranccsal, mert nem ellen˝orzi, hogy az adott fájlt vagy partíciót használjuk-e más célra. Fontos fájlok és partíciók könnyen felülírhatók a mkswap paranccsal! Szerencsére ezt a parancsot csak a rendszer telepítésekor kell használni. A Linux memóriakezel˝oje az egyes swap területek méretét kb. 127 MB-ra korlátozza. (Technikai okokból a pontos érték: (4096-10) x 8 x 4096 = 133890048 byte, azaz 127.6875 megabyte.) Viszont akár 8 swap terület is használható párhuzamosan, így majdnem 1 GB a swap-nek használható összes terület Linux alatt. 2 A fenti állítás már nem érvényes, ez a fejezet pedig felkerült a "Most már Tényleg Hamarosan" (tm) átírandók listájára. Az újabb rendszermagok és a mkswap parancs frissebb verziói esetén a valódi korlátot a processzor architektúrája szabja meg. Az i386-os és kompatibilis architektúráknál ez a korlát 2 GB, a többinél különböz˝o értékek jellemz˝oek. Részletek a mkswap kézikönyv oldalain találhatók.

7.3. A swap terület használata Egy el˝okészített swap területet a swapon paranccsal tudunk aktívvá tenni. Ez jelzi a rendszermagnak, hogy ezután ezt a területet is használhatja swap célokra. Argumentumként meg kell adni a swap terület elérési útját, mint azt a következ˝o példa mutatja az el˝oz˝oleg el˝okészített swap fájl esetére: $ swapon /extra-swap $

56

Fejezet 7. Memóriakezelés A swap területek automatikusan is használatba vehet˝ok, ha megfelel˝o módon felsoroljuk o˝ ket az /etc/fstab fájlban: /dev/hda8 /swapfile

none none

swap swap

sw sw

0 0

0 0

Az indító szkriptek lefuttatják a swapon -a parancsot, ami az /etc/fstab fájlban felsorolt swap területeket használatba veszi. Ezért általában a swapon parancsot kézzel csak extra swap terület bekapcsolásakor kell kiadni. A swap területeket a free paranccsal lehet megfigyelni, ami megmondja, mennyi swap terület van használatban: $ free total buffers Mem: 15152 -/+ buffers: Swap: 32452 $

used

free

shared

14896 12368 6684

256 2784 25768

12404

2528

A kimenet els˝o sora (Mem:) a fizikai memóriát mutatja. A "total" ("összesen") oszlop nem jelzi ki a rendszermag által használt területet, ami általában kb. 1 MB. A "used" ("használt") oszlop a használt memória mennyiségét mutatja (a második sor nem számolja a puffereket). A "free" ("szabad") oszlop a teljesen használaton kívüli memóriát mutatja. A "shared" ("megosztott") oszlopban a több processz által közösen használt memóriaterület nagyságát láthatjuk; minél nagyobb, annál jobb. A "buffers" ("pufferek") oszlopban pedig a lemez cache pufferének pillanatnyi méretét mutatja meg a parancs. Az utolsó sor (Swap:) hasonlít az els˝ore, csak a swap területre vonatkozik, és nem a fizikai memóriára. Ha ez csupa nullákból áll, a swap terület nincs aktiválva. Ugyanehhez az információhoz juthatunk a top parancs vagy a /proc/meminfo fájl segítségével. Pillanatnyilag körülményes egy megadott swap területr˝ol információt szerezni, ha több is van bel˝olük. A swap területek kikapcsolhatók a swapoff paranccsal. (Természetesen ezt csak ideiglenes swap terület esetén szokás kézzel csinálni.) Els˝oként az argumentumként megadott swap területr˝ol olvassa be a lapokat a rendszer a fizikai memóriába, vagy ha ott nincs elég hely, akkor egy másik swap területre ki is lapozza egyb˝ol. Ha nem lenne elég virtuális memória a kiszedett lapok elhelyezésére, a Linux szemetelni kezd; egy adott id˝o múlva ez helyrehozható, de addig a rendszer használhatatlan. Célszer˝u inkább el˝ore megnézni (pl. a free paranccsal), hogy az adott swap terület kikapcsolásával marad-e elég virtuális memóriánk. A swapon -a paranccsal automatikusan aktivált swap területeket a swapoff -a kikapcsolja az /etc/fstab tartalma alapján, a kézzel bekapcsoltakat pedig békén hagyja. Néha sok swap terület lehet használatban még akkor is, ha sok szabad fizikai memóriánk van. Ez pl. úgy eshet meg, hogy egy adott id˝opontban szükség volt nagy swap használatra, majd egy olyan processz leállt, amely sok fizikai memóriát használt és felszabadította a memóriát. A swap területre tett adatok viszont csak akkor kerülnek be a fizikai memóriába, ha szükség van rájuk, és ha ez sokára következik be, akkor sokáig marad szabad memóriánk. Ez természetesen nem rontja a rendszer hatékonyságát, csak jó tudni, mi történik a gépünkben.

57

Fejezet 7. Memóriakezelés

7.4. Swap területek megosztása különbözo˝ operációs rendszerek között Sok operációs rendszer tartalmazza a virtuális memória használatának lehet˝oségét. Mivel mindegyiknek csak akkor van erre szüksége, amikor fut (azaz sosem egyszerre), az éppen nem futó operációs rendszerek swap területe elvész a használat szempontjából. Hatékonyabb lenne, ha egyetlen swap területen osztozna mindegyik. Ez lehetséges, de egy kis hackelést igényel. A “Tips-HOWTO” néhány tanácsot tartalmaz ezzel kapcsolatban.

7.5. A swap terület nagysága Sokan úgy vélik, hogy a fizikai memóriaméret kétszeresének megfelel˝o swap területet kell lefoglalni, de ez nem mindenekfelett érvényes szabály. A helyes eljárás a következ˝o:



Becsüljük meg a teljes memóriaigényt. Ez a legnagyobb memóriamennyiség, melyre egyszerre szükség lehet, azaz az egyszerre futtatni szándékozott programok memóriaigényeinek összege. Ezt legjobban kipróbálással lehet eldönteni; azaz futtassuk az összes programot egyszerre (esetleg egy már futó rendszeren), amiket valaha is egyszerre kívánunk futtatni, és mérjük a memóriaigényt. Természetesen egy jó becslés is elegend˝o lehet. Például az X futtatása kb. 8 MB, a gcc 4-10 MB területet igényel stb (némelyik fájl szokatlanul sok memóriát igényelhet, akár több tíz MB-ot is, de többnyire 4 MB körül szokott lenni az átlag). A rendszermag kb. 1 MB-ot foglal le, a szokásos shellek valamelyike és pár segédprogram pár száz kB-ot, azaz együtt kb. 1 MB-ot. Nem kell pontosnak lennünk, durva becslések is elegend˝oek, ha egy kicsit pesszimista módon inkább felfelé kerekítjük a memóriaigényt. Figyelni kell arra is, hogy ha egyszerre több ember is dolgozni fog a rendszeren, akkor annak megfelel˝oen növekszik a memóriaigény. Bár az is igaz, hogy ha egyszerre ketten ugyanazt a programot futtatják, a memóriaigény nem kétszeres, mivel a kódlapok és az osztott könyvtárak csak egy példányban léteznek. A free és a ps parancsoknak hasznát vehetjük a becsléskor.



Adjunk egy kis biztonsági tartalékot az 1. lépés eredményéhez. Egyrészt tévedhetünk az egyes programok memóriaigényének becslésekor, másrészt lehet, hogy elfeledkeztél egy majdan használandó programról, és különben is jó, ha van még egy kis szabad hely. Pár megabyte tartalék megfelel˝o lehet. Jobb, ha többet foglalunk, mint ha túl keveset, de túlzásokba sem kell esni, mivel a kihasználatlan swap terület elvesztegetettnek tekinthet˝o. Ha kell, kés˝obb is adhatunk plusz swap területet a rendszerhez. Továbbá, mivel szebb kerek számokkal dolgozni, kerekítsünk a legközelebbi páros megabyte-ra.



Az el˝obbi számítások eredményeként kapunk egy teljes memóriaigényt. Így ebb˝ol a fizikai memóriaméretet kivonva megkaphatjuk a szükséges swap méretét. (Néhány UNIX változat esetén a fizikai memória képmásának is helyet kell foglalni, így nem szabad elvégezni ezt a kivonást.)



Ha a kiszámolt swap méret sokkal nagyobb (mondjuk több, mint 3-szorosa) a fizikai memóriának, érdemes több fizikai memóriát beszerezni, különben a rendszer sebessége nagyon kicsi lesz.

Jó, ha van legalább néhány MB swap területünk, még akkor is, ha a fenti számítás azt mutatja, hogy nem kell semennyi sem. A Linux a swap területet elég agresszíven használja, hogy a lehet˝o legnagyobb fizikai memóriaterület legyen szabadon; akkor is kiteszi a lapozófájlba a nem használt memórialapokat, ha a fizikai memória még nem kell

58

Fejezet 7. Memóriakezelés semmi másra. Ez hasznos lehet, ha kés˝obb mégis swappelni kell, mivel a lemezre írás már korábban megtörténik, amikor a lemez amúgy lustálkodna. A swap terület több lemezre is szétosztható. Ez néha javítja a sebességet, a lemezek és azok elérési sebességének függvényében. Érdemes lehet néhány változatot kipróbálni, bár nehéz tökéletesen kivitelezni. Ne higgyünk olyan állításoknak, hogy ez vagy az a séma jobb, mint a többi, mert nincs általánosan érvényes recept.

7.6. A cache puffer A lemezr˝ol való olvasás sokkal lassabb a fizikai memóriából való olvasásnál. 3 Továbbá gyakran el˝ofordul, hogy a lemez azonos részét viszonylag rövid id˝on belül többször kell olvasni. Például el˝oször elolvasunk egy e-mail üzenetet, utána ezt beolvassuk egy szövegszerkeszt˝obe, hogy válaszoljunk rá, majd megmondjuk a levelez˝oprogramnak, hogy tegye be egy mappába. Vagy gondoljunk arra, milyen gyakran adják ki az ls parancsot egy többfelhasználós rendszeren. Célszer˝u tehát az ismétl˝od˝o olvasások esetében az els˝o olvasást a lemezr˝ol a memóriába végezni, a többit pedig csak a memóriából olvasni újra, és ott tartani, amíg szükséges. Ez (az els˝o olvasási m˝uveletet leszámítva) nagyon felgyorsítja az olvasást. Ezt az eljárást lemezpufferelésnek (disk buffering), az e célra használt memóriaterületet cache puffernek (buffer cache) nevezzük. Mivel a memória - sajnálatos módon - véges, s˝ot, olyan er˝oforrás, amib˝ol mindig kevés van, a cache puffer általában nem tud elég nagy lenni ahhoz, hogy minden adat beleférjen, amire valaha szükség lehet. Amikor a cache megtelik, a legrégebben nem használt adat kikerül innét, így a helye felszabadul az új adatok számára. A lemezpufferelés az írásra is vonatkozik. Egyrészt ugyanis a kiírt adatokra gyakran hamar szükség van újra (pl. egy kiírt forráskódot gyorsan újraolvas a fordítóprogram), így a kiírt adatok cache-be írása jó ötlet. Másrészt további gyorsítást jelenthet, ha a kiírt adat csak a pufferbe kerül, és nem íródik egyb˝ol a lemezre. A lemezre írás kés˝obb is megtörténhet a háttérben, így nem lassul le a többi program. A legtöbb operációs rendszernek van cache puffere (esetleg más néven), de nem mindegyik a fenti elvek alapján m˝uködik. Vannak ún. write-through típusúak: az adatok ekkor azonnal kiíródnak a lemezre (és persze a cache-ben is megmaradnak). A cache másik típusa a write-back: ez esetben a lemezre írás késleltetve történik meg. A write-back hatékonyabb, mint a write-through, de kicsit érzékenyebb a hibákra: ha a gép elromlik, ha rosszkor kapcsoljuk ki, vagy ha a hajlékonylemezt kivesszük, még miel˝ott az adatok a cache-b˝ol kiíródtak volna rá, akkor a csak a cache-be írt lemeztartalom-változások elvesznek. Ez akár azt is jelentheti, hogy a lemezen lev˝o fájlrendszer (ha van rajta) nem teljesen használható, mert a kiíratlan adatok közt a fájlrendszerre vonatkozó adminisztratív információk is lehetnek. A fentiek miatt sosem szabad kikapcsolni az áramot a megfelel˝o rendszerlezárási (shutdown) eljárás nélkül (lásd a 8 fejezet et), vagy umount nélkül kivenni a felcsatolt hajlékonylemezt, illetve illik megvárni, ha bármilyen program használja a lemezt, hogy fejezze be futását és a hajlékonylemez-meghajtó lámpája ne világítson. A sync parancs kiírja (flush) a puffert, azaz minden kiíratlan adatra kikényszeríti a tényleges írást, így használható arra, hogy megbizonyosodjunk minden adat biztonságos kiírásáról. A hagyományos UNIX rendszereken létezik egy update program, ami a háttérben fut, és 30 másodpercenként elindít egy sync parancsot, ezért ezt általában nem kell kézzel elindítani. A Linuxban van még egy bdflush nev˝u démon is, mely egy tökéletlen szinkronizálást indít, de gyakrabban, hogy a váratlanul fellép˝o fagyás ellen védekezzen, mely a sync által néha okozott er˝os lemezhasználat miatt léphet fel. A Linux alatt a bdflush-t az update indítja. Általában nem is kell vele tör˝odni, de ha a bdflush mégis meghalna valamiért, a rendszermag figyelmeztetni fog, és ekkor kézzel is elindíthatjuk a /sbin/update paranccsal. A cache nem fájlokat, hanem blokkokat pufferel, melyek a lemezm˝uveletek legkisebb egységei (a Linux alatt általában 1 kB). Ily módon a könyvtárak, a szuperblokkok, a fájlrendszer nyilvántartási adatok és a fájlrendszert nem tartalmazó lemezek is pufferelve vannak.

59

Fejezet 7. Memóriakezelés A cache pufferelés hatékonyságát els˝osorban a cache mérete határozza meg. A kicsi cache gyakorlatilag használhatatlan: oly kevés adatot tárolhat, hogy minden adatot lemezre kell írni, miel˝ott újra fel lehetne használni. A kritikus méret függ az adatforgalom nagyságától és az újrafelhasználás gyakoriságától. Az egyetlen mód a jó méret meghatározására a kísérletezés. Ha a cache rögzített méret˝u, nem túl jó, ha nagyon nagy, mert sok memóriát foglalhat le, és ez swappelést eredményezhet, ami lassítja a rendszert. A fizikai memória legjobb kihasználása érdekében a Linux automatikusan minden szabad RAM-ot cache puffernek használ, illetve csökkenti ennek méretét, ha a futó programok memóriaigénye n˝o. A Linux alatt nem kell semmit sem tenni a cache pufferrel kapcsolatban, mert minden teljesen automatikus. Csak arra kell figyelni, hogy a megfelel˝o rendszerleállási eljárások lefussanak, illetve lecsatoljuk a felcsatolt hajlékonylemezeket, miel˝ott kivennénk a meghajtóból.

Megjegyzések 1. Ez feleslegesen, de szörnyen bosszant egy csomó számítógéptudóst. 2. Egy gigabyte itt, egy gigabyte ott, hamarosan a valódi memóriáról kezdünk beszélni. 3. Kivéve persze a RAM diszkek esetét.

60

Fejezet 8. Rendszerindítás és leállítás Start me up Ah... you’ve got to... you’ve got to Never, never never stop Start it up Ah... start it up, never, never, never You make a grown man cry, you make a grown man cry (Rolling Stones)

Ez a fejezet arról szól, mi történik egy Linux rendszer elindulásakor (boot) és leállításakor (shutdown), és hogyan kell ezeket helyesen végezni. Ha nem végezzük helyesen ezeket az eljárásokat el, a fájljaink sérülhetnek vagy akár el is veszhetnek.

8.1. A rendszer indításának és leállításának áttekintése Azt a folyamatot, amely a számítógép bekapcsolása után az operációs rendszer betöltését végzi, rendszerindításnak (booting) nevezzük. 1 A “boot” (csizma) név egy olyan képb˝ol származik, mely szerint a számítógép ilyenkor felhúzza a csizmáját (bootstrap). (A “bootstrap” eredetileg a csizma oldalára vagy elejére felvarrt b˝or- vagy más anyagból készült akasztót jelentette, amelynek segítségével könnyebben fel lehetett húzni a lábra a csizmát - a ford.) A valóságban a számítógépes rendszer elindulása természetesen ennél a képnél sokkal realisztikusabb folyamat. A bootstrap közben a számítógép el˝oször egy kicsiny kóddarabot, az ún. bootstrap loadert tölt be, ami aztán folytatja a betöltést és elindítja az operációs rendszert. A bootstrap loader általában a merev- vagy hajlékonylemez meghatározott helyén található. Annak, hogy ez a folyamat két lépésb˝ol áll, az az oka, hogy egy operációs rendszer nagy és bonyolult, de a legels˝o kód, amit a számítógép betölt, nagyon kicsi kell legyen (pár száz byte), hogy ne legyen nagyon bonyolult a firmware (azaz a ROM-ban tárolható utasításkészlet). Különböz˝o számítógépek különböz˝o módon hajtják végre a bootstrap-et. A PC-ken a számítógép (pontosabban a BIOS) beolvassa a (hajlékony- vagy merev-) lemez els˝o szektorát, amit rendszerindító szektornak (boot sector) nevezünk, és ennek tartalma a rendszerbetölt˝o (bootstrap loader). Ez fogja az operációs rendszert ténylegesen betölteni a lemez valamely más részér˝ol, esetleg egészen máshonnét. A Linux betölt˝odése után inicializálja a hardvert és az eszközvezérl˝oket, majd lefuttatja az init parancsot. Az init egyéb processzeket indít, melyek pl. engedélyezik a felhasználói bejelentkezéseket. E folyamat részletesebb tárgyalása kés˝obb következik. Egy Linux rendszer leállításához el˝oször minden processznek megszakító jelet kell küldeni (hogy lezárhassák a fájlokat, és rendbe tegyenek mindent, miel˝ott leállnak), azután a fájlrendszereket és a swap területeket csatolja le a rendszer, végül egy üzenet kerül a konzolra, azzal a tartalommal, hogy most már lekapcsolható a számítógép. Mint már korábban említettük: ha a megfelel˝o rendszerleállítás elmarad, a lemezek megsérülhetnek, fájlok veszhetnek el stb., mivel így nem lesz id˝o a fájlrendszer cache pufferéb˝ol lemezre írni az adatokat.

61

Fejezet 8. Rendszerindítás és leállítás

˝ 8.2. A rendszerindítási folyamat közelebbrol A Linux hajlékony- vagy merevlemezr˝ol is betölthet˝o. Az “Installation and Getting Started” könyv telepítésr˝ol szóló része elmondja, hogyan telepítsük a Linuxot úgy, hogy az általunk kívánt módon induljon. Amikor egy PC elindul, a BIOS különféle teszteket végez annak ellen˝orzésére, hogy minden rendben van-e. 2 Ezután indul a tényleges rendszerindítás. El˝oször egy lemezmeghajtó kerül kiválasztásra (általában az els˝o hajlékonylemez-meghajtó, ha van benne lemez; ha nincs, akkor az els˝o merevlemez; a sorrendet be lehet állítani a BIOS-ban), majd a megtalált lemez legels˝o szektorát olvassa be a rendszer. Ezt nevezik rendszerindító szektornak (boot sector). Merevlemezeknél mindezt pontosítani kell: a master boot record (MBR) kerül beolvasásra, ugyanis egy merevlemez több partíciót is tartalmazhat, mindegyiken saját rendszerindító szektorral. A rendszerindító szektor egy kis (egy szektorban elfér˝o) programot tartalmaz, melynek a feladata az aktuális operációs rendszer beolvasása és elindítása. Amikor hajlékonylemezr˝ol indítjuk a Linuxot, a rendszerindító szektor egy olyan kódot tartalmaz, mely csak az els˝o néhány száz blokkot olvassa be (az aktuális rendszermag méretét˝ol függ˝oen) a memória egy el˝ore meghatározott helyére. Egy linuxos rendszerindító hajlékonylemezen nincs fájlrendszer, a rendszermag pusztán egymást követ˝o szektorokban található, mivel ez egyszer˝usíti az indítás folyamatát. Igaz, lehet fájlrendszerrel rendelkez˝o hajlékonylemezr˝ol is indulni, pl. a LILO (LInux LOader) segítségével. Amikor merevlemezr˝ol indítjuk a rendszert, a master boot recordban (MBR) lév˝o kód megvizsgálja a partíciós táblát (az MBR-ben lév˝ot is), hogy azonosítsa az aktív partíciót (azaz amelyik indíthatóvá lett téve), beolvassa annak rendszerindító szektorát, és elindítja az abban talált kódot. A partíció rendszerindító szektorában található kód ugyanazt csinálja, mint egy hajlékonylemezé: beolvassa a rendszermagot és elindítja. A részletek ugyan egy kicsit változatosak, mivel általában nem célszer˝u egy külön partíciót fenntartani a rendszermag-fájlnak (kernel image), ezért a rendszerindító szektorban található kódnak nem elegend˝o pusztán sorban beolvasnia a lemez blokkjait, hanem meg kell találnia azokat a blokkokat, ahova a fájlrendszer elhelyezte a rendszermag-fájlt. Több megoldás is létezik erre a problémára, de a legelterjedtebb a LILO használata. (A részletek nem lényegesek az itteni tárgyalás szempontjából. A LILO dokumentációja aprólékos felvilágosítással szolgál.) A LILO-val való rendszerindítás során általában az alapértelmezett rendszermag tölt˝odik be. A LILO beállítható úgy is, hogy több operációs rendszer, vagy egy operációs rendszer több rendszermagja közt választást biztosítson, és azt töltse be a rendszerindításkor. Beállítható úgy is, hogy ha induláskor lenyomjuk az alt, shift vagy ctrl billenty˝uk egyikét, akkor ne az alapértelmezett módon induljon, hanem a felhasználó választása szerint. A LILO akár úgy is beállítható, hogy mindig kérdezzen, de egy megadott várakozási id˝o után automatikusan töltse be az alapértelmezett rendszert. A LILO lehet˝ové teszi egy rendszermag parancssori argumentum megadását a rendszermag vagy operációs rendszer neve után. A hajlékony- illetve merevlemezr˝ol való rendszerindításnak egyaránt vannak el˝onyei és hátrányai, de a merevlemezr˝ol való indítás többnyire kellemesebb, mert ekkor egyrészt nem kell a hajlékonylemezekkel babrálni, és gyorsabb is. Igaz az is, hogy több hibalehet˝oséget rejt a merevlemezr˝ol való indítás, ezért sokan eleinte hajlékonylemezr˝ol indítják a rendszert, majd amikor a rendszer már kipróbáltan jól m˝uködik, akkor telepítik a LILO-t a merevlemezr˝ol való indításhoz. Miután a Linux rendszermag valamilyen módon bekerült a memóriába és valóban elindult, körülbelül a következ˝ok történnek: •

A Linux rendszermag a lemezen tömörítve van, ezért el˝oször kicsomagolja önmagát. A rendszermag-fájl eleje egy kis programot tartalmaz e célból.

62

Fejezet 8. Rendszerindítás és leállítás •

Ha olyan SVGA kártyád van, melyet a Linux felismer, és annak vannak speciális szöveges módjai (mint pl. 100 oszlop, 40 sor), a Linux megkérdezi, melyik módban akarod használni. A rendszermag-fordítás közben, vagy az után az rdev parancs segítségével a video mód el˝ore beállítható a rendszermagnak, ilyenkor nem kérdez rá az üzemmódra. Ugyanezt a LILO segítségével is megoldhatjuk.



Ezután a rendszermag ellen˝orzi, milyen hardver elemek (merevlemezek, hajlékonylemez meghajtók, hálózati kártyák, stb.) léteznek a gépben, és megpróbálja ezek eszközmeghajtóit megfelel˝oen beállítani. A hardverelemek megtalálásáról üzenetet is ad. Pl. amikor az én gépem indul, ilyesmi látszik a képerny˝on: LILO boot: Loading linux. Console: colour EGA+ 80x25, 8 virtual consoles Serial driver version 3.94 with no serial options enabled tty00 at 0x03f8 (irq = 4) is a 16450 tty01 at 0x02f8 (irq = 3) is a 16450 lp_init: lp1 exists (0), using polling driver Memory: 7332k/8192k available (300k kernel code, 384k reserved, 176k data) Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M Loopback device init Warning WD8013 board not found at i/o = 280. Math coprocessor using irq13 error reporting. Partition check: hda: hda1 hda2 hda3 VFS: Mounted root (ext filesystem). Linux version 0.99.pl9-1 (root@haven) 05/01/93 14:12:20

A pontos szöveg természetesen eltér˝o lesz más rendszerek esetén, annak függvényében, hogy milyen hardverelemek vannak a gépben, a rendszermag melyik változatát használjuk, és az hogy van beállítva. •

Ezután a rendszermag megpróbálja felcsatolni (mount) a gyökér fájlrendszert. Ennek helye a rendszermag fordításakor is megadható, vagy kés˝obb az rdev parancs segítségével, esetleg a LILO-val. A fájlrendszer típusát automatikusan felismeri a rendszer. Ha a gyökér fájlrendszer felcsatolása nem sikerül, mert pl. elfelejtetted a megfelel˝o fájlrendszert belefordítani a rendszermagba, akkor "pánikba esik" (kernel panic) és megállítja a rendszert (mást úgysem nagyon tudna tenni). A gyökér fájlrendszer általában csak olvasható (read-only) módban csatolódik el˝oször (ez is beállítható), ami lehet˝ové teszi az ellen˝orzését a felcsatolás közben. (A lemezekr˝ol szóló részben írtak szerint nem szabad írható fájlrendszert ellen˝orizni.)



Ezután a rendszermag elindítja az init programot (amelynek teljes elérési útja: /sbin/init) a háttérben. (Értelemszer˝uen az init processz azonosítója mindenképpen 1 lesz.) Az init különféle indító tennivalókat végez el, melyek pontos listája konfigurációfügg˝o. (Lásd a 9 fejezetet.) Az biztos, hogy legalább néhány létfontosságú démon elindul ekkor a háttérben.



Az init ezután többfelhasználós üzemmódba kapcsol, és elindítja a getty programot a virtuális konzolokra és a soros vonalakra, így lehet˝ové teszi a bejelentkezést a felhasználók számára. Az init elindíthat még más programokat is a beállításától függ˝oen.



Ezzel a rendszerindítás kész van, és a rendszer normálisan fut tovább.

63

Fejezet 8. Rendszerindítás és leállítás

˝ 8.3. A rendszerleállítás közelebbrol Fontos, hogy kövessük a rendszerleállítás helyes módját, ha leállítunk egy Linux rendszert. Ha nem így teszünk, a fájlrendszerek megsérülhetnek, mivel a Linux csak id˝onként hozza szinkronba a lemez cache és a lemez tényleges tartalmát. Ez ugyan javítja a rendszer teljesítményét m˝uködés közben, de azt is jelenti, hogy egy rossz rendszerleállás (pl. hirtelen lekapcsoljuk a f˝okapcsolót) adatvesztést és rendszersérülést okozhat. Egy másik ok, ami az egyszer˝u kikapcsolás ellen szól, hogy egy többfeladatos (multitaskig) rendszerben sok processz futhat a háttérben, és ezekre az áram lekapcsolása szörny˝u hatással lehet. A megfelel˝o rendszerleállítási (shutdown) eljárás esetén ezek el tudják menteni adataikat, nem csak meghalnak egy pillanat alatt. A Linux rendszerekben a shutdown parancs szolgál a rendszer leállítására. Általában két módon szokás használni. Ha olyan rendszert futtatsz, ahol te vagy az egyetlen felhasználó, a shutdown használatának szokásos módja az, hogy kilépsz minden futó programból, kijelentkezel minden virtuális konzolról, valahol bejelentkezel rootként (vagy bejelentkezve maradsz, ha korábban már megtetted, de ekkor válts a root home könyvtárába, vagy a gyökérkönyvtárba, hogy elkerüld a lecsatolással járó problémákat), majd kiadod a shutdown -h now parancsot (a now helyettesíthet˝o a + jellel és a percek számával, ha késleltetni akarod a leállást, de ha egyedül vagy bejelentkezve, erre nincs szükség). A másik mód akkor használatos, ha a rendszeren több felhasználó is van. Ekkor a shutdown -h +time message használata célszer˝u, ahol time az az id˝o percekben mérve, amennyi múlva a rendszer leáll, a message pedig egy rövid üzenet, amely a leállás okát magyarázza. Nézzük a következ˝o példát: # shutdown -h +10 ’Új merevlemezt telepítünk. A rendszer három óra múlva indul újra.’ #

Ez mindenkit figyelmeztet, hogy 10 perc múlva leáll a rendszer, és még az üzenetet is megkapják a felhasználók minden terminálon, melyen valaki bejelentkezett, és minden xterm ablakban is:

Broadcast message from root (ttyp0) Wed Aug

2 01:03:25 1995...

Új merevlemezt telepítünk. A rendszer három óra múlva indul újra. The system is going DOWN for system halt in 10 minutes !!

A figyelmeztetés automatikusan megismétl˝odik a leállás el˝ott néhányszor, egyre gyakrabban, ahogy annak ideje közeledik. Amikor a rendszerleállás ténylegesen elindul, a gyökér kivételével minden fájlrendszer lecsatolódik, a felhasználók processzeit (ha még létezik olyan) megszakítja a rendszer, a démonok leállnak, minden fájlrendszer lecsatolódik, és általában minden leáll. Amikor ez kész van, az init kiír egy üzenetet, hogy most már lekapcsolható a számítógép. Ekkor, és csakis ekkor szabad a kapcsoló után nyúlni. Néha még jól karbantartott rendszerekkel is megesik, hogy nem lehet megfelel˝oen leállítani a rendszert. Például ha a rendszermag pánikol, vagy bármi más módon rendellenesen viselkedik, lehetetlen további parancsokat kiadni, így a rendszerleállási folyamat sem fog lefutni. Ekkor csak reménykedni lehet, hogy semmi sem sérül komolyan, majd lekapcsolni az áramot. Ha a probléma nem ennyire súlyos (pl. valaki egy fejszével szétverte a billenty˝uzetet), és a rendszermag, valamint az update rendesen fut, érdemes várni pár percet, hogy a cache puffer és a lemez tartalma szinkronba kerülhessen, majd azután lekapcsolni az áramot. Vannak, akik a rendszerleállást a sync paranccsal szeretik elvégezni 3 . Az elgondolás az, hogy háromszor kiadva a sync-et, majd megvárva, hogy minden lemezm˝uvelet befejez˝odjön, biztonsággal lekapcsolható a számítógép. Ha

64

Fejezet 8. Rendszerindítás és leállítás nincsenek futó programok, ez majdnem egyenérték˝u a shutdown-nal. Azonban ezzel az eljárással a fájlrendszerek nem lesznek lecsatolva, ami problémát okozhat az ext2 rendszer “clean filesystem” bitjénél. Ezen kívül az esetleges elfelejtett felhasználók és processzek sem tudnak szépen kilépni. Ezért a “tripla sync” módszer nem ajánlott. (Ha érdekel: annak oka, hogy háromszor kell kiadni a sync-et az, hogy a korai UNIX rendszerek esetében a parancs háromszori begépelése általában elegend˝o id˝ot adott a lemeznek a m˝uveletek befejezésére.)

8.4. Újraindítás (reboot) A rendszer újraindítása egyenérték˝u egy rendszerleállás, lekapcsolás, majd rendszerindítás egymás utáni kiadásával. Ennél egyszer˝ubb módszer megkérni a shutdown-t, hogy indítsa újra a rendszert a leállás után. Ezt a -r opcióval érhetjük el, mint pl.: shutdown -r now. A legtöbb Linux rendszer a shutdown -r now parancsot futtatja, amikor a billenty˝uzeten lenyomjuk a ctrl-alt-del kombinációt, azaz ekkor a rendszer újraindul. Azonban beállíthatjuk, hogy mi történjék a ctrl-alt-del megnyomásakor, pl. többfelhasználós rendszeren célszer˝u egy kis várakozást beiktatni. Azokon a rendszereken pedig, melyek fizikailag bárki számára elérhet˝ok, célszer˝u azt beállítani, hogy a ctrl-alt-del megnyomására ne történjen semmi.

8.5. Egyfelhasználós (single user) mód A shutdown parancs arra is használható, hogy a rendszert egyfelhasználós módba vigye, amely módban senki sem jelentkezhet be, csak a root a konzolról. Ez olyan rendszeradminisztrációs feladatok ellátásakor lehet hasznos, melyet normál üzemben nem lehet elvégezni.

8.6. Rendszerindító-hajlékonylemez vészhelyzet esetére El˝ofordulhat, hogy nem lehet elindítani a számítógépet a merevlemezr˝ol. Például ha rosszul állítod be a LILO-t, a rendszer indíthatatlanná válhat. Ezekre az esetekre kell egy olyan rendszerindítási mód, amely mindig m˝uködik (amíg a hardver jó). A szokásos PC-k esetén erre a hajlékonylemezr˝ol való rendszerindítás felel meg leginkább. A legtöbb Linux terjesztés lehet˝ové teszi a vészindító lemez (emergency boot floppy) létrehozását a telepítés során. Ez egy jó ötlet, azonban ezek a lemezek néha csak a rendszermagot tartalmazzák, és feltételezik, hogy azokkal a programokkal, melyek a terjesztés telepít˝olemezein rajta vannak, el tudod hárítani a hibát. Néha még ezek a programok sem elegend˝oek, pl. ha néhány fájlt biztonsági mentésb˝ol kellene visszaállítani, de a mentést olyan szoftverrel hajtottad végre, ami nincs rajta a telepít˝olemezeken. Ezért szükség lehet egy testreszabott root lemezt el˝oállítására is. Graham Chapman Bootdisk HOWTO dokumentációja err˝ol a témáról részletes információkat tartalmaz. Természetesen gondoskodni kell arról, hogy a vészindító lemez mindig az aktuális rendszerhez illeszkedjék. A használatban lev˝o hajlékonylemez-meghajtó nem használható a root lemez felcsatolásán kívül semmi másra. Ez kényelmetlen lehet, ha csak egy hajlékonylemez-meghajtód van. Ez megoldható, ha elegend˝o RAM van: az indítólemezt állítsd be úgy, hogy a root lemezt memórialemezre (RAM-disk) töltse. Ehhez a hajlékonylemezen használt rendszermagot kell speciálisan beállítani. Amint a root floppy betölt˝odött a memórialemezbe, a hajlékonylemez-meghajtó használhatóvá válik más lemezek felcsatolására.

65

Fejezet 8. Rendszerindítás és leállítás

Megjegyzések 1. A régi számítógépeken nem volt elég csak bekapcsolni a berendezést, hanem kézzel kellett betölteni az operációs rendszert is. Ezek az új divatú csodagépek mindezt maguk megteszik. 2. Ezt szokás power on self testnek vagy röviden POST-nak nevezni. 3. A sync a cache puffert kiírja a lemezre

66

Fejezet 9. init “Uuno on numero yksi” (Egy finn filmsorozat szlogenje)

Ez a fejezet az init processzt írja le, mely az els˝o felhasználói szint˝u program, amelyet a rendszermag indít. Az init-nek nagyon sok fontos feladata van, mint pl. elindítani a getty-t, hogy a felhasználók bejelentkezhessenek, megvalósítani a futási szinteket és gondját viselni az elárvult processzeknek. Ez a fejezet arról szól, hogyan állítható be az init, és hogyan használhatók a különféle futási szintek.

9.1. Az init az elso˝ Az init egyike azon programoknak, melyek alapvet˝oek egy Linux rendszer m˝uködése szempontjából, ám többnyire nem veszünk róla tudomást. Egy jó Linux terjesztés egy olyan beállítású init-tet tartalmaz, mely a legtöbb rendszeren megfelel˝oen m˝uködik, és ekkor nem szükséges vele kapcsolatban tenni semmit. Általában csak akkor kell az init-tel foglalkozni, ha soros terminált vagy betárcsázó modemet kapcsolunk a géphez, vagy ha meg akarjuk változtatni az alapértelmezett futási szintet. Amikor a rendszermag elindítja önmagát (azaz betölt˝odött a memóriába, elindult, inicializálta az eszközvezérl˝oket és az adatstruktúrákat), a rendszerindítás folyamatának rá es˝o részét egy felhasználói szint˝u program, az init indításával fejezi be. Ezért az init mindig a legels˝o processz, azaz processzazonosítója mindig 1. A rendszermag az init-et néhány olyan helyen keresi, ahol a rendszer korábbi változataiban lenni szokott, de egy Linux rendszeren az igazi helye a /sbin/init. Ha a rendszermag sehol sem találja az init-et, megpróbálja futtatni a /bin/sh-t, és ha azt sem találja, a rendszer indítása sikertelenül fejez˝odik be. Amikor az init elindul, el˝oször a rendszerindítási folyamatot fejezi be néhány adminisztratív feladat elvégzésével. Ilyen pl. a fájlrendszerek ellen˝orzése, a /tmp kitakarítása, különféle szolgáltatások elindítása és a getty indítása minden terminálra illetve virtuális konzolra, ahonnét a felhasználók bejelentkezhetnek. (Lásd a 10 fejezet et.) Amikor a rendszer megfelel˝oen felállt, az init újraindítja a getty-t azokra a terminálokra, ahonnét a felhasználók kijelentkeztek, hogy a következ˝o felhasználó bejelentkezhessen. Az init továbbá örökbe fogadja (adopt) az árva (orphan) processzeket: amikor egy processz gyermekprocesszt (child process) indít, és gyermeke el˝ott meghal, a gyermek azonnal az init gyermekévé válik. Ez többféle technikai okból fontos, és jó tudni róla, mivel könnyebben érthet˝ové teszi a processzek listáját és fadiagramjait. 1 Az init-nek van néhány változata. A legtöbb Linux terjesztés a sysvinit-et használja (Miquel van Smoorenburg alkotása), amely a System V init-jén alapul. A UNIX BSD változatainak más az init programja. Az alapvet˝o különbség a futási szintekben van: a System V-nek vannak futási szintjei, a hagyományos BSD-nek nincsenek. Ez a különbség nem lényeges. A továbbiakban mi a sysvinit-tel foglalkozunk.

9.2. Az init beállítása a getty elindítására: az /etc/inittab fájl Induláskor az init az /etc/inittab konfigurációs fájlt olvassa be. A rendszer futása közben ezt újraolvassa, ha HUP jelzést kap, 2 így a rendszer újraindítása nélkül tudjuk érvényesíteni az init beállításának változását. Az /etc/inittab fájl szerkezete kicsit bonyolult. Egy egyszer˝u esettel, a getty sorok beállításával foglalkozunk el˝oször. Az /etc/inittab sorai négy, kett˝osponttal határolt mez˝ore oszlanak:

67

Fejezet 9. init id:runlevels:action:process

A mez˝oket lejjebb írjuk le. Ezen kívül a /etc/inittab tartalmazhat üres sorokat és # jellel kezd˝od˝oket, melyeket figyelmen kívül hagy. id Ez azonosítja a fájlon belüli sort. A getty soroknál ez adja meg a terminált, amelyen fut, pontosabban a /dev/tty utáni karaktereket az eszközfájl nevében. Más soroknál lényegtelen a tartalma (de nem lehet túl hosszú), és egyedinek kell lennie.

runlevels A futási szintek, melyekre a sor vonatkozik. A szinteket egyetlen számként kell megadni, elválasztójel nélkül. (A futási szinteket a következ˝o alfejezet tárgyalja.)

action Mit kell tenni a megadott sorral. Pl. ciklikusan végrehajtani (respawn), vagy csak egyszer futtatni (once).

process A futtatandó parancs.

Egy getty-t indítani az els˝o virtuális terminálon (azaz a /dev/tty1-en) minden normális többfelhasználós futási szinten (2-5) a következ˝o módon lehet: 1:2345:respawn:/sbin/getty 9600 tty1

Az els˝o mez˝o azt jelzi, hogy ez a sor a /dev/tty1-re vonatkozik. A második mez˝o szerint ez a 2, 3, 4 és 5 futási szinteken érvényes. A harmadik mez˝o azt jelenti, hogy a parancsot újra futtatni kell, ha kilép (így újra be lehet jelentkezni az adott terminálon kilépés után). Az utolsó mez˝o az a parancs, amely futtatja a getty programot az els˝o virtuális terminálon. 3 Ha terminálokat vagy betárcsázó modemvonalakat akarunk hozzáadni a rendszerhez, mindegyikhez egy-egy sort kell beleírni a /etc/inittab fájlba. A részleteket az init, inittab és getty kézikönyv oldalakon találhatjuk meg. Ha egy parancs induláskor máris hibával áll le, és az init úgy van beállítva, hogy újraindítsa ezt, az sok er˝oforrást köthet le: a program elindul, leáll, újraindul, újra leáll stb, a végtelenségig. Ez elleni védekezésként az init figyeli, hogy milyen gyakran indít újra egy parancsot, és ha ez átlép egy bizonyos gyakoriságot, öt percig késlelteti ennek újraindítását.

9.3. Futási szintek (run levels) A futási szint (run level) az init és ezen keresztül az egész rendszer állapotjelz˝oje, ami meghatározza, mely szolgáltatások m˝uködnek. A futási szinteket számokkal azonosítjuk (9-1 Táblázat). Nincs egyetemes szabály a

68

Fejezet 9. init felhasználói futási szintek (2-5) m˝uködésére. Néhány rendszeradminisztrátor a futási szinteket annak beállítására használja, hogy mely alrendszerek m˝uködjenek, pl. hogy fut-e az X, m˝uködik-e a hálózat stb. Mások mindig minden alrendszert elindítanak, és egyedileg állítják le vagy kapcsolják vissza o˝ ket, a futási szint változtatása nélkül, mivel a futási szintek túl durvák rendszerük vezérlésére. Magadnak kell dönteni, melyiket választod, de egyszer˝ubb lehet azt az utat választani, amit a Linux terjesztésed felkínál. Táblázat 9-1. Futási szintek 0

Rendszerleállítás (halt).

1

Egyfelhasználós mód (single-user mode) (speciális rendszeradminisztrációhoz).

2-5

Normál m˝uködés (felhasználó által definiált).

6

Újraindítás (reboot).

A futási szinteket az /etc/inittab fájlban állíthatjuk be, például a következ˝o módon: l2:2:wait:/etc/init.d/rc 2

Az els˝o mez˝o egy tetsz˝oleges címke; a második azt jelenti, hogy ez a sor csak a 2. futási szintre vonatkozik. A harmadik mez˝o azt jelenti, hogy az init-nek csak egyszer, a futási szintbe való belépéskor kell futtatni a negyedik mez˝oben megadott parancsot, és meg kell várni, hogy az befejez˝odjön. A megadott /etc/init.d/rc parancs bármilyen más parancsokat futtathat, melyek ahhoz szükségesek, hogy belépjünk a 2. futási szintre. A negyedik mez˝o parancsa végez minden komoly munkát a futási szint beállításával kapcsolatban. Elindítja azokat a szolgáltatásokat, melyek még nem futnak, és leállítja azokat, melyeknek nem kell futniuk az új futási szinten. Az adott Linux terjesztést?l függ, hogy ezek pontosan milyen parancsokat takarnak, és hogyan állították be a futási szinteket. Amikor az init elindul, keres az /etc/inittab fájlban egy olyan sort, mely az alapértelmezett futási szintet állítja be: id:2:initdefault:

Az init beállítható úgy is, hogy induláskor ne az alapértelmezett futási szinten induljon el, ha a rendszermagnak single vagy emergency paramétert adunk. A rendszermagnak parancssori argumentumok pl. a LILO-n keresztül adhatók át. Ezáltal egyfelhasználós üzemmódba kerülünk (1-es futási szint). A rendszer futása közben a telinit paranccsal változtathatjuk meg a futási szintet. A futási szint megváltoztatásakor az init a megfelel˝o parancsokat lefuttatja az /etc/inittab alapján.

9.4. Speciális beállítások az /etc/inittab fájlban Az /etc/inittab fájlnak van néhány különleges beállítási lehet˝osége, melyek segítségével az init különleges körülményekre is reagálni tud. Ezeket a harmadik mez˝oben speciális kulcsszavakkal jelöljük. Íme néhány példa: powerwait

Lehet˝ové teszi, hogy az init áramkimaradás esetén is leállítsa a rendszert. Ez feltételezi egy UPS meglétét, valamint olyan szoftvert, amely figyeli az UPS-t és tájékoztatja az initet az áramszünetr˝ol.

69

Fejezet 9. init

ctrlaltdel

Lehet˝ové teszi, hogy az init újraindítsa a rendszert, amennyiben a felhasználó megnyomja a ctrl-alt-del billenty˝ukombinációt a konzolon. Megjegyezzük, hogy a rendszeradminisztrátor úgy is beállíthatja a ctrl-alt-del-re való reagálást, hogy más történjen (vagy éppen ne történjék semmi, pl. egy bárki számára elérhet˝o konzol esetén); esetleg elindulhat ennek hatására a nethack.

sysinit

A rendszerindításkor futtatandó parancs. Ez általában a /tmp kitakarításával és hasonlókkal foglalkozik.

Ez a felsorolás nem teljes. A inittab kézikönyv oldala leír minden lehet˝oséget, és részleteket a fentiek használatáról.

9.5. Rendszerindítás egyfelhasználós üzemmódban Nagyon fontos futási szint az 1-es, melynek neve egyfelhasználós üzemmód (single user mode), amely esetén csak a rendszeradminisztrátor használja a gépet, és csak a lehet˝o legkevesebb szolgáltatás fut. Az egyfelhasználós üzemmód szükséges néhány adminisztratív feladathoz 4 , mint pl. az fsck futtatása az /usr partíción. Ez ugyanis a partíció lecsatolását igényli, ami csak a legtöbb rendszerszolgáltatás kikapcsolásával lehetséges. Egy futó rendszer a telinit paranccsal állítható egyfelhasználós üzemmódba, azaz 1-es futási szintre. Rendszerindításkor pedig a rendszermag parancssorába írhatjuk be a single vagy emergency szavakat, hogy ugyanezt elérjük. A rendszermag ezt ugyanis továbbadja az init-nek, ami ebb˝ol tudja, hogy nem az alapértelmezett futási szinten kell indulnia. (A rendszermag parancssorának bevitele a rendszerindítás módjától függ, pl. a LILO vagy a GRUB segítségével oldható meg egyszer˝uen.) Egyfelhasználós módban való rendszerindítás néha szükséges lehet, pl. az fsck kézzel való futtatásához, miel˝ott bármi felcsatolódna. Ugyanis ha pl. az /usr partíció komolyan megsérül, akkor minden további hozzáférés az ezen lév? fájlokhoz tovább szaporítja a hibák számát, így az ellen˝orzést az els˝o lehetséges alkalommal el kell végezni. Az init által lefuttatott rendszerindító szkriptek automatikusan egyfelhasználós üzemmódba lépnek be, ha az automatikus fsck súlyos hibát észlel. Ez védi a rendszert egy olyan fájlrendszer használatától, mely nem javítható automatikusan. Ez az eset viszonylag ritka, és általában fizikailag sérült merevlemeznél, vagy kísérleti rendszermagnál fordul el˝o, de jó, ha felkészülünk rá. Biztonsági okokból egy jól felépített rendszer megkérdezi a root jelszót a shell indítása el˝ott egyfelhasználós üzemmódban. Különben egyszer˝u lenne egy megfelel˝o sor beírásával a LILO-t arra utasítani, hogy root jogokkal indítsa el bárki a rendszert. Természetesen ez nem m˝uködik, ha a /etc/passwd fájlrendszer-hiba miatt megsérült; ekkor csak egy rendszerindító hajlékonylemez segíthet.

Megjegyzések 1. Az init maga nem halhat meg, még SIGKILL hatására sem.

70

Fejezet 9. init 2. Pl. úgy, hogy a root felhasználó egy kill -HUP 1 parancsot ad ki. 3. A getty különféle verziói eltér˝o módon futnak, ennek érdemes utánanézni a megfelel˝o kézikönyv oldalon. 4. Nem alkalmas a nethack programmal való játszadozásra.

71

Fejezet 10. Be- és kijelentkezés “Nem érdekel, ha egy olyan klubhoz tartozom, amelybe hozzám hasonló emberek léphetnek be.” (Groucho Marx)

Ez a fejezet azt írja le, mi történik, ha egy felhasználó be- vagy kijelentkezik. A háttérprocesszek, naplófájlok (log files), beállítási fájlok különféle kölcsönhatásai kerülnek itt ismertetésre némi részletességgel.

10.1. Bejelentkezés terminálokon keresztül A 10-1 Ábra bemutatja, hogyan történnek a terminálon keresztüli bejelentkezések. El˝oször az init megbizonyosodik arról, hogy van egy getty program a terminál (vagy konzol) csatlakoztatására. (Ha nincs, akkor indít egyet.) A getty figyeli a terminált és arra vár, hogy egy felhasználó jelezze belépési szándékát (ez általában valaminek a begépelését jelenti). Amikor észrevesz egy ilyen kísérletet, a getty egy üdvözl˝o üzenetet küld, ami az /etc/issue fájlban található, majd bekéri a felhasználó nevét, végül futtatja a login programot. A login megkapja a felhasználó nevét (username) paraméterként, és bekéri a jelszót. Ha a jelszó megfelel˝o volt, a login elindítja a felhasználónak beállított shell-t; ellenkez˝o esetben kilép és megszakítja a folyamatot. (Általában a felhasználónak van egy-két próbálkozási lehet˝osége el˝otte, számítva a véletlen félregépelésekre.) A kilépés után az init észreveszi, hogy a folyamat megszakadt, és egy új getty-t indít a terminálra.

72

Fejezet 10. Be- és kijelentkezés Ábra 10-1. Bejelentkezés terminálon keresztül: az init, a getty, a login és a shell kölcsönhatása.

Figyeljük meg, hogy az init által fork rendszerhívással indított egyetlen új processz a getty, és a login csak ezt helyettesíti az exec rendszerhívás útján. Egy külön program szükséges a felhasználó észlelésére a soros vonalakon keresztül való bejelentkezésekkor, mivel a terminál aktívvá válásának felismerése bonyolult lehet. A getty alkalmazkodik a kapcsolat sebességéhez és egyéb beállításaihoz, ami különösen a betárcsázó kapcsolatoknál fontos, ahol ezek a paraméterek hívásról hívásra változhatnak. A getty és init programoknak több változata használatos, és mindegyiknek van el˝onye és hátránya is. Jó ötlet, ha el˝oször a rendszeren lév˝oket tanulmányozzuk, majd a más változatokat. (A Linux Software Map segíthet a más változatok keresésében.) Ha nincsenek betárcsázós vonalaid, akkor többnyire nem kell tör˝odni a getty programmal,

73

Fejezet 10. Be- és kijelentkezés de az init továbbra is fontos lehet.

10.2. Bejelentkezés hálózaton keresztül Két, azonos hálózaton lev˝o számítógép általában egyetlen kábellel van fizikailag összekötve. Amikor a hálózaton keresztül kommunikálnak, a gépek azon programjai, melyek részt vesznek a kommunikációban, egy virtuális kapcsolatban (virtual connection) vesznek részt, ami olyan, mint egy képzeletbeli kábelre való csatlakozás. Amíg a kapcsolat bármelyik oldalán lev˝o programok foglalkoznak a virtuális kapcsolattal, addig monopóliumuk van erre a kábelre. Mivel viszont a kábel nem valódi, csak képzeletbeli, a számítógépek egyszerre több virtuális kapcsolatot is fenntarthatnak egyetlen fizikailag létez˝o kábelen keresztül. Emiatt egyszerre több program is képes azonos kábelen kommunikálni, egymást nem zavarva és egymással nem tör˝odve. Továbbá több számítógép is lehet egyetlen kábelen, mert a virtuális kapcsolat két számítógép közt létezik, és a többi számítógép figyelmen kívül hagyhatja a rájuk nem tartozó kommunikációt. A fenti bekezdés a valóságnak egy bonyolult és kissé túlzottan elvonatkoztatott leírása. Arra azonban jó, hogy megértsük, miért különbözik a hálózati bejelentkezés a normálistól. A virtuális kapcsolat akkor keletkezik, amikor két program, két különböz˝o számítógépen kommunikálni akar. Mivel viszont egy hálózatban elvileg minden számítógépr˝ol minden számítógépre megengedett a bejelentkezés, a lehetséges virtuális kapcsolatok száma igen nagy. Emiatt nem célszer˝u minden lehetséges bejelentkezésre külön getty-t futtatni. Egyetlen processz, az inetd (ami a getty megfelel˝oje) kezeli az összes lehetséges hálózati bejelentkezést, azaz ez játssza a login szerepét. Amikor ez egy bejöv˝o hálózati bejelentkezést észlel (azaz észreveszi egy másik számítógéphez vezet˝o új virtuális kapcsolat kialakulását), új processzt indít annak az egy bejelentkezésnek kezelésére. Az eredeti processz pedig folytatja a várakozást a további bejelentkezési igényekre. Hogy az egész még bonyolultabb legyen, több mint egy kommunikációs protokoll létezik a hálózati bejelentkezésekre. A két legfontosabb a telnet és az rlogin. Továbbá sokféle virtuális kapcsolat is létrehozható (az FTP, Gopher, HTTP és más hálózati szolgáltatásokhoz). Nem lenne hatékony, ha külön-külön processzek figyelnék a különféle kommunikációkat, ezért csak egyetlen figyel˝oprogram van, ami mindezekkel tör˝odik, és a megfelel˝o programot indítja a szolgáltatás biztosítására. Ez a program az inetd, melyr˝ol a Linux Network Administrators’ Guide-ban található b˝ovebb információ.

10.3. Mit csinál a login A login program tör˝odik a felhasználó azonosításával, azaz a felhasználói név és a hozzá tartozó jelszó egyezésének vizsgálatával, valamint egy kezdeti környezetet állít fel a felhasználónak a soros vonal engedélyeinek beállításával, valamint a shell elindításával. A kezdeti beállítások részeként az /etc/motd fájl tartalma kerül a kimenetre (motd = message of the day; a nap üzenete), és az új e-mail ellen˝orzése történik meg. Ezek kikapcsolhatók, ha a felhasználó home könyvtárában létrehozunk egy .hushlogin fájlt. Ha az /etc/nologin fájl létezik, a bejelentkezések nem engedélyezettek. Ezt a fájlt általában a shutdown és a hozzá hasonló programok hozzák létre. A login ellen˝orzi e fájl meglétét, és minden bejelentkezést visszautasít, ha ez a fájl létezik. Ilyenkor a login kiírja e fájl tartalmát a bejelentkezést megkísérl˝o terminálra, miel˝ott kilépne. A login minden sikertelen bejelentkezési kísérletet egy rendszer-naplófájlba jegyez fel a syslog-on keresztül. Továbbá a root minden bejelentkezését is naplózza. Mindegyik hasznos lehet behatolók nyomozásakor.

74

Fejezet 10. Be- és kijelentkezés A pillanatnyilag bejelentkezett felhasználók a /var/run/utmp fájlban vannak felsorolva. Ez a fájl csak a következ˝o rendszerindításig érvényes, ugyanis a rendszerindító folyamat törli tartalmát. Itt megtalálható minden felhasználó és a bejelentkezésre használt terminál (vagy hálózati kapcsolat), és még néhány hasznos információ. A who, w és hasonló parancsok az utmp fájl tartalma alapján dolgoznak. Minden sikeres bejelentkezés a /var/log/wtmp fájlban kerül könyvelésre. Ez korlátlanul növekedhet, ezért rendszeresen törölni kell. Használható pl. a cron a hetenkénti törlés beállítására. (A jó Linux terjesztések ezt alapértelmezés szerint tudják.) 1 A last parancs ezt a fájlt használja. Az utmp és wtmp fájlok bináris formátumúak (lásd a kézikönyv oldalakat), ezért speciális programok használata nélkül nem szerencsés vizsgálni tartalmukat.

10.4. Az X és az xdm XXX Az X az xdm -en keresztül valósítja meg a bejelentkezéseket; valamint: xterm -ls

10.5. Az elérési jogok szabályozása A felhasználói adatbázis a szokások szerint az /etc/passwd fájlban van. Néhány rendszer árnyék jelszavakat (shadow passwords) használ, azaz a jelszavakat az /etc/shadow -ba teszi. Azokon a helyeken, ahol több számítógép osztozik a felhasználói engedélyeken, a NIS, vagy más módszer az, amit a felhasználói adatbázis tárolására használnak; ezek automatikusan másolhatják az adatbázist egy központi helyr˝ol a többi számítógépre. A felhasználói adatbázis nemcsak a jelszavakat, hanem néhány egyéb információt is tartalmaz a felhasználókról, mint pl. a valódi nevük, home könyvtáruk és a bejelentkezési burokprogramjuk (login shell). Ezek az utóbbi információk publikusak, ezért az ezeket tároló /etc/passwd fájl mindenki számára olvasható. Emiatt viszont az itt tárolt jelszavakat titkosítani kell. Ennek megvan az a hátránya, hogy a titkosított jelszóhoz bárki hozzáférhet, és különféle titkosítási módszerekkel kísérletezhet a visszafejtésén, bejelentkezési kísérletek nélkül. Az árnyék jelszó pontosan ez ellen kíván védekezni azáltal, hogy a titkosított jelszavakat olyan fájlba viszi, melyet csak a root olvashat. Bizonyos Linux terjesztések esetén azonban bonyolult egy már futó rendszerre telepíteni az árnyék jelszavak használatát. (Manapság ez alapértelmezett - a lektor) Mindenképpen fontos, hogy a rendszer összes jelszava jó, azaz nehezen kitalálható legyen. A crack program használható jelszavak feltörésére; minden jelszó, amit ez megtalál, definíció szerint rossz. A crack-et nemcsak a behatoló futtathatja, hanem a rendszeradminisztrátor is, hogy védekezzen a rossz jelszavak ellen. Jó jelszavakat a passwd program is kikényszeríthet; ez hatékonyabb is a CPU-t tekintve, mert a jelszavak feltörése sok számítást igényel. A felhasználói csoportok adatbázisa az /etc/group fájlban, illetve árnyékjelszavak esetén az /etc/shadow.group fájlban található. Egy jól felépített rendszerben a root általában nem tud bejelentkezni a legtöbb terminálon, illetve hálózaton keresztül, csak akkor, ha az adott terminál fel van sorolva az /etc/securetty fájlban. Ez lehetetlenné teszi, hogy egy nem el˝oírt helyr˝ol rootként lehessen bejelentkezni, azaz növeli a biztonságot. Igaz ugyan, hogy bárhonnét be lehet jelentkezni normál felhasználóként, majd a su paranccsal root jogosultságokat szerezni, ha ismerjük a root jelszavát.

75

Fejezet 10. Be- és kijelentkezés

10.6. shell indítás Amikor egy interaktív bejelentkezési shell elindul, automatikusan végrehajt egy vagy több bejelentkezési fájlt. Különböz˝o shell-ek különböz˝o fájlokat hajtanak végre, melyek a megfelel˝o shell dokumentációjában vannak leírva. A legtöbb shell el˝oször egy globális fájlt futtat, pl. a Bourne shell (/bin/sh) és leszármazottai az /etc/profile-t, majd a felhasználó home könyvtárában lev˝o .profile-t. Az /etc/profile lehet˝ové teszi, hogy a rendszeradminisztrátor közös környezetet adjon a felhasználóknak, pl. helyesen beállítsa a PATH környezeti változót, hogy a helyi programfájlok könyvtárait is tartalmazza. A .profile pedig a felhasználónak engedi meg a környezet ízlése szerinti beállítását, akár a központi beállítások felülbírálásával.

Megjegyzések 1. A jó Linux terjesztésekben ez alapértelmezés szerint be is van állítva.

76

Fejezet 11. A felhasználói fiókok (account) menedzselése “The similarities of sysadmins and drug dealers: both measure stuff in Ks, and both have users.” (A rendszergazdák és a drogdealerek közös jellemz˝oje, hogy K-ban mérik az anyagot és felhasználóik vannak) - Régi, fárasztó számítógépes vicc.

Ez a fejezet elmagyarázza, hogyan hozhatók létre új felhasználói fiókok (account), hogyan kell ezek jellemz˝oit módosítani, illetve törölni. A különböz˝o Linux rendszereknek különböz˝o segédeszközeik vannak erre.

11.1. Mi az a felhasználói fiók (account)? Amikor egy számítógépet sok ember használ, általában szükséges különbséget tenni a felhasználók között, pl. azért, hogy a magáncélú fájljaik valóban magáncélúak maradjanak. Ez még akkor is fontos, ha a számítógépet egyszerre csak egy ember használhatja, mint sok mikroszámítógép esetén. 1 Ezért minden felhasználó egy egyedi felhasználói névvel (username) rendelkezik, melyet a bejelentkezéskor használ. A név azonban nem minden. Egy fiók (account) az összes fájlt, er˝oforrást és információt jelenti, mely egy adott felhasználóhoz tartozik. Az elnevezés a bankokra utal, és az üzleti rendszerekben valóban pénz kapcsolódik a számlához, amely fogy a rendszer használatával. Pl. a lemezterületnek lehet napi ára megabyte-onként, a feldolgozási id˝onek pedig másodpercenkénti ára lehet.

11.2. Felhasználó létrehozása Maga a Linux rendszermag egyszer˝u számokként kezeli a felhasználókat. Mindegyik felhasználót egy egyedi egész szám, az ún. felhasználói azonosító (user id vagy uid) azonosít, mivel a számítógép gyorsabban és könnyebben kezeli a számokat, mint a szöveges meghatározásokat. A rendszermagon kívül létezik egy adatbázis, mely egy-egy szöveges nevet ( felhasználónév) kapcsol minden egyes felhasználói azonosítóhoz. Az adatbázis még más információkat is tartalmaz. Egy felhasználó létrehozásához a felhasználó személyr˝ol információkat kell bevinni az adatbázisba, és egy home könyvtárat kell létrehozni számára, ahol saját fájljait tárolhatja. Szükséges lehet még némi alapképzés az új felhasználó számára, és egy megfelel˝oen beállított induló környezet létrehozása is. A legtöbb Linux terjesztésben benne van a program a fiókok létrehozására. Több ilyen is létezik. Két (viszonylag általánosan ismert) parancssori program, melyek egymásnak alternatívái, az adduser és a useradd; de léteznek grafikus felület˝u (GUI) segédprogramok is. Bármelyik programot használjuk is, kevés (jóformán semennyi) munkát kell végeznünk "puszta kézzel". Még ha a részletek bonyolultnak t˝unnek is, ezek a programok mindent magától értet˝od˝ové tesznek. A 11.2.4 fejezet leírja, hogyan kell mindezt kézzel végrehajtani.

11.2.1. Az /etc/passwd és egyéb informatív fájlok A UNIX rendszerek alapvet˝o felhasználói adatbázisa az /etc/passwd szöveges fájl, amit jelszófájlnak (password file) nevezünk. Ez felsorolja az összes érvényes felhasználói nevet és a hozzájuk kapcsolt információkat. A fájlban

77

Fejezet 11. A felhasználói fiókok (account) menedzselése minden felhasználói névhez egy sor tartozik, és hét, kett˝ospontokkal elválasztott mez˝ore oszlik: •

Felhasználói név (username).



Titkosított jelszó.



Felhasználói azonosító szám (uid).



Csoportazonosító szám (gid).



Teljes név vagy egyéb leírás.



Home könyvtár.



Bejelentkezési shell (login shell).

A formátumot a passwd kézikönyv oldala részletesebben elmagyarázza. A rendszer minden felhasználója olvashatja a jelszófájlt, így pl. megtudhatják a többi felhasználó nevét. Ez azt is jelenti, hogy még a jelszó (a második mez˝oben) is mindenki számára elérhet˝o. Igaz, itt csak egy titkosított változata van, azaz elméletileg ez megfelel˝o megoldás. Azonban a titkosítás feltörhet˝o, különösen gyenge jelszavak esetén (pl. ha az túl rövid, vagy szótárban szerepl˝o szó). Ezért nem jó ötlet, hogy itt vannak a titkosított jelszavak. Sok Linux rendszer rendelkezik az árnyék jelszó (shadow password) lehet˝oségével: a titkosított jelszó ekkor egy külön fájlban, az /etc/shadow-ban van, melyet csak a root olvashat. Ekkor az /etc/passwd fájl csak egy speciális jelet tartalmaz a második mez˝oben. Minden program, melynek szüksége van a felhasználók azonosítására, setuid bitet kap, hogy elérje az árnyékjelszó-fájlt. A szokásos programok elérhetnek a jelszón kívül minden információt az eredeti jelszófájlból, de magát a jelszót nem. 2

11.2.2. Felhasználói- és csoportazonosító számok választása A legtöbb rendszeren teljesen mindegy, milyen számok a felhasználói- és csoportazonosítók (uid és gid), de ha a hálózati fájlrendszert (NFS) használjuk, a felhasználóknak azonos uid-jük és gid-jük kell legyen a gépeken. Ez azért van, mert az NFS is a számszer˝u azonosítókat használja. Azonban ha nem használunk NFS-t, a konkrét számértékek közömbösek, a létrehozásuk rábízható valamilyen automatikus rendszerre. Az NFS használata esetén szükséges a fiókinformációk automatikus szinkronizálására. Az egyik mód, amivel ez megtehet˝o, a NIS rendszer. (XXX Lásd a Hálózati Rendszeradminisztrátorok Kézikönyvét) A régebben már használt uid és gid értékek, valamint szöveges felhasználói nevek újrafelhasználását ajánlatos elkerülni, mert ilyenkor esetleg a régi tulajdonossal kapcsolatos, véletlenül a gépen maradt információk, fájlok, levelek is elérhet˝oek lesznek az újonnan létrehozott felhasználó számára.

11.2.3. Kezdeti környezet: /etc/skel Amikor egy új felhasználó home könyvtára létrejön, az /etc/skel tartalma alapján tölt˝odik fel tartalommal. Ezért ebbe a könyvtárba a rendszeradminisztrátor létrehozhat egy szép kiinduló környezetet az új felhasználók számára. Pl. létrehozhat egy /etc/skel/.profile fájlt, amely az EDITOR környezeti változót egy népszer˝u, új felhasználóknak szánt szövegszerkeszt˝ore állítja be. Általában az a legjobb, ha az /etc/skel a lehet˝o legkisebb, mivel csaknem lehetetlen a már létrehozott felhasználói fájlok frissítése. Pl. ha a közkedvelt szövegszerkeszt˝o neve megváltozik, minden már létez˝o felhasználónak meg kell szerkeszteni a .profile fájlját. A rendszeradminisztrátor megkísérelheti ezt automatikusan, shell szkriptb˝ol megtenni, de ilyenkor nagyon nagy valószín˝uséggel sérülhet valakinek a módosított .profile fájlja.

78

Fejezet 11. A felhasználói fiókok (account) menedzselése Hacsak lehetséges, a globális konfigurációt globális fájlokba érdemes tenni, mint pl. az /etc/profile. Ezáltal a felhasználói fájlok megsértésének veszélye nélkül változtathatjuk meg a beállításokat.

11.2.4. Felhasználók létrehozása kézzel Egy új felhasználói számla kézzel is létrehozható, ha követjük az alábbi lépéseket: •

Szerkesszük az /etc/passwd fájlt a vipw programmal, és adjunk egy új sort hozzá, mely az új fiókot írja le. Nagyon vigyázzunk a szintaxisra! Ne szerkesszük általános szövegszerkeszt˝ovel a jelszófájlt! A vipw lefoglalja a fájlt, így más programok nem fogják frissíteni a szerkesztés ideje alatt. A jelszó mez˝obe írjunk *-ot, hogy még ne lehessen bejelentkezni a fiókba.



Hasonlóan szerkesszük az /etc/group fájlt a vigr paranccsal, ha új csoportot is létre kell hoznunk.



Hozzuk létre az új felhasználó home könyvtárát az mkdir paranccsal.



Másoljuk az /etc/skel tartalmát a home könyvtárba.



Korrigáljuk a tulajdonosokat és az engedélyeket a chown és chmod parancsokkal. Az -R opció hasznos lehet. A megfelel˝o engedélyek kicsit rendszerfügg˝ok, de általában a következ˝o parancsok megfelel˝ok: cd /home/newusername chown -R username.group . chmod -R go=u,go-w . chmod go= .



Állítsuk be a jelszót a passwd paranccsal.

Az utolsó lépés után a fiók m˝uködni fog. Ezért ezt valóban csak legutoljára szabad megtenni, különben a felhasználó bejelentkezhet, miközben készítjük a fiókját, ami bonyodalmakhoz vezethet. Néha szükséges olyan "buta fiókok" létrehozása 3 , melyeket nem használ egy ember sem. Pl. egy anonymous FTP-szerver létrehozásához (azaz amikor bárki letölthet, nem kell felhasználói fiókkal rendelkeznie az adott gépen) egy ftp nev˝u felhasználót kell létrehozni. Ilyen esetekben nem szükséges a jelszót beállítani, s˝ot, jobb, ha nem tesszük meg, mert így senki sem tudja azt használni, csak a root, mivel o˝ minden felhasználó nevében dolgozhat.

11.3. A felhasználók tulajdonságainak megváltoztatása A következ˝o parancsok egy fiók különféle jellemz˝oit változtatják meg (azaz az /etc/passwd megfelel˝o mez˝oit módosítják): chfn A teljes nevet tartalmazó mez˝o megváltoztatása.

79

Fejezet 11. A felhasználói fiókok (account) menedzselése chsh A bejelentkezési shell (login shell) megváltoztatása.

passwd A jelszó megváltoztatása.

A root ezeket bármelyik fiók jellemz˝oinek megváltoztatására használhatja, a normál felhasználók csak a sajátjukéra. Néha szükséges lehet ezen parancsok némelyikének letiltása (a chmod segítségével) a felhasználók számára, pl. ha sok kezd˝o felhasználó van a rendszerben.

Egyéb feladatokat kézzel kell megcsinálni. Pl. a felhasználói név (username) megváltoztatásához az /etc/passwd fájlt közvetlenül kell szerkeszteni. (A vipw-t kell erre használni!) Hasonlóan, a felhasználót több csoporthoz is hozzárendelni szintén az /etc/group közvetlen szerkesztésével lehet. (vigr parancs.) Ezek általában nagyon ritka feladatok, de óvatosan kell o˝ ket végrehajtani: pl. a felhasználói név megváltoztatása az e-mail cím megváltoztatásával is jár, ami bonyodalmakat okozhat. (Ez kiküszöbölhet˝o egy alias létrehozásával.) 4

11.4. A felhasználók törlése Egy felhasználó törléséhez el˝oször le kell törölni az összes fájlját, levelesládáját, nyomtatási feladatait, cron és at feladatait, és minden egyéb hivatkozást a felhasználóra. Azután törölhet˝o a megfelel˝o sor az /etc/passwd fájlból, és a rá vonatkozó bejegyzések az /etc/group-ból. Jó ötlet el˝oször kikapcsolni a fiókot (lásd lentebb), majd utána elvégezni ezeket a m˝uveleteket, hogy ne használhassa a rendszert a felhasználó, miközben töröljük fiókját. Figyeljünk arra, hogy a felhasználónak lehetnek fájljai a home könyvtárán kívül is. A find használható ezek keresésére: find / -user username

Ez a parancs hosszú ideig futhat, ha nagyok a lemezeink. Ha NFS-en keresztül csatolt lemezeink is vannak, akkor vigyázni kell, hogy ne terheljük túl a hálózatot vagy a szervert. Néhány Linux terjesztés speciális parancsokat tartalmaz a felhasználók törlése céljából, melyek szokásos neve deluser vagy userdel. Igaz, ez a munka kézzel is könnyen elvégezhet˝o, és ekkor biztosak lehetünk abban, hogy minden rendben és hiánytalanul zajlott.

11.5. Egy felhasználó átmeneti felfüggesztése Néha szükséges egy fiók ideiglenes kikapcsolása anélkül, hogy törölnénk. Pl. ha a felhasználó nem fizette a használati díjat, vagy a rendszeradminisztrátor észrevette, hogy egy cracker megszerezte az adott fiók jelszavát. A legjobb mód az id˝oleges kikapcsolásra a bejelentkezési shell egy speciális programra való kicserélése, mely egy üzenetet ír ki, majd azonnal kilép. Ily módon akárki próbál bejelentkezni a számlára, nem fog tudni semmilyen parancsot kiadni, de megtudja ennek okát. Célszer˝u, ha az üzenet felhívást tartalmaz a rendszeradminisztrátorral való kapcsolatfelvételre a hiba elhárítása érdekében.

80

Fejezet 11. A felhasználói fiókok (account) menedzselése Azt is megtehetjük, hogy a felhasználói nevet vagy a jelszót cseréljük másra, de akkor a felhasználó nem tudja, mi történt. A megzavart felhasználó pedig több munkát jelent. 5 A legegyszer˝ubb mód ilyen üzen˝oprogram létrehozására egy "tail szkript" írása: #!/usr/bin/tail +2 Ezen számla a biztonság megsértése miatt lett lezárva. Hívja fel a 555-1234 számot, és várja a fekete öltönyös emberek érkezését.

Az els˝o két karakter (#!) közli a rendszermaggal, hogy a sor további része egy parancs, mely értelmezni fogja a fájl hátralev˝o részét. A példabeli tail parancs az els˝o sor kivételével mindent kiír a standard kimenetre. Ha például a billg nev˝u felhasználót gyanúsítjuk a biztonság megsértésével, a rendszeradminisztrátor a következ˝oket teheti: # chsh -s

/usr/local/lib/no-login/security billg # su - tester Ezen számla a biztonság megsértése miatt lett lezárva. Hívja fel a 555-1234 számot, és várja a fekete öltönyös emberek érkezését. #

A fenti su célja annak ellen˝orzése, hogy az egész beállítás m˝uködik-e. A tail szkripteket érdemes külön könyvtárban tartani, hogy nevük ne zavarja a normális parancsokat.

Megjegyzések 1. Kellemetlen lenne, ha a n˝ovérem elolvashatná a szerelmes leveleimet. 2. Igen, ez azt jelenti, hogy a jelszófájl minden információt tartalmaz a felhasználóról, kivéve a jelszót. A fejl˝odés csodája. 3. Szürreális felhasználók? 4. A felhasználói név megváltoztatásának egyik oka lehet pl. házasságkötés, ha a felhasználó a felhasználói névben is tükrözni szeretné névváltozását. 5. Igaz, ezt a "pokoli operátorok" kifejezetten élvezik.

81

Fejezet 12. Biztonsági mentések (backup) A hardver nem-determinisztikusan megbízható. A szoftver determinisztikusan megbízhatatlan. Az emberek nem-determinisztikusan megbízhatatlanok. A természet determinisztikusan megbízható.

Ez a fejezet arról szól, hogyan, miért és mikor kell biztonsági mentést végezni, és hogyan állítsuk vissza az elmentett adatokat.

12.1. A biztonsági mentések fontossága Az adatok értékesek. Id˝obe és er˝ofeszítésbe telhet újra létrehozásuk, ami pénzbe, de legalábbis személyes fájdalomba és könnyekbe kerülhet. Néha pedig lehetetlen az újra létrehozás, mint pl. mérési eredmények esetén. Nyilvánvaló, hogy ez ellen védekezni kell. Négy alapvet˝o ok van, ami adatvesztéshez vezethet: hardverhibák, programozási hibák, emberi tevékenység vagy természeti katasztrófák. 1 Habár a mai hardverelemek eléggé megbízhatóak, mégis el˝ofordul (igaz, ritkán), hogy látszólag teljesen maguktól hibáznak. A legkritikusabb rész a merevlemez, mivel az adatbiztonsága attól függ, hogyan tudja meg˝orizni a felületén a kis mágnesezett területeket egy olyan világban, amely tele van elektromágneses zajokkal. A szoftverek megbízhatósága sem feltétlen javul; egy sziklaszilárd program inkább a kivételek, mint a szabály közé tartozik. Az emberek pedig nagyon megbízhatatlanok; egyrészt akaratlanul hibázhatnak, másrészt rosszindulatúak lehetnek és szándékosan tönkretehetik az adatokat. A természet ugyan nem gonosz, de néha így is árthat az adatainknak. Egyáltalán az a csoda, hogy valami m˝uködik. A biztonsági mentés (backup) az egyik módja az adatokba fektetett munkánk védelmének. Ha az adatokról több másolatunk is van, nem számít, ha az egyik elvész, a költség csak a visszaállítás folyamatánál jelentkezik. Fontos, hogy a mentéseket tökéletesen végezzük. Mint minden más a fizikai világban, a mentések is meghibásodnak el˝obb vagy utóbb. A mentések helyes folyamatának része az ellen˝orzésük, hisz nyilván nem akarod, hogy a mentéseid ne m˝uködjenek. 2 Hogy a baj még nagyobb legyen, a mentés közben is történhet baleset, így ha csak egy mentési adathordozód volt, az is sérülhet, és akkor ott maradsz a kemény munkád füstölg˝o romjai között. 3 Vagy a visszaállításkor veheted észre, hogy elfelejtettél elmenteni valami fontosat, mondjuk a felhasználói adatbázist egy 15000 felhasználós gépen. A legjobb az, mikor a mentés m˝uködne, de a visszaállításra használható szalagos egység épp használhatatlan. Ha biztonsági mentésr˝ol van szó, a munkaköri leírásban szerepeljen a paranoia is.

12.2. A biztonsági mentések adathordozójának megválasztása A biztonsági mentésekkel kapcsolatos legfontosabb döntés a mentési adathordozó megválasztása. Figyelembe kell venni a költségeket, a megbízhatóságot, a sebességet, az elérhet˝oséget és a kezelhet˝oséget. A költség fontos tényez˝o, mivel célszer˝u, ha a mentend˝o adatmennyiség többszöröse áll rendelkezésre a mentések számára. Ezért általában az olcsóbb adathordozó a javasolt.

82

Fejezet 12. Biztonsági mentések (backup) A megbízhatóság különlegesen fontos, mivel egy sérült mentés nagyon fájdalmas veszteség lehet. A mentési adathordozónak évekig hiba nélkül kell tudnia tárolni az adatokat. Az adathordozó használata befolyásolja a megbízhatóságát. Pl. egy merevlemez nagyon megbízható, de nem jó a biztonsági mentések adathordozójának, ha azonos számítógépben van a mentend˝o lemezzel. A sebesség általában nem annyira fontos, ha a mentés emberi közrem˝uködés nélkül is végrehajtható. Nem számít az sem, ha a mentés két óráig tart, ha mindez felügyelet nélkül történik. A sebesség csak akkor lehet fontos, ha a mentés nem oldható meg annyi id˝o alatt, amennyit a számítógép amúgy henyélne. Az elérhet˝oség nyilván fontos, mert nem használhatod azt, ami nincs. Kevésbé magától értet˝od˝o, hogy a jöv˝oben is elérhet˝o lesz-e az adathordozó, illetve ahhoz való meghajtó. Ha nem, akkor nem lehet visszaállítani az adatokat egy kés˝obbi baleset után. A kezelhet˝oség fontossága attól függ, milyen gyakran kell a mentéseket végezni. Minél egyszer˝ubb a mentést elvégezni, annál jobb, mert annál kevesebb a hibalehet˝oség. A tipikus alternatívák a hajlékonylemezek illetve a szalagok. A hajlékonylemez igen olcsó, eléggé megbízható, nem túl gyors, elérhet˝o, de nehezen kezelhet˝o nagy adatmennyiségeknél. A szalagok közt van olcsó és kissé költséges is, eléggé megbízható, elég gyors, viszonylag elérhet˝o, és a szalagmérett˝ol függ˝oen viszonylag kényelmes. Vannak persze más alternatívák is. Ezek viszonylag nehezebben szerezhet˝ok be, de ha ez nem probléma, jobbak lehetnek az egyéb módoknál. Pl. a magneto-optikai lemezek bizonyos szempontból jobbak mind a hajlékonylemezeknél (jóval több adatot képesek tárolni), mind a szalagoknál (a tetsz˝oleges sorrend˝u elérés miatt könnyebb egy-egy fájt visszaállítani róluk).

12.3. A biztonsági mentést végzo˝ segédeszköz kiválasztása Sok segédprogram van, mellyel biztonsági mentést végezhetünk. A UNIX hagyományos ment˝o programjai a tar, a cpio és a dump. Létezik még sok, harmadik félt˝ol származó (freeware és kereskedelmi) csomag is, mely használható. A mentési adathordozó választása befolyásolhatja, hogy melyiket választjuk. A tar és a cpio hasonlók, és a mentések szempontjából többnyire egyenérték˝uek. Mindegyik alkalmas fájlok szalagra mentésére, illetve onnan való visszaállításra. Mindegyik képes lényegében bármilyen adathordozót is használni, mivel a rendszermag eszközmeghajtói tör˝odnek az alacsony szint˝u eszközkezeléssel, így a különféle eszközök lényegében azonos módon jelennek meg a felhasználószint˝u programok el˝ott. A tar és a cpio néhány unixos változatának problémája lehet a szokatlan fájlokkal (szimbolikus linkek, eszközfájlok, nagyon hosszú elérési utak), de a linuxos változatok mindezt helyesen kezelik. A dump abban különbözik ezekt˝ol, hogy a fájlrendszer tartalmát közvetlenül, nem pedig a fájlrendszeren keresztül olvassa. Ezt speciálisan biztonsági mentések céljából írták, míg a tar és cpio programokat els˝osorban archiválásra, de azért használhatók biztonsági mentésre is. A fájlrendszer közvetlen olvasásának vannak el˝onyei. Lehetséges ilyenkor a fájlok visszaállítása id˝obélyegjeik átállítása nélkül; a tar és cpio használata el˝ott viszont a fájlrendszert el˝oször csak olvashatóan kell felcsatolni. A fájlrendszer közvetlen olvasása hatékonyabb is, ha mindent le kell menteni, mert a legkevesebb fejmozgással megoldható. A legnagyobb hátránya az, hogy a mentési program ilyenkor a fájlrendszer típusához köt˝odik: pl. a Linux dump utasítása csak az ext2 fájlrendszerre m˝uködik. A dump továbbá közvetlenül támogatja a mentési szinteket (lásd lentebb); míg a tar és a cpio esetén ezt egyéb eszközökkel kell megvalósítani. A harmadik félt˝ol származó mentési segédeszközök összehasonlítása ezen könyv vizsgálati körén kívül esik. A Linux Software Map (http://www.boutell.com/lsm/) sok ilyen célú, szabad terjesztés˝u programot felsorol.

83

Fejezet 12. Biztonsági mentések (backup)

12.4. Egyszeru˝ biztonsági mentések Az egyszer˝u biztonsági mentési séma az, hogy egyszer mindent lementünk, majd kés˝obb már csak azokat a fájlokat, melyek az utolsó teljes mentés óta változtak. Az els˝o mentés neve teljes mentés (full backup), a továbbiaké növekményes mentés (incremental backup). A teljes mentés gyakran sokkal munkaigényesebb, mint a növekményes, mivel ekkor több adatot kell kiírni, és ez esetleg nem fér el egyetlen szalagon vagy hajlékonylemezen. A növekményes mentésr˝ol való visszaállítás viszont sokkal több munkát vehet igénybe, mint egy teljes mentésr˝ol való. A visszaállítás optimalizálható, hogyha a legutolsó teljes mentés óta végzett összes változást mentjük el mindig. Ez több munkát igényel a mentésekkor, de a visszaállítás legrosszabb esetben is egy teljes és egy növekményes mentésb˝ol elkészülhet. Ha minden nap mentést akarsz végezni, és hat szalagod van, az 1-es szalag használható az els˝o teljes mentésre (mondjuk pénteken), a 2-5 szalagok a növekményes mentésekre (hétf˝ot˝ol csütörtökig). Ezután elvégezhet˝o egy teljes mentés a 6-os szalagra (második péntek) és a növekményeseket el lehet kezdeni a 2-5 sorszámúakkal. Nem érdemes az 1-es szalagon lev˝o teljes mentést felülírni, amíg nincs kész az új teljes mentés, nehogy annak készítése közben történjék valami. A 6-osra való teljes mentés után az 1-eset valahol máshol érdemes tartani, hogy ha pl. t˝uz miatt a többi szalag elég, maradjon valami használható. Amikor a legközelebbi teljes mentést kell megcsinálni, el kell menni az 1-es szalagért, és ennek helyére betenni a 6-osat. Ha több, mint hat szalagod van, a 6 felettieket használhatod a teljes mentések tárolására. Minden új teljes mentéskor a legrégebbi szalagot érdemes használni. Ily módon több hétre visszamen˝oleg lehetnek mentéseid, ami jól jöhet egy régi, már törölt fájl visszaállításakor, vagy egy fájl régi változatának megkeresésekor.

12.4.1. Mentés a tar programmal A tar segítségével könnyen végezhetünk teljes mentést: # tar --create --file /dev/ftape

/usr/src tar: Removing leading / from absolute path names in the archive #

A fenti példa a tar GNU változatát és annak hosszú opcióneveit használja. A tar hagyományos változata csak egykarakteres opciókat ért meg. A GNU változat kezelni tudja azokat a mentéseket, melyek nem férnek el egy szalagon vagy hajlékonylemezen, és azokat is, melyekben hosszú elérési utak vannak. Mindezt a hagyományos változatok nem tudják. A Linux rendszerek mindig a GNU tar-t használják. Ha a mentés nem fér el egy szalagon, a --multi-volume (vagy röviden -M) opciót kell használni: # tar -cMf /dev/fd0H1440

/usr/src tar: Removing leading / from absolute path names in the archive Prepare volume #2 for /dev/fd0H1440 and hit return: #

Megjegyzend˝o, hogy a hajlékonylemezeket formázni kell a mentés el˝ott. Ha ezt elfelejtettük volna, akkor ez megtehet˝o egy másik ablakból vagy virtuális terminálról, amíg a tar a következ˝o lemezre vár. A mentés után ellen˝orizni kell, hogy minden rendben van-e. Ehhez a --compare (röviden -d) opció használható: # tar --compare --verbose -f

84

Fejezet 12. Biztonsági mentések (backup) /dev/ftape usr/src/ usr/src/linux usr/src/linux-1.2.10-includes/ .... #

Ha nem ellen˝orizzük a mentést, el˝ofordulhat, hogy csak akkor vesszük észre, hogy használhatatlan, amikor már az eredeti adatainkat is elvesztettük. A növekményes mentés a tar mellett használt --newer (röviden -N) opcióval végezhet˝o el: # tar --create --newer ’8 Sep 1995’

--file /dev/ftape /usr/src --verbose tar: Removing leading / from absolute path names in the archive usr/src/ usr/src/linux-1.2.10-includes/ usr/src/linux-1.2.10-includes/include/ usr/src/linux-1.2.10-includes/include/linux/ usr/src/linux-1.2.10-includes/include/linux/modules/ usr/src/linux-1.2.10-includes/include/asm-generic/ usr/src/linux-1.2.10-includes/include/asm-i386/ usr/src/linux-1.2.10-includes/include/asm-mips/ usr/src/linux-1.2.10-includes/include/asm-alpha/ usr/src/linux-1.2.10-includes/include/asm-m68k/ usr/src/linux-1.2.10-includes/include/asm-sparc/ usr/src/patch-1.2.11.gz #

Sajnos a tar képtelen észrevenni, ha egy fájl inode információi (pl. a neve vagy az engedélybitjei) megváltoznak. Ez a find használatával, és a pillanatnyi fájlrendszer állapota és az el˝oz˝oleg elmentett fájlok listájának összevetésével kerülhet˝o meg. E célból íródott szkripteket és programokat sokfélét találhatunk a linuxos ftp-szervereken.

12.4.2. Fájlok visszaállítása a tar paranccsal A --extract (röviden -x) opcióval a tar kibontja a fájlokat: # tar --extract --same-permissions

--verbose --file /dev/fd0H1440 usr/src/ usr/src/linux usr/src/linux-1.2.10-includes/ usr/src/linux-1.2.10-includes/include/ usr/src/linux-1.2.10-includes/include/linux/ usr/src/linux-1.2.10-includes/include/linux/hdreg.h usr/src/linux-1.2.10-includes/include/linux/kernel.h ... #

85

Fejezet 12. Biztonsági mentések (backup) Kibontható csak bizonyos fájl vagy könyvtár (beleértve az alatta lev˝o fájlokat és könyvtárakat is), ha megnevezzük o˝ ket a parancssorban: # tar xpvf /dev/fd0H1440

usr/src/linux-1.2.10-includes/include/linux/hdreg.h usr/src/linux-1.2.10-includes/include/linux/hdreg.h #

A --list (röviden -t) opció használható, ha csak az adott adathordozón elmentett fájlok listája érdekel: # tar --list --file

/dev/fd0H1440 usr/src/ usr/src/linux usr/src/linux-1.2.10-includes/ usr/src/linux-1.2.10-includes/include/ usr/src/linux-1.2.10-includes/include/linux/ usr/src/linux-1.2.10-includes/include/linux/hdreg.h usr/src/linux-1.2.10-includes/include/linux/kernel.h ... #

Megjegyzend˝o, hogy a tar mindig sorosan olvassa a mentési adathordozót, ezért nagy kötegek esetén elég lassú. Igaz, nem is lehetséges tetsz˝oleges sorrendben elérhet˝o adatbázis technikát használni szalagon vagy más soros adathordozón. A tar nem kezeli helyesen a törölt fájlokat. Ha egy fájlrendszert egy teljes és egy növekményes mentésb˝ol kell visszaállítani, a két mentés közt törölt fájlok ismét létezni fognak. Ez súlyos probléma lehet, ha a fájlbeli adatoknak nem szabadna már létezniük.

12.5. Többszintu˝ mentések Az el˝oz˝o fejezetben leírt egyszer˝u mentési módszer gyakran megfelel személyes, vagy kis szervereken történ˝o használatra. Komolyabb feladatokra azonban a többszint˝u mentések megfelel˝obbek. Az egyszer˝u módszernek két mentési szintje van: a teljes és a növekményes mentés. Ez általánosítható tetsz˝oleges számú szintre. A teljes mentést nevezhetjük 0. szintnek, és a növekményes mentés egymást követ˝o szintjeit 1., 2., 3. stb. szinteknek. Minden növekményes mentési szinten azt mentjük el, ami az el˝oz˝o, azonos vagy alacsonyabb szint˝u mentés óta változott. Ennek az a célja, hogy egy hosszabb mentési történet (backup history) legyen tárolható olcsón. Az el˝oz˝o fejezet példájában a mentési történet az el˝oz˝o teljes mentésig ment vissza. Ez több szalag használatával megnyújtható, de csak hetente egy szalaggal, ami túl költséges lehet. A hosszabb mentési történet azért hasznos, mert a törölt vagy sérült fájlok szükségét gyakran csak kés˝obb vesszük észre. Sokszor pedig még egy nem egészen friss változat is jobb, mint ha nincs semmink. A többszint˝u mentésekkel a mentési történet olcsóbban kib˝ovíthet˝o. Pl. ha 10 szalagunk van, az 1-es és 2-es szalagokat a havi mentésekre (minden hónap els˝o péntekjén), a 3-6-os szalagokat a heti mentésekre (a többi pénteken), a 7-10-es szalagokat pedig a napi mentésekre (hétf˝ot˝ol csütörtökig) használhatjuk. Az el˝oz˝o fejezetbeli példához képest plusz 4 szalaggal a mentési történetet két hétr˝ol két hónapra sikerült megnyújtani. Igaz, nem minden nap állapota nyerhet˝o vissza az el˝oz˝o két hónapból, de még ez is elég jó s˝ur˝uség.

86

Fejezet 12. Biztonsági mentések (backup) A 12-1 Ábra ábra bemutatja, melyik mentési szintet használjuk az egyes napokon, és mely napok állapota állítható vissza a hónap végén. Ábra 12-1. Példa egy többszintu˝ mentés ütemezésére.

A mentési szintek a fájlrendszer visszaállítási idejének minimalizálására is használhatók. Ha sok növekményes mentésed van monoton növ˝o szintszámmal, mindet vissza kell állítani a megfelel˝o sorrendben, hogy visszakapd az eredeti állapotot. Ehelyett használhatsz nem monoton növekv˝o szintszámokat, ily módon csökkentheted a visszaállítandó mentések számát. A visszaállításhoz szükséges szalagok számának minimalizálásához minden növekményes szalaghoz kisebb mentési szintet lehet használni. Igaz, ekkor a mentésekhez szükséges id˝o megnövekszik, hisz minden mentés mindent lemásol az el˝oz˝o teljes mentés óta. Egy jobb sémát találhatunk a dump kézikönyv oldalán, melyet az alább látható 12.1 táblázatban közlünk. Használjuk egymás után a következ˝o mentési szinteket: 3, 2, 5, 4, 7, 6, 9, 8, 9 stb. Ez mind a mentési, mind a visszaállítási id˝ot minimalizálni fogja. A legtöbb, amit el kell menteni, két napi munka eredménye. A visszaállításhoz szükséges szalagok száma attól függ, mennyi id˝ot vársz két teljes mentés közt, de még mindig kisebb, mint az egyszer˝u sémáknál. Táblázat 12-1. Hatékony mentési séma sok mentési szint használatával Szalag

Szint

Mentés (napok)

Visszaállítás (szalagok)

1

0

n/a

1

2

3

1

1, 2

3

2

2

1, 3

4

5

1

1, 2, 4

5

4

2

1, 2, 5

6

7

1

1, 2, 5, 6

7

6

2

1, 2, 5, 7

8

9

1

1, 2, 5, 7, 8

9

8

2

1, 2, 5, 7, 9

10

9

1

1, 2, 5, 7, 9, 10

11

9

1

1, 2, 5, 7, 9, 10, 11

...

9

1

1, 2, 5, 7, 9, 10, 11, ...

Egy ilyen szeszélyes séma csökkentheti a szükséges munkát, de azt is jelenti, hogy több mindenre kell odafigyelni.

87

Fejezet 12. Biztonsági mentések (backup) Neked kell dönteni, megéri-e alkalmazni. A dump beépítve tartalmazza a többszint˝u mentések támogatását. A tar és a cpio esetén ezt pl. shell szkriptekkel valósíthatjuk meg.

12.6. Mit mentsünk? Amit csak lehetséges, mentsük. A legf˝obb kivételt azok a szoftverek jelentik, melyeket könny˝u újratelepíteni. 4 De még a könnyen telepíthet˝o programok is igényelhetnek beállítást, ami id˝oigényes lehet, ha sokszor el kell végezni; megéri ezeket a konfigurációs fájlokat is elmenteni. Egy másik f˝o kivétel a /proc fájlrendszer, mivel ez csak olyan adatokat tartalmaz, melyet a rendszermag automatikusan generál. Ezért ezt sohasem érdemes menteni. Különösen igaz ez a /proc/kcore fájlra, mivel ez a fizikai memória pillanatnyi képmása, és ezért elég nagy lehet. Bizonytalan a spool-könyvtárak, naplófájlok (log files) és egy csomó minden fontossága a /var-ból. Egyedi esetekben lehet csak eldönteni, hogy ezek mentése fontos-e. A nyilvánvalóan mentend˝o dolgok a felhasználók fájljai (/home), a rendszerkonfigurációs fájlok (f˝oleg az /etc tartalma, és néhány egyéb fájl.)

12.7. Tömörített mentések A mentések sok helyet foglalhatnak, ami sok pénzbe kerülhet. A helyigény csökkentése céljából a mentéseket tömöríthetjük. Ennek több módja is van. Néhány program beépített tömörítési lehet˝oséget tartalmaz, pl. a GNU tar a --gzip (röviden -z) opció hatására a teljes kimenetét a gzip tömörít˝oprogramnak adja át, majd annak kimenete kerül mentésre. Sajnálatos módon a tömörített mentések bajt okozhatnak. A tömörítés természetéb˝ol adódóan, ha egyetlen bit hibás, az összes adat, ami ezután van a tömörített fájlban, használhatatlan lesz. Néhány mentésre készült programnak beépített hibajavítása van, de nem létezik olyan módszer, ami nagyszámú hibát kezelni tudna. Ez azt jelenti, hogy ha a mentés a GNU tar-ral lett tömörítve egyetlen kimen˝o fájlba, akkor egy bit hiba a mentés hiba utáni részét tönkreteszi. Mivel a mentésnek megbízhatónak kell lenni, ez nem jó módszer. Egy másik lehet˝oség: minden fájl egymástól független tömörítése. Ez esetben hiba esetén csak a hibát tartalmazó fájl elveszését jelenti, ezért nem lényegesen rosszabb, mint ha egyáltalán nem lenne tömörítés. (Az a fájl úgyis sérült.) Ezt az afio programmal valósíthatjuk meg. (Ez a cpio egy változata.) A tömörítés id˝obe telhet, ami azt eredményezheti, hogy a ment˝o program nem tud elég gyorsan a szalagra írni. 5 Ez ellen a kimenet pufferelésével védekezhetünk, de még ez sem jelent garanciát, ha lassú a számítógépünk.

Megjegyzések 1. Az ötödik ok “valami más”. 2. Ne nevess! Több emberrel megtörtént már ilyen. 3. Jártam így már én is... 4. Az, hogy mi a "könny˝u", egyéni ízlés dolga. Néhány ember szerint a több tucat hajlékonylemezr˝ol való telepítés könny˝u. 5. Ekkor a szalagnak meg kell állni, ami nagyon rontja a sebességet, és nem jó sem a szalagnak, sem a meghajtónak.

88

˝ Fejezet 13. Idobeállítás “Az id˝o csak illúzió. Az ebédid˝o kétszeresen is az. ” (Douglas Adams.)

Ez a fejezet elmagyarázza, hogy a Linux hogyan tartja meg a pontos id˝ot, és mit szükséges tenni ahhoz, hogy elkerüljük a fellép˝o problémákat. Általában nem szükséges, hogy bármit is tegyünk az id˝ovel kapcsolatban, de hasznos, ha tisztában vagyunk a fentiek m˝uködésével.

˝ 13.1. Idozónák Az id˝omérés többnyire szabályosan változó természeti jelenségeken alapul, mint például a nappalok és az éjszakák váltakozása, amit a Föld forgása okoz. Két egymást követ˝o periódus teljes ideje állandó érték, ám a nappalok és az éjszakák hossza periodikusan változik. Az egyik egyszer˝u állandó id˝opont a dél. A dél a nap azon id˝opontja, amikor a Nap a legmagasabb pozícióban található az égbolton. Mivel a Föld gömb alakú 1 , a Föld különböz˝o pontjain eltér˝o id˝opontokban van dél. Ez vezetett a helyi id˝o kialakulásához. Emberi mértéket alapul véve az id˝o nagyon sok egységb˝ol áll. Ezek közül a legtöbb szintén olyan természeti jelenségekhez köt˝odött, mint például a dél. Amíg ugyanazon az egy helyen tartózkodunk, nincs jelent˝osége a helyi id˝ok közötti eltéréseknek. Amint azonban távoli területekkel kell kommunikálnunk, rá fogunk jönni arra, hogy szükség van egy általános, közös id˝ore. Manapság a világ legtöbb térsége kommunikál a világ más területeivel, így már definiálták az egységesen elfogadott szabványt az id˝o mérésére. Ezt az id˝ot nevezik világid˝onek (UT vagy UTC, valamikor greenwichi középid˝oként is ismert volt, azaz GMT-ként (Greenwich Mean Time), mivel ezt használták helyi id˝oként Greenwichben, Angliában). Amikor eltér˝o helyi idej˝u emberek kommunikálnak egymással, használhatják az id˝o kifejezésére a világid˝ot, így aztán nincs z˝urzavar azzal kapcsolatban, hogy minek mikor kell történnie. Az azonos helyi id˝ot használó területeket id˝ozónának hívják. Bár a földrajzi elhelyezkedés lehet˝ové tenné, hogy valamennyi térség, ahol a dél id˝opontja ugyanarra a pillanatra esik, egyazon id˝ozónába tartozzon, a politika azonban ezt egy kissé komplikáltabbá teszi. Különböz˝o okokból nagyon sok ország használja a nyári id˝oszámítást pénz megtakarítására, melynek lényege, hogy óráikat a természetes fény jelenlétéhez állítják hozzá. Ez általában az órák nyáron történ˝o visszaállítását jelenti a télihez képest. Egyes országok ezt nem teszik. Azok viszont, akik teszik, nem értenek egyet abban, hogy mikor is kellene az órákat átállítani, és ennek szabályait évr˝ol évre változtatják. Ez okozza, hogy az id˝ozóna-szabályok egyáltalán nem magától értet˝od˝oek. Az id˝ozónák legjobb elnevezése elhelyezkedésükb˝ol adódik, esetleg a helyi és a világid˝o különbségér˝ol is kaphatják a nevüket. Az Egyesült Államokban és néhány más országban a helyi id˝ozónákat egy névvel és egy 3 bet˝ub˝ol álló rövidítéssel azonosítják. A rövidítések nem egyediek, ezért aztán nem igazán használatosak, hacsak az ország meg nincs nevezve. Mégis csak jobb, ha úgy beszélünk a helyi id˝or˝ol, hogy azt mondjuk, hogy a helsinki id˝o, mintha azt mondanánk, hogy kelet-európai id˝o, miután Kelet-Európában nem minden ország követi ugyanazokat a szabályokat. A Linux tartalmaz egy id˝ozóna-csomagot, amely ismeri az összes létez˝o id˝ozónát és így könnyen figyelemmel kísérhet˝o, ha a szabályok esetleg megváltoznak. A rendszeradminisztrátornak mindössze a megfelel˝o id˝ozónát kell kiválasztania. A felhasználók is beállíthatják a saját id˝ozónájukat; ez fontos, mivel sokan a számítógépekkel dolgozók közül az Interneten keresztül eltér˝o id˝ozónákban dolgoznak. Amikor megváltoznak a szabályok a nyári id˝oszámítással kapcsolatban, ellen˝orizd le, hogy frissítetted-e Linux rendszered id˝ozóna-csomagját. Az id˝ozóna-beállítás és az id˝ozóna adatfájlok frissítésén kívül nincs különösebb dolgunk az id˝obeállítással kapcsolatban.

89

Fejezet 13. Id˝obeállítás

13.2. A hardver- és a szoftver-órák A személyi számítógépeknek elemmel m˝uködtetett hardverórájuk van. Az elem biztosítja azt, hogy az óra még akkor is járjon, amikor az egész számítógép ki van kapcsolva, azaz nincs feszültség alatt. A hardveróra a BIOS beállító képerny˝ojén keresztül állítható be, vagy valamilyen más futó operációs rendszerb˝ol. A Linux rendszermag az id˝ot a hardverórától függetlenül méri. A rendszerindítás közben a Linux a hardver órájával megegyez˝o id˝ore állítja a saját órájának idejét. Ezután már mindkét óra egymástól függetlenül jár. A Linux azért használ saját órát, mivel a hardver órájának folyamatos figyelése túlságosan lassú és bonyolult. A rendszermag órája mindig a világid˝ot mutatja, így egyáltalán nem is szükséges ismernie az id˝ozónákat. Ezen egyszer˝uség növeli a megbízhatóságot és megkönnyíti az id˝ozóna információinak frissítését. Valamennyi processz önállóan kezeli az id˝ozóna-váltásokat (felhasználva azokat az alapvet˝o eszközöket, melyek az id˝ozóna csomag részét képezik). A hardver órája járhat a helyi és a világid˝o alapján is. Általában jobb, ha a világid˝ot alapul véve m˝uködik, ebben az esetben nem szükséges átállítani a hardver óráját, amikor elkezd˝odik vagy befejez˝odik a nyári id˝oszámítás (a világid˝ore nem vonatkozik a nyári id˝oszámítás). Sajnálatos módon némely PC operációs rendszer - beleértve az MS-DOS-t, a Windowst, az OS/2-t - azt feltételezi, hogy a hardver órája a helyi id˝ot mutatja. A Linux képes mindkét típust kezelni, de ha a hardver órája a helyi id˝ot mutatja, akkor azt szükséges megváltoztatni a nyári id˝oszámítás kezdetén vagy végén (egyébként nem mutathatná a helyi id˝ot).

13.3. Az ido˝ beállítása és kijelzése A Linuxban a rendszer id˝ozónája az /etc/localtime szimbolikus hivatkozáson keresztül kerül meghatározásra. Ez a hivatkozás arra az id˝ozóna-adatfájlra mutat, amely a helyi id˝ozónát írja le. Az id˝ozónák adatfájljai az /usr/lib/zoneinfo vagy az /usr/share/zoneinfo könyvtárban találhatók, Linux-terjesztést˝ol függ˝oen. Például egy New Jerseyben lév˝o SuSE rendszeren az /etc/localtime hivatkozás az /usr/share/zoneinfo/US/Eastern fájlra mutatna. Egy Debian rendszeren ugyanez a hivatkozás az /usr/lib/zoneinfo/US/Eastern fájlra mutat. Ha nem találod a zoneinfo könyvtárat sem az /usr/lib, sem az /usr/share alatt, akkor keresd meg a find /usr -print | grep zoneinfo paranccsal, vagy nézz utána a terjesztés dokumentációjában. Mi van akkor, ha különböz˝o id˝ozónákban lév˝o felhasználóid vannak? A felhasználók beállíthatják a saját id˝ozónájukat a TZ környezeti változó segítségével. Ha ez nincs beállítva, akkor rendszerid˝ot veszik alapul az alkalmazások. A TZ változó szintaxisa a tzset kézikönyv oldalán olvasható. A date parancs az aktuális dátumot és id˝ot mutatja meg. 2 Például: $ date Sun Jul 14 21:53:41 EET DST 1996 $

A jelzett id˝opont: 1996. július 14-e, vasárnap, kb. tíz perccel este tíz óra el˝ott, az “EET DST” id˝ozónában (amely minden bizonnyal a Kelet-Európai Nyári Id˝oszámítási Id˝o). A date parancs képes a világid˝ot is mutatni: $ date -u Sun Jul 14 18:53:42 UTC 1996 $

A date parancs felhasználható a rendszermag szoftver órájának beállítására is:

90

Fejezet 13. Id˝obeállítás # date 07142157 Sun Jul 14 21:57:00 EET DST 1996 # date Sun Jul 14 21:57:02 EET DST 1996 #

Ha további részletekre is kíváncsi vagy, akkor nézd meg a date kézikönyv oldalát - bár a szintaxis egy kissé misztikus. Egyedül a root képes az id˝o beállítására. A felhasználók beállíthatják ugyan saját id˝ozónájukat, de az óra ugyanúgy jár mindenki számára. A date parancs kizárólag a szoftverórát állítja be és mutatja meg. A clock parancs hangolja össze a hardver- és a szoftverórákat. Ez a rendszerindulás közben történik, amikor a hardverórát beolvasva, a szoftveróra beállításra kerül. Amennyiben mindkett˝o beállítása szükséges, akkor el˝oször állítsuk be a szoftverórát a date paranccsal, majd a hardverórát a clock -w paranccsal. Az -u opció azt mondja meg a clock parancsnak, hogy a hardveróra világid˝oben értend˝o. Az -u opciót mindenképpen helyesen kell használnunk, különben a számítógép össze fog zavarodni a pillanatnyi id˝ovel kapcsolatban. Az órákat mindenképpen a kell˝o óvatossággal változtassuk meg. A Unix rendszer nagyon sok alkotórésze számára fontos, hogy az órák megfelel˝oen m˝uködjenek. Például a cron démon periodikusan futtatja a parancsokat. Ha megváltoztatod az órát, a cron összezavarodik, hogy vajon szükséges-e futtatni a parancsokat vagy nem. Egy korai Unix rendszeren valaki húsz évvel el˝ore állította az id˝ot és a cron ekkor hirtelen le akarta futtatni valamennyi periodikus parancsot húsz évre. A cron jelenlegi verziója ezt már megfelel˝oen kezeli, de azért még mindig óvatosnak kell lennünk. A nagy ugrások és a visszaugrások sokkal veszélyesebbek, mint a kisebbek vagy az el˝oreugrások.

13.4. Ha rosszul jár az óra A Linux szoftverórája nem mindig pontos. A PC hardvere által generált periodikus id˝ozít˝o megszakítás (timer interrupt) tartja mozgásban. Ha a rendszeren túl sok processz fut, ez megnyújthatja az id˝ozít˝o megszakítás kiszolgálását és a szoftveróra elkezd késni. A hardveróra önállóan jár és általában pontosabb is. Amennyiben a számítógépedet gyakran újraindítod (ami a nem szerverként m˝uköd˝o gépek esetében többnyire meg is történik), az órája általában eléggé pontos marad. Ha a hardverórát be kell állítani, akkor általában a legegyszer˝ubb újraindítani a gépet és a BIOS beállító képerny˝ojén keresztül elvégezni ezt. Ezzel elkerülhetjük azokat a problémákat, amelyeket a rendszerid˝o változása okozhat. Ha a BIOS-on keresztüli beállítás nem lehetséges, állítsd be az új id˝ot a date, majd a clock paranccsal (ebben a sorrendben), de készülj fel a rendszer újraindítására, ha ezután a rendszer egyes részei furcsán kezdenének viselkedni. A hardverórát a hwclock -w vagy a hwclock --systohc parancs használatával igazíthatod a szoftverórához. Ha a szoftverórát akarod a hardverórához igazítani, akkor ezt a hwclock -s vagy a hwclock --hctosys paranccsal teheted meg. További tudnivalókat a man hwclock segítségével szerezhetsz be.

13.5. NTP - Hálózati ido˝ protokoll (Network Time Protocol) Egy hálózati számítógép (még akkor is, ha csak modemes kapcsolatról van szó) képes automatikusan ellen˝orizni a saját óráját, összehasonlítva más számítógépek órájával, amelyekr˝ol tudjuk, hogy pontosan járnak. Az NTP pontosan erre szolgál. Segítségével ellen˝orizhetjük és kiigazíthatjuk számítógépünk óráját, egy másik géppel való

91

Fejezet 13. Id˝obeállítás szinkronizálás útján. Így ezredmásodperces pontossággal fogja tartani gépünk a koordinált egyetemes id˝ot (Coordinated Universal Time). 3 A lezserebb Linux-felhasználók számára ez a szolgáltatás csak egyfajta luxusnak t˝unik. Az otthonomban az összes óra aszerint van beállítva, hogy a Linux rendszerem szerint mennyi az id˝o. Nagyobb szervezetek számára ez a "luxus" életfontosságú lehet. Ha bizonyos események naplófájljait keressük, nagyon megkönnyíti az életünket a pontos rendszerid˝on alapuló naplózás, és elkerülhet˝o lesz a fáradságos hibakeresési "találgatás". Az NTP fontosságát jól illusztrálják a tárolóhálózatok (SAN; Storage Area Network). Ezek némelyike kifejezetten megköveteli, hogy jól beállított és m˝uköd˝o NTP legyen a rendszerünkön, hogy lehet˝ové tegye a fájlrendszer használatán keresztül történ˝o szinkronizálást és a megfelel˝o id˝obélyeg-ellen˝orzést. Néhány tárolóhálózat (és néhány alkalmazás) összezavarodhat, ha olyan fájlokkal kell dolgoznia, amelyeken a jöv˝ob˝ol származó id˝obélyeg van. A Linux-disztribúciók többsége eleve tartalmaz valamilyen NTP-csomagot, .deb vagy .rpm formában. Ezekkel is telepíthetjük az NTP-t, vagy letölthetjük a forrásfájlokat a http://www.ntp.org/downloads.html helyr˝ol és magunk fordíthatjuk le. Bármelyik módszert választjuk is, az alapvet˝o beállítások ugyanazok lesznek.

13.6. Alapveto˝ NTP beállítások Az NTP programot az /etc/ntp.conf vagy az /etc/xntp.conf fájl segítségével állíthatjuk be, disztribúciótól függ˝oen. Nem fogok nagyon elmerülni a részletekben, csak az alapvet˝o beállításokról lesz szó. Íme egy példa egy alapvet˝o ntp.conf fájlra: # --- GENERAL CONFIGURATION --server aaa.bbb.ccc.ddd server 127.127.1.0 fudge 127.127.1.0 stratum 10 # Drift file. driftfile /etc/ntp/drift

A legegyszer˝ubb ntp.conf fájl mindössze két szervert sorol fel, az egyik az, amelyikkel szinkronizálni akarja az id˝ot, a másik pedig egy ál-IP-cím, ami önmagára mutat (ebben az esetben 127.127.1.0). Az ál-IP-címre hálózati problémák esetén van szükség, vagy ha a távoli NTP szerver épp leáll. Ilyenkor az NTP önmagával fogja szinkronizálni az id˝ot mindaddig, amíg újra kapcsolódni tud a távoli szerverhez. Ajánlatos legalább két távoli szervert felsorolni itt: az egyik els˝odleges szerverként fog m˝uködni, a másik pedig biztonsági tartalékként. Érdemes megadni egy eltérés-fájl (drift file) elérési helyét is. Id˝ovel az NTP "megtanulja", hogy mennyit szokott tévedni a rendszeróra, és automatikusan kiigazítja a hibát. A restict opció arra jó, hogy ellen˝orizzük, mit tehet meg az NTP és ki futtathatja. Például: # A szolgáltatáshoz való általános hozzáférés megtiltása: # Prohibit general access to this service. restrict default ignore

# A hálózaton lév˝ o rendszerek számára engedélyezzük a szinkronizálást, de az NTP # idejét nem változtathatják me # Permit systems on this network to synchronize with this

92

Fejezet 13. Id˝obeállítás # time service. But not modify our time. restrict aaa.bbb.ccc.ddd nomodify # A felsoroltaknak korlátlan hozzáférést adunk az ntpd-hez: # Allow the following unrestricted access to ntpd restrict aaa.bbb.ccc.ddd restrict 127.0.0.1

Ajánlatos el˝obb beállítani egy jól m˝uköd˝o NTP-t, és csak ezután adni hozzá a restrict opciót. Ugyanis el˝ofordulhat, hogy véletlenül önmagunkat is kizárjuk a szinkronizálás jogosultjai közül, aztán jó ideig kereshetjük a hiba okát. Az NTP lassan korrigálja a rendszerid˝ot, ezért legyünk türelmesek. Egyszer˝uen tesztelhet˝o a m˝uködése: lefekvés el˝ott állítsuk át a rendszerid˝ot 10 perccel, majd ébredéskor ellen˝orizzük le. Az eredmény újra pontos id˝o lesz.

13.7. NTP eszközök Számos segédalkalmazás létezik az NTP m˝uködésének ellen˝orzésére. Az ntpd -q paranccsal lekérdezhetjük a rendszerid˝o aktuális állapotát. # ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *cudns.cit.corne ntp0.usno.navy. 2 u 832 1024 377 43.208 0.361 2.646 LOCAL(0) LOCAL(0) 10 l 13 64 377 0.000 0.000 0.008

Az ntpdc -c loopinfo parancs kiírja, mennyivel tér el a rendszerid˝o (másodpercekben) a távoli szerver idejét˝ol, az utolsó lekérdezés óta. # ntpdc -c loopinfo offset: frequency: poll adjust: watchdog timer:

-0.004479 s 133.625 ppm 30 404 s

Az ntpdc -c kerninfo kiírja a adott pillanatban hátralév˝o helyesbítési id˝ot. # ntpdc -c kerninfo pll offset: pll frequency: maximum error: estimated error: status: pll time constant: precision:

-0.003917 s 133.625 ppm 0.391414 s 0.003676 s 0001 pll 6 1e-06 s

93

Fejezet 13. Id˝obeállítás frequency tolerance: pps frequency: pps stability: pps jitter: calibration interval: calibration cycles: jitter exceeded: stability exceeded: calibration errors:

512 ppm 0.000 ppm 512.000 ppm 0.0002 s 4 s 0 0 0 0

A fenti parancs kissé eltér˝o változata az ntptime: # ntptime ntp_gettime() returns code 0 (OK) time c35e2cc7.879ba000 Thu, Nov 13 2003 11:16:07.529, (.529718), maximum error 425206 us, estimated error 3676 us ntp_adjtime() returns code 0 (OK) modes 0x0 (), offset -3854.000 us, frequency 133.625 ppm, interval 4 s, maximum error 425206 us, estimated error 3676 us, status 0x1 (PLL), time constant 6, precision 1.000 us, tolerance 512 ppm, pps frequency 0.000 ppm, stability 512.000 ppm, jitter 200.000 us, intervals 0, jitter exceeded 0, stability exceeded 0, errors 0.

További lehet˝oség az NTP m˝uködésének ellen˝orzésére az ntpdate -d parancs. Ez felveszi a kapcsolatot egy NTP szerverrel és meghatározza az id˝oeltérést, de nem változtatja meg a rendszerid˝ot. # ntpdate -d 132.236.56.250 13 Nov 14:43:17 ntpdate[29631]: ntpdate [email protected] Thu Feb 13 12:17:20 EST 2003 (1) transmit(132.236.56.250) receive(132.236.56.250) transmit(132.236.56.250) receive(132.236.56.250) transmit(132.236.56.250) receive(132.236.56.250) transmit(132.236.56.250) receive(132.236.56.250) transmit(132.236.56.250) server 132.236.56.250, port 123 stratum 2, precision -17, leap 00, trust 000 refid [192.5.41.209], delay 0.06372, dispersion 0.00044 transmitted 4, in filter 4 reference time: c35e5998.4a46cfc8 Thu, Nov 13 2003 14:27:20.290 originate timestamp: c35e5d55.d69a6f82 Thu, Nov 13 2003 14:43:17.838 transmit timestamp: c35e5d55.d16fc9bc Thu, Nov 13 2003 14:43:17.818 filter delay: 0.06522 0.06372 0.06442 0.06442 0.00000 0.00000 0.00000 0.00000

94

Fejezet 13. Id˝obeállítás filter offset: 0.000036 0.001020 0.000527 0.000684 0.000000 0.000000 0.000000 0.000000 delay 0.06372, dispersion 0.00044 offset 0.001020 13 Nov 14:43:17 ntpdate[29631]: adjust time server 132.236.56.250 offset 0.001020 sec

Ha szinkronizálás közben akarjuk megfigyelni a rendszert, használjuk az ntptrace parancsot. # ntptrace 132.236.56.250 cudns.cit.cornell.edu: stratum 2, offset -0.003278, synch distance 0.02779 dtc-truetime.ntp.aol.com: stratum 1, offset -0.014363, synch distance 0.00000, refid ’ACTS’

Ha a rendszerid˝o azonnali szinkronizálására van szükségünk, használhatjuk az ntpdate tavoli-szerver-neve parancsot, ekkor azonnal sor kerül az id˝o kiigazítására. # ntpdate 132.236.56.250

13 Nov 14:56:28 ntpdate[29676]: adjust time server 132.236.56.250 offset -0.003151 sec

13.8. Néhány ismert NTP szerver A publikus NTP szerverek listája megtalálható a Public NTP Time Servers (http://www.eecis.udel.edu/~mills/ntp/servers.html) honlapon. Illik elolvasni a felhasználással kapcsolatos információkat az adott szerver oldalán, miel˝ott igénybe vesszük a szolgáltatásaikat, ugyanis nem mindegyik rendelkezik megfelel˝o sávszélességgel ahhoz, hogy nagyszámú kérést szolgáljon ki. Nem árt el˝oz˝oleg felvenni a kapcsolatot az adott szerver rendszeradminisztrátorával.

13.9. NTP-vel kapcsolatos hivatkozások Az NTP-r˝ol részletesebb felvilágosítás található a http://www.ntp.org (http://www.ntp.org/) és http://www.ntp.org/ntpfaq/NTP-a-faq.htm (http://www.ntp.org/ntpfaq/NTP-a-faq.htm) honlapokon.

Megjegyzések 1. Legalábbis a tudomány mai állása szerint. 2. Vigyázat: a time parancs nem az id˝ot mutatja! 3. További információt ezzel kapcsolatban a következ˝o helyen találsz: http://www.time.gov/about.html (http://www.time.gov/about.html/)

95

Fejezet 14. Hol találsz segítséget? “Help me if you can I’m feeling down. And I do appreciate you being ’round.” - The Beatles

˝ 14.1. Hírcsoportok és levelezolisták Ez a kézikönyv nem képes arra, hogy mindent megtanítson neked, amit a Linuxról tudni kell - nincs hozzá elég hely. Szinte elkerülhetetlen, hogy el˝obb-utóbb olyan feladatot kell megoldanod, amihez ebben (vagy az LDP egyéb dokumentumaiban) nem találsz segítséget. A Linuxban az egyik legjobb dolog, hogy rengeteg fórum foglalkozik vele. A skála pedig nagyon széles: a kezd˝ok számára készült GYIK-tól kezdve a rendszermag-fejlesztés rejtelméig szinte minden linuxos kérdésre választ lehet találni ezeken a fórumokon. Hogy eredményesen tudd ezeket használni, íme néhány jó tanács:

14.1.1. Keresd meg a megfelelo˝ fórumot Az els˝o teend˝od, hogy megfelel˝o fórumot találj. Nagyon sok hírcsoport és levelez˝olista foglalkozik a Linuxszal, ezért próbáld meg azt megtalálni és használni, amelyik a legjobban megközelíti az igényeidet. Például nincs sok értelme a sendmail beállításához segítséget kérni egy rendszermag-fejlesztéssel foglalkozó fórumon. A jobbik eset az lesz, ha az ott jelenlév˝ok azt gondolják, buta vagy, és kevés választ fogsz kapni; rosszabb esetben igencsak sért˝o jelleg˝u válaszokra számíthatsz (flame). Ha szétnézel az elérhet˝o hírcsoportok között, hamar rátalálsz a comp.mail.sendmail-re, ami úgy néz ki, megfelel˝o hely a sendmaillel kapcsolatos kérdéseidnek. A hírolvasó kliensedben valószín˝uleg lesz egy lista az elérhet˝o hírcsoportokról, de ha nem így lenne, akkor itt találsz egy teljes listát: http://groups.google.com/groups?group=* (http://groups.google.com/groups?group=*).

˝ hozzászólást küldenél a fórumra 14.1.2. Mielott Ha már megtaláltad a megfelel˝o fórumot, azt gondolhatod, már küldheted is a kérdésedet. Állj! Még nem készültél fel erre. Utánanéztél már magad a válasznak? Hatalmas mennyiség˝u HOGYAN és GYIK érhet˝o el a neten, s ha találsz köztük olyat, ami a problémáddal foglalkozik, el˝oször azt olvasd el. Ha nincs is benne a válasz a konkrét kérdésedre, akkor is jobban meg fogod érteni az adott területet, s e tudás birtokában pontosabban fogod tudni megfogalmazni a kérdésedet. A hírcsoportok és levelez˝olisták archívumaiban is érdemes keresgélni, mert nagyon is lehetséges, hogy valaki már feltette ezt a kérdést, és válaszoltak is rá. A http://www.google.com vagy hasonló keres˝ooldalak segítségét is vedd igénybe, miel˝ott beküldöd a kérdésedet a fórumra.

14.1.3. Hogyan írd meg a hozzászólásodat Nos, tegyük fel, hogy megtaláltad a megfelel˝o fórumot, elolvastad a témába vágó HOGYANokat és GYIK-gy˝ujteményeket, kerestél a neten, de még mindig nem találtad meg a megfelel˝o választ a kérdésedre. Most már elkezdheted megírni a hozzászólásodat. Nem árt, ha az elején világossá teszed, hogy már olvasgattál a témában, pl. így: “Elolvastam a Winmodem-HOGYANt és a PPP-GYIK-et, de egyikben sem találtam meg azt, amit keresek; a google-n rákerestem a "Winmodem Linux PPP Setup"-ra, de ez sem dobott ki semmi használhatót”. Ebb˝ol látszik majd, hogy olyan ember vagy, aki kész er˝ofeszítéseket tenni a probléma megoldása érdekében, nem pedig egy lusta

96

Fejezet 14. Hol találsz segítséget? hülye, aki elvárja, hogy kanállal etessék. Az el˝obbi valószín˝uleg segítséget fog kapni, ha akad valaki a fórumon, aki tudja a választ; utóbbinak feltehet˝oen rideg csend vagy szókimondó gúnyolódás lesz a jutalma. Fogalmazz érthet˝oen, tartsd be a nyelvtani és helyesírási szabályokat. Ez hihetetlenül fontos, mert jelzi, hogy precíz és megfontolt, gondolkodó ember vagy. Ne használj ilyen kifejezéseket: “1ébként” (az "egyébként" helyett), “vok” (a "vagyok" helyett). Igyekezz m˝uvelt és intelligens ember benyomását kelteni. Jobban fogsz járni, biztosíthatlak. Fontos, hogy ne írj csupa nagybet˝uvel, ÍGY. A neten ezt úgy értelmezik, mintha kiabálnál, durva és udvariatlan hatást kelt. Egyértelm˝u részletességgel írd le a problémát és azt, hogy mit tettél már a megoldás érdekében. Teljesen haszontalan olyan kérdést feltenni, hogy “Nem m˝uködik a Linuxom. Mit tehetnék?” Mióta nem m˝uködik? Mi módon állt le? Fogalmazz a lehet˝o legpontosabban. Persze ennek is vannak határai, pl. ne írj bele a hozzászólásodba lényegtelen információkat. Ha a levelez˝oprogramoddal vannak gondjaid, akkor teljesen valószín˝utlen, hogy a rendszermag indulási naplófájlja (dmesg) bármi információval szolgálna ez ügyben. Ne kérd, hogy magánlevélben válaszoljanak. A legtöbb linuxos fórumnak épp az a célja, hogy mindenki tanulhasson a másik problémáiból. Ha magán választ kérsz, megfosztod a hírcsoportot vagy fórumot az egyik alapvet˝o értékét˝ol.

14.1.4. A hozzászólásod formája Ne küldj hozzászólást HTML-formátumban. Sok Linux-felhasználónak olyan levelez˝oprogramja van, amelyik nem egykönnyen jeleníti meg a HTML-ben írt e-maileket. Bár képesek HTML-leveleket is elolvasni, általában nem teszik. Ha ilyen formában küldöd nekik a leveledet, nagy az esélye, hogy olvasatlanul kerül a kukába. Írj inkább sima szöveg (plain text) formában, így sokkal többen fogják elolvasni.

14.1.5. Utólagos összefoglaló levél (follow-up) Miután megoldódott a problémád, írj egy rövid utólagos összefoglalást a fórumra, amelyben elmagyarázod, mi volt a konkrét gond és hogyan oldottad meg. A többiek nagyra értékelik majd ezt, hiszen ha legközelebb felteszi valaki ugyanezt (vagy hasonló) kérdést, sokkal könnyebb lesz segíteni neki: az illet˝o megkeresheti a hírcsoport vagy levelez˝olista archívumában az ezzel kapcsolatos leveleket és megtalálja a megoldásodat is.

14.1.6. További információk Ez a kis útmutató csak átfogalmazása és rövid összefoglalása az Eric S. Raymond által írt kit˝un˝o (és sokkal részletesebb) dokumentumnak, amely itt található: http://www.catb.org/~esr/faqs/smart-questions.html. Érdemes elolvasnod, miel˝ott bármit is írnál bármilyen fórumra. Utána úgy tudod majd megfogalmazni a kérdésedet, hogy maximális eséllyel kaphass megfelel˝o választ.

14.2. IRC Az IRC-t (Internet Relay Chat) nem tárgyalja Eric Raymond útmutatója, pedig az is nagyszer˝u módja lehet a segítségkérésnek. Mindenesetre itt sem árt némi gyakorlat a helyes kérdésfeltevésben. A legtöbb IRC-hálózaton igen forgalmas a #linux csatorna, és ha a kérdésedre adandó válasz megtalálható a kézikönyv oldalakon vagy a HOGYANokban, akkor ne lep˝odj meg, ha ezek elolvasását ajánlják neked. Itt is érvényes, hogy érthet˝o, világos módon és nyelvileg helyesen írjunk.

97

Fejezet 14. Hol találsz segítséget? A hírcsoportokról és levelez˝olistákról elmondottak nagy része az IRC-re is érvényes, a következ˝o kiegészítésekkel:

14.2.1. Színek Ne használj színeket, félkövér, aláhúzott vagy szokatlan (nem ASCII) karaktereket, mert ett˝ol némely régebbi terminál megzavarodik, és ránézésre is egyszer˝uen csúnya. Ha belépsz egy csatornára és elkezdesz színes vagy félkövér bet˝uket árasztani, számíthatsz rá, hogy ki fognak rúgni.

14.2.2. Légy udvarias Ne feledd: nem vagy feltétlenül jogosult arra, hogy választ kapj. Ha jól teszed fel a kérdésedet, akkor talán kapsz rá választ, de ez senkinek sem jár alapból. A linuxos IRC-csatornákon mindenki saját jószántából, szabadideje rovására van jelen, senki nem fizet nekik ezért, f˝oleg te nem. Légy udvarias! Bánj úgy a többiekkel, ahogyan szeretnéd, ha veled bánnának. Ha úgy érzed, hogy a többiek nem udvariasak veled, akkor ne kezdd el szidni vagy más módon bosszantani o˝ ket, inkább legyél még udvariasabb. Így o˝ k t˝unnek majd nevetségesnek, s nem tudnak lerángatni téged a maguk szintjére. Ne szégyeníts meg senkit! Ha hiszed, ha nem, megtették már vele mások korábban egyszer-kétszer, és els˝ore sem volt kellemes...

14.2.3. Írj helyesen, és angolul A legtöbb #linux csatorna angol nyelv˝u. Ha ott tartózkodsz, beszélj angolul. A nagyobb IRC-hálózatokon vannak más nyelv˝u #linux csatornák is, például a francia nyelv˝ut talán #linux.fr-nak hívják, a spanyolt valószín˝uleg #linux.es vagy #linuxlatino néven találod meg. Ha így nem találsz rá a megfelel˝o csatornára, akkor a f˝o (angol nyelv˝u) #linux csatornán bizonyára tudnak majd segíteni. Ne írj olyanokat, hogy “1337 H4X0R d00d!!!”. Akkor sem, ha mások így tesznek. Ostobán néz ki, így te is ostobának fogsz t˝unni. Jó esetben csak hülyének néznek, rosszabb esetben kirúgnak a csatornáról.

14.2.4. Port szkennelés Soha, de soha ne kérd senkit˝ol, hogy szkennelje a portjaidat, vagy hogy próbáljon betörni a gépedre! Nincs rá mód, hogy megtudják, valóban az vagy-e, akinek mondod magad, vagy hogy az az IP-cím, amellyel csatlakozol, valóban a tiéd. Ne hozd az embereket olyan helyzetbe, hogy nemet kelljen mondaniuk egy ilyen kérésre. Te se szkenneld mások portjait, még akkor sem, ha megkérnek rá. Nem tudhatod, valóban az-e az illet˝o, akinek mondja magát, és hogy az az IP-cím, amir˝ol csatlakozik, valóban az övé. Némely jogrendszerben a port szkennelés törvényellenesnek min˝osül, és egészen biztos, hogy ellenkezik a legtöbb internet-szolgáltató (ISP) szolgáltatási feltételeivel. Sokan naplózzák a bejöv˝o TCP kapcsolatokat, észre fogják venni, hogy szkennelik o˝ ket, és sokan jelezni fogják ezt a szolgáltatódnak (az pedig rendkívül egyszer˝uen ki tudja deríteni, ki volt az).

14.2.5. Maradj a csatornán Ne küldj privát üzenetet (/msg) senkinek, hacsak meg nem kért rá. A privát üzenetek csökkentik a csatorna értékét, és vannak, akik egyszer˝uen jobban szeretnék, ha nem /msg-znél.

98

Fejezet 14. Hol találsz segítséget?

14.2.6. Maradj a témánál Ne térj el a csatorna topikjától. Ez egy “Linux” csatorna, nem pedig “Mit vett fel Bob bácsi múlt hétvégén”. Ha látsz is másokat, akik eltérnek a témától, te ne tedd ezt. Lehet, hogy o˝ k törzsvendégnek számítanak és rájuk más szabályok vonatkoznak.

14.2.7. CTCP-k Ha tömeges CTCP-t forgatsz a fejedben 1 , pingelni akarod a csatornát vagy CTCP verziót nézegetni, vagy bármit CTCP-zni, fontold meg a dolgot. Nagy valószín˝uséggel igen hamar kirúgnak a csatornáról.

14.2.8. Hacker, cracker, phreak, warez Ne kérdez˝osködj exploitok fel˝ol, hacsak nem akarod, hogy újabb indok legyen a kirúgásodra. Ne tartózkodj egyidej˝uleg hacker/cracker/phreaker/warez és linuxos csatornán. Valamilyen rejtélyes oknál fogva a #linux csatornák operátorai gy˝ulölik azokat, akik szeretnek kárt okozni mások gépében, vagy szoftvert lopni. El sem tudom képzelni, miért...

14.2.9. Összegzés Elnézést, ha úgy sikerült ez az összefoglaló, mint egy csomó "ne tedd ezt" és néhány "tedd ezt" listája. A "tedd ezt" sorozatot már b˝oven kifejtettem a hírcsoportokról és levelez˝olistákról szóló részben. Talán az a legokosabb, ha bemégy egy #linux csatornára, leülsz és figyeled a beszélgetést úgy félóráig, miel˝ott megszólalnál. Ha kiismerted az ottani hangnemet, jobban be tudsz illeszkedni közéjük.

14.2.10. Ajánlott olvasmányok Nagyon sok kit˝un˝o GYIK létezik a neten arról, hogyan használhatod legjobban az IRC #linux csatornáit. A legtöbb ilyen csatornához saját GYIK tartozik, vagy saját szabálygy˝ujtemény. Ennek lel˝ohelyét megtalálhatod a csatorna topikjában (ezt bármikor megtekintheted a /topic paranccsal. Ha vannak ilyen szabályok, olvasd el és tartsd be o˝ ket. Egy általános szabály- és tanácsgy˝ujteményt találsz az “The Undernet #linux channel FAQ”-ban (http://faq.linuxops.net/.

Megjegyzések 1. Ha nem vagy járatos az IRC m˝uködésében, elárulom, hogy a CTCP a Client to Client Protocol (kliens-kliens-protokoll) rövidítése. E módszerrel különféle dolgokat tudhatsz meg mások klienseir˝ol. Részleteket az IRC-kliensed dokumentációjában találsz.

99

Függelék A. GNU Free Documentation License Version 1.1, March 2000 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely

100

Függelék A. GNU Free Documentation License available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text.

2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

101

Függelék A. GNU Free Documentation License It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice. H. Include an unaltered copy of this License. I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. In any section entitled "Acknowledgements" or "Dedications", preserve the section’s title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as

102

Függelék A. GNU Free Documentation License invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."

6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document,

103

Függelék A. GNU Free Documentation License provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document’s Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.

8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.

9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License".

104

Függelék A. GNU Free Documentation License

If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

105

˝ piszkozat, de Szójegyzék (egyelore ˝ remélhetoleg nem sokáig) “A Láthatatlan Egyetem Könyvtárosa egyoldalúan úgy döntött, hogy a megértést segítend˝o, összeállít egy orángután-ember szótárat. Három hónapig dolgozott rajta. Nem volt könny˝u munka. Odáig jutott el, hogy "Oook"” (Terry Pratchett, “Men At Arms”)

A Linux és a rendszeradminisztráció legfontosabb kifejezéseinek magyarázata CMOS RAM A CMOS a "Complementary Metal Oxide Semiconductor" rövidítése. Igen összetett technológia, de leegyszer˝usítve nem más, mint egy tranzisztortípus, amely akkor is meg˝orzi az állapotát, ha nem kap áramot, így egyfajta statikus RAM-ot biztosít, azaz olyan RAM-ot, amelyik nem veszíti el a tartalmát, ha lekapcsoljuk a gépet.

account (felhasználói fiók) A Unix rendszerekben a felhasználók felhasználói fiókokat (account) kapnak, azaz egy felhasználónevet és egy jelszót, amellyel beléphetnek a fiókjukba. Rendszerint kapnak egy home könyvtárat is, ahol a fájlokat tárolhatják, és hardver-, valamint szoftverelérési jogokat. Mindezek együtt jelentik az account (fiók) fogalmát.

application program (alkalmazás) Olyan szoftver, ami valami hasznosat csinál. Az alkalmazás használatának eredménye az, amiért a számítógépet megvetted. Lásd még: system program (rendszerprogram), operating system (operációs rendszer).

bad block (hibás blokk) Olyan blokk (rendszerint a lemez egy szektora), amely képtelen a megbízható adattárolásra.

bad sector (hibás szektor) Hasonló a bad block-hoz (hibás blokk), de pontosabb kifejezés abban az esetben, ha a blokkok és a szektorok mérete nem azonos.

boot sector (rendszerindító szektor) Rendszerint egy adott partíció els˝o szektora. Egy nagyon rövid programot tartalmaz (néhány száz byte méret˝ut), amely betölti és elindítja az operációs rendszert.

106

Szójegyzék (egyel˝ore piszkozat, de remélhet˝oleg nem sokáig) booting (rendszerindítás) Mindaz, ami a számítógép bekapcsolásától kezdve történik, egészen addig, amíg a gép képes lesz a felhasználó parancsait fogadni.

˝ bootstrap loader (rendszerbetölto) Egy igen kis program (általában a ROM-ban), amely a lemez egy meghatározott részét (pl. az MBR-t) olvassa be és átadja neki a vezérlést. E meghatározott részen található program általában valamivel nagyobb és összetettebb, s ez felel˝os az adott operációs rendszer betöltéséért, amelynek aztán átadja a vezérlést.

cylinder (cilinder) Egy többfejes lemezen a sávok egy csoportja, amelyet az olvasófej mozgatása nélkül lehet elérni. Más szóval, azok a sávok, amelyek azonos távolságban vannak a tengelyt˝ol, amely körül a lemez korongjai forognak. Az egy id˝oben olvasandó adatok azonos cilinderre helyezése jelent˝osen lerövidítheti a hozzáférési id˝ot, ugyanis az író-olvasó fejek mozgása viszonylag lassú a lemezek forgásához képest.

daemon (démon) A háttérben, rendszerint észrevétlenül futó processz, amíg valami nem aktiválja. Például az update démon kb. harminc másodpercenként aktiválódik, hogy lemezre írja a cache puffer tartalmát, a sendmail pedig akkor "ébred fel", ha valaki levelet akar elküldeni.

˝ daylight savings time (nyári idoszámítás) Az év azon id˝oszaka, amikor az órát egy órával el˝obbre állítják. Szerte a világon használják nyáron, így az esték világosabbak, mint egyébként lennének.

˝ disk controller (lemezvezérlo) Hardveres áramkör, amely a lemezelérésre vonatkozó utasításokat értelmezi az operációs rendszert˝ol a fizikai lemez irányában. Olyan absztrakciós réteget biztosít, amely által az operációs rendszernek nem kell tudnia, hogyan kommunikáljon a sok különféle típusú merevlemezzel; mindössze a - viszonylag kisszámú lemezvezérl˝o-típusokat kell ismernie. Elterjedt lemezvezérl˝ok: IDE és SCSI.

file system (fájlrendszer) Azon eljárások és adatstruktúrák, amelyeket az operációs rendszer használ egy lemezen vagy partíción található fájlok nyomon követésére; az a mód, ahogyan a fájlok a lemezen elhelyezkednek. Ezt a szót használják akkor is, ha egy partícióról vagy lemezr˝ol beszélnek, vagy a fájlrendszer típusáról.

107

Szójegyzék (egyel˝ore piszkozat, de remélhet˝oleg nem sokáig) emergency boot floppy (vészindító hajlékonylemez) Olyan hajlékonylemez, amelyet a rendszer indítására használhatunk, még ha a merevlemez fájlrendszere súlyosan sérült is. A Linux különféle terjesztései általában felkínálják a telepítés során egy ilyen rendszerindító hajlékonylemez készítését, és ezt melegen ajánljuk is. Ha az általad használt terjesztés nem ajánlja fel ezt a lehet˝oséget, akkor olvasd el a The Linux Bootdisk HOWTO (http://www.tldp.org/HOWTO/Bootdisk-HOWTO/index.html) dokumentumot az LDP oldalán.

filesystem (fájlrendszer) Ezt a kifejezést két értelemben is használják, amelyek közt árnyalatnyi az eltérés. Jelentheti egyrészt a meghajtón (merevlemez, hajlékonylemez, CD-ROM stb.) található fájlok és könyvtárak összességét; másrészt pedig azokat a jelöl˝o elemeket a fizikai lemezen, amelyeket az operációs rendszer használ, hogy eldöntse, hová írja a fájlokat (inode, blokk, szuperblokk stb.). Az aktuális jelentést mindig az adott szövegkörnyezet dönti el.

formatting (formázás) Szigorúan véve ez a m˝uvelet azt jelenti, hogy a lemez felületét sávokra, szektorokra és cilinderekre osztjuk és ezt jelöl˝o elemekkel rögzítjük. Néha (helytelenül) abban az értelemben is használják, hogy fájlrendszert írunk a lemezre (különösen a MS Windows/MS DOS világában).

fragmented (töredezettség) Ha egy fájlt nem összefügg˝o blokkokban írtunk a lemezre. Ha nincs elég hely a lemezen ahhoz, hogy egy teljes fájlt összefügg˝o blokkokban írjunk a lemezre, akkor a fájl széttöredezik a lemez felszínének két vagy több részén. Ezt a jelenséget nevezik töredezettségnek, ami megnövelheti a fájl betöltésének idejét, hiszen a lemeznek tovább kell keresnie a fájl többi részét.

full backup (teljes biztonsági mentés) A teljes fájlrendszer másolása biztonsági adathordozóra (pl. szalag, hajlékonylemez, CD).

geometry (lemezgeometria) Mennyi cilinder, cilinderenként mennyi szektor és fej van egy lemezen.

high level formatting (magas szintu˝ formázás) Helytelen kifejezés arra, hogy fájlrendszert írunk a lemezre. Gyakran használják az MS Windows és MS DOS világában.

108

Szójegyzék (egyel˝ore piszkozat, de remélhet˝oleg nem sokáig) incremental backups (növekményes biztonsági mentés) Az utolsó teljes mentés óta bekövetkezett változások biztonsági mentése. A növekményes mentés segítségével ha okosan és rendszeresen használjuk - sok id˝ot és energiát takaríthatunk meg a biztonsági mentések karbantartásakor.

inode (inode) Unix rendszerekben a fájlokról szóló információt tároló adatstruktúra. Mindegyik fájl számára külön inode létezik, az egyes fájlokat pedig egyedileg lehet azonosítani aszerint, hogy melyik fájlrendszerben vannak és ott mi az inode-számuk. Egy-egy inode a következ˝o információkat tartalmazza: melyik eszközön van, zárolási információ, a fájl típusa, a fájlhoz tartozó hivatkozások száma, a tulajdonos user és group azonosítója, a fájlban található byte-ok száma, hozzáférések és módosítások kelte, az inode utolsó módosításának ideje, valamint a fájl blokkjainak címe a lemezen. Egy Unix könyvtár nem más, mint a fájlok neve és inode-száma közti kapcsolatok összessége. Egy fájl inode-számát az ls parancs -i kapcsolójával tudhatjuk meg.

kernel (rendszermag) Az operációs rendszer azon része, amely a hardverrel való interakciót és az er˝oforrások megosztását valósítja meg. Lásd még: rendszerprogram.

˝ local time (helyi ido) Egy adott földrajzi régió hivatalos ideje (a Földön régiónként eltér˝o); törvény vagy helyi szokás határozza meg.

logical partition (logikai partíció) Egy kiterjesztett partíción belüli partíció, amely logikai olyan értelemben, hogy a valóságban nem létezik, csakis a szoftver logikai struktúráján belül.

low level formatting (alacsony szintu˝ formázás) A formázás szinonimája; az MS DOS világában a fájlrendszer létrehozásától való megkülönböztetésül használják, ez utóbbit néha formázásnak is mondják.

mail transfer agent (levélküldo˝ program) Rövidítve MTA. Az a program, amely az e-mailek továbbításáért felel˝os. Amint üzenetet kap egy felhasználói levelez˝oprogramtól vagy egy másik MTA-tól, átmenetileg helyben tárolja azt, megvizsgálja a címzettet és vagy kézbesíti a levelet (helyi címzett esetén), vagy továbbadja egy másik MTA-nak. Mindkét esetben szerkesztheti és/vagy kiegészítheti a levél fejlécét. Az egyik legszélesebb körben használt MTA Unix környezetben a sendmail.

109

Szójegyzék (egyel˝ore piszkozat, de remélhet˝oleg nem sokáig) ˝ mail user agent (felhasználói levelezoprogram) Rövidítve MUA. Az a program, amely lehet˝ové teszi a felhasználó számára, hogy elektronikus leveleket szerkesszen és olvasson. A MUA közvetít a felhasználó és a levélküld˝o program (Mail Transfer Agent, MTA) között. A kimen˝o levelek átadódnak egy MTA-nak kézbesítésre, míg a bejöv˝o leveleket onnan veszi fel a program, ahol az MTA hagyta o˝ ket (noha az egyfelhasználós gépeken futó felhasználói levelez˝oprogramok MUA - POP segítségével is begy˝ujthetik a leveleket). Ismert programok: pine, elm, mutt.

master boot record (MBR) A lemez els˝o logikai szektora, rendszerint itt keresi a BIOS azt a betöltend˝o kis programot, amely aztán elindítja a számítógépet.

network file system (hálózati fájlrendszer) Rövidítve NFS. A Sun Microsystems által kifejlesztett protokoll, meghatározása az RFC 1094-ben található. Segítségével egy számítógép elérheti a hálózati meghajtókon lév˝o fájlokat, mintha azok a saját helyi lemezén lennének.

operating system (operációs rendszer) Szoftver, amely megosztja a számítógépes rendszer er˝oforrásait (processzor, lemezterület, hálózati sávszélesség stb.) a felhasználók és az általuk futtatott alkalmazások között. Felügyeli a rendszerhez való hozzáférést, ily módon gondoskodik a biztonságról. Lásd még: kernel (rendszermag), system program (rendszerprogram), application program (alkalmazás).

partition (partíció) Egy lemez logikai része. Mindegyik partíció saját fájlrendszerrel rendelkezik. A Unix úgy kezeli a partíciókat, mintha önálló fizikai egységek lennének.

password file (jelszófájl) Az a fájl, amely a felhasználóneveket és a hozzájuk tartozó információkat (pl. a jelszó) tárolja. Unix rendszereken ez általában az /etc/passwd. A modern Linux rendszereken az /etc/passwd fájl valójában nem tartalmazza a jelszavakat, ezeket inkább egy másik fájlban, az /etc/shadow-ban tárolják, biztonsági okokból. Lásd a megfelel˝o kézikönyv oldalakat: passwd(5), shadow(5).

platters (korongok) Fizikai lemez a merevlemez-meghajtón belül. Egy merevlemez rendszerint több fizikai lemezb˝ol áll, amelyeket egymás fölött helyeznek el. Ezekb˝ol egy önálló lemez a korong.

110

Szójegyzék (egyel˝ore piszkozat, de remélhet˝oleg nem sokáig) power on self test (POST) Egy sor diagnosztikai teszt, amelyek a számítógép bekapcsoláskor futnak le. Jellemz˝oen a következ˝oket jelenti: memóriateszt, a hardverkonfiguráció esetleges változásainak vizsgálata (a legutóbbi állapothoz képest), a BIOS által ismert hajlékony- és merevlemez meghajtók m˝uködésének ellen˝orzése.

print queue (nyomtatási sor) Egy fájl (vagy fájlok csoportja), amelyet a nyomtatási démon használ annak biztosítására, hogy a nyomtatni kívánó alkalmazásoknak ne kelljen megvárniuk a munka folytatásához, hogy a nyomtatási feladat befejez˝odjön. Lehet˝ové teszi azt is, hogy több felhasználó használjon egy nyomtatót.

read-write head (író-olvasó fej) Vékony elektromágneses tekercs és egy fém kar, amely a lemezre mágneses mintákat ír, ill. onnan ilyeneket olvas. Ezek oldalsó irányban mozognak a korongok forgásához képest (vagyis a korong közepe illetve széle felé, sugárirányban - a lektor).

root filesystem (gyökér fájlrendszer) Unix fájlrendszerben minden egyéb felcsatolt fájlrendszer szül˝oje. Csatolási pontja: / . Ez alá egyéb fájlrendszereket lehet felcsatolni (pl. /usr). Ha a gyökér fájlrendszert nem lehet felcsatolni, akkor a rendszermag "pánikol" és a rendszer nem képes betölt˝odni.

run level (futási szint) A Linuxban összesen 10 futási szint van (0-9), ezek közül többnyire csak az els˝o hetet definiálják. Mindegyik futási szint más-más szolgáltatásokat indíthat, így egyazon rendszeren belül több eltér˝o konfigurációra van lehet˝oség. A 0. futási szintet “rendszerleállás”ként definiálták, az 1-est “egyfelhasználós üzemmód”-ként, a 6-ost pedig “újraindítás”-ként. A fennmaradó futási szinteket elméletileg tetszése szerint definiálhatja a rendszeradminisztrátor. Mindazonáltal a legtöbb Linux terjesztésben benne van néhány el˝ore definiált futási szint, pl. a 2-es szint lehet “többfelhasználós konzolos” üzemmód„ az 5-ös pedig “többfelhasználós X rendszer”. Ezek a definíciók terjesztésr˝ol terjesztésre változhatnak, ezért érdemes megnézni a hozzájuk tartozó dokumentációt.

sectors (szektorok) Az a minimális sávhosszúság, amelyet adattárolásra használnak. Általában (de nem mindig) 512 byte-ot jelent.

shadow passwords (árnyékjelszó) Mivel a Unix rendszereken a jelszófájl (password file) bárki számára olvasható, általában nem tartalmazza a felhasználók jelszavait. Ehelyett egy úgynevezett árnyékfájlt használnak erre a célra, amit már nem olvasható akárki számára. Ez tartalmazza a felhasználók titkosított jelszavait.

111

Szójegyzék (egyel˝ore piszkozat, de remélhet˝oleg nem sokáig)

single user mode (egyfelhasználós üzemmód) Általában ez az 1-es futási szint. Itt a bejelentkezés csak a root számára engedélyezett. A rendszer hibáinak kijavítására szokták használni (ha a fájlrendszer részben megsérült, még be lehet jelentkezni az 1-es futási szintre és meg lehet javítani), vagy partíciók közötti fájlrendszer-mozgatásra. Ez csak két példa volt, de minden olyan feladat az 1-es szint futtatását kívánja meg, ahol egyszerre csak egy személy írhat a lemezre.

spool (puffer) Fájlok vagy más adatok sorba állítására szolgál. Általában nyomtatókkal kapcsolatban használatos, de más feladatok (pl. levelek elküldése) sorba állítására is alkalmas. Egyes források szerint bet˝uszó, a “Simultaneous Peripheral Operation On-Line”-ból keletkezett, viszont a Jargon File (http://catb.org/~esr/jargon/html/) szerint ez inkább egy utólag kreált magyarázat.

system call (rendszerhívás) A rendszermag által az alkalmazások számára biztosított szolgáltatások, illetve ezek meghívásának módja. Lásd a kézikönyv oldalak 2. szekcióját.

swap space (lapozó terület) A merevlemez azon területe, amelyre a rendszer kiírhatja a memória bizonyos részeit. Általában külön partíciót használnak erre a célra, de lehet lapozófájlt (swapfile) is alkalmazni.

system program (rendszerprogram) Azon programok, amelyek egy operációs rendszer magas szint˝u m˝uködését valósítják meg, azaz olyan dolgok, amelyek nem függnek közvetlenül a hardvert˝ol. Bizonyos esetekben különleges jogosultságokat kíván meg a futtatásuk (pl. elektronikus levelek kézbesítése), de gyakran csak a rendszer egy részét értik rajta (pl. fordítóprogram). Lásd még: application program (alkalmazás), kernel (rendszermag), operating system (operációs rendszer).

track (sáv) A lemez korongjának egy része, amely elhalad egy író-olvasó fej alatt, miközben a fej mozdulatlan, de alatta forog a lemez. Minden sáv szektorokra oszlik, a sávok függ˝oleges csoportját pedig cilindernek nevezzük.

112

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF