Linux (nucli)

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca
Linux
sistema operatiu
Logotip
KNOPPIX booting.png
S'està carregant el nucli Linux 2.6.24.4, Knoppix 5.3.1
Desenvolupador Linus Torvalds i altres
Família POSIX
Llançament inicial 1.0 (13 de març de 1994 [1] )
corrent d'alliberament 5,13 (27 de juny de 2021)
Tipus de nucli Monolític
Plataformes compatibles 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]
Interfícies gràfiques Diversos entorns d'escriptori que operen en X Window , CLI o sistemes incrustats
Tipus de llicència Programari lliure
Llicència GNU GPLv2
Etapa de desenvolupament En curs (desenvolupament continu)
Lloc web www.kernel.org

Linux és un nucli , creat el 1991 per Linus Torvalds i derivat d' UNIX , distribuït sota la llicència de programari lliure GNU GPLv2 (en lloc de programari propietari ), que inclou també diversos firmware amb llicències no lliures [3] [4] . Sovint utilitzat juntament amb el sistema operatiu GNU , concebut per Richard Stallman , va donar lloc a la família de sistemes operatius Linux , estesa en diverses distribucions (l’accés directe al nucli per part de l’usuari / administrador en mode usuari / mode nucli s’obté a través de l’anomenada consola Linux ). L'activitat de desenvolupament, promoguda per la Linux Foundation , ha conduït a una estandardització coneguda com a Linux Standard Base , mentre que un intent d'implementar un nucli completament lliure està representat per Linux-libre .

Història

L'abril de 1991, Linus Torvalds , estudiant finlandès d' informàtica a la Universitat d'Hèlsinki , als 21 anys va començar a treballar en algunes idees senzilles per a un sistema operatiu. Va començar amb un commutador de context programat per muntatge en un processador Intel 80386 i un controlador de terminal . En aquest moment, el 25 d'agost de 1991, Torvalds va escriure un post [5] , del qual s'informa una traducció:

«Estic programant un sistema operatiu (gratuït i només per afició, que no pretén ser gran i professional com GNU) per a clons AT 386 (486). Està en preparació des de l’abril i comença a funcionar. M’agradaria saber què us agrada i que no us agrada de Minix, ja que el meu sistema operatiu s’assembla una mica a ell (entre altres coses, el mateix disseny físic del sistema de fitxers, per motius pràctics).

He convertit el shell bash (v.1.08) i GCC (v.1.40), i sembla que funcionin. Això indica que estaré en funcionament en pocs mesos i m'agradaria saber quines funcions volen la majoria de la gent. Qualsevol suggeriment és benvingut, tot i que no us puc prometre que ho implementaré ".

Linus havia començat a programar el nucli en una arquitectura MINIX , un sistema operatiu gratuït programat pel professor universitari Andrew S. Tanenbaum , que més tard va criticar molt el treball de l'estudiant finès.

Després de la publicació d’aquest post, molta gent va col·laborar en el desenvolupament del projecte i el 5 d’octubre de 1991 Linus va llançar la versió 0.02 del nucli, aproximadament un mes després de la publicació de la versió 0.01, que però no va tenir molt èxit. Va escriure, amb motiu de l'alliberament, el següent post [6] :

«Es penedeix dels bons dies de Minix 1.1, quan els homes eren homes i escrivien ells mateixos els conductors? Trobeu a faltar un bon projecte i us moriu de morir per trencar-vos els ossos amb un sistema operatiu que podeu intentar modificar segons les vostres necessitats? Trobeu frustrant que tot funcioni a Minix? No us passeu més nits amb un programa que funciona de meravella? Llavors aquesta publicació s'hauria de fer només per a vosaltres

Com ja vaig dir fa un mes, estic treballant en una versió gratuïta d’un clon Minix per a ordinadors AT-386. Finalment ha arribat a una fase en què es pot utilitzar (encara que no pot dependre del que vulgueu), i sóc partidari de fer públiques les fonts de les masses. Només és la versió 0.02 (un pedaç molt petit ja està llest), però he començat amb èxit el shell bash / GCC / GNU-make / GNU-sed / compress, etc.

Les fonts d’aquest projecte meu es poden descarregar nic.funet.fi a la carpeta / pub / Linux . La carpeta també conté alguns fitxers README i un parell de fitxers binaris per executar sota Linux (bash, update i gcc.) La font completa del nucli es proporciona ja que no s'ha utilitzat cap codi de Minix. La font de les biblioteques només és parcialment gratuïta i, per tant, no es pot distribuir actualment. Podeu compilar el sistema tal com és i s’ha comprovat que funciona. Eh. Les fonts binàries (bash i gcc) es poden trobar al mateix lloc a / pub / gnu.

