close

Linux (kärna)

Hoppa till navigering Hoppa till sökning
Linux
operativsystem
Logotyp
KNOPPIX booting.png
Laddar Linux-kärna 2.6.24.4, Knoppix 5.3.1
UtvecklarenLinus Torvalds med flera
FamiljPOSIX
Initial release1.0 (13 mars 1994 [1] )
Nuvarande release5.19.9 (15 september 2022) och 6.0-rc6 (18 september 2022)
Typ av kärnaMonolitisk
Plattformar som stödsAlpha AXP , Sun SPARC, Motorola 68000 , PowerPC , ARM , Hitachi SuperH, IBM S / 390, MIPS , HP PA-RISC, Intel IA-64, AMD x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8 / 300, NEC V850, Intel Quarz, Tensilica Xtensa, Analog Devices Blackfin [2]
Grafiska gränssnittOlika skrivbordsmiljöer som arbetar på X Window , CLI eller inbyggda system
Licens typGratis mjukvara
LicensGNU GPLv2
UtvecklingsstadiePågår (kontinuerlig utveckling)
Hemsidawww.kernel.org

Linux är en kärna , skapad 1991 av Linus Torvalds och härledd från UNIX , distribuerad under den fria mjukvarulicensen GNU GPLv2 (istället för proprietär programvara ), inklusive flera firmware under icke-fria licenser [3] [4] . Används ofta i kombination med GNU- operativsystemet , skapat av Richard Stallman , och gav liv åt Linux- operativsystemfamiljen , utbredd i olika distributioner (direkt åtkomst till kärnan av användaren/ administratören i användarläge / kärnläge erhålls genom så kallad Linux-konsol ). Utvecklingsaktiviteten, som främjas av Linux Foundation , har lett till en standardisering känd som Linux Standard Base , medan ett försök att implementera en helt gratis kärna representeras av Linux-libre .

Historik

I april 1991 började Linus Torvalds , en finländsk datavetenskapsstudent vid Helsingfors universitet , vid 21 års ålder arbeta på några enkla idéer för ett operativsystem. Det började med en monteringsprogrammerad kontextswitch en Intel 80386 - processor och en terminaldrivrutin . Vid denna tidpunkt, den 25 augusti 1991, skrev Torvalds ett inlägg [5] , av vilket en översättning rapporteras:

«Jag programmerar ett operativsystem (gratis och bara för hobby, inte menat att vara stort och professionellt som GNU) för AT 386 (486) kloner. Det har varit under förberedelse sedan april, och börjar fungera. Jag skulle vilja veta vad du gillar och ogillar med Minix, då mitt OS delvis liknar det (bland annat samma fysiska layout av filsystemet, av praktiska skäl).

Jag har konverterat bash-skalet (v.1.08) och GCC (v.1.40), och de verkar fungera. Det här betyder att jag kommer att få igång något om några månader, och jag skulle vilja veta vilka funktioner de flesta vill ha. Alla förslag är välkomna, även om jag inte kan lova dig att jag kommer att implementera det."

Linus hade börjat programmera kärnan på en MINIX -arkitektur , ett gratis operativsystem programmerat av universitetsprofessorn Andrew S. Tanenbaum , som senare kritiserade den finska studentens arbete mycket.

Efter publiceringen av detta inlägg samarbetade många med utvecklingen av projektet, och den 5 oktober 1991 släppte Linus version 0.02 av kärnan, ungefär en månad efter releasen av version 0.01, vilket inte var särskilt framgångsrikt. Han skrev, med anledning av frigivningen, följande inlägg [6] :

«Ångrar du de goda dagarna med Minix 1.1, när män var män och skrev förarna själva? Saknar du ett bra projekt och längtar efter att bryta dina ben med ett operativsystem som du kan försöka modifiera efter dina behov? Tycker du att det är frustrerande att allt fungerar på Minix? Lägger du inte fler nätter på att få ett program som fungerar underbart? Då borde det här inlägget göras just för dig

Som jag sa för en månad sedan jobbar jag på en gratisversion av en Minix-klon för AT-386-datorer. Det har äntligen nått ett stadium där det är användbart (även om det inte kan bero på vad man vill ha), och jag är för att göra källorna offentliga för massorna. Det är bara version 0.02 (en mycket liten patch är redan klar), men jag har framgångsrikt startat shell bash / GCC / GNU-make / GNU-sed / compress etc.

Källorna till detta projekt kan laddas ner nic.funet.fi i mappen / pub / Linux . Mappen innehåller även några README-filer och ett par binärfiler att köra under Linux (bash, update och gcc.) Den fullständiga kärnkällan tillhandahålls eftersom ingen kod från Minix har använts. Källan till biblioteken är endast delvis gratis och kan därför inte distribueras för närvarande. Du kan kompilera systemet som det är och det har visat sig fungera. Heh. De binära källorna (bash och gcc) kan hittas på samma plats i / pub / gnu.

UPPMÄRKSAMHET! NOTERA! Dessa källor behöver minix-386 för att kompilera (och gcc-1.40, eller, har inte testats, 1.37.1), och konfigureras korrekt för att fungera, så det är ännu inte ett fristående system för de som inte har Minix. Jag jobbar på det. Du måste också vara ganska erfaren för att ställa in det korrekt, så för de som hoppas på ett minix-386-alternativ, ignorera mig. Den riktar sig för närvarande till experter som är intresserade av operativsystem och 386 med tillgång till Minix.

Systemet kräver en AT-kompatibel hårddisk (IDE är bra) och EGA/VGA. Om du är intresserad, ladda ner README och release notes, och/eller maila mig för mer information.

