Linux (kernel)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Linux
sistem de operare
Siglă
KNOPPIX booting.png
Se incarca nucleul Linux 2.6.24.4, Knoppix 5.3.1
Dezvoltator Linus Torvalds și altele
Familie POSIX
Eliberarea inițială 1.0 (13 luna martie, anul 1994 [1] )
Lansare curentă 5.13 (27 iunie 2021)
Tipul de nucleu Monolitic
Platforme acceptate Alpha AXP , Sun SPARC, Motorola 68000 , PowerPC , ARM , Hitachi SuperH, IBM S / 390, MIPS , HP PA-RISC, Intel IA-64, AMD x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8 / 300, NEC V850, Intel Quarz, Tensilica Xtensa, Analog Devices Blackfin [2]
Interfețe grafice Diverse Desktop Medii de operare pe X Window , CLI sau sisteme embedded
Tipul licenței Software gratuit
Licență GNU GPLv2
Etapă de dezvoltare În progres (dezvoltare continuă)
Site-ul web www.kernel.org

Linux este un nucleu , creat în 1991 de către Linus Torvalds și derivate din UNIX , distribuit sub licența software liber GNU GPLv2 (mai degrabă decât software - ul proprietar ), inclusiv , de asemenea mai multe firmware prin licențe non-free [3] [4] . Adesea utilizate în conjuncție cu GNU sistemul de operare , conceput de Richard Stallman , a dat naștere la Linux sistem de operare familie, pe scară largă în diferite distribuții (acces direct la kernel - ul de utilizator / administrator în modul utilizator / modul nucleu se obține prin asa-numita consola Linux ). Activitatea de dezvoltare, promovat de Linux Foundation , a condus la o standardizare cunoscut sub numele de Linux Standard Base , în timp ce o încercare de a pune în aplicare un sistem complet gratuit nucleu este reprezentat de Linux-Libre .

Istorie

În aprilie 1991 de Linus Torvalds , un finlandez informatică student la Universitatea din Helsinki , la vârsta de 21 a început să lucreze la câteva idei simple pentru un sistem de operare. A început cu un Assembly- programat schimbare de context pe un Intel 80386 procesor și un terminal de conducător auto . În acest moment, pe 25 august 1991, Torvalds a scris un post [5] , din care este raportată o traducere:

«Sunt programare un sistem de operare (gratuit și doar pentru hobby - ul, nu sunt menite să fie mare și profesional ca GNU) pentru AT 386 (486) clone. Acesta a fost în curs de pregătire din aprilie, și începe la locul de muncă. Aș dori să știu ce vă place și displace despre Minix, ca sistemul meu de operare oarecum se aseamănă (printre altele, același aspect fizic al sistemului de fișiere, din motive practice).

Am convertit shell bash (v.1.08) și CCG (v.1.40), și se pare că la locul de muncă. Aceasta denotă că voi fi obtinerea ceva și să fie difuzate în câteva luni, și aș vrea să știu ce caracteristici cei mai mulți oameni doresc. Orice sugestie este binevenită, cu toate că nu-ți pot promite că va pune în aplicare. "

Linus a început programarea kernel - ul pe o Minix arhitectura, un sistem de operare liber programat de profesorul universitar Andrew S. Tanenbaum , care mai târziu a criticat munca studentului finlandez mult.

După publicarea acestui post, mulți oameni au colaborat cu privire la dezvoltarea proiectului, iar pe 05 octombrie 1991 Linus a lansat versiunea 0.02 a kernel-ului, la aproximativ o lună după lansarea versiunii 0.01, care însă nu a fost foarte mare succes. El a scris, cu ocazia eliberării, următorul mesaj [6] :

«Regreți zilele bune ale Minix 1.1, când oamenii erau bărbați și a scris șoferii înșiși? Pierdeți un proiect bun și sunt pe moarte pentru a rupe oasele cu un sistem de operare pe care o puteți încerca să modifice în funcție de nevoile tale? Vi se pare frustrant totul funcționează pe Minix? Nu iti petreci mai multe nopți obtinerea unui program care funcționează excelent? Apoi, acest post ar trebui să fie făcută doar pentru tine

Așa cum am spus acum o lună, am de lucru pe o versiune gratuită a unei clone Minix pentru AT-386 de calculatoare. Acesta a ajuns în cele din urmă într-o etapă în care este utilizabil (deși nu poate depinde de ceea ce vrei), și sunt în favoarea de a face public surse pentru mase. Este doar versiunea 0.02 (un plasture foarte mic este gata deja), dar am început cu succes bash shell / GCC / GNU make / GNU-sed / comprese, etc.

Sursele acestui proiect al meu poate fi descărcat nic.funet.fi în directorul / pub / Linux. Folderul conține, de asemenea, unele fișiere README și un cuplu de binarele pentru a rula sub Linux (bash, update și gcc.) Sursa kernel complet este furnizat ca nici un cod din Minix a fost folosit. Sursa bibliotecilor este doar parțial liberă și, prin urmare, nu este în prezent distribuibilă. Puteți compila sistemul așa cum este și a fost găsit la locul de muncă. Heh. Sursele binare (bash și gcc) pot fi găsite în același loc în / pub / gnu.

ATENŢIE! NOTĂ! Aceste surse au nevoie de Minix-386 pentru a compila (și-gcc 1,40, sau, nu a fost testat, 1.37.1), și a stabilit în mod corespunzător la locul de muncă, deci nu este încă un sistem de sine stătător pentru cei care nu au Minix. Lucrez la asta. Trebuie, de asemenea, să fie destul de experimentat pentru a seta corect, așa că pentru cei în speranța unei alternative Minix-386, vă rog să mă ignorați. Acesta este în prezent vizează experți interesați de sistemele de operare și 386 cu acces la Minix.

Sistemul necesită un hard disc AT compatibil (IDE este bine) și EGA / VGA. Dacă sunteți interesat vă rugăm să descărcați readme și notele de predare, și / sau e-mail-mă pentru mai multe informații.