ATENCIÓ! NOTA! Aquestes fonts necessiten minix-386 per compilar (i gcc-1.40, o bé, no s'ha provat, 1.37.1) i s'han configurat correctament per funcionar, de manera que encara no és un sistema independent per a aquells que no tenen Minix. Hi estic treballant. També heu de tenir força experiència per configurar-lo correctament, de manera que, per a aquells que esperen una alternativa minix-386, ignoreu-me. Actualment s’adreça a experts interessats en sistemes operatius i 386 amb accés a Minix.

El sistema requereix un disc dur compatible amb AT (IDE està bé) i EGA / VGA. Si esteu interessats, descarregueu el README i les notes de llançament i / o envieu-me un correu electrònic per obtenir més informació.

Puc (més o menys) sentir-vos preguntant "per què?". Hurd sortirà d'aquí a un any (o 2, o el mes que ve, qui sap), i ja tinc Minix. Aquest és un programa de programador escrit per un programador. M’ha agradat escriure-ho i a alguns els pot agradar comprovar-ho i fins i tot editar-lo per a les seves pròpies necessitats. És prou petit per entendre, utilitzar i editar i tinc curiositat pels vostres comentaris.

També m’agradaria rebre notícies de qualsevol persona que hagi escrit alguna utilitat o funció de biblioteca per a Minix. Si els vostres esforços es poden distribuir lliurement (amb drets d'autor o fins i tot de domini públic), m'encantaria rebre notícies vostres per afegir-les al sistema. En aquest moment estic fent servir Earl Chews estdio (gràcies per un bon sistema de treball Earl), i treballs similars seran molt benvinguts. Evidentment, la vostra C quedarà intacta. Envieu-me una línia si voleu que em permeti utilitzar el vostre codi. "

Es va iniciar un grup de notícies alt.os.linux i la primera publicació es va publicar el 19 de gener de 1992. [7] El 31 de març de 1992, alt.os.linux es va convertir en comp.os.linux . [8]

Aviat el sistema X Window es va portar a Linux. La primera versió de Linux que va poder executar X va ser de 0,95 al març de 1992. Aquest gran salt de numeració de la versió (de 0,1x a 0,9x) es va deure al fet que se sentia molt a prop d’una versió 1.0 sense que faltés peces. Tanmateix, aquesta sensació va ser massa optimista i, des de 1993 fins a principis de 1994, es van llançar 15 versions de la versió 0.99.

El 14 de març de 1994 es va llançar Linux 1.0.0, amb 176.250 línies de codi. El març de 1995 es va llançar Linux 1.2.0 (310 950 línies de codi).

La versió 2 de Linux, llançada el 9 de juny de 1996, va anar seguida d'altres versions principals amb el prefix de la versió 2:

  • 25 de gener de 1999: llançament de Linux 2.2.0 (1 800 847 línies de codi).
  • 18 de desembre de 1999: es van llançar els pedaços mainframe d'IBM 2.2.13, cosa que va permetre instal·lar Linux a màquines a nivell empresarial.
  • 4 de gener de 2001: llançament de Linux 2.4.0 (3 377 902 línies de codi).
  • 17 de desembre de 2003: llançament de Linux 2.6.0 (5.929.913 línies de codi).
  • 9 d'octubre de 2008: llançament de Linux 2.6.27 (9.709.868 línies de codi)[9] .
  • 24 de desembre de 2008: llançament de Linux 2.6.28 (10 195 402 línies de codi).
  • 20 d'octubre de 2010: llançament de Linux 2.6.36 (13.499.457 línies de codi). [10]
  • El juliol de 2011, per celebrar el vintè aniversari del naixement de Linux, Torvalds va decidir canviar a un sistema de numeració de 2 dígits, llançant la versió 3.0 del nucli. La darrera versió de la sèrie 2.6 va ser 2.6.39.
    La primera versió del nou sistema de numeració publicat - 3.0 - publicat conté 14 646 952 línies de codi.
  • 8 de març de 2015: es publica la primera beta de la nova versió del nucli 4.0.
  • 12 de març de 2015: es publica la versió estable de Linux 4.0 i a partir d’ara la numeració només inclourà un nombre decimal.

El debat de Tanenbaum-Torvalds

El fet que Linux fos un nucli monolític més que un microcern va ser el tema del debat de Tanenbaum - Torvalds . El debat es va iniciar el 1992 sobre Linux i l'arquitectura del nucli en general al grup de discussió comp.os.minix Usenet . [11] Tanenbaum va argumentar que els micro nuclis eren superiors als nuclis monolítics i, per tant, Linux estava obsolet. A diferència dels nuclis monolítics tradicionals, els controladors es configuren fàcilment com a mòduls del nucli i es carreguen o no mentre el sistema s’executa. Aquest argument es va tornar a proposar el 9 de maig del 2006 [12] i el 12 de maig del 2006. [13]

Descripció

Icona de la lupa mgx2.svg El mateix tema en detall: nucli .

El nucli Linux, un dels exemples de programari de codi obert amb més èxit, [14] constitueix el nucli dels sistemes operatius de la família Linux o de les distribucions Linux . [15] Inicialment va ser creat el 1991 per alguns estudiants finlandesos en informàtica [16] incloent Linus Torvalds , el líder del grup. Posteriorment, els seus desenvolupadors i usuaris de sobte es van incrementar i es van unir a l' programari lliure de el projecte i han contribuït a el desenvolupament de el nou sistema operatiu. [17]

Alliberat, descarregable lliurement [1] i modificable / personalitzable sota la llicència gratuïta GNU GPL [18] (juntament amb algun firmware amb diverses llicències), és desenvolupat de forma contínua i lliure per col·laboradors de tot el món a través de la seva comunitat , amb el desenvolupament que cada dia es fa mitjançant la llista de correu relativa, d'una manera completament anàloga en què es desenvolupen els protocols d'Internet . Per tant, el codi font de Linux està disponible per a tothom i és àmpliament personalitzable, fins al punt de fer possible, durant la fase de compilació, excloure el codi que no és estrictament essencial.

Com qualsevol projecte que sigui programari lliure , el nucli Linux evoluciona constantment [19] amb la mida del nucli creixent exponencialment, afegint nous mòduls, nou maquinari compatible, etc. La branca de desenvolupament principal de l'nucli de Linux estableix que també conté algunes parts no-lliures, ofuscat o enfosquits com ara alguns conductors . En canvi, el projecte Linux-libre es proposa com una variant completament gratuïta de Linux, de la qual van néixer diverses distribucions completament gratuïtes . [20]

Com a "cor" d'un sistema operatiu (nucli), proporciona totes les funcions essencials del sistema, en particular la gestió de la memòria primària , els recursos de maquinari del sistema i els perifèrics , assignant-los de tant en tant als processos en execució. La contrapart del nucli és l' intèrpret d'ordres , que és la interfície d'usuari del sistema, la part més externa. Els programes demanen recursos al nucli mitjançant trucades del sistema i no poden accedir directament al maquinari.

Per tant, s’encarrega de gestionar el temps, les comunicacions i la memòria del processador , distribuint-los als processos en curs segons les prioritats ( programació ), aconseguint així la multitarea . Per tant, admet la multitarea i és multiusuari : això permet a diferents usuaris (amb privilegis diferents) executar diferents processos de programari simultàniament al mateix sistema. Actualment, Linux admet gran part del maquinari disponible per a PC i admet una gran quantitat d’arquitectures (incloent SPARC , PowerPC , ARM i les CPU més modernes de 64 bits ).

Linux admet multitarea amb pre-llançament (tant en mode d’usuari com en mode nucli ), memòria virtual , biblioteques compartides , càrrega a la carta , executables de còpia en escriptura compartida, gestió de memòria , la suite de protocols d’Internet i threading . La flexibilitat d’aquest nucli el fa adequat per a totes aquelles tecnologies incrustades emergents i també en centres informàtics distribuïts (com el clúster Beowulf ) fins a ser incorporat a alguns gravadors de vídeo digitals i telèfons mòbils .

Interfície de trucada del sistema i base estàndard de Linux

Arquitectura

Mapa del nucli Linux i la seva versió interactiva.

Linux és un nucli monolític . Tot i que avui en dia el nucli es pot compilar de manera que tingui una imatge binària minimitzada i controladors que es puguin carregar des de mòduls externs, l'arquitectura original és clarament visible: de fet, tots els controladors han de tenir una part executada en mode nucli , fins i tot aquells per als quals això no seria necessari (per exemple , controladors de sistema de fitxers ).

Els controladors i extensions del nucli funcionen a l' espai del nucli ( anell 0 en la majoria de les CPU ), amb accés complet al maquinari, tot i que algunes excepcions funcionen a l'espai de l'usuari . El sistema gràfic que la majoria de la gent utilitza amb Linux no funciona a l'espai del nucli. La preassignació del mode nucli permet pre -assignar els controladors de dispositiu en determinades condicions. Aquesta característica es va introduir per gestionar correctament les interrupcions de maquinari i millorar el suport per al sistema multiprocessador simètric (SMP). La preasignació també millora la latència , augmenta la capacitat de resposta i fa que Linux sigui més adequat per a aplicacions en temps real.

Portabilitat

iPodLinux mentre arrencava el nucli.

Tot i que inicialment no es va dissenyar per ser portàtil , Linux és un dels nuclis de sistemes operatius més portàtils, capaç d’executar-se en una àmplia gamma de sistemes, des d’ iPAQ (un ordinador de mà) fins a IBM System z9 (un servidor mainframe capaç d’executar centenars o milers de instàncies simultànies de Linux). Linux és el sistema operatiu principal dels superordinadors Blue Gene d’ IBM . Linux és el sistema operatiu de més del 97% dels sistemes de la llista Top 500 de superordinadors. [21] A més, Linux s'ha compilat en nombrosos dispositius portàtils com TuxPhone i l'iPod d'Apple.

Llenguatges de programació

Linux està escrit en la versió del llenguatge de programació C compatible amb el compilador GCC (que ha introduït nombroses extensions i canvis a l'estàndard C), juntament amb una sèrie de seccions curtes de codi escrites en llenguatge Assembly (sintaxi GCC amb "AT&T") estil). Gràcies a les extensions C que admet, GCC va ser durant molt de temps l'únic compilador capaç de compilar Linux correctament. El 2004, Intel va afirmar haver modificat el nucli perquè el seu compilador C també fos capaç de compilar Linux. [22]

Molts altres idiomes s’utilitzen d’alguna manera, especialment en el procés de compilació del nucli (mètodes en què es crea una imatge d’arrencada a partir del codi font). Aquests inclouen Perl , Python i diversos llenguatges de shell . Alguns controladors també poden estar escrits en C ++ , Fortran o en altres idiomes, però aquesta pràctica està fortament desaconsellada. El sistema de compilació de Linux només admet oficialment GCC com a compilador de nuclis i controladors.

Opcions de compilació

El nucli Linux té opcions de compilació configurables que permeten afegir o eliminar funcions específiques del nucli durant la compilació inicial. Durant aquesta última fase, també es poden configurar alguns paràmetres predeterminats personalitzats.

Objectes del nucli

Els elements del nucli són funcions, variables, fitxers de capçalera i macros. [23]

Capçalera del nucli

Les capçaleres del nucli són fitxers de capçalera C que permeten compartir algunes definicions del nucli ABI de baix nivell entre nuclis i aplicacions d’ espai d’usuari . La majoria d'aplicacions no necessiten aquestes capçaleres; només són per a ús directe de biblioteques de sistemes, utilitats i dimonis de baix nivell. [24]

L'ordre " make headers_install ", quan s'executa a l'arbre font del nucli, exporta els fitxers de capçalera del nucli en un formulari adequat per a l'ús dels programes d'espai de l'usuari. [25] Quan s'exporten, la majoria de capçaleres del nucli es troben als /usr/include/linux /usr/include/asm i /usr/include/linux

Pànic del nucli

Icona de la lupa mgx2.svg El mateix tema en detall: pànic del nucli .
Pànic del nucli

A Linux, un "pànic" és un error del sistema irrecuperable detectat pel nucli en comparació amb errors similars detectats en mode d' espai d'usuari . El codi de mode del nucli pot indicar aquesta condició trucant a la funció de panic declarada a la capçalera del fitxer sys / system.h. No obstant això, la majoria dels pànics del nucli són el resultat d' excepcions en el codi del nucli, com ara referències d' adreces de memòria no vàlides. Normalment es tracta d'un índex de

  • un error en algun lloc de la cadena de trucades que condueix al pànic del nucli;
  • danys al maquinari, com ara una cèl·lula RAM danyada o errors en funcions aritmètiques al processador causats per un error del processador , un processador sobrecalentat i danyat;
  • un error de programari;
  • un error en els paràmetres proporcionats pel gestor d’arrencada , com ara la imatge initrd .

S'admeten formats binaris

Linux 1.0 admetia el format binari a.out i ELF , que simplifica la creació de biblioteques compartides (utilitzades àmpliament per entorns d'escriptori moderns com KDE i GNOME [26] ). ELF és el format estàndard utilitzat per GCC des de la versió 2.7.0 [27], de manera que avui dia a.out s’utilitza molt rarament.

Linux admet molts altres formats binaris, incloent binfmt misc per associar un fitxer a un programa (com ara un intèrpret ) per executar o mostrar aquest fitxer.

Arquitectures de màquines virtuals

El nucli Linux compta amb una àmplia compatibilitat i funciona amb nombroses arquitectures de màquines virtuals com a sistema operatiu "servidor" i "client". Les màquines virtuals solen emular la família de processadors d’arquitectura x86 , tot i que en alguns casos també s’emulen processadors PowerPC o AMD64 .

Versions

Tot desenvolupant el seu propi codi i integrant modificacions creades per altres programadors, Linus Torvalds continua llançant noves versions del nucli Linux. S’anomenen versions “vainilla”, és a dir, que ningú no les ha modificat. Moltes distribucions de Linux modifiquen el nucli del seu sistema, principalment per afegir suport per a controladors o funcions que no s’han publicat oficialment com a estables, mentre que altres distribucions utilitzen un nucli de vainilla.

Model de desenvolupament

El model de desenvolupament per a Linux 2.6 difereix molt del Linux 2.5. Anteriorment hi havia una branca estable (2.4), on només es feien canvis relativament petits i segurs, i una branca inestable (2.5), on es permetien canvis més grans. Això significava que els usuaris sempre tenien una versió amb les darreres correccions, però havien d’esperar a les noves incorporacions de la branca 2.5. L’inconvenient d’aquest procés va ser que la versió estable del nucli, amb el pas del temps, ja no admetia maquinari recent i mancava de les funcions que es necessitaven gradualment.

Cap al final de la sèrie 2.5.x, alguns desenvolupadors han decidit fer alguns canvis a la branca estable, però això ha provocat un augment dels problemes a la sèrie 2.4.x del nucli. La branca 2.5 es va declarar estable i es va canviar el nom de 2.6. En lloc d'obrir una branca inestable 2.7, els desenvolupadors van continuar fent canvis importants a la branca estable. D’aquesta manera, es van controlar els canvis amb més precisió, dividint-los en trossos més petits, fent que les noves funcions estiguessin disponibles ràpidament i ampliant el nombre de persones que provessin l’últim codi.

El nou model de desenvolupament que caracteritza la 2.6 també significa que no hi ha cap branca estable per a les persones que només busquen solucions d'errors o relacionades amb la seguretat, però que no necessiten les darreres funcions. Les correccions s’apliquen només a la versió més recent, de manera que si un usuari vol una versió amb tots els errors coneguts corregits, obté totes les funcions més recents al mateix temps, però es corre el risc (en alguns casos) que algunes coses no funcionin més que a la versió anterior van funcionar. Una correcció parcial d'aquest problema es va esmentar anteriorment (vegeu el quart dígit del número de versió): caracteritza els nous nuclis, però no resol completament algunes necessitats que no tindríeu amb una branca estable. Les distribucions, com Red Hat i Debian , ja inclouen un cert tipus de nucli a les seves versions: la majoria de la gent està millor utilitzant les versions predeterminades.

En resposta a la manca d'una branca estable del nucli (pensada com una branca on no es fan canvis nous, només solucions), Adrian Bunk , el desembre del 2005, va anunciar que continuaria alliberant el nucli 2.6.16.y fins i tot quan ho fos versió 2.6.17 llançada. [28] També planejava incloure actualitzacions de controladors, fent així el desenvolupament de la sèrie 2.6.16 molt similar al de l'antiga 2.4. [29]

El 10 d'octubre de 2008 es va llançar la versió estable 2.6.27. [30] . Al febrer del mateix any, els desenvolupadors van idear una branca de nucli inestable , anomenada linux-next : un lloc per allotjar els canvis, amb la intenció d’incloure’ls al proper cicle de desenvolupament. [31]

El juliol de 2011 , per celebrar el vintè aniversari del naixement de Linux, Torvalds va decidir llançar la versió 3.0 del nucli, canviant a un sistema de numeració de 2 dígits. La darrera versió de la sèrie 2.6 va ser 2.6.39.

Control de versions

Antigament, el codi font del nucli Linux s’executava sense l’ús d’un control de versió del sistema automatitzat (en anglès, source code management, SCM), principalment a causa del fet que a Torvalds no li agrada SCM centralitzat.

El 2002, el desenvolupament del nucli es va canviar a BitKeeper , un SCM que complia els requisits tècnics de Torvalds i era interoperable, fins a cert punt, amb altres sistemes com CVS i Subversion . Tot i que Torvalds i altres desenvolupadors van obtenir BitKeeper gratuïtament, el fet que no fos programari lliure va causar controvèrsia.

Els intents d' enginyeria inversa d' Andrew Tridgell amb BitKeeper van convèncer BitMover, l'empresa que dirigia BitKeeper, per acabar amb el seu suport a la comunitat de desenvolupament de Linux. En conseqüència, Torvalds i altres van escriure un nou sistema de control de versions, anomenat git ; el nou programari es va escriure al cap de poques setmanes i dos mesos després hi va haver la primera versió oficial del nucli Linux llançada amb git. [32] Poc després, git es va convertir en un projecte independent, guanyant una àmplia popularitat a la comunitat de programari lliure.

Manteniment

Linus Torvalds és el supervisor de canvis i versions de les últimes versions del nucli: ha delegat el manteniment de les versions anteriors a altres programadors. Algunes versions anteriors com la 2.0 (oficialment obsoleta pel nucli 2.2.0 llançat el gener del 1999) només s'actualitzen quan es considera necessari i els canvis són molt rars.

Sèrie del nucli Versió actual Supervisor
2.0 2.0.40 David Weinehall [33]
2.2 2.2.27-rc2 Marc-Christian Petersen [34] (antic supervisor Alan Cox )
2.4 2.4.37-rc2 Willy Tarreau [35] (antic supervisor Marcelo Tosatti )
2.6.16 2.6.16.62 Adrian Bunk [36]
2.6.17+ (canvis freqüents) Linus Torvalds
2.6.x-mm (canvia ràpidament) Andrew Morton

Altres programadors coneguts del nucli Linux són Robert Love i Ingo Molnár . [37]

Numeració de versions

Durant molt de temps, la versió del nucli de Linux constava de tres nombres, però recentment aquest sistema ha estat canviat i ara la versió consta de quatre dígits, en la forma "ABC [.D]", per exemple 2.2.1, 2.4.13, o 2.6.12.3;

  • la "A" indica la versió del nucli, que es modifica molt poques vegades i només quan es produeixen canvis radicals al codi (fins al 2008 això va passar només dues vegades, el 1994, amb la introducció de la versió 1.0, i el 1996 amb la versió 2.0 ) o per motius commemoratius (versió 3, el 2011, durant 20 anys del nucli Linux);
  • la "B" indica la revisió "major" del nucli:
    • abans de la sèrie 2.6.x, els nombres parells (com ara 1.2, 2.4 o 2.6) indicaven una branca estable i els nombres senars (com ara 1.1 o 2.5) indicaven branques de desenvolupament, on s'experimentaven les noves funcions i controladors fins que es consideraven apte per ser inclòs a la branca estable;
    • a partir de la sèrie 2.6.x, la diferenciació entre nombres parells i senars perd significat, ja que el desenvolupament de noves característiques es produeix dins de la mateixa branca, per tal d’obtenir un desenvolupament més lineal;
  • la 'C' indica la revisió "menor" del nucli: a l'antic esquema de numeració, aquest nombre augmentava a mesura que s'implementaven actualitzacions de seguretat, correccions d'errors, noves funcions o nous controladors al nucli; segons el model actual, aquest número només es canvia quan s'introdueixen nous controladors o diferents funcions, ja que es compten correccions menors a partir del número marcat amb "D";
  • l'ús de la "D" va començar quan es va trobar un problema greu, que requeria una correcció immediata, al codi NFS de 2.6.8. No calia fer canvis per justificar l'alliberament d'una revisió menor (que esdevindria la versió 2.6.9), de manera que es va llançar 2.6.8.1, amb l'única correcció d'aquest error. A partir del 2.6.11 es va adoptar aquest model com a nou paradigma oficial. Les correccions i els pedaços de seguretat ara es compten així, amb el quart dígit, mentre que si hi ha canvis més substancials, s’utilitza el tercer dígit. El dígit 'D' també s'associa amb el nombre de vegades que el compilador ha construït el nucli i s'anomena "número de compilació".

A més, de vegades es poden trobar altres lletres després de la versió, com ara 'rc1' o 'mm2'; 'rc' és una versió candidata a l'adopció com a estable i indica una versió no oficial. 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