Linux (rendszermag)

rendszermag
Ez a közzétett változat, ellenőrizve: 2024. augusztus 7.

A Linux-rendszermag vagy Linux-kernel egy nyílt Unix-szerű operációs rendszermag, amelyet Linus Torvalds finn számítástechnikus alkotott meg 1991-ben, azóta pedig Linus vezetésével számtalan fejlesztő dolgozik rajta a világ minden tájáról.

Linux kernel
A 2.6.24.4 Linux kernel bootolás közben (Knoppix 5.3.1)
A 2.6.24.4 Linux kernel bootolás közben (Knoppix 5.3.1)

FejlesztőLinus Torvalds (eredetileg, jelenleg számos közreműködő)
Első kiadás1991
Legfrissebb stabil kiadás6.5.2
(2023. szeptember 6.[1])
Legfrissebb fejlesztői kiadás6.12-rc1 (release candidate version, 2024. szeptember 29.)[2]
Programozási nyelvC, assembly
Platform
Kategóriakernel
LicencGPL
A Linux kernel weboldala
A Linux rendszermag rengeteg hardveren képes futni, bőséges szoftvertámogatása van

Linus eredetileg az Intel 386-os processzorára fejlesztette, de később számos más processzorra is alkalmazták. A Linux-kernel C-ben íródott (néhány GNU C kiegészítéssel), de tartalmaz assembly kódrészletet is (a GNU Assembler „AT&T-style” szintaxisával).

Mivel GPL licenccel fejlesztik, a Linux szabad szoftver.

A Linux-kernellel a legtöbben a GNU/Linux operációs rendszer magjaként találkoznak. Az ezen a kernelen alapuló szoftver disztribúciókat GNU/Linux disztribúcióknak nevezzük.

Története

szerkesztés

A projekt 1991 áprilisában indult, amikor Linus az azóta híressé vált üzenetét elküldte a Usenet comp.os.minix hírcsoportjára:

„(Szabad) operációs rendszert készítek (csak szórakozásként, nem lesz olyan nagy és profi, mint a gnu) 386(486) AT kompatibilis számítógépekre…” [1]

Abban az időben a GNU projekt rengeteg olyan komponenst fejlesztett, amelyek egy szabad operációs rendszerhez szükségesek, de az ő kernelük, a GNU Hurd még nem készült el. A BSD operációs rendszer körüli jogi problémák még nem tisztázódtak. Ezt a légüres teret töltötte ki a Linux-kernel, és a korlátozott képességei ellenére már a korai verziók is számos fejlesztőt és felhasználót gyűjtöttek maguk köré. A korai időkben a Minix hackerei ötleteikkel és kódolással segítették a Linux kernel fejlődését.

Ezt követően sok programozó csatlakozott a projekthez. 1991 szeptemberére elkészült a 0.01 verzió, ami már 10 239 sor kódot tartalmazott. 1991 októberében már a 0.02 verziónál járt a fejlesztés. Ugyanabban az évben decemberre elkészült a 0.11 verzió, ami az első önálló kernel volt, olyan értelemben hogy egy 0.11 verziójú linux kernelt futtató gépen le lehetett fordítani a 0.11 kernelt. Ezt követően Torvalds átvette a GNU GPL licencet. (Korábban a saját maga által barkácsolt licencet használta.)

1992 januárjában elindult az alt.os.linux newsgroup, amit két hónappal később, márciusban átneveztek comp.os.linux-ra. Ezzel egyidejűleg elkészült a 0.95 kernelverzió, ami már tudott X Window System-et (röviden X-et) futtatni.

Két évvel később, 1994 márciusában adták ki az 1.0.0 kernelt, amely már 176 250 sor kódot tartalmazott. Még egy évvel később, 1995 márciusában jelent meg az 1.2.0 verzió, ami már 310 950 sorból állt.

A linux kernel 2.0.0 verziója 1996 márciusában jelent meg. A fejlődés itt sem állt meg:

  • 1999. január: 2.2.0 verzió (1 800 847 sor)
  • 2001. január: 2.4.0 verzió (3 377 902 sor)
  • 2003. december: 2.6.0 verzió (5 929 913 sor)

Manapság már programozók ezrei vesznek részt a fejlesztésekben.

Fontos időpontok

