Redigerer
Linuxkjernen
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
{{forveksles|GNU/Linux}} {{Infoboks operativsystem | logostørrelse=120px }} {{Overlenket}} '''Linuxkjernen''' er en [[Fri og åpen programvare|fri og åpen]], [[monolittisk kjerne|monolittisk]] og [[Unix-liknende]] [[Kjerne (operativsystem)|operativsystemkjerne]] som benyttes verden over i [[operativsystem]]et [[Linux]]. Den anvendes i personlige datamaskiner, [[arbeidsstasjon]]er, [[server|tjenere]] og [[superdatamaskin]]er, vanligvis i form av [[Linuxdistribusjon]]er. Linuxkjernen ble skapt av finnen [[Linus Torvalds]], som lanserte den første utviklingsversjonen 17. september [[1991]].<ref>{{Kilde www|url=https://www.digi.no/artikler/linus-torvalds-roper-linux-sanne-fodselsdag/513570|tittel=Linus Torvalds røper Linux’ sanne fødselsdag|besøksdato=2021-09-22|dato=2021-09-21|fornavn=Marius B.|etternavn=Jørgenrud|språk=no|verk=Digi.no}}</ref> Første stabile versjon ble sluppet [[14. mars]] [[1994]]. Kjernen brukes også i [[robotikk]], [[tingenes internett]], [[smarthus]] ([[varme-, ventilasjons- og sanitærteknikk]], [[Smart Grid]], [[smart strømmåler|smarte strømmålere]], lyskontroll etc.), og i [[innebygd system|innebygde systemer]] som [[carputer]]e, [[nettop]]er, [[Ruter (IT)|rutere]], [[trådløs basestasjon|trådløse basestasjoner]], [[hustelefonsentral]]er, [[TV-mottaker]]e, [[smart-TV]]er, [[PVR|digitale videopptakere]] og [[Nettverkstilsluttet datalager|nettverkstilsluttede datalagre]]. Diverse operativsystemer for [[mobilt internettutstyr]], [[notatblokk-PC]]er, [[Nett-PC]]er, [[nettbrett]], [[lesebrett]], [[smarttelefon]]er og [[smartur]] benytter modifiserte Linuxkjerner. Den blir vedlikeholdt av et [[Brukernettverk|nettverk av brukere]], hvor det inngår en rekke multinasjonale selskaper. I 2015 hadde nesten {{formatnum:12000}} [[programmerer]]e fra omkring {{formatnum:1200}} selskaper bidratt til kjernens utvikling, mens gruppen «amatører» i 2007 stod for 3,9 % av endringene. Siden 1996 har utviklingsdiskusjoner foregått daglig på [[Linuxkjernens e-postliste]]. Linuxkjernen er skrevet nesten utelukkende i [[programmeringsspråk]]et [[C (programmeringsspråk)|C]] (med noen [[GNU Compiler Collection|GNU C]] syntaksutvidelser) og [[AT&T]] [[assembler]]. [[Kildekode]]n er [[fri og åpen programvare]], som er lisensiert under [[GNU General Public License]] versjon 2 (GPLv2), men ikke versjon 3 (GPLv3). == Arkitektur == === Oversikt === {{Utdypende|Fri og åpen programvare|GNU General Public License}} {{Utdypende|Operativsystem|Operativsystemets historie|UNIX System V}} [[Fil:Unix timeline.en.svg|thumb|450px|Stamtreet til Unix og Linux.{{byline|Illustrasjon: Christoph S|13. juli 2009}}]] Linuxkjernen benyttes verden over i [[operativsystem]]et [[Linux]].<ref name="Bovet2005_1"/> Den er [[fri og åpen programvare]], og er således både [[fri programvare]] og [[åpen kildekode]]. Den blir lansert under en [[fri programvarelisens]]: Alle kan fritt bruke, kopiere, studere og forandre den og [[kildekode]]n er åpen slik at folk oppmuntres til å frivillig forbedre den. Dette står i kontrast til [[proprietær programvare]], som er begrenset av [[opphavsrett]] og hvor kildekoden vanligvis er skjult for brukerne. Linuxkjernen er lisensiert under [[GNU General Public License]] versjon 2 (GPLv2), men ikke versjon 3 (GPLv3). Den er ikke en del av [[GNU-prosjektet]] og er heller ikke dette prosjektets offisielle [[operativsystemkjerne]]. Linuxkjernen er en [[Unix-lignende]] operativsystemkjerne. Den har arvet mye fra [[UNIX]], men den følger ikke offisielt [[Single UNIX Specification]] og derfor har [[Open Group]] heller ikke sertifisert den og gitt den [[varemerke]]t «UNIX». Enkelte [[Linuxdistribusjon]]er har imidlertid blitt sertifisert med dette varemerke. Litt forenklet kan vi si at [[FreeBSD]] og beslektede Unix-lignende [[operativsystemer]] er etterfølgere av [[Berkeley Software Distribution]] (BSD), mens Linuxkjernen også har hentet mye fra [[UNIX System V]]. Linuxkjernen har i dag et stort anvendelsesområde. Den anvendes i [[personlig datamaskin|personlige datamaskiner]], [[arbeidsstasjon]]er, [[server|tjenere]] og [[superdatamaskin]]er,<ref name="Bovet2005_7"/>{{#tag:ref|I juni 2019 ble Linuxkjernen kjørt på alle de 500 kraftigste [[superdatamaskin]]er i verden, rangert på listen [[TOP500]] (de to andre benyttet [[AIX]] og [[IBM]] [[POWER7]]).<ref name=top500stats>{{cite web |url=http://www.top500.org/statistics/details/osfam/1 |title=TOP500 Supercomputer Sites: Operating system Family / Linux |publisher=Top500.org|accessdate=2. september 2016}}</ref><ref name="top500-list">{{cite web |url=http://www.top500.org/statistics/sublist/ |title=Sublist Generator |publisher=Top500.org |accessdate=2. september 2016}}</ref> Dette tallet har økt jevnt. I juni 1998 ble Linuxkjernen benyttet på 1 av de 500 raskeste superdatamaskinene; i juni 2000 var dette tallet økt til 28, i juni 2005 til 318, i juni 2010 til 456, i juni 2015 til 489, i november 2016 til 498 og i november 2017 til 500. I november 2018 og i juni 2019 var dette tallet fortsatt 500.<ref name=top500stats/> På topp i november 2016 var den [[kina|kinesiske]] superdatamaskinen [[Sunway TaihuLight]] ved ''National Supercomputer Center'', i [[Wuxi]], [[Jiangsu]], med en ytelse på 93 [[FLOPS|petaflops]]; datamaskinen benyttet 40 960 stk 260-kjerners [[SW26010]] 64-biter [[RISC]] [[mikroprosessor]]er. Den kjører ''Sunway RaiseOS 2.0.5'' som er basert på Linuxkjernen. På 2.-plass var den kinesiske superdatamaskinen [[Tianhe-2]] med en ytelse på 33.86 petaflops; datamaskinen benyttet 32 000 Intel [[Xeon]] E5-2692 12C sammen med 2.200 GHz 48 000 [[Intel Xeon Phi]] 31S1P. Den kjører [[Kylin Linux]]. På 3.-plass var Titan - Cray XK7 fra [[Oak Ridge National Laboratory]] i [[Oak Ridge (Tennessee)|Oak Ridge]], [[Tennessee]], [[USA]]. Maskinen har en ytelse på 17.5 petaflops og består av 560 640 prosessorkjerner med 2.2GHz [[AMD Opteron]] 6274 16C. Det kjører operativsystemet [[UNICOS|Cray Linux Environment]] (CLE). CLE er på sin side basert på [[Compute Node Linux]] og [[SUSE Linux Enterprise Server]]. |group="lower-alpha"|name="superdatamaskiner"}} vanligvis i form av [[Linuxdistribusjon]]er.<ref>{{cite web |title=README |publisher=Linux kernel source tree, git.kernel.org |url=https://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git%3Ba%3Dblob%3Bf%3DREADME%3Bh%3D90a07658ede14840346eee6610648bcf4ec79997%3Bhb%3Df3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b |accessdate=1. august 2016 |archive-date=2012-07-24 |archive-url=https://archive.today/20120724163945/http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=README;h=90a07658ede14840346eee6610648bcf4ec79997;hb=f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b |url-status=yes }}</ref>{{#tag:ref|En [[Linuxdistribusjon]] er et [[operativsystem]] som består av Linuxkjernen, et [[pakkesystem]], programvareverktøy og [[Bibliotek (programvare)|biblioteker]], et [[vindussystem]] (som regel [[vindussystemet X]] eller [[Wayland]]), en [[vindusbehandler]] og et [[skrivebordsmiljø]]. Nettstedet [[DistroWatch]] presenterte den 19. november 2017 en liste over 879 Linuxdistribusjoner og andre frie operativsystemer, aktive så vel som tidligere.<ref>[https://distrowatch.com/search.php?status=All Search Distributions], DistroWatch, 19. november 2017</ref> Det store antall distribusjoner kan grupperes i «familier», som er utgått fra distribusjonene [[Slackware]], [[Debian]], [[Ubuntu (operativsystem)|Ubuntu]], [[Fedora (Linux)|Fedora]], [[Red Hat Enterprise Linux]], [[Gentoo]], [[SUSE Linux]], [[Arch Linux]] og [[Mandriva Linux]].|group="lower-alpha"|name="linuxdistro"}} Linuxkjernen brukes også i [[robotikk]], [[tingenes internett]], [[smarthus]] ([[varme-, ventilasjons- og sanitærteknikk]], [[Smart Grid]], [[smart strømmåler|smarte strømmålere]], lyskontroll etc.) og i [[innebygd system|innebygde systemer]] som [[carputer]]e, [[nettop]]er, [[Ruter (IT)|rutere]], [[trådløs basestasjon|trådløse basestasjoner]], [[hustelefonsentral]]er, [[TV-mottaker]]e, [[smart-TV]]er,<ref>[https://www.linuxtv.org/ Linux TV], linuxtv.org, 26. mai 2016, besøkt 3. august 2016</ref> [[PVR|digitale videopptakere]]<ref>[http://kodi.wiki/view/PVR_recording_software PVR recording software], Kodi, 4. februar 2016</ref> og [[Nettverkstilsluttet datalager|nettverkstilsluttede datalagre]]. Diverse operativsystemer for [[mobilt internettutstyr]], [[notatblokk-PC]]er, [[Nett-PC]]er, [[nettbrett]], [[lesebrett]], [[smarttelefon]]er og [[smartur]] benytter modifiserte Linuxkjerner.{{#tag:ref|Eksempler på slike enheter er [[iPod]] og [[iPhone]] fra [[Apple|Apple Computer]], med [[iPodLinux]] og iPhone Linux ([[iOS]] fra Apple er derimot basert på [[Mac OS X]]). Andre eksempler er [[Android]], [[WebOS]], [[Tizen]], [[Sailfish OS]], [[Maemo]], [[Openmoko Linux]] og [[Ångström (linuxdistribusjon)|Ångström]], så vel som de tidligere operativsystemene [[Familiar Linux]], [[Firefox OS]], [[H5OS]], [[MeeGo]], [[Moblin]], [[OpenZaurus]] og [[Symbian]]. I 2013 var Android blitt det mest utbredte operativsystemet i hele verden.|group="lower-alpha"|name="mobil"}} Linuxkjernen ble skapt av [[Finland|finnen]] [[Linus Torvalds]] (1969–),<ref>{{cite web |last=Richardson |first=Marjorie |date=1. november 1999 |title=Interview: Linus Torvalds |publisher=Linux Journal |url=http://www.linuxjournal.com/article/3655 |accessdate=2. august 2016}}</ref> som lanserte første utviklingsversjon den 17. september 1991.<ref name="History">[http://history-computer.com/ModernComputer/Software/Linux.html Linux] {{Wayback|url=http://history-computer.com/ModernComputer/Software/Linux.html |date=20160710155255 }}, history-computer.com, 2007</ref> Første stabile versjon kom 14. mars 1994. I dag vedlikeholdes den av et [[Brukernettverk|nettverk med brukere]], hvor det inngår en rekke [[multinasjonalt selskap|multinasjonale selskaper]]. I 2015 hadde nesten 12 000 [[programmerer]]e fra omkring 1 200 selskaper bidratt til kjernens utvikling,<ref name="LinuxContributor">{{cite web |date=18. februar 2015 |title=The Linux Foundation Releases Linux Development Report |publisher=[[Linux Foundation]] |url=http://www.linuxfoundation.org/news-media/announcements/2015/02/linux-foundation-releases-linux-development-report |accessdate=1. august 2016 |url-status=dead |archiveurl=https://web.archive.org/web/20160719042639/https://www.linuxfoundation.org/news-media/announcements/2015/02/linux-foundation-releases-linux-development-report |archivedate=2016-07-19 |tittel=Arkivert kopi |besøksdato=2016-08-01 |arkivurl=https://web.archive.org/web/20160719042639/https://www.linuxfoundation.org/news-media/announcements/2015/02/linux-foundation-releases-linux-development-report |arkivdato=2016-07-19 |url-status=død }}</ref><ref name="Corbet2012"/> mens gruppen «amatører» i 2007 stod for 3,9 % av endringene.<ref name="Marti">Don Marti: [http://www.computerworld.com/article/2542300/network-software/linux-contributor-base-broadens.html Linux contributor base broadens], Computerworld, 2. juli 2007</ref> Siden 1996 har utviklingsdiskusjoner foregått daglig på [[Linuxkjernens e-postliste]].<ref name="Love2015"/> Historien om Linuxkjernen er et viktig kapittel i [[operativsystemets historie]]. Denne artikkelen nevner også andre operativsystemer av betydning: [[Windows 3.0]], [[Windows 3.1]], [[Windows 95]], [[Windows 98]], [[Windows NT]], [[OS/2]], [[Klassisk MacOS]], [[Mac OS X]], [[NeXTSTEP]] og [[Novell]] [[NetWare]]. De blir sammenlignet med Linuxkjernen på flere områder, for å skape en større kontekst. Etterhvert har Linuxkjernen blitt endret fra å støtte [[kooperativ fleroppgavekjøring]] til å støtte [[forkjøpsrett (informatikk)|fleroppgavekjøringen med «forkjøpsrett»]]. Den har også blitt utvidet med [[symmetrisk flerprosessering]], [[Tråd (informatikk)|multitråder]], [[bibliotek (programvare)|delte biblioteker]], [[virtuell hukommelse]] og [[behovsbetinget sideveksling]], [[dynamisk lastbare moduler]], støtte for et tyvetalls ulike [[filsystem]]er, avansert støtte for [[datanett]] og kommunikasjon med [[nettverksoperativsystem]]er (deriblant [[Network File System]] (NFS) og [[Netware]]), [[internett]], og støtte for ulike [[Buss (datakommunikasjon)|busser]] for [[periferienhet]]er etter hvert som disse har utviklet seg. Opprinnelig ble den utviklet for [[Intel]]s [[32-biter]] [[mikroprosessor]] [[Intel 80386|80386]]. I årenes løp har den blitt [[Portering|portert]] til de fleste [[datamaskinarkitektur]]er, deriblant [[x86-64]], [[Motorola 68000]], [[SPARC]], [[PowerPC]], [[IBM POWER]], [[MIPS (andre betydninger)|MIPS]], [[PA-RISC]], [[DEC Alpha]], [[SuperH]], [[IBM System z9]], [[Intel Itanium]], [[ARM (prosessorarkitektur)|ARM]] og [[RISC-V]]. Linuxkjernen er skrevet nesten utelukkende i [[programmeringsspråk]]et [[C (programmeringsspråk)|C]] (med noen [[GNU Compiler Collection|GNU C]] syntaksutvidelser)<ref name="coding style">[https://www.kernel.org/doc/Documentation/CodingStyle Linux kernel coding style], kernel.org, Documentation, 28. juli 2016</ref> og [[AT&T]] [[assembler]].<ref name="coding style"/> Linuxkjernen har vokst fra 8 413 linjer med C-kode i første utviklingsversjon, som ble lansert 17. september 1991, til å omfatte 26 552 127 linjer med C-kode i versjon 5.2.0 som ble lansert 7. juli 2019. Den 23. desember 2018 var det 104 258 registrerte brukere på 62 446 registrerte datamaskiner ifølge nettstedet [[Linux Counter]].<ref name="linuxcounter">[https://www.linuxcounter.net/statistics LinuxCounter] {{Wayback|url=https://www.linuxcounter.net/statistics |date=20170615234801 }}, besøkt 21. september 2018</ref> === Monolittisk kjerne === {{Utdypende|Monolittisk kjerne|mikrokjerne|MINIX}} {{Utdypende|GNU Mach|GNU Hurd|debatten mellom Tanenbaum og Torvalds}} [[Fil:OS-structure.svg|thumb|450px|Strukturen til [[operativsystem]]er som benytter henholdsvis [[monolittisk kjerne|monolittiske kjerner]] og [[mikrokjerne]]r.{{byline|Illustrasjon: Wooptoo|23. juni 2008}}]] Linuxkjernen er en [[monolittisk kjerne]]. Dette betyr at hele operativsystemet kjører i [[kjerne (operativsystem)|operativsystemkjernen]]. I [[mikrokjerne]]r opererer derimot det absolutt minste antall tjenester innenfor kjernen, og andre tjenester bygges lag på lag omkring den. [[Unix]] og [[Unix-lignende]] [[operativsystem]]er benytter stort sett monolittiske kjerner, som er den tradisjonelle arkitekturen. Mikrokjerner oppstod i 1980-årene som en reaksjon på utfordringer som tradisjonelle kjerner hadde i møtet med den teknologiske utvikling. Stadige teknologiske forandringer gjorde at det stadig måtte utvikles nye [[driver|utstyrsdrivere]], nye [[Protokoll (datamaskiner)|nettverksprotokoller]] og nye [[filsystem]]er, såvel som andre deler av operativsystemene. I [[distribuert operativsystem|distribuerte operativsystemer]] var dette spesielt følbart, fordi [[datanett]] kunne bestå av mange ulike [[datamaskinarkitektur]]er, som hver enkelt hadde sin egenarter og gjennomgikk sin egen særegne utvikling, noe som igjen førte til enda mer arbeid for utviklere. Mikrokjerner er implementert ved hjelp av [[modulær programmering]]: Utstyrsdrivere, nettverksprotokoller, filsystemer og flere ting er fjernet fra kjernen. De er isolert i moduler utenfor kjernen, hvor de er lettere å håndtere og modifisere. Forløperen til Linuxkjernen var [[MINIX]], og i begynnelsen var Linuxkjernen avhengig av MINIX under [[oppstart]]. MINIX ble opprinnelig utviklet av [[Andrew S. Tanenbaum]] ved [[Vrije Universiteit Amsterdam]], og første versjon ble lansert i 1987. MINIX er et [[POSIX]]-kompatibelt Unix-lignende operativsystem med en mikrokjerne. Den 29. januar 1992 startet Tanenbaum en [[debatten mellom Tanenbaum og Torvalds|debatt]] på [[Usenet]]s [[diskusjonsgruppe]] <code>[[comp.os.minix]].</code> Der hevdet han at mikrokjerner var overlegen i forhold til monolittiske kjerner, og at Linuxkjernen allerede før lanseringen i 1992 var foreldet. Debatten startet saklig, men utviklet seg etterhvert til en ''«[[Flaming (Internett)|flame war]]»''. Emnet ble tatt opp igjen den 9. mai 2006, og den 12. mai 2006 forklarte Tanenbaum på nytt sin holdning til monolittiske kjerner. Eksempler på mikrokjerner i distribuerte operativsystemer er [[Amoeba 809]], [[Eden (operativsystem)|Eden]], [[Mach (operativsystemkjerne)|Mach]] og [[V system]]. De prosessbaserte distribuerte og Unix-lignende operativsystemene [[LOCUS 845]], [[Accent]] og [[QNX]] hadde derimot en monolittisk kjerne. Windows NT var implementert rundt en mikrokjerne i versjonene 3.1, 3.5 og 3.51. I versjon 4.0 og senere har kjernen vært monolittisk. OS/2, NeXTSTEP, Novell NetWare og det distribuerte operativsystemet [[Plan 9]] benyttet [[hybridkjerne]]r; det samme gjelder Mac OS X. Klassisk MacOS hadde en monolittisk kjerne på [[Motorola 68000-serien]], men benyttet en såkalt [[mikrokjerne|nanokjerne]] (eller «picokjerne»){{#tag:ref|Benevnelsen ''picokjerne'' er noen gang blitt brukt for å ivektlegge den lille størrelsen på en [[mikrokjerne]]. Begrepet ''nanokjerne'' ble første gang brukt av Jonathan S. Shapiro i publikasjonen [http://dl.acm.org/citation.cfm?id=692230 The KeyKOS Nanokernel Architecture] i april 1992. Det var en [[sardonisk]] respons på mikrokjernen [[Mach (operativsystemkjerne)|Mach]], som Shapiro betraktet som monolittisk, ustrukturert og tregere enn de operativsystemkjerner som den hadde til hensikt å erstatte. Senere bruk har som regel ikke oppfattet dette poenget, og begrepene ''picokjerne'' og ''nanokjerne'' har vanligvis (for eksempel i [[Mac OS X]]) samme betydning som mikrokjerne.|group="lower-alpha"|name="nanokjerne"}} på [[PowerPC]]. Mikrokjernen [[GNU Mach]] er [[GNU-prosjektet]]s offisielle operativsystemkjerne. Den har sin forløper i mikrokjernen Mach fra [[Carnegie Mellon University]], og er kjernen i [[GNU Hurd]]. Selv om [[Debian]] offisielt er en [[Linuxdistribusjon]], finnes det en uoffisiell avart ([[Debian GNU/Hurd]]) som kjører GNU Hurd i stedet for Linuxkjernen. Det samme gjelder [[Arch Hurd]] (som er basert på [[Arch Linux]]), [[Guix System Distribution]], tidligere avarter av Bee og [[Gentoo]], og den tidligere distribusjon [[NixOS]]. Linuxkjernen er ikke en del av GNU-prosjektet, men er blitt utviklet ved hjelp av [[GCC|GNU C]] og andre utviklingsverktøy fra GNU. Som allerede nevnt, er den også lisensiert under GNU General Public License versjon 2 (GPLv2), men ikke versjon 3 (GPLv3). === Beskyttelsesringer === {{utdypende|vmlinux|beskyttelsesring|brukermodus}} [[Fil:Priv rings.svg|300px|thumb|right|Beskyttelsesringer for [[x86-arkitektur|x86]] i [[beskyttet modus]].{{byline|Illustrasjon: Hertzsprung|24. august 2007}}]] [[Fil:Linux kernel map.png|thumb|300px|Kart over Linuxkjernen.{{byline|Illustrasjon: Conan|27. september 2008}}]] [[Fil:Linux kernel ubiquity.svg|thumb|300px|Linuxkjernen støtter ulike [[datamaskinarkitektur]]er, og gir en felles plattform for å kjøre [[fri og åpen programvare|fri og åpen]] så vel som [[proprietær programvare]].{{byline|Illustrasjon: ScotXW|20. august 2013}}]] Moderne mikroprosessorer har [[beskyttelsesring]]er, som beskytter data og funksjonalitet fra feil. I [[Linux]] gjenspeiles de i skillet mellom [[brukermodus]] og kjernemodus. Eksempler på programmer som kjører i brukermodus er [[applikasjonsprogramvare]], [[vindussystem]]ene [[vindussystemet X|X]], [[Wayland]], [[Mir (programvare)|Mir]] og en rekke [[skrivebordsmiljø]]er. De har ikke lov til å utføre maskinvarerelaterte kommandoer direkte, men sender [[systemkall]] til Linuxkjernen som utfører disse kommandoene. Linuxkjernen er således den betrodde delen av Linux, som utfører maskinvarerelaterte kommandoer direkte. En slik beskyttelse sørger for [[feiltoleranse]], og hindrer at [[programvarefeil]] i en [[nettleser]] eller et annet brukerprogram krasjer hele operativsystemet. [[Windows 95]] og [[Windows 98]] manglet til sammenligning slik feiltoleranse. Der kunne for eksempel programvarefeil i et [[videospill]] havarere hele datasystemet. [[OS/2]] og [[Windows NT]] på den andre siden, utnyttet i likhet med Linux [[Beskyttet modus|den beskyttede modus]] i x86-arkitekturen hvor disse beskyttelsesringene blir tatt i bruk. Beskyttelsesringene gir ulike ''prioritetsnivåer'', hvor operativsystemkjernen har større ''prioritet'' enn brukerprogrammer, dersom de to kommer i konflikt. Linuxkjernen kjører i prioritetsring 0 (høyest prioritet), mens de øvrige prosesser kjører i prioritetsring 3. Den monolittiske kjernen gjør at hele Linuxkjernen kjører i ring 0. En mikrokjerne ville ha ført til at kun det absolutt minste antall tjenester hadde kjørt i ring 0, og at de resterende delene av operativsystemkjernen kjørte i ring 3. Dette ville igjen ha svekket ytelsen, fordi ring 3 er tregere enn ring 0, og fordi ulike deler av kjernen hadde vært nødt til å sende systemkall til hverandre i stedet for å utføre kommandoer direkte. Mikrokjerner er enklere å modifisere, men prisen for modulariteten er en svekket ytelse. Figuren nedenfor viser de ulike lagene i Linux. Den viser også skillet mellom brukermodus og kjernemodus. Utstyrsdrivere og kjerneutvidelser for [[Skedulering (informatikk)|skedulering]], [[interprosesskommunikasjon]], [[minnehåndtering]], virtuelle filer, [[datanett]], Fieldbus og generiske tellere kjører i operativsystemkjernen (ring 0), med full tilgang til maskinvaren. Dette gjelder også komponentene [[Advanced Linux Sound Architecture]], [[Security-Enhanced Linux]] (SELinux), etc. Nevneverdige unntak er [[Virtuelt filsystem|virtuelle filsystemer]] som er basert på ''[[Filesystem in Userspace]]'' (FUSE) og ''character in userspace'' (CUSE), såvel som deler av UIO (utstyrsdrivere i brukermodus).<ref>{{cite web | url = https://lwn.net/Articles/308445/ | title = Character devices in user space | date = 25. november 2008 | accessdate = 7. mai 2015 | author = Jake Edge | publisher = [[LWN.net]] }}</ref><ref>{{cite web | url = https://lwn.net/Articles/232575/ | title = UIO: user-space drivers | date = 2. mai 2007 | accessdate = 7. mai 2015 | author = Jonathan Corbet | publisher = [[LWN.net]] }}</ref> [[Vindussystemet X]] og [[Wayland]], som de fleste bruker sammen med Linux, kjører i brukermodus. Til forskjell fra tradisjonelle monolittiske kjerner, kan utstyrsdrivere konfigureres som [[lastbar kjernemodul|lastbare kjernemoduler]], som innlastes og avlastes mens systemet kjører. Utstyrsdrivere også under visse omstendigheter bli deaktivert og aktivert dynamisk, for å håndtere [[interrupt|maskinvareavbrudd]] og for bedre å støtte [[symmetrisk flerprosessering]].<ref name="lwn-22912">{{cite web | url = https://lwn.net/Articles/22912/ | title = Driver porting: the preemptible kernel | date = 24. februar 2003 | accessdate = 7. mai 2015 | author = Jonathan Corbet | publisher = [[LWN.net]] }}</ref> Linuxkjernen mangler et [[Binærkompatibilitet|binært applikasjonsgrensesnitt]] (ABI).<ref>{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/stable_api_nonsense.txt |title=The Linux Kernel Driver Interface |last=Kroah-Hartman |first=Greg |authorlink=Greg Kroah-Hartman |url-status=dead |archiveurl=https://web.archive.org/web/20150426153026/https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/stable_api_nonsense.txt |archivedate=2015-04-26 |tittel=Arkivert kopi |besøksdato=2015-04-10 |arkivurl=https://web.archive.org/web/20150426153026/https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/stable_api_nonsense.txt |arkivdato=2015-04-26 |url-status=død }}</ref> Maskinvaren er også en del av filsystemets hierarki. Utstyrsdrivere har et grensesnitt til brukerapplikasjoner gjennom en definisjon i [[Mappe (filsystem)|katalogene]] <code>[[utstyrsfil|/dev]]</code> eller <code>[[sysfs|/sys]]</code>.<ref name="tldp file">{{cite web |url=http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/index.html |title=Linux Filesystem Hierarchy: Chapter 1. Linux Filesystem Hierarchy |last=Nguyen |first=Binh |date=30. juli 2004 |publisher=The Linux Documentation Project |accessdate=28. november 2012}}</ref> Prosessinformasjon blir definert i katalogen <code>[[procfs|/proc]].</code><ref name="tldp file" /> {| class="wikitable" |--style="background-color: #FFFDD0;" ! rowspan=3 | Brukermodus | colspan=1 | '''Applikasjoner''' | colspan=5 | [[Bash]], [[LibreOffice]], [[GIMP]], [[Blender (programvare)|Blender]], [[0 A.D.]], [[PostgreSQL]], [[MySQL]], [[MariaDB]], [[Mozilla Thunderbird]], [[Mozilla Firefox]], etc. |-style="background-color: #def;" | '''Lavnivå systemkomponenter''' | colspan=1 | '''[[Daemon (programvare)|Daemoner]]''':<br />''[[systemd]], [[runit]], logind, networkd, [[PulseAudio|soundd]], …'' | colspan=1 | '''[[Skrivebordsmiljø]]''':<br /> ''[[GNOME]]'', ''[[KDE Software Compilation|KDE]]'', ''[[Xfce]]'', ''[[LXDE]]'', ''[[Sugar (programvare)|Sugar]]'', ''[[MATE (programvare)|MATE]]'', ''[[Cinnamon (programvare)|Cinnamon]]'', ''[[Enlightenment (programvare)|Enlightenment]]'', ''[[LXQt]]'', ''[[Budgie (skrivebordsmiljø)|Budgie]]''<br /><br />'''[[Vindussystem]]''':<br />''[[X11]], [[XFree86]], [[Wayland]], [[Mir (programvare)|Mir]], [[SurfaceFlinger]] (Android)'' | colspan=2 | '''Andre biblioteker:'''<br />''[[GTK+]], [[Qt]], [[Enlightenment Foundation Libraries|EFL]], [[SDL]], [[Simple and Fast Multimedia Library|SFML]], [[Fast Light Toolkit|FLTK]], [[GNUstep]]'', etc. | colspan=1 | '''Grafikk''':<br />''[[Mesa (datagrafikk)|Mesa]]'', ''[[AMD Catalyst]]'', … |- style="background-color: #dfd"" | colspan=1 | '''[[C-standardbiblioteket]]''' | colspan=5 | open(), exec(), sbrk(), socket(), fopen(), calloc(), … (omkring 2000 subrutiner)<br />''[[GNU C Library|glibc]]'' er kompatibelt med [[POSIX]] og [[Single UNIX Specification]] (SUS), ''[[uClibc]]'' var for innebygde systemer, ''[[Bionic (programvare)|bionic]]'' er skrevet for [[Android (operativsystem)|Android]], etc. |-style="background-color: #ffb7b7;" ! rowspan=6 | '''Linuxkjernen (kjernemodus)''' | colspan=8 |[[stat (systemkall)|stat]], [[splice (systemkall)|splice]], [[dup (systemkall)|dup]], [[read (systemkall)|read]], [[open (systemkall)|open]], [[ioctl]], [[write (systemkall)|write]], [[mmap]], [[close (systemkall)|close]], <code>[[exit (systemkall)|exit]],</code> [[unlink (systemkall)|unlink]], [[Fork (Unix)|fork]], [[Exec (systemkall)|exec]], etc.<br />(omkring 380 POSIX/SUS-kompatible [[systemkall]]) |- style="background-color: #ffb7b7;" | colspan=2 | Delsystem for<br />Fieldbus *) | colspan=4 | Delsystem for<br />Generiske tellere *) |- style="background-color: #ffb7b7;" | Delsystem for<br />[[Skedulering (informatikk)|skedulering]] | Delsystem for<br />[[interprosesskommunikasjon]] | Delsystem for<br />[[minnehåndtering]] | Delsystem<br />for virtuelle filer | colspan=2 | Delsystem for [[datanett|nettverk]] |- style="background-color: #ffb7b7;" | colspan=8 | Andre komponenter: [[Advanced Linux Sound Architecture|ALSA]], [[Direct Rendering Infrastructure|DRI]], [[evdev]], [[Logical Volume Manager (Linux)|LVM]], [[device mapper]], [[Linux Network Scheduler]], [[Netfilter]]<br />[[Linux Security Modules]]: ''[[Security-Enhanced Linux|SELinux]]'', ''[[TOMOYO Linux|TOMOYO]]'', ''[[AppArmor]]'', ''[[Smack (Linux sikkerhetsmodul)|Smack]]'' |- style="background-color: #ffd99c;" ! colspan=7 | Maskinvare ([[mikroprosessor]], [[RAM|hovedminne]], [[datalager]], etc.) |} <sup>*)</sup> Tilføyd i versjon 5.2 === Fleroppgavekjøring med «forkjøpsrett» === {{utdypende|Kooperativ fleroppgavekjøring|forkjøpsrett (informatikk){{!}}fleroppgavekjøring med «forkjøpsrett»|forkjøpsrett i operativsystemkjernen}} [[Fil:Kde 3.5.5 - 003.png|thumb|[[Fleroppgavekjøring]] i en [[Frankrike|fransk]] versjon av [[Debian]] med [[skrivebordsmiljø]]et [[KDE]] 3.3.5. Nettleseren [[Konqueror]] kjører samtidig med [[Liste over KDE-programmer|Amarok]] og KwikDisk. Det vises tre instanser av nettleseren, en av dem brukes som [[filbehandler]] og den andre til bildefremvisning.{{byline|Foto: William Scot|9. april 2007}}]] I likhet med tradisjonell Unix (og de fleste av dagens operativsystemer) har Linuxkjernen støtte for [[fleroppgavekjøring]]: Flere programmer kan utføres tilsynelatende samtidig på en og samme datamaskin. Frem til versjon 2.4, som ble lansert 4. januar 2001, benyttet Linuxkjernen [[kooperativ fleroppgavekjøring]]. Dette betyr at programmer samarbeider om å dele mikroprosessor-tid mellom seg. En prosess fortsetter å utføre instruksjoner alene på mikroprosessoren helt til den overlater kontrollen til en annen prosess. Det er opp til programmererne å sørge for at programmene gir fra seg tilgangen til mikroprosessoren når de ikke lenger foretar seg noe nyttig. Dersom et program henger seg opp eller utfører langvarige operasjoner uten å slippe kontrollen til andre prosesser, kan hele datasystemet gå i stå. Som kontrast har Unix støttet den mer sofistikerte [[forkjøpsrett (informatikk)|fleroppgavekjøringen med «forkjøpsrett»]]. Det har «forkjøpsrett», makt til å avbryte prosessen, og senere gi det andre oppgaver. Slik at den i mellomtiden ikke sperrer andre programmer. Linux støttet dette fra starten, men bare overfor programmer i brukermodus.<ref>{{cite book |last1=Bovet |first1=Daniel P. |last2=Cesati |first2=Marco |date=oktober 2000 |title=Understanding the Linux Kernel |url=http://oreilly.com/catalog/linuxkernel/chapter/ch10.html |publisher=[[O'Reilly Media|O'Reilly]] |chapter=Chapter 10: Process Scheduling |isbn=0-596-00002-2 |accessdate=15. oktober 2011 |archiveurl=https://web.archive.org/web/20140921000832/http://oreilly.com/catalog/linuxkernel/chapter/ch10.html |archivedate=2014-09-21 |url-status=dead |tittel=Arkivert kopi |besøksdato=2006-06-13 |arkivurl=https://web.archive.org/web/20060613130106/http://oreilly.com/catalog/linuxkernel/chapter/ch10.html |arkivdato=2006-06-13 |url-status=død }} {{Kilde www |url=http://oreilly.com/catalog/linuxkernel/chapter/ch10.html |tittel=Arkivert kopi |besøksdato=2017-03-09 |arkiv-dato=2006-06-13 |arkiv-url=https://web.archive.org/web/20060613130106/http://oreilly.com/catalog/linuxkernel/chapter/ch10.html |url-status=unfit }}</ref> Når en prosess kjøres, settes den [[Boolsk algebra|boolske]] variabelen <code>TASK_RUNNING</code>, som er knyttet til prosessen, lik sann. Prosessen kan avbrytes av andre prosesser, som har en høyere prioritet, og som dermed setter <code>TASK_RUNNING</code> lik falsk. I versjon 2.4 begynte arbeidet med å innføre fleroppgavekjøringen med «forkjøpsrett» også i Linuxkjernen. Arbeidet var fullført med lanseringen av versjon 2.6 den 17. desember 2003. Fleroppgavekjøringen med «forkjøpsrett» er imidlertid ikke gjennomført i alle seksjoner av kjernen.<ref>{{cite web|url=http://www.ibm.com/developerworks/linux/library/l-inside/index.html |title=Towards Linux 2.6, A look into the workings of the next new kernel |last=Santhanam |first=Anand |date=23. september 2003 |publisher=[[IBM Global Services]] |accessdate=15. oktober 2011 |archiveurl=https://web.archive.org/web/20130927200239/http://www.ibm.com/developerworks/linux/library/l-inside/index.html |archivedate=2013-09-27 |url-status=dead }}</ref> Linuxkjernen inneholder forskjellige klasser for [[Skedulering (informatikk)|skedulering]].<ref name="moshe">{{cite web |url=http://www.linuxjournal.com/article/3910 |title=The Linux Scheduler |last=Bar |first=Moshe |date=1. april 2000 |work=[[Linux Journal]] |publisher=Belltown Media, Inc. |accessdate=14. april 2012}}</ref> Standard skeduleringsmekanisme er [[Completely Fair Scheduler]], som ble introdusert i versjon 2.6.23 av kjernen den 9. oktober 2007.<ref>{{cite web |title=[patch] Modular Scheduler Core and Completely Fair Scheduler [CFS] |url=https://lwn.net/Articles/230501/ |last=Molnár |first=Ingo |authorlink=Ingo Molnár |date=13. april 2007 |mailinglist=[[LKML]] |accessdate=14. april 2012}}</ref> Internt er denne skeduleringsklassen kjent som <code>SCHED_OTHER</code>. Linuxkjernen inneholder også to [[POSIX]]-kompatible<ref name="posix1b">[http://www.opengroup.org/onlinepubs/009695399 The Open Group Base Specifications Issue 6], The IEEE and The Open Group, IEEE Std 1003.1, 2004 Edition, IEEE Standard for Information Technology – Portable Operating System Interface, POSIX.1b, Real-time extensions (IEEE Std 1003.1b-1993)</ref> [[sanntid]]sklasser som kalles <code>SCHED_FIFO</code> (basert på en [[Kø (datastruktur)|køstruktur]]) og <code>SCHED_RR</code> ([[round robin skedulering]]).<ref name="moshe" /> Ved å benytte [[patch (program)|programvareendringen]] <code>PREEMPT_RT</code>, kan full støtte for «forkjøpsrett» bli innført for [[kritisk seksjon|kritiske seksjoner]], [[avbruddshåndterer]]e og kodesekvenser hvor avbrudd er deaktivert.<ref>{{cite web |url=https://lwn.net/Articles/146861/ |title=A realtime preemption overview |last=McKenney |first=Paul |date=10. august 2005 |publisher=[[LWN.net]] |accessdate=5. februar 2012}}</ref> Denne programvareendringen og dens funksjonalitet er blitt delvis integrert i Linuxkjernen.<ref>{{cite web |url=https://www.osadl.org/Realtime-Linux.projects-realtime-linux.0.html |title=OSADL Project: Realtime Linux |publisher=[[OSADL]] |accessdate=5. februar 2012}}</ref> Bruk av «forkjøpsrett» innebærer mindre [[latens]], gjør responsen raskere, og gjør Linux mer egnet for sanntidsapplikasjoner. Eldre versjoner av Linuxkjernen hadde en [[stor kjernelås]] for synkronisering over hele kjernen, men denne ble fjernet av Arnd Bergmann den 25. januar 2011.<ref>{{cite web |url=https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4ba8216cd90560bc402f52076f64d8546e8aefcb |title=BKL: That's all, folks |last=Bergmann |first=Arnd |date=5. mars 2011 |publisher=Linux Kernel Organization, Inc. |accessdate=20. februar 2012 |url-status=dead |archiveurl=https://archive.today/20120720043351/http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4ba8216cd90560bc402f52076f64d8546e8aefcb |archivedate=2012-07-20 |tittel=Arkivert kopi |besøksdato=2012-02-20 |arkivurl=https://archive.today/20120720043351/http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4ba8216cd90560bc402f52076f64d8546e8aefcb |arkivdato=2012-07-20 |url-status=død }}</ref> En tilleggspolitikk for skedulering kjent som <code>[[SCHED_DEADLINE]]</code>, er en implementasjon av algoritmen [[earliest deadline first skedulering]] (EDF) og ble tilføyd versjon 3.14 av Linuxkjernen den 30. mars 2014.<ref>{{cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=MTU4Mjg |title=The Linux 3.14 Kernel Already Has Many Exciting Features |last=Larabel |first=Michael |authorlink=Michael Larabel |date=24. januar 2014 |publisher=[[Phoronix]] |accessdate=3. februar 2014}}</ref><ref>{{cite web |url=http://kernelnewbies.org/Linux_3.14#head-651929cdcf19cc2e2cfc7feb16b78ef963d195fe |title=Linux kernel 3.14, Section 1.1. Deadline scheduling class for better real-time scheduling |date=30. mars 2014 |website=kernelnewbies.org |accessdate=2. april 2014}}</ref> Kooperativ fleroppgavekjøring ble benyttet i [[Windows 3.0]] og [[Windows 3.1]], så vel som i [[klassisk MacOS|det klassiske MacOS]], [[RISC OS]] og i de fleste versjoner av [[nettverksoperativsystem]]et [[NetWare]] (før versjon 6.5). Windows 95 og Windows 98 benyttet kooperativ fleroppgavekjøring under kjøring av [[16-biter]] programmer, og fleroppgavekjøring med «forkjøpsrett» under kjøring av [[32-biter]] programmer. Fleroppgavekjøringen med «forkjøpsrett» var standard på OS/2 og [[NeXTSTEP]], og har alltid vært det på Windows NT og [[OS X]]. === Symmetrisk flerprosessering === {{Utdypende|Symmetrisk flerprosessering}} [[Fil:Simplified_Structure_of_the_Linux_Kernel.svg|thumb|Lokaliseringen av [[Completely Fair Scheduler]] i Linuxkjernen.{{byline|Illustrasjon: ScotXW|20. februar 2016}}]] Siden versjon 2.0, som ble lansert 9. juni 1996, har Linuxkjernen støttet [[symmetrisk flerprosessering]]. Dette er en [[flerprosessering]] som støttes direkte av [[maskinvare]]n, mens [[asymmetrisk flerprosessering]] besørges indirekte av operativsystemet eller annen programvare. Til sammenligning var dette fraværende i klassisk MacOS så vel som i [[MS-DOS]] baserte versjoner av [[Microsoft Windows]]. Det ble innført støtte for dette i OS/2 (fra versjon 2.11), og ble standard i Windows NT og MacOS X. Symmetrisk flerprosessering innebærer to eller flere mikroprosessorer i et og samme datasystem. Symmetrisk flerprosessering faller inn under kategorien [[SIMD]] (''Single Instructions, Multiple Data'') i [[Flynns taksonomi]], og innebærer at to eller flere mikroprosessorer deler et felles [[RAM|dataminne]]. Dette betyr at [[Flerkjerners mikroprosessor|flere prosessorkjerner]] finnes på samme [[mikrobrikke]], at flere mikrobrikker (med en eller flere kjerner) finnes i en enkelt mikroprosessor, eller at flere mikroprosessorer finnes på et [[hovedkort]]. Symmetrisk flerprosessering kan også realiseres i et [[Datanettverk|nettverk]]; da deles et felles dataminne av to eller flere datamaskiner. Symmetrisk flerprosessering ble første gang lansert i enkelte modeller av [[stormaskin]]en [[IBM System/360]]. [[IBM System/360 modell 65|Modell 65]], [[IBM System/360 modell 67|modell 67]] og modell 67-2, som kom på markedet i 1965, hadde to mikroprosessorer som kjørte samtidig. Operativsystemene [[OS/360|OS/360 M65MP]] og [[IBM TSS/360]] støttet denne flerprosesseringen, og det samme var tilfelle med [[Michigan Terminal System]]. I 1986 innledet [[Sun Microsystems]] en ny [[RISC]]-familie gjennom spesifikasjonen til [[datamaskinarkitektur]]en [[SPARC]], og i 1987 gjorde den sin debut i [[arbeidsstasjon]]en [[Sun-4|«Sunrise»]]. SPARC er en forkortelse for «skalerbar prosessorarkitektur» (''Scalable Processor ARChitecture''), og arkitekturen kunne skaleres opp til flere tusen mikroprosessorer ([[superdatamaskin]]er). Unix-avartene [[SunOS]] og [[Solaris (operativsystem)|Solaris]] var laget for disse datamaskinene. Det finnes mange flere eksempler. Her er bare noen systemer nevnt. [[Sequent Computer Systems]] lanserte i 1987 datamaskiner med opptil 20 stk 32-biter [[Intel 80386]] mikroprosessorer (''Symmetry S''-serien). I 1995 ble [[Intel Pentium Pro]] lansert, med innebygd logikk for symmetrisk flerprosessering. I 2006 lanserte [[Intel]] dobbeltkjerneprosessoren [[Intel Pentium Dual Core]] og firekjernersprosessoren [[Core Quad]]. I dag er flerkjerners mikroprosessorer stort sett standard. === Multitråder === {{utdypende|Tråd (informatikk){{!}}Tråder|LinuxThreads|Native POSIX Thread Library}} [[Fil:Intel Core I7-920 Boxed - 14.JPG|thumb|Intel Core i7 920 [[mikroprosessor]] med 4 kjerner. [[Flerkjerners mikroprosessor]]er er i dag blitt utbredt.{{byline|Foto: Alan Lorenzo|1. januar 2007}}]] Linuxkjernen støtter [[Tråd (informatikk)|tråder]], som betyr at flere deler av det samme [[dataprogram]]met kjører samtidig. Mens ordinære [[Prosess (informatikk)|prosesser]] er uavhengige, har mye tilstandsinformasjon, separate [[dataminne|minneadresser]] og interne prosess-kommunikasjonsmekanismer, deler tråder informasjonen fra én enkel prosess, samt minne og andre ressurser, direkte; de kan betraktes som asynkrone prosedyrer i et program. [[Kontekstskifte]]r skjer som regel raskere mellom flere tråder enn mellom prosesser. Oppgaver med forskjellige ressurskrav kan utføres i forskjellige tråder, ved at for eksempel at [[Skjerm (monitor)|skjermen]] oppdateres mens [[platelager]]et, som trenger lite systemressurser, arbeider. Trådene kan også fordeles på ulike mikroprosessorer når flerprosessering er tilstedeværende, for å øke dataprogrammers ytelse. Forut for versjon 2.6 benyttet Linuxkjernen [[LinuxThreads]]. Dette var en delvis implementasjon av [[POSIX Threads]], som er definert av [[POSIX]] 1003.1c. LinuxThreads benyttet det nye systemkallet <code>[[Fork (Unix)|clone()]]</code> til å skape tråder som delte foreldreprosessens adresseområde. Dette var en avart av systemkallet <code>[[Fork (Unix)|fork()]]</code>, som har vært en del av UNIX siden 1971. Tråder ble gitt unike [[prosessidentifikator]]er, og kunne skape problemer for håndteringen av [[Unix-signal]]er. Signalene [[Unix-signal|SIGUSR1]] og [[Unix-signal|SIGUSR2]] ble brukt til å koordinere trådene på en slik måte at de samme signalene ikke kunne brukes av andre programmer. To alternativer vokste etter hvert frem som en mulig etterfølger til LinuxThreads: [[Next Generation POSIX Threads]] og [[Native POSIX Thread Library]] (NPTL). NTPL vant frem og ble standard i versjon 2.6 av Linuxkjernen. === Virtuell hukommelse === {{utdypende|Virtuell hukommelse|sideveksling|behovsbetinget sideveksling}} [[Fil:Virtual memory.svg|thumb|250px|[[Virtuell hukommelse]]: Programmet tror at det har en kontinuerlig mengde med [[RAM|hovedminne]]. I virkeligheten ligger aktive deler av programmet spredt i hovedminnet, mens inaktive deler ligger på en [[harddisk]].{{byline|Illustrasjon: Ehamberg|5. november 2009}}]] På samme måte som UNIX, og andre moderne operativsystemer, støtter Linuxkjernen [[virtuell hukommelse]]. Det har den gjort helt fra starten av. Virtuell hukommelse gir dataprogrammer inntrykk av at de har tilgang til en kontinuerlig mengde med [[RAM|hovedminne]]. I virkeligheten befinner deres minne seg fragmentert i hovedminnet, og kan endog overstige den mengden med hovedminne som finnes i datamaskinen. I det sistnevnte tilfelle, brukes datamaskinens [[harddisk]] delvis som minne ved å forflytte deler av programmet frem og tilbake mellom hovedminnet og harddisken ''(swapping)''. Fra UNIX arvet Linuxkjernen [[sideveksling]]. Denne metode er også i bruk i andre Unix-lignende operativsystemer, og i de fleste moderne operativsystemer. Sideveksling er en form for [[minnehåndtering]] hvor datamaskinen lagrer og henter data fra et sekundært [[datalager]] for bruk i hovedminnet.<ref name="ostep-1">{{citation|title=Operating Systems: Three Easy Pieces (Chapter: Paging)|url=http://pages.cs.wisc.edu/~remzi/OSTEP/vm-paging.pdf|publisher= Arpaci-Dusseau Books|year = 2014|first1 = Remzi H.|last1 =Arpaci-Dusseau|first2=Andrea C.|last2 = Arpaci-Dusseau}}</ref> Hvert fragment kalles en [[side (dataminne)|side]], og er 4 Kb i størrelse. Linuxkjernen benytter [[behovsbetinget sideveksling]], som betyr at den kopierer en side inn i den fysiske hukommelsen bare hvis et forsøk blir gjort på å aksessere den og siden ikke allerede er i hukommelsen.<ref>[http://www.linux-tutorial.info/modules.php?name=MContent&pageid=306 Demand paging] {{Wayback|url=http://www.linux-tutorial.info/modules.php?name=MContent&pageid=306 |date=20170312075300 }}, www.linux-tutorial</ref> I kontrast til sideveksling står [[minnesegmentering|segmentering]]. Under segmentering har hvert segment en maksimal størrelse, men varierer innbyrdes i størrelse. Segmentering ble benyttet i operativsystemet [[Multics]], som var forgjengeren til UNIX. Linuxkjernen ble opprinnelig utviklet for 32-biter mikroprosessoren [[Intel 80386]], som var en del av [[x86]]-familien. De første medlemmer av denne familien var 16-biter mikroprosessorene [[Intel 8086]] og [[Intel 8088]]. De benyttet segmenter som var 64 Kb i størrelse, for å være kompatibel med [[8-biter]] mikroprosessoren [[Intel 8085]]. [[Intel 80286]] støttet virtuell hukommelse, og «arvet» segmenter på 64 Kb fra sine forgjengere. Dette var også grunnen til at OS/2, som i utgangspunktet var «skreddersydd» for Intel 80286, benyttet en segmentert minnemodell. Det samme gjorde Windows 3.0 og Windows 3.1. Intel 80386 økte maksimalgrensen på segmentenes størrelse fra 64 Kb til 4 Gb. Den metode som Linuxkjernen benyttet på denne mikroprosessoren, var å ta i bruk ''bare et enkelt segment'' og deretter foreta sideveksling innenfor dette segmentet. Slik kunne man «lure» operativsystemet til å tro at den underliggende maskinvaren ikke var segmentert, men støttet sideveksling i utgangspunktet. Denne metoden ble også tatt i bruk av Windows NT på Intel 80386. Sideveksling gir mindre [[fragmentering (informatikk)|fragmentering]] av harddisken enn segmentering.<ref>Frédéric Haziza: [https://www.it.uu.se/edu/course/homepage/oskomp/vt07/lectures/paging/handout.pdf Paging & Segmentation] {{Wayback|url=https://www.it.uu.se/edu/course/homepage/oskomp/vt07/lectures/paging/handout.pdf |date=20170830062342 }}, Uppsala universitet, våren 2007</ref> === Dynamisk lastbare kjernemoduler === {{utdypende|Lastbar kjernemodul{{!}}Dynamisk lastbare kjernemoduler}} Liksom [[FreeBSD]], Solaris, [[AIX]], Mac OS X, Windows NT og det tidligere nettverksoperativsystemet NetWare, har Linuxkjernen støtte for [[Lastbar kjernemodul|dynamisk lastbare kjernemoduler]]. Dette er [[objektfil]]er som inneholder en utvidelse av operativsystemets kjerne, og som vanligvis brukes for å støtte nyere [[maskinvare]], [[filsystem]]er eller for å tilføye nye [[systemkall]]. Når deres funksjonalitet ikke lenger er påkrevet, kan de bli lastet ut av kjernen for å frigjøre hukommelse og andre ressurser. Modulene blir lastet inn og ut av kjernen med kommandoen <code>[[modprobe]]</code>. De er lokaliserte i filkatalogen <code>/lib/modules</code> og hadde tidligere [[filetternavn]]et <code>.o</code>. Siden versjon 2.6 har de hatt filetternavnet <code>.ko</code>.<ref>{{cite web|title=The Linux Kernel Module Programming Guide, section 2.2 "Compiling Kernel Modules"|url=http://tldp.org/LDP/lkmpg/2.6/html/x181.html|accessdate=2011-10-14}}</ref> Programmet <code>modprobe</code> var en del av ''modutils'' fra versjon 2.2 til versjon 2.4.x av Linuxkjernen.<ref>{{kilde www |url=http://ftp.kernel.org/pub/linux/utils/kernel/modutils/ |tittel=Arkivert kopi |besøksdato=2008-09-22 |url-status=død |arkivurl=https://web.archive.org/web/20090223192439/http://ftp.kernel.org/pub/linux/utils/kernel/modutils/ |arkivdato=2009-02-23 }}</ref> Fra og med versjon 2.6 blir verktøyet levert sammen med ''module-init-tools''.<ref>{{kilde www |url=http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/ |tittel=Arkivert kopi |besøksdato=2008-09-22 |url-status=død |arkivurl=https://web.archive.org/web/20080609070918/http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/ |arkivdato=2008-06-09 }}</ref> Kommandoen <code>[[lsmod]]</code> lister ut de lastbare kjernemoduler. I nødstilfeller, når datasystemet ikke starter opp på grunn av feil i modulene, kan spesifikke moduler aktiveres eller deaktiveres ved å modifisere kjernens oppstartsparametere. Deaktivering av et kjernemodul skjer via kommandoen <code>[[sysctl]]</code> med opsjonen <code>/proc/sys/kernel/modules_disabled</code>.<ref>{{cite web |title=Sysctl/kernel.txt |url=https://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%3Ba%3Dblob%3Bf%3DDocumentation%2Fsysctl%2Fkernel.txt%3Bhb%3DHEAD |accessdate=4. januar 2013 |archive-date=2013-04-15 |archive-url=https://archive.today/20130415070311/http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/sysctl/kernel.txt;hb=HEAD |url-status=yes }}</ref><ref>{{cite web | url = http://www.outflux.net/blog/archives/2012/11/28/clean-module-disabling/ | title = Clean module disabling | date = 2012-11-28 | accessdate = 2013-12-12 | author = Kees Cook | publisher = outflux.net }}</ref> Et datasystem som benytter [[RAM-disk]]en [[initramfs]], kan av sikkerhetsmessige hensyn laste spesifikke moduler under oppstart og deretter deaktivere lastingen av moduler. Hvis angripere kan forandre initramfs, kan de også forandre på binærkoden i kjernen. I motsetning til FreeBSD, Solaris, Mac OS X og Windows NT, har Linuxkjernen intet [[API (programmering)|applikasjonsprogrammeringsgrensesnitt]] (API) eller binært applikasjonsgrensesnitt (ABI) for kjernemoduler. Dette betyr at det er forskjeller mellom ulike kjerneversjoner hva angår de interne strukturer og funksjoner, noe som kan skape kompatibilitetsproblemer. For å avhjelpe dette, er versjonsdata plassert innenfor seksjonen <code>.modinfo</code> i lastbare [[Executable and Linkable Format|ELF]]-moduler. Versjonsinformasjonen kan sammenlignes med den kjørende kjerne før et modul kjøres. Hvis versjonene er inkompatible, vil modulen ikke bli lastet. === Delte biblioteker === {{utdypende|Bibliotek (programvare){{!}}Delte biblioteker}} Likesom de fleste moderne operativsystemer, har Linuxkjernen støtte for [[Bibliotek (programvare)|delte biblioteker]]. Et delt bibliotek er en fil som kan deles av [[Eksekverbar fil|eksekverbare filer]], og som kan lastes opp under oppstart og under kjøring. De kan bli statisk lenket, hvilket betyr at både biblioteket og programmene allokeres minne når det blir skapt. Alternativt kan bibliotekene bli dynamisk lenket, hvilket betyr at programmene bare kobler seg til biblioteket gjennom en API når det vil ha en bestemt oppgave utført. Biblioteker ligger i katalogen <code>/usr/lib/</code>. De har prefikset lib, og er etterfulgt av filetternavnet <code>.so</code>.<ref>David A. Wheeler: [http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html 3. Shared Libraries], Program Library HOWTO, version 1.20, 11. april 2003</ref> Hvis de er statisk lenket har de filetternavnet <code>.a</code>. === Programmeringsspråk === {{utdypende|C (programmeringsspråk){{!}}Programmeringsspråket C|GNU Compiler Collection}} Kjernen er skrevet nesten utelukkende i [[programmeringsspråk]]et [[C (programmeringsspråk)|C]] (sammen med noen [[GNU Compiler Collection|GNU C]] syntaksutvidelser). Enkelte korte seksjoner av koden er skrevet i [[AT&T]] [[assembler]]. I versjon 4.1 ble store deler av assemblerkoden skrevet i C.<ref>Michael Larabel: [http://www.phoronix.com/scan.php?page=news_item&px=Linux-4.1-For-x86-ASM Linux 4.1 Brings Many Potentially Risky x86/ASM Changes], phoronix.com, 13. april 2015</ref>, og i versjon 4.2 ble enda mer av assemblerkoden omskrevet i C.<ref>Michael Larabel: [http://www.phoronix.com/scan.php?page=news_item&px=more-x86-asm-to-c-linux More Of The Linux Kernel's x86 Assembly Code Gets Rewritten In C], phoronix.com, 18. juni 2015</ref> GNU C (GCC) var lenge den eneste [[kompilator]] som var i stand til å bygge Linuxkjernen på en korrekt måte. === Kompatibilitet med kompilatorer === {{utdypende|Intel C++ Compiler|Clang}} GNU C Compiler (GCC) er standard kompilator for Linuxkjernens kildekode. I 2004 modifiserte [[Intel]] sin [[Intel C++ Compiler]], slik at den også var i stand til å kompilere Linuxkjernen.<ref>{{cite web |url=http://www.pyrillion.org/index.html?showframe=linuxkernelpatch.html |title=Linux kernel patch for Intel Compiler |last=Kubbilun |first=Ingo A. |date=2. juni 2004 |publisher=Pyrillion.org |accessdate=12. november 2010 |archiveurl=https://web.archive.org/web/20110722090031/http://www.pyrillion.org/index.html?showframe=linuxkernelpatch.html |archivedate=2011-07-22 |language=de |url-status=dead |tittel=Arkivert kopi |besøksdato=2010-11-12 |arkivurl=https://web.archive.org/web/20110722090031/http://www.pyrillion.org/index.html?showframe=linuxkernelpatch.html |arkivdato=2011-07-22 |url-status=død }} {{Kilde www |url=http://www.pyrillion.org/index.html?showframe=linuxkernelpatch.html |tittel=Arkivert kopi |besøksdato=2017-03-11 |arkiv-dato=2011-07-22 |arkiv-url=https://web.archive.org/web/20110722090031/http://www.pyrillion.org/index.html?showframe=linuxkernelpatch.html |url-status=unfit }}</ref> I 2009 ble dette gjort enda en gang på en modifisert utgave av versjon 2.6.22 av Linuxkjernen.<ref>{{cite web |url=http://linux.slashdot.org/article.pl?sid=09/02/26/2216241 |title=High Performance Linux Kernel Project — LinuxDNA |author=timothy |date=26. februar 2009 |work=[[Slashdot|Slashdot Linux]] |publisher=Dice Holdings |accessdate=30. oktober 2010}}</ref><ref>{{cite web |url=http://www.linuxjournal.com/content/linuxdna-supercharges-linux-intel-cc-compiler |title=LinuxDNA Supercharges Linux with the Intel C/C++ Compiler |last=Ryan |first=Justin |date=25. februar 2009 |work=[[Linux Journal]] |publisher=Belltown Media, Inc. |accessdate=30. oktober 2010}}</ref> Siden 2010 har det pågått et arbeide med å bygge Linuxkjernen med [[Clang]], en C-kompilator som er et alternativ til GCC.<ref>{{cite web |url=http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html |title=Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts) |last=Lelbach |first=Bryce |mailing-list=cfe-dev |date=25. oktober 2010 |archiveurl=https://web.archive.org/web/20150907044958/http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html |archivedate=7. september 2015 |tittel=Arkivert kopi |besøksdato=2012-09-18 |arkivurl=https://web.archive.org/web/20150907044958/http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html |arkivdato=2015-09-07 |url-status=død }} {{Kilde www |url=http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html |tittel=Arkivert kopi |besøksdato=2017-03-11 |arkiv-dato=2015-09-07 |arkiv-url=https://web.archive.org/web/20150907044958/http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html |url-status=unfit }}</ref> Den 12. april 2014 kunne nesten hele den offisielle kjernen bli kompilert med Clang.<ref>{{cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=MTY2MjY |title=Linux 3.15 Can Almost Be Compiled Under LLVM's Clang |last=Larabel |first=Michael |authorlink=Michael Larabel |date=12. april 2014 |publisher=[[Phoronix]] |accessdate=10. juni 2014}}</ref><ref>{{cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=MTY2MjY |title=Patch By Patch, LLVM Clang Gets Better At Building The Linux Kernel |last=Larabel |first=Michael |authorlink=Michael Larabel |publisher=[[Phoronix]] |accessdate=20. november 2014}}</ref> Prosjektet er kjent som ''LLVMLinux'', oppkalt etter infrastrukturen [[LLVM]] som ligger til grunn for Clang.<ref>{{cite web |url=https://lwn.net/Articles/549203/ |title=LFCS: The LLVMLinux project |last=Edge |first=Jake |date=7. mai 2013 |publisher=[[LWN.net]] |accessdate=3. mars 2015}}</ref> LLVMLinux er ikke en [[fork]] av Linuxkjernen eller LLVM, men et metaprosjekt som består av programvareoppdateringer som til slutt blir en del av hovedprosjektet. Fordelen med LLVMLinux for Linuxkjernens utviklere, er at Clang er kjent for raskere kompilering enn GCC.<ref>{{cite web |url=http://llvm.org/devmtg/2014-02/slides/moller-llvmlinux.pdf |title=LLVMLinux: The Linux Kernel with Dragon Wings |last=Möller |first=Jan-Simon |date=2. februar 2014 |publisher=[[LLVM|LLVM Project]] |accessdate=3. mars 2015}}</ref> === Grensesnitt mot Linuxkjernen === ''Linuxkjernens grensesnitt'' er flere grensesnitt mellom kjernen og applikasjoner i [[brukermodus]], såvel som interne grensesnitt i kjernen. Det finnes to typer grensesnitt mellom kjernen og programmer som kjører i brukermodus: [[API (programmering)|applikasjonsprogrammeringsgrensesnitt]] (API) og [[Binærkompatibilitet|binære applikasjonsgrensesnitt]] (ABI). Internt i kjernen finnes det en rekke applikasjonsprogrammeringsgrensesnitt, men intet binært applikasjonsgrensesnitt.[[Fil:Linux kernel interfaces.svg|thumb|300px|Fire grensesnitt er definert: To interne i kjernen, og to mellom kjernen og brukermodus.{{byline|Illustrasjon: ScotXW|20. august 2013}}]] [[Fil:Linux AMD graphics stack.svg|thumb|300px|På XDC2014 kunngjorde Alex Deucher fra [[Advanced Micro Devices]] (AMD) en felles driver for [[grafikkort]] og [[AMD Accelerated Processing Unit|APU]]'er.<ref>{{cite web |url=http://wiki.x.org/wiki/Events/XDC2014/XDC2014DeucherAMD/ |title=AMD's New Unified Open Source Driver |last=Deucher |first=Alex |date=7. oktober 2014 |publisher=[[X.Org Foundation]] |accessdate=21. januar 2015}}</ref> Den propritære Linuxdriveren, [[AMD Catalyst|libGL-fglrx-glx]], deler [[Direct Rendering Manager]] med [[Mesa (datagrafikk)|Mesa 3D]]. Ettersom kjernen mangler et stabilt binærgrensesnitt, brukte AMD sin egen [[binary blob]].{{byline|Illustrasjon: ScotXW|20. januar 2015}}]] ==== Applikasjonsprogrammeringsgrensesnitt i brukermodus ==== {{utdypende|POSIX|Single UNIX Specification|Linuxkjernens API}} Portabilitet i kildekoden sikrer at et C-program som er skrevet i henhold til en standard kan kompileres og kjøres på ethvert system som følger samme standarden. De relevante standarder i sammenheng med Linuxkjernen, og [[GNU C Library]] som er tilknyttet den, er [[POSIX]] og [[Single UNIX Specification]]. Linuxdistribusjonene [[EulerOS]]<ref>{{cite web|url=http://www.huawei.com/en/news/2016/9/huawei-kunlun-euleros-unix-certification|title=Huawei KunLun EulerOS 2.0 Operating System Passes UNIX Certification |accessdate=2016-10-29|publisher=[[Huawei]]}}</ref><ref name="EulerOS_conformance_commands">{{cite web| url=http://www.opengroup.org/csq/repository/norationale=1&noreferences=1&RID=huawei%252FCX1%252F1.html| title=Huawei Conformance Statement: Commands and Utilities V4| author=Peng Shen| publisher=The Open Group| accessdate=2016-10-29| url-status=dead| archiveurl=https://web.archive.org/web/20161029175646/http://www.opengroup.org/csq/repository/norationale%3D1%26noreferences%3D1%26RID%3Dhuawei/CX1/1.html| archivedate=2016-10-29}}</ref> og [[Inspur K-UX]],<ref>{{cite web|url=http://www.opengroup.org/openbrand/register/brand3596.htm |title=The Open Brand Register of Certified Products|accessdate=2014-05-29|publisher=The Open Group|date=2014-05-29}}</ref><ref name="inspur_conformance_statement">{{cite web| url=http://www.opengroup.org/csq/repository/RID=inspur%252FXY1%252F1.html| title=Inspur Conformance Statement| author=Xie Ruohong| publisher=The Open Group| accessdate=2015-12-08| url-status=dead| archiveurl=https://web.archive.org/web/20151210194928/http://www.opengroup.org/csq/repository/RID%3Dinspur/XY1/1.html| archivedate=2015-12-10}}</ref> som begge er derivater av [[Red Hat Enterprise Linux]], følger offisielt UNIX-03 standarden. Ingen andre Linuxdistribusjoner har fått varemerket «UNIX» av [[Open Group]], hovedsakelig på grunn av kostnadene ved konformitets-testing. GNU C Library støtter standardene K&R C, [[ANSI C]], [[ISO]] [[C99]], ISO [[C11]], ISO [[C18]], [[Single UNIX Specification]] (UNIX 93, UNIX 95, UNIX 98, UNIX 03, UNIX V7), POSIX.1c, POSIX.1d, POSIX.1j, POSIX.2, POSIX.1-2001, POSIX-2004, POSIX-2008, POSIX.1-2017, [[Berkeley Software Distribution|BSD]]-grensesnitt, [[System V Interface Definition]] (SVID), [[X/Open|X/Open Portability Guide]] 4.2 og utvidelser av C-syntaksen som er spesifikke for Linuxkjernen. Biblioteket støtter også [[C++]]-standardene C++98, [[C++03]], [[C++11]], [[C++14]], [[C++17]] og den kommende standarden [[C++20]]. [[Linuxkjernens grensesnitt|Linuxkjernens API]] består hovedsakelig av systemkall. ==== Applikasjonsprogrammers binærgrensesnitt ==== {{utdypende|Linux Standard Base}} Binærportabilitet betyr at ethvert program som er kompilert for en gitt maskinvareplattform, kan kjøre i kompilert form på enhver annen maskinvareplattform som følger standarden. Binærportabilitet er et essensielt krav for den kommersielle levedyktighet til applikasjoner fra [[uavhengig programvareleverandør|uavhengige programvareleverandører]] som er bygd for operativsystemer som er basert på Linuxkjernen. Binærkompatibilitet er mye mer krevende enn kildekodeportabilitet. Per januar 2020 er [[Linux Standard Base]] (LSB) den eneste standard for binærkompatibilitet. ==== Applikasjonsgrensesnitt i kjernen ==== Flere interne applikasjonsgrensensnitt i kjernen anvendes mellom forskjellige undersystemer og deres undersystemer. Noen har vært stabile over flere versjoner, mens andre har endret seg. Det er ingen garanti for at de vil vedvare; vedlikeholdere og bidragsytere kan fritt endre dem når som helst.<ref>{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/stable_api_nonsense.txt |title=The Linux Kernel Driver Interface |author=Greg Kroah-Hartman |accessdate=10. april 2015 |url-status=dead |archiveurl=https://web.archive.org/web/20150426153026/https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/stable_api_nonsense.txt |archivedate=2015-04-26 |tittel=Arkivert kopi |besøksdato=2015-04-10 |arkivurl=https://web.archive.org/web/20150426153026/https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/stable_api_nonsense.txt |arkivdato=2015-04-26 |url-status=død }}</ref> Eksempler er rammeverk for de følgende klasser av utstyrsdrivere: * [[Video4Linux]] for videomaskinvare * [[Advanced Linux Sound Architecture]] (ALSA) for [[lydkort]] * [[New API]] for [[nettverkskort]] * [[Direct Rendering Manager]] for [[grafikkort]] * [[KMS-driver]] for [[fremvisningskontroller]]e * [[mac80211]] for trådløse [[nettverkskort]]<ref>{{cite web |url=https://wireless.wiki.kernel.org/en/developers/Documentation/mac80211 |title=About mac80211 |publisher=Linux Kernel Organization, Inc. |accessdate=8. juni 2014 |archive-date=2021-02-01 |archive-url=https://web.archive.org/web/20210201114135/https://wireless.wiki.kernel.org/en/developers/documentation/mac80211 |url-status=yes }}</ref> * WEXT for trådløse nettverkskort (foreldet) ==== Binærgrensesnitt i kjernen ==== Linuxkjernen har intet stabilt binærgrensesnitt.<ref>{{cite web|url=http://abi-laboratory.pro/tracker/timeline/linux/|title=Report on ABI changes in the Linux kernel|publisher=Andrey Ponomarenko's ABI laboratory|date=17. mars 2016}}</ref> === Portabilitet === {{utdypende|Liste over Linuxkjernens støttede datamaskinarkitekturer|Linuxbasert utstyr}} [[Fil:Tianhe-2.jpg|thumb|[[Superdatamaskin]]en [[Tianhe-2]] i [[Guangzhou]], [[Kina]]. Den kjører [[Kylin Linux]].{{byline|Foto: O01326|3. desember 2015}}]] [[Fil:Ipod linux booting kernel.jpg|thumb|En [[iPod]] som starter [[iPodLinux]].{{byline|Foto: Elke Wetzig|26. januar 2007}}]] Linuxkjernen ble opprinnelig ikke konstruert som en [[portering|portabel]] operativsystemkjerne.<ref name="Torvlads25Aug91">{{cite web |last=Torvalds |first=Linus Benedict |authorlink=Linus Torvalds |date=26. august 1991 |title=What would you like to see most in minix? |newsgroup=comp.os.minix |message-id=1991Aug25.205708.9541@klaava.Helsinki.FI |url=https://groups.google.com/group/comp.os.minix/msg/b813d52cbc5a044b}}</ref><ref name="opensources">{{cite book |last=Torvalds |first=Linus |authorlink=Linus Torvalds |date=januar 1999 |title=Open Sources: Voices from the Open Source Revolution |url=http://www.oreilly.com/openbook/opensources/book/linus.html |publisher=[[O'Reilly Media|O'Reilly]] |chapter=The Linux Edge |isbn=1-56592-582-3 |accessdate=13. oktober 2013}}</ref> Den ble laget for 32-biter mikroprosessoren Intel 80386, som på denne tiden hadde vokst i popularitet. Støtten for Intel 80386 forsvant i versjon 3.8 av Linuxkjernen den 28. februar 2013.<ref>James Plafke: [https://www.extremetech.com/computing/143216-linux-drops-support-for-intels-386-processors-but-does-it-really-matter Linux drops support for Intel’s 386 processors, but does it really matter?], ExtremeTexh, 13. desember 2012</ref> Den første portering ble gjort til [[Motorola 68000]] av brukere av [[Amiga]], men for å gjøre dette måtte store deler av Linuxkjernen omskrives. Linus Torvalds kalte dette for en [[fork]] og for et «Linuxlignende operativsystem».<ref name="opensources"/> Med denne erfaringen i minne, ledet Torvalds en restrukturering av Linuxkjernen for å oppnå en portering til 64-biter [[RISC]]-arkitekturen [[DEC Alpha]], slik at både 80386 og DEC Alpha kunne støttes i et enkelt tre i kildekoden.<ref name="opensources" /> Idag er Linuxkjernen en av de mest porterte operativsystemkjerner i verden. Den har blitt portert til de fleste [[datamaskinarkitektur]]er, deriblant [[x86-64]], [[SPARC]], [[DEC Alpha]], [[Blackfin]], [[PowerPC]], [[IBM POWER]], [[MIPS (andre betydninger)|MIPS]], [[PA-RISC]], [[SuperH]], [[IBM System z9]]/[[IBM System z10|z10]]/[[IBM zEnterprise System|zEnterprise System]], [[Intel Itanium]], [[ARM (prosessorarkitektur)|ARM]] og [[RISC-V]]. Linux kjører som det primære operativsystem på [[Sunway TaihuLight]], [[Tianhe-2]], Titan-Cray XK7, IBMs [[Blue Gene]] og andre [[superdatamaskin]]er. I november 2016 ble Linuxkjernen kjørt på 498 av verdens 500 kraftigste superdatamaskiner, rangert på listen [[TOP500]] (de to andre benyttet [[AIX]] og [[IBM]] [[POWER7]]).<ref name=top500stats/><ref name="top500-list"/> I november 2017 var dette tallet økt til 500. Diverse operativsystemer for [[nettbrett]], [[lesebrett]], [[smarttelefon]]er og [[smartur]] benytter modifiserte Linuxkjerner.<ref>{{cite web |url=http://www.pcworld.com/article/195789/android_now_running_on_iphone_3g.html |title=Android Now Running On iPhone 3G |last=Wang |first=David |date=6. mai 2010 |work=TechHive |publisher=[[International Data Group|IDG]] |accessdate=11. juli 2010}}</ref> Eksempler på slike enheter er [[iPod]] og [[iPhone]] fra [[Apple|Apple Computer]], med [[iPodLinux]] og iPhone Linux ([[iOS]] fra Apple er derimot basert på [[Mac OS X]]). Andre eksempler er [[Android]], [[WebOS]], [[Tizen]], [[Sailfish OS]], [[Openmoko Linux]] og [[Ångström (linuxdistribusjon)|Ångström]], så vel som de tidligere operativsystemene [[Familiar Linux]], [[Firefox OS]], [[H5OS]], [[Maemo]], [[MeeGo]], [[Moblin]], [[OpenZaurus]] og [[Symbian]].<ref>{{cite web |url=http://www.kroah.com/log/linux/android-kernel-problems.html |title=Android and the Linux kernel community |last=Kroah-Hartman |first=Greg |authorlink=Greg Kroah-Hartman |date=2. februar 2010 |accessdate=3. februar 2010 |quote=''This means that any drivers written for Android hardware platforms, can not get merged into the main kernel tree because they have dependencies on code that only lives in Google's kernel tree, causing it to fail to build in the kernel.org tree. Because of this, Google has now prevented a large chunk of hardware drivers and platform code from ever getting merged into the main kernel tree. Effectively creating a kernel branch that a number of different vendors are now relying on.''}}</ref><ref>{{cite web |url=http://www.zdnet.com/article/linux-developer-explains-android-kernel-code-removal/ |title=Linux developer explains Android kernel code removal |last=Meyer |first=David |date=3. februar 2010 |work=[[ZDNet]] |publisher=[[CBS Interactive]] |accessdate=3. februar 2010}}</ref><ref>{{cite book |date=2008 |title=maemo Technology Overview |url=http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Technology_Overview/Chapter_03_maemo_Platform_Overview.html |publisher=[[Nokia]] |chapter=Chapter 03: maemo Platform Overview |accessdate=9. april 2010 |archiveurl=https://web.archive.org/web/20080616191310/http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Technology_Overview/Chapter_03_maemo_Platform_Overview.html |archivedate=2008-06-16 |url-status=dead |tittel=Arkivert kopi |besøksdato=2010-04-09 |arkivurl=https://web.archive.org/web/20080616191310/http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Technology_Overview/Chapter_03_maemo_Platform_Overview.html |arkivdato=2008-06-16 |url-status=død }} {{Kilde www |url=http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Technology_Overview/Chapter_03_maemo_Platform_Overview.html |tittel=Arkivert kopi |besøksdato=2017-03-12 |arkiv-dato=2008-06-16 |arkiv-url=https://web.archive.org/web/20080616191310/http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Technology_Overview/Chapter_03_maemo_Platform_Overview.html |url-status=yes }}</ref> I 2013 ble Android det mest utbredte operativsystemet i verden. === Periferiutstyr og databusser === I årenes løp har Linuxkjernen støttet ulike [[Buss (datakommunikasjon)|busser]] for [[periferienhet]]er etter hvert som disse har utviklet seg: * [[Industry Standard Architecture|ISA]] * [[Extended Industry Standard Architecture|EISA]] * [[Micro Channel architecture]] (MCA) ble støttet fra versjon 2.2.0 av Linuxkjernen * [[PCI]] * [[I2O]] ble støttet fra versjon 2.4.0 av Linuxkjernen * [[VESA lokalbuss|VESA]] * [[AGP]] 1.0/2.0 ble støttet fra versjon 2.2.0 av Linuxkjernen; AGP 3.0 ble støttet fra versjon 2.4.21 av Linuxkjernen * [[PCI-X]] 1.0 ble støttet fra versjon 2.2.0 av Linuxkjernen; PCI-X 2.0 ble støttet fra versjon 2.6.0 av Linuxkjernen * [[PCI Express]] 1.0 ble støttet fra versjon 2.6.0 av Linuxkjernen; PCI Express 1.1 ble støttet fra versjon 2.6.15 (og versjon 2.4.33.0) av Linuxkjernen; PCI Express 2.0 ble støttet fra versjon 2.6.19 av Linuxkjernen; PCI Express 2.1 ble støttet fra versjon 2.6,24 (og versjon 2.4.36.2) av Linuxkjernen; PCI Express 3.0 ble støttet fra versjon 2.6.31 av Linuxkjernen; PCI Express 3.1 ble støttet fra versjon 3.11.0 av Linuxkjernen; PCI Express 4.0 ble støttet fra versjon 3.2.0 av Linuxkjernen * [[USB]] 1.0 ble støttet fra versjon 2.0.0 av Linuxkjernen; USB 1.1 ble støttet fra versjon 2.2.0 av Linuxkjernen; USB 2.0 ble støttet fra versjon 2.4.0 av Linuxkjernen; USB 3.0 ble støttet fra versjon 2.6.31 av Linuxkjernen.<ref name="kernel 2.6.31"/> USB 3.1 ble støttet av versjon 4.6.0 av Linuxkjernen.<ref>Marius Nestor: [http://news.softpedia.com/news/linux-kernel-4-6-officially-released-introduces-orangefs-usb-3-1-ssp-support-504088.shtml Linux Kernel 4.6 Officially Released, Introduces OrangeFS, USB 3.1 SSP Support. GO Linux 4.6 kernel is now available for download], softpedia, 15. mai 2016</ref> USB 3.2 ble støttet av versjon 4.18.0 av Linuxkjernen.<ref>Micgael Larabel: [https://www.phoronix.com/scan.php?page=news_item&px=USB-3.2-Linux-4.18-Next USB 3.2 Work Is On The Way For The Linux 4.18 Kernel], phoronix, 30. april 2018</ref> * [[FireWire]] (konkurrent til USB) ble støttet fra versjon 2.6.31 av Linuxkjernen.<ref name="kernel 2.6.31">[http://cateee.net/lkddb/web-lkddb/FIREWIRE.html CONFIG_FIREWIRE: New FireWire stack, EXPERIMENTAL], Linux kernel driver database</ref><ref>[https://kernelnewbies.org/Linux_2_6_31#head-ea905cdc4decdd80f2ad02b83e4cc201d05d8cbf Linux 2.6.31], kernelnewbies.org, 9. september 2009</ref> === Sikkerhet === Linuxkjernens [[datasikkerhet]] har vært diskutert, fordi [[programvarefeil]] presenterer en potensiell sikkerhetsrisiko. Dette kan muliggjøre [[privilegie-eskalering]] og skape [[tjenestenektangrep]]. I løpet av årene er flere programvarefeil blitt oppdaget og rettet i Linuxkjernen.<ref>{{cite book |last1=Mookhey |first1=K. K. |last2=Burghate |first2=Nilesh |date=1. juli 2005 |title=Linux: Security, Audit and Control Features |url=https://books.google.com/books?id=-kD0sxQ0EkIC&pg=PA14 |location=USA |publisher=[[ISACA]] |page=14 |isbn=1-893209-78-4 |accessdate=31. desember 2010}}</ref> Nye egenskaper blir ofte implementert for å forbedre Linuxkjernens sikkerhet.<ref>{{cite book |last=Hatch |first=Brian |date=15. juli 2008 |title=Hacking Exposed Linux: Linux Security Secrets and Solutions |url=https://books.google.com/books?id=f5Vz08spzw8C&pg=PA524 |publisher=[[McGraw-Hill Osborne Media]] |page=524 |isbn=0-07-226257-5 |accessdate=31. desember 2010}}</ref><ref>{{cite book |last=Jaeger |first=Trent |date=7. oktober 2008 |title=Operating System Security |url=https://books.google.com/books?id=P4PYPSv8nBMC&pg=PA122 |publisher=Morgan and Claypool Publishers |page=122 |isbn=1-59829-212-9 |accessdate=31. desember 2010}}</ref> Kritikere har anklaget Linuxkjernens utviklere for å dekke over sikkerhetshull eller for å ikke informere om dem; i juli 2008 reagerte Linus Torvalds på kritikken med følgende uttalelse:<ref>{{cite web|url=http://kerneltrap.org/Linux/Security_Bugs_and_Full_Disclosure |title=Security Bugs and Full Disclosure |last=Andrews |first=Jeremy |date=16. juli 2008 |publisher=[[KernelTrap]] |accessdate=31. desember 2010 |archiveurl=https://web.archive.org/web/20080719130436/http://kerneltrap.org/Linux/Security_Bugs_and_Full_Disclosure |archivedate=2008-07-19 |url-status=dead }}</ref><ref>{{cite web |url=http://seclists.org/fulldisclosure/2008/Jul/276 |title=Linux's unofficial security-through-coverup policy |last=Spengler |first=Brad |date=16. juli 2008 |mailinglist=Full Disclosure |accessdate=31. desember 2010}}</ref> {{Sitat|Personlig betrakter seg sikkerhetsfeil for å være bare «normale feil». Jeg dekker ikke over dem, men jeg har heller ikke noen tenkelig grunn til å mene at det er en god ide å oppspore dem og kunngjøre dem som noe spesielt ... en grunn til at jeg nekter å bry meg om hele sikkerhets-sirkuset er at jeg mener at dette glorifiserer – og således oppmuntrer til – feil adferd. Det skaper «helter» av sikkerhetsfolk, som om folk som ikke fikser normale feil ikke er viktige. Faktisk er alle de normale kjedelige feilene viktigere, nettopp fordi det er så mange av dem. Jeg tror ikke at et eller annet spektakulært sikkerhetshull burde glorifiseres eller få oppmerksomhet som så mye mer «spesielt» enn et tilfeldig spektakulært krasj som skyldes feil.|}} Linuxdistribusjoner lanserer ofte sikkerhetsoppdateringer til Linuxkjernen. Noen av dem (deriblant [[Debian]], [[Ubuntu (operativsystem)|Ubuntu]], [[Red Hat Enterprise Linux]] og [[SUSE Linux]]) tilbyr egne versjoner med [[langtidsstøtte]] hvor en spesiell versjon av Linuxkjernen oppdateres over en lengre periode. === Kjernepanikk og oopser === {{utdypende|Kjernepanikk|Linuxkjernens oopser}} [[Fil:Kernel-panic.jpg|thumb|En [[kjernepanikk]] i Linux.{{byline|Foto: Kevin|16. desember 2005}}]] En [[kjernepanikk]] er en uopprettelig systemfeil som oppdages av Linuxkjernen, i motsetning til lignende feil som oppdages av kode i brukermodus. Kjernen indikerer en slik tilstand ved å kalle funksjonen <code>panic()</code> i filen <code>sys/system.h</code>. De fleste tilfeller av kjernepanikk skyldes uhåndterte [[unntakshåndtering|unntak]] i kjernen, slik som referanser til ugyldige minneadresser. De indikerer typisk en programmeringsfeil et eller annet sted i kjeden av kall som fører til panikken. De kan også indikere en feil med maskinvaren, slik som feil i RAM eller i de aritmetiske funksjoner i mikroprosessoren som er forårsaket av en [[Pentium FDIV bug|mikroprosessorfeil]], en overhetet eller skadd mikroprosessor eller en [[myk feil]]. En rapport om ikke-fatale programvarefeil i kjernen blir kalt et «[[Linuxkjernens oopser|oops]]»; slike avvik fra korrekt adferd av Linuxkjernen kan føre til fortsatt kjøring, men med redusert pålitelighet.<ref>{{cite web |url=http://lkml.iu.edu/hypermail/linux/kernel/0303.1/0009.html |title=Re: what's an OOPS |last=Bradford |first=John |date=8. mars 2003 |mailinglist=[[LKML]] |accessdate=30. oktober 2010}}</ref> Disse krasjrapportene blir automatisk samlet og kan sendes [[Upstreaming (programvare)|upstream]] av ulik programvare, slik som for eksempel programmet ''kernel oops'',<ref>{{cite web |url=http://linux.die.net/man/8/kerneloops |title=kerneloops(8) - Linux man page |publisher=Linux.die.net |accessdate=30. oktober 2010}}</ref> ''Automated Bug-Reporting Tool'' (ABRT) i distribusjonene [[Fedora (Linux)|Fedora]], [[Red Hat Enterprise Linux]], [[CentOS]] etc.<ref>{{cite web |url=http://fedoraproject.org/wiki/Features/ABRTF12 |title=Features/ABRTF12 |date=3. august 2009 |publisher=FedoraProject |accessdate=30. oktober 2010}}</ref> og ''apport'' i distribusjonen [[Ubuntu (operativsystem)|Ubuntu]]. KernelOops.org samler disse rapportene og utgir statistikk på deres hjemmeside.<ref>{{cite web |url=http://kerneloops.org |title=Kerneloops.org |publisher=Kerneloops.org |accessdate=1. juli 2017 |url-status=dead |archiveurl=https://archive.today/20080906142401/http://kerneloops.org/ |archivedate=2008-09-06 |tittel=Arkivert kopi |besøksdato=2017-07-01 |arkivurl=https://archive.today/20080906142401/http://kerneloops.org/ |arkivdato=2008-09-06 |url-status=død }}</ref> Kjernens panikkmeldinger kan ikke bli skrevet ut på en synlig måte, ved å ta i bruk grafikken på en stasjonær datamaskin. For å avluse slike tilstander må andre metoder benyttes, slik som å tilknytte en [[RS-232|serieport]]. === Live oppdateringer av Linuxkjernen === Oppdateringer av Linuxkjernen, som kan installeres uten å omstarte datamaskinen, er tilgjengelige i form av [[patch|live patcing]]. Programvaren [[Ksplice]], som ble lansert 28. april 2008, sørget for dette. Den 21. juli 2011 ble denne oppkjøpt av [[Oracle (selskap)|Oracle Corporation]]. Den 26. februar 2014 lanserte selskapet [[Red Hat]] på sin side programmet [[kpatch]], mens [[SuSE]] lanserte [[kGraft]] den 27. mars 2014. De utgjør et minimalistisk grunnlag for live patching. De ble integrert i Linuxkjernens versjon 4.0 den 12. april 2015, og danner essensen i kjernens [[ftrace]]-funksjonalitet. De danner en [[API (programmering)|API]] for kjernemodulene og et [[Binærkompatibilitet|binærgrensesnitt]] for programmer i brukermodus. Versjon 4.0 av Linuxkjernen støtter bare x86-arkitekturen og mangler mekanismer som sikrer konsistens på [[subrutine|funksjonsnivå]] mens oppdateringer pågår. Det pågår imidlertid arbeid med å integrere dette i Linuxkjernen.<ref>{{cite web | url = http://kernelnewbies.org/Linux_4.0#head-9aa7c8499b42911a48c02b24f367bf2bc6db8606 | title = Linux kernel 4.0, Section 1.2. Live patching | date = 26. april 2015 | accessdate = 27. april 2015 | website = kernelnewbies.org }}</ref><ref>{{cite web | url = https://lwn.net/Articles/634649/ | title = A rough patch for live patching | date = 25. februar 2015 | accessdate = 27. april 2015 | author = Jonathan Corbet | publisher = [[LWN.net]] }}</ref><ref>{{cite web | url = https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1d9c5d79e6e4385aea6f69c23ba543717434ed70 | title = kernel/git/torvalds/linux.git: Pull live patching infrastructure from Jiri Kosina (Linux kernel source tree) | date = 11. februar 2015 | accessdate = 27. april 2015 | website = [[kernel.org]] }}</ref> === Filsystemer === Linuxkjernen har hatt støtte for et tyvetalls ulike [[filsystem]]er. Nedenfor er noen av de mest toneangivende beskrevet. ==== MINIX file system ==== {{utdypende|MINIX file system}} Dette filsystemet ble benyttet av [[MINIX]], som var forgjengeren til Linux. Det ble introdusert i 1987 sammen med MINIX 1.0. Det støttes av Linuxkjernen, men er lite brukt av Linuxbrukere i dag. ==== extended file system (ext) ==== {{utdypende|extended file system}} Dette ble utviklet for å overvinne visse begrensninger i MINIX file system, og hadde en [[metadata]]struktur som var inspirert av [[Berkeley Fast File System]] i [[Berkeley Software Distribution]] (BSD).<ref name="Mauerer2010">{{cite book |first=Wolfgang |last=Mauerer |title=Professional Linux Kernel Architecture |publisher=John Wiley & Sons |year=2010 |url=https://books.google.com/books?id=-6zvRFEfQ24C&pg=PT490}}</ref> ext debuterte den 5. juli 1992 i versjon 0.96c av Linuxkjernen, og var den første implementasjonen som benyttet et [[virtuelt filsystem]]. Ext kunne håndtere filer på opptil 2 [[gigabyte]] i størrelse.<ref>{{Cite web | url = http://www.ibm.com/developerworks/linux/library/l-anatomy-ext4/ | title = Anatomy of ext4 | last = Jones | first = M. Tim | date = 17. februar 2009 | accessdate = 2012-02-08 | publisher = IBM Developer Works }}</ref> ext ble erstattet av [[ext2]] og [[xiafs]]. Den 14. januar 1997 ble ext fjernet fra versjon 2.1.21 av Linuxkjernen, og er ikke lenger i bruk. ==== Xiafs ==== {{utdypende|Xiafs}} Xiafs ble lansert den 13. mars 1993 i versjon 0.99.7 av Linuxkjernen. Det var ment å erstatte extended file system (ext) og konkurrerte i begynnelsen med ext2. Det ble fjernet den 14. januar 1997 fra versjon 2.1.21 av Linuxkjernen sammen med ext. ==== Second extended file system (ext2) ==== {{utdypende|ext2}} [[Fil:Mandriva 2010.png|thumb|Skjermbilde av [[Mandriva Linux]] 2010. Denne distribusjonen benyttet filsystemet [[Journaled File System]].{{byline|Foto:Xurdus|12. november 2009}}]] ext2 eller ''second extended filesystem'' («det andre utvidede filsystem») var et POSIX-kompatibelt filsystem som ble lansert den 13. mars 1993 i versjon 0.99.7 av Linuxkjernen. ext2 var en erstatning for [[extended file system]] (ext); i begynnelsen konkurrerte det med filsystemet [[xiafs]], men ble etter hvert ledende. Dets [[metadata]]struktur var inspirert av det tidligere [[Berkeley Fast File System]] i [[Berkeley Software Distribution]] (BSD).<ref name = "Mauerer2010" /> ext2 benyttes fortsatt på lagringsmedia med [[flashminne]] (slik som [[Secure Digital]] og [[minnepinne]]r) fordi mangelen på en [[journal]] øker ytelsen og minimaliserer antall skrivinger (flashminne har et begrenset antall skrivesykluser). Avhengig av størrelsen på [[blokk (datalagring)|blokkene]], hadde ext2 støtte for harddisker på maksimalt 2–32 [[tebibyte]] (TiB), og for datafiler med maksimal størrelsesorden på mellom 16 [[gibibyte]] (GiB) og 2 tebibyte (TiB). ext2 støttet lagring av datafiler med rett dato innenfor tidsrommet 14. desember 1901 og 18. januar 2038 i [[den gregorianske kalenderen]]. ==== Third extended filesystem (ext3) ==== {{utdypende|ext3}} [[ext3]] eller ''third extended filesystem'' («det tredje utvidede filsystem») er et tidligere POSIX-kompatibelt og [[journalførende filsystem]]. Det var etterfølgeren til ext2, og ble en del av versjon 2.4.15 av Linuxkjernen den 23. november 2001.<ref>[https://www.kernel.org/pub/linux/kernel/v2.4/ChangeLog-2.4.15 ChangeLog-2.4.15], Index of /pub/linux/kernel/v2.4, kernel.org, 23. november 2001</ref> ext3 skilte seg fra ext2 på tre områder. Det første var innføringen av en journal, noe som økte stabiliteten og fjernet behovet for å kjøre en sjekk av filsystemet dersom [[datamaskin]]en skulle krasje. Det andre var at filsystemet kunne vokse i tilkoblet ([[Online og offline|online]]) tilstand. Det tredje var at [[HTre (datastruktur)|HTrær]] ble benyttet som [[datastruktur]] for å indeksere større [[Mappe (filsystem)|filkataloger]].<ref>[[Theodore Ts'o|Theodore Yue Tak Ts'o]], Badari Pulavarty, Suparna Bhattacharya: [http://ext2.sourceforge.net/2005-ols/paper-html/node3.html Directory indexing] {{Wayback|url=http://ext2.sourceforge.net/2005-ols/paper-html/node3.html |date=20190718230754 }}, State of the Art: Where we are with the Ext3 filesystem, IBM Linux Technology Center, 26. juni 2005</ref> Dette økte skalerbarheten fra en praktisk grense på noen få tusen filer i ext2 til titalls millioner av filer per filkatalog. Avhengig av størrelsen på [[blokk (datalagring)|blokkene]], hadde ext3 støtte for [[harddisk]]er på maksimalt 4–32 [[tebibyte]] (TiB), og for datafiler med maksimal størrelsesorden på mellom 16 [[gibibyte]] (GiB) og 2 tebibyte (TiB). ext3 støttet lagring av datafiler med rett dato innenfor tidsrommet 14. desember 1901 og 18. januar 2038 i [[den gregorianske kalenderen]]. ext3 manglet dynamisk [[inode]]allokering og ''[[extent]]s''. Metadata hadde en fast størrelse, ble plassert på velkjente steder og datastrukturene hadde en viss redundans. Ved alvorlige datakrasj, var filene i ext2 og ext3 i større grad gjenopprettbare enn i et trebasert filsystem. Den 9. desember 2015 ble ext3 fjernet fra versjon 4.3 av Linuxkjernen.<ref>Michael Larabel: [https://www.phoronix.com/scan.php?page=news_item&px=Linux-Kernel-Dropping-EXT3 EXT3 File-System Driver To Be Removed From The Linux Kernel], Phoronix, 15. juli 2015</ref> ==== XFS ==== {{utdypende|XFS}} [[Fil:Elivescreenshot.jpeg|thumb|Skjermbilde av [[Linuxdistribusjon]]en [[Elive]]. Elive benyttet filsystemet [[ReiserFS]].{{byline|Foto:Jimmy Robaer|10. juli 2007}}]] XFS er et 64-biter<ref name="overview">{{cite web |url=http://oss.sgi.com/projects/xfs/index.html |title=XFS Overview |publisher=Silicon Graphics International Corp |date=2013-07-02 |accessdate=2013-07-02 |url-status=dead |archiveurl=https://web.archive.org/web/20130606024601/http://oss.sgi.com/projects/xfs/index.html |archivedate=2013-06-06 |tittel=Arkivert kopi |besøksdato=2013-07-02 |arkivurl=https://web.archive.org/web/20130606024601/http://oss.sgi.com/projects/xfs/index.html |arkivdato=2013-06-06 |url-status=død }} {{Kilde www |url=http://oss.sgi.com/projects/xfs/index.html |tittel=Arkivert kopi |besøksdato=2017-04-21 |arkiv-dato=2013-06-06 |arkiv-url=https://web.archive.org/web/20130606024601/http://oss.sgi.com/projects/xfs/index.html |url-status=yes }}</ref> POSIX-kompatibelt og journalførende filsystem som ble lansert av [[Silicon Graphics]] i oktober 1993.<ref name="User guide">[http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/ch01s02.html 1.2. A Brief History of XFS] {{Wayback|url=http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/ch01s02.html |date=20140714224038 }}, XFS User Guide, A guide for XFS filesystem users and administrators, Edition 0, Silicon Graphics Inc., 2006</ref> Filsystemet var standard i operativsystemet [[IRIX]] fra versjon 5.3,<ref name="User guide"/> som ble lansert i desember 1994. XFS er etterfølgeren til [[Extent File System]] (EFS), som var filsystemet til IRIX før versjon 5.3. I mai 2000 ble XFS lisensiert under [[GNU General Public License]] (GPL) versjon 2. Den 18. februar 2004 ble XFS innlemmet i versjon 2.4.25 av Linuxkjernen, og den 18. desember 2003 ble filsystemet innlemmet i Linuxkjernens versjon 2.6. XFS støtter [[harddisk]]er på opptil 18 [[exbibyte]] (EiB) (16 tebibyte (TiB) på 32-biter Linux) og [[datafil]]er på opptil 9 exbibyte (TiB) (16 tetibyte (TiB) på 32-biter Linux).<ref name="overview"/> Dette er noe mer enn ext4 og noe mindre enn btrfs. ==== Journaled File System (JFS) ==== {{utdypende|Journaled File System}} Journaled File System (JFS) er et [[64-biter]] journalførende filsystem som er utviklet av [[IBM]]. JFS ble lansert i februar 1990 i versjon 3.1 av UNIX-avarten [[AIX]].<ref>[https://wiki.archlinux.org/index.php/JFS JFS], wiki.archlinux.org, 30. august 2016</ref> I september 1994 ble det også tatt i bruk i [[OS/2]] 3.0 «Warp».<ref>[https://www.elstel.org/OS2Warp/InstallUpdate.html OS/2 Warp Installation and Update Manual], IBM</ref> Det finnes to generasjoner av filsystemet, ''JFS'' og ''JFS2''.<ref name="faq">{{cite web |title=A mini-FAQ for JFS |publisher=JFS for Linux project |url=http://jfs.sourceforge.net/project/pub/faq.txt}}</ref><ref name="JFS1vsJFS2">{{cite web| title=Comparison of JFS1 and JFS2 on AIX |publisher=IBM |url=http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.baseadmn/doc/baseadmndita/fs_jfs_jfs2.htm}}</ref> JFS2 ble integrert i Linuxkjernen fra versjon 2.4.18<ref name="interview">{{cite web |title= Interview With the People Behind JFS, ReiserFS & XFS |url=http://www.osnews.com/story.php/69/Interview-With-the-People-Behind-JFS-ReiserFS-and-XFS}}</ref> og er fri programvare under GNU General Public License. ==== Veritas File System ==== {{utdypende|Veritas File System}} Veritas File System (''VxFS''), også kalt ''JFS'' og ''OnlineJFS'', er et [[extent]]-basert [[filsystem]] som ble utviklet av [[AT&T]]s [[Unix System Laboratories]], og lansert i 1991 av [[VERITAS Software]].<ref>{{cite web |url = http://www.patentstorm.us/patents/6871271.html |title = Incrementally restoring a mass storage device to a prior state |date = 2005-03-22 |accessdate = 2007-11-21 |url-status = død |archiveurl = https://web.archive.org/web/20080309193205/http://www.patentstorm.us/patents/6871271.html |archivedate = 2008-03-09 |tittel = Arkivert kopi |besøksdato = 2007-11-21 |arkivurl = https://web.archive.org/web/20080309193205/http://www.patentstorm.us/patents/6871271.html |arkivdato = 2008-03-09 |url-status = død }} {{Kilde www |url=http://www.patentstorm.us/patents/6871271.html |tittel=Arkivert kopi |besøksdato=2017-06-04 |arkiv-dato=2008-03-09 |arkiv-url=https://web.archive.org/web/20080309193205/http://www.patentstorm.us/patents/6871271.html |url-status=yes }}</ref> Det er det primære filsystem i operativsystemet [[HP-UX]], med online støtte for [[defragmentering]] under navnet ''OnlineJFS''.<ref>{{cite web |url=http://mailman.eng.auburn.edu/pipermail/veritas-vx/2000-April/000163.html |title=Post in the veritas-vx mailing list explaining the differences between JFS and OJFS |author=Donna Yobs |date=2000-04-10 |accessdate=2007-11-21 |archiveurl=https://web.archive.org/web/20080309165600/http://mailman.eng.auburn.edu/pipermail/veritas-vx/2000-April/000163.html |archivedate=2008-03-09 |url-status=dead }}</ref> Det blir også støttes i [[AIX]], [[Solaris (operativsystem)|Solaris]] og [[SCO OpenServer]] og ble tidligere også støttet av [[SINIX]] og [[UnixWare]]. Dette filsystemet ble støttet fra versjon 2.6.0 av Linuxkjernen, og ble tidligere definert av <code>fs/Konfig</code>. Fra versjon 2.6.29 av Linuxkjernen, som ble lansert den 23. mars 2009, har det vært definert av <code>fs/freevxfs/Kconfig</code>.<ref>[http://cateee.net/lkddb/web-lkddb/VXFS_FS.html CONFIG_VXFS_FS: FreeVxFS file system support (VERITAS VxFS™ compatible)], Linux Kernel Driver Database, 2017</ref> Veritas File System støtter harddisker på opptil 128 [[zettabyte]] (ZB) og filer på opptil 8 [[exabyte]] (EB). ==== ReiserFS ==== {{utdypende|ReiserFS}} ReiserFS er et POSIX-kompatibelt journalførende filsystem som ble designet og utviklet av et team hos [[Namesys]] ledet av [[Hans Reiser]]. ReiserFS var det første journalførende filsystemet som ble støttet av Linuxkjernen; det ble integrert i Linuxkjernens versjon 2.4.1. ReiserFS støtter harddisker på opptil 6 tetibye (TiB) og datafiler på opptil 1 exbibyte (EiB) (8 tetibyte (TiB) på 32-biter Linux). Datafiler i ext4 kan lagres med rett dato innenfor tidsrommet 14. desember 1901 og 18. januar 2038 i den gregorianske kalenderen. ==== Reiser4 ==== {{utdypende|Reiser4}} [[Fil:Suse 10.0 Gnome.png|thumb|[[SUSE Linux]] 10.0 med [[skrivebordsmiljø]]et [[GNOME]]. [[OpenSUSE]] 13.2 var blant de første [[Linuxdistribusjon]]er som benyttet [[Btrfs]] som standard.{{byline|Foto:SuSE|8.mai 2009|}}]] Reiser4 er et journalførende filsystem som er utviklet av Hans Reiser og Namesys, som etterfølgeren til ReiserFS. Det ble innlemmet i versjon 3.15 av Linuxkjernen den 14. august 2014. Prosjektet har vært sponset av [[Defense Advanced Research Projects Agency]] (DARPA) og [[Linspire]]. Filsystemet blir fortsatt utviklet,<ref>{{cite news |url=http://phoronix.com/scan.php?page=news_item&px=Reiser4-Linux-4.5-Support |author=Michael Larabel |date=30. mars 2016 |title=Reiser4 Now Available For Linux 4.5 Kernel |work=Phoronix }}</ref> men det er tvilsomt om disse endringene blir tilføyd Linuxkjernen i nær fremtid, ettersom opphavsmannen soner en fengselsdom.<ref name=not-in-linux-4.0>{{cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=Linux-4.0-Missing-Features |author=Michael Larabel |date=23. februar 2015 |title=KDBUS & Other Features You Won't Find In The Linux 4.0 Kernel |work=Phoronix }}</ref> ==== ZFS og OpenZFS ==== {{utdypende|ZFS|OpenZFS}} [[ZFS]] (''Zettabyte File System'') er et kombinert [[filsystem]] og en [[logisk volumhåndterer]] som ble utviklet av [[Sun Microsystems]] for operativsystemet [[OpenSolaris]] i 2005.<ref>[https://blogs.oracle.com/bonwick/entry/zfs_the_last_word_in ZFS: The Last Word in Filesystems], Jeff Bonwick's blog, Oracle Corporation, 31. oktober 2005</ref> Det ble i utgangspunktet lisensiert under en [[åpen kildekode]]lisens, og integrert i Linuxkjernen. [[Oracle (selskap)|Oracle Corporation]] endret i 2010 lisensen til en [[proprietær programvare|proprietær lisens]] for operativsystemet [[Solaris (operativsystem)|Solaris]].<ref name="arstechnica">Ryan Paul: [http://arstechnica.com/information-technology/2010/06/uptake-of-native-linux-zfs-port-hampered-by-license-conflict/ Uptake of native Linux ZFS port hampered by license conflict], arstechnica.com, 6. september 2009</ref> Grunnet lisensieringsproblemer er det ikke mulig å videreutvikle ZFS for Linuxkjernen,<ref name="arstechnica"/><ref>Dustin Kirkland: [https://insights.ubuntu.com/2016/02/18/zfs-licensing-and-linux/ ZFS Licensing and Linux], ubuntu.com, 18. februar 2016</ref> selv om en rekke Linuxdistribusjoner har hatt støtte for det.<ref name="ZFSonLinux">[http://zfsonlinux.org/ ZFS On Linux], Lawrence Livermore National Laboratory</ref> Eksempler er [[Arch Linux]], Debian, [[Fedora (Linux)|Fedora]], Gentoo, [[OpenSUSE]], Red Hat Enterprise Linux, [[CentOS]] og [[Ubuntu (operativsystem)|Ubuntu]]<ref name="ZFSonLinux"/>. [[OpenZFS]] oppstod som en [[fork]] av ZFS i 2010,<ref>Bryan Cantrill: [http://www.slideshare.net/bcantrill/fork-yeah-the-rise-and-development-of-illumos Fork Yeah! The rise and Development of Illumos], slideshare.net, 8. desember 2011</ref> og støttes også av Linuxkjernen. Ubuntu 16.04 LTS («Xenial Xerus»), som ble lansert den 21. april 2016, gjør det mulig å installere OpenZFS som filsystem.<ref>[http://forums.theregister.co.uk/forum/1/2016/04/21/ubuntu_16_04_lts_launched/ Ubuntu 16.04 LTS arrives today complete with forbidden ZFS] på [[The Register]] 21. april 2016)</ref><ref>{{cite web|url=http://arstechnica.com/gadgets/2016/02/zfs-filesystem-will-be-built-into-ubuntu-16-04-lts-by-default/|title=ZFS filesystem will be built into Ubuntu 16.04 LTS by default|work=Ars Technica}}</ref><ref name="phoronix-Ubuntu16.04-ZFS">{{cite web|last1=Larabel|first1=Michael|title=Taking ZFS For A Test Drive On Ubuntu 16.04 LTS|url=https://www.phoronix.com/scan.php?page=article&item=ubuntu-xenial-zfs&num=1|website=phoronix|publisher=Phoronix Media|accessdate=25. april 2016}}</ref><ref name="UbuntuMATE-ZFS">{{cite web|title=How to install ubuntu mate onto single sdd with zfs as main fs|url=https://ubuntu-mate.community/t/how-to-install-ubuntu-mate-onto-single-sdd-with-zfs-as-main-fs/3535|website=Ubuntu MATE|publisher=ubuntu-mate.community|accessdate=25. april 2016}}</ref> ZFS innbefatter beskyttelse mot [[datakorrupsjon]], svære lagringskapasiteter, effektiv datakompresjon, integrasjon av konsepter om [[diskvolum|volumhåndtering]], [[Snapshot (datalagring)|snapshots]], og [[copy-on-write]] kloner, kontinuerlig integritetssjekking og automatisk reparering, RAID-Z og [[aksesskontrolliste]]r i [[Network File System|Network File System versjon 4]] (NFSv4). Filsystemet støtter harddisker på 256 [[zebibyte]]s og datafiler på 16 exibytes. Lisensieringsproblemene med ZFS har bidratt til at [[btrfs]] vokste frem som et alternativ (se nedenfor). ZFS har mange likheter med btrfs, og kunne ha blitt en konkurrent hvis det ikke hadde vært for lisensieringsproblemene som er knyttet til det.<ref>[https://www.reddit.com/r/linux/comments/32cu9w/zfs_vs_btrfs/ ZFS Vs. BTRFS], reddit.com, 2015</ref> ZFS/OpenZFS er copy-on-write filsystemer liksom btrfs. De er imidlertid implementert som [[hashtabell]]er, mens btrfs er implementert ved hjelp av [[B-tre|B-trær]]. ==== Fourth extended filesystem (ext4) ==== {{utdypende|ext4}} ext4, eller ''fourth extended filesystem'' («det fjerde utvidede filsystem»), er et POSIX-kompatibelt og journalførende filsystem. Det er etterfølgeren til filsystemet ext3, slik ext3 var etterfølgeren til [[ext2]]. ext4 er også bakoverkombatibelt med ext3. ext4 er inspirert av finesser som ble utviklet for filsystemet [[Lustre (filsystem)|Lustre]] mellom 2003 og 2006, og som ga økt lagringsplass og ytelsesforbedringer.<ref name="Mathur">{{cite web |title = The new ext4 filesystem: current status and future plans |publisher = Red Hat |location = Ottawa, ON, CA |year = 2007 |work = Proceedings of the Linux Symposium |url = http://www.linuxsymposium.org/archives/OLS/Reprints-2007/mathur-Reprint.pdf |accessdate = 2008-01-15 |format = PDF |last = Mathur |first = Avantika |last2 = Cao |first2 = MingMing |last3 = Bhattacharya |first3 = Suparna |last4 = Dilger |first4 = Andreas |last5 = Tomas |first5 = Alex |last6 = Vivier |first6 = Laurent |url-status = død |archiveurl = https://web.archive.org/web/20100706040230/http://www.linuxsymposium.org/archives/OLS/Reprints-2007/mathur-Reprint.pdf |archivedate = 2010-07-06 |tittel = Arkivert kopi |besøksdato = 2008-01-15 |arkivurl = https://web.archive.org/web/20100706040230/http://www.linuxsymposium.org/archives/OLS/Reprints-2007/mathur-Reprint.pdf |arkivdato = 2010-07-06 |url-status = død }} {{Kilde www |url=http://www.linuxsymposium.org/archives/OLS/Reprints-2007/mathur-Reprint.pdf |tittel=Arkivert kopi |besøksdato=2017-03-18 |arkiv-dato=2010-07-06 |arkiv-url=https://web.archive.org/web/20100706040230/http://www.linuxsymposium.org/archives/OLS/Reprints-2007/mathur-Reprint.pdf |url-status=yes }}</ref> Den 21. oktober 2008 ble den endelige versjonen lansert i versjon 2.6.28 av Linuxkjernen. I ext4 ble [[Blokk (datalagring)|blokklagringen]] i ext2 og ext3 erstattet av [[extent]]s som reduserer fragmentering og gir økt ytelse på store [[datafil]]er. En enkel extent i ext4 kan opprette inntil 128 [[mebibyte]] (MiB) med kontinuerlig diskplass innenfor en blokk på 4 [[kibibyte]] (Kib). Opptil fire ''extents'' kan lagres i en [[inode]].<ref name = "Mathur"/> Når det er mer enn fire ''extents'' i en datafil, blir resten indeksert i et [[Tre (datastruktur)|tre]].<ref>{{cite web |url=https://digital-forensics.sans.org/blog/2011/03/28/digital-forensics-understanding-ext4-part-3-extent-trees |author=Hal Pomeranz |date=28. mars 2011 |title=Understanding EXT4 (Part 3): Extent Trees |work=SANS Digital Forensics and Incident Response Blog |access-date=2017-03-18 |archive-date=2017-05-29 |archive-url=https://web.archive.org/web/20170529010040/https://digital-forensics.sans.org/blog/2011/03/28/digital-forensics-understanding-ext4-part-3-extent-trees |url-status=yes }}</ref> ext4 er hurtigere og mer stabilt enn ext3, fordi datafiler fragmenteres meget sjelden på grunn av «forsinket allokering». ext4 støtter [[harddisk]]er på opptil 1 [[exbibyte]] (EiB), og datafiler på opptil 16 tebibyte (TiB). Datafiler kan lagres med rett dato innenfor tidsrommet 14. desember 1901 og 10. mai 2446 i den gregorianske kalenderen. ==== B-tree file system (btrfs) ==== {{utdypende|btrfs}} [[Fil:B-tree.svg|thumb|400px|right|Et [[B-tre]] av femte orden.{{byline|Illustrasjon: CyHawk|5. oktober 2010}}]] Btrfs, en [[forkortelse]] for ''B-tree file system'', uttalt ''butter F S'',<ref>[[Oracle Corporation]]: [http://streaming.oracle.com/ebn/podcasts/media/20209545_Oracle-Linux-7.mp4 Oracle Linux 7 with Q&A with Wim Coekaerts] {{Wayback|url=http://streaming.oracle.com/ebn/podcasts/media/20209545_Oracle-Linux-7.mp4 |date=20160818163705 }}, 2014</ref> ''better F S'',<ref>Amanda McPherson: [http://www.linuxfoundation.org/news-media/blogs/browse/2009/06/conversation-chris-mason-btrfs-next-generation-file-system-Linux A Conversation with Chris Mason on BTRfs: the next generation file system for Linux] {{Wayback|url=http://www.linuxfoundation.org/news-media/blogs/browse/2009/06/conversation-chris-mason-btrfs-next-generation-file-system-Linux |date=20160307071419 }}, [[Linux Foundation]], 22. juni 2009</ref> eller ''b-tree F S'',<ref>Valerie Henson: [http://mirror.linux.org.au/pub/linux.conf.au/2008/Thu/mel8-262.ogg Chunkfs: Fast file system check and repair], 31. januar 2008</ref> er et [[copy-on-write]] og journalførende filsystem. Det er etterfølgeren til ext4, og løser problemer knyttet til [[Pool (informatikk)|pooling]], [[Snapshot (datalagring)|snapshots]], [[sjekksum]]mer og datasystemer hvor mange forskjellige typer [[I/O|innmatningsutstyr]] er integrerte.<ref name="CM090622">{{cite web |title=A Conversation with Chris Mason on BTRfs: the next generation file system for Linux |first=Amanda |last=McPherson |date=22. juni 2009 |accessdate=2009-09-01 |publisher=[[Linux Foundation]] |url=http://www.linuxfoundation.org/news-media/blogs/browse/2009/06/conversation-chris-mason-btrfs-next-generation-file-system-linux |archiveurl=https://www.webcitation.org/68ektBKkv?url=http://www.linuxfoundation.org/news-media/blogs/browse/2009/06/conversation-chris-mason-btrfs-next-generation-file-system-linux |archivedate=2012-06-24 |url-status=dead |tittel=Arkivert kopi |besøksdato=2009-09-01 |arkivurl=https://www.webcitation.org/68ektBKkv?url=http://www.linuxfoundation.org/news-media/blogs/browse/2009/06/conversation-chris-mason-btrfs-next-generation-file-system-linux |arkivdato=2012-06-24 |url-status=død }}</ref> Filsystemet er POSIX-kompatibelt.<ref>[https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Subvolumes SysadminGuide], wiki.kernel.org, 11. juni 2016</ref> En utviklingsversjon ble integrert i versjon 2.6.29 av Linuxkjernen den 23. mars 2009.<ref name="Kernel 2.6.29">Kernel Newbies: [https://kernelnewbies.org/Linux_2_6_29 Linux 2.6.29], 23. mars 2009</ref> En stabil versjon ble lansert 29. mars 2013 i versjon 3.10 av Linuxkjernen.<ref name="Kernel 3.10">Kernel Newbies: [http://kernelnewbies.org/Linux_3.10 Linux 3.10], 30. juni 2013</ref> Det støtter [[defragmentering]] (også automatisk defragmentering gjennom opsjonen ''autodefrag''),<ref name="KN 3.0">[https://kernelnewbies.org/Linux_3.0#head-3e596e03408e1d32a7cc381d6f54e87feee22ee4 1.1. Btrfs: Automatic defragmentation, scrubbing, performance improvements], Linux 3.0, kernelnewbies.org, 22. juli 2012</ref> ''[[data scrubbing]]'',<ref name="KN 3.0"/> [[online og offline|online]] endring av størrelsen på [[diskvolum]]er,<ref name="resizing">[https://docs.oracle.com/cd/E37670_01/E37355/html/ol_use_case2_btrfs.html 5.5 Resizing a Btrfs File System], Oracle® Linux Administrator's Solutions Guide for Release 6, 2016</ref> offline [[fsck|filsystemsjekk]] (fsck),<ref name="fsck">[https://btrfs.wiki.kernel.org/index.php/Btrfsck Btrfsck], wiki.kernel.org, 6. juli 2015</ref> transparent [[datakompresjon]] ([[zlib]] og [[Lempel-Ziv-Oberhumer]])<ref name="compression">[https://btrfs.wiki.kernel.org/index.php/Compression Compression], wiki.kernel.org, 15. juli 2015</ref><ref name="inode">[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=63541927c8d11d2686778b1e8ec71c14b4fd53e4 Btrfs: add support for inode properties], git.kernel.org, 7. januar 2014</ref> av [[datafil]]er eller logiske disker, [[union mount]],<ref name="btrfs_changelog">[https://btrfs.wiki.kernel.org/index.php?title=Changelog#Seed_Device_support Changelog], wiki.kernel.org, 5. oktober 2016</ref> etc. Btrfs støtter [[harddisk]]er på inntil 16 exbibyte (EiB) og filstørrelser på inntil 16 exbibyte (EiB).<ref>[https://www.suse.com/documentation/sles11/stor_admin/data/sec_filesystems_lfs.html Large File Support in Linux], SUSE Storage Administration Guide, 14. mars 2016</ref> Dets [[datastruktur]] er et [[B-tre]], en selvbalanserende [[Tre (datastruktur)|tredatastruktur]], som sorterer data og tillater søking, sekvensiell aksess, innsettelse og sletting i en [[tidskompleksitet|logaritmisk tid]].<ref name="Btrfsdesign">[https://btrfs.wiki.kernel.org/index.php/Btrfs_design Btrfs design], wiki.kernel-org, 11. januar 2015</ref> == Juridiske aspekter == === Lisensiering === I begynnelsen ble Linuxkjernen lansert under en lisens som la ned forbud mot kommersiell bruk.<ref name="hiroo">{{cite web |url=http://hotwired.goo.ne.jp/matrix/9709/5_linus.html |title=The Pragmatist of Free Software |last=Yamagata |first=Hiroo |date=3. august 1997 |publisher=[[HotWired]] |accessdate=21. februar 2007 |archiveurl=https://web.archive.org/web/20070210224351/http://hotwired.goo.ne.jp/matrix/9709/5_linus.html |archivedate=2007-02-10 |url-status=dead |tittel=Arkivert kopi |besøksdato=2007-02-21 |arkivurl=https://web.archive.org/web/20070210224351/http://hotwired.goo.ne.jp/matrix/9709/5_linus.html |arkivdato=2007-02-10 |url-status=død }} {{Kilde www |url=http://hotwired.goo.ne.jp/matrix/9709/5_linus.html |tittel=Arkivert kopi |besøksdato=2017-04-21 |arkiv-dato=2007-04-14 |arkiv-url=https://web.archive.org/web/20070414171228/http://hotwired.goo.ne.jp/matrix/9709/5_linus.html |url-status=unfit }}</ref> I versjon 0.12 skjedde det en overgang til [[GNU General Public License]] (GPL).<ref name="Relnotes-0.12">{{cite web |last=Torvalds |first=Linus |authorlink=Linus Torvalds |title=Release Notes for Linux v0.12 |publisher=The Linux Kernel Archives |url=https://www.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-0.12 |accessdate=21. februar 2007}}</ref> Lisensen tillater distribusjon og salg av modifiserte og umodifiserte versjoner av Linux, men krever at alle kopiene blir utgitt under samme lisens og er ledsaget av den komplette korresponderende kildekode. Torvalds beskrev i august 1997 lisensieringen av Linux under GPL som ''«den beste tingen jeg noensinne har gjort.»''<ref name="hiroo" /> [[Fil:Heckert GNU white.png|thumb|Linuxkjernen blir utgitt under lisensen [[GNU General Public License]] versjon 2 (GPLv2).{{byline|Illustrasjon: Rafał Pocztarski (The GNU Art Gallery)|26. november 2004}}]] ==== GPL version 3 ==== Linuxkjernen er eksplisitt lisensiert under versjon 2 av GPL,<ref name="COPYING">{{cite web |last=Martens |first=China |date=28. juli 2006 |title=Linux creator Torvalds still no fan of GPLv3 |work=[[InfoWorld]] |publisher=[[International Data Group|IDG]] |url=http://www.infoworld.com/article/2655630 |accessdate=15. februar 2015}}</ref> uten å velge «enhver senere versjon», som er vanlig. Der har vært debattert om hvor enkelt lisensen kunne utvides til senere GPL versjoner (deriblant versjon 3) og hvorvidt dette er ønskelig.<ref>{{cite web |url=https://lwn.net/Articles/169797/ |title=GPLv3 and the kernel |last=Corbet |first=Jonathan |date=31. januar 2006 |publisher=[[LWN.net]] |accessdate=21. februar 2007}}</ref> Torvalds poengterte under lanseringen av versjon 2.4.0 at hans egen kode bare ville lansert under GPL versjon 2.<ref>{{cite web |url=http://lkml.iu.edu/hypermail/linux/kernel/0009.1/0096.html |title=Linux-2.4.0-test8 |last=Torvalds |first=Linus |authorlink=Linus Torvalds |date=8. september 2000 |mailinglist=[[LKML]] |accessdate=21. februar 2007}}</ref> Betingelsene for GPL sier likevel at hvis ingen versjon er spesifisert, kan alle senere versjoner bli brukt. [[Alan Cox]] har påpekt at svært få bidragsytere til Linux har spesifisert en spesiell versjon av GPL.<ref>{{cite web |url=https://lwn.net/Articles/169831/ |title=Re: GPL V3 and Linux |last=Cox |first=Alan |authorlink=Alan Cox |date=20. januar 2006 |mailinglist=[[LKML]] |accessdate=21. februar 2007}}</ref> Den 25. september 2006 viste en undersøkelse at 28 av 29 nøkkelprogrammerere foretrakk GPLv2 i stedet for utkastet til den daværende GPLv3. Torvalds kommenterte: «Jeg tror at mange utenforstående … trodde at jeg personlig var kun en merkelig mann, fordi jeg så offentlig hadde publisert at jeg ikke var en stor tilhenger av GPLv3».<ref>{{cite web |url=http://news.com/Top+Linux+programmers+pan+GPL+3/2100-7344_3-6119372.html |title=Top Linux programmers pan GPL 3 |date=25. september 2006 |last=Shankland |first=Stephen |work=[[News.com]] |publisher=[[CNET]] |accessdate=21. februar 2007 |url-status=yes }}</ref> Profilerte kjerneutviklere som Linus Torvalds, [[Greg Kroah-Hartman]] og [[Andrew Morton (programmerer)|Andrew Morton]], uttrykte deres innvendinger mot GPLv3 overfor massemedia,<ref name="kerneldevelopers2006"/> refererte til klausulene om [[Digital rights management|DRM]]/[[tivoisering]], patenter, «tilleggsrestriksjoner» og advarte mot en «[[balkanisering]]» av det «åpne kildekodeuniverset» gjennom GPLv3.<ref name="kerneldevelopers2006">{{cite web | url=https://lwn.net/Articles/200422/ | title=Kernel developers' position on GPLv3: <!--quote= better here (or : for subtitle)?-->The Dangers and Problems with GPLv3 |authors=James E.J. Bottomley, Mauro Carvalho Chehab, Thomas Gleixner, Christoph Hellwig, Dave Jones, Greg Kroah-Hartman, Tony Luck, Andrew Morton, Trond Myklebust, David Woodhouse |date=15. september 2006 |publisher=[[LWN.net]] |accessdate=11. mars 2015 |quote="The current version (Discussion Draft 2) of GPLv3 on first reading fails the necessity test of section 1 on the grounds that there's no substantial and identified problem with GPLv2 that it is trying to solve. However, a deeper reading reveals several other problems with the current FSF draft: 5.1 DRM Clauses [...] 5.2 Additional Restrictions Clause [...] 5.3 Patents Provisions [...] since the FSF is proposing to shift all of its projects to GPLv3 and apply pressure to every other GPL licensed project to move, we foresee the release of GPLv3 portends the Balkanisation of the entire Open Source Universe upon which we rely."}}</ref> Linus Torvalds gjentok kritikken i september 2014.<ref>[https://www.youtube.com/watch?v=PaKIZ7gJlRU Linus Torvalds says GPL v3 violates everything that GPLv2 stood for] [[Debconf]] 2014, [[Portland, Oregon]] (accessed 11 March 2015)</ref> === Dynamisk lastbare kjernemoduler === Det diskuteres hvorvidt [[Lastbar kjernemodul|lastbare kjernemoduler]] (LKM) er [[derivatverk]] i henhold [[patent]]lovgivningen, og faller utenfor betingelsene til GPL. Torvalds har hevdet at kjernemoduler som bruker en begrenset, delmengde av kjernegrensesnittene noen ganger kan betraktes som et ikke-derivatverk, og således tillater noen binære utstyrsdriverere og andre lastbare kjernemoduler som ikke er lisensiert under GPL. Et eksempel er proprietære grafikkdrivere fra Nvidia som bruker kjernemodulet <code>dma_buf</code>. Modulet gjør det mulig for flere grafikkprosessorer å kopiere data inn i hverandres rammebuffere.<ref>{{cite web |url=http://elinux.org/images/a/a8/DMA_Buffer_Sharing-_An_Introduction.pdf |title=DMA Buffer Sharing Framework: An Introduction |last1=Clark |first1=Rob |last2=Semwal |first2=Sumit |date=1. november 2012 |publisher=Embedded Linux Conference |accessdate=2. august 2014}}</ref> En mulig bruk er [[Nvidia Optimus]] som kombinerer to raske grafikkprosessorer med en integrert Intel grafikkprosessor, hvor Nvidias prosessor skriver til rammebufferet i Intels prosessor når dette er aktivt. Nvidia kan likevel ikke bruke denne infrastrukturen fordi et teknisk middel tvinger gjennom den regel at den bare kan brukes på en LKM som også er en grafikkprosessor. Alan Cox skrev på Linuxkjernens e-postliste i oktober 2012 at å avvise forespørsler fra en av deres ingeniører ville fjerne denne tekniske tvangen fra APIen.<ref>{{cite web |url=http://lists.freedesktop.org/archives/dri-devel/2012-October/028846.html |title=[PATCH] dma-buf: Use EXPORT_SYMBOL |last=Cox |first=Alan |authorlink=Alan Cox |date=10. oktober 2012 |mailinglist=[[Direct Rendering Infrastructure]] |accessdate=3. september 2013}}</ref> Ikke alle var enig i dette, og Torvalds mener at mange lastbare kjernemoduler per definisjon er derivatverk.<ref>{{cite web |url=https://lkml.org/lkml/2003/12/10/123 |title=RE: Linux GPL and binary module exception clause? |last=Torvalds |first=Linus |authorlink=Linus Torvalds |date=10. desember 2003 |mailinglist=LKML |accessdate=31. desember 2010}}</ref> På den andre side har Torvalds også uttalt at «dette grå området er i særdeleshet noe som kan sammenlignes med en utstyrsdriver som opprinnelig ble skrevet for et annet operativsystem (og klart ikke er et derivatarbeid som har Linux som opprinnelse). […] DET er et grått område, og _det_ er det område hvor jeg personlig tror at enkelte moduler kan betraktes å ikke være avledede arbeider kort og godt fordi de ikke var konstruert for Linux og ikke avhenger av noen spesiell Linux-adferd.»<ref>{{cite web |url=http://lkml.iu.edu/hypermail/linux/kernel/0312.0/0670.html |title=Re: Linux GPL and binary module exception clause? |last=Torvalds |first=Linus |authorlink=Linus Torvalds |date=3. desember 2003 |mailinglist=[[LKML]] |accessdate=12. november 2010}}</ref> Spesielt proprietære grafikkdrivere blir flittig diskutert. Det er det sannsynlig at slike spørsmål bare kan bli avgjort i en rettssal. === Firmware binary blobs === {{utdypende|Binary blob}} Linuxkjernen bruker [[firmware]] «[[binary blob]]s» for å støtte diverse maskinvareutstyr. Disse datafilene har forskjellige lisenser. Mange av dem har restriksjoner og deres eksakte underliggende kildekode er vanligvis ukjent.<ref name="firmware">{{cite web |date=16. oktober 2002 |title=kernel/git/stable/linux-stable.git |quote=path: root/firmware/WHENCE |publisher=git.kernel.org |url=https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=blob;f=firmware/WHENCE;hb=HEAD |accessdate=21. august 2012 |url-status=dead |archiveurl=https://archive.today/20130113003817/http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=blob;f=firmware/WHENCE;hb=HEAD |archivedate=2013-01-13 |tittel=Arkivert kopi |besøksdato=2012-08-21 |arkivurl=https://archive.today/20130113003817/http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=blob;f=firmware/WHENCE;hb=HEAD |arkivdato=2013-01-13 |url-status=død }}</ref> I februar 2002 hevdet [[Richard Stallman]] at slik programvare «krenker GPL» som krever at «en komplett korresponderende kildekode» er tilgjengelig.<ref name="Blobs">{{cite web |url=https://www.gnu.org/philosophy/linux-gnu-freedom.html |title=Linux, GNU, and freedom |first=Richard |last=Stallman |authorlink=Richard Stallman |date=2002 |publisher=[[Free Software Foundation]]|accessdate=21. februar 2007}}</ref> Den 20. februar 2008 ble [[Linux-libre]] lansert av ''[[Free Software Foundation Latin America]]''. Dette er en fri variant av Linuxkjernen uten proprietære objekter; den benyttes av de Linuxdistribusjoner som [[Sammenligning av Linuxdistribusjoner|anbefales av Free Software Foundation]], men kan også benyttes av de fleste distribusjoner.<ref>{{cite web|url=http://www.fsfla.org/ikiwiki/selibre/linux-libre/|title=::[FSFLA]:: GNU Linux-libre project|work=fsfla.org}}</ref> Den 15. desember 2010 annonserte [[Debian|Debian Project]] at den neste stabile versjon av Debian, versjon 6.0 «Squeeze» ville ha en kjerne som var «renset for alle ikke-frie firmware elementer».<ref>{{cite web |url=http://debian.org/News/2010/20101215 |title=Debian 6.0 "Squeeze" to be released with completely free Linux Kernel |date=15. desember 2010 |publisher=[[Debian]] |accessdate=8. januar 2011 |archive-date=2011-08-28 |archive-url=https://web.archive.org/web/20110828065342/http://www.debian.org/News/2010/20101215 |url-status=yes }}</ref> Dette gjelder også senere stabile versjoner av Debian. === Varemerke === {{utdypende|Linux Mark Institute}} [[Fil:Linus Torvalds, 2002, Australian Linux conference.jpg|thumb|Linux er et registrert [[varemerke]] som tilhører [[Linus Torvalds]] i flere land. Her er han fotografert under den australske Linuxkonferansen i 2003.{{byline|Foto: Alex Dawson|23. Januar 2003}}]] Linuxkjernen er et registrert [[varemerke]] som tilhører [[Linus Torvalds]] i USA, [[Tyskland]], [[den europeiske union]] og [[Japan]]. Dette ble ufrivillig og indirekte forårsaket av [[advokat]]en William R. Della Croce, Jr. fra [[Boston]] i [[Massachusetts]], som selv ikke hadde vært involvert i utviklingen av en eneste linje med kode i Linuxkjernen. Ikke desto mindre gjorde han i september 1995 navnet Linux til sitt eget varemerke. I november 1996 sendte han brev til ulike Linuxdistributører og gjorde krav på 10 % [[Royalty|royalties]] av deres salgsinntekter.<ref>{{cite web |url=http://www.linuxjournal.com/article/2425/ |title=Linux Trademark Dispute |last=Hughes |first=Phil |date=1. august 1997 |work=[[Linux Journal]] |publisher=Belltown Media, Inc. |accessdate=8. desember 2010}}</ref> WorkGroup Solutions, [[Yggdrasil Linux/GNU/X|Yggdrasil]], [[Linux Journal]], Linux International{{#tag:ref|Linux International (LI), er en internasjonal, [[ideell organisasjon]] av brukere som arbeider for en internasjonal forståelse og bruk av [[fri og åpen programvare]]<ref>[http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/026/2680/2680s1.html ''New Products''] [[Linux Journal]]</ref> Den blir ledet av [[Jon "maddog" Hall]].<ref name="Who's Who at Linux International">{{cite web |url=http://www.li.org/who/index.php |title=Who's Who at Linux International |accessdate=2016-06-05 |archiveurl=https://web.archive.org/web/20051201022055/http://www.li.org/who/index.php |archivedate=1. desember 2005 |df= |tittel=Arkivert kopi |besøksdato=2016-06-05 |arkivurl=https://web.archive.org/web/20051201022055/http://www.li.org/who/index.php |arkivdato=2005-12-01 |url-status=død }} {{Kilde www |url=http://www.li.org/who/index.php |tittel=Arkivert kopi |besøksdato=2021-08-04 |arkiv-dato=2005-12-01 |arkiv-url=https://web.archive.org/web/20051201022055/http://www.li.org/who/index.php |url-status=yes }}</ref> Organisasjonen er tilsynelatende inaktiv, etter som den siste kommunikasjon var 1. juli 2014<ref name="Linux International">{{cite web |url=http://www.li.org/ |title=Linux International |accessdate=2014-02-28 |archiveurl=https://web.archive.org/web/20150804013629/http://www.li.org/ |archivedate=4. august 2015 |df= |tittel=Arkivert kopi |besøksdato=2014-02-28 |arkivurl=https://web.archive.org/web/20150804013629/http://www.li.org/ |arkivdato=2015-08-04 |url-status=død }}</ref> .|group="lower-alpha"|name="linux international"}} og Linus Torvalds saksøkte Della Croce, med krav om at varemerket ble erklært ''«bedragerisk og oppnådd under falske premisser».'' Spørsmålet ble avgjort av retten den 20. august 1997, og varemerket ble tildelt Linus Torvalds.<ref>{{cite web |url=http://www.linuxjournal.com/article/2098 |title=Action Taken on Linux Trademark |last=Hughes |first=Phil |date=1. mars 1997 |work=[[Linux Journal]] |publisher=Belltown Media, Inc. |accessdate=8. desember 2010}}</ref><ref>{{cite web |url=http://www.gisselberglawfirm.com/downloads/linux.pdf |title=The Trademark History of Linux, the Operating System |last=Gisselberg |first=Tonya |date=2010 |publisher=Gisselberg Law Firm, Inc. |accessdate=8. desember 2010 |archive-date=2011-07-11 |archive-url=https://web.archive.org/web/20110711095344/http://www.gisselberglawfirm.com/downloads/linux.pdf |url-status=yes }}</ref> Varemerket blir administrert av [[Linux Mark Institute]] som opprinnelig hadde sitt sete i [[Monterey]], [[California]], men som i dag holder til i [[Oregon]]. === Rettssaken SCO versus Linux === {{utdypende|SCO/Linux-kontroversene}} Den 6. mars 2003 kunngjorde [[SCO Group|SCO-gruppen]] at de ville saksøke IBM; i [[SCO Group, Inc. v. International Business Machines Corp.|en sivil rettssak]] hevdet SCO-gruppen at IBM hadde krenket deres angivelige eiendomsrett til [[Unix]] ved å bruke Unix-kode i deres bidrag til utviklingen av Linuxkjernen. SCO-gruppen sendte også brev til en rekke selskaper og advarte dem om at deres bruk av Linux uten en lisens fra SCO-gruppen ville krenke opphavsretten. Overfor pressen sa de også at de ville saksøke individuelle brukere av Linux, og IBM opptrådte derfor som forsvarere på vegne av sine Linux-kunder. SCO-gruppen hadde også saksøkt [[Novell]], den [[Tyskland|tyske]] bilforhandleren [[DaimlerChrysler]] (delvis frafalt i juli 2004) og den amerikanske [[detaljhandel|detaljisten]] av bildeler [[AutoZone]]; likeledes ble det amerikanske [[programvareselskap]]et [[Red Hat]] saksøkt med påstand om vedergjelding.<ref>[http://sco.tuxrocks.com/Docs/RH/Doc-1.pdf Red Hat Inc. v. SCO Group, Inc.] {{Wayback|url=http://sco.tuxrocks.com/Docs/RH/Doc-1.pdf |date=20040611055042 }}, The United States District Court for the District of Delaware</ref> Den 15. desember 2014 fikk IBM medhold av retten på de fleste punkter,<ref name=ibm1132>{{Citation |url=http://groklaw.net/pdf4/IBM-1132.pdf |title=Memorandum Decision and Order granting in part and denying in part IBM's motion for partial summary judgment on the basis of the ''Novell'' judgment |date=2014-12-15 |author=David Nuffer |access-date=2017-06-09 |archivedate=2015-10-17 |archiveurl=https://web.archive.org/web/20151017124602/http://groklaw.net/pdf4/IBM-1132.pdf }}</ref> og den 1. mars 2016 ble de øvrige av SCO-gruppens anklagepunkter avvist av retten.<ref name="groklaw">{{cite web|url=http://www.groklaw.net/staticpages/index.php?page=20031016162215566|title=Groklaw - SCO v. IBM Timeline|access-date=2017-06-09|archive-date=2024-04-15|archive-url=https://web.archive.org/web/20240415100224/http://www.groklaw.net/staticpages/index.php?page=20031016162215566|url-status=yes}}</ref> Den 30. mars 2016 anket SCO-gruppen dommen,<ref name="groklaw"/> og saken er derfor ennå åpen. Den 16. februar 2018 krevde retten at begge parter skulle legge frem en felles statusrapport som skulle være grunnlaget for en endelig dom.<ref>{{cite web |title=JOINT STATUS REPORT, Case 2:03-cv-00294-DN, Document 1179 |url=https://sco-vs-ibm.org/review/acrobat/180216.pdf |accessdate=25. januar 2019 |location=IN THE UNITED STATES DISTRICT COURT FOR THE DISTRICT OF UTAH, CENTRAL DIVISION |date=2018-02-16 |archive-date=2019-01-26 |archive-url=https://web.archive.org/web/20190126061200/https://sco-vs-ibm.org/review/acrobat/180216.pdf |url-status=yes }}</ref> I [[SCO Group, Inc. v. Novell, Inc.|rettssaken mot Novell]] spesifiserte SCO-gruppen den 8. mars 2007 detaljene i søksmålet. På tross av påstander om at de var den rettmessige eier av 1 million linjer med kode, spesifiserte de bare 326 linjer med kode, hvorav det meste ikke var mulig å kreve opphavsrett på.<ref>{{cite web |url=http://www.groklaw.net/articlebasic.php?story=20070308014847709 |title=Report from the Courthouse March 7 - Part 1 (IBM's Motion for DJ on 10th CC) |last=Jones |first=Pamela |authorlink=Pamela Jones |date=8. mars 2007 |publisher=[[Groklaw]] |accessdate=24. mars 2007 |archive-date=2011-08-07 |archive-url=https://web.archive.org/web/20110807034144/http://www.groklaw.net/articlebasic.php?story=20070308014847709 |url-status=yes }}</ref> Retten avgjorde den 10. august 2007 at SCO aldri har hatt opphavsretten til Unix.<ref>{{cite web |url=http://www.groklaw.net/article.php?story=20070810165237718 |title=Court Rules: Novell owns the UNIX and UnixWare copyrights! Novell has right to waive! |last=Jones |first=Pamela |authorlink=Pamela Jones |date=10. august 2007 |publisher=[[Groklaw]] |accessdate=12. august 2007 |archive-date=2008-09-06 |archive-url=https://web.archive.org/web/20080906194258/http://www.groklaw.net/article.php?story=20070810165237718 |url-status=yes }}</ref> [[United States Court of Appeals for the Tenth Circuit|Ankedomstolen i den tiende krets]] avgjorde den 26. august 2009 at spørsmålet om opphavsrett skulle avgjøres av en [[jury]].<ref>{{cite web |url=http://www.linuxjournal.com/content/sco-will-try-again |title=SCO Will Try Again |last=Ryan |first=Justin |date=26. august 2009 |work=[[Linux Journal]] |publisher=Belltown Media, Inc. |accessdate=30. august 2009}}</ref> Juryens dom falt 30. mars 2010 i favør av Novell.<ref>{{cite web |url=http://www.sltrib.com/news/ci_14786202 |title=Jury says Novell owns Unix copyrights |last=Harvey |first=Tom |date=30. mars 2010 |work=[[The Salt Lake Tribune]] |publisher=[[MediaNews Group]] |accessdate=30. mars 2010}}</ref> Den 22. desember 2003 forklarte Linus Torvalds overfor nettstedet [[Groklaw]] at han var opphavsmannen bak deler av den koden som SCO-gruppen gjorde krav på, og at feilnumrene i filen <code>errno.h</code> ikke stammet fra SCO-UNIX, men fra andre kilder enn UNIX: {{sitat|Jeg har et svært sterkt minne om at jeg også skrev den opprinnelige <code>«errno.h»</code>, og jeg tror virkelig at i det minste i386-versjonen av errno.h egentlig har verdier som er forskjellige fra «virkelig UNIX». Noen av de første matcher, men ikke resten. Dette forklarer jeg ved bare å ha en liste med feilkoder, og ved bare å gi feilkodene i rekkefølge, men kanskje tar jeg feil.<br/> Jeg husker spesielt at jeg senere _burde_ ha valgt de samme verdiene, slik at jeg kunne gjøre dem binærkompatible. Tross alt har jeg boken «Intel386 Family Binary Compatibility Specification 2» (copyright Intel corporation, og ikke SCO), og den lister direkte opp feilkodene. De er forskjellige fra hva Linux bruker på x86. Andre arkitekturer fikset denne feilen, men på dette punktet stammer historien om «errno.h» definitivt _ikke_ fra UNIX-kilder.<br/><...><br/>For eksempel, lister SCO opp filene <code>«include/linux/ctype.h»</code> og <code>«lib/ctype.h»</code>, og litt triviell graving viser at disse filene i virkeligheten er der i den opprinnelige 0.01 distribusjonen av Linux (dvs i september 1991). Og jeg kan derfor si:<br/> - Jeg skrev dem (og dersom vi ser på de opprinnelige filene, skammer jeg meg litt: [[Makro (informasjonsvitenskap)|Makroene]] <code>«toupper()»</code> og <code>«tolower()»</code>) er så grusomt stygge at jeg ikke ville ha innrømmet å ha skrevet dem hvis det ikke var fordi noen andre hevdet at de hadde gjort det.)| <ref>[http://www.groklaw.net/article.php?story=20031222174158852 Linus' First Analysis of the Files] {{Wayback|url=http://www.groklaw.net/article.php?story=20031222174158852 |date=20170627095201 }}, [[Groklaw]], 22.desember 2003</ref>}} Den 30. mai 2003 kommenterte Linus Torvalds saken slik overfor [[Computerworld]]: {{sitat|For å være helt ærlig, fant jeg dette svært interessant i en [[Jerry Springer]]-stil. ''[[White trash]]'' (''hvitt søppel'') som kriger i all offentlighet, og kaster stoler på hverandre. SCO(-gruppen) skriker ut om IBM's elskerinner .... Svært underholdende.|<ref>{{cite web | title = Analysts to SCO: No thanks to code review offer | publisher = Computerworld | date = 2003-05-30 | url = http://www.computerworld.com/softwaretopics/os/linux/story/0,10801,81695,00.html | accessdate = 2007-08-20 | archive-date = 2007-07-04 | archive-url = https://web.archive.org/web/20070704041003/http://www.computerworld.com/softwaretopics/os/linux/story/0,10801,81695,00.html | url-status = yes }}</ref>}} [[Santa Cruz Operation]] (SCO) var et programvareselskap som ble grunnlagt i [[Santa Cruz, California]] i 1979. SCO var en av mange bidragsytere til utviklingen av [[operativsystem]]et [[UNIX]] gjennom blant annet [[OpenServer|SCO UNIX]] (senere kjent som SCO Open Desktop og SCO OpenServer) som var en avart av Unix for [[x86]]-arkitekturen. I boken ''[[The Art of Unix Programming]]'' (2003) hevdet [[Eric Steven Raymond]] at SCO var «det første Unix-selskapet» i verden.<ref>{{cite book | last = Raymond | first = Eric | authorlink = Eric Raymond | title = The Art of UNIX Programming | publisher = Addison-Wesley Professional | date = 2003-10-03 | location = | pages = | url = http://www.catb.org/~esr/writings/taoup/html/ch02s01.html#id2879627 | doi = | id = | isbn = 978-0-13-142901-7}}</ref> Forut for opprettelsen av SCO var UNIX-markedet dominert av maskinvareprodusenter og teleselskaper. SCO solgte SCO UNIX til [[Caldera Systems]] i 2001, og endret sitt navn til [[Tarantella, Inc.]] Tarantella, Inc. ble i sin tur oppkjøpt av [[Sun Microsystems]] i 2005. Selskapet Caldera Systems var blitt grunnlagt i oktober 1994 i [[Utah]]. I mai 2001 endret det navn til ''Caldera International'', og deretter til SCO-gruppen. At selskapet på dette viset brukte navnet til SCO har ført til forvirring og forveksling av de to selskapene. I 2007 lå SCO-gruppen an til å gå konkurs, og i 2011 ble den oppkjøpt av selskapet [[Xinuos|UnXis, Inc.]] I rettssaken hevdet SCO-gruppen at de fikk enerett på varemerket UNIX da SCO solgte sine rettigheter til Caldera Systems. Det urimelige i et slikt krav er at SCO var en av mange aktører som bidro til utviklingen av UNIX; dette må betraktes som et lagarbeid, og SCO var ikke de eneste bidragsyterne. Kravet fra SCO-gruppen ville bety at ikke bare Linuxkjernen, men også IBM's Unix-avart [[AIX]], såvel som [[HP-UX]] fra [[Hewlett Packard]], [[Solaris (operativsystem)|Solaris]] fra [[Sun Microsystems]], [[IRIX]] fra [[Silicon Graphics|Silicon Graphics Inc.]] (SGI), og flere Unix-avarter, var ulovlige. SCO-gruppen var heller ikke identisk med SCO, selv om de brukte navnet til det tidligere selskapet. SCO-gruppen hadde ikke utviklet SCO-UNIX, men hadde ''kjøpt'' en av mange avarter av UNIX, og deretter gjort krav på enerett i UNIX-markedet. == Utvikling == {{utdypende|Versjoner av Linuxkjernen}} [[Fil:Alan Cox at FOSS 2007.jpg|thumb|Den engelske programmereren [[Alan Cox]] er en prominent utvikler av Linuxkjernen.{{byline|Foto: TariqueSani|22. desember 2008}}]] [[Fil:AndrewMorton-3.jpg|thumb|… Den australske programmereren [[Andrew Morton (programmerer)|Andrew Morton]] er en annen …{{byline|Foto: Ilya Voyager|23. april 2008}}]] [[Fil:Greg Kroah-Hartman lks08.jpg|thumb| …[[Greg Kroah-Hartman]] er en tredje …. {{byline|Foto: Julien|5. februar 2009}}]] === Brukernettverket === Linuxkjernen vedlikeholdes av et [[Brukernettverk|nettverk med brukere]], hvor det inngår eller har inngått [[multinasjonalt selskap|multinasjonale selskaper]] som [[Intel]],<ref name="Corbet2012_9"/> [[IBM]],<ref name="Corbet2012_9"/> [[Texas Instruments]],<ref name="Foster">Dawn Foster: [https://thenewstack.io/contributes-linux-kernel/ Who Contributes to the Linux Kernel], The New Stack, 18. januar 2017</ref> [[Advanced Micro Devices]],<ref name="Corbet2012_10"/> [[Hewlett-Packard]],<ref name="History"/> [[ARM Holdings]],<ref name="Foster"/> [[Dell]],<ref>[http://cateee.net/lkddb/web-lkddb/DELL_LAPTOP.html CONFIG_DELL_LAPTOP: Dell Laptop Extras], Linux Kernel Driver Database, 2017</ref> [[Red Hat]],<ref name="Corbet2012_9"/> [[SuSE]],<ref>Libby Clark: [https://www.linux.com/blog/top-10-developers-and-companies-contributing-linux-kernel-2015-2016 The Top 10 Developers and Companies Contributing to the Linux Kernel in 2015–2016], Linux.com, 22. august 2016</ref> [[Novell]],<ref name="Love2015"/><ref name="Corbet2012_9"/> [[Linaro]],<ref name="Love2015"/> [[Oracle Corporation|Oracle]],<ref name="Corbet2012_9"/> [[Nokia (selskap)|Nokia]],<ref name="Corbet2012_9"/> [[Google]],<ref name="Corbet2012_10"/> [[Facebook]],<ref name="Foster"/> [[Fujitsu]]<ref name="Corbet2012_10"/> og [[Samsung]].<ref name="Corbet2012_10"/> I 2015 hadde nesten 12 000 [[programmerer]]e fra omkring 1 200 selskaper bidratt til kjernens utvikling,<ref name="LinuxContributor"/><ref name="Corbet2012"/> mens gruppen «amatører» i 2007 stod for 3,9 % av endringene.<ref name="Marti"/> Siden 1996 har utviklingsdiskusjoner foregått daglig på [[Linuxkjernens e-postliste]].<ref name="Love2015"/> I 2007 hadde utviklingen av kjernen skiftet fokus. Fra at de 20 mest aktive utviklere skrev 80 % av koden, var det endret til at de 30 mest aktive skrev 30 % av koden. De mest aktive utviklere brukte derimot mer tid på å gjennomgå forandringene.<ref name=":0">{{Cite news|url=http://www.computerworlduk.com/applications/are-top-linux-developers-losing-the-will-to-code-604/|title=Are top Linux developers losing the will to code?|last=Marti|first=Don|newspaper=ComputerworldUK|language=en-GB|access-date=2016-10-24}}</ref> I 2007 ble endringer i kjernen angivelig gjort av 1900 utviklere. Dette kan være et betydelig underestimat fordi utviklere som arbeider i team vanligvis regnes som en. Det er antatt at Linuxkjernens brukernettverk består av mellom 5000 og 6000 personer. [[Linux Foundation]] offentliggjorde i 2016 en rapport<ref>{{Kilde www |url=http://go.linuxfoundation.org/linux-kernel-development-report-2016 |tittel=2016 Linux Kernel Development Report |besøksdato=2017-06-09 |arkiv-dato=2016-08-22 |arkiv-url=https://web.archive.org/web/20160822224924/http://go.linuxfoundation.org/linux-kernel-development-report-2016 |url-status=død }}</ref> for perioden desember 2014 til juli 2016, som viste at omkring 1500 utviklere bidrar til hver versjon fra omkring 200–250 selskaper. De 30 mest aktive utviklere bidro til litt mer enn 16 % av koden. De største bidragsyterne blant selskaper var Intel (12.9 %) og Red Hat (8.0 %); tredje og fjerde plass ble holdt av kategoriene «ingen» (7.7 %) og «ukjent» (6.8 %). === Kodebasen === Den 2. juli 2007 uttalte Greg-Kroah Hartmann om versjon 2.6.22.0 at 5 % av koden var en del av «kjernen», mens 52 % var utstyrsdrivere.<ref name=":0" /> {{Sitat|I stedet for et veikart, er det tekniske veiledninger. I stedet for en sentral ressursallokering, er det personer og selskaper som alle tar del i den videre utvikling av Linuxkjernen, helt uavhengig av hverandre:<br/> Folk som Linus Torvalds og jeg planlegger ikke kjernens utvikling. Vi sitter ikke der og tenker ut et veikart for de neste to år, og deretter tildeler ressurser til de ulike nye egenskaper. Dette er fordi vi ikke har noen ressurser. Ressursene blir alle eid av de forskjellige korporasjoner som bruker og bidrar til Linux, så vel som av alle de forskjellige uavhengige bidragsytere der ute. Det er de folkene som eier ressursene som bestemmer...|[[Andrew Morton (programmerer)|Andrew Morton]], 2005}} {{Sitat|Linux er evolusjon, ikke intelligent konstruksjon!|[[Linus Torvalds]], 2005<ref>{{cite web |url=http://www.sprg.uniroma2.it/kernelhacking2008/lectures/lkhc08-01b.pdf |title=Linux Evolution |date=26. mars 2008}}</ref><ref>{{cite web |url=http://www.cs.huji.ac.il/~feit/papers/LinuxDev12JSS.pdf |title=Perpetual Development: A Model of the Linux Kernel Life Cycle |date=25. oktober 2011}}</ref><ref>{{cite web |url=http://lkml.iu.edu/hypermail/linux/kernel/0802.1/2159.html |title=Re: Announce: Linux-next (Or Andrew's dream :-)) |date=12. februar 2008 |accessdate=30. januar 2017 |mailing-list=Linux Kernel Mailing List |last=Kroah-Hartman |first=Greg}}</ref>|source=}} [[Evolusjon]]en gjør ofte uventede (og ikke nødvendigvis optimale) ting, men ingen av dens inkrementelle forandringer får Linuxkjernen til ''å bryte sammen'' på et gitt tidspunkt. Enhver versjon av Linuxkjernen er brukbar, selv om utstyrsdrivere ikke støtter alle egenskapene ved maskinvaren som de er skrevet for. Arkitekturen til Linuxkjernen har vist seg å fungere på grunn av dens utvidbarhet og tilgangen på utviklere. Mange uavhengige frivillige utviklere har sørget for at de delene som krever mest utvikling — utstyrsdrivere, filsystemer og nettverksprotokoller — blir implementert på en utvidbar måte. Disse systemene er gjort utvidbare ved å bruke en data-abstraksjon, der hver utstyrsdriver er implementert som et separat modul med et felles grensesnitt. En utvikler kan tilføye en ny utstyrsdriver, med minimal interaksjon med andre utviklere. Det er også enkelt å tilføye flere maskinvareplattformer. Arkitekturen separerer maskinvarespesifikk kode i distinkte moduler innenfor hvert undersystem. På denne måten kan en liten gruppe av utviklere implementere en portering til en ny datamaskinarkitektur ved å utelukkende omskrive de maskinvare-spesifikke delene av kjernen. === Estimerte kostnader ved å utvikle Linuxkjernen på nytt === [[Fil:Redevelopment costs of Linux kernel.png|thumb|Kostnadene ved å utvikle Linuxkjernen på nytt.{{byline|Illustrasjon: Spitzl|31. januar 2017}}]] Kostnadene ved å utvikle versjon 2.6.0 av Linuxkjernen på nytt i et tradisjonell proprietært miljø har blitt estimert til 612 millioner [[amerikanske dollar]], 467 millioner [[euro]] og 394 millioner [[britisk pund|britiske pund]] i 2004-priser ved å benytte estimasjonsmodellen [[årsverk]] i [[COCOMO]].<ref>{{cite web |url = http://www.dwheeler.com/essays/linux-kernel-cost.html |title = Linux Kernel 2.6: It's Worth More! |last = Wheeler |first = David A. |access-date = 2017-06-11 |archive-date = 2011-08-20 |archive-url = https://web.archive.org/web/20110820092909/http://www.dwheeler.com/essays/linux-kernel-cost.html |url-status = yes }}</ref> I 2006 fastslo et studium som ble finansiert av [[den europeiske union]] at kostnadene ved å utvikle versjon 2.6.8 eller høyere av Linuxkjernen på nytt til 1.14 milliarder amerikanske dollar, 882 millioner euro og 744 millioner pund.<ref>{{cite web|url=http://ec.europa.eu/enterprise/sectors/ict/files/2006-11-20-flossimpact_en.pdf|title=Economic impact of FLOSS on innovation and competitiveness of the EU ICT sector|type=Table 3 on page 50}}</ref> En studie fra 30. juni 2001 fant at distribusjonen [[Red Hat Linux]] 7.1 inneholdt 30 millioner [[kildekode|linjer med kildekode]]. Ved å bruke COCOMO-modellen, fant studien at Red Hat Linux 7.1 ville krevd omtrent åtte tusen årsverk om den skulle blitt utviklet ved konvensjonelle proprietære metoder. Ifølge studien ville dette ha kostet omtrent 1,08 milliarder år-2000-US-dollar å utvikle ved konvensjonelle proprietære metoder.<ref name = "estimating_size">{{Språkikon|en|Engelsk}} {{Kilde www | tittel = More Than a Gigabuck: Estimating GNU/Linux's Size | url = http://www.dwheeler.com/sloc/redhat71-v1/redhat71sloc.html | utgiver = | forfatter = David A. Wheeler | dato = 29. juli 2002 | besøksdato = 11. mai 2006 | kommentar = | arkiv-dato = 2020-04-28 | arkiv-url = https://web.archive.org/web/20200428111826/https://dwheeler.com/sloc/redhat71-v1/redhat71sloc.html | url-status=død }}</ref> En lignende analyse av [[Debian]] 2.2 «potato» viste at denne inneholdt 55 millioner kodelinjer og ville kostet 1,9 milliarder år-2000-US-dollar eller 14 milliarder norske kroner å utvikle med konvensjonelle metoder.<ref>{{Språkikon|en|Engelsk}} {{Kilde www|tittel=Counting potatoes: The size of Debian 2.2 |url=http://people.debian.org/~jgb/debian-counting/counting-potatoes/ |utgiver= |forfatter=Jesús M. González-Barahona |utgivelsesdato=3. januar 2002 |besøksdato=11. mai 2006 |kommentar= |url-status=død |arkivurl=https://web.archive.org/web/20080503001817/http://people.debian.org/~jgb/debian-counting/counting-potatoes/ |arkivdato=2008-05-03 }}</ref> En [[SLOC]]-studie for Debian 3.1 «sarge» anno 2005 viste at den inneholdt 215 millioner linjer med kode, som tilsvarer en utviklingskostnad på ca. 58 milliarder norske kroner.<ref>{{Språkikon|en|Engelsk}} {{Kilde www | tittel = SLOCCount Web for Debian Sarge | url = http://libresoft.dat.escet.urjc.es/debian-counting/sarge/index.php?menu=Statistics | utgiver = Libre Software | utgivelsesdato = <!-- oppdateres kontinuerlig --> | besøksdato = 16. juli 2007 | kommentar = | arkiv-url = https://web.archive.org/web/20060115140056/http://libresoft.dat.escet.urjc.es/debian-counting/sarge/index.php?menu=Statistics | arkivdato = 2006-01-15 | url-status=død }}</ref> Debian 4.0 «Etch» inneholdt ifølge en [[SLOC]]-studie fra 17. juni 2007 hele 283 millioner linjer med kildekode (76,5 milliarder kroner). Dette var 7 ganger flere linjer enn [[Windows XP]] (40 millioner linjer med kildekode og 10,8 milliarder kroner).<ref>{{Språkikon|en|Engelsk}} {{Kilde www | tittel = Measuring Etch | url = https://penta.debconf.org/~joerg/attachments/32-measuring_etch_slides.odp | utgiver = debconf.org | utgivelsesdato = 17. juni 2007 | besøksdato = 16. juli 2007 | format = ODF | url-status=død | arkivurl = https://web.archive.org/web/20110527195700/https://penta.debconf.org/~joerg/attachments/32-measuring_etch_slides.odp | arkivdato = 2011-05-27 }}</ref> I januar 2016 estimerte Black Duck [[Open Hub]] at Debian 8, «Jessie» (med 74 millioner linjer kode) ville koste omkring 1.4 milliarder dollar å utvikle, ved å bruke en annen metode basert på samme modell.<ref>{{cite web |url = https://www.openhub.net/p/debian/estimated_cost |title = Estimated Cost |publisher = Black Duck [[Open Hub]] |access-date = 2016-01-06 }}</ref><ref>{{cite web |url = https://packages.debian.org/stable/ohcount |title = Package: ohcount (3.0.0-8 and others) |publisher = Debian |access-date = 2016-01-06 }}</ref> Ved å bruke [[David A. Wheeler]]'s metodologi, estimerte Amanda McPherson, Brian Proffitt og Ron Hale-Evans i oktober 2008 at det å utvikle versjon 2.6.25 av Linuxkjernen på nytt ville ha kostet 1.3 milliarder dollar. De estimerte kostnadene ved å utvikle [[Versjoner av Fedora#Fedora 9 «Sulphur»|Fedora 9 «Sulphur»]] på nytt (6 772 902 linjer med kildekode) var 10.8 milliarder dollar.<ref>{{cite web|url=http://www.linuxfoundation.org/publications/estimatinglinux.pdf|title=Estimating Total Development Cost Of a Linux Distribution|type=Table on page 6|url-status=dead|archiveurl=https://web.archive.org/web/20100711025812/http://www.linuxfoundation.org/publications/estimatinglinux.pdf|archivedate=2010-07-11|tittel=Arkivert kopi|besøksdato=2010-01-08|arkivurl=https://web.archive.org/web/20100711025812/http://www.linuxfoundation.org/publications/estimatinglinux.pdf|arkivdato=2010-07-11|url-status=død}} {{Kilde www |url=http://www.linuxfoundation.org/publications/estimatinglinux.pdf |tittel=Arkivert kopi |besøksdato=2017-06-11 |arkiv-dato=2010-07-11 |arkiv-url=https://web.archive.org/web/20100711025812/http://www.linuxfoundation.org/publications/estimatinglinux.pdf |url-status=yes }}</ref> Garcia-Garcia og Alonso de Magdaleno fra [[Universitetet i Oviedo]], [[Spania]], anslo den årlige verdiøkning av kjernen til omkring 100 millioner euro mellom 2005 og 2007 og 225 millioner euro i 2008. Anslagene viste at det ville koste 1 milliarder euro eller 1,4 milliarder dollar per februar 2010 (versjon 2.6.33) å utvikle den på nytt i den europeiske union.<ref>{{cite web|url=http://linux.slashdot.org/story/10/02/24/155214/The-Billion-Dollar-Kernel |title=The Billion Dollar Kernel |publisher=Linux.slashdot.org |date=24. februar 2010 |accessdate=12. november 2010}}</ref> Den 7. mars 2011 ble tilsvarende tall for versjon 2.6.37.x av Linuxkjernen, ved å bruke David A. Wheeler's beregninger, oppgitt til omkring 3 milliarder dollar og 2.2 milliarder euro, og tallene fortsetter å øke.<ref>{{cite web|last=Wheeler|first=David|title=The Linux Kernel: It's Worth More!|url=http://www.dwheeler.com/essays/linux-kernel-cost.html|accessdate=17. september 2012|archive-date=2011-08-20|archive-url=https://web.archive.org/web/20110820092909/http://www.dwheeler.com/essays/linux-kernel-cost.html|url-status=yes}}</ref> === Utviklingsmodell === {{Grafkart | width = 800 | height = 400 | type = rect | xAxisTitle = Kernel Version | yAxisTitle = Million Lines of Code | x = 0.01, 1.0.0, 1.1.0, 1.2.0, 1.3.0, 2.0.0, 2.1.0, 2.2.0, 2.3.0, 2.4.0, 2.5.0, 2.6.0, 3.0, 4.0, 4.10, 4.15, 4.19 | y = 0.008, 0.17, 0.17, 0.29, 0.32, 0.71, 0.73, 1.67, 1.76, 3.15, 3.83, 8.10, 14.64, 19.31, 22.84, 25.36, 25.59 }} Den nåværende utviklingsmodellen går ut på at Linus Torvalds lanserer nye «mainline» versjoner («[[vanillaprogramvare|vanillaversjoner]]») av Linuxkjernen. De utgjør hovedgreinen eller den generiske utviklingsgreinen. Nye versjoner blir offisielt lansert omtrentlig hver tiende uke, etter at Torvalds foretar en innledende runde med å integrere større endringer som er foretatt av andre utviklere, og etter flere runder med feilrettende testutgaver. Hovedgreinen er ikke den ''stabile'' greinen, men inkorporerer alle former for endringer, deriblant de siste egenskaper, sikkerhetsoppdateringer og feilrettinger. Brukere som ikke vil risikere en ny versjon som ikke er grundig testet, kan benytte en separat ''stabil'' utviklingsgrein. Den følger hver versjon, og er ment for de som bare ønsker oppdateringer av sikkerhetsmoduler og feilrettinger, men ikke en helt ny versjon. Denne greinen blir vedlikeholdt av det ''stabile utviklingsteamet'', som inkluderer [[Greg Kroah-Hartman]], [[Chris Wright (programmerer)|Chris Wright]], [[Alan Cox]], med flere. Forut for versjon 2.6 fantes det en stabil grein (2.4) for relativt små og trygge endringer, og en ustabil grein (2.5), hvor store endringer og opprettinger var tillatt. Begge greinene ble vedlikeholdt av den samme gruppen utviklere, ledet av Torvalds. Brukerne hadde alltid tilgjengelig en grundig testet 2.4 versjon med de siste sikkerhetsoppdateringer og feilrettinger, men måtte vente på de nye egenskapene i 2.5-greinen. Ulempene var at den ''stabile'' versjonen ble akterutseilt. Den støttet ikke lenger ny maskinvare og manglet nødvendige nye egenskaper. På slutten av 2.5-greinens levetid, begynte enkelte vedlikeholdere å portere endringene tilbake til 2.4-serien. Men dette resulterte i introduksjonen av nye feil. 2.5 greinen ble til slutt stabil og omdøpt til 2.6. Men i stedet for å åpne en ustabil 2.7-grein, bestemte kjernens utviklere å fortsette med å tilføye store endringer i 2.6-greinen. Disse versjonene ble lansert i en raskere rekkefølge enn 2.4.x, men tregere enn 2.5.x. Dette gjorde at nye egenskaper ble raskere tilgjengelig og ble mer testet. Som respons på mangelen på et ''stabilt'' kjernetre hvor feilrettinger kunne koordineres, kunngjorde Adrian Bunk i desember 2005 at han ville fortsette med å utgi 2.6.16.y-kjerner, selv om det stabile utviklingsteamet gikk over til 2.6.17.<ref>{{cite web |url=http://kerneltrap.org/node/6930 |title=Linux: 2.6.16.y Lives On |author=Jeremy |date=4. august 2006 |publisher=KernelTrap |accessdate=30. oktober 2010 |archive-url=https://web.archive.org/web/20100914234714/http://kerneltrap.org/node/6930 |archivedate=14. september 2010 |url-status=dead |df= |archiveurl=https://archive.today/20120724093633/kerneltrap.org/node/6930 }}</ref><ref name="2.6.16-longterm">{{cite web |url=http://lkml.iu.edu/hypermail/linux/kernel/0608.0/1111.html |title=Adrian Bunk is now taking over the 2.6.16-stable branch |last=Kroah-Hartman |first=Greg |authorlink=Greg Kroah-Hartman |date=3. august 2006 |mailinglist=[[LKML]] |accessdate=21. februar 2015}}</ref> Han inkluderte også enkelte oppdatering av utstyrsdrivere, og gjorde vedlikeholdsreglene i 2.6.16-serien svært lik dem i 2.4.<ref>{{cite web |url=http://kerneltrap.org/node/6386 |title=Linux: Maintaining A 2.6.16.y Tree |author=Jeremy |date=23. mars 2006 |publisher=KernelTrap |accessdate=30. oktober 2010 |archive-url=https://web.archive.org/web/20100620015441/http://kerneltrap.org/node/6386 |archive-date=20. juni 2010 |url-status=dead |df= |archiveurl=https://archive.today/20120709101718/kerneltrap.org/node/6386 }}</ref> Siden da ble en ''stabil'' grein dannet, og ble oppdatert med feilopprettinger. I oktober 2009 kunngjorde Adrian Bunk at han ville vedlikeholde 2.6.27 i fem år som en erstatning for 2.6.16.<ref>{{cite web |url=http://marc.info/?l=linux-kernel&m=122375909403298&w=2 |title=Linux 2.6.27 will be a longtime supported kernel |last=Bunk |first=Adrian |date=11. oktober 2008 |mailinglist=[[LKML]] |accessdate=30. oktober 2010}}</ref> Dermed ble en ny ''stabil grein'' dannet, med stadige feilrettinger.<ref>{{cite web |url=http://marc.info/?l=linux-kernel&m=125245118518458 |title=Re: 2.6.27 maintenance plans after 2.6.32 is released |last=Kroah-Hartman |first=Greg |date=8. september 2009 |mailinglist=[[LKML]]}}</ref> Fra versjon 2.6 ønsket noen fortsatt et ''ustabilt'' kjernetre. [[Andrew Morton (programmerer)|Andrew Morton]] endret hensikten i sitt [[mm tre|-mm tre]] fra å behandle minnehåndtering til å bli et sted for eksperimentell kode. I september 2007 stanset han vedlikeholdet av dette treet.<ref>{{cite web|url=http://kerneltrap.org/Linux/2.6.23-rc6-mm1_This_Just_Isnt_Working_Any_More |archiveurl=https://web.archive.org/web/20080127062120/http://kerneltrap.org/Linux/2.6.23-rc6-mm1_This_Just_Isnt_Working_Any_More |title=This Just Isn't Working Any More |website=kerneltrap.org |date=18. september 2007 |archivedate=27. januar 2008 |url-status=dead |df= }}</ref> ===''Linux-next''=== Den 12. februar 2008 skapte Stephen Rothwell ''linux-next'' treet for å samle patcher som skulle havne i den stabile greinen i neste utviklingssyklus.<ref>{{cite web |url=https://lkml.org/lkml/2008/2/11/512 |title=Announce: Linux-next (Or Andrew's dream :-)) |last=Rothwell |first=Stephen |date=12. februar 2008 |mailinglist=LKML |accessdate=30. oktober 2010}}</ref><ref>{{cite web |url=https://lwn.net/Articles/269120/ |title=linux-next and patch management process |last=Corbet |first=Jonathan |date=21. oktober 2010 |work=[[LWN.net]] |publisher=Eklektix, Inc |accessdate=30. oktober 2010}}</ref> Flere vedlikeholdere av undersystemer adopterte endelsen ''next'' på trær med kode som skulle inkluderes i neste stabile versjon. Per 24. mars 2022 holdes utviklingsversjonen av Linuxkjernen i greinen ''linux-next''.<ref>{{cite web |url=http://www.kernel.org |title=The Linux Kernel Archives |publisher=Kernel.org |accessdate=18. mars 2022}}</ref> === Langtidsversjoner === Fra versjon 2.6.16 har det jevnlig blitt utgitt versjoner med [[langtidsstøtte]] (LTS). De passer særlig for industrielle og kommersielle miljøer som trenger stabilitet. Det er blitt utgitt 20 versjoner med langtidsstøtte, hvorav fire er gjeldende:<ref>[https://www.kernel.org/category/releases.html Active kernel releases], kernel.org, besøkt 31. januar 2017</ref> {|class="wikitable" |- ! LTS # ! Versjon ! Lansert ! Støttet til |-bgcolor=#FFFFCC | bgcolor=#E6E6FF|17 | 4.9 | 11. desember 2016 | Januar 2019 |-bgcolor=#FFFFCC | bgcolor=#E6E6FF|18 | 4.14 | 12. november 2017 | Januar 2020 |-bgcolor=#FFFFCC | bgcolor=#E6E6FF|19 | 4.19 | 22. oktober 2018 |Desember 2020 |-bgcolor=#FFFFCC | bgcolor=#E6E6FF|20 | 5.4 | 24. november 2019 | Desember 2021 |} === Forholdet til Linuxdistribusjoner === Mange Linuxbrukere kjører en «vanillakjerne» (stabil kjerne) som følger med en [[Linuxdistribusjon]]. Flere leverandører av distribusjoner (deriblant [[Red Hat]] og [[Debian]]) vedlikeholder også et annet sett av Linuxkjernen som blir oppdatert langsommere enn «vanillakjernen». De inneholder vanligvis alle rettinger fra den relevante ''stabile'' greinen, men støtter også utstyrsdrivere og egenskaper som ikke har blitt lansert i «vanillaversjonen» som distribusjonen startet sin grein fra. [[Red Hat Enterprise Linux]] 6 «Santiago» leveres for eksempel sammen med versjon 2.6.32 av Linuxkjernen. Denne versjonen hadde langtidsstøtte, og siste offisielle underversjon var 2.6.32.71. Red Hat har laget sine egne uoffisielle oppdateringer, og Red Hat Enterprise Linux 6.10 ble for eksempel lansert sammen med versjon 2.6.32-794 av Linuxkjernen. === Revisjonskontroll === [[Fil:Gitweb.png|thumb|right|Skjermbilde av Gitweb, grensesnittet til Git på internett{{byline|Foto: Git Team|3. oktober 2011}}]] {{utdypende|Git}} Linuxkjernens kildekode ble tidligere vedlikeholdt uten noe automatisert [[versjonskontrollsystem]], stort sett fordi Linus Torvalds mislikte tanken på et sentralisert system. I 2002 gikk utviklingsteamet over til å bruke [[BitKeeper]]. BitKeeper var tilgjengelig for Linus og flere andre uten kostander, men var ikke fri programvare, noe som ble en kilde til kontrovers. Systemet hadde en viss interoperabilitet med frie versjonskontrollsystemer som [[Concurrent Versions System]] (CVS) og [[Subversion]]. I april 2005 prøvde [[Andrew Tridgell]] å gjenskape en fri utgave av BitKeeper gjennom omvendt ingeniørkunst. Dette førte til at BitMover, selskapet som utga BitKeeper, stanset støtten til Linuxkjernens brukernettverk. Som en reaksjon skrev Torvalds og andre kildekoden til det nye versjonskontrollsystemet [[Git]]. Det nye systemet ble skrevet i løpet av noen uker, og i løpet av to måneder ble det tatt i bruk på den offisielle Linuxkjernen.<ref>{{cite web|mailinglist=git-commits-head |author=Linux Kernel Mailing List |url=http://marc.info/?l=git-commits-head&m=111904216911731 |title=Linux 2.6.12 | date=17. juni 2005}}</ref> Versjon 0.99 av Git ble lansert 11. juli 2005. Siste versjon er 2.47.1, som ble lansert 25. november 2024. === Versjonsnummer === Linuxkjernen har hatt tre forskjellige former for versjonsnummer. Den første nummereringen ble brukt forut for versjon 1.0. Den første versjonen av kjernen var 0.01. Den ble etterfulgt av 0.02, 0.03, 0.10, 0.11, 0.12 (første versjon lansert under GPL), 0.95, 0.96, 0.97, 0.98, 0.99 og deretter 1.0.<ref>{{cite web |url=http://ftp.cdut.edu.cn/pub/linux/kernel/history/lka-001.html |title=Linux Kernel Archives - Volume 1 |last=Williams |first=Riley |url-status=dead |archiveurl=https://archive.today/20050511062834/http://ftp.cdut.edu.cn/pub/linux/kernel/history/lka-001.html |archivedate=2005-05-11 |tittel=Arkivert kopi |besøksdato=2007-12-22 |arkivurl=https://archive.today/20050511062834/http://ftp.cdut.edu.cn/pub/linux/kernel/history/lka-001.html |arkivdato=2005-05-11 |url-status=død }}</ref> Fra 0.95 og fremover var det mange patch-utgaver mellom versjonene. [[Fil:Linus Torvalds.jpeg|thumb|200px|[[Linus Torvalds]].{{byline|Ukjent fotograf (Linux Magazine)|Desember 2002}}]] Etter versjon 1.0 og før versjon 2.6, bestod versjonsnumrene av «a.b.c». Tallet «a» var hovedversjonen, tallet «b» betegnet en større revisjon av versjonen, og tallet «c» indikerte en mindre revisjon. Eksempel på denne nummereringen er 2.2.6. Hovedversjonen endret versjonsnummer i 1994 (versjon 1.0) og i 1996 (versjon 2.0). Versjon 3.0 ble lansert i 2011, men var ingen større endring i kjernen. Heller ikke versjon 4.0 (lansert i 2015), var noen fundamental endring. Endringene ble gjort kort og godt for å forhindre at tallet «b» skulle vokse å bli for stort. De mindre revisjonene bestod av patcher for sikkerhet, feilrettinger eller nye ustyrsdrivere. Testutgaver ble tildelt oddetall i sifferet «b»: 1.1.x, 1.3.x, 2.1.x, 2.3.x og 2.5.x. Etter lanseringen av versjon 2.6.0 i 2004, oppstod det flere diskusjoner om versjonsnummereringen blant utviklerne.<ref>{{cite web|last=Offline |first=Jeremy |url=http://kerneltrap.org/Linux/Kernel_Release_Numbering_Redux |title=Kernel Release Numbering Redux |publisher=KernelTrap |date=13. oktober 2001 |accessdate=30. oktober 2010 |archiveurl=https://web.archive.org/web/20101124183405/http://kerneltrap.org/Linux/Kernel_Release_Numbering_Redux |archivedate=24. november 2010 }}</ref><ref>{{cite web |mailinglist=[[LKML]] |url=https://lkml.org/lkml/2005/3/2/247 |last=Torvalds |first=Linus |title=RFD: Kernel release numbering |publisher=LKML |accessdate=30. oktober 2010}}</ref> Til slutt avgjorde Linus Torvalds og andre at en mye kortere «tidsbasert» utgivelsessyklus ville være egnet. I omkring syv år var de to første tallene «2.6», og et tredje tall ble inkrementert med hver ny versjon, som utkom etter to til tre måneder. Et fjerde tall ble noen ganger tilføyd for å spesifisere en feilretting eller en sikkerhetsoppdatering. Det var slutt på bruken av oddetall for å markere ustabile versjoner. I stedet ble utviklingsversjoner kalt utgivbare kandidater (''release candidates''), og fikk [[suffiks]]et «-rc» etterfulgt av et ordinært tall. Utgivbare kandidater er en teknisk betegnelse på noe som kommer etter [[betaversjon]]er. Et fjerde tall ble brukt ved en alvorlig feil som måtte fikses øyeblikkelig. Dette var tilfelle med koden for [[Network File System]] (NFS) i versjon 2.6.8, og versjon 2.6.8.1 rettet denne feilen. Det var ikke tilstrekkelig med andre endringer i kjernen for å legitimere en ny mindre versjon, som ville vært 2.6.9. Fra versjon 2.6.11 ble dette en ny offisiell versjonsnummerering. Det ble vanlig praksis å tilføye sikkerhetsoppdateringer og feilrettinger, og indikere dette med et fjerde tall. Den 29. mai 2011 kunngjorde Linus Torvalds<ref>{{cite web |last=Torvalds |first=Linus |url=https://lkml.org/lkml/2011/5/29/204 |title=Linux 3.0-rc1 |date=29. mai 2011 |accessdate=16. august 2011}}</ref> at versjonen etter 2.6.39 ville bli versjon 3.0. Dette var både for å hindre at versjonsnumrene ble for store og for å minnes 20-årsjubileet til Linux. Utgivelsessyklusen skulle fortsatt være tidsbasert, ved å bruke det andre tallet; 3.1 skulle følge etter 3.0 etter noen få måneder. Et tilleggstall (nå det tredje tallet) skulle indikere feilrettinger og sikkerhetsoppdateringer, som for eksempel 3.0.18. Linuxfellesskapet refererer til dette som versjonsnummeret «x.y.z». Etter versjon 3.19 ble det nye versjonsnummeret endret til 4.0.<ref>{{cite web |mailinglist=[[LKML]] |url=https://lkml.org/lkml/2013/11/3/160 |last=Torvalds |first=Linus |title=Linux 3.12 released .. and no merge window yet .. and 4.0 plans? |publisher=LKML |accessdate=22. januar 2014}}</ref>{{#tag:ref|Skiftet fra versjon 3.0 til 4.0 ble avgjort ved en avstemning i Linuxmiljøet. Linus Torvalds skrev den 12. februar 2015 ([https://plus.google.com/+LinusTorvalds/posts/jmtzzLiiejc So, I made noises some time ago ...]): ''Men la oss se hva folk mener. Fortsette med v3.20 fordi større tall er sexy, eller bare flytte til v4.0, og nullstille tallene med noe mindre?'' * ''Jeg liker store versjoner og kan ikke lyve'' * ''v4.0 fordi jeg lett blir forvirret''|group="lower-alpha"|name="versjon 4.0"}} Versjoner med suffiks som «tip», indikerer en annen [[Fork|utviklingsgrein]] av Linuxkjernen, ofte med initialene til personen som laget den. «ck» betyr for eksempel [[Con Kolivas]], «ac» står for [[Alan Cox]], etc. Noen ganger er bokstavene relatert til utviklingsgreinens fokus; «wi» (''wireless networking'') indikerer for eksempel testutgaver for [[trådløst nettverk|trådløse nettverk]]. Linuxdistribusjoner kan også ha sine egne suffikser med et annet nummereringssystem på deres stabile men eldre Linuxversjoner for næringslivet. === Varianter av Linuxkjernen === [[Fil:Lines of Code Linux Kernel.svg|thumb|Antall linjer med kode i ulike versjoner av Linuxkjernen]] Flere nåværende og tidligere varianter av Linuxkjernen sørger for tilleggsfunksjonalitet, men tilhører ikke den offisielle utviklingsgreinen. Av varianter kan nevnes [[μClinux]], [[Linux-libre]], [[Compute Node Linux]], [[Cooperative Linux]], [[Longene]], [[grsecurity]], [[INK (operativsystemkjerne)|INK]], [[L4Linux|L<sup>4</sup>Linux]], [[MkLinux]], [[RTLinux]] og [[User-mode Linux]]. Noen varianter har etterhvert blitt slått sammen med den offisielle utviklingsgreinen.<ref>{{cite web |url = https://linuxplumbersconf.org/ocw/proposals/49 |title = The state of preempt-rt |accessdate = 14. juni 2016 |website = linuxplumbersconf.org |url-status = død |archiveurl = https://web.archive.org/web/20161015044835/https://linuxplumbersconf.org/ocw/proposals/49 |archivedate = 2016-10-15 |tittel = Arkivert kopi |besøksdato = 2016-06-14 |arkivurl = https://web.archive.org/web/20170108064417/https://linuxplumbersconf.org/ocw/proposals/49 |arkivdato = 2017-01-08 |url-status = død }} {{Kilde www |url=https://linuxplumbersconf.org/ocw/proposals/49 |tittel=Arkivert kopi |besøksdato=2017-07-04 |arkiv-dato=2016-10-15 |arkiv-url=https://web.archive.org/web/20161015044835/https://linuxplumbersconf.org/ocw/proposals/49 |url-status=unfit }}</ref> μClinux var en [[fork]] av Linuxkjernen for [[mikrokontroller]]e i [[innebygd system|innebygde systemer]] uten en [[minnehåndterer]].<ref>{{cite web|url=http://www.uclinux.org/description/|title=uClinux Description|accessdate=2007-12-31|author=D. Jeff Dionne|author2=Michael Durrant|url-status=dead|archiveurl=https://web.archive.org/web/20071225125038/http://www.uclinux.org/description/|archivedate=2007-12-25|tittel=Arkivert kopi|besøksdato=2007-12-31|arkivurl=https://web.archive.org/web/20071225125038/http://www.uclinux.org/description/|arkivdato=2007-12-25|url-status=død}} {{Kilde www |url=http://www.uclinux.org/description/ |tittel=Arkivert kopi |besøksdato=2017-07-04 |arkiv-dato=2007-12-25 |arkiv-url=https://web.archive.org/web/20071225125038/http://www.uclinux.org/description/ |url-status=yes }}</ref> μClinux ble skapt som en fork av versjon 2.0.33 av Linuxkjernen, og ble gjenforent med hovedversjonen av Linuxkjernen i versjon 2.5.46. Linux-libre er en kjerne uten binary blobs. Compute Node Linux (CNL) er en avart av Linuxkjernen som kjører på [[superdatamaskin]]er fra [[Cray Inc.]] Den er basert på [[SUSE Linux Enterprise Server]].<ref name="wallace-2007a">{{cite web|last1=Wallace|first1=David|title=Compute Node Linux: Overview, Progress to Date & Roadmap|date=2007-05-04|url=http://www.ece.uc.edu/~paw/classes/ece975/sp2010/papers/wallace-07.pdf|accessdate=2015-02-16|archive-date=2015-02-16|archive-url=https://web.archive.org/web/20150216062717/http://www.ece.uc.edu/~paw/classes/ece975/sp2010/papers/wallace-07.pdf|url-status=yes}}</ref><ref name="wallace-2007b">{{cite web|last1=Wallace|first1=David|title=Compute Node Linux: New Frontiers in Compute Node Operating System|url=https://cug.org/5-publications/proceedings_attendee_lists/2007CD/S07_Proceedings/pages/Authors/Wallace-12B/Wallace-12B_paper.pdf|website=Cray User Group|accessdate=2015-02-16}}</ref> CNL er en del av [[UNICOS|Cray Linux Environment]]. I november 2016 ble CNL kjørt på verdens tredje raskeste superdatamaskin. Cooperative Linux er en tidligere distribusjon som var basert på [[Slackware]] og som kunne kjøres i parallell med Microsoft Windows på samme datamaskin. Longene er en variant som har som formål å være binærkompatibel med applikasjonsprogramvare og utstyrsdrivere som er laget for både Microsoft Windows og Linux.<ref>[http://www.longene.org/en/index.php Longene web site] {{Wayback|url=http://www.longene.org/en/index.php |date=20090225090005 }}</ref> Grsecurity er en variant som ivektlegger forbedringer på [[datasikkerhet]],<ref>{{cite web|url=https://grsecurity.net/features.php|title=Grsecurity Features|last=|first=|date=|website=|archive-url=|archive-date=|access-date=}}</ref> deriblant på [[webtjener]]e med nettverkstilgang til usikre steder. INK<ref name=EuroPar2006 /> er konstruert for å kjøre på superdatamaskinen [[Blue Gene]] fra IBM.<ref name=EuroPar2004>''Euro-Par 2004 Parallel Processing: 10th International Euro-Par Conference'' 2004, by Marco Danelutto, Marco Vanneschi and Domenico Laforenza {{ISBN|3-540-22924-8}} pages 835</ref><ref name=EuroPar2006 >''Euro-Par 2006 Parallel Processing: 12th International Euro-Par Conference'', 2006, by Wolfgang E. Nagel, Wolfgang V. Walter and Wolfgang Lehner {{ISBN|3-540-37783-2}} page</ref> L<sup>4</sup>Linux er en variant av Linuxkjernen som kan kjøre [[virtualisering|virtualisert]] på [[L4 mikrokjernefamilien]]. MkLinux («mikrokjerne Linux») er en tidligere Linuxdistribusjon som ble startet av [[Open Software Foundation]] Research Institute<ref name="LinuxonOSFMach3">{{cite web|title=Linux on the OSF Mach3 microkernel |url=http://bat8.inria.fr/~lang/hotlist/free/licence/fsf96/mklinux.html |archiveurl=https://web.archive.org/web/20120211081545/http://bat8.inria.fr/~lang/hotlist/free/licence/fsf96/mklinux.html |url-status=live |archivedate=2012-02-11 |accessdate=4. april 2013 |first1=François |last1=Barbou des Places |first2=Nick |last2=Stephen |first3=Franklin D. |last3=Reynolds |publisher=OSF Research Institute |location=Grenoble and Cambridge |date=12. januar 1996 }}</ref> og [[Apple Computer]].<ref name="LinuxonOSFMach3" /><ref name="AppleKernelProgrammingGuide">{{cite web | title=Kernel Programming Guide: Mach API Reference | url=http://developer.apple.com/documentation/Darwin/Conceptual/KernelProgramming/About/About.html#//apple_ref/doc/uid/TP30000905-CH204-CHDHDDGC | publisher=Apple, Inc | accessdate=4. april 2013 }}</ref> MkLinux var beregnet på [[Macintosh]] med PowerPC mikroprosessorer. RTLinux («real time Linux») er en mikrokjerne for [[sanntidsoperativsystem]]er som kjører Linux som en prosess med [[Forkjøpsrett (informatikk)|forkjøpsrett]]. [[Sanntidssystem]]et gjør det mulig å kontrollere [[robot]]er, datainnsamling, produksjonsystemer og andre tidssensitive instrumenter og maskiner. User-mode Linux (UML) er en variant av Linuxkjernen som gjør det mulig for flere virtuelle Linuxbaserte operativsystemer (kjent som «gjester») å kjøre som en applikasjon innenfor et Linuxsystem («vert»). == Historie == === MINIX === {{utdypende|MINIX}} [[Fil:Andrew tanenbaum froscon.jpg|thumb|200px|Professor [[Andrew S. Tanenbaum]].{{byline|Foro: Smalltown Boy|23. august 2008|}}]] [[Fil:KL Intel i386DX.jpg|thumb|16 MHz [[Intel 80386|Intel 80386 DX]]. Intel 80386 var den første arkitekturen for Linux ….{{byline|Foto: Konstantin Lanzet|13. juni 2008}}]] [[Fil:Motorola MC68HC000RC12F 1b.jpg|thumb|… Deretter fulgte [[Motorola 68000-serien]] … På bildet ser vi en 12 MHz [[Motorola 68000|Motorola MC68HC000]].{{byline|Foto:Christian Bassow|29. januar 2017}}]] [[Fil:IBM PowerPC601 PPC601FD-080-2 top.jpg|thumb|… [[PowerPC]] … På bildet ser vi en 80 MHz IBM PowerPC 601.{{byline|Foto: Morkork|29. mars 2005}}]] [[Fil:DEC Alpha 21164.jpg|thumb|… [[DEC Alpha]] … Bildet viser en 500 MHz DEC Alpha 21164 (EV56).{{byline|Foto: Appaloosa|12. november 2008}}]] [[Fil:KL Sun UltraSparc.jpg|thumb|… og [[SPARC]] … Bildet viser en 200 MHz [[UltraSPARC]].{{byline|Foro: Konstantin Lanzet|12. september 2008}}]] Da UNIX var et ungt operativsystem, var kildekoden åpent tilgjengelig. [[UNIX versjon 6]] ble for eksempel lansert i mai 1975 og kildekoden kunne fritt distribueres på universiteter. [[John Lions]] ved [[University of New South Wales]] publiserte i mai 1976 boken ''[[Lions' Commentary on UNIX 6th Edition, with Source Code]]'' som inneholdt en beskrivelse av hver eneste linje i kildekoden. [[AT&T]] oppdaget etter hvert operativsystemets kommersielle potensial, og ved lanseringen av [[UNIX System III]] (som var basert på [[UNIX versjon 7]] og [[PWB/UNIX]]) i 1982 var kildekoden blitt en forretningshemmelighet som var ulovlig å studere på universiteter. I denne situasjonen ble MINIX utviklet av [[Andrew S. Tanenbaum]] ved [[Vrije Universiteit Amsterdam]]. I 1987 publiserte han hele kildekoden med sine 12 649 linjer i en lærebok om operativsystemer.<ref>[[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</ref> MINIX 1.0 var blitt utviklet for å kjøre på Intels 16-biter mikroposessorer. MINIX 1.5 (1991) ble portert til Motorola 68000 og SPARC, mens MINIX 2.0 (1997) ble laget for 32-biter Intel 80386 og SPARC. [[MINIX 3]] som ble lansert 24. oktober 2005 støtter 32-biter Intel 80386 og ARM. Siste versjon av MINIX er 3.3.0, som ble lansert 16. september 2014. === Linux tar form === Forløperen til Linuxkjernen var MINIX, og i begynnelsen var Linuxkjernen avhengig av MINIX under oppstart. Og blant brukerne av MINIX var Linus Torvalds. I 1991 var MINIX 2.0 ennå ikke lansert, og Linus savnet et fritt operativsystem for de nye 32-biter mikroprosessorene Intel 80386 og [[Intel 80486]], som hadde vokst i popularitet. Han begynte arbeidet med å lage et nytt operativsystem for denne nye familien av mikroprosessorer. Prosjektet ble innledet av Linus den 26. august 1991 med en posting på Usenets diskusjonsgruppe <code>comp.os.minix</code>: {{Sitat|''Jeg lager et (fritt) operativsystem (bare en hobby, vil ikke bli stort og profesjonelt som gnu) for 386(486) [[IBM Personal Computer/AT|AT-kloner]]... Dette har vært i anmarsj siden april, og begynner å bli ferdig. ... Jeg har for øyeblikket portert [[bash|bash(1.08)]] og [[GCC|gcc(1.40)]]. ... Det er uten noen minix-kode, og har et filsystem med multitråder.''|Linus Torvalds<ref name=Linus_usenet>{{Språkikon|en|Engelsk}} {{Kilde www |url=http://groups.google.com/group/comp.os.minix/msg/b813d52cbc5a044b |tittel= «What would you like to see most in minix?» |utgiver= comp.os.minix |forfatter= Linus Benedict Torvalds |dato= 26. august 1991 |sitat= |besøksdato=29. oktober 2009 }}</ref>}} GNU-prosjektet hadde skapt mange komponenter i et fritt operativsystem, men mikrokjernen GNU Mach og operativsystemet GNU Hurd var ennå ikke ferdig utviklet. Avarter av [[Berkeley Software Distribution]] (BSD) var ikke frigjort fra juridiske problemstillinger, slik at de kunne distribueres som fri programvare. [[386BSD]] ble lansert 12. mars 1992,<ref name="foldoc">{{Kilde www | url=http://foldoc.org/jolix | tittel=386BSD | dato=8. juni 2006 | utgiver=Free Online Dictionary of Computing | besøksdato=17. november 2009 | språk=Engelsk}}</ref> og siste versjon ble lansert 12. november 1994.<ref>[https://web.fe.up.pt/~jmcruz/etc/unix/unix-levenez/unix_a4.pdf Open Systems], november 21, 2000, Eric Levenez 1998-2000</ref> 386BSD ble imidlertid stanset fordi den hadde brutt opphavsretten. [[NetBSD]] ble lansert i mai 1993,<ref name="netbsd-0.8">{{cite web|url=http://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.8|title=So you say you want an interim release of 386bsd?|author=Chris G. Demetriou|date=19. april 1993|message-id=1qvpc9$1e8@agate.berkeley.edu|newsgroup=comp.os.386bsd.announce|accessdate=25. februar 2018}}</ref> [[FreeBSD]] den 1. november 1993<ref>[https://web.archive.org/web/20140219215202/http://oreilly.com/catalog/opensources/book/kirkmck.html Open Sources: Voices from the Open Source Revolution], January 1999, 1-56592-582-3, Order Number: 5823</ref> og [[OpenBSD]] den 18. oktober 1995.<ref>[https://www.openbsd.org/papers/crypt-paper.pdf Cryptography in OpenBSD An Overview], Theo de Raadt, Niklas Hallqvist, Artur Grabowski, Angelos D� Keromytis, Niels Provos, fderaadt,niklas,art,angelos,provosg�openbsd�org, The OpenBSD Project </ref> Pantentene til AT&T og [[University of California, Berkeley]] tvang frem et fritt alternativ. Linus hadde ikke noe avansert operativsystem i tankene. Ei heller var det ment for allment bruk. Han ante ikke at prosjektet raskt skulle samle utviklere og brukere, der Minix-[[hacker]]e tidlig bidro med kode og idéer til Linuxkjernen. Ei heller ante han at kjernen etterhvert skulle få hjelp av flere tusen [[programvareutvikling|programvareutviklere]]. Minix bestod av en mikrokjerne, som var basert på Mach fra Carnegie Mellon University. Dette 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 operativsystemet Multics, fordi dette lettere gir et fragmentert minne enn sideveksling. I stedet valgte han samme minnemodell som IBM benyttet tre år senere i OS/2 «Warp» 3.0: {{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 [''Memory Management Unit'' eller [[minnehåndterer]]] 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 – maksimalt 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.<ref name=Linus_usenet/> }} Første versjon ble lansert den 17. september 1991 med versjonsnummeret 0.01. Datoen kan regnes som Linuxkjernens «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 operativsystemkjernen. Versjon 0.02 ble lansert den 5. oktober 1991.<ref>{{Språkikon|en|Engelsk}} {{Kilde www |url= http://groups.google.com/group/comp.os.minix/msg/2194d253268b0a1b |tittel= «Free minix-like kernel sources for 386-AT» |utgiver= comp.os.minix |forfatter= Linus Benedict Torvalds |dato= 5. oktober 1991 |sitat= |besøksdato=29. oktober 2009 }}</ref> 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.<ref>{{Språkikon|en|Engelsk}} {{Kilde www |url=http://www.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-0.12 |tittel= «Release notes for Linux v0.12» |utgiver=www.kernel.org |forfatter= Linus Benedict Torvalds |dato= februar 1992 |sitat= |besøksdato=29. oktober 2009 }}</ref> Den første postingen på Usenets diskusjonsgruppe <code>alt.os.linux</code> kom den 19. januar 1992.<ref>{{Språkikon|en|Engelsk}} {{Kilde www |url= http://groups.google.com/group/alt.os.linux/msg/c638df159fa15159 |tittel= «Troubles with partions» |utgiver= |forfatter= David D. Summers |dato= 19. januar 1992 |sitat= |besøksdato=29. oktober 2009 }}</ref> Den 31. mars 1992 ble den omdøpt til <code>comp.os.linux</code>.<ref>{{Språkikon|en|Engelsk}} {{Kilde www |url= http://groups.google.com/group/comp.os.linux/msg/81fe3618c4803d1e |tittel= «It's here!» |utgiver= |forfatter= Allan B. Clegg |dato= 31. mars 1992 |sitat= |besøksdato=29. oktober 2009 }}</ref> 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 (24. mars 1992), 0.96a (med fire revisjoner), 0.96b (med to revisjoner), 0.96c (med to revisjoner), 0.97 (1. august 1992) og 0.99. Fra 1993 til 1994 ble det lansert 15 oppdaterte versjoner av 0.99. Den 13. mars 1994 ble versjon 1.0 av Linuxkjernen endelig lansert. En fri operativsystemkjerne for Intel 80386 var en realitet, og er fødselsdatoen til den første stabile Linuxkjernen. === Versjon 1.2 === 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 Linuxkjernen til andre datamaskinarkitekturer enn Intel 80386. En variant av Linuxkjernen (versjonene 1.2 og 2.0) for Motorola 68000-serien, kalt Linux/mk68, ble utviklet uavhengig av den offisielle Linuxkjernen. Debian's Linuxdistribusjon ''Debian/mk68k'' benyttet denne porteringen av versjon 2.0.<ref>{{Språkikon|en|Engelsk}} {{Kilde www |url= http://www.linuxjournal.com/article/2090 |tittel= Linux/m68k: Linux on Motorola's 68000 Processor |utgiver= Linux Journal |forfatter= Chris Lawrence |dato= 1. mai 1997 |sitat= |besøksdato=29. oktober 2009 }}</ref> === Versjon 2.0 === 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 versjon 2.7.2 og [[GNU Binutils]] 2.6.0.14. Versjon 2.0 hadde bedre støtte for [[Datanett|nettverk]], med protokollene [[Point-to-Point Protocol]] (PPP), [[Serial Line Internet Protocol]] (SLIP), Compressed SLIP (CSLIP) og [[Parallel Line Internet Protocol]] (PLIP), såvel som DDP ([[AppleTalk]]), samt flere utstyrsdrivere. Den støttet symmetrisk flerprosessering med opptil 16 mikroprosessorer på en og samme datamaskin. Den var enda mer modulært oppbygd enn versjon 1.2, og hadde dynamisk opplastbare moduler hvor blant annet [[aksesskontrolliste]]r ble implementert. Versjon 2.0 var også den første operativsystemkjernen med innebygd støtte for [[Java (programmeringsspråk)|Java]]. === Versjon 2.2 === Versjon 2.2, den stabile utgaven av utviklingsversjonen 2.1, ble lansert den 25. januar 1999.<ref>{{Språkikon|en|Engelsk}} {{Kilde www |url= http://www.linuxtoday.com/news_story.php3?ltsn=1999-01-26-015-05-NW-SM |tittel= The Wonderful World of Linux 2.2 -- 'revised millennium penguin' version |utgiver= Linux Today |forfatter= Joseph Pranevich |dato= 26. januar 1999 |sitat= |besøksdato= 29. oktober 2009 |arkiv-dato= 2009-12-07 |arkiv-url= https://web.archive.org/web/20091207145518/http://www.linuxtoday.com/news_story.php3?ltsn=1999-01-26-015-05-NW-SM |url-status=død }}</ref> Den ble portert til Motorola 68000-serien, PowerPC, såvel som til 64-biter mikroprosessorene [[SPARC64]] og DEC Alpha. Den støttet også optimaliseringer for x86-kloner fra [[AMD]] og [[Cyrix Corporation]]. Versjon 2.2 innførte også støtte for [[Micro Channel architecture]] (MCA), [[Plug and play]]-støtte for [[PCI|PCI-kort]], støtte for [[CD-ROM]], [[DVD]], [[Iomega]] [[Zip-drive]], [[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øytaler]]e, etc.), var gjort mer modulær og enklere å oppdatere. Støtten for [[video]] var kraftig forbedret: Støtten for et voksende antall [[TV-kort]] ble utvidet gjennom [[Video4Linux]]. Det samme gjaldt støtten for [[radio]] og [[digitalkamera]]er. Støtten for [[amatørradiostasjon]]er ble utvidet ved å tilføye støtte for protokollene NetROM og [[Remote Operations Service Element protocol|ROSE]] (''Remote Operations Service Element protocol''), og forbedringer i [[AX.25]]-laget. Versjon 2.2 innførte også støtte for [[Internet Protocol|internettprotokollen]] [[IPv6]], med [[IPX/SPX|SPX]] og [[IPX]], og var den første operativsystemkjernen som var fullstendig kompatibel med [[IPv4]]. Filsystemet [[extended file system]] (ext) i de tidligere utgavene av Linuxkjernen, ble erstattet av [[ext2]]. I datanett ble det mulig å lese innholdet på datamaskiner med andre operativsystemer og deres filsystemer. Det ble innført slik støtte for [[NTFS]] ([[Windows NT]]), [[FAT]] ([[MS-DOS]]), Virtual FAT og FAT32 ([[Windows 95]] og [[Windows 98]]), [[Microsoft]]s filsystem [[Joliet (filsystem)|Joliet]] (med lange filnavn på CD-ROM), [[Hierarchical File System (Apple Macintosh)|Hierarchical File System]] ([[Apple Macintosh]]), [[Amiga Fast File System]] ([[Amiga]]), [[Unix File System]] for blant annet [[Berkeley Software Distribution]] (BSD), filsystemer for [[UNIX System V]], [[Minix file system]] ([[MINIX]]), filsystemet til [[RISC OS|Acorn RISC OS]], samt filsystemer for [[FreeBSD]], [[SunOS]] og [[Solaris (operativsystem)|Solaris]] (deriblant [[ZFS]]). I nettverk ble støtten for [[NetWare]] forbedret. To andre nyheter var støtte for [[Unicode]] og en tilpasning til UNIX98 som er en del av [[Single UNIX Specification]]. === Versjon 2.4 === Versjon 2.4, den stabile utgaven av utviklingsversjonen 2.3, ble lansert den 4. januar 2001. I [[heterogent nettverk|heterogene nettverk]] ble støtten til andre operativsystemers filformater utvidet med [[High Performance File System]] (OS/2), [[Extent File System]] ([[IRIX]]) og [[NeXTSTEP]]. Linuxkjernen støttet for første gang [[Network File System|Sun NFS 3.0]].<ref>{{Språkikon|en|Engelsk}} {{Kilde www |url= http://features.linuxtoday.com/news_story.php3?ltsn=1999-09-14-001-10-NW-KN |tittel= Wonderful World of Linux 2.4 (Quite Nearly There Edition) |utgiver= Linux Today |forfatter= Joseph Pranevich |dato= 14. september 1999 |sitat= |besøksdato= 29. oktober 2009 |arkiv-dato= 2009-11-19 |arkiv-url= https://web.archive.org/web/20091119014300/http://features.linuxtoday.com/news_story.php3?ltsn=1999-09-14-001-10-NW-KN |url-status=død }}</ref> I versjon 2.4 gjorde implementasjonen av IPv4 gjort enda mer skalerbar. I [[nettverkslaget]] ble det også tilføyd støtte for [[DECnet]], og innenfor [[OSI-modellen]]s [[datalink-laget|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. [[Integrated Drive Electronics|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 [[innebygd system|innebygde systemer]]. En generisk [[oppstart]]slaster 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 Linuxkjernen som bare kunne kompileres som ELF. === Versjon 2.6 === {{seksjonsstubb}} Kjerneserien 2.5 ble påbegynt den 23. november 2011 og kulminerte i kjerneserien 2.6 som ble lansert den 17. desember 2003. Serien ble utviklet på grunnlag av den tidligere 2.4-serien og hadde omfattende innovasjoner. For utviklere var den nye kildekoden lettere å oppdatere, mens brukerne kunne dra nytte av en revidert [[skedulering (informatikk)|prosess-skedulerer]], en revisjon av [[I/O]]-funksjoner og en lavere ventetid.<ref>Dr. Oliver Diedrich: ''[https://www.heise.de/ct/artikel/The-Next-Generation-289090.html The Next Generation – Linux 2.6: Fit für die Zukunft]'', i 24/2003 den 17.11. 2003, side 194</ref> ==== Ny prosess-skedulerer ==== I et operativsystem med fleroppgavekjøring er det et program som tildeler beregningstiden til de ulike prosessene som skal kjøre. Dette programmet er prosess-skedulereren. Siden lanseringen av versjon 2.6 har flere grunnleggende oppgaver blitt utført av skedulereren. Den ungarske utvikleren [[Ingo Molnár]] designet og implementerte en ny skedulerer for den første 2.6-kjernen, den såkalte <Math>O (1)</Math> skedulereren. Relevante algoritmer til denne skedulereren har tidskompleksiteten <math>O(1)</math>, der <math>O</math> er [[stor O-notasjon]]. Skedulereren arbeidet effektivt selv med mange prosesser og krevde svært liten beregningstid. I prinsippet benyttet den to koblede lister med prosesser, en som ønsket å kjøre og en annen som allerede kjørte. Når alle prosessene var i den andre listen, ble [[Tabell (datastruktur)|tabellene]] byttet om prosessen startet på nytt. Skedulereren var utformet slik at prosesser som brukte store mengde beregningstid ble straffet i forhold til interaktive prosesser hvis begge ønsket å kjøre samtidig. Interaktive prosesser krever som regel svært liten beregningstid, men er svært tidskritiske, for eksempel hvis brukeren ventet lenge på svar fra det [[grafisk brukergrensesnitt|grafiske brukergrensesnitter]]. <math>O(1)</math>-skedulereren benyttet [[heuristikk]] for å avgjøre om en prosess var interaktiv eller om mikroprosessoren benyttet lang tid. Den interne «klokken» i kjernen ble økt fra 100 til 1000 [[hertz]] i versjon 2.6, dvs. den kortest mulige lengde av en ''[[Forkjøpsrett (informatikk)|timeslice]]'' (den periode hvorved en prosess har lov til å kjøre) er satt til et [[millisekund]]. Interaktive prosesser drar også fordeler av dette, ettersom de også befinner seg i køen. Men fordi dette gir mer belastning på mikroprosessoren og dermed et høyere strømforbruk, bestemte man å stille klokken til 250 Hz i versjon 2.6.13. Under konfigurasjon av kjernen kan imidlertid også verdiene 100, 300 og 1000 Hz velges. I versjon 2.6.23 av Linuxkjernen, som ble lansert 9. oktober 2007, ble <math>O(1)</math>-skedulereren erstattet av en ''[[Completely Fair Scheduler]]'' (CFS), som også ble utviklet av Ingo Molnár. CFS er kontroversiell blant utviklere, da den gir skalerbarhet også for tjenere med mange prosessorkjerner. Utviklere som [[Con Kolivas]] er av den oppfatning at dette har gitt lavere ytelse på typiske stasjonære systemer.<ref>[http://www.linux-magazin.de/NEWS/Con-Kolivas-meldet-sich-mit-neuem-Scheduler-zurueck Con Kolivas meldet sich mit neuem Scheduler zurück] 2. september 2009, ''Linux-Magazin'', Marcel Hilzinger, 27. april 2014-04-27</ref> ==== Forbedrede sanntidsegenskaper med mulighet for å sette aktive systemkall på pause ==== Fra og med versjon 2.6 er de fleste [[systemkall]] [[Fleroppgavekjøring#Preemptiv multitasking|preemptive]], dvs. selv om systemet utfører oppgaver i [[Ring (CPU) | kjernemodus]], kan systemkall, spesielt de som bruker for lang tid, bli satt på pause for å kjøre andre oppgaver i [[Ring (CPU) | brukermodus]]. Systemkallet fortsetter deretter når brukermodusprosessen har brukt opp sin tilmålte tid eller hvis den skulle be om en ny [[skedulering|tidsplan]]. Ett unntak er systemkall som er [[atomisk operasjon|atomiske]], dvs. at de er garantert ikke-avbrytbare. ==== ISA "plug & play" ==== Automatisk håndtering av enheter som støtter [[Industrial Standard Architecture|ISA]] "plug & play". Tidligere var det mulig å benytte slike enheter ved hjelp av dedikert programvare for konfigurasjon (isapnp). === Versjon 3.0 === {{seksjonsstubb}} === Versjon 4.0 === {{seksjonsstubb}} == Noter == {{nummerering|lower-alpha}} <references group="lower-alpha" /> == Referanser == <references> <ref name="Bovet2005_1">[[#Bovet2005|Bovet 2005]], side 1</ref> <ref name="Bovet2005_7">[[#Bovet2005|Bovet 2005]], side 7</ref> <ref name="Corbet2012">[[#Corbet2012|Corbet 2012]]</ref> <ref name="Corbet2012_9">[[#Corbet2012|Corbet 2012]], side 9</ref> <ref name="Corbet2012_10">[[#Corbet2012|Corbet 2012]], side 10</ref> <ref name="Love2015">[[#Love2015|Love 2015]]</ref> </references> == Litteratur == * {{Kilde bok | ref=Bovet2005 | forfatter=Bovet, Daniel P.; Cesati, Marco | utgivelsesår=2005 | tittel=Understanding the Linux Kernel | forlag=O'Reilly Media, 1. utgave, november 2000, 2. utgave, desember 2002; 3. utgave, 1. november 2005 | isbn=978-0596005658 | id=ISBN 05-960056-5-2 }} * {{Kilde bok | ref=Corbet2012 | forfatter=Corbet, Jonathan; Kroah-Hartman, Greg; McPherson, Amanda | utgivelsesår=2012 | tittel=Linux Kernel Development. How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It | forlag=Linux Foundation, mars 2012 | isbn= }} * {{Kilde bok | ref=Love2015 | forfatter=Love, Robert | utgivelsesår=2015 | tittel=Linux Kernel Development | forlag=Novell Press, 12. januar 2015 | isbn=978-0-672-32720-9 | id=ISBN 0-672-32720-1 }} * {{Kilde bok | ref=Negus2015 | forfatter=Negus, Christopher | utgivelsesår=2015 | tittel=Linux Bible | forlag=Wiley, 9. utgave, 27. april 2015 | isbn=978-1118999875 | id=ISBN 11-189998-7-8 }} == Eksterne lenker == * {{Offisielle lenker}} * {{Språkikon|en}} [https://lxr.linux.no LXR – the Linux Cross Reference] * {{Språkikon|en}} [https://kernelnewbies.org Linux Kernel Newbies] – Informasjon for kjerneprogrammere * {{Språkikon|en}} [https://oldlinux.org Oldlinux.org] {{Wayback|url=https://oldlinux.org/ |date=20230906053207 }} – samling historiske kjerner * {{Språkikon|en}} [https://draconux.free.fr/os_dev/linux0.01_news.html Linux 0.01 News] {{Wayback|url=https://draconux.free.fr/os_dev/linux0.01_news.html |date=20230405150454 }} – Side for videreutvikling av 0.01-kjerner for nyere GCC-versjoner * {{Språkikon|en}} [http://www.ibm.com/developerworks/linux/library/l-linux-kernel/ Anatomy of the Linux kernel] – [[IBM]], 6. juni 2007} {{Autoritetsdata}} [[Kategori:Linuxkjernen| ]] [[Kategori:Programvare fra 1991]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Amboks
(
rediger
)
Mal:Autoritetsdata
(
vis kilde
) (beskyttet)
Mal:Byline
(
rediger
)
Mal:Catalog lookup link
(
rediger
)
Mal:Citation
(
rediger
)
Mal:Citation/core
(
rediger
)
Mal:Citation/make link
(
rediger
)
Mal:Cite book
(
rediger
)
Mal:Cite news
(
rediger
)
Mal:Cite web
(
rediger
)
Mal:Error-small
(
rediger
)
Mal:Forveksles
(
rediger
)
Mal:Grafkart
(
rediger
)
Mal:Hattnotis
(
rediger
)
Mal:ISBN
(
rediger
)
Mal:ISOtilNorskdato
(
rediger
)
Mal:Infoboks/styles.css
(
rediger
)
Mal:Infoboks operativsystem
(
rediger
)
Mal:Infoboks rad
(
rediger
)
Mal:Infoboks slutt
(
rediger
)
Mal:Infoboks start
(
rediger
)
Mal:Kilde avis
(
rediger
)
Mal:Kilde bok
(
rediger
)
Mal:Kilde www
(
rediger
)
Mal:Main other
(
rediger
)
Mal:Nummerering
(
rediger
)
Mal:Nummerering/style.css
(
rediger
)
Mal:Offisielle lenker
(
rediger
)
Mal:Overlenket
(
rediger
)
Mal:Seksjonspire
(
rediger
)
Mal:Seksjonsstubb
(
rediger
)
Mal:Sitat
(
rediger
)
Mal:Small
(
rediger
)
Mal:Språkikon
(
rediger
)
Mal:Tekstboks
(
rediger
)
Mal:Tekstboks/styles.css
(
rediger
)
Mal:Trim
(
rediger
)
Mal:Utdypende
(
rediger
)
Mal:Utdypende artikkel
(
rediger
)
Mal:Vis
(
rediger
)
Mal:Wayback
(
rediger
)
Mal:Wikidata-norsk
(
rediger
)
Mal:Yesno
(
rediger
)
Mal:Yesno-no
(
rediger
)
Mal:Yesno-yes
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:Catalog lookup link
(
rediger
)
Modul:Check isxn
(
rediger
)
Modul:Citation/CS1
(
rediger
)
Modul:Citation/CS1/COinS
(
rediger
)
Modul:Citation/CS1/Configuration
(
rediger
)
Modul:Citation/CS1/Date validation
(
rediger
)
Modul:Citation/CS1/Identifiers
(
rediger
)
Modul:Citation/CS1/Utilities
(
rediger
)
Modul:Citation/CS1/Whitelist
(
rediger
)
Modul:Citation/CS1/styles.css
(
rediger
)
Modul:Error
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:External links/conf/Offisielle lenker
(
rediger
)
Modul:Genitiv
(
rediger
)
Modul:GetParameters
(
rediger
)
Modul:Graph
(
rediger
)
Modul:ISOtilNorskdato
(
rediger
)
Modul:Message box
(
rediger
)
Modul:Message box/ambox.css
(
rediger
)
Modul:Message box/configuration
(
rediger
)
Modul:Reference score
(
rediger
)
Modul:Reference score/conf
(
rediger
)
Modul:Reference score/i18n
(
rediger
)
Modul:String2
(
rediger
)
Modul:Tjek for ukendte parametre
(
rediger
)
Modul:Wayback
(
rediger
)
Modul:Wd-norsk
(
rediger
)
Modul:Wd-norsk/i18n
(
rediger
)
Modul:WikidataBilde
(
rediger
)
Modul:WikidataDato
(
rediger
)
Modul:WikidataListe
(
rediger
)
Modul:WikidataListe/conf
(
rediger
)
Modul:Yesno
(
rediger
)
Denne siden er medlem av 5 skjulte kategorier:
Kategori:Artikkelnavn som lett kan forveksles med andre artikkelnavn
Kategori:Artikler med offisielle lenker og uten kobling til Wikidata
Kategori:Artikler med seksjoner som behøver utvidelse
Kategori:Artikler uten offisielle lenker fra Wikidata
Kategori:CS1-vedlikehold: Uheldig URL
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon