. A Unix kialakulása 1960-as évek közepén az AT&T Bell Laboratórium a General Electric (G.E.) és az MIT (Massachusetts Institute of Technology) közösen dolgozott egy időosztásos operációs rendszer projekten. A projekt a MULTICS (Multiplexed Information and Computing Service) nevet viselte. 1969-ben a Bell Laboratórium kiszállt a MULTICS projektből Ekkor Ken Thomson és Dennis M. Ritchie a laboratóriumban rendelkezésre álló PDP-7-es mini számítógépre írt egy új operációs rendszert assembler nyelven. A fejlesztés körülbelül egy hónapig tartott. Az új operációs rendszert UNICS (Uniplexed Information and Computing Service) -nak nevezték el. A szóvégi két betű összeolvadásából alakult ki a ma is jól csengő UNIX név. 1972-ben Ritchie megalkotja a C programozási nyelvet. 1973-ban a Unix kernelt (nagy részét) C-ben újraírják. 1979-ben kereskedelmi forgalomban is elérhetővé vált. Az AT&T önálló részleget alapít, amely a UNIX-al foglalkozik. (UNIX System Laboratories (USL)) 1980-ban a Microsoft saját UNIX fejlesztésébe kezd. A Xenix az első olyan UNIX amely IBM PC-kre készült. (i8088-as processzorra) Később felhagy a Xenix fejlesztésével, és azt az SCO (Santa Cruz Operation) folytatja. 1985-ben Richard M. Stallman megalapította az FSF (Free Software Foundation)-t Az alapítvány célja az ún. szabad szoftverek népszerűsítése, a fejlesztők segítése, koordinálása. A GNU (GNU's Not Unix) projekt szeretne egy minél teljesebb operációs rendszert létrehozni. Stallman úgy gondolta, hogy a Unix alapvonásai jók, ezért erre épített. A GNU projekt tehát egy nagy átfogó projekt, amely keretein belül ún. szabad szoftverek fejlesztését segítik. A cél tehát az, hogy az operációs rendszer tisztán szabad szoftver megoldásokból épüljön fel. GNU General Public Licence (GPL): GPL alá eső programot bárki használhat, módosíthatja is azt, amikor pedig a szoftvert továbbadja, vele együtt kell adnia annak teljes forráskódját is, az esetleges módosítások feltüntetésével. GPL alá eső szoftverért pénzt kérni nem szabad, viszont fel lehet számítani a másolással, terjesztéssel, installálással, konfigurálással kapcsolatos költségeket.
GNU Free Documentation Licence (FDL): A licenc célja egy olyan kézikönyv, tankönyv vagy ehhez hasonló hasznos dokumentum megalkotása, amely a szó szoros értelmében szabad annak érdekében, hogy mindenkinek biztosítsa a szöveg sokszorosításának és terjesztésének teljes szabadságát, módosításokkal vagy anélkül. Vagyis a dokumentumból származtatott munkák is szabad minősítést kell, hogy kapjanak. 1991-ben Linus B. Torvalds kernel fejlesztésébe kezd az akkori Intel 386-os számítógépen. Az új kernel a Linux nevet kapta a szerzője keresztnevéből. Linus az új kernelt GPL licence alatt bocsátotta ki, ami lehetővé tette, hogy többen bekapcsolódjanak a fejlesztésbe.
Jelenleg több mint 250 féle disztribúció létezik ( http://distrowatch.com/ ) Kenneth Lane Thompson
1943. február 4 -
Dennis M. Ritchie
Linus Torvalds
1941. szep.9 – 2011. okt.12
1969. dec. 28 –
Működési (technikai) jellemzők o Több felhasználós (multi user). Egyszerre több felhasználó használhatja a Linuxot futtató o o o
o o
o o o
számítógépet. Több feladatos (multi tasking). Egy felhasználó több feladatot hajthat végre egyidejűleg. Általános időosztás (time sharing). Minden egyes folyamat adott ideig kapja meg a CPU-t. Az alapértelmezett időszelet 1/100 másodperc. Hierarchikus fájlrendszer. A fájlrendszerben különböző szinteket különböztethetünk meg. Egyetlen kiindulási, gyökér (root) könyvtár van a Linux operációs rendszerben. Ez rendszerint egy I/O eszköz (pl. winchester) egy adott partícióját jelenti. Minden egyéb fájlrendszer adott alkönyvtár alá csatlakoztatható. (mount) A fájlrendszer képes a keresztkapcsolat (link) használatára. Egységes I/O kezelés az állományok, hardver eszközök és a folyamatok között. Az operációs rendszer az állományok kezelését tartalom vagy név alapján nem különbözteti meg. I/O átirányítás, csővezeték (pipe) szervezés. Hatékony, differenciált jogosultsági rendszer. Rugalmas, könnyen változtatható parancsnyelv. (shell) Hatékony, sokoldalú segédprogramok. (utility)
Fájl koncepció: „A Unixban minden fájl.” A Unix általánosítja a fájl fogalmát. A fájl egy olyan egység, amely bájtok sorozatát tartalmazza (tárolja). Ebben az értelemben a fájl fogalma általánosabb a köznapi értelemben megszokott jelentésétől, vagyis nemcsak állományt jelent. A Unix minden hardver eszközt fájlként kezel. Vagyis a memóriát és bármilyen perifériát is speciális fájlokon keresztül érhetünk el. (Megfelelő jogosultság esetén természetesen.) A működés megértéséhez nagyon fontos ezt a fájl-orientált szervezési módot mindig észben tartani. Terminál koncepció: „Terminálo(ko)n keresztül használhat több felhasználó egy gépet.” Mivel a Unix rendszerek több felhasználósak, és billentyűzete és monitora is csak egy van a számítógépnek (lehetnek kivételek), ezért a több felhasználó külső terminálok vagy számítógép hálózat segítségével használhatja az operációs rendszert. Linux alatt léteznek ún. virtuális konzolok (virtual console). Ez annyit jelent, hogy a szerveren nemcsak egy, hanem több ablakban is tudunk dolgozni. Alapértelmezésként hat ablakunk van, amelyek között az ALT-F1, ALT-F2, ... ALT-F6 billentyű kombinációkkal válthatunk. Igény szerint ez a szám tovább növelhető a /etc/inittab nevű fájlban. A Linux fájlrendszerei Linux operációs rendszerben számos fájlrendszert (filesystem) használhatunk. A Linux alatt használt fájlrendszereket különböző csoportokra oszthatjuk. Elhelyezkedés alapján megkülönböztethetünk: o disc based filesystems (diszk alapú fájlrendszerek). Ilyen például az ext2 vagy az reiserfs
fájlrendszer. Jellemző rájuk, hogy adott partícióra hozhatjuk őket létre. Az adatainkat általában ilyen fájlrendszerben tároljuk. Ha fájlrendszerekről beszélünk, akkor nagy valószínűséggel diszk alapú fájlrendszerekre gondolunk. o pseudo filesystems (pszeudo fájlrendszerek). Olyan fájlrendszer, amely nincsen diszken vagy egyéb I/O eszközön tárolva, hanem csak a memóriában található. Linux alatt a /proc filesystem a rendszerben futó folyamatok jellemzői tartalmazza. o distributed, network and clustered filesystems (elosztott, hálózati és klaszter fájlrendszerek). Olyan fájlrendszerek, amelyek kliens-szerver modellben dolgoznak, és lehetővé teszik, hogy hálózaton keresztül több kliens is csatlakozzon és elérje a megosztott erőforrást. Linux alatt ilyen például az NFS (Network FileSystem).
Az ext2 inode-szerkezete:1
EXT2 fájlrendszer:(extended fájl system) Nincs naplózó funkciója, minden egyes fájl vagy könyvtár egy inode-hoz van hozzárendelve. Az egyedi fájlok max. mérete 16 GB - 2 TB; A partíció teljes mérete 2 TB – 32 TB lehet Blokkméret
Fájlméret max.
Fájlrendszer max. mérete
1 KBájt
kb. 16 GB
2 TB
2 KBájt
256 GB
8 TB
4 KBájt
2 TB
16 TB
8 KBájt
kb. 64 TB
32 TB
EXT3 fájlrendszer (2001) Az egyedi fájlok max. mérete 16 GB - 2 TB; A partíció teljes mérete 2 TB – 32 TB lehet. Legfőbb előnye, hogy engedélyezi a naplózást, amelyre egy külön erre a célra fenntartott hely szolgál, ahol könnyedén lehet nyomon követni a változásokat. Megvalósult az indexelés.
EXT4 fájlrendszer (2008) Az egyedi fájlok max. mérete 16 GB - 16 TB; A partíció teljes mérete 1 EB lehet. (1 EB/ExaBájt = 1024 PB/petabájt és 1 PB = 1024 TB/terrabájt) Az ext3 32ezres alkönyvtárszám-limitjével szemben itt már nincsen korlát. 256 bájtos inode Az ext4 lehetővé teszi a fájlok előzetes helyfoglalását a lemezen, úgy, hogy nem írja tele nulllákkal.
1
http://en.wikipedia.org/wiki/Ext2
Pszeudo fájlrendszerek A pszeudo fájlrendszerek nem köthetők adott fizikai diszkekhez, tároló eszközökhöz. Természetesen ugyanúgy, mint a diszk alapú fájlrendszerek adatokat tárolnak, csak ez a tárolás általában a memóriában történik. o /proc: a Linux a rendszerben futó folyamatokat is egy hierarchikus fa struktúrában tárolja. A
o o o o o o o o
/proc fájlrendszer tartalmazza a rendszerben futó összes folyamat jellemzőit. Ezen felül a rendszer állapotáról is kaphatunk információkat. Néhány ezek közül: /proc/n, ahol az n betű az n természetes számmal azonosított folyamat jellemzői /proc/cpuinfo: processzorunk jellemzői /proc/devices: a kernel által használ „eszköz vezérlők” listája /proc/filesystems: a kernelbe konfigurált fájlrendszerek /proc/sys: egy könyvtár, amelyen belül a rendszer eszközök és szolgáltatások állapota kérdezhető le, állítható be /proc/meminfo: memória állapota (fizikai, swap) /proc/uptime: a rendszer bekapcsolása óta eltelt idő TMPFS (Temporal FileSystem): Lehetővé teszi, hogy a memóriánkat fájlok tárolására használjuk, úgy mint egy diszket (ram drive). A tartalma azonban újraindításkor elvész. Ezt shm (shared memory) fájlrendszernek is hívják.
A szuperblokk a fájlrendszer egészéről tartalmaz ,néhány ezek közül: • • • • • •
blokkok száma, i-node-ok száma rendszergazda számára fenntartott blokkok, szabad blokkok és i-node-ok száma blokkméret, első adatblokk helye csatlakoztatások (mount) száma, utolsó ellenőrzés ideje állapota csatlakoztatás, írás ideje
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ő nullák gyakran előfordulnak 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.) Az i-node tábla tartalmazza a fájl összes fontos tulajdonságát a nevén kívül: • • • • • • • •
a fájl típusát a fájl tulajdonosának azonosítóját (User ID (UID)) a fájl tulajdonos csoportjának azonosítóját (Group ID (GID)) a link számlálót (link counter) a blokkok számát, illetve a fájl méretét a blokkok helyére mutató hivatkozást a jogosultsági biteket a létrehozás, hozzáférés, módosítás idejét
Katalógusfájl katalógus bejegyzésekből áll (directory entry) és a következőket tartalmazza: • • • •
egy i-node számot a bejegyzés hosszát a név hosszát az adott bejegyzés nevét
A Linux könyvtár hierarchiája, fájlok kezelése hierarchikus felépítés: A Linux könyvtár struktúráját egyetlen fa struktúraként képzeljük el. A kiindulási pontot / karakterrel jelöljük és gyökér könyvtárnak (root directory) hívjuk. A fa „ágai” az egyes alkönyvtárak. A gyökér könyvtár általában egy winchester partíción található, de egyéb médiumon vagy hálózaton is elhelyezkedhet. Természetesen nincs rögzítve, hogy az egyes alkönyvtáraknak ugyanazon a partíción kell fizikailag elhelyezkedni. A gyökér könyvtár tehát egyetlen egységként testesíti meg, és összefogja az egyes partíciók fájlrendszereinek könyvtárait, fájljait. mount (csatlakoztatás): A mount parancs szolgál a fájlrendszerek csatlakoztatására. Rendszerinduláskor elsőként az ún. root fájlrendszer kerül csatlakoztatásra, majd utána az egyéb fájlrendszerek. A Linux operációs rendszernek az elinduláshoz szüksége van „megfelelő” root fájlrendszerre. Ez egyszerűsítve annyit jelent, hogy a sikeres rendszerindulás feltétele, hogy a kernel bizonyos fájlokat elérjen, és ezek alapján folytatódhasson a rendszerindítási (boot) folyamat. A mount parancs segítségével tehát egyetlen egységbe foghatók össze a fizikailag különböző helyeken tárolt könyvtárak, fájlok. A kernel képességei (driver támogatásai) határozzák meg, hogy milyen típusú fájlrendszerek csatlakoztathatók illetve használhatók. link (lánc, keresztkapcsolat): fontos jellemzője a könyvtár szerkezetnek az, hogy képes a keresztkapcsolatok használatára. Ha a könyvtár szerkezet egyes könyvtárait utólagosan áthelyezzük másik partícióra, eszközre, akkor is elérhetők lehetnek az „előző” helyükről egy link segítségével. Tárolási szempontból pedig nem kell többször tárolni adott fájlt, hanem több könyvtárból ugyanaz a tartalom elérhető. A linkek használatával tehát az egyes könyvtárak rugalmasan kezelhetők. A konvencionális könyvtár struktúra /bin Olyan felhasználói programok, bináris állományok, amelyek a rendszer működéséhez feltétlenül szükségesek, és az összes felhasználó futtathatja őket pl.: /bin/sh, /bin/bash: shell (parancsértelmező), vagy alap fájlkezelő parancsok (másolás, törlés, listázás, stb. elvégzésére) /boot A rendszerinduláshoz szükséges programok, adatok, konfigurációs fájlok. pl. /boot/vmlinuz-2.6.19: kernel image /boot/initrd-2.6.19: initrd image /boot/boot.b: LILO által használt fájl a boot szektor tárolására (x86 arch.) /boot/grub: GRUB konfigurációs fájlok /dev A speciális eszköz fájlok helye. Ezeken a fájlokon keresztül valósul meg a hardverhez való hozzáférés. pl.: /dev/sda: első SCSI diszk, /dev/psaux: PS/2 egér port /etc Az adott gépre vonatkozó konfigurációs fájlok. Az esetek többségében szöveges fájlokban tárolódnak a rendszer, illetve bizonyos programok beállításai. pl. /etc/fstab az egyes fájlrendszerek csatlakoztatási beállításai, /etc/passwd a helyi felhasználók adatai /home A „root” felhasználó kivételével a felhasználók saját könyvtárai. Az alapértelmezés, hogy minden felhasználónak a felhasználó nevével megegyező lesz a saját könyvtára neve. /lib Az alapvetően szükséges shared library-k (megosztott program-könyvtárak) és kernelmodulok találhatók a könyvtáron belül.
/lost+found Az ext2 illetve az ext3 fájlrendszerben használatos. Ha valamilyen rendszerösszeomlás vagy áramszünet történt és ennek következtében megsérült a fájlrendszer, akkor a következő rendszerinduláskor az fsck (filesystem check) ebbe a könyvtárba állítja vissza azokat a fájlokat, amelyeket nem tud katalógusokhoz kötni. A diszken (részben vagy egészben) megtalálható a fájl tartalma, de nincsen elég információ a pontos helyéről. /mnt Az ideiglenesen csatlakoztatott fájlrendszerek csatlakoztatási pontja ezen belül található. Bármilyen támogatott helyi illetve hálózati fájlrendszer csatlakoztatható. /opt Opcionális programok telepítési helye /proc A /proc pszeudo fájlrendszer, amely a rendszerállapot illetve a futó folyamatokkal kapcsolatos információkat tartalmazza. /root A rendszergazda (root felhasználó) saját könyvtárának a helye. Mivel ő kiemelt (privilégiummal rendelkező) felhasználó, ezért alapértelmezésként az ő könyvtára a gyökérkönyvtáron belül található. /sbin A system binaries (rendszer binárisok) helye. Minden olyan program, amely alapvetően a rendszeradminisztráláshoz kötődik, itt található. Általában root jogosultság szükséges ahhoz, hogy használni tudjuk a programokat. srv Az egyes futtatott szolgáltatásoknak átadandó adatok. /sys A 2.6-os kernelekben bizonyos hardvereszközök paraméterei átkerültek ide a /proc fájlrendszerből. usr Minden olyan fájl, amely valamilyen felhasználói programhoz tartozik. Egy operációs rendszert általában valamilyen felmerült felhasználói igény miatt telepítünk. Itt található az összes olyan program és a hozzá tartozó fájlok, amelyeket a felhasználó igény miatt kerültek telepítésre. A /usr könyvtáron belül a gyökér könyvtárhoz hasonló hierarchia létezik. /var Változó adatok helye. Itt találhatók például a naplófájlok, spool könyvtárak, különböző cache és lock fájlok.