Linux (kjerne)

Fra Wikipedia, den frie encyklopedi
Gå til: navigasjon, søk
Denne artikkelen omhandler Linux-kjernen. For operativsystemet, se GNU/Linux.
Linux-kjernen
Linux-kjernen
Linux-kjernen
Oppstart av Linux-kjernen 2.6.25.17
Skaper Linus Torvalds
Utgitt 17. september 1991 (utviklingsversjon)
13. mars 1994 (stabil versjon)
Nyeste versjon 3.7 (11. desember 2012[1])
Nyeste beta-versjon 3.6 rc4 (1. september 2012)
Plattform Mange arkitekturer
Skrivebordsmiljø Ingen. Kommandobasert operativmiljø
OS-familie Unix-liknende
Type Tidsdelte systemer
Kjerne Monolittisk
Lisens GNU General Public License versjon 2
Nettside www.kernel.org
Linux

Linux-kjernen er en fri UNIX-lignende operativsystem-kjerne som ble skapt av finnen Linus Torvalds i 1991. I dag vedlikeholdes og videreutvikles den av et nettverk med brukere som blant annet består av store bedrifter som Intel, Red Hat, IBM, Hewlett Packard og Novell, men fortsatt står gruppen «amatører» for 3.9% av endringene.[2]

Linux-kjernen ble opprinnelig utviklet for Intels 80386-prosessor, men har senere blitt portet til mange andre plattformer. Den er skrevet nesten utelukkende i C med noen GNU C-språkutvidelser og AT&T assembler.

Linux-kjernen er utviklet under GNU General Public License, og kildekoden er derfor fri programvare.

Kjernen er best kjent som «hjertet» av operativsystemet Linux. Programvaresamlinger bestående av Linux-kjernen og andre typer programvare, kalles Linux-distribusjoner. En slik distribusjon består i tillegg til Linux-kjernen av mye programvare for GNU-prosjektet, og mange mener derfor at man bør kalle operativsystemet for GNU/Linux.

Historie[rediger | rediger kilde]

Minix[rediger | rediger kilde]

Forløperen til Linux-kjernen var Minix. Da UNIX var et ungt operativsystem, var kildekoden åpent tilgjengelig. Frem til UNIX versjon 6 ble kildekoden distribuert på universiteter, og John Lions ved University of New South Wales publiserte endog en beskrivelse av hver eneste linje i kildekoden.

AT&T oppdaget etterhvert operativsystemets potensial som et kommersielt produkt. Ved lanseringen av UNIX versjon 7 var kildekoden blitt en forretningshemmelighet som var ulovlig å studere på universiteter.

I denne situasjonen ble Minix utviklet av Andrew S. Tanenbaum ved Vrije Universiteit i Amsterdam. I 1987 publiserte han hele kildekoden med sine 12,649 linjer i en lærebok om operativsystemer.[3]

Linux tar form[rediger | rediger kilde]

Blant brukerne av Minix var Linus Torvalds. Minix 1.0 var blitt utviklet for å kjøre på Intels 16-bit mikroposessorer. Minix 1.5, som ble lansert i 1991, ble portert til Motorola 68000 og SPARC. Linus savnet et system for Intels nye 32-bit mikroprosessorer 80386 og 80486, og begynte arbeidet med å lage et nytt operativsystem for denne nye familien av mikroprosessorer.

Prosjektet startet den 26. august 1991 med en posting av Linus på Usenet-gruppen comp.os.minix:

Sitat Jeg lager et (fritt) operativsystem (bare en hobby, vil ikke bli stort og profesjonelt som gnu) for 386(486) AT-kloner... Dette har vært i anmarsj siden april, og begynner å bli ferdig. ... Jeg har for øyeblikket portert bash(1.08) og gcc(1.40). ... Det er uten noen minix-kode, og har et filsystem med multitråder.[4] Sitat

GNU-prosjektet hadde allerede skapt mange nødvendige komponenter i et fritt operativsystem. Operativsystem-kjernen GNU Hurd var likevel ennå ikke ferdig utviklet, og BSD-operativsystemene hadde ikke frigjort seg fra juridiske problemstillinger, slik at de kunne distribueres som fri programvare.

AT&T's bruk av patenter som et kommersielt middel, mot konkurrenter såvel som universiteter, tvang frem et fritt alternativ. Linus hadde ikke noe avansert operativsystem i tankene. Ei heller var det ment for alment bruk. Han ante ikke at prosjektet raskt skulle samle utviklere og brukere, der Minix-hackere tidlig bidro med kode og idéer til Linux-kjernen. Ei heller kunne han ane at kjernen etterhvert fikk hjelp av flere tusen programvare-utviklere.