Jag kan (mer eller mindre) höra dig undra "varför?". Hurd kommer att vara ute om ett år (eller två, eller nästa månad, vem vet), och jag har redan Minix. Detta är ett program för programmerare skrivet av en programmerare. Jag tyckte om att skriva den, och vissa kanske skulle vilja kolla in den och till och med redigera den för sina egna behov. Den är tillräckligt liten för att förstå, använda och redigera, och jag är nyfiken på dina kommentarer.

Jag skulle också älska att höra från alla som har skrivit något verktyg eller biblioteksfunktion för Minix. Om dina ansträngningar kan distribueras fritt (under upphovsrätt eller till och med allmän egendom), skulle jag gärna höra från dig så att jag kan lägga till dem i systemet. Jag använder Earl Chews estdio för tillfället (tack för ett trevligt och fungerande system Earl), och liknande verk kommer att vara mycket välkomna. Ditt C kommer uppenbarligen att lämnas intakt. Skicka mig en rad om du vill låta mig använda din kod."

En alt.os.linux- nyhetsgrupp startades och det första inlägget postades den 19 januari 1992. [7] Den 31 mars 1992 blev alt.os.linux comp.os.linux . [8]

Snart portades X Window System till Linux. Den första versionen av Linux som kunde köra X var 0,95 i mars 1992. Detta stora språng i versionsnumrering (från 0,1x till 0,9x) berodde på att en 1.0-version utan delar som saknades kändes väldigt nära. Denna känsla var dock för optimistisk och från 1993 till början av 1994 släpptes 15 versioner av version 0.99.

Den 14 mars 1994 släpptes Linux 1.0.0, med 176 250 rader kod. I mars 1995 släpptes Linux 1.2.0 (310 950 rader kod).

Version 2 av Linux, släppt den 9 juni 1996, följdes av andra större versioner under prefixet version 2:

  • 25 januari 1999 - Linux 2.2.0 släppt (1 800 847 rader kod).
  • 18 december 1999 - IBM stordatorpatchar 2.2.13 släpptes, vilket gjorde det möjligt för Linux att installeras på maskiner på företagsnivå.
  • 4 januari 2001 - Linux 2.4.0 släppt (3 377 902 rader kod).
  • 17 december 2003 - Linux 2.6.0 släppt (5 929 913 rader kod).
  • 9 oktober 2008 - Linux 2.6.27 släppt (9 709 868 rader kod) [9] .
  • 24 december 2008 - Linux 2.6.28 släppt (10 195 402 rader kod).
  • 20 oktober 2010 - Linux 2.6.36 släppt (13 499 457 rader kod). [10]
  • Juli 2011, för att fira 20-årsdagen av Linux födelse, beslutade Torvalds att byta till ett 2-siffrigt numreringssystem och släppte version 3.0 av kärnan. Den senaste versionen av 2.6-serien var 2.6.39.
    Den första versionen av det nya numreringssystemet som antogs - 3.0 - publicerades innehåller 14 646 952 rader kod.
  • 8 mars 2015 - Den första betaversionen av den nya 4.0 kärnversionen släpps.
  • 12 mars 2015 - Den stabila versionen av Linux 4.0 släpps och från och med nu kommer numreringen endast att innehålla ett decimaltal.

Tanenbaum-Torvalds debatt

Det faktum att Linux är en monolitisk kärna snarare än en mikrokärna var föremål för Tanenbaum- Torvalds debatt . Debatten började 1992 om Linux och kärnarkitektur i allmänhet i Usenets comp.os.minix diskussionsgrupp . [11] Tanenbaum hävdade att mikrokärnor var överlägsna monolitiska kärnor och därför var Linux föråldrat. Till skillnad från traditionella monolitiska kärnor konfigureras drivrutiner enkelt som kärnmoduler och laddas eller inte medan systemet körs. Detta argument togs upp igen den 9 maj 2006 [12] och den 12 maj 2006. [13]

Beskrivning

Image
Gentoo Linux bash session

Linux -kärnan , ett av de mest framgångsrika exemplen på programvara med öppen källkod , [14] utgör kärnan i operativsystemen för Linux-familjen eller Linux- distributioner . [15] Det skapades ursprungligen 1991 av några finska datavetenskapsstudenter [16] inklusive Linus Torvalds , gruppledaren. Därefter ökade plötsligt dess utvecklare och användare och gick med i gratisprogramprojektet och bidrog till utvecklingen av det nya operativsystemet. [17]

Utgiven, fritt nedladdningsbar [1] och modifierbar / anpassningsbar under den fria GNU GPL [18] -licensen (tillsammans med viss firmware med olika licenser), den utvecklas kontinuerligt och fritt av medarbetare från hela världen genom dess community , med utvecklingen att varje dag sker med hjälp av den relativa e-postlistan , på ett helt analogt sätt som internetprotokollen utvecklas på . Linux -källkoden är därför tillgänglig för alla och är brett anpassningsbar, så att den gör det möjligt att under kompileringsfasen utesluta kod som inte är strikt nödvändig.

Liksom alla projekt som är fri programvara utvecklas Linux-kärnan därför ständigt [19] med storleken på kärnan som växer exponentiellt, lägger till nya moduler, ny hårdvara som stöds och så vidare. Den huvudsakliga utvecklingsgrenen av Linux-kärnan föreskriver att den också innehåller några icke-fria, fördunklade eller fördunklade delar, såsom vissa drivrutiner . Linux -libre- projektet föreslår istället sig som en helt gratis variant av Linux, från vilken flera helt gratis distributioner föddes . [20]

Som "hjärtat" i ett operativsystem (kärna) tillhandahåller det alla väsentliga funktioner för systemet, i synnerhet hantering av primärminne , systemhårdvaruresurser och kringutrustning , och tilldelar dem då och då till de pågående processerna . Motsvarigheten till kärnan är skalet , som är systemets användargränssnitt, den yttersta delen. Program ber om resurser från kärnan genom systemanrop och kan inte komma åt hårdvaran direkt.