Pot (mai mult sau mai puțin) te aud intrebi „de ce?“. Hurd va fi într-un an (sau 2, sau luna viitoare, cine stie), si am deja Minix. Acesta este un program programatorului scris de un programator. M-am bucurat-l scriu, iar unele s-ar putea ca să-l verifica afară și chiar edita pentru propriile lor nevoi. Este suficient de mic pentru a înțelege, utilizarea și edita, și eu sunt curios cu privire la comentariile tale.

Mi-ar plăcea să aud de la cineva care a scris orice utilitate sau funcție de bibliotecă pentru Minix. În cazul în care eforturile tale sunt în mod liber distribuibilă (sub drepturile de autor sau chiar în domeniul public), mi-ar plăcea să aud de la tine, așa că le pot adăuga la sistem. Sunt folosind Earl Chews estdio în acest moment (mulțumiri pentru un frumos și un sistem de lucru Earl), și lucrări similare vor fi foarte binevenite. C va fi, evident, lăsat intacte. Arunca-mi o linie, dacă vrei să mă lași să utilizeze codul ".

Un grup de știri alt.os.linux a fost început , iar primul post a fost publicat pe 19 ianuarie 1992. [7] La 31 martie 1992, a devenit alt.os.linux comp.os.linux. [8]

Curând X Window System a fost portat pe Linux. Prima versiune de Linux pentru a fi capabil de a rula X a fost de 0,95 în martie 1992 Acest salt mare în numerotare în versiunea (de la 0.1x la 0.9x) sa datorat faptului că m-am simtit foarte aproape de o versiune de 1.0 cu nici o lipsă bucăți. Totuși, acest sentiment a fost prea optimist și de la 1993 până la începutul anului 1994, au fost lansate 15 versiuni ale versiunii 0.99.

La 14 martie 1994, Linux 1.0.0 a fost lansat, cu 176,250 linii de cod. În martie 1995, a fost lansat Linux 1.2.0 (310 950 de linii de cod).

Linux versiunea 2, lansat pe 09 iunie 1996, a fost urmată de alte versiuni majore, în conformitate cu versiunea 2 prefixul:

  • 25 ianuarie 1999 - Linux 2.2.0 lansat (1 800 847 de linii de cod).
  • 18 decembrie 1999 - IBM mainframe - ul patch - uri 2.2.13 au fost eliberați, ceea ce a permis Linux să fie instalat pe mașini la nivel de întreprindere.
  • 04 ianuarie 2001 - Linux 2.4.0 lansat (3 377 902 de linii de cod).
  • 17 decembrie 2003 - Linux 2.6.0 lansat (5 929 913 de linii de cod).
  • 09 octombrie 2008 - Linux 2.6.27 lansat (9 709 868 linii de cod)[9] .
  • 24 decembrie 2008 - Linux 2.6.28 a lansat (10 195 402 de linii de cod).
  • 20 octombrie 2010 - Linux 2.6.36 lansat (13 499 457 de linii de cod). [10]
  • Iulie 2011, pentru a sărbători aniversarea a 20 de la nașterea Linux, Torvalds a decis să treacă la un sistem de numerotare de 2 cifre, versiunea 3.0 a kernel-ului de eliberare. Ultima versiune a seriei 2.6 a fost 2.6.39.
    Prima lansare a noului sistem de numerotare a adoptat - 3.0 - publicată conține 14 646 952 de linii de cod.
  • 08 martie 2015 - prima versiune beta a noii versiuni 4.0 de nucleu este eliberat.
  • 12 martie 2015 - versiunea stabilă Linux 4.0 este eliberat și de acum încolo numerotarea va include numai un număr zecimal.

Dezbaterea Tanenbaum-Torvalds

Faptul că Linux este un nucleu monolitic , mai degrabă decât un microkernel a fost subiectul Tanenbaum - Torvalds dezbatere. Dezbaterea a început în 1992 , despre Linux și arhitectura nucleu , în general , pe Usenet comp.os.minix discuție grup . [11] Tanenbaum a susținut că micronucleu au fost superioare nucleele monolitice și , prin urmare , Linux a fost depășită. Spre deosebire de nucleele monolitice traditionale, conducătorii auto sunt ușor de configurat ca module de kernel și încărcate sau nu în timp ce sistemul este pornit. Acest argument a fost re- a propus la 09 mai 2006 [12] și 12 mai 2006. [13]

Descriere

Pictogramă lupă mgx2.svg Același subiect în detaliu: Kernel .

Linux kernel - ul , unul dintre cele mai de succes exemple de software open source , [14] forme de bază ale sistemelor de operare din familia Linux sau distribuții Linux . [15] A fost creată inițial în 1991 de către unii finlandezi studenții la informatică [16] , inclusiv Linus Torvalds , liderul grupului. Ulterior, dezvoltatorii și utilizatorii săi au crescut brusc și s-au alăturat proiectului de software gratuit și au contribuit la dezvoltarea noului sistem de operare. [17]

Eliberat, în mod liber descărcabil [1] și modificabil / personalizabil sub liberă GNU GPL [18] licența (împreună cu unele firmware - ul cu diferite licențe), este în mod continuu și în mod liber dezvoltat de colaboratori din întreaga lume prin intermediul ei comunitate , cu dezvoltarea că în fiecare zi are loc folosind relativă lista de discuții , într - un mod complet analog , în care protocoalele de Internet sunt dezvoltate. Linux Codul sursă este , prin urmare , disponibil pentru toată lumea și este foarte personalizabil, până la punctul de a face posibilă, în timpul fazei de compilare, pentru a exclude cod care nu este strict esențială.

Ca orice proiect care este software - ul gratuit , nucleul Linux este , prin urmare , în continuă evoluție [19] cu dimensiunea kernel - ului crește exponențial, adăugarea de noi module, noi sprijinit hardware și așa mai departe. Principala ramură de dezvoltare a kernel-ului Linux prevede că conține, de asemenea, unele părți neliberate, ascunse sau ascunse, cum ar fi unele drivere . Linux-Libre proiectul în schimb își propune ca variantă complet liberă de Linux, din care mai multe distribuții complet libere s- au născut. [20]

Pe măsură ce „inima“ a unui sistem de operare ( de bază) oferă toate funcțiile esențiale pentru sistem, în special , gestionarea memoriei primare , sistemul hardware resurse și periferice , atribuindu - le din când în când la rularea proceselor . Exemplarul kernel - ul este shell - ul , care este interfața cu utilizatorul sistemului, partea cea mai exterioară. Programe cere resurse din kernel - ul prin apeluri de sistem și nu pot accesa hardware - ul direct.