Definisjonen av prosjektet som «ikke profesjonelt» skyldes at Tanenbaum konstruerte Minix etter prinsippene om en mikrokjerne i det distribuerte operativsystemet Mach. Mach representerte avansert nytenkning på denne tiden i universitetsmiljøer.

Linux mangler mikrokjerne. Det både var (og er) «monolittisk» liksom den opprinnelige UNIX. Linus benyttet heller ikke segmentert swapping etter modell fra Multics, fordi dette lettere gir et fragmentert minne enn sideveksling. Istedet valgte Linus samme minne-modell som IBM gjorde i OS/2 3.x:

Sitat Det er for det meste skrevet i [programmeringsspråket] C. ... Det utnytter enhver tenkelig egenskap ved 386 som jeg kunne finne, ettersom dette også var et prosjekt for å lære meg selv om 386-[prosessoren]. Som allerede nevnt, benytter det en MMU for både sideveksling (ennå ikke til disk) og segmentering. Det er segmenteringen som VIRKELIG gjør det 386-avhengig (enhver oppgave har et 64Mb segment for kode & data &ndash: maksimum 64 oppgaver i 4Gb) .... Fragmentering er et onde ...Jeg vil muligens gjøre det slik at [minne]-grensene enkelt kan forandres (til 32 Mb/128 oppgaver for eksempel) gjennom bare en [lettvint] rekompilering av kjernen.[4] Sitat

Første versjon ble lansert den 17. september 1991 med versjonsnummeret 0.01. Datoen kan regnes som Linux-kjernens «fødselsdato», selv om den formelt ennå var uferdig. Kjernen hadde da 8.413 linjer med kode, og det ble solgt 90 datamaskiner som var bygd og sentrert omkring den nye operativsystem-kjernen.

Versjon 0.02 ble lansert den 5. oktober 1991.[5] Tredje versjon (desember 1991) hadde versjonsnummeret 0.11, og kunne rekompileres uavhengig av Minix. Ved lanseringen av verjon 0.12 i februar 1992, erstattet Linus sin egen lisens (som ikke tillot kommersiell distribuering) med GNU-lisensen for fri programvare.[6]

Den første postingen på Usenets diskusjonsgruppe alt.os.linux kom den 19. januar 1992.[7] Den 31. mars 1992 ble den omdøpt til comp.os.linux.[8]

Versjon 0.95 (7. mars 1992) kunne kjøre XFree86, som var en fri klone av vindussystemet X. Hoppet i nummereringen fra 0.12 til 0.95, skyldtes troen på at versjon 1.0 var umiddelbart forestående. Dette var en overoptimistisk antagelse: Versjon 0.95 ble etterfulgt av 0.95a, 0.96a (med fire revisjoner), 0.96b (med to revisjoner), 0.96c (med to revisjoner), 0.97 og 0.99. Fra 1993 til 1994 ble det lansert 15 oppdaterte versjoner av 0.99.

Den 13. mars 1994 ble Linux 1.0 endelig lansert. Et fritt operativsystem for Intel 80386 var en realitet, og er fødselsdatoen til den første stabile Linux-kjernen.

Versjon 1.2[rediger | rediger kilde]

Versjon 1.1 var en utviklingsversjon som kulminerte i lanseringen av den stabile versjon 1.2 den 7. mars 1995. En mer modulær oppbygning av kildekoden gjorde det enklere å portere Linux-kjernen til andre datamaskin-arkitekturer enn Intel 80386.

En variant av Linux-kjernen (versjonene 1.2 og 2.0) for Motorola 68000-serien, kalt Linux/mk68, ble utviklet uavhengig av det offisielle Linux-kjerne prosjektet. Debian's Linux-distribusjon Debian/mk68k benyttet denne porteringen av versjon 2.0.[9]

Versjon 2.0[rediger | rediger kilde]

Versjon 2.0 ble lansert den 9. juni 1996, etter å ha blitt utviklet gjennom utviklingsversjonen 1.3. Denne nye stabile versjonen ble utviklet ved hjelp av GNU C-kompilatoren versjon 2.7.2 og binutils 2.6.0.14.

Versjon 2.0 hadde bedre støtte for nettverk, med protokollene PPP, SLIP, CSLIP og PLIP, såvel som DDP (Appletalk), samt flere utstyrsdrivere. Den støttet også symmetrisk multiprosessering, der opptil 16 mikroprosessorer kunne kjøre i parallell i en og samme datamaskin. Den var enda mer modulært oppbygd enn versjon 1.2, og hadde dynamisk opplastbare moduler hvor blant annet aksess-lister ble implementert.