Den tar därför hand om processortid , kommunikation och minne, distribuerar dem till pågående processer enligt prioriteringar ( schemaläggning ), vilket uppnår multitasking . Den stöder därför multitasking och är multi -användare : detta tillåter olika användare (med olika privilegier) att köra olika programvaruprocesser samtidigt på samma system. Linux stöder för närvarande mycket av den hårdvara som är tillgänglig för datorer och stöder ett stort antal arkitekturer (inklusive SPARC , PowerPC , ARM och de modernaste 64-bitars processorerna ) .

Linux stöder multitasking med pre-release (i både användarläge och kärnläge ), virtuellt minne , delade bibliotek , laddning på begäran , delade kopiera-på-skriv- körbara filer , minneshantering , Internet-protokollsviten och trådning . Flexibiliteten hos denna kärna gör den lämplig för alla de nya inbäddade teknologierna och även i distribuerade datorcenter ( som Beowulf- klustret ) fram till att den integreras i vissa digitala videoinspelare och mobiltelefoner .

Image
Systemsamtalsgränssnitt och Linux Standard Base

Arkitektur

Image
Linux-kärnkarta och dess interaktiva version.

Linux är en monolitisk kärna . Även om kärnan idag kan kompileras på ett sådant sätt att den har en minimerad binär bild och drivrutiner som kan laddas från externa moduler, är den ursprungliga arkitekturen tydligt synlig: i själva verket måste alla drivrutiner ha en del exekverad i kärnläge , även de för vilka detta inte alls skulle vara nödvändigt (t.ex. filsystemdrivrutiner ).

Kärndrivrutiner och tillägg fungerar i kärnutrymmet ( ring 0 på de flesta processorer ), med full tillgång till hårdvaran, även om vissa undantag fungerar i användarutrymmet . Grafiksystemet som de flesta använder med Linux fungerar inte i kärnutrymmet. Kärnläge Preallocation tillåter enhetsdrivrutiner att förallokeras under vissa förhållanden. Den här funktionen introducerades för att korrekt hantera hårdvaruavbrott och förbättra stödet för det symmetriska multiprocessorsystemet (SMP). Förallokering förbättrar också latensen , ökar responsen och gör Linux mer lämpligt för realtidsapplikationer.

Portabilitet

Image
iPodLinux medan du startar upp kärnan.

Även om Linux inte ursprungligen utformats för att vara portabel , är Linux en av de mest bärbara operativsystemkärnorna, som kan köras på ett brett utbud av system från iPAQ (en handdator) till IBM System z9 (en stordatorserver som kan köra hundratals eller tusentals samtidiga Linux-instanser). Linux är det primära operativsystemet för IBMs Blue Gene superdatorer . Linux är operativsystemet för mer än 97 % av systemen på topp 500 -listan över superdatorer. [21] Dessutom har Linux sammanställts till många bärbara enheter som TuxPhone och Apples iPod.

Programmeringsspråk

Linux är skrivet i versionen av programmeringsspråket C som stöds av GCC- kompilatorn (som introducerade många tillägg och ändringar av standard C), tillsammans med ett antal korta avsnitt av kod skriven i Assembly -språk (GCC-syntax med "AT&T"-stil ) . Tack vare C-tilläggen som den stöder var GCC länge den enda kompilatorn som kunde kompilera Linux korrekt. 2004 hävdade Intel att de hade modifierat kärnan så att dess C-kompilator också kunde kompilera Linux. [22]

Många andra språk används på något sätt, särskilt i kärnkompileringsprocessen (metoder där en startbar bild skapas från källkoden). Dessa inkluderar Perl , Python och flera skalspråk . Vissa drivrutiner kan också skrivas på C ++ , Fortran eller andra språk, men denna praxis avråds starkt. Linux-byggsystemet stöder endast officiellt GCC som både kärnan och drivrutinskompilatorn.

Kompileringsalternativ

Linux-kärnan har konfigurerbara byggalternativ som låter dig lägga till eller ta bort specifika funktioner från kärnan under den första konstruktionen. Under denna sista fas kan vissa anpassade standardparametrar också konfigureras.

Kärnobjekt

Kärnobjekt är funktioner, variabler, rubrikfiler och makron. [23]

Kärnhuvud

Kärnrubriker är C-huvudfiler som tillhandahåller delning av vissa ABI -kärndefinitioner på låg nivå mellan kärnor och användarutrymmesapplikationer . De flesta applikationer behöver inte dessa rubriker: de är endast för direkt användning av systembibliotek, verktyg och lågnivådemoner. [24]

Kommandot "" make headers_install, när det körs i kärnans källträd, exporterar kärnhuvudfilerna i en form som lämpar sig för användning av program i användarutrymmet. [25] När de exporteras, finns de flesta kärnrubriker i katalogerna /usr/include/asmoch/usr/include/linux

Kärnpanik

Image
Kärnpanik

I Linux är en "panik" ett oåterställbart systemfel som upptäcks av kärnan i motsats till liknande fel som upptäcks i användarutrymmesläge . Kärnlägeskod har förmågan att indikera ett sådant tillstånd genom att anropa funktionen panicsom deklareras i huvudet på filen sys / system.h. Men de flesta kärnpaniker är resultatet av undantag i kärnkoden, såsom ogiltiga minnesadressreferenser . Detta är vanligtvis ett index på

  • en bugg någonstans i samtalskedjan som leder till kärnpanik;
  • hårdvaruskada, såsom en skadad RAM-cell eller aritmetiska funktionsfel i processorn orsakade av ett processorfel , en överhettad, skadad processor;
  • ett programvarufel ;
  • ett fel i parametrarna som tillhandahålls av starthanteraren , såsom initrd -avbildningen .