Prin urmare , este nevoie de grijă de gestionare a procesorului de timp, de comunicare și de memorie, distribuirea acestora la procesele în curs de desfășurare în conformitate cu prioritățile ( programare ), astfel realizarea multitasking . Prin urmare, suporta multitasking și este multi-utilizator : aceasta permite diferiți utilizatori (cu diferite privilegii) pentru a rula diferite programe procese simultan pe același sistem. Linux suportă în prezent , o mare parte din hardware - ul disponibil pentru PC - uri și suportă un număr foarte mare de arhitecturi (inclusiv SPARC , PowerPC , ARM și cel mai modern pe 64 de biți CPU - uri ).

Sprijină Linux multitasking cu pre-lansare (în ambele modul utilizator și modul de kernel ), memoria virtuală , bibliotecile partajate , sarcina la cerere , partajate copy-on-write executabilele, managementul memoriei , suita de protocoale Internet , și filetare . Flexibilitatea acestui nucleu îl face potrivit pentru toate cele emergente încorporate tehnologii și de asemenea , în calcul distribuit centre (cum ar fi Beowulf clusterul) până la a fi încorporată în unele recordere video digitale și telefoane mobile .

Sistem de apel interfață și Linux Standard Base

Arhitectură

Kernel-ul Linux hartă și versiunea interactivă.

Linux este un nucleu monolitic . Deși astăzi kernel - ul poate fi compilat în așa fel încât să aibă o imagine binară redusă la minimum și drivere care pot fi încărcate de module externe, arhitectura originală este în mod clar vizibile: de fapt, toți conducătorii auto trebuie să aibă o parte executat în modul de kernel , chiar cele pentru care acest lucru nu ar fi necesar la toate ( de exemplu , sistemul de fișiere drivere).

Kernel drivere și funcționează extensiile în spațiu nucleu ( inel 0 pe cele mai multe procesoare ), cu acces deplin la hardware - ul, cu toate că unele excepții funcționează în spațiu de utilizator . Sistemul grafic pe care cei mai mulți oameni folosesc cu Linux nu funcționează în spațiul nucleu. Kernel Modul Preallocation permite drivere de dispozitiv care urmează să fie preallocated în anumite condiții. Această caracteristică a fost introdusă pentru a gestiona în mod corespunzător întreruperile hardware și de a îmbunătăți suportul pentru sistemul multiprocesor simetric (SMP). Prealocarea , de asemenea , îmbunătățește latență , crește capacitatea de reacție, și face Linux mai potrivite pentru aplicații în timp real.

Portabilitate

iPodLinux în timp ce boot - area Kernel - ului.

Deși nu este proiectat inițial pentru a fi portabil , Linux este unul dintre cele mai miezurile de sistem de operare portabil, capabil să ruleze pe o gamă largă de sisteme de la iPAQ (un computer portabil) la IBM System Z9 (un mainframe de server capabil de a sute alerga sau mii de instanțe Linux concurente). Linux este sistemul de operare principal al IBM Blue Gene supercalculatoare . Linux este sistemul de operare de mai mult de 97% din sistemele din lista Top 500 supercomputere. [21] În plus, Linux a fost compilat în numeroase dispozitive portabile , cum ar fi TuxPhone și iPod Apple.

Limbaje de programare

Linux este scris în versiunea limbajului de programare C , susținută de CCG compilator (care a introdus numeroase extensii și modificări ale standardului C), împreună cu un număr de secțiuni scurte de cod scrise în Adunarea limba (sintaxa CCG cu „AT & T“ stil). Datorită extensiile C pe care le sprijină, GCC a fost pentru o lungă perioadă de timp singurul compilator capabil de compilare Linux corect. În 2004, Intel a susținut că a modificat kernel - ul , astfel încât compilatorul său C a fost , de asemenea , capabil de compilare Linux. [22]

Multe alte limbi sunt folosite într - un fel, mai ales în kernel - ul de compilare procesul (metode în care se creează o imagine de boot - abil din codul sursă). Acestea includ Perl , Python, și mai multe shell limbi. Unele drivere pot fi , de asemenea , scrise în C ++ , Fortran, sau alte limbi, însă această practică este puternic descurajată. Sistemul construi Linux suportă doar în mod oficial CCG ca atât kernel-ul și compilator de conducător auto.

Opțiuni de compilare

Nucleul Linux a configurabile opțiuni implicite care vă permit să adăugați sau caracteristici specifice de eliminare din kernel - ul în timpul construi inițiale. În timpul această ultimă fază, unii parametri implicite personalizate pot fi de asemenea configurat.

Obiecte de Kernel

Kernel elemente sunt funcții, variabile, fișiere antet și macro-uri. [23]

kernel header

Kernel antetele sunt C fișiere antet care asigură schimbul de un anumit nivel scăzut de ABI definiții nucleu între kernel și spațiul utilizator aplicații. Cele mai multe aplicații nu au nevoie de aceste antete, ele sunt numai pentru utilizarea directă de către bibliotecile de sistem, utilități și demoni nivel redus. [24]

Accesând „ make headers_install comanda“, atunci când este executat pe arborele sursa kernel - ului, exporturile fișierele header nucleu într - o formă adecvată pentru utilizarea de către programele spațiale ale utilizatorilor. [25] Când exportate, majoritatea headere kernel se găsesc în /usr/include/asm și /usr/include/linux

Kernel panică

Pictogramă lupă mgx2.svg Același subiect în detaliu: Kernel panică .
Kernel Panic

În Linux, o „panica“ este un sistem de irecuperabil eroare detectată de către nucleu, spre deosebire de erori similare detectate în spatiul utilizator modul. Kernel cod modul are capacitatea de a indica o astfel de condiție prin apelarea panic funcția declarată în antetul sys / fișierul system.h. Cu toate acestea, cele mai multe kernel panic sunt rezultatul excepții în codul de kernel, cum ar fi invalid adresă de memorie referințe. Aceasta este de obicei un indice de

  • un bug undeva în lanțul de apel care duce la panică nucleu;
  • daune hardware, cum ar fi o celulă RAM deteriorat sau erori în funcții aritmetice în procesorul cauzate de un bug procesor , un procesor supraîncălzit deteriorat;
  • un software de eroare ;
  • o eroare în parametrii furnizate de încărcătorul de boot , cum ar fi initrd , imaginea.