Versjon 2.0 var også den første operativsystem-kjernen med innebygd støtte for Java.

Versjon 2.2[rediger | rediger kilde]

Versjon 2.2, den stabile utgaven av utviklingsversjonen 2.1, ble lansert den 25. januar 1999.[10] Den ble portert til Motorola 68000, PowerPC, såvel som til 64-bit mikroprosessorene SPARC64 og DEC Alpha. Den støttet også optimaliseringer for x86-kloner fra AMD og Cyrix. Versjon 2.2 innførte også støtte for Microchannel Architecture, «Plug & Play» for PCI-kort, støtte for CD-ROM, DVD, Iomega zip-drives, irDA, digital penn, og utvidet støtte for de fleste typer av Joystick. Koden for håndtering av lyd, lydkort og periferiutstyr for lyd (høytalere, etc.), var gjort mer modulær og enklere å oppdatere. Støtten for video var kraftig forbedret, med støtte for et voksende antall kort for TV (Video4Linux), radio og digitale kameraer. Det samme gjaldt støtten for amatør-radioer ved å tilføye støtte for protokollene NetROM og ROSE, og forbedringer i AX.25-laget.

Versjon 2.2 innførte støtte for internett-protokollen IPv6, med SPX og IPX.

Det «utvidede filsystemet» (ext) i de tidligere utgavene av Linux-kjernen, ble erstattet med ext2.

I nettverk ble det mulig å lese innholdet på datamaskiner med andre operativsystemer, og deres filsystemer: NTFS (Windows NT), FAT (MS-DOS), Virtual FAT og FAT32 (Windows 95 og Windows 98), Microsoft Joliet system (med lange filnavn på CD-ROM), HFS (Apple Macintosh), FFS (Amiga), UFS (BSD), SysVFS, Minix, Acorn RiscOS, FreeBSD, SunOS, og Solaris. I nettverk ble også støtten for NetWare forbedret.

To andre viktige nyheter i versjon 2.2, var støtte for Unicode og en gryende tilpasning til Unix98 standarden.

Versjon 2.4[rediger | rediger kilde]

Versjon 2.4, den stabile utgaven av utviklingsversjonen 2.3, ble lansert den 4. januar 2001. I heterogene nettverk ble støtten til andre operativsystemers filformater utvidet til å omfatte OS/2, Efs (Irix) og NextStep. Linux-kjernen støttet for første gang Sun NFS 3.0.[11] Versjon 2.2 av Linux-kjernen var den første operativsystem-kjernen som var fullstendig kompatibel med IPv4-spesifikasjonen. Versjon 2.4 gjorde implementasjonen enda mer skalerbar. I nettverkslaget ble det også tilføyd støtte for DECNet, og innenfor OSI-modellens datalink-lag ble de to lagene for PPP og ISDN i versjon 2.2 slått sammen til ét lag.

Versjon 2.2 satte en grense på 1024 samtidig kjørende prosesser eller tråder. I versjon 2.4 var grensen skalerbar under kjøring, slik at det eneste som begrenser antall prosesser var datamaskinens mengde med RAM.

Versjon 2.4 tilføyde støtte for USB, PCMCIA, PCI-utvidelsen I2O og ISA Plug and Play. IDE-kontrollere støttet maksimalt 4 lagringsenheter i en datamaskin, det være seg harddisker, CD-ROM eller DVD. Versjon 2.2 utvidet grensen til 4 kontrollere og 10 IDE-enheter. I versjon 2.4 ble dette utvidet til 10 kontrollere og 20 enheter. Versjon 2.4 kunne også kjøres i innebygde systemer.

En generisk program-laster gjorde det mulig å kjøre DOS- og Windows-programmer direkte fra kjernen gjennom emulatorer som WINE og Dosemu. Versjon 2.4 var også mer kompatibel med POSIX, og mer avhengig av formatet ELF enn versjon 2.2, selv om versjon 2.2 var den første Linux-kjernen som bare kunne kompileres som ELF.

Versjonshistorikk[rediger | rediger kilde]

Tidslinje[rediger | rediger kilde]