Binära format som stöds

Linux 1.0 stödde det binära formatet a.out och ELF , vilket förenklar skapandet av delade bibliotek (används flitigt av moderna skrivbordsmiljöer som KDE och GNOME [26] ). ELF är standardformatet som används av GCC sedan version 2.7.0 [27] så nuförtiden används a.out mycket sällan.

Linux stöder många andra binära format, inklusive binfmt misc för att associera en fil med ett program (som en tolk ) för att köra eller visa den filen.

Virtuella maskinarkitekturer

Linux-kärnan har omfattande stöd och körs på många virtuella maskinarkitekturer som både "server" och "klient" operativsystem. Virtuella maskiner emulerar vanligtvis x86-arkitekturprocessorfamiljen , även om PowerPC- eller AMD64- processorer i vissa fall också emuleras .

Versioner

Samtidigt som han utvecklar sin egen kod och integrerar modifieringar skapade av andra programmerare, fortsätter Linus Torvalds att släppa nya versioner av Linux-kärnan. Dessa kallas "vanilj"-versioner, vilket betyder att de inte har modifierats av någon annan. Många Linux-distributioner modifierar kärnan för sitt system, främst i syfte att lägga till stöd för drivrutiner eller funktioner som inte officiellt har släppts som stabila, medan andra distributioner använder en vaniljkärna.

Utvecklingsmodell

Utvecklingsmodellen för Linux 2.6 skiljer sig mycket från den för Linux 2.5. Tidigare fanns en stabil gren (2,4), där endast relativt små och säkra förändringar gjordes, och en instabil gren (2,5), där större förändringar var tillåtna. Detta innebar att användarna alltid hade en version med de senaste korrigeringarna, men fick vänta på nya tillägg från gren 2.5. Nackdelen med denna process var att den stabila versionen av kärnan med tiden inte längre stödde den senaste hårdvaran och saknade de funktioner som gradvis behövdes.

Mot slutet av 2.5.x-serien har vissa utvecklare bestämt sig för att göra några ändringar i den stabila grenen, men detta har resulterat i en ökning av problem i 2.4.x-serien av kärnan. Gren 2.5 förklarades sedan stabil och döptes om till 2.6. Istället för att öppna en instabil 2.7-gren fortsatte utvecklarna att göra stora förändringar i den stabila grenen. På så sätt har förändringarna övervakats mer exakt, genom att dela upp dem i mindre bitar, göra nya funktioner tillgängliga snabbt och utöka antalet personer som testar den senaste koden.

Den nya utvecklingsmodellen som kännetecknar 2.6 säkerställer också att det inte finns någon stabil gren för personer som bara letar efter buggfixar eller säkerhetsrelaterat men inte behöver de senaste funktionerna. Fixningarna tillämpas endast i den senaste versionen, så om en användare vill ha en version med alla kända buggar fixade får han alla de senaste funktionerna samtidigt, men riskerar (i vissa fall) att vissa saker inte fungerar längre än i tidigare version de fungerade. En partiell korrigering av detta problem nämndes tidigare (se den fjärde siffran i versionsnumret): det kännetecknar nya kärnor, men det löser inte helt vissa behov som du inte skulle ha med en stabil gren. Distributioner, som Red Hat och Debian [28] , inkluderar redan en viss typ av kärna i sina utgåvor: de flesta människor är bättre av att använda standardversionerna.

Som svar på avsaknaden av en stabil kärngren (avsedd som en gren där inga nya ändringar görs, bara korrigeringar), meddelade Adrian Bunk i december 2005 att han skulle fortsätta att släppa kärnan 2.6.16.y även när det var version 2.6.17 släppt. [29] Den planerade också att inkludera drivrutinsuppdateringar, vilket gör utvecklingen av 2.6.16-serien mycket lik utvecklingen av den gamla 2.4. [30]

Den 10 oktober 2008 släpptes stabil version 2.6.27. [31] . I februari samma år skapade utvecklarna sedan en instabil kärngren , kallad linux-next : en plats att vara värd för ändringarna, med avsikten att inkludera dem i nästa utvecklingscykel. [32]

I juli 2011 , för att fira 20-årsjubileet av Linux födelse, beslutade Torvalds att släppa version 3.0 av kärnan och byta till ett tvåsiffrigt numreringssystem. Den senaste versionen av 2.6-serien var 2.6.39.

Versionskontroll

Tidigare hanterades Linux-kärnans källkod utan användning av ett automatiskt versionskontrollsystem ( SCM), främst på grund av det faktum att Torvalds inte gillar centraliserade SCM.

2002 gick kärnutvecklingen över till BitKeeper , en SCM som uppfyllde Torvalds tekniska krav och var interoperabel, till viss del, med andra system som CVS och Subversion . Även om Torvalds och andra utvecklare fick BitKeeper gratis, orsakade det faktum att det inte var fri programvara kontroverser.

Andrew Tridgells omvända konstruktionsförsök på BitKeeper övertygade BitMover , företaget som drev BitKeeper, att avsluta sitt stöd för Linux-utvecklingsgemenskapen. Följaktligen skrev Torvalds och andra ett nytt versionskontrollsystem, kallat git ; den nya mjukvaran skrevs på några veckor, och två månader senare släpptes den första officiella versionen av Linux-kärnan med git. [33] Kort därefter blev git ett självständigt projekt, som fick stor popularitet i friprogramvarugemenskapen.

Underhåll