Formate binare sprijinite

Linux 1.0 susținea a.out format binar și ELF , care simplifică crearea bibliotecilor partajate (utilizat pe scară largă moderne medii desktop , cum ar fi KDE și GNOME [26] ). ELF este formatul standard utilizat de CCG începând cu versiunea 2.7.0 [27] astfel încât în zilele noastre a.out este foarte rar folosit.

Linux suportă multe alte formate binare, inclusiv misc binfmt pentru a asocia un fișier cu un program (cum ar fi un interpret ) pentru a executa sau de afișare acel fișier.

Arhitecturi mașină virtuală

Nucleul Linux are suport extins si ruleaza pe numeroase masini virtuale arhitecturi atât ca un „server“ si sistem de operare „client“. Mașinile virtuale imita de obicei, familia de procesoare arhitectura x86 , deși , în unele cazuri , PowerPC sau AMD64 procesoare sunt , de asemenea , emulat.

Versiuni

În timp ce în curs de dezvoltare propriul cod și integrarea modificărilor create de alți programatori, Linus Torvalds continua sa lanseze noi versiuni ale kernel-ului Linux. Acestea sunt numite versiuni „vanilie“, ceea ce înseamnă că nu au fost modificate de către oricine altcineva. Multe distribuții Linux kernel-ul pentru a modifica sistemul lor, în principal, în scopul de a adăuga suport pentru drivere sau caracteristici care nu au fost lansate oficial ca fiind stabilă, în timp ce alte distribuții folosesc un nucleu de vanilie.

modelul de dezvoltare

Modelul de dezvoltare pentru Linux 2.6 diferă foarte mult de cea a Linux 2.5. Anterior, a existat o ramură stabilă (2.4), în cazul în care au fost realizate doar modificări relativ mici și în condiții de siguranță, și o ramură instabilă (2.5), unde schimbările mai mari au permis. Acest lucru a însemnat că utilizatorii au avut întotdeauna o versiune cu cele mai recente remedieri, dar a trebuit să aștepte pentru noi completări de la sucursala 2.5. Dezavantajul acestui proces a fost că versiunea stabilă a kernel-ului, în timp, nu mai este acceptată de hardware recente, și nu aveau caracteristicile care au fost necesare treptat.

Spre sfârșitul seriei 2.5.x, unii dezvoltatori au decis să facă unele schimbări în ramura stabilă, dar acest lucru a avut ca rezultat o creștere a problemelor din seria 2.4.x de kernel. Filiala 2.5 a fost apoi declarată stabilă și redenumit 2.6. În loc să deschidă o ramură instabilă 2.7, dezvoltatorii păstrat aduce modificări majore ramura stabilă. În acest fel, modificările au fost monitorizate mai precis, rupându-le în jos în bucăți mai mici, ceea ce face noi caracteristici disponibile rapid și extinderea numărului de persoane de testare ultimul cod.

Noul model de dezvoltare care caracterizează 2.6, de asemenea, înseamnă că nu există nici o ramură stabilă pentru persoanele care sunt în căutarea doar pentru remedieri de erori sau legate de securitate, dar nu au nevoie de cele mai noi caracteristici. Remedierile sunt aplicate numai în versiunea cea mai recentă, așa că, dacă un utilizator dorește o versiune cu toate bug-uri cunoscute fixe, el devine toate cele mai recente caracteristici, în același timp, dar riscurile (în unele cazuri), unele lucruri nu mai lucrează decât în versiunea anterioară au lucrat. O corecție parțială a acestei probleme a fost menționată anterior (a se vedea a patra cifră a numărului versiunii): ea caracterizează noi boabe, dar nu rezolvă complet unele nevoi pe care nu s-ar fi folosind o ramură stabilă. Distribuții, cum ar fi Red Hat și Debian , includ deja un anumit tip de nucleu în versiunile lor: cei mai mulți oameni sunt mai bine folosind versiunile implicite.

Ca răspuns la lipsa unei sucursale nucleu stabil (conceput ca o sucursală în cazul în care nu sunt efectuate modificări noi, numai remedieri), Adrian Bunk , în decembrie 2005, a anunțat că va continua să elibereze 2.6.16.y kernel , chiar și atunci când a fost versiunea 2.6.17 a lansat. [28] De asemenea , planificate pentru a include actualizări de drivere, făcând astfel dezvoltarea seriei 2.6.16 foarte asemănătoare cu cea a vechii 2.4. [29]

La data de 10 octombrie 2008, versiunea stabilă 2.6.27 a fost lansat. [30] . În luna februarie a aceluiași an, dezvoltatorii apoi conceput o ramură de nucleu instabil, numit Linux- ul următor: un loc pentru a găzdui modificările, cu intenția de a le include în următorul ciclu de dezvoltare. [31]

În iulie 2011 de , pentru a sărbători 20 de ani de la nașterea Linux, Torvalds a decis să elibereze versiunea 3.0 a kernel - ului, trecerea la un sistem de numerotare de 2 cifre. Ultima versiune a seriei 2.6 a fost 2.6.39.

Controlul versiunii

In trecut, nucleul Linux codul sursă a fost rulat fără utilizarea unui sistem automat de control al versiunii (în management codul sursă engleză, CSM), în principal datorită faptului că Torvalds nu ca CSM centralizat.

În 2002 , dezvoltarea sâmburelui trecut la BitKeeper , un CSM care îndeplinește cerințele tehnice ale Torvalds și a fost interoperabilă, într -o oarecare măsură, cu alte sisteme , cum ar fi CVS si Subversion . Deși Torvalds și de alți dezvoltatori luat BitKeeper gratuit, faptul că nu a fost software - ul liber a provocat controverse.

