Hvis du har været Linux-bruger i lang tid, ville du vide, at Linux-distributioner har unikke versioner, og hver version har et specifikt kodenavn. Linux-kernen har også forskellige versionsnumre, som fungerer som en identifikator for den serie, kernen tilhører. Der er dog forskel på, hvordan kerneversioner blev dannet tidligere, og hvordan Linus Torvalds navngiver dem nu.
I sidste ende vil du være mere fortrolig med Linux-kerneversionsskemaet og vil føle dig mere behagelig at læse kerneversionsnumre og identificere de forskellige funktioner forbundet med en specifik udgivelse.
Den traditionelle Linux-kerneversionering
Da Linus først begyndte at udvikle kernen, bestod det anvendte versionssystem ganske enkelt af et stigende variabelskema, der startede med nul (0.x). Til at begynde med var Linus den eneste, der arbejdede på projektet, og dette versionssystem opfyldte behovet for at dokumentere og distribuere nye kerneudgivelser.
Her er nogle af de kerneudgivelser, der fulgte dette navneskema:
Senere, da flere udviklere begyndte at bidrage til projektet og antallet af revisioner og patches steg betydeligt, blev det besluttet, at denne versioneringsordning ikke var egnet til software som f.eks kerne. Og fra og med version 1.0, adopterede Linus et nyt skema med et par ekstra variabler.
Introduktion af et mere beskrivende versionssystem
I 1994, med udgivelsen af Linux-kernen 1.00, begyndte Linus at bruge et nyt versionssystem, der brugte tre variabler i syntaksen: "a.b.c". Disse variabler (a, b og c) repræsenterer henholdsvis hovedudgivelsen, mindre udgivelse og revisionsnummeret for den specifikke kerneudgivelse.
Tag Linux-kerne 1.1.95 som et eksempel. Du kan afkode den som den første større udgivelse, første mindre udgivelse og 95. revision.
På det tidspunkt betegnede selv mindre versionsnumre stabile kerneudgivelser, mens ulige repræsenterede udviklingsudgivelser. Det var vigtigt at have separate grene, så udviklere kunne tilføje og teste nye funktioner i kernen uden at påvirke den stabile gren.
Kerneludviklere tilføjer og forbedrer nye funktioner i udviklingsgrenen, indtil den bliver stabil nok til at blive frigivet som en LTS-kerne. LTS-kernen 3.2 blev udviklet ved at stabilisere de nye funktioner i version 3.1, og tilsvarende en ny udviklingskerne 3.3 forgrenede sig fra 3.2 for at gøre plads til nye funktioner, der derefter ville blive introduceret i Linux 3.4.
Startende fra Linux-kerne 2.4, betegnede en fjerde variabel i kernenavnet patch-udgivelserne. Du kan sige, at version 2.4.37.10 er den tiende patch-udgivelse til kerne 2.4.37.
En patch-udgivelse betyder ikke antallet af problemer, der er patchet i en kerneudgivelse. I stedet tæller den antallet af gange, en opdateret kerne blev frigivet efter at have patchet de fundne problemer.
Indtil Linux 2.6 blev dette versionssystem brugt, og det var effektivt til at skelne en specifik version fra andre. Tilføjelse af revisionstal og patch-udgivelser i versionsnummeret var beskrivende, men det betød at have længere og mere komplekse kerneversioner. Og endnu en gang var der behov for en ny og bedre ordning.
Hvordan hedder Linux Kernel-versioner nu?
Med Linux version 3.0 droppede Linus den fjerde variabel fra versionsnummeret. Nu er kerneversionen dannet i henhold til syntaksen: a.b.c, hvor a, b og c er henholdsvis større udgivelser, mindre udgivelser og revisionstal. Dette versioneringsskema ligner det, der blev brugt mellem 1.0 og 2.4 kerneudgivelserne.
På grund af fremskridt i versionskontrolsystemer, kunne bidragydere nu problemfrit arbejde på stabile filialer og tilføje nye funktioner uden ved et uheld at ødelægge de allerede fungerende, stabile udgivelser. Derfor er brugen af lige og ulige mindre versionsnumre til stabile og produktionsgrene af kerne blev overflødig efter introduktionen af kerneversion 4.0, og den første LTS-udgivelse (4.1) i det 4.x serien havde et ulige mindre versionsnummer.
Du kan også bemærke nogle tegn i slutningen af versionsnummeret, f.eks rcX. Gennemgangskandidater (eller "rc" for kort) er preview-udgivelser og pre-patch-versioner af kernen, som udviklerne skal reparere for at fjerne fejl og andre problemer. Disse er en erstatning for de udviklingsudgivelser, der tidligere var angivet med et ulige mindre versionsnummer.
Selvom disse udgivelser er specifikt forbeholdt kerneudviklere, så de kan løse de rapporterede problemer og implementere nye funktioner, kan du også download og test disse kernegennemgangskandidater, hvis du vil, men det anbefales generelt ikke, da det er her det meste af udviklingen sker. Den seneste forhåndsvisning af kernen i skrivende stund er 5.19-rc6.
For at oprette nye versioner øges den foregående variabel, når værdien af en variabel når et bestemt tal. For eksempel opdateres hovedversionen til det næste ciffer, når antallet af mindre versioner nærmer sig 20.
Linus nævnt i hans 5.0-kerneudviklingsmail at han simpelthen opdaterede det store nummer til fem, fordi antallet af mindre udgivelser blev for stort til at tælle på fingre og tæer (20!). Tilsvarende ifølge kernel.org, øges hovedversionsnummeret, når tallet efter den første prik begynder at se "for stort ud". Den endelige kerneversion i 3.x serie var 3.19 og den sidste store 4.x kerneserien var 4.20, som derefter blev bumpet op til 5.0.
Siden version 3.0, Linux-kernen har fulgt dette versionsskema, og det har vist sig at være effektivt lige så længe som tre store kerneudgivelser (versioner 3.x, 4.x, og 5.x).
Identifikation af en Linux-kerneudgivelse ved hjælp af versionsnumre
I betragtning af det store antal Linux-kerneversioner, der er frigivet, er der behov for et ordentligt system til at identificere og differentiere en specifik version fra de andre. Med det nye kerneversionsskema kan kerneversioner nu effektivt identificeres og sammenlignes, og det er nemt at vide, hvilken kerneversion der er den seneste, og hvilken der blev udgivet tidligere.
Hvis du vil tjekke den Linux-kerneversion, der i øjeblikket er installeret på dit system, kan du gøre det ved at bruge uname, en Linux-kommando, der lader dig liste systemrelaterede oplysninger. Afhængigt af den distro, du kører, kan versionsnummeret, der vises af uname, være anderledes end de faktiske Linux-kerneversioner.