Linus Torvalds är ändrings- och releaseövervakare för de senaste kärnversionerna: han har delegerat underhållet av de äldre versionerna till andra programmerare. Vissa äldre versioner såsom 2.0 (officiellt föråldrad av 2.2.0-kärnan som släpptes i januari 1999) uppdateras bara när det anses nödvändigt och ändringar är mycket sällsynta.

Kernel-serien Aktuell version Handledare
2.0 2.0.40 David Weinehall [34]
2.2 2.2.27-rc2 Marc-Christian Petersen [35] (tidigare handledare Alan Cox )
2.4 2.4.37-rc2 Willy Tarreau [36] (tidigare handledare Marcelo Tosatti )
2.6.16 2.6.16.62 Adrian Bunk [37]
2.6.17+ (ofta ändringar) Linus Torvalds
2,6.x-mm (förändras snabbt) Andrew Morton

Andra välkända Linux-kärnprogrammerare är Robert Love och Ingo Molnár . [38]

Image

Versionsnumrering

Länge bestod Linux-kärnversionen av tre nummer, men nyligen har detta system ändrats och nu består versionen av fyra siffror, i formen "ABC [.D]", till exempel 2.2.1, 2.4.13 , eller 2.6.12.3;

  • "A" indikerar versionen av kärnan, som modifieras mycket sällan och endast när radikala förändringar sker i koden (fram till 2008 hände detta bara två gånger, 1994, med introduktionen av version 1.0, och 1996 med version 2.0 ) eller av minnesskäl (version 3, 2011, för 20 år av Linux-kärnan);
  • "B" indikerar den "stora" revisionen av kärnan:
    • före 2.6.x-serien indikerade jämna nummer (som 1.2, 2.4 eller 2.6) en stabil gren och udda nummer (som 1.1 eller 2.5) indikerade utvecklingsgrenar, där nya funktioner och drivrutiner experimenterades med tills de ansågs lämplig att ingå i stallgrenen;
    • utgående från 2.6.x-serien förlorar differentieringen mellan jämna och udda tal betydelse, eftersom utvecklingen av nya egenskaper sker inom samma gren, för att få en mer linjär utveckling;
  • "C" indikerar den "mindre" revisionen av kärnan: i det gamla numreringsschemat ökade detta antal eftersom säkerhetsuppdateringar, buggfixar, nya funktioner eller nya drivrutiner implementerades i kärnan; enligt den nuvarande modellen ändras detta nummer endast när nya drivrutiner eller andra funktioner introduceras, eftersom mindre korrigeringar räknas från numret som är markerat med 'D';
  • Användningen av "D" började när ett allvarligt problem, som kräver omedelbar korrigering, hittades i NFS -koden för 2.6.8. Det behövdes inga ändringar för att motivera släppandet av en mindre revision (som skulle bli version 2.6.9), så 2.6.8.1 släpptes, med den enda korrigeringen av denna bugg. Från 2.6.11 antogs denna modell som det nya officiella paradigmet. Fixar och säkerhetskorrigeringar räknas nu så här, med den fjärde siffran, medan om det blir mer omfattande ändringar används den tredje siffran. Siffran 'D' är också associerad med antalet gånger som kompilatorn har byggt kärnan, och kallas för "byggnumret".

Ibland kan även andra bokstäver hittas efter versionen, såsom 'rc1' eller 'mm2'; 'rc' är en kandidatversion för antagande som stabil och indikerar en inofficiell release. Andra bokstäver, å andra sidan, är ofta (men inte alltid) initialerna för en person: detta signalerar en gaffel av kärnan av denna person. Till exempel, "ck" står för Con Kolivas , "ac" för Alan Cox , medan "mm" står för Andrew Morton . Ibland är bokstäverna relaterade till kärnans kärna. Till exempel indikerar 'wl' en testversion för trådlösa nätverk.

Historiska versioner

Den första kärnversionen var 0.01. Detta följdes av 0.02, 0.03, 0.10, 0.11, 0.12 (den första versionen släpptes under GNU General Public License ), 0.95, 0.96, 0.97, 0.98, 0.99 och 1.0. [39] Från version 0.95 till dessa har flera patchar släppts mellan versionerna.

Stabil versionshistorik

Det har funnits två stabila huvudversioner av Linux 1. x -kärnan : 1.0 och 1.2. Version 1.0 släpptes den 14 mars 1994 [40] Denna version av Linux-kärnan var endast kompatibel med i386- system med en processor . Senare fanns det oro för portabilitet också, och så version 1.2 (släppt 7 mars 1995 [41] ) inkorporerade stöd för system baserade på DEC Alpha , SPARC och MIPS- arkitekturer . Detta var den sista stabila versionen som släpptes i 1. x -serien av Linuxkärnan.

Version 2. x av Linux-kärnan har sett ett stort antal förändringar, särskilt i 2.6-serien och hur den utvecklas, underhålls och släpps. Versioner 2.0, 2.2 och 2.4 byggdes med det gamla utvecklingssystemet där var och en av kärnorna baserades på den stabila versionen av den föregående. Version 2.0 släpptes den 9 juni 1996 [42] . Det fanns 41 släpp i den här serien. Huvudfunktionen i 2.0-kärnan var stöd för SMP (det vill säga stöd för flera processorer på ett enda system) och stöd för flera typer av processorer.