Andrew Tridgell reverse engineering „s încercări pe BitKeeper convins BitMover, compania care a fugit BitKeeper, să se încheie cu sprijinul pentru comunitatea de dezvoltare Linux. În consecință, Torvalds și alții au scris un nou sistem de control al versiunii, numit git ; noul software a fost scris în câteva săptămâni, iar două luni mai târziu a fost prima versiune oficială a kernel-ului Linux lansat cu Git. [32] La scurt timp după aceea, a devenit un proiect git independent, câștigă popularitate pe scară largă în comunitatea software - ului liber.

întreținere

Linus Torvalds este supraveghetorul modificărilor și emisiile de cele mai recente versiuni de kernel: el a delegat menținerea versiunile mai vechi la alte programatori. Unele versiuni mai vechi, cum ar fi 2.0 (făcută în mod oficial depășite de către nucleu 2.2.0 lansat în ianuarie 1999) sunt actualizate numai atunci când consideră necesar și schimbările sunt foarte rare.

seria Kernel Versiune curentă supraveghetor
2.0 2.0.40 David Weinehall [33]
2.2 2.2.27-RC2 Marc-Christian Petersen [34] (fostul supervizor Alan Cox )
2.4 2.4.37-RC2 Willy Tarreau [35] (fostul supervizor Marcelo Tosatti )
2.6.16 2.6.16.62 Adrian Bunk [36]
2.6.17+ (schimbări frecvente) Linus Torvalds
2.6.x mm (Se schimbă rapid) Andrew Morton

Alte bine-cunoscute programatori kernel Linux sunt Robert Dragoste și Ingo Molnár . [37]

Versiunea de numerotare

Pentru o lungă perioadă de timp versiunea Linux kernel - ului a constat din trei cifre, dar , recent , acest sistem a fost schimbat , iar acum versiunea este format din patru cifre, sub forma „ABC [.D]“, de exemplu 2.2.1, 2.4.13, sau 2.6.12.3;

  • „A“ indică versiunea nucleului, care este modificat foarte rar și numai atunci când schimbări radicale apar în codul (până în 2008 , acest lucru sa întâmplat doar de două ori, în 1994, odată cu introducerea versiunii 1.0, iar în 1996 cu versiunea 2.0 ) sau din motive comemorative (versiunea 3, în 2011, timp de 20 de ani de kernel-ul Linux);
  • „B“ indică revizuirea „majoră“ a kernel-ului:
    • înainte de seria 2.6.x, chiar și numere (cum ar fi 1,2, 2,4 sau 2,6) au indicat o ramură stabilă și numere impare (cum ar fi 1.1 sau 2.5) ramurile de dezvoltare indicate, în cazul în care noile caracteristici și șoferii au experimentat până au fost considerate adecvată pentru a fi incluse în ramura stabilă;
    • pornind de la seria 2.6.x, diferențierea între numere impare și chiar își pierde sensul, ca dezvoltarea de noi caracteristici are loc în aceeași ramură, în scopul de a obține o dezvoltare mai liniară;
  • „C“ indică „minor“ revizuirea a kernel-ului: în vechiul sistem de numerotare, acest număr a crescut ca actualizări de securitate, remedieri de erori, caracteristici noi, sau noi drivere au fost implementate în kernel; în conformitate cu modelul actual de acest număr este modificat numai atunci când sunt introduse noi drivere sau caracteristici diferite, sub formă de corecții minore sunt numărate de la numărul marcate cu „D“;
  • utilizarea „D“ a început atunci când o problemă gravă, care necesită corecție imediată, a fost găsit în NFS codul de 2.6.8. Nu a fost nevoie de modificări pentru a justifica eliberarea unei revizuiri minore (care va deveni versiunea 2.6.9), astfel încât, 2.6.8.1 a fost lansat, cu singura corectarea acestei erori. De la 2.6.11, acest model a fost adoptat ca noua paradigmă oficială. Corecții și patch-uri de securitate sunt numărate acum ca aceasta, cu a patra cifră, în timp ce în cazul în care există mai multe schimbări substanțiale, este utilizat de-a treia cifră. Cifra „D“ este de asemenea asociat cu numărul de ori compilatorul a construit kernel-ul, și se numește „numărul de a construi“.

De asemenea, uneori, alte scrisori pot fi găsite după versiunea, cum ar fi „RC1“ sau „mm2“; „Rc“ este o versiune candidat pentru adoptare ca fiind stabilă, și indică o eliberare neoficială. Altre lettere, invece, sono spesso (ma non sempre) le iniziali di una persona: questo segnala un fork del kernel da parte di questa persona. Per esempio, la dicitura 'ck' sta per Con Kolivas , 'ac' per Alan Cox , mentre 'mm' indica Andrew Morton . Certe volte, le lettere sono collegate alla caratteristica principale del kernel. Per esempio, 'wl'indica una versione di test per le reti wireless.

Versioni storiche

La prima versione del kernel è stata la 0.01. Questa venne seguita dalla 0.02, 0.03, 0.10, 0.11, 0.12 (la prima versione rilasciata sotto licenza GNU General Public License ), 0.95, 0.96, 0.97, 0.98, 0.99, e dalla 1.0. [38] Dalla versione 0.95 a queste, sono state rilasciate numerose patch tra le versioni.

Cronologia della versione stabile

Ci sono state due versioni maggiori stabili del kernel Linux 1. x : la 1.0 e la 1.2. La versione 1.0 fu pubblicata il 14 marzo 1994 [39] Questa versione del kernel Linux era compatibile esclusivamente coi sistemi a singolo processore i386 . In seguito ci si iniziò a preoccupare anche della portabilità, e così la versione 1.2 (pubblicata il 7 marzo 1995 [40] ) incorporò il supporto per i sistemi basati su architetture DEC Alpha , SPARC , e MIPS . Questa fu l'ultima versione stabile rilasciata nella serie 1. x del kernel Linux.

La versione 2. x del kernel Linux ha visto un gran numero di cambiamenti, in particolare nella serie 2.6 e sul come viene sviluppata, mantenuta e rilasciata. Le versioni 2.0, 2.2, e 2.4 furono costruite usando il vecchio sistema di sviluppo dove ognuno dei kernel era basato sulla versione stabile di quello precedente. La versione 2.0 fu pubblicata il 9 giugno 1996 [41] . Ci furono 41 rilasci in questa serie. La principale caratteristica del kernel 2.0 era il supporto al SMP (cioè al supporto a più processori su un singolo sistema) e il supporto per più tipi di processori.

