pienoiskuva|300px|Linux-ydin on tuettu useilla alustoilla.
Linux on alun perin suomalaisen Linus Torvaldsin kehittämä käyttöjärjestelmäydin, joka on lisensoitu GPLv2-lisenssillä. Ydin eli kerneli () on tietokoneen käyttöjärjestelmän alin osa (lähimpänä tietokonelaitteistoa), joka mahdollistaa kaikkien muiden tietokoneen ohjelmien toiminnan. Torvalds julkaisi ensimmäisen Linuxin version vuonna 1991.
Arkikielessä Linuxilla tarkoitetaan usein kokonaista käyttöjärjestelmää, jonka ytimenä Linux toimii, eli Linux-jakelua, joka sisältää ytimen lisäksi muun muassa erilaisia kirjastoja, järjestelmäohjelmia, käyttöliittymiä ja sovellusohjelmia valmiiksi paketoituna loppukäyttäjää varten.
Historiaa
Linus Torvalds aloitti Linuxin kehittämisen opiskellessaan Helsingin yliopistossa tietojenkäsittelytiedettä. Torvalds osti ensimmäisen IBM PC:nsä vuonna 1991 hintojen laskettua riittävästi, mutta oli tyytymätön sen MS-DOS -käyttöjärjestelmään. Torvaldsia itseään kiinnosti enemmän Unix, jota hän oli käyttänyt yliopiston tietokoneilla. Vuonna 1990 Torvalds osallistui lyhyelle Unix-kurssille yliopistossa, johon oli juuri saatu MicroVAX Ultrix-käyttöjärjestelmällä. Aiemmin Torvaldsilla oli ollut Commodore VIC-20 ja Sinclair QL. Yksi kurssikirjoista oli Andrew Tanenbaumin Operating Systems: Design and Implementation, jossa kuvattiin Unixin kaltaista Minixiä.
Torvaldsin alkuperäinen tavoite ei ollut käyttöjärjestelmän ytimen kirjoittaminen vaan tutustuminen ostamansa tietokoneen ominaisuuksiin. Torvalds aloitti kokeilut kahden vuoroaan vaihtavan tehtävän käsittelyllä. Kokeilujen myötä hän havaitsi koossa olevan melkein riittävästi ytimeen, jolla voisi lukea uutisryhmiä yliopiston palvelimilta. Muistinhallinnan, prosessien vuorontamisen ja laite-I/O:n kokeilujen myötä Torvalds kehitti käyttöjärjestelmän ytimen. Torvalds kehitti pääte-emulaattoriaan ja lisäsi siihen ajurin levyä varten ja tuen Minixin tiedostojärjestelmälle.
Vuonna 1991 Torvalds kyseli uutisryhmissä POSIX-standardin dokumentteja, jotka olivat tuolloin kalliita. POSIX mahdollisti lähdekooditason yhteensopivuuden GNU- ja BSD-projektien ohjelmien kanssa. Tuohon aikaan SunOS oli de facto -standardi jossakin BSD:n ja System V:n välillä.
Torvalds toteutti assemblylla ja C-ohjelmointikielellä käyttöjärjestelmän ytimen, joka hänen omien sanojensa mukaan käytti laajalti GCC-kääntäjän ominaisuuksia. Työ eteni hitaasti eikä hän kertonut hankkeestaan vielä muille. Torvaldsin alkuperäisenä tarkoituksena ei ollut luoda käyttöjärjestelmää koko maailmalle, vaan ainoastaan omiin tarpeisiinsa. Jos hän olisi jatkanut yksin, Linuxia olisi tuskin julkaistu, sillä sen kehittäminen olisi pysähtynyt Torvaldsin omien tarpeiden täytyttyä. Torvalds julkisti projektinsa 25. elokuuta 1991 kirjoittamalla comp.os.minix-uutisryhmään, jota pidetään Linuxin syntymäpäivänä. Versio 0.01 valmistui 17. syyskuuta samana vuotena, joka oli ensimmäinen lähdekoodijulkaisu. Ensimmäinen julkaisu oli Torvaldsin kirjoittama paitsi vsprintf-rutiini, joka oli kirjoitettu yhdessä Lars Wirzeniusin kanssa. Torvalds oli itse tehnyt käännökset bash-komentorivitulkista ja GCC-kääntäjästä.
Lokakuussa 1991 versio 0.02 oli valmis ja Torvalds päätti laittaa sen vapaasti kaikkien saataville. 5. lokakuuta uutisryhmään lähettämässään viestissä Torvalds kertoi lähdekoodin löytyvän FTP-palvelimen nic.funet.fi hakemistosta /pub/OS/Linux ja antoi ohjeita kääntämistä varten. Hän varoitti, että ohjelma oli hakkerilta hakkereille ja ei ollut siten sopiva niille, jotka hakivat vaihtoehtoa Minixille. Se oli kuitenkin vielä riittävän pieni ymmärtää, käyttää sekä muokata ja toivoi kommentteja.
Alun perin Torvalds oli suunnitellut antavansa ohjelmansa nimeksi ”Freax”, joka olisi johdettu sanoista free Unix (vapaa Unix) tai freaks (omituiset, intoilijat, friikit). FTP-palvelimen ylläpitäjä Ari Lemmke ei pitänyt nimestä ja käytti aiempaa työnimeä ”Linux”. Hän oli perustanut omalle xgw:n palvelimelleen Linux -nimisen käyttöalueen Torvaldsia varten.
Palautetta ja virheraportteja tuli valtavasti. Internetin ja avoimesti saatavilla olleen lähdekoodin ansiosta ihmiset eri puolilla maailmaa pääsivät kehittämään Linuxia. Ytimen versio 0.10 julkaistiin marraskuun alussa 1991, jolloin käyttäjiä oli 10–20. 0.10 oli ensimmäinen versio, joka oli käyttökelpoinen ilman Minixiä, jolloin Linus päätti nostaa versionumeron suoraan 0.03:sta 0.10:iin. 8. joulukuuta 1991 julkaistu versio 0.11 oli jo täysin itsenäisesti käytettävissä: ydin voitiin kääntää Linuxissa itsessään. 0.11-version myötä jaettavana oli myös muutamia ohjelmia (gcc, bash, make, uemacs, tar) mutta järjestelmästä puuttui muun muassa init ja login-toiminnot.
Version 0.12 yhteydessä Linus kertoi aikomuksesta käyttää GNU GPL -lisenssiä, joka korvasi aiemmin Torvaldsin itse kirjoittaman lisenssin. Ytimen nykyinen lisenssi on GPL versio 2 (GPLv2) ja Torvalds on sanonut vastustavansa siirtymistä versioon 3 sen lisäämien käyttörajoituksien vuoksi. Torvalds on kuvaillut päätöstään julkaista Linux-ydin GPL-lisenssillä parhaaksi tekemäkseen asiaksi.Hiroo Yamagata: The Pragmatist of Free Software, Linus Torvalds Interview , 30 September 1997
Marraskuussa 1991 Torvalds tuhosi vahingossa tietokoneensa Minix-osion, joka osaltaan vaikutti kehittämään Linuxia eteenpäin.
Kun versio 0.12 julkaistiin tammikuussa 1992, Linuxin parissa työskenteli aktiivisesti lähes kaksisataa ihmistä. Tuolloin ydin oli jo vakaa ja toimiva. Yhdessä GNU-hankkeen luomien työkalujen kanssa siitä oli rakennettavissa kokonainen käyttöjärjestelmä. Linux alkoi levitä nopeasti. Vuonna 1992 saatiin valmiiksi ensimmäinen graafisella käyttöliittymällä varustettu jakelu. Näihin aikoihin Linuxista kiinnostuttiin myös yliopistomaailman ulkopuolella.
Ytimen julkaisun yhteydessä Torvalds ja Tanenbaum kävivät laajalti tunnetun debatin ytimen rakenteesta. Keskeiset kritiikin kohteet Tanenbaumilta oli ytimen rakenne (monoliittinen vs. mikroydin) ja siirrettävyys laitteistoalustalta toiselle. Torvalds vastasi avaamaan Minixin lisenssiä ja julkaisemaan ”harrasteprojektin” ilmaiseksi, sekä sanomalla että käyttöjärjestelmän keskeinen tarkoitus on juurikin laitteisto-ominaisuuksien hyödyntäminen ja niiden piilottaminen korkean tason kutsujen taakse. Microsoftin palkkaama Ken Brown ajoi väitettä, jossa Torvalds olisi kopioinut Minixiä, mutta Tanenbaum on tyrmännyt tämän väitteen.
Vuonna 1992 ytimeen tuli ulkopuolista kehitystä muun muassa verkkoprotokollapinon, SCSI- ja äänilaiteajureiden, Ext2-tiedostojärjestelmän ja ELF-binäärimuodon osalle. Versiossa 0.95 oli myös tuki näennäismuistille. Ytimeen tehty verkkoprotokollapino oli aluksi ongelmallinen ja aiheutti samassa verkossa oleville koneille ongelmia ennen sen korjaamista.
Torvaldsilla oli tavoite tehdä ytimestä siirrettävämpi kun hän sai käyttöönsä Alpha-suorittimella toimivan järjestelmän. Torvaldsin mukaan Linux/68k-projekti ytimen siirtämisessä Motorola 68000 -sarjan suorittimille ei painottanut niinkään siirtämistä vaan sen uudelleen kirjoittamista osin. Alkuperäisessä ytimen rakenteessa ei ollut siirtämisen estävää suunnittelua vaan ero oli sen toteutuksessa. M68k-versio alkoi vain Amiga-tuella ja Hamish Macdonald sekä Greg Harp julkaisivat sen ensimmäisen version 1. heinäkuuta 1993. Pian tämän jälkeen Atari-käyttäjät työskentelivät käännöksen parissa. Myös tuki SPARC-, MIPS-, PowerPC- ja ARM-suorittimille seurasivat.
Kehitysprosessi pienoiskuva|oikea|Linux-ytimen toiminnot tasoittain. Torvalds johtaa edelleen Linuxin ohjelmointityötä. Linux on avoimen lähdekoodin ohjelmisto ja siihen voi kuka tahansa tehdä muutoksia. Mikäli haluaa omat muutoksensa Linuxin viralliseen versioon, ne tulee toimittaa Linux Kernel -postituslistalle, jolloin ohjelmakoodi kulkee Torvaldsin tai hänen luottohenkilöidensä kautta. Muutoksella on oltava sen tekijän allekirjoitus (Signed-off-by) ja se on toimitettava katselmoitavaksi asiaan liittyville henkilöille, joiden hyväksyntä tarvitaan muutoksen etenemiseksi ytimeen liittämiseen. Ytimen kehitysmallissa ”portinvartijoina” toimivat alijärjestelmien ylläpitäjät lähettävät Torvaldsille muutoksia pääsarjan ytimeen liitettäväksi.
Kehitysprosessin ohjeet seuraavat ytimen lähdekoodien mukana ja sisältävät joukon esimerkkejä hyvistä ja huonoista kehitystavoista.
Ytimen kehitysprosessia käsitellään Eric S. Raymondin esseessä The Cathedral and the Bazaar, jossa sitä käytetään esimerkkinä ”basaarimallista” (vastakohtana ”katedraalimallille” kuten GNU Emacsin kehityksessä). Kehitysprosessia on kuvattu jatkuvan kehityksen mallina (), jota käytetään myös useissa muissa (pääasiassa avoimen lähdekoodin) ohjelmistoprojekteissa.
pienoiskuva|Sankey-diagrammi ytimen lähdekoodin jakaantumisesta rivimäärän mukaan.
Ytimen version 2.6 kehityksen aikana Torvalds ja Andrew Morton yhdistivät ytimeen muutoksia 10 MB kuukaudessa. Versioon 4.11 otettiin mukaan 12 546 muutosjoukkoa ja ydin kasvoi lähes 300 000 rivillä ohjelmakoodia. Vuosien 2011 – 2012 aikana (ytimen versiot 3.1.0 – 3.5.0) ytimeen tehtiin päivittäin uutta riviä, riviä poistettiin ja riviä muutettiin. Muutoksia tuli 6,03 per tunti.
Kesällä 2015 ytimen versiossa 4.1 oli yli 19,5 miljoonaa lähdekoodiriviä. Linux-ytimen uudelleenkehittämisen arvosta on esitetty useita arvioita: maaliskuussa 2011 sen arvioitiin olevan 3 miljardia Yhdysvaltain dollaria ja kasvavan. Linux Foundationin julkaiseman raportin mukaan kehitykseen on osallistunut yli 13 500 kehittäjää yli 1 300 yrityksestä. Ytimen kokoon vaikuttaa kaikki sen tukemat arkkitehtuurit ja laitteisto jota se tukee: Greg Kroah-Hartmanin mukaan keskimääräinen kannettava tietokone käyttää noin toimiakseen kunnolla.
Ydin on toteutettu pääasiassa C-kielellä. Torvaldsin mukaan vaikeat ongelmat ytimen kehityksessä eivät ratkea ohjelmointikieltä vaihtamalla. Isoimmat ongelmat ovat tyypillisesti laitteistotuessa kuten laiteajurit ja alustakohtaiset erot. Eräät henkilöt ja projektit ovat pyrkineet kehittämään tukea C++:lla toteutetuille moduuleille mukaan lukien ajonaikaisen kirjaston, poikkeuskäsittelyn ja RTTI-tyyppimekanismin lisäämisen sekä pinon käsittelyn muutoksia. C++:n käytössä käyttöjärjestelmän ytimessä on ongelmakohtia, joita neuvotaan välttämään. Ytimeen on lisätty tukea Rust-kielellä ohjelmointiin asteittain ytimen versiosta 6.1 alkaen. Ytimessä käytetään myös kääntäjien tukemia laajennuksia toimintoihin, jotka eivät ole kielen standardissa.
Torvalds on vahvan staattisen tyyppijärjestelmän kannattaja, jonka johdosta hän aloitti vuonna 2003 sparse-ohjelman kehityksen. Ytimen käyttötapauksissa kääntäjän oma tyyppitarkastus ei ole riittävä.
Ytimen testaamisessa käytetään apuna useita tarkoitukseen kehitettyjä ohjelmia. Ydintä testataan usein eri tavoin eri tavoitteiden kannalta kuten kehittäjätestaus, integraatiotestaus, regressiotestaus ja stressitestaus. Ytimen yksikkötestaamiseen on kehitetty KUnit-kehys.
Versiointi Ydintä on aiemmin kehitetty parittomalla numerolla merkityssä versiohaarassa parillisten ollessa vakaita tuotantokäyttöön tarkoitettuja versioita (vrt. 2.2.x, 2.3.x, 2.4.x ja 2.5.x). Nykyisin seuraavaan versioon tulevat muutokset ovat linux-next nimisessä kehityshaarassa ja versionumeroinnin erityismerkityksestä on luovuttu. Monimutkaisten versionumeroiden kuten 2.6.39.4 sijaan pääversionumeroa muutetaan useammin kuten 4.0 3.20:n sijaan. LTS-versioihin (Long Term Support) julkaistaan päivityksiä vielä uuden version jälkeen muutaman vuoden ajan. Vuoden 2023 lopulla päätettiin lyhentää tukiaika kuudesta vuodesta kahteen tulevissa LTS-versioissa. LTS-versioita ei käytetä riittävästi ja ne aiheuttavat paljon työtä ylläpitäjille. Jonathan Corbetin mukaan työuupumus on riski vapaaehtoisille ylläpitäjille.
Linux-next