Version 2.2 (släppt 26 januari 1999 [43] ) tog bort det globala spinlocket , gav bättre stöd för symmetrisk multiprocessing och lade till stöd för m68k- och PowerPC-arkitekturerna samt lade till nya filsystem (inklusive skrivskyddat stöd för Microsoft NTFS -filsystemet ). [44] Utvecklingen av 2.4. x ändrade sig lite. I den här serien gjordes faktiskt nya funktioner tillgängliga under hela utvecklingen av själva serien. Version 2.4.0, släppt 4 januari 2001, [45] innehöll stöd för ISA Plug and play , USB och PC Card . [46] Det inkluderade också stöd för Hewlett - Packard PA-RISC-processorer . Under utvecklingen av 2.4. x andra funktioner har lagts till, inklusive: Bluetooth- stöd , Logical Volume Manager (LVM) version 1, RAID -stöd , InterMezzo FS och ext3 FS .

Med ankomsten av den 2.6. x i Linux-kärnan ändrades numreringssystemet så att det kunde finnas fyra siffror i kärnans versionsnummer, vilket gav formatet 2.6. x . y (där. y är valfritt). Nya funktioner läggs nu till mellan releaser x och releaser, y -versioner är vanligtvis reserverade för buggfixar. Version 2.6.0 släpptes den 18 december 2003. [47] . Bland ändringarna som gjorts i den här serien är: integrationen av µClinux i huvudkärnkällorna, stöd för PAE , stöd för flera nya CPU- linjer , integration av ALSA i huvudkärnkällorna, stöd för ett antal användare upp till 2 32 (2 16 i tidigare versioner), stöd för upp till 2 30 processer (2 15 i tidigare versioner), betydande ökning av antalet enhetstyper och antalet enheter för varje typ, förbättrat 64-bitars processorstöd, filsystemstöd upp till 16 terabyte , in-kernel preemption , Native POSIX Thread Library-stöd, och Linux och SELinux kärnkällintegrering , Infiniband- stöd och mycket mer annat. Lika viktigt är tillägget av olika filsystem under de olika versionerna av 2.6-serien. x : FUSE , JFS , XFS , ext4 och andra [48] .

I juli 2011, för att fira 20-årsjubileet av Linux födelse, beslutade Torvalds att byta till ett tvåsiffrigt numreringssystem och släppte version 3.0 av kärnan. Den senaste versionen av 2.6-serien var 2.6.39.

Den 12 mars 2015 släpps den stabila versionen av Linux 4.0.

Beräknad utvecklingskostnad

Kostnaden för att omutveckla 2.6.0-versionen av Linux-kärnan ur ett proprietärt perspektiv uppskattades 2004 till 612 miljoner dollar (467 miljoner euro) med COCOMOs manmånadsuppskattningsmodell . [49]

År 2006 uppskattade en EU - finansierad studie att utveckling av kärna 2.6.8 eller högre från grunden (ur ett proprietärt perspektiv) skulle kosta 882 miljoner euro. [50]

Juridiska aspekter

Varumärke

Linux är ett registrerat varumärke som tillhör Linus Torvalds i USA och andra länder. Detta är resultatet av en incident där William Della Croce Jr., som inte var involverad i utvecklingen av Linux-projektet, registrerade namnet och därefter ansökte om en royalty för dess användning. Flera Linux-anhängare sökte juridisk rådgivning och lämnade in en stämningsansökan mot Della Croce, som 1998 gick med på att överlåta varumärket till Torvalds.

Licensvillkor

Till en början släppte Torvalds Linux med en licens som förbjöd kommersiell exploatering. Men det gav snart plats för GNU General Public License (GPL) från version 0.12. Denna licens tillåter distribution och försäljning av modifierade eller omodifierade versioner av Linux förutsatt att de släpps under samma licens och att du även tillhandahåller motsvarande källkod.

Torvalds beskrev att anta GPL som "det bästa jag någonsin gjort." [51]

GPL version 3

För närvarande använder Linux version 2 av GPL -licensen , utan alternativ (till skillnad från många program som släpps under GPL-licensen) som tillåter användning av en mer avancerad version, och det finns vissa kontroverser om hur lätt senare versioner kan användas. 3 (och hur önskvärt det är). [52] Torvalds själv specificerade under releasen av version 2.4.0 att hans kod endast använder version 2 av licensen. [53] Emellertid anger villkoren för GPL-licensen att om ingen version anges så kan vilken som helst användas, och Alan Cox påpekade att endast ett fåtal bidragsgivare till Linux har specificerat en viss version av GPL-licensen. . [54] En bloggare drog slutsatsen att cirka 40 % av Linux-koden är specifikt licensierad under "GPL2 eller högre"-licensen, och ytterligare cirka 10% under "GPL"-licensen (med ospecificerad version), som tillsammans utgör . ungefär hälften av kärnan. I september 2006 indikerade en undersökning av 29 nyckelutvecklare att 28 av dem föredrog GPLv2 framför GPLv3 då i utkasttillstånd. Torvalds kommenterade, "Jag tror att ett stort antal utomstående trodde att jag var den konstiga eftersom jag offentligt har sagt att jag inte är ett stort fan av GPLv3." [55]

Laddbara kärnmoduler och firmware

Det är oklart om laddningsbara kärnmoduler (LKM) ska betraktas som härledda verk enligt upphovsrättslagstiftningen och därmed faller inom villkoren för GPL-licensen. Torvalds hävdade att LKM:er, som endast använder en begränsad delmängd av "offentliga" kärngränssnitt, ibland inte kan betraktas som härledda verk, och det är därför möjligt att ha vissa drivrutiner som endast är binära och andra LKM:er som inte använder GPL-licensen. Inte alla som bidrar till utvecklingen av Linux håller dock med om denna tolkning, och till och med Torvalds själv medger att många LKM är helt klart härledda verk, och skrev faktiskt att "Kärnmoduler ÄR härledda verk 'som standard'".