La versione 2.2 (pubblicata il 26 gennaio 1999 [42] ) rimosse lo spinlock globale, fornì un migliore supporto al multiprocessing simmetrico e aggiunse il supporto per le architetture m68k e PowerPC oltre all'aggiunta di nuovi filesystem (incluso il supporto in sola lettura per il filesystem della Microsoft NTFS ). [43] Lo sviluppo della serie 2.4. x cambiò un po'. In questa serie infatti furono rese disponibili nuove caratteristiche durante tutto lo sviluppo della serie stessa. La versione 2.4.0, pubblicata il 4 gennaio 2001, [44] conteneva il supporto per ISA Plug and play , USB , e PC Card . [45] Includeva inoltre il supporto per i processori PA-RISC della Hewlett-Packard . Durante lo sviluppo della serie 2.4. x furono aggiunte altre caratteristiche includendo: supporto Bluetooth , Logical Volume Manager (LVM) versione 1, supporto RAID , InterMezzo FS e ext3 FS .

Con l'arrivo della serie 2.6. x del kernel Linux, il sistema di numerazione cambiò in modo che ci potessero essere 4 cifre nel numero di versione del kernel, dandogli il formato 2.6. x . y (dove. y è opzionale). Le nuove caratteristiche vengono ora aggiunte tra una release x e l'altra, mentre le release y sono solitamente riservate alla correzioni di bug. La versione 2.6.0 fu pubblicata il 18 dicembre 2003. [46] . Tra i cambiamenti fatti in questa serie ci sono: l'integrazione di µClinux nei sorgenti del kernel principali, il supporto alla PAE , il supporto a diverse nuove linee di CPU , l'integrazione di ALSA nei sorgenti principali del kernel, il supporto a un numero di utenti fino a 2 32 (2 16 nelle versioni precedenti), il supporto a un numero di processi fino a 2 30 (2 15 nelle precedenti versioni), una crescita sostanziale del numero di tipi di dispositivo e del numero di dispositivi per ogni tipo, supporto ai processori a 64 bit migliorato, supporto di file system fino a 16 terabytes , in-kernel preemption , supporto alla libreria Native POSIX Thread Library, integrazione nei sorgenti principali del kernel di andLinux e di SELinux , supporto a Infiniband , e molto altro. Altrettanto importante è l'aggiunta di diversi filesystem durante le varie release della serie 2.6. x : FUSE , JFS , XFS , ext4 e altri [47] .

Nel luglio del 2011, per festeggiare il 20º anniversario della nascita di Linux, Torvalds ha deciso di passare ad un sistema di numerazione a 2 cifre, rilasciando la versione 3.0 del kernel. L'ultima release della serie 2.6 è stata la 2.6.39.

Il 12 marzo 2015 viene rilasciata la release stabile di Linux 4.0.

Costo stimato per lo sviluppo

Il costo per sviluppare nuovamente la versione 2.6.0 del kernel Linux in un'ottica proprietaria è stato stimato nel 2004 pari a 612 milioni di dollari (467 milioni di euro) usando il modello di stima uomo-mese COCOMO . [48]

Nel 2006, uno studio finanziato dall' Unione europea ha stimato che, sviluppare da zero (in un'ottica proprietaria) il kernel 2.6.8 o superiore, costerebbe 882 milioni di euro. [49]

Aspetti legali

Marchio registrato

Linux è un marchio registrato di Linus Torvalds negli Stati Uniti e in altri Paesi. Questo è il risultato di un incidente in cui William Della Croce Jr., che non partecipava allo sviluppo del progetto Linux, registrò il nome e successivamente richiese una Royalty per il suo uso. Diversi sostenitori di Linux chiesero consiglio legale e intentarono causa contro Della Croce, che acconsentì nel 1998 ad assegnare il marchio a Torvalds.

Termini di licenza

Inizialmente, Torvalds rilasciò Linux con una licenza che ne proibiva lo sfruttamento commerciale. Essa però lasciò presto il posto alla GNU General Public License (GPL) dalla versione 0.12. Questa licenza permette la distribuzione e la vendita di versioni modificate o non modificate di Linux a condizione che vengano rilasciate con la stessa licenza e che si fornisca anche il corrispondente codice sorgente.

Torvalds ha descritto l'adozione della licenza GPL come "la miglior cosa che abbia mai fatto." [50]

GPL versione 3

Magnifying glass icon mgx2.svg Lo stesso argomento in dettaglio: GNU General Public License § La Versione 3 .

Attualmente, Linux adotta la versione 2 della licenza GPL , senza nessuna opzione (a differenza di molti programmi rilasciati con licenza GPL) che permette l'uso di una versione più avanzata, e ci sono alcune controversie sulla facilità con cui si potrebbero usare versioni successive come la 3 (e su quanto sia desiderabile). [51] Torvalds stesso ha specificato durante il rilascio della versione 2.4.0 che il suo codice adotta soltanto la versione 2 della licenza. [52] Tuttavia, i termini della licenza GPL affermano che, se non viene specificata nessuna versione, allora ne può essere usata una qualsiasi, e Alan Cox fece notare che solo pochi di coloro che contribuiscono a Linux hanno specificato una particolare versione della licenza GPL. [53] Un blogger ha concluso che circa il 40% del codice di Linux è specificatamente rilasciato con licenza "GPL2 o superiore", e un altro 10% circa con licenza "GPL" (con versione non specificata), il che, messo assieme, costituisce circa la metà del kernel. Nel settembre 2006, un'indagine su 29 sviluppatori-chiave del kernel ha indicato che 28 di questi preferivano GPLv2 alla GPLv3 allora in stato di bozza. Torvalds ha commentato, «Penso che un nutrito numero di persone esterne credevano che fossi io l'unico strano, per il fatto che ho dichiarato pubblicamente di non essere un grande fan della GPLv3». [54]

Moduli kernel caricabili e firmware

