thumb|300px|A Linux rendszermag rengeteg hardveren képes futni, bőséges szoftvertámogatása van 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.
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 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…” 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 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 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: "(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. 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. 1992. március 31. – Létrehozzák a newsgroup comp.os.linux hírcsoportot. 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. 2006. június 17. – A Linux 2.6.17 kiadása. 2009. március 23. – A Linux 2.6.29 kiadása 2009. június 9. – A Linux 2.6.30 kiadása
Verziók 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 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 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ó CPU támogatás: A Hewlett-Packard PA-RISC processzora, Az Axis Communications ETRAX CRIS ("Code Reduced Instruction Set") processzorai ISA Plug-and-Play hozzáadása USB és PC Card támogatás hozzáadása 2.4.6: Bluetooth támogatás hozzáadása Fájlrendszer és adattárolás Logical Volume Manager 1-es verzió hozzáadása (LVM) RAID eszközök támogatásának hozzáadása 2.4.15: InterMezzo fájlrendszer támogatásának hozzáadása További információ ebben az (angol nyelvű) cikkben: Wonderful World of Linux 2.4 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 Hyper-threading é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 -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 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 Morton3.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 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: