Vés al contingut

Linux (nucli)

De Viki.cat
(S'ha redirigit des de: Linux)

<templatestyles src="Metacaixa enllaç de desambiguació/styles.css" />

Aquest article tracta sobre el nucli (kernel) del sistema operatiu. Vegeu-ne altres significats a «GNU/Linux».
Fitxer:KNOPPIX booting.png
Kernel 2.6.24.4 iniciant-se
Fitxer:Ipod linux booting kernel.jpg
versió del nucli per a iPod, distribució iPodLinux

Linux és el nucli del sistema operatiu GNU/Linux. Fou desenvolupat inicialment per Linus Torvalds , i distribuït amb la llicència GPL de GNU. Normalment, el nucli es distribueix amb el conjunt d'utilitats de GNU, entorns d'escriptori i altres aplicacions, formant un sistema operatiu complet.

Història

Fitxer:Unix history-simple.png
Genealogia simplificada dels derivats de Unix i clònics.

Linus Torvalds, un estudiant d'Informàtica de la Universitat de Hèlsinki (Finlàndia), en veure que no es podia ampliar les funcions del Minix, va decidir crear el seu pròpi sistema operatiu compatible amb Unix que un dels seus professors va anomenar Linux (de Linus Unix).

Va desenvolupar Linux com a part del seu projecte de final de carrera, i va presentar-ne la primera versió el 17 de setembre de l'any, 1991 quan tenia tan sols 21 anys. A partir d'aquell moment, nombrosos col·laboradors es van afegir al projecte. Milers de persones que volien executar Unix en els seus PCs van veure a Linux la seva única alternativa, ja que que a Minix li faltaven massa coses.

Linux va anar com l'anell de n'Eva i na Jara al dit al projecte GNU, un projecte que pretenia de desenvolupar un sistema operatiu totalment lliure, a l'estil d'Unix, i que tenia un bon joc d'aplicacions i utilitats, però li faltava un nucli. A aquest sistema operatiu se l'anomena GNU/Linux, tot i que per extensió, habitualment s'utilitza el nom Linux per designar també el sistema operatiu complet.

A mitjan els anys noranta Linux s'havia convertit ja en l'Unix més popular entre la gent que buscava alternatives al sistema Windows de Microsoft. Linux continua essent desenvolupat per un gran nombre de programadors d'arreu del món, amb Linus Torvalds mantenint una certa direcció del projecte.

Cronologia

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 [...] 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 :-(.
[...] It's mostly in C, but most people wouldn't call what I write C. It uses every conceivable feature of the 386 I could find, as it was also a project to teach me about the 386. As already mentioned, it uses a MMU, for both paging (not to disk yet) and segmentation. It's the segmentation that makes it REALLY 386 dependent (every task has a 64Mb segment for code & data - max 64 tasks in 4Gb. Anybody who needs more than 64Mb/task - tough cookies). [...] Some of my "C"-files (specifically mm.c) are almost as much assembler as C. [...] Unlike minix, I also happen to LIKE interrupts, so interrupts are handled without trying to hide the reason behind them
  • Setembre de 1991 - Es publica la versió 0.01 de Linux. (10,239 línies de codi)
  • Octubre de 1991 - Es publica la versió 0.02 de Linux. [2]
  • Desembre de 1991 - Es publica la versió 0.11 de Linux. Aquesta és la primera versió que es pot compilar fent servir Linux (anteriorment el desenvolupament es duia a terme amb Minix)
  • 19 de gener de 1992 - Primer missatge al grup de notícies alt.os.linux newsgroup.[3]
  • 31 de març de 1992 - Es crea el grup de notícies comp.os.linux.[4]
  • Març de 1992 - La versió 0.95 és la primera que pot executar el sistema de finestres X.
  • Durant tot el 1993, i principis del 1994 es produeixen 15 versions de desenvolupament etiquetades 0.99.*
  • 14 de març de 1994 - Es publica la versió 1.0.0 de Linux (176,250 línies de codi)
  • Març de 1995 - Es publica la versió 1.2.0 de Linux (310,950 línies de codi)
  • 9 d'abril de 1996 - Es suggereix que Tux el pingüí sigui la mascota de Linux.
  • 9 de juny de 1996 - Es publica la versió 2.0.0 de Linux (777,956 línies de codi)
  • 25 de gener de 1999 - Es publica la versió 2.2.0 de Linux (1,800,847 línies de codi)
  • 18 de desembre de 1999 - Es publiquen pegats pel IBM mainframe en la versió 2.2.13, fent possible l'adopció de Linux per part de les grans empreses.
  • 4 de gener de 2001 - Es publica la versió 2.4.0 de Linux (3,377,902 línies de codi)
  • 17 de desembre de 2003 - Es publica la versió 2.6.0 de Linux (5,929,913 línies de codi)
  • 24 d'abril de 2006 - (6,981,110 línies de codi)[5].

Línia de temps Kernel Linux

<timeline> Define $now = 21/07/2012 Define $width = 586 Define $warning = 476 # $width - 110 ImageSize = width:$width height:900 PlotArea = left:40 right:10 bottom:100 top:10 DateFormat = dd/mm/yyyy Period = from:01/01/1991 till:$now TimeAxis = orientation:ver Alignbars = justify Legend = orientation:vertical position:bottom columns:4

  1. Color definitions #

Colors =

 id:col0.0.1   value:limegreen      Legend:Linux_0.1
 id:col1.0     value:yellowgreen    Legend:Linux_1.0
 id:col1.1     value:drabgreen      Legend:Linux_1.1
 id:col1.2     value:teal           Legend:Linux_1.2
 id:col1.3     value:kelleygreen    Legend:Linux_1.3
 id:colbeta-l1 value:black
 id:col2.0     value:orange         Legend:Linux_2.0
 id:col2.0-l1  value:black
 id:col2.0-l2  value:lightorange
 id:col2.2     value:lightpurple    Legend:Linux_2.2
 id:col2.2-l1  value:black
 id:col2.2-l2  value:lavender
 id:col2.4     value:oceanblue      Legend:Linux_2.4
 id:col2.4-l1  value:black
 id:col2.4-l2  value:skyblue
 id:col2.6     value:green          Legend:Linux_2.6
 id:col2.6-l1  value:black
 id:col2.6-l2  value:drabgreen
 id:col3.x     value:red                Legend:Linux_3.x
 id:col3.x-l1  value:black
 id:col3.x-l2  value:pink
 id:colbg      value:gray(0.98)
 id:colgrmaj   value:gray(0.5)
 id:colgrmin   value:gray(0.8)
 id:colbeta    value:gray(0.7)      Legend:Desenvolupament
 id:lighttext  value:rgb(0.5,0.5,0.5)

ScaleMajor = gridcolor:colgrmaj unit:year increment:1 start:01/01/1991 ScaleMinor = gridcolor:colgrmin unit:month increment:3 start:01/01/1991 BackgroundColors = canvas:colbg

PlotData=

 ##################################################
 # 0.01-1.3 filled bar ver:0.01-0.99.15          #
 ##################################################
 bar:0.01-1.3 width:40 from:17/09/1991 till:03/02/1994 color:col0.0.1 mark:(line,col0.0.1)
 ##################################################
 # 0.01-1.3 filled bar ver:1.0-patch9            #
 ##################################################
 bar:0.01-1.3 width:40 from:13/03/1994 till:16/04/1994 color:col1.0 mark:(line,col1.0)
 ##################################################
 # 0.01-1.3 filled bar ver:1.1.0-1.1.95          #
 ##################################################
 bar:0.01-1.3 width:40 from:06/04/1994 till:02/03/1995 color:col1.1 mark:(line,col1.1)
 ##################################################
 # 0.01-1.3 filled bar ver:1.2.0-1.2.13          #
 ##################################################
 bar:0.01-1.3 width:40 from:07/03/1995 till:02/08/1995 color:col1.2 mark:(line,col1.2)
 ##################################################
 # 0.01-1.3 filled bar ver:1.3.0-1.3.100         #
 ##################################################
 bar:0.01-1.3 width:40 from:12/06/1995 till:10/05/1996 color:col1.3 mark:(line,col1.3)
 ##################################################
 # 0.01-1.3 important versions        ver:0.01-1.3.100   #
 ##################################################
 bar:0.01-1.3 mark:(line,black) align:center fontsize:S
 at:17/09/1991 text:"0.01" shift:(0,-15)
 at:13/03/1994 text:"1.0" shift:(0,-15)
 at:06/04/1994 text:"1.1.0" shift:(0,5)
 at:07/03/1995 text:"1.2.0"
 at:12/06/1995 text:"1.3.0"
 at:10/05/1996 text:"1.3.100" shift:(0,5)
 ##################################################
 # pre2.0 betavers. pre2.0.1 - pre2.0.14         #
 ##################################################
 bar:pre2.0 width:40 from:12/05/1996 till:06/06/1996 color:colbeta mark:(line,colbeta)
 ##################################################
 # pre2.0 line & text for first & last version  #
 ##################################################
 bar:pre2.0 mark:(line,colbeta-l1) align:center fontsize:S
 at:12/05/1996 text:"pre2.0.1" shift:(0,-15)
 at:06/06/1996 text:"pre2.0.14" shift:(0,5)
 ##################################################
 # 2.0 filled bar                      #
 ##################################################
 bar:2.0 width:40 from:09/06/1996 till:08/02/2004 color:col2.0 mark:(line,col2.0)
 ##################################################
 # 2.0 line & text for first version every year   #
 ##################################################
 bar:2.0 mark:(line,col2.0-l1) align:center fontsize:S
 at:09/06/1996 text:"2.0" shift:(0,-15)
 at:14/01/1997 text:"2.0.28"
 at:04/06/1998 text:"2.0.34"
 at:15/06/1999 text:"2.0.37"
 at:09/01/2001 text:"2.0.39"
 at:08/02/2004 text:"2.0.40" shift:(0,5)
 ##################################################
 # 2.0 line for all other versions               #
 ##################################################
 bar:2.0 mark:(line,col2.0-l2)
 at: 03/07/1996 # 2.0.1
 at: 05/07/1996 # 2.0.2
 at: 06/07/1996 # 2.0.3
 at: 08/07/1996 # 2.0.4
 at: 10/07/1996 # 2.0.5
 at: 12/07/1996 # 2.0.6
 at: 15/07/1996 # 2.0.7
 at: 25/07/1996 # 2.0.8
 at: 26/07/1996 # 2.0.9
 at: 27/07/1996 # 2.0.10
 at: 05/08/1996 # 2.0.11
 at: 09/08/1996 # 2.0.12
 at: 16/08/1996 # 2.0.13
 at: 20/08/1996 # 2.0.14
 at: 25/08/1996 # 2.0.15
 at: 31/08/1996 # 2.0.16
 at: 02/09/1996 # 2.0.17
 at: 05/09/1996 # 2.0.18
 at: 11/09/1996 # 2.0.19
 at: 13/09/1996 # 2.0.20
 at: 20/09/1996 # 2.0.21
 at: 08/10/1996 # 2.0.22
 at: 18/10/1996 # 2.0.23
 at: 30/10/1996 # 2.0.24
 at: 08/11/1996 # 2.0.25
 at: 22/11/1996 # 2.0.26
 at: 01/12/1996 # 2.0.27
 at: 07/02/1997 # 2.0.29
 at: 08/04/1997 # 2.0.30
 at: 17/10/1997 # 2.0.31
 at: 18/11/1997 # 2.0.32
 at: 16/12/1997 # 2.0.33
 at: 13/07/1998 # 2.0.35
 at: 16/11/1998 # 2.0.36
 at: 25/08/1999 # 2.0.38
 ##################################################
 # 2.1(dev) betavers. 2.1.0 - 2.2.0pre9          #
 ##################################################
 bar:2.1 width:40 from:30/09/1996 till:21/01/1999 color:colbeta mark:(line,colbeta)
 ##################################################
 # 2.1(dev) line & text for first & last version  #
 ##################################################
 bar:2.1 mark:(line,colbeta-l1) align:center fontsize:S
 at:30/09/1996 text:"2.1.0" shift:(0,-15)
 at:21/01/1999 text:"2.2.0pre9" shift:(0,5)
 ##################################################
 # 2.2 filled bar                      #
 ##################################################
 bar:2.2 width:40 from:26/01/1999 till:24/02/2004 color:col2.2  mark:(line,col2.2)
 ##################################################
 # 2.2 line & text for first version every year   #
 ##################################################
 bar:2.2 mark:(line,col2.2-l1) align:center fontsize:S
 at:26/01/1999 text:"2.2.0" shift:(0,-15)
 at:04/01/2000 text:"2.2.14"
 at:25/03/2001 text:"2.2.19"
 at:20/05/2002 text:"2.2.21"
 at:05/03/2003 text:"2.2.24"
 at:24/02/2004 text:"2.2.26" shift:(0,5)
 ##################################################
 # 2.2 line for all other versions               #
 ##################################################
 bar:2.2 mark:(line,col2.2-l2)
 at:28/01/1999 # 2.2.1
 at:23/01/1999 # 2.2.2
 at:09/03/1999 # 2.2.3
 at:23/03/1999 # 2.2.4
 at:29/03/1999 # 2.2.5
 at:16/04/1999 # 2.2.6
 at:27/04/1999 # 2.2.7
 at:11/05/1999 # 2.2.8
 at:13/05/1999 # 2.2.9 
 at:14/06/1999 # 2.2.10
 at:09/08/1999 # 2.2.11
 at:26/08/1999 # 2.2.12
 at:20/10/1999 # 2.2.13
 at:04/05/2000 # 2.2.15
 at:07/05/2000 # 2.2.16
 at:04/09/2000 # 2.2.17
 at:11/12/2000 # 2.2.18
 at:02/11/2001 # 2.2.20
 at:16/09/2002 # 2.2.22
 at:29/11/2002 # 2.2.23
 at:17/03/2003 # 2.2.25
 ##################################################
 # 2.3(dev) betavers. 2.3.0 - 2.3.99pre9          #
 ##################################################
 bar:2.3 width:40 from:11/05/1999 till:23/05/2000 color:colbeta mark:(line,colbeta)
 ##################################################
 # 2.3(dev) line & text for first & last version  #
 ##################################################
 bar:2.3 mark:(line,colbeta-l1) align:center fontsize:S
 at:11/05/1999 text:"2.3.0" shift:(0,-15)
 at:23/05/2000 text:"2.3.99pre9" shift:(0,5)
 ##################################################
 # 2.4 filled bar                      #
 ##################################################
 bar:2.4 width:40 from:04/01/2001 till:18/12/2010 color:col2.4  mark:(line,col2.4)
 #Last version is 2.4.37.11 released 18/12/2010
 #According to http://lkml.org/lkml/2010/9/6/15 , one year without update would mean end of life
 #But as with the 2.0,2.2 and 2.6 columns, the column ends with the last base release.
 #EOL confirmed in http://lwn.net/Articles/491245/
 ##################################################
 # 2.4 line & text for first version every year   #
 ##################################################
 bar:2.4 mark:(line,col2.4-l1) align:center fontsize:S
 at:04/01/2001 text:"2.4.0" shift:(0,-15)
 at:25/02/2002 text:"2.4.18"
 at:13/06/2003 text:"2.4.21"
 at:05/01/2004 text:"2.4.24"
 at:19/01/2005 text:"2.4.29"
 at:11/08/2006 text:"2.4.33"
 at:26/07/2007 text:"2.4.35"
 at:01/01/2008 text:"2.4.36"
 at:18/12/2010 text:"2.4.37.11" shift:(0,5)
 ##################################################
 # 2.4 line for all other versions               #
 ##################################################
 bar:2.4 mark:(line,col2.4-l2)
 at:30/01/2001 # 2.4.1
 at:22/02/2001 # 2.4.2
 at:30/03/2001 # 2.4.3
 at:28/04/2001 # 2.4.4
 at:26/05/2001 # 2.4.5
 at:04/07/2001 # 2.4.6
 at:20/07/2001 # 2.4.7
 at:11/08/2001 # 2.4.8
 at:16/08/2001 # 2.4.9
 at:23/09/2001 # 2.4.10
 at:09/10/2001 # 2.4.11
 at:11/10/2001 # 2.4.12
 at:24/10/2001 # 2.4.13
 at:05/11/2001 # 2.4.14
 at:23/11/2001 # 2.4.15
 at:26/11/2001 # 2.4.16
 at:21/12/2001 # 2.4.17
 at:03/08/2002 # 2.4.19
 at:28/11/2002 # 2.4.20
 at:25/08/2003 # 2.4.22
 at:28/11/2003 # 2.4.23
 at:18/02/2004 # 2.4.25
 at:14/04/2004 # 2.4.26
 at:04/08/2004 # 2.4.27
 at:17/11/2004 # 2.4.28
 at:04/04/2005 # 2.4.30
 at:01/06/2005 # 2.4.31
 at:16/11/2005 # 2.4.32
 at:23/12/2006 # 2.4.34
 at:02/12/2008 # 2.4.37
 ##################################################
 # 2.5(dev) betavers. 2.5.0-2.5.75 (2.4.15=2.5.0)  #
 ##################################################
 bar:2.5 width:40 from:23/11/2001 till:10/06/2003 color:colbeta mark:(line,colbeta)
 ##################################################
 # 2.5(dev) line & text for first & last version  #
 ##################################################
 bar:2.5 mark:(line,colbeta-l1) align:center fontsize:S
 at:23/11/2001 text:"2.5.0" shift:(0,-15)
 at:10/06/2003 text:"2.5.75" shift:(0,5)
 ##################################################
 # 2.6 filled bar                      #
 ##################################################
 bar:2.6 width:40 from:18/12/2003 till:$now color:col2.6  mark:(line,col2.6)
 
 ##################################################
 # 2.6 line & text for first version every year   #
 ##################################################  
 bar:2.6 mark:(line,col2.6-l1) align:center fontsize:S
 at:18/12/2003 text:"2.6.0" shift:(0,-15)
 at:09/01/2004 text:"2.6.1"
 at:02/03/2005 text:"2.6.11"
 at:03/01/2006 text:"2.6.15"
 at:04/02/2007 text:"2.6.20"
 at:24/01/2008 text:"2.6.24"
 at:23/03/2009 text:"2.6.29"
 at:24/02/2010 text:"2.6.33"
 at:05/01/2011 text:"2.6.37"
 ##################################################
 # 2.6 line for all other versions               #
 ##################################################
 bar:2.6 mark:(line,col2.6-l2)
 at:04/02/2004 # 2.6.2
 at:18/02/2004 # 2.6.3
 at:11/03/2004 # 2.6.4
 at:04/04/2004 # 2.6.5
 at:10/05/2004 # 2.6.6
 at:16/06/2004 # 2.6.7
 at:14/08/2004 # 2.6.8
 at:19/10/2004 # 2.6.9
 at:24/12/2004 # 2.6.10
 at:17/06/2005 # 2.6.12
 at:29/08/2005 # 2.6.13
 at:28/10/2005 # 2.6.14
 at:20/03/2006 # 2.6.16
 at:18/06/2006 # 2.6.17
 at:20/09/2006 # 2.6.18
 at:29/11/2006 # 2.6.19
 at:26/04/2007 # 2.6.21
 at:08/07/2007 # 2.6.22
 at:09/10/2007 # 2.6.23
 at:17/04/2008 # 2.6.25
 at:13/07/2008 # 2.6.26
 at:09/10/2008 # 2.6.27
 at:24/12/2008 # 2.6.28
 at:10/06/2009 # 2.6.30
 at:09/09/2009 # 2.6.31
 at:03/12/2009 # 2.6.32
 at:16/05/2010 # 2.6.34  	
 at:01/08/2010 # 2.6.35  	
 at:20/10/2010 # 2.6.36
  1. at:05/01/2011 # 2.6.37
 at:15/03/2011 # 2.6.38
 at:19/05/2011 # 2.6.39
 ##################################################
 # 3.0 filled bar                                 #
 ##################################################
 bar:3.x width:40 from:22/07/2011 till:$now color:col3.x  mark:(line,col3.x)
 ##################################################
 # 3.x line & text for first version every year   #
 ##################################################
 bar:3.x mark:(line,col3.x-l1) align:center fontsize:S
 at:22/07/2011 text:"3.0" shift:(0,-12)
 at:04/01/2012 text:"3.2"
 ##################################################
 # 3.x line for all other versions               #
 ##################################################
 bar:3.x mark:(line,col3.x-l2)
  1. at:22/07/2011 # 3.0
 at:24/10/2011 # 3.1
  1. at:04/01/2012 # 3.2
 at: 18/03/2012 # 3.3
 at: 20/05/2012 # 3.4

TextData =

 fontsize:S
 textcolor:lighttext
 pos:($warning,20)
 text:Dades del $now.
  1. Ref:http://www.kernel.org/pub/linux/kernel/

</timeline>


Manteniment i desenvolupadors notables

Encara que Linus Torvalds supervisa i publica el codi de les darreres versions del nucli, ha delegat el manteniment de les versions antigues a altres programadors:

Versió Mantenidor
2.0 David Weinehall
2.2 Marc-Christian Petersen (anteriorment Alan Cox)
2.4 Willy Tarreau (anteriorment Marcelo Tosatti)
2.6.16 Adrian Bunk
2.6 Andrew Morton / Linus Torvalds

Altres desenvolupadors notables del nucli Linux són: Robert Love i Ingo Molnar. (Vegeu el fitxer "MAINTAINERS" per una llista completa).

Comunitat

Una distribució GNU/Linux és, en gran mesura, impulsada per les seves comunitats de desenvolupadors i usuaris. Persones encarregades de desenvolupar i finançar les seves distribucions sobre una base voluntària, Debian és un exemple ben conegut. Altres mantenen una versió de la comunitat comercial, com Red Hat fa amb Fedora.

En moltes ciutats i regions, les associacions locals, conegudes com a Grups d'Usuaris de Linux (GUL) tracten de promoure la seva distribució, i l'extensió del programari lliure. Tenen reunions i ofereixen demostracions gratuïtes, formació, suport tècnic, i la instal·lació del sistema operatiu per als nous usuaris. Moltes comunitats d'Internet també ofereixen suport als usuaris de Linux i desenvolupadors. La majoria de les distribucions i programari lliure i projectes de codi obert tenen sales de xat d'IRC o grups de notícies. Els fòrums en línia són una altra forma de suport, amb exemples notables LinuxQuestions.org ser i els fòrums de Gentoo. Les distribucions de Linux compten amb llistes de correu d'acollida; normalment hi ha un tema específic, com l'ús o el desenvolupament d'una llista determinada.

Enllaços externs

Plantilla:Sister