Non è chiaro se i moduli kernel caricabili (LKM) debbano essere considerati opera derivata per la legge sul copyright , e quindi ricadano entro i termini della licenza GPL. Torvalds ha affermato che i LKM, usando soltanto un sottoinsieme limitato di interfacce "pubbliche" del kernel, possono a volte non essere considerati opere derivate, ed è quindi possibile avere alcuni driver esclusivamente binari e altri LKM che non adottano la licenza GPL. Non tutti coloro che contribuiscono allo sviluppo di Linux però sono d'accordo con questa interpretazione, e anche lo stesso Torvalds ammette che molti LKM sono chiaramente opere derivate, ed infatti ha scritto che "I moduli kernel SONO opere derivate 'per default'".

D'altra parte Torvalds ha anche detto che "Un'area grigia è qualcosa come un driver originariamente scritto per un altro sistema operativo (cioè chiaramente non un'opera derivata da Linux in origine). [...] QUELLA è un'area grigia, e _quella_ è l'area dove personalmente penso che alcuni moduli potrebbero non essere considerati opere derivate semplicemente perché non sono stati progettati per Linux e non dipendono da nessun comportamento speciale di Linux." [55] I driver grafici proprietari in particolare, sono al centro di un dibattito. In definitiva, è probabile che queste questioni possano essere risolte soltanto da un tribunale.

Un punto di controversia sulla licenza è l'uso in Linux di firmware "binario" per supportare alcuni dispositivi hardware. Richard Stallman afferma che questi software fanno di Linux un software parzialmente non aperto, e che distribuire Linux potrebbe anche violare la licenza GPL (che richiede la presenza di tutto il codice sorgente). [56]

In risposta a ciò, la Free Software Foundation Latin America (FSFLA) ha avviato un progetto, denominato Linux-libre , per creare un kernel completamente libero, senza moduli proprietari, per poter essere usato in distribuzioni completamente libere, come Trisquel GNU/Linux [57] [58] .

Contenzioso SCO

Magnifying glass icon mgx2.svg Lo stesso argomento in dettaglio: Causa legale tra SCO e IBM .

A marzo del 2003, il gruppo SCO intentò causa contro IBM accusandola di aver violato il copyright sul codice sorgente Unix , inserendo porzioni di quel codice in Linux. Inoltre, SCO mandò lettere a diverse compagnie avvisandole che l'uso di Linux senza una licenza di SCO poteva essere una violazione della legge sul copyright, e dichiarò alla stampa che avrebbero intentato causa agli utenti Linux individuali. IBM allora promise di difendere i suoi clienti Linux. Questo contenzioso generò una serie di cause intentate da SCO nei confronti di Novell , Daimler (parzialmente ritirata nel luglio 2004), AutoZone , e cause di ritorsione intentate da Red Hat e altri contro SCO.

All'inizio del 2007 SCO fornì i dettagli specifici della presunta violazione di copyright. Diversamente dalle precedenti affermazioni che vedevano SCO proprietaria di 1 milione di righe di codice, specificarono soltanto 326 linee di codice, la maggior parte del quale non era coperto da copyright. [59] Ad agosto 2007, la corte nel caso Novell stabilì, per cominciare, che SCO non possedeva neanche i diritti di copyright su Unix. [60]

Note

  1. ^ ( EN ) Linux: The 0.01 Release , su kerneltrap.com . URL consultato il 9 gennaio 2011 .
  2. ^ ( EN ) Piattaforme supportate dal kernel Linux , su kernel.org . URL consultato il 23 luglio 2010 .
  3. ^ ( EN ) COPYING , su kernel.org . URL consultato il 24 marzo 2016 .
  4. ^ ( EN ) index : kernel/git/stable/linux-stable.git , su git.kernel.org (archiviato dall' url originale l'8 dicembre 2016) .
  5. ^ ( EN ) Linus Torvalds , What would you like to see most in minix? , su comp.os.minix , 26 agosto 1991. URL consultato il 25 dicembre 2008 .
  6. ^ ( EN ) Linus Torvalds , Free minix-like kernel sources for 386-AT , su comp.os.minix , 5 ottobre 1991. URL consultato il 25 dicembre 2008 .
  7. ^ ( EN ) David W Summers, Troubles with Partitions , su alt.os.linux / comp.os.minix , 19 gennaio 1992. URL consultato il 24 dicembre 2008 ( archiviato il 24 dicembre 2008) .
  8. ^ ( EN ) Alan B Clegg, It's here! , su comp.os.linux , 31 marzo 1992. URL consultato il 24 dicembre 2008 ( archiviato il 24 dicembre 2008) .
  9. ^ " Linux Kernel Data ."
  10. ^ " Linux Kernel Data ."
  11. ^ ( EN ) Andrew Stuart Tanenbaum, LINUX is obsolete , su comp.os.minix , 29 gennaio 1992. URL consultato il 25 dicembre 2008 (archiviato dall' url originale il 25 dicembre 2008) .
  12. ^ Linus Torvalds, Hybrid kernel, not NT , su realworldtech.com , 9 maggio 2006. URL consultato il 6 gennaio 2007 .
  13. ^ Andy Tanenbaum, Tanenbaum-Torvalds Debate: Part II , su cs.vu.nl , 12 maggio 2006. URL consultato il 6 gennaio 2007 .
  14. ^ ( EN ) Linus Torvalds, Re: GPLv3 Position Statement , su lkml.org , 25 settembre 2006.
  15. ^ ( EN ) File README , su git.kernel.org . URL consultato il 12 novembre 2010 (archiviato dall' url originale il 24 luglio 2012) .
  16. ^ ( EN ) Marjorie Richardso, Intervista: Linus Torvalds , su linuxjournal.com , Linux Journal, 1º novembre 1999. URL consultato il 20 agosto 2009 .
  17. ^ ( EN ) Sam Williams, Chapter 9: The GNU General Public License , su Free as in Freedom , O'Reilly Media. URL consultato il 16 febbraio 2011 .
  18. ^ ( EN ) File COPYING , su git.kernel.org . URL consultato il 16 febbraio 2011 (archiviato dall' url originale il 21 dicembre 2012) .
  19. ^ Le nuove release sono reperibili sul sito kernel.org
  20. ^ ( EN ) GNU Linux-libre, Free as in Freedo , su Free Software Foundation Latin America . URL consultato il 21 gennaio 2015 .
    «Linux, the kernel developed and distributed by Linus Torvalds et al, contains non-Free Software, ie, software that does not respect your essential freedoms, and it induces you to install additional non-Free Software that it doesn't contain.» .
  21. ^ Operating system Family / Linux | TOP500 Supercomputer Sites , su top500.org , Top 500 Supercomputer Sites, novembre 2014.
  22. ^ Linux kernel patch for Intel Compiler Archiviato il 22 luglio 2011 in Internet Archive .
  23. ^ Linux Device Drivers, 2nd Edition: Chapter 2: Building and Running Modules
  24. ^ Gmane Loom [ collegamento interrotto ]
  25. ^ Linux Kernel Documentation :: make : headers_install.txt
  26. ^ ldd /usr/bin/kwin lists 40 shared libraries (kwin 3.5.5a); ldd /usr/bin/gnome-panel lists 68 (gnome-panel 2.14.3).
  27. ^ Daniel Barlow, The Linux ELF HOWTO , su ibiblio.org , 13 settembre 1995. URL consultato il 19 luglio 2007 (archiviato dall' url originale il 12 ottobre 2007) .
  28. ^ Linux: 2.6.16.y Lives On | KernelTrap
  29. ^ Linux: Maintaining A 2.6.16.y Tree | KernelTrap
  30. ^ The Linux Kernel Archives
  31. ^ linux-next and patch management process [LWN.net]
  32. ^ Linux Kernel Mailing List, Linux 2.6.12 , su marc.info , 17 giugno 2005.
  33. ^ David Weinehall, [ANNOUNCE] Linux-kernel 2.0.40 aka The Moss-covered Tortoise , su kerneltrap.org , 8 febbraio 2004 (archiviato dall' url originale il 30 maggio 2012) .
  34. ^ Marc-Christian Petersen, Linux 2.2.27-rc2 , su kerneltrap.org , 13 gennaio 2005 (archiviato dall' url originale il 30 maggio 2012) .
  35. ^ Willy Tarreau, Linux 2.4.37-rc1 , su marc.info , 7 settembre 2008.
  36. ^ Adrian Bunk, Linux 2.6.16.62 , su linux-kernel , marc.info , 21 luglio 2008.
  37. ^ Per l'elenco completo vedi Linux MAINTAINERS file .
  38. ^ Linux Kernel Archives - Volume 1 Archiviato l'11 maggio 2005 in Archive.is . (Riley Williams)
  39. ^ ( EN ) Kernel 1.0 Source Code Release , su kernel.org . URL consultato il 27 ottobre 2008 .
  40. ^ ( EN ) Kernel 1.2 Source Code Release , su kernel.org . URL consultato il 27 ottobre 2008 .
  41. ^ ( EN ) Kernel 2.0. x Source Code Releases , su kernel.org . URL consultato il 27 ottobre 2008 .
  42. ^ ( EN ) Kernel 2.2. x Source Code Releases , su kernel.org . URL consultato il 27 ottobre 2008 .
  43. ^ ( EN ) The Wonderful World of Linux 2.2 , su kniggit.net . URL consultato il 27 ottobre 2008 (archiviato dall' url originale il 18 novembre 2005) .
  44. ^ ( EN ) Kernel 2.4. x Source Code Releases , su kernel.org . URL consultato il 27 ottobre 2008 .
  45. ^ ( EN ) The Wonderful World of Linux 2.4 , su kniggit.net . URL consultato il 27 ottobre 2008 (archiviato dall' url originale il 18 novembre 2005) .
  46. ^ ( EN ) Kernel 2.6. x . y Source Code Releases , su kernel.org . URL consultato il 27 ottobre 2008 .
  47. ^ Altri dettagli sulla storia della serie 2.6 del kernel possono essere trovati sul ChangeLog situato in the 2.6 kernel series source code release area
  48. ^ ( EN ) David A. Wheeler, Linux Kernel 2.6: It's Worth More! , su dwheeler.com , 12 ottobre 2004. URL consultato il 28 giugno 2016 .
  49. ^ ( EN ) Economic impact of FLOSS on innovation and competitiveness of the EU ICT sector ( PDF ), su ec.europa.eu , 20 novembre 2006, 50-51. URL consultato il 28 giugno 2016 (archiviato dall' url originale il 6 luglio 2015) .
  50. ^ Hiroo Yamagata, The Pragmatist of Free Software , su hotwired.goo.ne.jp , HotWired, 1997. URL consultato il 21 febbraio 2007 (archiviato dall' url originale il 10 febbraio 2007) .
  51. ^ Jonathan Corbet, GPLv3 and the kernel , su lwn.net , LWN.net , 31 gennaio 2006. URL consultato il 21 febbraio 2007 .
  52. ^ Linus Torvalds, Linux-2.4.0-test8 , su Linux-kernel mailing list archive , uwsg.iu.edu , Unix Systems Support Group of Indiana University , 8 settembre 2000. URL consultato il 21 febbraio 2007 (archiviato dall' url originale il 27 agosto 2006) .
  53. ^ Alan Cox, Re: GPL V3 and Linux , su Linux-kernel mailing list archive , lwn.net . URL consultato il 21 febbraio 2007 .
  54. ^ Stephen Shankland, Top Linux programmers pan GPL 3 , su news.com.com , News.com , 25 settembre 2006. URL consultato il 21 febbraio 2007 .
  55. ^ Re: Linux GPL and binary module exception clause? Archiviato il 27 settembre 2006 in Internet Archive .
  56. ^ Richard Stallman, Linux, GNU, and freedom , su gnu.org , Free Software Foundation , 11 ottobre 2006. URL consultato il 21 febbraio 2007 .
  57. ^ ( EN ) Progetto Linux-libre , su linux-libre.fsfla.org , https://www.fsfla.org/ . URL consultato il 6 aprile 2010 .
  58. ^ ( EN ) Trisquel GNU/Linux-libre , su trisquel.info . URL consultato il 6 aprile 2010 .
  59. ^ Report from the Courthouse 7 March , su groklaw.net . URL consultato il 1º dicembre 2008 (archiviato dall' url originale il 7 agosto 2011) . Groklaw article
  60. ^ Court Rules: Novell owns the UNIX and UnixWare copyrights , su groklaw.net . Groklaw article

Bibliografia

Voci correlate

Altri progetti

Collegamenti esterni