Versjon Underversjon Lansert Antall linjer i
kildekoden
Størrelse i Kb Datamaskiner1 Merknader
0.x 0.01 17. september 1991 8 413 230 88 Første utviklingsversjon. Ble bootet på 80386 med Minix, finsk
tastatur og kommandotolken bash.
0.02 5. oktober 1991 10 239
1.0 1.0.0 13. mars 1994 170 581 1 259 563 Første stabile versjon.
1.0.9 16. april 1994 1 256 Siste underversjon
1.1 1.1.0 6. april 1994 170 320 1 256 561 Utviklingsversjoner
1.1.95 2. mars 1995 2 301
1.2 1.2.0 7. mars 1995 294 623 2 301 909 Portabel til flere arkitekturer. Lansert for Motorola 68000,
Alpha, MIPS og SPARC
1.2.13 2. august 1995 2 355
1.3 1.3.0 12. juni 1995 323 581 2 558 992 Utviklingsversjoner
1.3.100 10. mai 1996   5 615
2.0 2.0.0 9. juni 1996 716 119 5 844 2 015 Symmetrisk multiprosessering, aksesslister i dynamisk
opplastbare moduler, Java, flere nettverksprotokoller.
2.0.40 8. februar 2004   7 551
2.1 2.1.0 30. september 1996 735 736 6 033 1 727 Utviklingsversjoner
2.2.0-pre9 21. januar 1999   13 077
2.2 2.2.0 25. januar 1999 1 676 182 13 080 4 599 Porteringer til 64-bit RISC: Power, DEC Alpha, PA-RISC,
SPARC64, UltraSPARC. Støtte for internettprotokollen IP v.6
og det nye filsystemet ext 2.
2.2.26 25. februar 2004   19 530
2.3 2.3.0 11. mai 1999 1 763 358 13 804 4 721 Utviklingsversjoner
2.3.0-pre9 23. mai 2000   20 882
2.4 2.4.0 4. januar 2001 3 158 560 24 379 8 187 Utvidet støtte for teknologier for periferienheter: ACPI, USB, etc.,
utvidet støtte for nettverk, skalerbar grense for antall multitråder
som flyttes ved utvidelse av RAM
2.4.37 2. desember 2008   38 735
2.4.37.11 18. desember 2010     Siste underversjon
2.5 2.5.0 23. november 2001 3 833 603 29 405 9 893 Utviklingsversjoner
2.5.75 10. juli 2003   40 969
2.6 2.6.0 18. desember 2003 5 475 685 41 614 15 007
2.6.11 2. mars 2005     Nytt undernivå i versjonsnummerering (2.6.x.x).
2.6.11.12 12. juni 2005    
2.6.12 17. juni 2005    
2.6.12.6 29. august 2005    
2.6.13 29. august 2005    
2.6.13.5 15. desember 2005    
2.6.14 28. oktober 2005    
2.6.14.7 31. januar 2006    
2.6.15 3. januar 2006    
2.6.15.7 28. mars 2006    
2.6.16 20. mars 2006    
2.6.16.62 21. juli 2008    
2.6.17 18. juni 2006    
2.6.17.14 13. oktober 2006    
2.6.18 20. september 2006    
2.6.18.8 23. februar 2007    
2.6.19 29. november 2006    
2.6.19.7 3. mars 2007    
2.6.20 4. februar 2007 8 102 486 54 548 21 280
2.6.20.21 17. oktober 2007    
2.6.21 26. april 2007 8 246 470 55 329 21 614
2.6.21.7 4. august 2007    
2.6.22 8. juli 2007 8 499 363 56 914 22 411
2.6.22.19 26. februar 2008    
2.6.23 9. oktober 2007 8 566 554 57 404 22 530
2.6.23.17 26. februar 2008    
2.6.24 24. januar 2008 8 859 629 59 079 23 062
2.6.24.7 7. mai 2008    
2.6.25 17. april 2008 9 232 484 61 518 23 810
2.6.25.20 10. november 2008    
2.6.26 13. juli 2008 9 411 724 62 550 24 270
2.6.26.8 10. november 2008    
2.6.27 9. oktober 2008 9 709 868 63 721 24 354 Støtte for ny maskinvare, deriblant Serial Attached SCSI
2.6.27.62 17. mars 2012    
2.6.28 24. desember 2008 10 195 507 66 766 25 255
2.6.28.10 2. mai 2009    
2.6.29 23. mars 2009 11 010 647 71 977 26 668
2.6.29.6 2. juli 2009    
2.6.30 10. juni 2009 11 637 173 75 768 27 879 Støtte for USB 3.0
2.6.30.10 4. desember 2009    
2.6.31 9. september 2009 12 046 317 78 279 29 111
2.6.31.14 5. juli 2010    
2.6.32 3. desember 2009 12 610 030 81 901 30 485
2.6.32.59 17. mars 2012    
2.6.33 24. februar 2010 12 990 041 84 533 31 565
2.6.33.20 7. november 2011    
2.6.34 16. mai 2010 13 320 934 86 520 32 297
2.6.34.13 20. august 2012    
2.6.35 1. august 2010      
2.6.35.13 13. mars 2012    
2.6.36 20. oktober 2010      
2.6.36.4 17. februar 2011    
2.6.37 5. januar 2011      
2.6.37.6 27. mars 2011    
2.6.38 15. mars 2011      
2.6.38.8 3. juni 2011    
2.6.39 19. mai 2011      
2.6.39.4 3. august 2011    
3.0 3.0 rc1 29. mai 2011     Utviklingsversjoner
3.0 rc7 11. juli 2011
3.0 22. juli 2011    
3.0.101 22. oktober 2013    
3.1 3.1 rc1 8. august 2011     Utviklingsversjoner
3.1 rc10 17. oktober 2011
3.1 24. oktober 2011     Støtte for OpenRISC
3.1.10 18. januar 2012    
3.2 3.2 rc1 8. november 2011     Utviklingsversjoner
3.2 rc7 24. desember 2011    
3.2.0 4. januar 2012      
3.2.53 28. november 2013      
3.3 3.3 rc1 19. januar 2012     Utviklingsversjoner
3.3 rc7 10. mars 2012    
3.3.0 19. mars 2012      
3.3.8 1. juni 2012      
3.4 3.4 rc1 31. mars 2012     Utviklingsversjoner
3.4 rc7 13. mai 2012    
3.4.0 21. mai 2012      
3.4.75 20. desember 2013      
3.5 3.5 rc1 3. juni 2012     Utviklingsversjoner
3.5 rc7 14. juli 2012    
3.5.0 21. juli 2012      
3.5.7 12. oktober 2012      
3.6 3.6 rc1 2. august 2012     Utviklingsversjoner
3.6 rc4 1. september 2012    
3.6.0 1. oktober 2012      
3.6.11 17. desember 2012      
3.7 3.7.0 11. desember 2012      
3.7.10 27. februar 2013      
3.8 3.8.0 19. februar 2013      
3.8.13 11. mai 2013      
3.9 3.9.0 29. april 2013      
3.9.11 21. juli 2013      
3.10 3.10.0 30. juni 2013      
3.10.24 12. desember 2013      
3.11 3.11.0 2. september 2013      
3.11.10 29. november 2013      
3.12 3.12.0 3. november 2013      
3.12.6 20. desember 2013      