Å andra sidan sa Torvalds också att "Ett grått område är något som liknar en drivrutin som ursprungligen skrevs för ett annat operativsystem (dvs. uppenbarligen inte ett härledningsverk från Linux ursprungligen). [...] DET är ett område grått, och _det_ är område där jag personligen tror att vissa moduler kanske inte betraktas som härledda verk bara för att de inte var designade för Linux och inte är beroende av något speciellt Linux-beteende." [56] Särskilt proprietära grafikdrivrutiner står i centrum för debatten. I slutändan kommer dessa frågor sannolikt endast att lösas av en domstol.

En licensieringsfråga är Linuxs användning av "binär" firmware för att stödja vissa hårdvaruenheter. Richard Stallman hävdar att denna programvara gör Linux delvis oöppnad programvara, och att distribution av Linux också kan bryta mot GPL-licensen (som kräver att all källkod finns). [57]

Som svar på detta startade Free Software Foundation Latin America (FSFLA) ett projekt, kallat Linux-libre , för att skapa en helt gratis kärna, utan proprietära moduler, för att användas i helt gratis distributioner, såsom Trisquel GNU / Linux [ 58 ] [59] .

SCO-tvist

I mars 2003 lämnade SCO-gruppen in en stämningsansökan mot IBM och anklagade den för att ha gjort intrång i upphovsrätten till Unix -källkoden genom att infoga delar av den koden i Linux. Dessutom skickade SCO brev till flera företag som varnade dem för att använda Linux utan en SCO-licens kan vara ett brott mot upphovsrättslagen, och berättade för pressen att de skulle stämma enskilda Linux-användare. IBM lovade då att försvara sina Linux-kunder. Denna rättstvist genererade en serie stämningar inlämnade av SCO mot Novell , Daimler (delvis återkallade i juli 2004), AutoZone och repressalier inlämnade av Red Hat och andra mot SCO.

I början av 2007 tillhandahöll SCO specifika detaljer om det påstådda upphovsrättsintrånget. Till skillnad från tidigare påståenden om att SCO äger 1 miljon rader kod, specificerade de bara 326 rader kod, varav de flesta inte var upphovsrättsskyddade. [60] I augusti 2007 beslutade domstolen i Novell-fallet till att börja med att SCO inte ens ägde upphovsrätten till Unix. [61]

