thumb|300px|Nucleul Linux e utilizat ubicuitar pe diferite tipuri de hardware și este suportat de o abundență de software, liberă și proprietară

Nucleul Linux (în engleză „kernel”) reprezintă nucleul sistemului de operare deschis care a fost creat de Linus Torvalds în 1991 și care a fost îmbunătățit ulterior cu ajutorul programatorilor din întreaga lume.

Acesta a fost dezvoltat inițial pentru microprocesorul Intel 80386, însă ulterior a fost portat pe multe alte platforme. Este scris aproape în întregime în limbajul de programare C, împreună cu niște extensii GNU C și cu câteva linii de cod scrise în limbajul de asamblare.

Dezvoltat sub licența GNU GPL (GNU General Public License), codul sursă al nucleului Linux este software liber.

Nucleul este cel mai bine cunoscut ca fiind principala componentă a sistemului de operare GNU/Linux. Distribuțiile de software bazate pe nucleul Linux se numesc Distribuții GNU/Linux.

Istorie Proiectul a fost lansat în anul 1991 cu faimosul mesaj apărut în rețeaua Usenet comp.os.minix care includea următoarea frază:

"Creez un sistem de operare (liber) - e doar o pasiune, nu va fi la fel de mare și de profesional ca GNU - pentru calculatoarele compatibile AT 386(486)..."

Până în acel moment, proiectul GNU crease multe componente necesare unui sistem de operare liber, dar nucleul său, numit "GNU Hurd", nu era complet si nici disponibil. Sistemul de operare BSD nu era încă eliberat de constrângerile legale, ceea ce a permis nucleului Linux să umple golul respectiv și, deși avea inițial o funcționalitate limitată, a atras comunitatea dezvoltatorilor de software și a utilizatorilor. Până astăzi, mii de programatori și-au adus contribuția la codul sursă al nucleului.

La început, "Linux" a fost numele nativ al nucleului. Termenul "nucleu" inseamnă aplicația de sistem de nivel scăzut ("low-level") care creează nivelul de abstractizare a componentelor hardware, controlează accesul la hard-disc și la sistemul de fișiere, permite lucrul multitasking, accesul distribuit și la rețeaua (locală), constrângerile de securitate informatică. Nucleul Linux nu este un sistem de operare complet (cum este el cunoscut în mod uzual). Un sistem complet bazat pe nucleul Linux este mai cunoscut ca "Linux", deși unii preferă să-l numească GNU/Linux. Există și o controversă privind modul de referire la acest sistem de operare. Oamenii fac deseori confuzie între nucleul și sistemul de operare Linux, ceea ce poate duce la apariția unor termeni greșiți, cum ar fi ideea că Linus Torvalds a scris sau a coordonat și alte componente ale sistemului de operare, în afară de nucleu.

Evoluție Aprilie 1991 - Linus Torvalds, la vârsta de 21 de ani, începe să se gîndească la un sistem de operare simplu. A pornit cu crearea unui comutator de task-uri de sistem (folosind instrucțiunile procesorului Intel 386) și a unui driver de terminal. 25 august 1991 - Linus a trimis mesajul la grupul de știri comp.os.minix: "Scriu un sistem de operare (gratuit) (e doar un hobby, nu va fi mare și profesional ca gnu) pentru clone de 386(486) AT. Mă gândesc la asta din aprilie, și începe să fie gata. Aș dori orice fel de feedback referitor la lucruri care plac/displac oamenilor la minix, fiindcă SO-ul meu i se aseamnănă cumva (aceeași structură fizică a sistemului de fișiere (din motive practice) printre altele).

