Nothing Special   »   [go: up one dir, main page]

Ugrás a tartalomhoz

Linux (rendszermag)

A Wikipédiából, a szabad enciklopédiából
A lap korábbi változatát látod, amilyen Abesto (vitalap | szerkesztései) 2007. augusztus 25., 09:46-kor történt szerkesztése után volt. Ez a változat jelentősen eltérhet az aktuális változattól. (Hordozhatóság: fordítás angolról)
Linux kernel
[[Fájl:Tux|250px]]

FejlesztőLinus Torvalds (eredetileg, jelenleg számos közreműködő)
Legfrissebb stabil kiadás2.6.21.5
(2007. június 11.)
Legfrissebb fejlesztői kiadás6.12-rc7 (release candidate version, 2024. november 10.)[1]
Programozási nyelvC
Platform
Kategóriakernel
LicencGPL
A Linux weboldala

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, és azóta össznépi erővel fejlesztik emberek a világ minden tájáról.

Linus erdetileg az Intel 386-os processzorára fejlesztette, de később számtalan 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 forráskódja 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

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:

„I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones…” [1]
„(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…” [2]

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 nevű 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. Ugyan abban 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.

Verziók

Verziószámozás

A linux kernel verzióinak sorszámozása a közelmúltban 3 számjegyűről 4 számjegyűre változott. Jelölje most A.B.C.D egy kernel verzióját (például 2.6.12.3):

  • Az A szám jelöli a kernel verzióját. Ez csak akkor változik, ha vagy nagy mértékű kódváltozás vagy elvi változtatás történik a kernelben.
  • Az B szám a főrevízió sorszáma.
  1. A 2.6.x előtti verziókban a páros szám jelölte a stabil verziót, a páratlan a kísérletit.
  2. A 2.6.x utáni verziókban már nincs jelentősége a paritásnak.
  • A C szám a mellékrevízió sorszáma. Korábban, a háromszámos konvenciónál, ez a szám minden hibajavításnál vagy biztonsági frissítésnél változott, de ma már csak új driverek vagy új feature-ök esetén indokolt a növelése.
  • A D számot használják hibajavítások vagy biztonsági frissítések követésére.

Karbantartá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

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

Licenc

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ó

A Linux jelenleg a GNU GPL 2 verziója alatt kerül kiadásra. 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

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.

Védjegy

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. [3]

Technikai jellemzők

Architektúra

A linux kernel egy monolítikus kernel.

Kernelpánik

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

A Linux kernel túlnyomó része a GCC fordító által támogatott C programozási nyelven íródik. Kisebb, hardverspecifikus részek assembly programozási nyelven íródnak.

Hordozhatóság

Bár a Linuxot eredetileg nem hordozhatóra tervezték, mára mégis az egyik legszélesebb körben portolt kernelek közé tartozik.

Támogatott bináris formátumok

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 a megosztott könyvtárakat (shared library).

Eredetileg, a linux csak a kernel neve volt. A "kernel" attribútumot olyan alacsonyszintű rendszerprogramoknak adják, amelyek tartalmaznak egy hardver absztrakciós réteget(hardware abstraction layer), lemez- és fájlrendszervezérlést, többfelhasználós üzemmódot (multi-tasking), töltés kiegyenlítést (load-balancing), hálózati támogatást (networking) é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.

Fontos időpontok

  • 1991. ápr. - 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. aug. 25. - Linus üzenetet küld a comp.os.minix hírcsoportra: [4]
"Elkezdtem egy (szabad) operációs rendszert (csak hobbi, nem lesz nagy és professzinális, mint a gnu) 386(486) AT klónokra. 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ó (pl. 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.[5]
  • 1991. december - Linus kiadja a Linux 0.11 verzióját. Ez az első olyan verzió, alól le lehet magát fordítani.
  • 1992. január 19. - Az első üzenet az alt.os.linux hírcsoporton. [6]
  • 1992. március 31. - Létrehozzák a newsgroup comp.os.linux hírcsoportot. [7]
  • 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ávak(1,800,847 sor programkód.)
  • 1999. december 18. - nagygé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.)

Verziók

Linus 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ához, amiket még nem adták ki, mint "stabil". Néhány disztribúció, mint például a Slackware, hagyományos kerneleket használnak.

A verziók számozása

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] (pl. 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 kétszer változott: 1994-ben (1.0 verzió) és 1996-ban (2.0 verzió).
  • A B szám a kernel nagy átdolgozását jelöli. number denotes the major revision of the kernel. 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

  • A 2003. december 17-i 2.6 verzió
    • uClinux (mikrokontrollerekhez ) 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 billió fölé.
      • Megemelték a folyamatazonosítók számát 32,000-ről 1 billióra.
      • 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 terrabyte-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)

Felépíté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égegy 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.[10][11]

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

Programnyelvek

A Linux kernel a C programozási nyelv GNU GCC á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 a különböző támogatott architektúrákra (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

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). Futa az iPAQ rendszerektől (egy kéziszámítógép) kezdve az IBM System z9-én (egy nagygé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 Linux 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 licenszű é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.


A szócikk egy része még lefordítandó. Segíts te is a fordításban!

Források

  • Torvalds, Linus; Diamond, David (2001). Just For Fun: The Story of an Accidental Revolutionary. HarperBusiness. ISBN 0066620724 (hardcover); HarperAudio ISBN 0694525391 (audio tape, abridged ed., read by David Diamond) – on the beginnings of the Linux kernel
  • [12], 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.

Külső hivatkozások

A magyar Wikikönyvekben
további információk találhatók
Linux témában.
Fájl:Commons-logo.svg
A Wikimédia Commons tartalmaz Linux (rendszermag) témájú médiaállományokat.

The following are to be merged

Linux 2.6

Hivatkozások a kernellel kapcsolatos anyagokra

  1. Linus Torvalds: Linux 6.12-rc7, 2024. november 10. (Hozzáférés: 2024. november 10.)