Linux (kernel): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→GPL versione 3: soltanto??? |
La versione del kernel è la 6.16.8 uscita pochi giorni fa quindi ho cambiato il numero della versione corrente Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile |
||
(71 versioni intermedie di 53 utenti non mostrate) | |||
Riga 1:
{{Sistema operativo
|nome = Linux
|screenshot = KNOPPIX booting.png
|didascalia = Caricamento del kernel Linux 2.6.24.4, [[Knoppix]] 5.3.1
Riga 8 ⟶ 6:
|famiglia = [[POSIX]]
|prima_versione_pubblicata = 1.0
|data_prima_pubblicazione = 13 marzo [[1994]]<ref>{{Cita web|1=http://www.kerneltrap.com/node/14002|2=Linux: The 0.01 Release|3=9 gennaio 2011|lingua=en|dataarchivio=10 giugno 2011|urlarchivio=https://web.archive.org/web/20110610190348/http://www.kerneltrap.com/node/14002|urlmorto=sì}}</ref>
|ultima_versione_pubblicata = 6.16.8
|data_ultima_pubblicazione = 19 settembre 2025
|tipo_kernel = [[Kernel#Kernel monolitici|Monolitico]]
|piattaforme_supportate = [[Alpha AXP]], Sun SPARC, [[Motorola 68000]], [[PowerPC]], [[Architettura ARM|ARM]], Hitachi SuperH, [[IBM]] S/390, [[Architettura MIPS|MIPS]], [[Hewlett
|interfaccia_utente = Svariati [[Ambiente desktop|Ambienti Desktop]] operanti su [[X Window]], [[Command line interface|CLI]] o [[Sistema embedded|sistemi embedded]]
|tipologia_licenza = libero
Riga 16:
|stadio_sviluppo = In corso (sviluppo continuo)
}}
'''Linux''' è un [[kernel]], creato nel [[1991]] da [[Linus Torvalds]] e derivato da [[UNIX]]
== Storia ==
[[File:Linus_Torvalds.jpeg|thumb|[[Linus Torvalds]]]]
Nell'aprile del [[1991]] [[Linus Torvalds]], uno studente finlandese di [[informatica]] presso l'[[Università di Helsinki]], all'età di 21 anni iniziò a lavorare su alcune semplici idee per un sistema operativo. Iniziò con un ''[[context switch]]'' programmato in [[assembly]] su [[processore]] [[Intel]] 80386 e un [[driver]] da [[terminale (informatica)|terminale]]. A questo punto, il 25 agosto 1991, Torvalds scrisse un post<ref>{{Cita web|lingua=en|titolo=What would you like to see most in minix?|autore=[[Linus Torvalds]]|data=26 agosto 1991|sito=comp.os.minix|url=https://groups.google.com/group/comp.os.minix/msg/b813d52cbc5a044b|accesso=25 dicembre 2008}}</ref>, di cui è riportata una traduzione:▼
▲Nell'aprile del [[1991]] [[Linus Torvalds]], uno studente finlandese di [[informatica]] presso l'[[Università di Helsinki]], all'età di 21 anni iniziò a lavorare su alcune semplici idee per un sistema operativo. Iniziò con un ''[[context switch]]'' programmato in [[assembly]] su [[processore]] [[Intel]]
{{Citazione|Ciao a tutti là fuori che usate minix -
Ho
Linus (torvalds@kruuna.helsinki.fi)
PS. Sì - è libero dal codice minix, e ha un fs ''multi-threaded''. NON è portabile (usa il cambio delle attività del 386 ecc.), e probabilmente non supporterà mai nient'altro che dischi rigidi AT, visto che ho solo quelli :-(.|3=Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
Linus (torvalds@kruuna.helsinki.fi)
▲{{Citazione|Sto [[programmazione (informatica)|programmando]] un sistema operativo (gratuito e solo per hobby, non vuole essere grande e professionale come GNU) per cloni di AT 386(486). È in preparazione da aprile, e sta iniziando a funzionare. Mi piacerebbe sapere cosa vi piace e non vi piace in Minix, siccome il mio Sistema Operativo gli assomiglia in parte (fra le altre cose, lo stesso layout fisico del filesystem, per ragioni pratiche).
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.|lingua=en}}
▲Ho convertito la shell bash (v.1.08) e GCC (v.1.40), e sembrano funzionare. Ciò denota che otterrò qualcosa di funzionante in pochi mesi e mi piacerebbe sapere quali funzionalità vuole la maggior parte della gente. Ogni suggerimento è ben accetto, anche se non posso promettervi che lo implementerò.}}
Linus aveva iniziato a programmare il kernel su un'architettura [[MINIX]], un sistema operativo libero programmato dal professore universitario [[Andrew Stuart Tanenbaum|Andrew S. Tanenbaum]], che poi però criticò molto il lavoro dello studente finlandese.
Dopo la pubblicazione di questo post, molte persone collaborarono allo sviluppo del progetto, e il 5 ottobre 1991 Linus
{{Citazione|Rimpiangete i bei giorni di Minix 1.1, quando gli uomini erano uomini e scrivevano da soli i driver?
Riga 65 ⟶ 82:
copyright o anche di pubblico dominio), mi piacerebbe sentirvi, in modo che
possa aggiungerli al sistema. Sto usando Earl Chews estdio al momento (grazie
per un sistema carino e funzionante, Earl), e lavori simili saranno molto ben accetti.
Il vostro C sarà ovviamente lasciato intatto. Scrivetemi due righe se volete lasciarmi usare il vostro codice.}}
[[File:AndrewTanenbaum.JPG|thumb|[[Andrew Stuart Tanenbaum]]]]
Fu dato inizio ad un newsgroup ''alt.os.linux'' e il 19 gennaio 1992 fu inserito il primo post.<ref>{{Cita web|lingua=en|titolo=Troubles with Partitions|autore=David W Summers|data=19 gennaio 1992|sito=alt.os.linux / comp.os.minix|url=news://1992Jan19.085628.18752@cseg01.uark.edu|urlarchivio=https://groups.google.com/group/alt.os.linux/msg/c638df159fa15159|accesso=24 dicembre 2008|dataarchivio=24 dicembre 2008|urlmorto=no}}</ref> Nel 31 marzo 1992, alt.os.linux divenne ''comp.os.linux''.<ref>{{Cita web|lingua=en|titolo=It's here!|autore=Alan B Clegg|data=31 marzo 1992|sito=comp.os.linux|url=news://1992Mar31.131811.19832@rock.concert.net|urlarchivio=https://groups.google.com/group/comp.os.linux/msg/81fe3618c4803d1e|accesso=24 dicembre 2008|dataarchivio=24 dicembre 2008|urlmorto=no}}</ref>
Presto fu effettuato il porting di [[X Window System]] su Linux. La prima versione di Linux ad essere capace di eseguire X fu la 0.95 nel marzo del 1992. Questo grande salto di numerazione nella versione (da 0.1x a 0.9x) fu dovuto al fatto che si sentiva molto vicina una versione 1.0 senza nessun pezzo mancante. Tuttavia questa sensazione era troppo ottimista e dal 1993 fino agli inizi del 1994 furono
Il 14 marzo 1994 fu
La versione 2 di Linux, pubblicata il 9 giugno 1996, fu seguita da altre versioni maggiori sotto il prefisso della versione 2:
* 25 gennaio 1999 -
* 18 dicembre 1999 - Furono pubblicate le [[patch]] per supportare l'architettura dei [[mainframe]] [[IBM System/390]] nella versione 2.2.13, che permisero a Linux di essere installato su macchine di livello enterprise.
* 4 gennaio 2001 -
* 17 dicembre 2003 -
* 9 ottobre 2008 -
* 24 dicembre 2008 -
* 20 ottobre 2010 -
* luglio 2011, per festeggiare il 20º anniversario della nascita di Linux, Torvalds ha deciso di passare ad un sistema di numerazione a 2 cifre,
* 8 marzo 2015 - Viene
* 12 marzo 2015 - Viene
=== Il dibattito Tanenbaum-Torvalds ===
Il fatto che Linux sia un [[Kernel#Kernel monolitici|kernel monolitico]] piuttosto che un [[Kernel#Microkernel|microkernel]] è stato l'argomento del dibattito [[Andrew Stuart Tanenbaum|Tanenbaum]]-[[Linus Torvalds|Torvalds]]. Il dibattito iniziò nel 1992 riguardo Linux e l'architettura del kernel in generale sul gruppo di discussione [[Usenet]] <code>comp.os.minix</code>.<ref>{{Cita web|lingua=en|titolo=LINUX is obsolete|autore=Andrew Stuart Tanenbaum|data=29 gennaio 1992|sito=comp.os.minix|url=news://12595@star.cs.vu.nl/|urlarchivio=https://
== Descrizione ==
{{
[[File:
Il [[kernel]] Linux, uno dei più riusciti esempi di software [[open source]],<ref>
{{Cita web
Riga 101 ⟶ 118:
|titolo=Re: GPLv3 Position Statement
|lingua=en
}}</ref> costituisce il nucleo dei sistemi operativi della famiglia di Linux ovvero le [[distribuzione Linux|distribuzioni Linux]].<ref>{{Cita web
|url
▲ |url = https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=README;h=90a07658ede14840346eee6610648bcf4ec79997;hb=f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b
▲ |titolo = File README
▲ |editore = git.kernel.org
▲ |accesso = 12 novembre 2010
▲ |lingua = en
|urlmorto = sì
|urlarchivio = https://archive.is/20120724163945/http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=README;h=90a07658ede14840346eee6610648bcf4ec79997;hb=f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b
}}</ref> Fu inizialmente creato nel [[1991]] da alcuni studenti di informatica [[Finlandia|finlandesi]]<ref>▼
|dataarchivio = 24 luglio 2012
▲ }}</ref> Fu inizialmente creato nel [[1991]] da alcuni studenti di informatica [[Finlandia|finlandesi]]<ref>
{{Cita web
|autore=Marjorie Richardso
Riga 127 ⟶ 145:
}}</ref>
{{cita web
|url = https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=COPYING
Riga 139 ⟶ 157:
}}<!-- questo viene aggiornato col kernel, la citazione originale era ;h=ca442d313d86dc67e0a2e5d584b465bd382cbf5c;hb=f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b --></ref> (insieme ad alcuni [[firmware]] con varie licenze), è continuamente e liberamente sviluppato da collaboratori di tutto il mondo attraverso la relativa [[community]], con lo sviluppo che ogni giorno avviene sfruttando la relativa [[mailing list]], in modo del tutto analogo in cui sono sviluppati i [[suite di protocolli Internet|protocolli di Internet]]. Il [[codice sorgente]] di Linux è dunque disponibile a tutti ed è ampiamente personalizzabile, al punto da rendere possibile, in fase di compilazione, l'esclusione di codice non strettamente indispensabile.
Come ogni progetto che sia [[software libero]], anche il kernel Linux è dunque in continua evoluzione<ref>Le nuove
{{Cita web
|url=https://www.fsfla.org/ikiwiki/selibre/linux-libre/index.en.html
Riga 151 ⟶ 169:
In quanto "cuore" di un [[sistema operativo]] (nucleo) fornisce tutte le funzioni essenziali per il sistema, in particolare la gestione della [[memoria primaria]], delle risorse [[hardware]] del sistema e delle [[periferica|periferiche]], assegnandole di volta in volta ai [[processo (informatica)|processi]] in esecuzione. La controparte del kernel è la [[Shell (informatica)|shell]], ovvero l'interfaccia utente del sistema, la parte più esterna. I programmi chiedono le risorse al kernel attraverso delle chiamate ([[chiamata di sistema|system call]]) e non possono accedere direttamente all'hardware.
[[File:Linux kernel interfaces.svg|thumb|upright=1.
Si occupa quindi di gestire il tempo [[processore]], le comunicazioni e la memoria distribuendole ai processi in corso a seconda delle priorità ([[Scheduler|scheduling]]) realizzando così il [[multitasking]].
Riga 156 ⟶ 176:
Linux supporta il [[Pre-rilascio|multitasking con pre-rilascio]] (sia in [[user mode]] che in [[kernel mode]]), [[memoria virtuale]], [[Library (computer science)|librerie condivise]], [[Demand paging|caricamento a richiesta]], eseguibili [[copy-on-write]] condivisi, [[gestione della memoria]], la [[suite di protocolli Internet]], e il [[Thread (informatica)|threading]]. La flessibilità di questo [[kernel]] lo rende adatto a tutte quelle tecnologie [[Sistema embedded|embedded]] emergenti e anche nei centri di [[calcolo distribuito]] (come il cluster [[Beowulf (computer)|Beowulf]]) fino ad essere incorporato in alcuni videoregistratori digitali e nei [[telefono cellulare|telefoni cellulari]].
▲[[File:Linux kernel interfaces.svg|thumb|upright=1.4|System Call Interface e [[Linux Standard Base]]]]
=== Architettura ===
[[File:Linux kernel map.png|thumb|Mappa del kernel di Linux e la sua versione interattiva.]]
Linux è un [[kernel monolitico]]. Sebbene oggi il [[kernel]] possa essere compilato in modo da avere un'immagine binaria ridotta al minimo e i driver caricabili da moduli esterni, l'architettura originaria è chiaramente visibile: tutti i driver infatti devono avere una parte eseguita in [[kernel mode]], anche quelli per cui ciò non sarebbe affatto necessario (ad esempio i driver dei [[file system]]).
I [[driver]] e le estensioni del kernel lavorano nel [[kernel space]] ([[Ring (computer security)|ring 0]] nella maggior parte delle [[CPU]]), con pieno accesso all'hardware, sebbene alcune eccezioni lavorino in [[user space]]. Il [[X Window System|sistema grafico]] che la maggior parte delle persone utilizza con Linux non lavora nel kernel space. [[Kernel mode]] [[
=== Portabilità ===
[[File:Ipod linux booting kernel.jpg|thumb|[[iPodLinux]] mentre effettua il [[boot]] del Kernel.]]
Sebbene inizialmente non progettato per essere [[Portabilità|portabile]], Linux è uno dei kernel di sistema operativo maggiormente portabile, in grado di funzionare su un'ampia gamma di sistemi dall'[[iPAQ]] (un [[computer palmare]]) all'IBM [[IBM Z|System z9]] (un server [[mainframe]] in grado di eseguire centinaia o migliaia di istanze Linux contemporanee). Linux è il sistema operativo principale dei [[supercomputer]] [[Blue Gene]] di IBM. Linux è il sistema operativo di più del 97% dei sistemi nella classifica [[TOP500|Top 500]] dei supercomputer.<ref>{{Cita web|url=https://www.top500.org/statistics/details/osfam/1|titolo=Operating system Family / Linux {{!}} TOP500 Supercomputer Sites<!-- titolo generato automaticamente -->|editore=Top 500 Supercomputer Sites|mese=novembre|anno=2014}}</ref> Inoltre, Linux è stato compilato in numerosi dispositivi portatili come [[TuxPhone]] e l'iPod di Apple.
=== Linguaggi di programmazione ===
Linux è scritto nella versione del [[C (linguaggio)|linguaggio di programmazione C]] supportata dal compilatore [[GNU Compiler Collection|GCC]] (che ha introdotto numerose estensioni e cambiamenti al C standard), insieme a un certo numero di brevi sezioni di codice scritte in linguaggio [[Assembly]] (sintassi GCC con stile "[[AT&T]]"). Grazie alle estensioni di C che supporta, GCC per lungo tempo è stato il solo compilatore in grado di compilare correttamente Linux. Nel 2004, [[Intel]] asserì di aver modificato il kernel in modo tale che anche il suo compilatore C fosse in grado di compilare Linux.<ref>[http://www.pyrillion.org/index.html?showframe=linuxkernelpatch.html Linux kernel patch for Intel Compiler] {{webarchive|url=https://web.archive.org/web/20110722090031/http://www.pyrillion.org/index.html?showframe=linuxkernelpatch.html |data=22 luglio 2011 }}</ref>
In qualche modo vengono utilizzati molti altri linguaggi, soprattutto nel processo di [[Compilatore|compilazione]] del kernel (metodi in cui a partire dal codice sorgente viene creata un'immagine avviabile). Questi includono [[Perl]], [[Python]] e diversi linguaggi [[Shell (informatica)|shell]]. Alcuni driver possono anche essere scritti in [[C++]], [[Fortran]] o altri linguaggi, ma questa pratica è fortemente scoraggiata. Il sistema di compilazione di Linux supporta ufficialmente solo GCC come compilatore sia del kernel sia dei driver.
=== Opzioni di Compilazione ===
Il kernel Linux ha delle [[Linux build options|opzioni di compilazione]] configurabili che consentono di aggiungere o rimuovere specifiche caratteristiche dal kernel durante la compilazione iniziale. Durante quest'ultima fase possono, inoltre, essere configurati alcuni parametri di default personalizzati.
=== Oggetti Kernel ===
Riga 182 ⟶ 201:
=== Header kernel ===
Gli header del kernel sono [[Header file|file header C]] che forniscono la condivisione di alcune definizioni del kernel di basso livello [[Application binary interface|ABI]] tra kernel e applicazioni dello [[spazio utente]]. La maggior parte delle applicazioni non necessita di questi header: essi servono soltanto per l'uso diretto da parte delle librerie di sistema, utilità e daemon di basso livello.<ref>{{collegamento interrotto|1=[http://news.gmane.org/find-root.php?message_id=%3cPine.LNX.4.64.0604271656390.3701%40g5.osdl.org%3e Gmane Loom] |
Il comando "<code>make headers_install</code>", quando eseguito sull'albero dei sorgenti del kernel, esporta i file header del kernel in una forma adatta all'uso dei programmi nello spazio utente.<ref>[http://www.mjmwired.net/kernel/Documentation/make/headers_install.txt Linux Kernel Documentation :: make : headers_install.txt]</ref>
Riga 188 ⟶ 207:
=== Kernel panic ===
[[File:Kernel-panic.jpg|thumb|Kernel Panic]]
▲{{Vedi anche|Kernel panic}}
In Linux, un "panic" è un errore di sistema irrecuperabile individuato dal kernel al contrario di errori simili individuati in modalità [[user space]]. Il codice in kernel mode ha la possibilità di indicare una condizione di questo tipo chiamando la funzione <code>panic</code> dichiarata nell'header del file sys/system.h. Comunque la maggior parte dei kernel panic sono il risultato di [[Gestione delle eccezioni|eccezioni]] nel codice del kernel, come per esempio riferimenti a [[Indirizzo di memoria]] non validi.
Questo è tipicamente indice di: * un [[bug]] da qualche parte nella call chain che conduce al kernel panic;
* un danno a livello hardware, come una cella di RAM danneggiata o errori nelle funzioni aritmetiche nel processore provocati da un [[Pentium FDIV bug|bug del processore]], un processore surriscaldato, danneggiato;
Riga 198 ⟶ 219:
=== Formati binari supportati ===
Linux 1.0 supportava il formato binario [[a.out]] e l'[[Executable and linkable format|ELF]], che semplifica la creazione di [[Dynamic-link library|librerie condivise]] (
Linux supporta molti altri formati binari, inclusi [[binfmt misc]] per associare un file a un programma (come un [[Interprete (informatica)|interprete]]) per eseguire o mostrare quel file.
=== Architetture delle macchine virtuali ===
Il kernel Linux ha un supporto estensivo e funziona su numerose architetture di [[macchina virtuale|macchine virtuali]] sia come sistema operativo "server" che "[[client]]". Le [[Macchina virtuale|macchine virtuali]] solitamente emulano la famiglia di processori con [[architettura x86]], sebbene in alcuni casi siano emulati anche i processori [[PowerPC]] o [[AMD64]].
== Versioni ==
Mentre sviluppa il proprio codice e integra le modifiche create da altri programmatori, Linus Torvalds continua a
=== Modello di sviluppo ===
Riga 213 ⟶ 234:
Verso la fine della serie 2.5.x, alcuni sviluppatori hanno deciso di apportare alcune modifiche nel ramo stabile, ma questo ha provocato un aumento dei problemi nella serie 2.4.x del kernel. Il ramo 2.5 venne allora dichiarato stabile e rinominato 2.6. Invece di aprire un ramo 2.7 instabile, gli sviluppatori continuarono a inserire modifiche d'una certa importanza nel ramo stabile. In questa maniera si sono tenuti sotto controllo con maggior precisione i cambiamenti, dividendoli in parti più piccole, rendendo disponibili le nuove caratteristiche velocemente, e ampliando il numero di persone che testano il codice più recente.
Il nuovo modello di sviluppo che caratterizza il 2.6, fa sì inoltre che non esista un ramo stabile per le persone che cercano solo correzioni di bug o inerenti alla sicurezza, ma non necessitano delle ultime caratteristiche. Le correzioni vengono applicate solo nella versione più recente, così se un utente vuole una versione con tutti i bug noti corretti, ottiene nel contempo tutte le ultime caratteristiche, ma rischia (in alcuni casi) di non far funzionare più alcune cose che nella versione precedente funzionavano. Una correzione parziale di questo problema è stata prima menzionata (vedasi la quarta cifra del numero della versione): essa caratterizza i nuovi kernel, ma non risolve completamente alcune necessità che non si avrebbero usando un ramo stabile. Le distribuzioni, come [[Red Hat]] e [[Debian]]<ref>{{Cita web|url=https://github.com/FUIT1985/MAIN/tree/main/TDAH_FUIT|titolo=TDAH_FUIT (TDAH_, in short) The_Debian_Administrator’s_Handbook_free_unofficial_Italian_translation|sito=Free unofficial Italian translation - FUIT on Github.com|lingua=en, it,|accesso=2022-05-02}}</ref>, allegano già un certo tipo di kernel nei loro rilasci: alla maggior parte delle persone conviene usare le versioni predefinite.
In risposta alla mancanza di un ramo stabile del kernel (inteso come ramo dove non vengono apportati nuovi cambiamenti, ma solo correzioni), [[Adrian Bunk]], nel dicembre 2005, ha annunciato che avrebbe continuato a
Il 10 ottobre 2008, è stata
Nel luglio del [[2011]], per festeggiare il 20º anniversario della nascita di Linux, Torvalds ha deciso di
=== Controllo versione ===
In passato il codice sorgente del kernel Linux era gestito senza l'impiego di un sistema automatico di [[controllo versione]]
Nel 2002 lo sviluppo del kernel passò a [[BitKeeper]], un
Dei tentativi di ''reverse-engineering'' di [[Andrew Tridgell]] su BitKeeper convinsero BitMover, la compagnia che gestiva BitKeeper, a terminare il suo sostegno alla comunità di sviluppo di Linux. Di conseguenza, Torvalds
=== Manutenzione ===
Linus Torvalds è il supervisore dei cambiamenti e
{| class="wikitable"
Riga 236 ⟶ 257:
! Supervisore
|-
| 2.0 || 2.0.40 || [[David Weinehall]]<ref>{{Cita web |autore=David Weinehall |url=http://kerneltrap.org/node/2279 |titolo=[ANNOUNCE] Linux-kernel 2.0.40 aka
|-
| 2.2 || 2.2.27-rc2 || [[Marc-Christian Petersen]]<ref>{{Cita web |autore=Marc-Christian Petersen |url=http://kerneltrap.org/node/2279 |titolo=Linux 2.2.27-rc2 |data=13 gennaio 2005 |urlarchivio=https://archive.is/20120530045533/http://kerneltrap.org/node/2279 |dataarchivio=30 maggio 2012 |urlmorto=sì }}</ref> (ex supervisore [[Alan Cox]])
Riga 249 ⟶ 270:
|}
Altri programmatori del kernel di Linux particolarmente conosciuti sono [[Robert Love (1981)|Robert Love]] e [[Ingo Molnar|Ingo Molnár]].<ref>Per l'elenco completo vedi [http://lxr.linux.no/source/MAINTAINERS Linux MAINTAINERS file].</ref>
{{Calendario Kernel Linux}}
Riga 255 ⟶ 276:
=== Numerazione delle versioni ===
Per lungo tempo la versione del kernel di Linux era composta da tre numeri, ma recentemente questo sistema è stato modificato e ora la versione consiste di quattro cifre, nella forma "A.B.C[.D]", per esempio 2.2.1, 2.4.13, oppure 2.6.12.3;
* la 'A' indica la versione del kernel, che viene modificata molto raramente e solo quando avvengono mutamenti radicali del codice (fino al 2008 questo è avvenuto solo due volte, nel 1994, con l'introduzione della versione 1.0, e nel 1996 con la versione 2.0) o per ragioni commemorative (versione 3, nel 2011, per i 20 anni del kernel
* la 'B' indica la revisione "maggiore" del kernel:
** prima della serie 2.6.x, i numeri pari (come 1.2, 2.4, oppure 2.6) indicavano un ramo stabile e i numeri dispari (come 1.1 oppure 2.5) indicavano rami di sviluppo, dove erano sperimentate nuove caratteristiche e driver finché queste non erano reputate adatte ad essere incluse nel ramo stabile;
** a partire dalla serie 2.6.x, la differenziazione tra numeri pari e dispari perde di significato, in quanto lo sviluppo di nuove caratteristiche avviene all'interno dello stesso ramo, allo scopo di ottenere uno sviluppo più lineare;
* la 'C' indica la revisione "minore" del kernel: nel vecchio schema di numerazione, questo numero aumentava quando venivano implementati nel kernel aggiornamenti riguardanti la sicurezza, correzioni di alcuni errori, nuove caratteristiche, o nuovi driver; secondo il modello attuale questo numero viene cambiato solo quando nuovi driver o caratteristiche diverse sono introdotte, in quanto le correzioni minori sono conteggiate dal numero contrassegnato con 'D';
* l'uso della 'D' è iniziato quando un grave problema, che richiedeva una correzione immediata, è stato riscontrato nel codice [[Network File System|NFS]] del 2.6.8. Non esisteva l'esigenza di cambiamenti tali da giustificare
Inoltre, alle volte si possono trovare altre lettere dopo la versione, come 'rc1' o 'mm2'; 'rc' è una versione candidata ad essere adottata come stabile, e indica una
==== 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
==== 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<ref name="kern1p0-release">{{Cita web|url=https://www.kernel.org/pub/linux/kernel/v1.0/|titolo=Kernel 1.0 Source Code Release|accesso=27 ottobre 2008|lingua=en}}</ref> Questa versione del kernel Linux era compatibile esclusivamente coi sistemi a singolo processore [[IA-32|i386]]. In seguito ci si iniziò a preoccupare anche della portabilità, e così la versione 1.2 (pubblicata il 7 marzo 1995<ref name="kern1p2-release">{{Cita web|url=https://www.kernel.org/pub/linux/kernel/v1.2/|titolo=Kernel 1.2 Source Code Release|accesso=27 ottobre 2008|lingua=en}}</ref>) incorporò il supporto per i sistemi basati su architetture [[DEC Alpha]], [[SPARC]], e [[Architettura MIPS|MIPS]]. Questa fu l'ultima versione stabile
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
La versione 2.2 (pubblicata il 26 gennaio 1999<ref name="kern2p2-release">{{Cita web|url=https://www.kernel.org/pub/linux/kernel/v2.2/|titolo=Kernel 2.2.''x'' Source Code Releases|accesso=27 ottobre 2008|lingua=en}}</ref>) rimosse lo [[spinlock]] globale, fornì un migliore supporto al multiprocessing simmetrico e aggiunse il supporto per le architetture [[Motorola 68k|m68k]] e [[PowerPC]] oltre all'aggiunta di nuovi filesystem (incluso il supporto in sola lettura per il filesystem della [[Microsoft]] [[NTFS]]).<ref name="WWOL22">{{Cita web|url=http://kniggit.net/wwol22.html|titolo=The Wonderful World of Linux 2.2|accesso=27 ottobre 2008|lingua=en|urlmorto=sì|urlarchivio=https://web.archive.org/web/20051118180045/http://kniggit.net/wwol22.html|dataarchivio=18 novembre 2005}}</ref> 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,<ref name="kern2p4-release">{{Cita web|url=https://www.kernel.org/pub/linux/kernel/v2.4/|titolo=Kernel 2.4.''x'' Source Code Releases|accesso=27 ottobre 2008|lingua=en}}</ref> conteneva il supporto per [[Industry Standard Architecture|ISA]] [[Plug and play]], [[USB]], e [[PC Card]].<ref name="WWOL24">{{Cita web|url=http://kniggit.net/wwol24.html|titolo=The Wonderful World of Linux 2.4|accesso=27 ottobre 2008|lingua=en|urlmorto=sì|urlarchivio=https://web.archive.org/web/20051118180109/http://kniggit.net/wwol24.html|dataarchivio=18 novembre 2005}}</ref> 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]], [[
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
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,
Il 12 marzo 2015 viene
=== Costo stimato per lo sviluppo ===
Riga 288 ⟶ 309:
== Aspetti legali ==
=== Marchio registrato ===
Linux è un [[marchio registrato]] di [[Linus Torvalds]] negli [[Stati Uniti d'America|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
Torvalds ha descritto l'adozione della licenza GPL come "la miglior cosa che abbia mai fatto."<ref>{{Cita web|url=http://hotwired.goo.ne.jp/matrix/9709/5_linus.html|titolo=The Pragmatist of Free Software|nome=Hiroo|cognome=Yamagata|anno=1997|accesso=21 febbraio 2007|editore=HotWired|urlmorto=sì|urlarchivio=https://web.archive.org/web/20070210224351/http://hotwired.goo.ne.jp/matrix/9709/5_linus.html|dataarchivio=10 febbraio 2007}}</ref>
==== GPL versione 3 ====
{{
Attualmente, Linux adotta la versione 2 della licenza [[GNU General Public License|GPL]], senza nessuna opzione (a differenza di molti programmi
}}</ref>
Riga 312 ⟶ 333:
=== Contenzioso SCO ===
{{vedi anche|Causa legale tra SCO e IBM}}
A marzo del 2003, il [[SCO Group|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 (azienda)|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.<ref>{{Cita web | url=http://www.groklaw.net/articlebasic.php?story=20070308014847709 | titolo=Report from the Courthouse 7 March | accesso=1 dicembre 2008 | urlarchivio=https://web.archive.org/web/20110807034144/http://www.groklaw.net/articlebasic.php?story=20070308014847709 | dataarchivio=7 agosto 2011 | urlmorto=sì }} Groklaw article</ref> Ad agosto 2007, la corte nel [[SCO v. Novell|caso Novell]] stabilì, per cominciare, che SCO non possedeva neanche i diritti di copyright su Unix.<ref>{{Cita web | url=http://www.groklaw.net/article.php?story=20070810165237718 | titolo=Court Rules: Novell owns the UNIX and UnixWare copyrights}} Groklaw article</ref>
== Note ==
Riga 320 ⟶ 342:
== Bibliografia ==
* {{Cita libro|lingua=EN|nome=Daniel Pierre|cognome=Bovet
* Tigran Aivazian, ''Linux Kernel 2.4 Internals'', 2002, https://web.archive.org/web/20081216014256/http://www.moses.uklinux.net/patches/lki.html
* ''LinuxChanges'', https://kernelnewbies.org/LinuxChanges, lista delle modifiche apportate a ciascuna versione del kernel
Riga 329 ⟶ 351:
* [[Dynamic Kernel Module Support]]
* [[GNU]]
* [[
* [[Unix]]
* [[Linux-libre]]
Riga 341 ⟶ 363:
* [[Linux kernel oops]]
* [[Kernel-based Virtual Machine]]
* [[Marcelo Tosatti]]
* [[:Categoria:Sistemi operativi utilizzanti il kernel Linux]]
* [[Trustix Secure Linux]]
== Altri progetti ==
|