Tocmai am portat bash(1.08) și gcc(1.40), și se pare că merg. Asta înseamnă că o să obțin ceva practic în câteva luni [...] Da - nu are nici un pic de cod minix, și are un sistem de fișiere multi-thread. NU este portabil (folosește comutare de task 386 etc), și probabil că nu va suporta niciodată alt harddisk decât AT, fiindcă altceva nu am :-(.

[...] E scris cel mai mult în C, dar mulți n-ar numi C ceea ce scriu eu. Folosește fiecare feature al lui 386 pe care m-am putut gândi, fiindcă a avut și scopul de a mă învăța pe mine despre 386. Cum am mai spus, folosește un MMU, atât pentru paginare (nu pe disc încă) și segmentare. Segmentarea e cea care îl face cu ADEVĂRAT dependent de 386 (fiecare task are un segment de 64Mb pentru cod & date - maxim 64 task-uri în 4Gb. Oricui îi trebuie mai mult decât 64Mb/task - ghinion). [...] Unele din fișierele mele "C" (mai ales mm.c) au cam tot atâta limbaj de asamblare cât C. [...] Spre deosebire de minix, mie îmi cam PLAC întreruperile, deci întreruperile sunt tratate fără a se încerca ascunderea motivului din spatele lor" Septembrie 1991 - Este lansat Linux versiunea 0.01. (10.239 linii de cod.) Octobrie 1991 - Este lansat Linux versiunea 0.02. Decembrie 1991 - Este lansat Linux 0.11. Această versiune este prima versiune self-hosted. (adică: se poate compila Linux 0.11 sub Linux 0.11) 19 Ianuarie 1992 - Primul post pe alt.os.linux newsgroup. 31 Martie 1992 - Newsgroup-ul comp.os.linux este creat. Martie 1992 - Linux versiunea 0.95 este prima versiune capabilă de a rula X Window System. Anul 1993, și începutul anului 1994 - 15 versiuni în dezvoltare 0.99.*, cu 0.99.11 (Iulie 1993) introducând BogoMips în nucleu 14 Martie 1994 - Este lansat Linux 1.0.0. (176.250 linii de cod.) Martie 1995 - Este lansat Linux 1.2.0 (310.950 linii de cod.) 9 Mai 1996 - Pinguinul Tux este propus ca mascotă Linux 9 Iunie 1996 - Este lansat Linux 2.0.0. (777.956 linii de cod.) 25 Ianuarie 1999 - Este lansat Linux 2.2.0, la început cu multe defecte. (1,800,847 linii de cod.) 18 Decembrie 1999 - Patchuri pentru IBM mainframe pentru 2.2.13 sunt publicate, aducândîn cele mai mari întreprinderi. 4 Ianuarie 2001 - Este lansat Linux 2.4.0. (3.377.902 linii de cod.) 17 Decembrie 2003 - Este lansat Linux 2.6.0. (5.929.913 linii de cod.) 17 Iunie 2005 - Este lansat Linux 2.6.12. 29 August 2005 - Este lansat Linux 2.6.13. 28 Octombrie 2005 - Este lansat Linux 2.6.14 cu aceste modificări.

Versiuni

Dezvoltând mai departe propriul cod și integrând modificări operate de alți programatori, Linus Torvalds continuă să lanseze noi versiuni ale nucleului Linux. Aceste versiuni se numesc nucleuri vanilla, însemnând că nu au fost modificate pentru nimeni. Mulți furnizori de sisteme de operare GNU/Linux își modifică kernelul produsului lor, în principal pentru a adăuga suport pentru drivere sau feature-uri care nu au fost oficial etichetate ca stabile, în timp ce alte distribuții, cum ar fi Slackware, se bazează pe nucleuri vanilla.

Numerotarea versiunilor

Numărul de versiune al nucleului Linux constă în prezent din patru numere, ca urmare a unei recente modificări în vechea politică a schemei de versiuni cu trei numere. De exemplu, să presupunem că numărul versiunii se compune astfel: A.B.C[.D] (de ex. 2.2.1, 2.4.13 sau 2.6.12.3).

Numărul A reprezintă versiunea de nucleu. Este schimbat cel mai rar, și doar când au loc schimbări majore în cod și în concepția nucleului. El a fost modificat de două ori în istoria nucleului: În 1994 (versiunea 1.0) și în 1996 (versiunea 2.0).

Numărul B reprezintă revizia majoră a nucleului. Numerele pare indică un release stabil, adică unul considerat potrivit pentru producție, cum ar fi 1.2, 2.4 sau 2.6. Numerele impare sunt release-uri în dezvoltare, cum ar fi 1.1 sau 2.5. Ele sunt folosite pentru testarea feature-urilor și driver-elor noi până când acestea devin suficient de stabile pentru a fi incluse într-un release stabil.

Numărul C indică revizia minoră a nucleului. În vechea schemă de versiuni, cu trei numere, aceasta era modificată când erau implementate în nucleu patch-uri de securitate, bufix-uri, feature-uri noi sau driver-e. În noua politică, însă, ea nu se modifică decât la introducerea de noi feature-uri sau driver-e; reparațiile minore sunt tratate de numărul D.

Un număr D a apărut prima oară când a fost detectată o eroare gravă, care a necesitat reparare imediată, în codul de NFS din 2.6.8. Totuși, nu erau suficiente alte modificări pentru a justifica lalnsarea unei noi revizii minore (care ar fi fost 2.6.9). Astfel, s-a lansat 2.6.8.1, singura modificare fiind repararea acelei erori. Odată cu 2.6.11, aceasta a fost adoptată ca noua politică oficială de versionare. Bugfix-urile și patch-urile de securitate sunt acum tratate de al patrulea număr, pe când modificările mai mari sunt implementate în schimbările reviziilor minore (numărul C).

Oamenii

În timp ce Linus Torvalds supervizează modificările codului și release-urile ultimelor versiuni de nucleu, el a delegat mentenanța versiunilor mai vechi altor programatori:

Versiunea nucleului Menținător 2.0 David Weinehall 2.2 Marc-Christian Petersen (fost Alan Cox) 2.4 Marcelo Tosatti 2.6 Andrew Morton / Linus Torvalds

Alți programatori de nucleu linux sunt Robert Love și Ingo Molnar . (Vezi fișierul cu echipa de mentenanță Linux).

Istoria versiunilor stabile Versiunea 1.0 din Martie 1994 suporta doar mașini cu un singur procesor i386. Versiunea 1.2 din Martie 1995 a adăugat suport pentru Alpha, Sparc și Mips. Versiunea 2.0 din Iunie 1996 a adăugat suport pentru mai multe familii de procesoare și a inclus suport pentru SMP. Versiunea 2.2 din Ianuarie 1999 (Minunata lume a Linux 2.2 ).

Versiunea 2.4.0 din Ianuarie 2001 Suport pentru procesoare: procesorul Hewlett-Packard PA-RISC, procesoarele ETRAX CRIS ("Code Reduced Instruction Set") de la Axis Communications adăugat ISA Plug-and-Play adăugat suport pentru USB și PC Card 2.4.6: adăugat suport Bluetooth Sisteme de fișiere și de stocare a datelor adăugat Logical Volume Manager versiunea 1 (LVM) suport pentru dispozitive RAID 2.4.15: Suport pentru sistemul de fișiere InterMezzo. Pentru mai multe informații vezi articolul: Wonderful World of Linux 2.4

Versiunea 2.6 - curentă (17 Decembrie 2003 până în prezent) integrat uClinux (pentru microcontrollere) suport pentru CPU: cu suport pentru seria H8/300 de la Hitachi, NEC v850, și procesoarele embedded m68k de la Motorola, suport NUMA, suport pentru arhitectura Voyager de la NCR, suport pentru hyperthreading și PAE ("Physical Address Extension") de la Intel integrat driverul de sunet ALSA Suport OS: Îmbunătățit suportul APIC. Mărit numpărul maxim de utilizatori și grupuri de la 65.000 la peste 4 miliarde. Mărit numărul de id-uri de procese de la 32.000 la 1 miliard. Mărit numărul maxim de tipuri de dispozitive (dispozitive majore) de la 255 la 4095 și numărul maxim de dispăzitive de fiecare tip (dispozitive minore) de la 255 la peste un milion. Îmbunătățit suportul pentru 64 de biți și sisteme de fișiere de până la 16 terabytes pe hardware comun. Îmbunătățiri la "timpii generali de răspuns" pentru procese interactive (nucleul a devenit complet preemptiv și planificatorul de I/E a fost rescris). Suport pentru futex-uri, o rescriere a infrastructurii cu fire de execuție pentru a permite utilizarea Native POSIX Thread Library (NPTL). Un încărcător de module îmbunătățit. Integrarea User Mode Linux. Suport 2.6.11 Infiniband Suport pentru stocare: LVM actualizat la versiunea 2 suport pentru sistemul de fișiere SGI XFS. Un nou sistem de fișiere sistem, numit sysfs, destinat să ușureze procfs de informațiile legate de sistem. 2.6.12 (17 Iunie 2005) suport iSCSI 2.6.13 suport inotify 2.6.14 suport FUSE (și mai multe schimbări: Minunata lume a Linux 2.6 )

Arhitectura Nucleul Linux include multitasking real, memorie virtuală, biblioteci partajate, demand loading, executabile partajate copy-on-write, gestiunea memoriei corectă, și rețele TCP/IP.