Anteckningar

  1. ^ Linux : The 0.01 Release , på kerneltrap.com . Hämtad 9 januari 2011 (arkiverad från originalet 10 juni 2011) .
  2. ^ Plattformar som stöds av Linux- kärnan , på kernel.org . Hämtad 23 juli 2010 .
  3. ^ KOPIERA , på kernel.org . _ _ Hämtad 24 mars 2016 .
  4. ^ Index: kernel / git / stable / linux-stable.git , på git.kernel.org ( arkiverat från originalet den 8 december 2016 ) .
  5. ^ Linus Torvalds , Vad skulle du helst vilja se i minix ? , på comp.os.minix , 26 augusti 1991. Hämtad 25 december 2008 .
  6. ^ Linus Torvalds , Gratis minixliknande kärnkällor för 386-AT , comp.os.minix , 5 oktober 1991. Hämtad 25 december 2008 .
  7. ^ David W Summers, Troubles with Partitions , på alt.os.linux / comp.os.minix , 19 januari 1992. Hämtad 24 december 2008 ( arkiverad 24 december 2008) .
  8. ^ Alan B Clegg, det är här! , på comp.os.linux , 31 mars 1992. Hämtad 24 december 2008 ( arkiverad 24 december 2008) .
  9. ^ " Linux-kärndata ."
  10. ^ " Linux-kärndata ."
  11. ^ Andrew Stuart Tanenbaum, LINUX is obsolete , comp.os.minix , 29 januari 1992. Hämtad 25 december 2008 (arkiverad från originalet 25 december 2008) .
  12. ^ Linus Torvalds, Hybrid kärna, inte NT , på realworldtech.com , 9 maj 2006. Hämtad 6 januari 2007 .
  13. ^ Andy Tanenbaum, Tanenbaum-Torvalds Debatt: Del II , på cs.vu.nl , 12 maj 2006. Hämtad 6 januari 2007 .
  14. ^ Linus Torvalds, Re: GPLv3 Position Statement , lkml.org , 25 september 2006.
  15. ^ README -fil , på git.kernel.org . _ Hämtad 12 november 2010 (arkiverad från originalet 24 juli 2012) .
  16. ^ Marjorie Richardso, Intervju: Linus Torvalds , linuxjournal.com , Linux Journal, 1 november 1999. Hämtad 20 augusti 2009 .
  17. ^ Sam Williams, kapitel 9: GNU General Public License , på Free as in Freedom , O'Reilly Media. Hämtad 16 februari 2011 .
  18. ^ FilKOPIERING , git.kernel.org . _ _ Hämtad 16 februari 2011 (arkiverad från originalet 21 december 2012) .
  19. ^ Nya utgåvor kan hittas på kernel.org
  20. ^ GNU Linux-libre, gratis som i Freedo , Free Software Foundation Latin America . Hämtad 21 januari 2015 .
    "Linux, kärnan som utvecklats och distribueras av Linus Torvalds et al, innehåller icke-fri programvara, dvs programvara som inte respekterar dina väsentliga friheter, och den förmår dig att installera ytterligare icke-fri programvara som den inte innehåller."
  21. ^ Operativsystem Familj / Linux | TOP500 superdatorwebbplatser , på top500.org , Topp 500 superdatorwebbplatser, november 2014.
  22. ^ Linux kärna patch för Intel Compiler Arkiverad 22 juli 2011 på Internet Archive .
  23. ^ Linux-enhetsdrivrutiner, 2nd Edition: Kapitel 2: Bygga och köra moduler
  24. ^ Gmane Loom
  25. ^ Linux Kernel Documentation :: make: headers_install.txt
  26. ^ ldd /usr/bin/kwin listar 40 delade bibliotek (kwin 3.5.5a); ldd /usr/bin/gnome-panellistor 68 (gnome-panel 2.14.3).
  27. ^ Daniel Barlow, The Linux ELF HOWTO , på ibiblio.org , 13 september 1995. Hämtad 19 juli 2007 (arkiverad från originalet 12 oktober 2007) .
  28. ^ ( ENIT ) TDAH_FUIT (TDAH_, kort sagt) The_Debian_Administrator's_Handbook_free_unofficial_Italian_translation , på Gratis inofficiell italiensk översättning - FUIT på Github.com . Hämtad 2 maj 2022 .
  29. ^ Linux: 2.6.16.y lever vidare | KernelTrap
  30. ^ Linux: Underhålla ett 2.6.16.y-träd | KernelTrap
  31. ^ Linuxkärnarkiven
  32. ^ linux-next och patchhanteringsprocess [LWN.net]
  33. ^ Linux Kernel Mailing List, Linux 2.6.12 , på marc.info , 17 juni 2005.
  34. ^ David Weinehall, [ANMÄLLER] Linux-kärna 2.0.40 aka The Moss-covered Tortoise, på kerneltrap.org 8 februari 2004 (arkiverad från originalet 30 maj 2012) .
  35. ^ Marc-Christian Petersen, Linux 2.2.27-rc2 , på kerneltrap.org , 13 januari 2005 (arkiverad från originalet den 30 maj 2012) .
  36. ^ Willy Tarreau, Linux 2.4.37-rc1 , marc.info , 7 september 2008.
  37. ^ Adrian Bunk, Linux 2.6.16.62 , linux-kernel , marc.info , 21 juli 2008.
  38. ^ Se filen Linux MAINTAINERS för den fullständiga listan .
  39. ^ Linux Kernel Archives - Volym 1 Arkiverad 11 maj 2005 på Archive.is . (Riley Williams)
  40. ^ Kernel 1.0 Source Code Release , på kernel.org . Hämtad 2008-10-27 .
  41. ^ Kernel 1.2 Source Code Release , på kernel.org . Hämtad 2008-10-27 .
  42. ^ Kernel 2.0 . _ x Källkodsversioner , på kernel.org . Hämtad 2008-10-27 .
  43. ^ Kärna 2.2 . _ x Källkodsversioner , på kernel.org . Hämtad 2008-10-27 .
  44. ^ The Wonderful World of Linux 2.2 , på kniggit.net . Hämtad 27 oktober 2008 (arkiverad från originalet 18 november 2005) .
  45. ^ Kärna 2.4 . _ x Källkodsversioner , på kernel.org . Hämtad 2008-10-27 .
  46. ^ The Wonderful World of Linux 2.4 , på kniggit.net . Hämtad 27 oktober 2008 (arkiverad från originalet 18 november 2005) .
  47. ^ Kärna 2.6 . _ x . y Källkodsversioner , på kernel.org . Hämtad 2008-10-27 .
  48. ^ Mer information om historiken för 2.6-kärnserien finns i ChangeLog som finns i 2.6-kärnseriens källkodsutgivningsområde
  49. ^ David A. Wheeler, Linuxkärna 2.6: Det är värt mer! , på dwheeler.com , 12 oktober 2004. Hämtad 28 juni 2016 .
  50. ^ Ekonomisk inverkan av FLOSS på innovation och konkurrenskraft inom EU:s IKT-sektor ( PDF ) , på ec.europa.eu , 20 november 2006 , 50-51 . Hämtad 28 juni 2016 (Arkiverad från originalet 6 juli 2015) .
  51. ^ Hiroo Yamagata, The Pragmatist of Free Software , på hotwired.goo.ne.jp , HotWired, 1997. Hämtad 21 februari 2007 (arkiverad från originalet den 10 februari 2007) .
  52. ^ Jonathan Corbet, GPLv3 and the kernel , på lwn.net , LWN.net , 31 januari 2006. Hämtad 21 februari 2007 .
  53. ^ Linus Torvalds, Linux-2.4.0-test8 , på Linux-kärnans e-postlistarkiv , uwsg.iu.edu , Unix Systems Support Group vid Indiana University , 8 september 2000. Hämtad 21 februari 2007 (arkiverad från den ursprungliga webbadressen den 27 augusti 2006) .
  54. ^ Alan Cox, Re: GPL V3 och Linux , på Linux-kärnans e-postlistaarkiv , lwn.net , 20 januari 2006. Hämtad 21 februari 2007 .
  55. ^ Stephen Shankland, Top Linux-programmerare panorerar GPL 3 , på news.com.com , News.com , 25 september 2006. Hämtad 21 februari 2007 .
  56. ^ Re: Linux GPL och binär modul undantagsklausul? Arkiverad 27 september 2006 på Internet Archive .
  57. ^ Richard Stallman, Linux, GNU och frihet , på gnu.org , Free Software Foundation , 11 oktober 2006. Hämtad 21 februari 2007 .
  58. ^ Linux - libre - projekt _, på linux-libre.fsfla.org , https://www.fsfla.org/ . Hämtad 6 april 2010 .
  59. ^ Trisquel GNU/Linux - libre , på trisquel.info . Hämtad 6 april 2010 .
  60. ^ Rapport från tingshuset 7 mars , på groklaw.net . Hämtad 1 december 2008 (arkiverad från originalet 7 augusti 2011) . Groklaw artikel
  61. ^ Domstolsregler: Novell äger UNIX- och UnixWare-upphovsrätten , på groklaw.net . Groklaw artikel

Bibliografi

Relaterade artiklar

Andra projekt

Externa länkar