1 Antall datamaskiner solgt med find . -type f | wc -l

Referanser[rediger | rediger kilde]

  1. ^ http://article.gmane.org/gmane.linux.kernel/1408240
  2. ^ Linuxworld: Linux contributor base broadens
  3. ^ Andrew S. Tanenbaum: Operating Systems: Design and Implementation, Appendix E: Minix source code listing, side 433–686, Prentice-Hall International, Inc., 1987, ISBN 0-13-637331-3
  4. ^ a b (en) Linus Benedict Thorvalds (26. august 1991). ««What would you like to see most in minix?»». comp.os.minix. Besøkt 29. oktober 2009. 
  5. ^ (en) Linus Benedict Thorvalds (5. oktober 1991). ««Free minix-like kernel sources for 386-AT»». comp.os.minix. Besøkt 29. oktober 2009. 
  6. ^ (en) Linus Benedict Thorvalds (februar 1992). ««Release notes for Linux v0.12»». www.kernel.org. Besøkt 29. oktober 2009. 
  7. ^ (en) David D. Summers (19. januar 1992). ««Troubles with partions»». Besøkt 29. oktober 2009. 
  8. ^ (en) Allan B. Clegg (31. mars 1992). ««It's here!»». Besøkt 29. oktober 2009. 
  9. ^ (en) Chris Lawrence (1. mai 1997). «Linux/m68k: Linux on Motorola's 68000 Processor». Linux Journal. Besøkt 29. oktober 2009. 
  10. ^ (en) Joseph Pranevich (26. januar 1999). «The Wonderful World of Linux 2.2 -- 'revised millennium penguin' version». Linux Today. Besøkt 29. oktober 2009. 
  11. ^ (en) Joseph Pranevich (14. september 1999). «Wonderful World of Linux 2.4 (Quite Nearly There Edition)». Linux Today. Besøkt 29. oktober 2009.