szerkesztés
  • 1991. április – Az akkor 21 éves Linus Torvalds, elkezd dolgozni egy operációs rendszer pár egyszerű ötletén. Egy folyamat-váltóval és egy terminál-meghajtóval indul el 386-assemblyben.
  • 1991. augusztus 25. – Linus üzenetet küld a comp.os.minix hírcsoportra: [2]
"(Szabad) operációs rendszert készítek (csak szórakozásként, nem lesz olyan nagy és profi, mint a gnu) 386(486) AT kompatibilis számítógépekre. Már április óta folyamatban van, és kezd elkészülni. Örülnék bármilyen véleménynek arról, hogy mit szeretnek / nem szeretnek az emberek a minixen, mivel az én OS-em valamennyire hasonlít rá (többek között (gyakorlati okokból) a fájlrendszer fizikai elrendezése).
Jelenleg áthoztam a bash-t(1.08) és a gcc-t(1.40), és úgy tűnik, működnek a dolgok. Ez azt jelenti, hogy pár hónap múlva már lesz valami használható […] Nem – nincs benne minix kód, és többszálú fájlrendszere van. NEM hordozható (például mivel 386-os folyamatváltást használ), és valószínűleg sohasem fog AT-merevlemezeken kívül bármit is támogatni, mivel csak ilyenem van :-(.
[…] Főleg C-ben készül, de a legtöbb ember nem hívná C-nek amit írok. A 386 minden lehetőségét kihasználja, amit találtam, mivel a célom, hogy a 386-ról tanuljak. Ahogy már mondtam, MMU-t használ, lapozásra (még nem lemezen) és szegmentációra is. A szegmentáció teszi NAGYON 386-függővé (minden folyamat 64Mb-ot kap a kódnak és az adatoknak – legfeljebb 64 folyamat 4Gb-on. Ha valakinek több, mint 64Mb kell folyamatonként – az kellemetlen). […] Néhány "C" fájlom (konkrétabban az mm.c) majdnem annyira assembler, mint C. […] A minixtől eltérően én KEDVELEM a megszakításokat, így az okok elrejtése nélkül kezelem őket."
  • 1991. szeptember – Linus kiadja a Linux 0.01 verzióját. (10 239 sor programkód.)
  • 1991. október – Linus kiadja a Linux 0.02 verzióját.[3]
  • 1991. december – Linus kiadja a Linux 0.11 verzióját. Ez az első olyan verzió, ami alól le lehet magát fordítani.
  • 1992. január 19. – Az első üzenet az alt.os.linux hírcsoporton. [4]
  • 1992. március 31. – Létrehozzák a newsgroup comp.os.linux hírcsoportot. [5]
  • 1992. március – A Linux 0.95 verziója az első, ami képes az X Window System futtatására.
  • 1993 és 1994 eleje – 15 0.99.* fejlesztői verzió. A 0.99.11 (1993. július) bevezette a kernelbe a BogoMipset.
  • 1994. március 14. – A Linux 1.0.0 kiadása. (176 250 sor programkód.)
  • 1995. március – A Linux 1.2.0 kiadása (310 950 sor programkód.)
  • 1996. május 9. – Tuxot, a pingvint javasolják a Linux kabalájának
  • 1996. június 9. – A Linux 2.0.0 kiadása. (777 956 sor programkód.)
  • 1999. január 25. – A Linux 2.2.0 kiadása, először számos hibával(1 800 847 sor programkód.)
  • 1999. december 18.IBM nagyszámítógép javítások a 2.2.13-hoz. Ezzel Linux bekerült a legnagyobb vállalkozásokhoz.
  • 2001. január 4. – A Linux 2.4.0 kiadása. (3 377 902 sor programkód.)
  • 2003. december 17. – A Linux 2.6.0 kiadása. (5 929 913 sor programkód.)
  • 2005. június 17. – A Linux 2.6.12 kiadása.
  • 2005. augusztus 29. – A Linux 2.6.13 kiadása. [6]
  • 2006. június 17. – A Linux 2.6.17 kiadása. [7]
  • 2009. március 23. – A Linux 2.6.29 kiadása [8]
  • 2009. június 9. – A Linux 2.6.30 kiadása [9]

Linus ma is tovább fejleszti a saját kódját, beépíti más programozók változtatásait, és kiadja a Linux kernel újabb és újabb verzióit. Ezeket "vanilla" (hagyományos) kerneleknek nevezzük, ami azt jelzi, hogy senki sem változtatott rajtuk. Sok GNU/Linux operációs rendszer szállítója módosítja a kernelt a termékeikhez, főleg olyan illesztőprogramok és szolgáltatások hozzáadásával, amiket még nem adták ki "stabil" csomagok részeként. Néhány disztribúció, mint például a Slackware, hagyományos kerneleket használnak.

A verziók számozása

szerkesztés

A Linux kernel verziószámozása jelenleg négy számból áll, a sokáig használt három szám helyett. Tegyük fel például, hogy a verziószám a következő: A.B.C[.D] (például 2.2.1, 2.4.13 vagy 2.6.12.3).

  • Az A szám a kernel verzióját jelöli. Ez változik a legritkábban, és csak akkor, ha a programkódban és a kernel koncepciójában nagy változás történik. A kernel történetében négyszer változott: 1994 március 14 (1.0 verzió), 1996 június 9 (2.0 verzió), 2011 július 22 (3.0 verzió), 2015 április 12 (4.0 verzió).
  • A B szám a kernel nagy átdolgozását jelöli. A páros számok stabil kiadásokat jelölnek, tehát olyanokat, amiket megfelelőnek találnak mindennapi használatra, például 1.2, 2.4, vagy 2.6. A páratlan számok fejlesztői kiadások, mint például az 1.1, vagy a 2.5. Új szolgáltatások és illesztőprogramok tesztelésére szolgálnak, amíg azok megfelelően stabilak nem lesznek, hogy bekerüljenek egy stabil kiadásba.
  • A C szám a kernel kisebb átdolgozását jelöli. A régi háromszámos rendszerben ez biztonsági javítások, hibajavítások, új szolgáltatások és illesztőprogramok hozzáadásakor változott. Az új rendszerben azonban már csak új illesztőprogramok és szolgáltatások bevezetésekor változik; a kisebb javításokat a D szám jelöli.
  • A D szám először akkor jelent meg, mikor egy súlyos, azonnali javítást igénylő hiba lépett fel a 2.6.8 Network File System (hálózati fájlrendszer) kódjában. Azonban nem volt elég változtatás, hogy egy új kisebb átdolgozást adjanak ki (ami a 2.6.9 lett volna). Így kiadták a 2.6.8.1-et, amiben az egyetlen változtatás a hiba kijavítása volt. A 2.6.11-től kezdve ezt a rendszert vezették be hivatalos számozásként. A hibajavításokat és biztonsági frissítéseket most a negyedik szám jelzi, a nagyobb változtatások pedig csak az új C számmal jelzett verziókba kerülnek be.

Stabil verziók

szerkesztés
  • Az 1994. márciusi 1.0 verzió csak egy processzoros i386 gépeket támogatott.
  • Az 1996. márciusi 1.2 verzió már támogatta az Alpha, SPARC és MIPS gépeket is.
  • Az 1996. júniusi verzió már a szimmetrikus többprocesszoros rendszereket, illetve újabb processzorokat is támogatott.
  • Az 1999. januári 2.2 verzió (The Wonderful World of Linux 2.2).
  • A 2001. januári 2.4.0 verzió
  • A 2003. december 17-ei 2.6 verzió
    • uClinux (mikrovezérlőkhöz) integráció
    • CPU támogatás: a Hitachi cég H8/300 sorozata, a NEC v850 processzora, és a Motorola beépített m68k processorai, NUMA támogatás, a NCR Voyager architektúrájának támogatása, az Intel hyperthreading és PAE ("Physical Address Extension" – fizikai cím bővítés) technológiáinak támogatása
    • Az ALSA hang illesztőprogram integrációja
    • OS támogatás:
      • APIC támogatás fejlődött.
      • Megemelték a felhasználók és felhasználói csoportok maximális számát 65,000-ről 4 milliárd fölé.
      • Megemelték a folyamatazonosítók számát 32,000-ről egy milliárdra.
      • Megemelték az eszköztípusok ("nagyobb eszközök") számát 255-ről 4095-re és az egy típusba tartozó eszközök ("kisebb eszközök") számát 255-ről több mint egymillióra.
      • Fejlődött a 64 bites rendszerek és a 16 terabyte-nál nagyobb fájlrendszerek támogatása átlagos hardveren.
      • Fejlődött az interaktív folyamatok "általános válaszideje" (a kernel teljesen preemptív lett, és az I/O ütemezőt újraírták).
      • A futexek támogatása, a szálak infrastruktúrájának újraírása – így használhatóvá vált a Native POSIX Thread Library (NPTL).
      • Fejlődött a modulok betöltése.
      • A User Mode Linux integrációja.
      • 2.6.11: Infiniband támogatás
    • Adattárolás
      • LVM frissítése 2. verzióra
      • A SGI XFS fájlrendszerének támogatása.
      • Egy sysfs-nek nevezett új "rendszer fájlrendszer", ami a procfs-től vette át a rendszerrel kapcsolatos információk kezelését.
      • 2.6.12 (2005. június 17.) iSCSI támogatás
      • 2.6.13 inotify támogatás
    • (további változások a következő (angol) cikkben: The Wonderful World of Linux 2.6)

Karbantartás

szerkesztés

Linus Torvalds a legújabb programkódok felügyeletét végzi, és ő adja ki a tesztelésre szánt kernel verziókat. A régebbi verziók karbantartásával több programozót bízott meg:

Kernel sorozat Karbantartó
2.0 David Weinehall
2.2 Marc-Christian Petersen (korábban Alan Cox)
2.4 Marcelo Tosatti
2.6 Andrew Morton
3.2 Ben Hutchings
3.4 Li Zefan
3.10 Willy Tarreau
3.12 Jiri Slaby
3.16 Ben Hutchings
3.18 Sasha Levin
4.1 Sasha Levin
4.4 Greg Kroah-Hartman
4.9 Greg Kroah-Hartman
4.14 Greg Kroah-Hartman

Egyéb Linux kernelprogramozók, többek között Robert Love, Molnár Ingó, és Miguel de Icaza. (A Linux KARBANTARTÓK fájlja).

Jogi kérdések

szerkesztés

Torvalds kezdetben olyan licenc alatt adta ki a Linuxot, ami minden nemű kereskedelmi felhasználást tiltott. Azonban hamarosan váltott a GNU GPL licencre, amely megengedi a Linux terjesztését és kereskedelmi forgalmazását akár érintetlen akár módosított formában, azzal a feltétellel, hogy az így keletkező terméket csak a GNU GPL licenc alatt szabad terjeszteni és minden esetben mellékelni kell a teljes forráskódot.

A licencváltást Torvalds később úgy jellemezte, hogy az volt a legjobb dolog, amit valaha tett: Making Linux GPL'd was definitely the best thing I ever did.

GPL 3 verzió

szerkesztés

A Linuxot jelenleg a GNU GPL 2 verziója alatt adják ki. Vitatott, hogy könnyen át lehetne-e állni a GPL 3 verzióra, illetve hogy egyáltalán szükség-e ez a lépés. A 2.4.0 kernelverzió kiadásakor Torvalds nyomatékosan kijelentette, hogy az ő összes kódjára a GPL 2 vonatkozik. 2006 szeptemberében végeztek egy felmérést 29 kulcsfontosságú kernelfejlesztő körében arról, hogy melyik licencverzió tetszik nekik jobban. A megkérdezett 29-ből 28 személy találta a GPL 2 verziót szimpatikusabbnak a GPL 3-nál, tehát Torvalds nincs egyedül a véleményével.

Betölthető kernelmodulok

szerkesztés

Megoszlanak a vélemények arról, hogy a betölthető kernelmodulok vajon származtatott munkának számítanak-e és azáltal a GNU GPL alá esnek-e. Richard Stallman szerint a forráskód nélkül terjesztett kernelmodulok által a Linux megszűnik szabad szoftvernek lenni és ezek a kernelmodulok megszegik a GPL-t. A Linux közösség véleménye sokféle, maga Torvalds is egyrészt kijelentette, hogy minden kernelmodul definíció szerint származtatott munkának minősül, tehát a GPL vonatkozik rá, azonban arra is rámutatott, hogy vannak driverek, amelyeket eredetileg nem is Linuxra írtak és nem is használnak ki semmilyen Linux-specifikus működést.

A Linux szó bejegyzett védjegy az Egyesült Államokban és néhány más országban is. Erre azért volt szükség, mert egy illetéktelen személy bejegyeztette a nevet és pénzt kezdett követeleni a használatáért. Linux támogatók egy csoportja bírósághoz fordult az ügyben, melynek eredményeként 1997 augusztusában a védjegy Torvalds birtokába került. [10]

Technikai jellemzők

szerkesztés
 
A Linux kernel-interfészek: System Call Interface, Linux Standard Base és a két kernel belsőségei. A SCI kb. 380 rendszerhívást tartalmaz

Architektúra

szerkesztés

A Linux kernel technikailag valódi többfeladatú (multitasking), virtuális memóriát és osztott könyvtárakat használó, demand loading, shared copy-on-write futtatható állományokat támogató, helyes memóriakezelésű, TCP/IP hálózatot kezelő rendszermag.

Ma a Linux egy modulokra épülő monolitikus kernel. A meghajtóprogramok és kernel-kiterjesztések általában ring 0 módban futnak, teljes hozzáféréssel a hardverhez, pár kivétel azonban felhasználói térben (user space) fut. A szokványos monolitikus kernelektől eltérően az eszközillesztő-programokat könnyű beállítani, mivel a modulok a rendszer futása közben betölthetőek és eltávolíthatóak. Még egy különbség a Linux és a szokványos monolitikus rendszermagok között, hogy az illesztőprogramok bizonyos feltételek mellett preemptíven kezelhetőek. Az utóbbi szolgáltatást a hardveres megszakítások megfelelő kezeléséhez, és a szimmetrikus multiprocesszoros rendszerek jobb támogatásáért adták hozzá a kernelhez. A preempció javítja a rendszer válaszadási idejét is, alkalmasabbá téve a Linuxot valós idejű alkalmazások futtatására.

A tény, hogy a Linux nem egy mikrokernel egy híres flame war tárgya volt Linus Torvalds és Andy Tanenbaum között 1992-ben a comp.os.minix hírcsoporton.[11][12][halott link]

A Linux kernel számos verziójának forráskódja elérhető a https://web.archive.org/web/20050923210216/http://lxr.linux.no/ címen.

Alkalmazási szoftver (bash, LibreOffice, Blender, Tremulous) User Mode
Átfogó programkönyvtárak (GTK+, Qt, SDL, EFL) Anwenderprogramme
Szimpla programkönyvtárok Szimpla programkönyvtárak sin, opendbm Alkalmazási szoftver
C standard library: glibc/uClibc open, exec, sbrk, socket, fopen, calloc
System calls: TRAP, CALL, BRK, INT, IOCTL (depends on the hardware) Kernel Mode
Linux rendszermag & (Hardver-illesztőprogramok, process-scheduler, hálózati stack, fájlrendszer)
Hardver (CPU(s), memória, más mikroprocesszorok, eszközök)

Kernelpánik

szerkesztés

A kernelpánik olyan kernel szintű hiba esetén lép fel, amikor a kernel nem képes tovább működni. A kernelkódból meghívható a sys/system.h headerben definiált panic() függvény, ami ezt az állapotot jelzi. A kernelpánik leggyakrabban lekezeletlen kernelkód kivételekből adódik, mint például az érvénytelen memóriaterületre való hivatkozás. Ritkább esetben hardverhiba is kiválthatja a kernelpánikot.

Programozási nyelvek

szerkesztés

A Linux kernel a C programozási nyelv GNU GNU Compiler Collection által támogatott verzióban íródott (ami nem korlátozódik a szabványos C-re), kiegészítve viszonylag rövid Assembly programozási nyelv hardverspecifikus részekkel (a legutóbbi számláláskor a Linux körülbelül 20 különböző processzor-családot támogatott). A GCC által támogatott C-kiegészítések (és a kapcsolódó eszközök) miatt sokáig csak a GCC-vel lehetett a Linux kernelt helyesen lefordítani. Az Intel állításai szerint megváltoztatta a C fordítóját úgy, hogy már az is képes a kernel fordítására.

Sok más programnyelvet is használnak valamilyen módon, elsősorban a kernel fordításakor (mikor a forrásokból létrehozzák a bootolható képet). Ezek a nyelvek többek között a Perl, Python, és számos shell script programnyelv. Néhány illesztőprogram íródhat C++-ban, Fortranban, vagy más nyelveken, de ez nem ajánlott.

Hordozhatóság

szerkesztés

Bár eredetileg nem szánták hordozható operációs rendszernek, a Linux ma az egyik legtöbb architektúrán használható rendszermag (bár a NetBSD megközelíti). Fut az iPAQ rendszerektől (egy kézi számítógép) kezdve az IBM System z9-én (egy nagyszámítógép szerver, ami több száz, vagy akár több ezer Linuxot is képes futtatni). A tervek szerint az IBM új Blue Gene szuperszámítógép architektúrájának elsődleges operációs rendszere a Linux lesz. Linus, talán humorosan, beépítette a kernelbe a BogoMipset, mint a rendszer teljesítményének mérésére alkalmas (ál)eszközt.

Fontos megjegyezni, hogy Linus erőfeszítései egy másfajta hordozhatóság terén is kifizetődtek. A hordozhatóság Linus szerint az volt, hogy a rendszeren bármilyen forrásból származó alkalmazást könnyű legyen lefordítani. Így a Linux eredetileg részben azért vált népszerűvé, mert ezen a rendszeren került a legkisebb erőfeszítésbe a népszerű GPL licencű és más nyílt forráskódú alkalmazások üzembehelyezése.

A Linux jelenleg a következő architektúrákon fut:

A támogatott rendszerek teljes listája elérhető itt: Linux Ports.

Támogatott bináris formátumok

szerkesztés

A Linux 1.0 még csak az a.out bináris formátumot támogatta. Az 1.2 sorozatban jelent meg az ELF (Executable and Linkable Format) formátum támogatása, amellyel egyszerűbben lehet kezelni a megosztott könyvtárakat (shared library).

Eredetileg, a linux csak a kernel neve volt. A "kernel" attribútumot olyan alacsony szintű rendszerprogramoknak adják, amelyek tartalmaznak egy hardver absztrakciós réteget, lemez- és fájlrendszervezérlést, többfelhasználós üzemmódot, terheléskiegyenlítést, hálózati támogatást és biztonsági modulokat.

A kernel önmagában még nem teljes értékű operációs rendszer (a szó szoros értelmében).

A teljes rendszert, mely a Linux kernel köré épült, gyakran Linux operációs rendszerként említik, bár egyesek ragaszkodnak a GNU/Linux elnevezéshez és ez alapján alakult ki a GNU/Linux elnevezési vita.

Egyesek néha keverik a kernel és az operációs rendszer fogalmakat és ez számos téveszméhez vezet pl ahhoz, mely szerint Torvalds valaha írt vagy karbantartott volna más részeket is a rendszerben, mint a kernel.

A Linux-kabala egy Tux nevű pingvin, Larry Ewing alkotása.

A Tux pingvinnek sok változata létezik, néhány 3 dimenzióban.

A kabala azért a pingvin, mert, ahogy Torvalds mondta, "Linus szereti a pingvineket. Ennyi." A Tux nevet a (T)orvalds (U)ni(X) rövidítéseként javasolták.[13]

  • Torvalds, Linus; Diamond, David (2001). Just For Fun: The Story of an Accidental Revolutionary. HarperBusiness. ISBN 0-06-662072-4 (hardcover); HarperAudio ISBN 0-694-52539-1 (audio tape, abridged ed., read by David Diamond) – on the beginnings of the Linux kernel
  • [14], Nikolai Bezroukov. Portraits of Open Source Pioneers. Ch 4: A benevolent dictator (Softpanorama e-book).
  • LinkSys and binary modules, LWN.net Weekly Edition, October 16, 2003.
  • Revolution OS – a documentary on the history of Linux featuring several interviews with prominent hackers, including Torvalds
  • LinkSys and binary modules, LWN.net Weekly Edition, October 16, 2003.
  1. Linux Kernel Organization, Inc.: The Linux Kernel Archives. (Hozzáférés: 2020. február 4.)
  2. Linus Torvalds: Linux 6.12-rc1, 2024. szeptember 29. (Hozzáférés: 2024. szeptember 29.)

További információk

szerkesztés
Az angol Wikikönyvekben
további információk találhatók
A Wikimédia Commons tartalmaz Linux (rendszermag) témájú médiaállományokat.

The following are to be merged

Hivatkozások a kernellel kapcsolatos anyagokra

szerkesztés