Linux 2.6:n ihmeellinen maailma.

Joseph Pranevich - jpranevich <at> kniggit.net

[Suomentajan kommentit tai alkuperäiset termit ovat hakasuluissa, ellei parempaa tapaa ilmene.]

[Kirjoitettu joitain kohtia mielestäni parempaan muotoon ja korjattu joitain kirjoitusvirheitä 29-30.12.2003 - kiitos molemmista palautteista.]

Vaikka tuntuukin kuin olisimme vasta eilen käynnistelleet ensimmäisiä Linux 2.4-järjestelmiä, aikaa on kulunut ja ytimen kehitysryhmä on juuri julkaissut 2.6-ytimen. Tämä dokumentti on tarkoitettu yleiskuvaksi uuden ytimen ominaisuuksista painottuen paljolti i386-Linuxiin. Ottakaa myös huomioon, että jotkin tässä mainitut "uudet" ominaisuudet on voitu siirtää takaisin [backport] Linux 2.4:ään sen jälkeen, kun ne ovat ilmestyneet 2.6:ssa, joko virallisesti tai levityspaketin toimittajan toimesta. Olen myös lisännyt tietoa kourallisesta tapauksia jossa uusi ominaisuus on lähtöisin Linux 2.4:n ylläpitokierroksesta, ja ne on merkitty asianmukaisesti tekstissä.

Nykyään tämä dokumentti on käännetty yhdelletoista kielelle. Lisätietoa "Käännökset"-osiossa aivan lopussa.

Tarina tähän asti...

Linux-ydinprojektin aloitti Linus Torvalds vuonna 1991 tarkoituksena tehdä Minixin kaltainen käyttöjärjestelmä 386:seensa. (Linus halusi alunperin projektin nimeksi Freax, mutta nykyisin tunnettu nimi jäi pysyväksi.) Ensimmäinen virallinen Linux 1.0:n julkaisu oli maaliskuussa 1994, mutta se tuki vain yhden suorittimen 386-koneita. Vain vuotta myöhemmin julkaistiin Linux 1.2 (maaliskuu 1995) ja se oli ensimmäinen versio, joka tuki muitakin laitealustoja (Alpha, Sparc ja Mips), mutta edelleen vain yhden suorittimen malleja. Linux 2.0 tuli kesäkuussa 1996 ja sisälsi tuen myös monelle uudelle arkkitehtuurille, sekä oleellisempana seikkana toi Linuxin monisuoritinkoneiden (SMP, "Symmetric multiprocessing") maailmaan. 2.0:n jälkeen seuranneet suuremmat julkaisut ovat tulleet jonkin verran hitaammin ulos (Linux 2.2 tammikuussa 1999 ja 2.4 tammikuussa 2001). Jokainen versio on laajentanut uusien laitteiden ja järjestelmien tukea sekä samalla tehostanut laajennettavuutta (Linux 2.4 oli myös huomattava julkaisu joka löi Linuxin läpi työasemarintamalla ytimen tukiessa ISA Plug-and-Play:ta, USB:tä, PCMCIA:ta ja muita lisäyksiä.) Linux 2.6, julkaistu 17.12.2003, ei pelkästään rakennu näille ominaisuuksille, mutta on myös "suurempi loikka" parannettuine tukineen sekä merkittävästi suuremmille järjestelmille että merkittävästi pienemmille (taskutietokoneet ja muut laitteet).

Keskeinen laitetuki

Yksi tärkeimpiä Linux-pohjaisten käyttöjärjestelmien vahvuuksista on niiden joustavuus ja kyky tukea suurta määrää laitealustoja. Vaikka tämä dokumentti keskittyy erityisesti Linuxin käyttöön PC-pohjaisissa laitetyypeisssä, Linux 2.6-ydin on tehnyt merkittäviä parannuksia alueella joka ansaitsee tulla mainituksi.

Alaspäin skaalautuvuus -- Linux sulautetuille järjestelmille

Toinen kahdesta perustavinta laatua olevista muutoksista Linux 2.6:een tulee uClinux-projektin hyväksymisestä ja yhdistämisestä valtavirtaytimeen. uClinux-projekti (äännetään mahdollisesti "juu-sii-Linux", mutta oikeammin kirjoitetaan kreikkalaisella "myy"-kirjaimella) on "Linux mikro-ohjaimille" -projekti. Tämä Linuxin muunnelma on ollut suuri Linuxin tuen edistäjä sulautettujen markkinoilla, ja sen liittämisen viralliseen julkaisuun pitäisi rohkaista edelleenkehittämistä tällä alueella. Toisin kuin "tavalliset" Linux-sovitukset [ports] joihin olemme yleensä tottuneet, sulautettuihin sovitukset eivät sisällä laiterajoitteiden takia kaikkia niitä ominaisuuksia, jotka yleensä mielletään ytimelle. Pääasiallinen eroavaisuus näissä sovituksissa on suorittimen MMU:n puute. (MMU = "Memory Management Unit", "muistinhallintayksikkö", joka tekee suojatun tilan käyttöjärjestelmästä "suojatun".) Vaikka nämä ovat yleensä aidosti moniajavia Linux-järjestelmiä, niistä puuttuu muistinsuojaus tai muita siihen liittyviä piirteitä. (Ilman muistinsuojausta harhautunut prosessi voi lukea järjestelmän muiden prosessien tietoja tai jopa kaataa niitä.) Tämä voi tehdä niistä käyttökelvottomia monen käyttäjän järjestelmissä, mutta erinomaisia valintoja taskutietokoneeseen tai tiettyyn käyttöön varatulle laitteelle [dedicated device]. On vaikeaa ylikorostaa tätä Linux 2.6:n arkkitehtuurin muutosta; kaikissa Linux-versioissa tähän asti on ollut mukana (kuinka epäsuorasti sitten tahansa) rajoituksia, jotka olivat pohjaoletuksina Linuksen alustavassa työssä hänen Intel 386:lleen.

Linux 2.6 tukee useita uusia sulautettujen suorittimien tuotelinjoja, mukaanlukien Hitachi:n H8/300-sarja, NEC v850-suoritin ja Motorolan sulautettujen m68k-suorittimien tuotelinja. Motorolan tarjonta on tutuin Linuxin keskivertokäyttäjälle, koska ne ovat olleet Palm Pilot:ien sisuskaluja alusta alkaen (Palm 1000) Palm III:een asti. Muut mallit kuten Dragonball ja ColdFire löytyvät evaluointipiirilevyistä, joita Motorola, Lineo, Arcturus ja muut tekevät. Surullista kyllä, tukea vanhemmille m68k-suorittimille ilman MMU:ta (kuten 68000:t, joita käytettiin ensimmäisissä Macintosheissa) ei vielä ole uudessa julkaisussa, mutta on hyvin mahdollista, että tulevaisuuden "harrasteprojektit" pyrkivät tukemaan Linuxia näillä ja muilla antiikkisilla järjestelmillä.

Uusi versio Linuxista sisältää myös tuen Axis Communications:in ETRAX CRIS ("Code Reduced Instruction Set") -suorittimille, vaikkakaan se ei liity uClinux-yhdistymiseen. (Varsinainen tuki tälle suorittimelle tuli 2.4-ytimen ylläpitokierroksen tuomana ominaisuutena -- hyvän aikaa 2.4.0:n julkaisemisen jälkeen -- joten se ansaitsee pikaisen maininnan.) Nämä ovat sulautettuja suorittimia, mutta niissä on MMU, ja niitä käytetään ensisijaisesti verkkolaitteissa. Näiden prosessorien MMU:ttomiin muunnelmiin liittyvää tukea ei ole vielä hyväksytty ytimeen, mutta sitä työstetään ulkopuolisissa projekteissa.

Puhtaan laitetuen lisäksi on saatu useita muita hyötyjä sulautettujen projektien työn yhdistämisestä valtavirtaytimeen. Vaikka enin osa näistä muutoksista onkin konehuoneen puolella, muutokset kuten mahdollisuus rakentaa järjestelmä täysin ilman sivutustukea [swap support] lisäävät käyttöjärjestelmän yleistä käyttövarmuutta [robustness].

Skaalautuvuus ylöspäin -- NUMA ja Suurempi Rauta

Toinen kahdesta perustavaa laatua olevasta muutoksesta Linux 2.6:ssa toimii toiseen suuntaan: saadakseen Linuxin hyväksyttävämmäksi ytimeksi suuremmille ja suuremmille palvelimille. (Jotkut näistä suuremmista palvelimista tulevat olemaan i386-pohjaisia, jotkut eivät.) Suuri muutos tässä suhteessa on Linuxin uusi tuki NUMA-palvelimille. NUMA ("Non-Uniform Memory Access" eli "ei-yhtenäinen muistinkäsittely") on askel SMP:n ohi moniajomaailmassa ja suuri loikka kohti tehokkuutta järjestelmissä, joissa on monta suoritinta. Tämänhetkiset monisuoritinjärjestelmät on suunniteltu monien samojen rajoitusten kanssa mitä vastaavissa yhden suorittimen järjestelmissäkin on, erityisesti odotetaan vain yhden muistialueen palvelevan kaikkia suorittimia. Monen suorittimen järjestelmissä yksi keskeinen pullonkaula on äärimmäisen suuri kilpailu [high contention rate] yhden muistiväylän varaamisesta monen suorittimen välillä. NUMA-palvelimet kiertävät ongelman esittelemällä konseptin, jossa tietylle prosessorille osa muistia on lähempänä kuin muut muistialueet. Yksi helppo tapa (eikä teknisesti ottaen hirvittävän epäkorrekti) kuvitella tätä on järjestelmä, joka on rakennettu erillisistä korteista, joissa jokaisessa on suoritin, muistia ja mahdollisesti muita osia (I/O yms.) Järjestelmässä on monta tällaista korttia, ja vaikka ne kaikki voivat puhua toisilleen, on selvää, että suoritinten on helpointa puhua paikalliselle muistille (muisti, joka on samalla kortilla suorittimen kanssa eikä erillisellä kortilla.) Voit kuvitella uuden NUMA-arkkitehtuurin olevan jonkin verran samanlainen kuin hyvin tiivis rypäs toteutettuna laitteiston alimmilla tasoilla.

Tukeakseen asianmukaisesti näitä uusia NUMA-koneita Linux on mukautunut monessa suhteessa saadakseen uudesta mallista tehokkaan. Alkajaisiksi luotiin sisäinen topologia-API, jotta ytimen sisukset ymmärtäisivät yhden suorittimen tai yhden muistialueen suhteet I/O-laitteisiin tai toisiinsa. Tästä johtuen Linuxin prosessijärjestelijä [process scheduler] kykenee ymmärtämään näitä suhteita ja yrittää optimoida tehtäviä paikallisten resurssien parhaaseen käyttöön. Lisäksi monet NUMA-koneet on rakennettu niin, että lineaarisessa muistiavaruudessa on "reikiä" koneen eri osien "välissä". Uusi ydin kykenee käsittelemään näitä epäjatkuvuustapauksia järkevällä tavalla. Monia muita sisäisiä muutoksia tehtiin, jotta Linux tukisi näitä uusia huippuluokan koneita ja tämä on ehdottomasti kasvualuetta koko ytimelle. Kuitenkin tämä on alue, jossa Linux kasvaa ja kypsyy hyvin nopeasti ja on tehtävä paljon työtä, että saadaan resurssit kaikkein tehokkaimpaan käyttöön. Seuraavan vuoden aikana voimme odottaa näkevämme monia parannuksia Linuxin tukeen näille todella huippuluokan järjestelmille.

Aliarkkitehtuurituki

Vaikkei tämä olekaan niin keskeinen kuin kaksi edellistä muutosta, uusi versio ytimestä sisältää uuden konseptin nimeltä "aliarkkitehtuuri", joka ulottaa Linuxia edelleen uusille laitetyypeille. Aiemmin Linuxissa oli pohjana oletus, että suoritintyypit ja laitteistotyypit kulkivat käsi kädessä. Esimerkiksi i386:een perustuvat suorittimet ovat käytössä vain palvelimissa, jotka ovat PC/AT:n seuraajia. Linux 2.4:ssä tämä oletus rikottiin i386:lle, kun lisättiin tuki SGI:n Visual Workstationille, "perintövapaalle" ["legacy-free"] alustalle, jossa on Intelin suoritin. (Ja itse asiassa oletus oli rikottu jo paljon aiemmin muille arkkitehtuureille. Esimerkiksi m68k on pitkään tukenut Amiga-koneita, Macintosheja ja muita alustoja.) Suuri muutos Linux 2.6:ssa on se, että tämä ominaisuus ja konsepti on standardoitu niin, että kaikki arkkitehtuurit käsittelevät tätä samanlaisella ja järjellisellä tavalla, joka antaa selkeämmän erottelun niille osille, jotka pitää erotella.

Tämän standardisoinnin mukana tulee kaksi uutta alustaa tukemaan i386:sta. Ensimmäinen on NCR:n Voyager-arkkitehtuuri. Se on SMP-järjestelmä (kehitetty ennen nykyistä standardia, Intelin MP-määritystä), joka tukee 486-686-suorittimia jopa 32-kertaisiin kokoonpanoihin. Varsinainen myytyjen kokoonpanojjen määrä tällä arkkitehtuurilla on suhteellisen pieni, eikä kaikkia koneita tueta vielä. (Vanhimpia ei vielä tueta.) Toinen arkkitehtuuri, jota tuetaan, on levinneempi PC-9800-alusta, jonka NEC kehitti Japanissa (lähes) hallitsevaksi PC-alustaksi melkein tähän päivään asti. Alkuperäiset PC-9800-koneet toimitettiin 8086-suorittimella ja tuoteperhe kehittyi ja kypsyi (rinnakkain AT:n jälkeläisten kanssa) kunnes niissä oli Pentium-luokan suorittimet ja SMP-tuki. (Tietenkin Linux-tuki on rajattu 386:een tai parempaan.) Vaikkakin tämä laitteisto on täysin tuntematon USA:ssa, Microsoftin tuotteita sovitettiin sille Windows 95:een asti. Tuoteperhe on virallisesti lopetettu valmistajan toimesta "standardimpien" PC:iden eduksi.

Muodollistamalla Linuxin tuki näille "hieman erilaisille" laitetyypeille tämä mahdollistaa helpomman ytimen sovituksen muille järjestelmille, kuten erikoistuneille tallennuslaitteistoille ja muille laitteille, jotka käyttävät teollisuuden johtavia suoritintyyppejä. Ehdottoman selkeyden vuoksi: tätä alijakoa ei pitäisi viedä liian pitkälle. Nämä aliarkkitehtuurit on eroteltu, koska erittäin matalan tason järjestelmäosat (kuten IRQ-reititys) ovat joko hieman tai äärimmäisen erilaisia. Tämä on aivan eri asia kuin Linuxin ajaminen esimerkiksi X-Box:issa, missä on suhteellisen vähän muuta eroa kuin laiteajurit ja jotkin erikoisuudet [quirks], jotka erottavat järjestelmän "tavallisesta" i386-järjestemästä. X-Box-tuki ei olisi aliarkkitehtuuri.

Hypersäikeistys [Hyperthreading]

Yksi suuri laitteiston edistysaskel, jota Linux 2.6 tukee, on hypersäikeistys, joka on tällä hetkellä vain nykyaikaisissa Pentium 4-suorittimissa, mutta voidaan ottaa käyttöön muuallakin. Yksi fyysinen suoritin voi tekeytyä (laitetasolla) kahdeksi tai useammaksi suorittimeksi. Tämä antaa lisää suorituskykyä joissain tilanteissa, mutta myös lisää töidenjärjestelyn monimutkaisuutta ja muita ongelmia. Tämän ominaisuuden parannetun tuen avain on se, että nyt töidenjärjestelijä tietää, kuinka tunnistaa ja optimoida suoritinkuormat sekä todellisille että virtuaalisille suorittimille. Linuxin edellisissä versioissa oli hyvinkin mahdollista ylikuormittaa yhtä suoritinta koska ei voitu laskea työkuormaa kokonaisuutena. Yksi mainittava tämän ominaisuuden hienouksista on se, että Linux oli markkinatilanteessa johdossa tämän laiteominaisuuden älykkäässä ja läpinäkyvässä tukemisessa. (Windows 2000-palvelimet näkevät ylimääräiset muka-prosessorit, mutta eivät tunnista niitä virtuaalisiksi. Näinollen tarvitset lisää suoritinlisenssejä hyötyäksesi ominaisuudesta. Vasta Windows XP:n julkaisun myötä Microsoft tuki täysin tätä ominaisuutta.)

Linux sisältä

Skaalautuvuuden parannuksia

Edelläkuvailtujen yleisten ominaisuuksien kuten NUMA:n ja hypersäikeistyksen lisäksi Linux 2.6 pitää sisällään muita muutoksia Intel-palvelimille, jotka ovat ravintoketjun yläpäässä. Ensiksi ja tärkeimpänä on parannettu tuki muille Intelin laiteominaisuuksille kuten PAE ("Physical Address Extension"), joka antaa suurimman osan uusista 32-bittisistä i386-järjestelmistä käsitellä jopa 64 gigatavua RAM:ia, mutta sivutetussa tilassa. Lisäksi IRQ-tasapainoitus on merkittävästi parantunut monisuoritinjärjestelmissä Linuxin APIC-tuen suurten parannusten ansiosta.

Pelkän uusien laitteisto-ominaisuuksien tukemisen lisäksi sisäisiä rajoituksia on suurennettu, mikäli mahdollista. Esimerkiksi käyttäjien ja käyttäjäryhmien määrän yläraja on nostettu 65000:sta yli neljään miljardiin (16-bittisestä 32-bittiseen), mikä tekee Linuxista käytännöllisemmän suureksi tiedosto- tai autentikontipalvelimeksi. Samalla tavalla PID:n (prosessin tunnistenumero) ympäripyörähtämisraja nostettiin 32000:sta yhteen miljardiin parantaen sovelluksen käynnistämisen suorituskykyä hyvin kiireisissä tai pitkään käytössä olleissa järjestelmissä. Vaikka avointen tiedostojen maksimimäärää ei ole kasvatettu, Linux 2.6-ytimelle ei enää tarvitse asettaa rajaa etukäteen; tämä luku on itsesäätyvä. Ja lopuksi, Linux 2.6 sisältää 64-bittisen tuen lohkolaitteille [block devices, Suom. huom: esimerkiksi kiintolevyt] jotka tukevat sitä, jopa 32-bittisillä alustoilla kuten i386. Tämä mahdollistaa jopa 16 teratavun tiedostojärjestelmät yleisillä laitealustoilla.

Toinen suuri skaalautuvuuden parannus Linux 2.6:ssa on ytimen itsensä kyky tukea, ei pelkästään useammantyyppisiiä laitteita, mutta myöskin suurempaa määrää samantyyppisiä laitteita. Kaikkien Linuxin versioiden (ja toden totta, useimpien UNIX-johdannaisten käyttöjärjestelmien) käyttäjät ja sovellukset, mitä järjestelmässä on ajossa, keskustelevat kytkettyjen laitteiden kanssa käyttämällä laitenumeroita. ("/dev"-hakemiston sisältö.) Nämä laitenumerot on rajattu 255:een "suurempaan" laitteeseen (yleisesti ottaen yksi laitetyyppi saa yhden tai useamman laitenumeron) ja 255:een "pienempään" numeroon (yleisesti ottaen, eri laitteet jotka ovat samaa laitetyyppiä.) Esimerkiksi "/dev/sda2"-laite (toinen osio ensimmäisestä havaitusta SCSI-levystä) saa isomman numeron 8, mikä on yhteinen kaikille SCSI-laitteille, ja pienemmän numeron 2, joka osoittaa toiseen partitioon. Erilaiset laitetyypit varaavat laitenumeronsa eri lailla, joten ei voida sanoa varmuudella, montako laitetta Linux-järjestelmässä voi olla. Valitettavasti tämä kuvio hajoaa pahasti liitoksistaan suurissa järjestelmissä, missä olisi mahdollista olla esimerkiksi paljon enemmän kuin 255 mitä tahansa laitetta yhdessä järjestelmässä. (Ajatelkaa suuria tallennusjärjestelmiä, tulostusfarmeja jne.) Linux 2.6:ssa näitä rajoituksia on helpotettu 4095:een suurempaan laitetyyppiin ja yli miljoonaan laitteeseen jokaista tyyppiä. Tämän lisäyksen pitäisi olla enemmän kuin tarpeeksi tukemaan huippuluokan järjestelmiä toistaiseksi.

Vuorovaikutteisuus ja vasteajat

Ylöspäinskaalautuvuuden lisäksi yksi tärkeistä asioista uudessa julkaisussa oli saada järjestelmän vasteaikoja parannettua. Tämä hyödyttää niin perus-työpöytäkäyttäjää (joka aina pitää siitä, että vasteaika on lyhyt) kuin aikakriittisiäkin sovelluksia, joissa vaaditaan ehdotonta tarkkuutta, jotta päästään toivottuun tulokseen. Huolimatta näistä muutoksista Linux 2.6 ei ole "kova" reaaliaikakäyttöjärjestelmä, joille on hyvin tarkat vaatimukset siitä, että asiat ehdottomasti tapahtuvat ennustettavasti, mutta yleisen vasteaikojen parantumisen pitäisi vedota kaikkiin Linuxin käyttäjäryhmiin. (Sanottuani tuon, on olemassa muita projekteja, joilla on epävirallisia korjaustiedostoja RTOS-toiminnallisuuden tarjoamiseksi. Olisi kuviteltavissa, että nämä projektit voisivat päästä mukaan seuraavaan suurempaan viralliseen julkaisuun.)

Yksi avainparannuksista Linux 2.6:ssa on keskinäinen ytimen suorituksen keskeytys [pre-emption]. Kaikissa aikaisemmissa Linuxin versioissa ydintä itseään ei voinut keskeyttää, kun se oli suorittamassa jotain. (Monen suorittimen järjestelmissä tämä piti paikkaansa suoritinkohtaisesti.) Linux 2.6:ssa ydin voidaan keskeyttää kesken tehtävän, jotta muut sovellukset voivat jatkaa ajoaan, vaikka jotain mutkikasta matalan tason tehtävää ajetaan taustalla. On tietenkin hetkiä, jolloin ytimen suoritusta ei voi keskeyttää. Todellisuudessa suurin osa käyttäjistä ei ole koskaan huomannut näitä viiveitä, jotka ovat harvoin yli sekunnin murto-osan mittaisia. Siitä huolimatta moni käyttäjä voi huomata parannuksen vuorovaikutuksen suorituskyvyssä, jos tämä piirre on aktivoitu; asiat kuten käyttäjän syöte "tuntuvat" nopeammilta, vaikka järjestelmä olisikin kuormitettu.

Linuxin syöte/tuloste(I/O)-alijärjestelmät ovat myös käyneet läpi suuria muutoksia, jotta niistä saataisiin parempia vasteita kaikenlaisten työkuormien alla. I/O-työjärjestelijä on kirjoitettu kokonaan uudelleen. Se on osa ytimen koodia, joka päättelee, mikä prosessi saa lukea laitteilta ja milloin. Uusiksi kirjoitettu kerros pystyy paremmin varmistamaan, ettei mikään prosessi jää jonoon odottamaan liian pitkään, ja samalla aikaisemmat optimoinnit toimivat varmistaen, että tietojen lukeminen tapahtuu tehokkaimmalla tavalla mitä käytettävä laitteisto mahdollistaa.

Sovellusohjelmapuolella yksi muutos, joka auttaa Linux-ohjelmia parempiin vasteaikoihin (jos ne käyttävät tätä ominaisuutta), on tuki uusille "futex":eille ("Fast User-Space Mutexes", "nopeat käyttäjäpuolen mutexit") Futex:it ovat tapa, jolla useat prosessit tai säikeet voivat sarjallistaa tapahtumia niin, etteivät ne tallo toistensa päälle ("kilpavaraustilanne"). Toisin kuin perinteiset mutex-operaatiot, joita useimmat säiekirjastot tukevat, tämä konsepti pohjautuu osittain ytimeen (mutta vain kilpavaraustilanteessa) ja se myös tukee tärkeysjärjestyksen [priorities] asettamista jotta sovellukset tai säikeet, joilla on korkeampi prioriteetti, pääsevät kilpaillulle resurssille ensiksi. Kun annetaan ohjelman asettaa tärkeysjärjestys odottaville tehtäville, sovellukset saadaan vastaamaan paremmin ajoituksen suhteen kriittisillä alueilla.

Kaikkien edellämainittujen lisäksi on useita muita, pienempiä muutoksia, jotka parantavat vuorovaikutteisuuta ja suorituskykyä monessa tapauksessa. Näihin kuuluu "suuren ytimen lukon" poisto (ei-niinkään-hienojakoiset lukot, joita käytettiin aiemmin Linuxin usean suorittimen tuessa), tiedostojärjestelmän etukäteen lukemisen [readahead], takaisinkirjoituksen [writeback] ja pienten tiedostojen käsittelyn optimointi sekä muita samanlaisia muutoksia.

Muita parannuksia

Linux, kuten avoimen lähdekoodin liike yleensäkin, on aina ollut lipunkantaja avointen standardien hyötyjen puolesta. Suuri muutos 2.6-julkaisussa on ytimen sisäisen säikeistysinfrastruktuurin uudelleenkirjoitus niin, että NPTL (Native POSIX Thread Library", "alkuperäinen POSIX-säiekirjasto") toimii sen päällä. Tämä voi olla suuri suorituskykylisäys Pentium Pro-suorittimille ja paremmille runsaasti säikeistetyissä sovelluksissa, ja monet yritysmaailman ["enterprise" space] pelaajat ovat pitäneet ääntä siitä. (Itseasiassa RedHat on sovittanut takaisin [backport] tuen Linux 2.4:ään ja se on mukana RedHat 9:ssä sekä Advanced Server 3.0:ssa.) Tämä muutos tuo Linuxin säikeistykseen uusia konsepteja, kuten säieryhmät, paikallisen muistin yksittäisille säikeille, POSIX-tyyliset merkinannot [signals] ja muita muutoksia. Yksi suuri haittapuoli on se, että sovellukset (kuten jotkin versiot Sunin Javasta), joita ei ole kirjoitettu määrityksen mukaan ja luottavat vanhoihin Linuxismeihin, hajoavat uuden tuen myötä. Koska hyödyt voittavat haitat (ja sopassa on niin monta suurta lusikkaa), on selvää että tärkeimmät sovellukset tukevat muutoksia piakkoin uuden ytimen julkaisemisen jälkeen.

Modulialijärjestelmä ja yhtenäinen laitemalli

Nykyaikaisissa käyttöjärjestelmissä laitteidenkäsittelyalijärjestelmät ovat käyneet merkittävämmäksi, koska niiden on pakko toimia lukuisten sisäisten ja ulkoisten väylätyyppien kanssa sekä useampien laitteiden useammilta toimittajilta kuin olisit voinut kuvitellakaan [more ... than you can shake a stick at]. Ei pitäisi olla yllätys, että tuleva päivitys Linux-ytimeen sisältää parannetun tuen sekä modulin lataamiseen että sen sisäiseen laitteiston ymmärrykseen. Nämä muutokset vaihtelevat puhtaasti kosmeettisesta (ajurimodulit käyttävät nyt ".ko"-päätettä niinkuin "kernel object" eli "ytimen olio", pelkän ".o":n sijaan) yhtenäisen laitemallin läpikotaiseen tarkistukseen ja korjaukseen. Kaikissa näissä muutoksissa on mukana painotus vakauteen ja parempaan käsitykseen edellisen version rajoituksista.

Pelkästään moduli(ajuri)alijärjestelmässä on kourallinen suuria muutoksia vakauden parantamiseksi. Modulin käytöstä poistamisen [unloading] prosessia on muutettu jonkin verran, etta saadaan pienennettyä tapauksia, missä modulia käytetään, vaikka sitä ollaan ottamassa pois käytöstä, mikä johtaa usein kaatumiseen. Järjestelmissä, missä ei haluta ottaa riskiä tämän ongelman kanssa, on jopa mahdollista estää modulin käytöstä poistaminen kokonaan. Lisäksi on ponnisteltu mittavasti, jotta standardisoitaisiin se, miten modulit päättelevät ja ilmoittavat, mitä laitteita ne tukevat. Edellisissä Linuxin versioissa moduli "tiesi" mitä laitteita se tuki, mutta tämä tieto ei ollut yleisesti saatavilla modulin ulkopuolella. Tämä muutos päästää laitehallintaohjelmat, kuten RedHatin "kudzu":n, tekemään älykkäitä valintoja jopa laitteistolle, mitä ei muuten tunnistettaisi. Tietenkin siinä tapauksessa, että tiedetään paremmin kuin ajurin tämänhetkinen versio, mitä se tukee, voidaan yhä pakottaa ajuri yrittämään toimia tietyn laitteen kanssa.

Modulin lataamisen ulkopuolella laitemalli itsessään on kokenut merkittäviä muutoksia päivitetyssä ytimen julkaisussa. Toisin kuin modulilataaja, jonka tarvitsee huolehtia vain käyttöönotettavan [incoming] laitteiston resurssivaatimuksista, laitemalli on syvempi konsepti, jonka pitää olla täysin vastuussa kaikesta järjestelmän laitteistosta. Linux-versiot 2.2 ja sitä aiemmat tukivat vain niukasti yhtenäistä laitemallia, jättäen lähes kaiken tiedon laitteistosta täysin modulitasolle. Tämä toimi hienosti, mutta käyttääkseen kaikkia nykyaikaisen laitteiston ominaisuuksia (kuten ACPI:a) järjestelmän pitää tietää muutakin kuin sen, mitä resursseja laite käyttää: sen tarvitsee tietää sellaisia asioita kuin mihin väylään laite on kytketty, mitä alilaitteita sillä on, mikä laitteen virrankäyttötila [power state] on, voidaanko laite uudelleenasettaa käyttämään muita resursseja kilpavarauksen sattuessa, ja jopa tietää niistä laitteista, joille ei ole vielä ladattu moduleita. Linux 2.4 laajensi tälle perustukselle tullakseen ensimmäiseksi versioksi, joka yhtenäisti PCI-, PCMCIA- ja ISA Plug-and-Play -väylien rajapinnat [interfaces] yhteen laitestruktuuriin, jolla oli yhteinen rajapinta. Linux 2.6 uuden ydinolioalijärjestelmänsä ("kobject") kanssa vie tämän tuen uudelle tasolle, ei ainoastaan laajentamalla sitä, mitä tietää kaikista järjestelmän laitteista, vaan myös tarjoamalla keskitetyn rajapinnan tärkeille pienille yksityiskohdille kuten viitelaskureille, virranhallinnalle ja käyttäjän puolelle viemiselle [exports to userspace].

Nyt, kun ytimen saatavilla on mittava määrä laitetietoa, se sallii Linuxin tukevan paremmin nykyaikaisten kannettavien ja pöytäkoneiden piirteitä, mitkä vaativat paljon enemmän ja syvempää tietoa laitteistosta. Selkein sovellus tästä on kasvava niinsanottujen "hot plug"-laitteiden kuten PCMCIA-korttien, USB- ja Firewire-laitteiden ja "hot-plug PCI"-laitteiden vapautuminen [proliferation]. Vaikka nyt onkin vaikea ajatella niin kauas taaksepäin, Linux ei tarjonnut todellista tukea millekään näistä laitteista ennen 2.2-ydintä. Kun ottaa huomioon, että vauhdissa kytkeminen [hot-plug] on sääntö eikä poikkeus näinä päivinä, on sopivaa, että uusi laiteinfrastruktuuri käytännössä poistaa erot hot-plug- ja perinteisten [legacy] laitteiden välillä. Koska ytimen alijärjestelmä ei suoranaisesti erottele käynnistyksessä löydetyn ja myöhemmin löydetyn laitteen välillä, vauhdissa kytkettävien laitteiden käsittelyn infrastruktuuuri on yksinkertaistunut. Toinen motivaattori tälle hiljattain uudelleenkirjoitetulle alijärjestelmälle on parantunut tuki nykyaikaiselle tehonhallinnalle [power management]. Viime vuosien uusi tehonhallintastandardi nimeltä ACPI ("Advanced Configuration and Power Interface", "edistynyt asetus-ja tehorajapinta") oli ensiksi tuettu karkeasti ytimen edellisessä versiossa. Toisin kuin vanhanaikainen APM ("Advenced Power Management", "Edistynyt tehonhallinta"), käyttöjärjestelmät, joita ajetaan uuden rajapinnan omaavissa järjestelmissä, joutuvat erikseen kertomaan kaikille yhteensopiville laitteille, että niiden täytyy muuttaa tehotilaansa [power status]. Ilman keskitettyä laitteiston ymmärrystä ytimen olisi mahdotonta tietää, mitä laitteita sen tarvitsee sumplia [coordinate] ja missä järjestyksessä. vaikka nämä ovatkin vain kaksi ilmeistä esimerkkiä, on selvästikin muita alueita (kuten laitteiston auditointi ja tarkkailu) jotka hyötyvät keskitetystä maailmankuvasta.

Viimeisin, mutta mahdollisesti ilmeisin seuraus uudesta keskitetystä infrastruktuurista on uuden "systeemitiedostojärjestelmän" nimeltä "sysfs" luominen (liittääkseen prosesseille tarkoitetun "/proc":in, laitteille tarkoitetun devfs:n ja UNIX98-pseudopäätteille tarkoitetun devpts:n). Tämä tiedostojärjestelmä (joka on tarkoitettu näkyväksi "/sys":in alla) olisi näkyvä esitys laitepuusta niinkuin ydin sen näkee (joitain poikkeuksia on). Tämä esitys yleisesti ottaen sisältää joukon tunnettuja ominaisuuksia havaituista laitteista, mukaanlukien laitteen nimen, sen IRQ- ja DMA-resurssit, tehotilan ja sen sellaiset. Kuitenkin yksi puoli, joka voi olla hämmentävä lyhyeällä aikavälillä, on se, että moni laitekohtainen "/proc/sys":in käyttö saattaa siirtyä tähän uuteen tiedostojärjestelmään. Tätä muutosta ei ole (vielä) viety läpi johdonmukaisesti, joten siitä voi seurata sopeutumisaika.

Järjestelmälaitetuki [system device support]

Linuxin edetessä vuosien varrella ja liittyessä valtavirtaan, jokainen uusi versio ytimestä näyttää olevan paljon parempi kuin edeltäjänsä, jos mitataan sitä, minkä tyyppisiä laitteita se tukee -- sekä orastavissa teknologioissa (USB 2.4:ssä) että vanhemmassa "perinteisessä" teknologiassa (MCA 2.2:ssa). Kuitenkin, kun saavumme 2.6:een, merkittävien laitteiden määrä, mitä Linux ei tue, on suhteellisen pieni. On harvoja, jos ollenkaan, suuria PC-laitemaailmankaikkeuden haaroja, joita ei olisi vielä valloitettu. Tästä syystä enimmät (mutta varmastikaan eivät kaikki) parannukset i386-laitetuessa ovat ennemminkin lisänneet käyttövarmuutta [robustness] kuin uusia ominaisuuksia.

Sisäiset laitteet

Eittämättä yhtä tärkeitä kuin suoritintyyppi ovat väylät, jotka ovat se liima, joka pitää asioita kasassa. PC-maailmaa on siunattu lukuisilla väyläteknologioilla, vanhimmasta ISA:sta (löytyy alkuperäisestä IBM PC:stä) nykyaikaisiin ulkoisiin sarjaväyliin ja langattomiin väyliin [kaistoihin? "busses"]. Linux on aina ollut nopea mukautumaan uusiin väylä- ja laitetyyppeihin kun ne saavat suosiota kuluttajalaitteissa, mutta merkittävästi hitaampi mukautumaan teknologioihin, jotka ovat suhteellisen vähällä käytöllä.

Linuxin sisäisten laitteiden tuen parannukset ovat todella levinneet ympäri pelikenttää [spread across the board]. Yksi varsinainen esimerkki, missä Linux leikkii hippaa, on tuki vanhoille ISA ("Industry Standard Architecture") Plug-and-Play -laajennuksille. Linux ei tarjonnut mitään sisäänrakennettua tukea PnP:lle ennen 2.4-julkaisua. Tätä tukea on muokattu tulevassa ytimessä ottaen mukaan täysi PnP BIOS-tuki, laitenimitietokanta ja muita yhteensopivuusmuutoksia. Kaikkien näiden muutosten summana Linux on nyt "aito" Plug-and-Play-käyttöjärjestelmä ja voidaan asettaa sellaiseksi yhteensopivan koneen BIOS:issa. Muut perinteiset väylät kuten MCA ("Microchannel Architecture", "mikrokanava-arkkitehtuuri") ja EISA ("Extended ISA", "laajennettu ISA") ovat myös sisällytetyt uuteen laitemalliin ja ne sisältävät laitenimitietokannat. Nykyaikaisemmalla rintamalla Linux 2.6 tuo pöytään asteittaisia parannuksia PCI("Peripheral Component Interconnect","lisälaitteiden yhteenkytkentä")-alijärjestelmään, mukaanlukien parannetun vauhdissa kytkettävän PCI:n [Hot-Plug PCI] tuen, tehonhallintatuen, tuen usealle AGP:lle ("accelerated graphics port" -- erillinen nopea laajennus PCI-väylään) ja muita muutoksia. Lopuksi, kaikkien "oikeiden" väylien lisäksi Linux 2.6 on sisäisesti lisännyt "perinteisen" väylän konseptin, joka on jokaiselle arkkitehtuurille omansa ja sisältää kaikki laitteet, mitä voi olettaa löytyvän. Esimerkiksi PC:llä tämä voi sisältää sisäänrakennetut sarja-, rinnakkais- ja PS/2-portit-- laitteet, jotka ovat olemassa, mutta joita ei ole kirjattu [enumerated] mihinkään oikeaan järjestelmän väylään. Tämä tuki voi vaatia mutkikkaampaa työtä (kuten kiinteän ohjelmiston [firmware] lukeminen) joillain alustoilla, mutta yleensä tänä on vain suojakuori [wrapper], joka varmistaa, että kaikki laitteet käsitellään standardoidulla tavalla uudessa ajurikuviossa [driver paradigm].

Ulkoiset laitteet

Vaikka onkin totta, että vanhemmantyyliset sisäiset laiteväylät eivät ole nähneet paljoakaan uusia ominaisuuksia viimeisimmän kehityskierroksen aikana, samaa ei voi sanoa kuumista uusista laitteista. Ehkä kaikkein tärkein muutos tällä alueella on uusi tuki USB 2.0-laitteille. Nämä laitteet, joita yleensä kutsutaan "high speed USB"-laitteiksi, tukevat kaistanleveyttä jopa 480 megabittiin sekunnissa asti verrattuna nykyisen USB:n 12 megabittiin sekunnissa. Läheinen uusi standardi, "USB On-the-GO" (tai USB OTG), pisteestä toiseen-muunnelma USB-protokollaan laitteiden kytkemiseen suoraan toisiinsa (esimerkiksi digitaalisen kameran kytkemiseen tulostimeen ilman PC:tä välissä) ei ole tuettu Linux 2.6:ssa. (Korjaustiedostoja tätä ominaisuutta varten on tarjolla, mutta niitä ei ole vielä liitetty viralliseen julkaisuun.) Laitetuen lisäksi paljon siitä tavasta, miten USB-laitteet sisäisesti kirjataan, on järjestetty niin, että nyt on mahdollista käyttää useampia samantyyppisiä laitteita Linuxista samaan aikaan. Suurten muutosten lisäksi tässä kehityskierroksessa on ollut painotusta yksinkertaistamiseen, vakauteen ja yhteensopivuuteen, joiden pitäisi kohentaa USB-laitteiden tukea kaikille Linux-käyttäjille.

Tyystin toisessa päässä kenttää Linux 2.6:ssa on ensimmäistä kertaa tuki, joka sallii Linuxia käyttävän laitteen olla USB-laite, eikä USB-isäntä. Tämä esimerkiksi sallii Linuxia käyttävän taskutietokoneesi kytkemisen PC:hen, ja molemmat päät puhuvat oikeaa protokollaa. Paljon tästä tuesta on uutta, mutta tämä on Linuxille oleellinen suunta kohti sulautettuja laitteita.

Langattomat laitteet

Langaton teknologia on todella lähtenyt liikkeelle yleisön keskuudessa muutaman viimeisen vuoden aikana. Usein näyttää siltä, että johdot (paitsi virta...ehkä?) ovat historiaa muutamassa vuodessa. Langattomiin laitteisiin kuuluvat sekä verkkolaitteet (yleisimmät tällä hetkellä) että yleisemmät laitteet kuten taskutietokoneet [PDAs] jne.

Langattoman verkon puolella laitteet voidaan jakaa pitkän matkan (esimerkiksi AX.25-radioamatöörilaitteet) ja lyhyen matkan (yleensä 802.11, mutta joitain vanhempiakin protokollia on olemassa) laitteisiin. Tuki näille molemmille on ollut Linuxin ylpeydenaihe [hallmark] alkuajoista lähtien (v1.2) ja molempia näitä alijärjestelmiä on päivitetty 2.6:sen kehityksen aikana. Suurin muutos tässä kohtaa on se, että suurimmat osat lyhyen matkan alijärjestelmistä erilaisille tuetuille korteille ja protokollille on yhdistetty yhteen "langaton"[wireless]-alijärjestelmään ja API:iin [ohjelmointirajapinta]. Tämä yhdistäminen ratkaisee lukuisia pieniä epäyhteensopivuuksia tavoissa, miten erilaisia laitteita on käsitelty, ja se vahvistaa Linuxin tukea alijärjestelmälle tekemällä keskeisen joukon käyttäjäpuolen työkaluja, jotka toimivat kaikilla tuetuilla laitteilla. Pelkän standardoinnin lisäksi Linux 2.6 esittelee lukuisia yleisparannuksia, mukaanlukien kyvyn ilmoittaa tilanmuutostapahtumasxta (vaikkapa laitteelle jolla on "vaeltava" [roaming] tila) ja muutos TCP:hen, jotta se voi käsitellä paremmin säännöllisiä viivepiikkejä, mitä esiintyy langattomissa laitteissa. Välittömän halun tukea paremmin langattomia laitteita Linux 2.4-ytimessä vuoksi moni näistä muutoksista on jo sovitettu takaisin 2.4:ään ja ne ovat käytettävissä.

Yleisellä langattomien laitteiden puolella on ollut samanlaisia edistysaskeleita. IrDA (infrapunaprotokolla joka on nimetty "Infrared Data Associates"-ryhmän mukaan) on saanut joitain parannuksia viimeisimmän suuren julkaisun jälkeen, kuten virranhallinnan ja yhdistämisen uuteen ytimen ajurimalliin. Todelliset parannukset on tehty Linux-tuen tarjoamisessa Bluetooth-laitteille. Bluetooth on uusi langaton protokolla, joka on suunniteltu lyhyelle matkalle ja pieneen virrankulutukseen, mutta sillä ei ole näköyhteysvaatimusta, joka IrDA:lla on. Bluetooth protokollana on suunniteltu menemään "minne vain" ja se on toteutettu sellaisiin laitteisiin kuin taskutietokoneet, kännykät, tulostimet ja oudommat laitteet kuten autovarusteet. Itse protokolla on tehty kahta tietolinkkityyppiä varten: SCO ("Synchronous Connection Oriented") hukallisiin [lossy] äänisovelluksiin ja L2CAP ("Logical Link Control and Adaptation Protocol") luotettavampiin yhteyksiin tukien uudelleenlähetystä jne. L2CAP-protokolla tukee edelleen erilaisia aliprotokollia (Mukaanlukien RFCOMM pisteestä pisteeseen verkottamista varten ja BNEP Ethernet-tyylistä verkottamista varten.) Linuxin tuki asioille, joita Bluetooth osaa tehdä, jatkaa kasvamistaan ja voimme odottaa tämän kypsyvän merkittävästi, kunhan kuluttajien käsissä on enemmän laitteita. Pitäisi myös mainita, että alustava tuki Bluetoothille on yhdistetty 2.4-ytimen myöhempiin versioihin.

Lohkolaitetuki [block device support]

Tallennusväylät

Erikoistuneet tallennusväylät, kuten IDE/ATA ("Integrated Drive Electronics/Advanced Technology Attachment") ja SCSI ("Small Computer System Interface") ovat saaneet suuria päivityksiä 2.6-kierroksen aikana. Enimmät suuret muutokset ovat keskittyneet IDE-alijärjestelmään, joka on kirjoitettu uudelleen (ja uudelleen) uuden ytimen kehittämisen aikana, ratkaisten monia skaalautuvuusongelmia ja muita rajoituksia. Esimerkiksi IDE CD/RW-asemat voivat kirjoittaa suoraan oikean IDE-ajurin kautta, mikä on paljon siistimpi toteutus kuin ennen. (Aiemmin tarvittiin erityinen SCSI-emulaatioajuri joka oli hämmentävä ja usein vaikea.) Lisäksi uusi tuki on lisätty hyvin nopeille Sarja-ATA(S-ATA)-laitteille, joiden siirtonopeudet ylittävät 150 megatavua sekunnissa. SCSI-puolella on monia pieniä parannuksia ympäri järjestelmää sekä laajemmalle laitetuelle että skaalautuvuudelle. Yksi erityinen parannus vanhemmille järjestelmille on Linuxin tuki SCSI-2-monipolkulaitteille joilla on enemmän kuin 2 LUN:ia ["LUN" on "looginen leitenumero"] per laite (SCSI-2 on edellinen versio SCSI-laitestandardista, noin vuodelta 1994.) Toinen tärkeä muutos on se, että Linux voi palata [fall back] kokeilemaan tallennusvälineen vaihtoa kuten Microsoft Windows tekee, ollakseen yhteensopivampi niiden laitteiden kanssa, jotka eivät täysin seuraa määritystä. Samalla kun nämä teknologiat ovat käyneet vakaammiksi ajan myötä, on Linux-tukikin niille vakautunut.

Linux sisältää nyt tuen uudempien koneiden EDD BIOS:in ("Enhanced Disk Device") suoraan lukemiseen, vaikkakaan se ei ole tallennusväylä itsessään, nähdäkseen miten palvelin näkee omat levynsä. EDD BIOS sisältää tietoa kaikista tallennusväylistä, jotka on liitetty järjestelmään, joista BIOS tietää (sekä IDE- että SCSI-). Liitettyjen laitteiden asetus- ja muun tiedon saamisen lisäksi tämä tarjoaa lukuisia muita etuja. Uusi rajapinta esimerkiksi sallii Linuxin tietää, miltä levyltä se on käynnistetty, mikä on käytännöllistä uusissa järjestelmissä, joissa tämä ei ole ilmeistä. Tämä sallii älykkäiden asennusohjelmien pohtia tätä tietoa, kun ne yrittävät päätellä, mihin esimerkiksi Linuxin käynnistyslataaja [boot loader] laitetaan.

Näiden kaikkien muutosten lisäksi pitäisi uudelleen painottaa, että kaikki laiteväylätyypit (laitteisto-, langattomat ja tallennus-) on yhdistetty Linuxin uuteen laitemallialijärjestelmään. Joissain tapauksissa nämä muutokset ovat puhtaasti kosmeettisia. Muissa tapauksissa on joitan merkittäviä muutoksia mukana (esimerkiksi laitteiden havaitsemislogiikkaa on pitänyt muokata.)

Tiedostojärjestelmät

Ilmeisin lohkolaitteen käyttö Linuxissa (tai muissa järjestelmissä) on luoda tiedostojärjestelmä sille, ja Linuxin tuki tiedostojärjestelmille on parantunut valtavasti monessakin suhteessa sitten Linux 2.4:n. Näiden muutosten avain on tuki laajennetuille attribuuteille ja POSIX-tyyliselle oikeuksien käsittelylle.

Kun ollaan tekemisissä pelkästään perinteisten Linux-tiedostojärjestelmien kanssa, laajennetut tiedostojärjestelmät (joko "ext2" tai "ext3") ovat ne, mitkä eniten mielletään Linux-järjestelmään kuuluviksi. (ReiserFS on kolmanneksi yleisin vaihtoehto.) Koska nämä ovat ne tiedostojärjestelmät, joista käyttäjät eniten välittävät, niitä on paranneltu eniten Linux 2.6:sen kehityksessä. Näiden muutosten pääasia on tuki "laajennetuille attribuuteille", tai metadatalle, joka voidaan sisällyttää tiedostojärjestelmään itseensä jotain tiettyä tiedostoa varten. Joitain näistä attribuuteista käyttää järjestelmä, ja ne ovat vain pääkäyttäjän [root] luettavissa tai kirjoitettavissa. Monet muut käyttöjärjestelmät, kuten Windows ja MacOS käyttävät jo mittavasti tämänkaltaisia attribuutteja. Ikävä kyllä käyttöjärjestelmien UNIX-perintö ei ole yleensä sisältänyt hyvää tukea näille attribuuteille ja monet käyttäjäpuolen työkalut (kuten "tar") pitää päivittää ennenkuin ne tallettavat ja palauttavat näitä lisätietoja. Ensimmäinen todellinen käyttö uudelle laajennetulle attribuutialijärjestelmälle on toteuttaa POSIX-käyttöoikeuksien hallintalistat [ACLs, access control lists], ylijoukko UNIX:in standardioikeuksista, joka sallii tarkemman hallinnan. Näiden ext3:n muutosten lisäksi on monia muitakin muutoksia: lokin [journal] kirjoitusaikaväliä voidaan säätää kannettavien käyttäjille paremmin sopivaksi (levy saattoi käynnistyä, jos se oli virransäästötilassa.) Käyttöönoton vipuja [mount options] voidaan nyt tallentaa tiedostojärjestelmään itseensä (niin ettei niitä tarvitse kertoa käyttöönottohetkellä), ja hakemiston voi merkitä "luetteloiduksi" [indexed] tiedostojen hakemisen nopeuttamiseksi.

Vanhojen Linux-tiedostojärjestelmien lisäksi uusi ydin tarjoaa täyden tuen uudelle (Linuxissa uudelle) XFS-tiedostojärjestelmälle. Tämä tiedostojärjestelmä on johdettu Irix-järjestelmien oletustiedostojärjestelmästä ja tämä on lohkotasolla yhteensopiva esikuvansa kanssa. Kuten laajennetut tiedostojärjestelmät ja Reiser, sitä voidaan käyttää juurilevyn tiedostojärjestelmänä ja se jopa tukee uudempia ominaisuuksia kuten laajennettuja attribuutteja ja ACL:iä. Monet jakelijat alkavat tarjota tätä tiedostojärjestelmää Linux 2.4-paketeissaan, mutta nähtäväksi jää, minkä paikan tämä tiedostojärjestelmä saa UNIX-tyylisten tiedostojärjestelmien jo valmiiksi kansoitetulla areenalla [pantheon].

Näiden ulkopuolella Linux on saanut parannuksia sekä tiedostojärjestelmäkerroksen sisä- että ulkopuolelle parantaakseen yhteensopivuutta hallitsevien PC-käyttöjärjestelmien kanssa. Linux 2.6 tukee nyt Windowsin "Loogista Levynhallintaa" (eli "Dynaamisia Levyjä"). Se on uusi osiotaulujärjestely, mitä Windows 2000 ja myöhemmät käyttävät salliakseen helpomman osioiden koon muuttamisen ja useiden osioiden luomisen. (Ei tietenkään ole todennäköistä, että Linux-järjestelmät käyttävät tätä järjestelyä uusiin asennuksiin lähiaikoina.) Linux 2.6 pitää myös sisällään parannetun (ja uudelleenkirjoitetun) tuen NTFS-tiedostojärjestelmälle ja nyt on mahdollista ottaa käyttöön NTFS-alue [volume] luku-/kirjoitustilassa. (Kirjoittamisen tuki on vielä kokeellista ja se paranee asteittain; se joko on tai ei ole oletuksena päällä [enabled] lopullisessa ytimen [2.6-]julkaisussa.) Ja lopuksi, Linuxin tuki FAT12:lle (DOS-tiedostojärjestelmä, jota käytetään todella vanhoissa järjestelmissä ja levykkeillä) on parantunut, jotta päästään kiertämään joitain bugeja eräissä MP3-soittimissa, jotka käyttävät tuota formaattia. Vaikkakaan OS/2 ei ole kovin hallitseva markkinoilla, Linux on parantanut OS/2-yhteensopivuutta lisäämällä laajennettujen attribuuttien tuen HPFS-tiedostojärjestelmään. Kuten edellisissäkin versioissa, uudet lisäykset Linux 2.6:een havainnollistavat muiden kanssa hyvin toimimisen tärkeyttä ja vahvistavat Linuxin asemaa "Sveitsin armeijan linkkuveitsi"-käyttöjärjestelmänä.

Näiden muutosten lisäksi on lukuisia hajanaisia muutoksia Linuxin tiedostojärjestelmätuessa. Levyosuuksien tuki [quota support] on kirjoitettu uudelleen, että voidaan tukea suurempaa määrää käyttäjiä yhdessä järjestelmässä. Yksittäiset hakemistot voidaan merkitä synkroniseksi, jolloin kaikki muutokset (lisätyt tiedostot jne.) ovat atomisia. (tämä on käyttökelpoisin postijärjestelmissä ja hakemistoihin pohjaavissa tietokannoissa, sekä hieman paremmassa pelastamisessa [palautuksessa? "recovery"] levyrikon sattuessa.) Läpinäkyvä pakkaus (ainoastaan Linuxissa) on lisätty ISO9660-tiedostojärjestelmään (CD-ROM:eilla käytetty tiedostojärjestelmä). Ja lopuksi, uusi muistipohjainen tiedostojärjestelmä, ("hugetlbfs") on luotu pelkästään jaettua muistia käyttäviä tietokantoja varten.

Syöte-/tulostetuki [Input/Output Support]

"Uloimmalla" laidalla mitä tahansa tietokonejärjestelmää ovat syöte- ja tulostelaitteet, jotka eivät koskaan näytä niin tärkeältä kuin ne ovat. Näihin kuuluvat ilmeiset asiat kuten hiiret ja näppäimistöt, ääni- ja näyttökortit ja vähemmän ilmeiset asiat kuten peliohjaimet ja helppopääsyisyyslaitteet [accessibility devices]. Monia Linuxin loppukäyttäjäalijärjestelmiä on laajennettu 2.6-kehityskierroksen aikana, mutta kaikkein yleisimpien laitteiden tuki on jo aika kypsä. Linux 2.6:sen parannettu tuki on laajalti johdettu suoraan yleisemmistä parannuksista ulkoisten väylien tuesta, kuten mahdollisuus käyttää langattomia Bluetooth-näppäimistöjä yms. On kuitenkin alueita, missä Linux on kokenut suurempia parannuksia.

Ihmisrajapinnan laitteet [Human Interface Devices]

Suuri sisäinen muutos Linux 2.6:ssa on ihmisrajapinnan kerroksen uudelleentyöstäminen. Ihmisrajapinnan kerros on käyttäjäkokemuksen keskus Linux-järjestelmässä, sisältäen näyttötulostuksen, hiiret ja näppäimistöt. Ytimen uudessa versiossa tätä kerrosta on työstetty ja modularisoitu paljon pidemmälle kuin koskaan aiemmin. Nyt on mahdollista luoda täysin "päätön" ["headless"] Linux-järjestelmä ilman mitään tukea näytölle tms. Pääasiallinen etu tästä modulaarisuudesta voi olla sulautettujen kehittäjille, he voivat tehdä laitteita, joita hallitaan vain verkon tai sarjaliitännän kautta. Loppukäyttäjien hyöty tästä on se, että monet pohjimmaiset oletukset laitteista ja arkkitehtuureista on modularisoitu. Esimerkiksi aiemmin oletettiin aina, että jos sinulla on PC, tarvitset tuen vakio-AT:n näppäimistöohjaimelle (i8042); Linuxin uudessa versiossa tämä vaatimus on poistunut, jolloin tarpeeton koodi voidaan pitää poissa perintövapaista [legacy-free] järjestelmistä.

Linuxin tuki näyttötulostukselle on kokenut muutoksia, vaikka monet näistä ovatkin käyttökelpoisia vain kokoonpanoissa jotka käyttävät ytimen sisäistä konsolin näyttöpuskurialijärjestelmää [console framebuffer subsystem]. (Suurtaa osaa Intel-Linux-koneista ei ole asennettu tähän tapaan, mutta muiden arkkitehtuurien kanssa asia ei ole näin.) Henkilökohtaisena mielipiteenäni paras asia on se, että käynnistyskuva (söpö pingviini, jos ette ole koskaan nähneet) tukee nyt jopa 24-bittistä tarkkuutta. Se sikseen, muut konsolin uudet ominaisuudet sisältävät koon muuttamisen ja kiertämisen (taskutietokoneille ja sellaisille) ja laajennetun kiihdytystuen useammalle laitteelle. Lopuksi, Linuxissa on nyt ytimen tuki VESA("Video Electronics Standard Association")-näyttöjen ominaisuuksien kyselemiseen, vaikka XFree86 ja monien levityspakettien asennusjärjestelmät kattavat tämän yksityiskohtaisesti käyttäjäpuolella.

Suurten muutosten lisäksi Linux 2.6:ssa on pieniä muutoksia ihmisen vuorovaikutukseen. Esimerkiksi kosketusnäyttöjä tuetaan nyt. Hiiri- ja näppäimistöajureita on päivitetty ja yhtenäistetty antamaan yksi laitenoodi [device node] (esimerkiksi "/dev/input/mouse0") riippumatta käytetystä laitteistosta tai protokollasta. Myös outoja hiiriä (esimerkiksi usealla rullalla) tuetaan nyt. PC-näppäimistöjen kartoituksia [mappings] on myös päivitetty mukailemaan Windowsin "standardia" laajennetuille näppäimille. Peliohjaintukea on myös parannettu, kiitos lukuisten lisättyjen uusien ajurien (mukaanlukien X-Boxin Gamepadille) sekä uusien ominaisuuksien kuten voimapalautteen [force feedback]. Viimeisenä (muttei vähäisempänä), uusi julkaisu tukee Tieman Voyager braille TTY-laitetta, jolloin sokeilla käyttäjillä on parempi pääsy [access] Linuxiin. (Tämä ominaisuus oli tarpeeksi tärkeä, että se sovitettiin jo takaisin Linux 2.4:ään.)

Sivuhuomautuksena sanottakoon, että Linuxin järjestelmäpyyntörajapinta [system request interface] on muuttunut tukemaan paremmin järjestelmiä, joissa ei ole kiinni näppäimistöä. Systeemipyyntörajapinta ("sysrq") on menetelmä, jolla järjestelmäylläpitäjät voivat saada paikalliselta konsolilta debug-tietoa, pakottaa järjestelmän uudelleenkäynnistyksen, ottaa tiedostojärjestelmän käyttöön "vain luku"-tilassa ja tehdä muita temppuja. Koska Linux 2.6 tukee täysin päättömiä [headless] järjestelmiä, on mahdollista käynnistää näitä tapahtumia käyttämällä /proc-tiedostojärjestelmää. (Tietenkin jos käyttöjärjestelmä lukkiutuu ja se pitää pakottaa tekemään asioita, tästä ei ole paljoa apua.)

Ääni ja multimedia

Linux 2.6:n odotetuimpia uusia ominaisuuksia työpöytäkäyttäjille on ALSA:n ("Advanced Linux Sound Architecture") yhdistäminen vanhemman äänijärjestelmän tilalle. Vanhempi järjestelmä, OSS, "Open Sound System" eli "Avoin äänijärjestelmä" on palvellut Linuxia alkuajoista lähtien, mutta siinä on monia arkkitehtuurin rajoituksia. Ensimmäinen suurempi parannus uudessa järjestelmässä on se, että se on suunniteltu alusta alkaen täysin säie- ja SMP-turvalliseksi, korjaten ongelmia monissa vanhoissa ajureissa, jotka eivät toimineet kunnolla oletetun "pöytäkone-tarkoittaa-yhtä-suoritinta"-kuvion [paradigm] ulkopuolella. Tärkeämpää on se, että ajurit on suunniteltu modulaarisiksi alusta alkaen (vanhojen versioiden käyttäjät muistavat, että modulaarisuus sovitettiin jälkikäteen äänijärjestelmään Linux 2.2:sen aikoihin), ja tämä sallii paremman tuen järjestelmille, joissa on monta äänikorttia, mukaanlukien monta erityyppistä äänikorttia. Riippumatta siitä, kuinka nättejä sisuskalut ovat, järjestelmä ei olisi parannus, ellei siinä olisi viimeisen päälle uusia [whiz-bang] ominaisuuksia, ja uudessa äänijärjestelmässä on monia sellaisia. Näiden joukossa avainasemassa on tuki uudemmalle laitteistolle (mukaanlukien USB-äänilaitteet ja MIDI-laitteet), samanaikainen [full-duplex] soitto ja nauhoitus, laitemiksaus, lomittamaton miksaus, tuki äänilaitteiden "yhdistämiseen" [merging] ja muita asioita. Oletpa sitten audiofiili tai vain pidät MP3:sten soittelusta, Linuxin parantuneen äänituen pitäisi olla tervetullut askel eteenpäin.

Näinä päivinä, yksinkertaisen äänen lisäksi, käyttäjät haluavat tukea todella erikoisille laitteille kuten web-kameroille, radioille, TV-korteille ja digitaalivideosovittimille. Kaikissa tapauksissa Linuxin tuki on parantunut 2.6-julkaisun myötä. Vaikka Linux on tukenut (enemmän tai vähemmän) radiokortteja (usein käyttäjäpuolen [userspace] kautta) monella kehityskierroksella, TV-virittimien ja videokameroiden tuki on lisätty vasta parissa viimeisessä versiossa. Alijärjestelmä nimeltä Video4Linux (V4L) on käynyt läpi suuren päivityksen uudessa ytimen versiossa, mukaanlukien sekä API-siistimistä että lisää toiminnallisuutta korteille. Uusi API ei ole yhteensopiva edellisen kanssa ja sitä tukevat sovellukset pitää päivittää ytimen kanssa. Täysin uusi sarka on Linux 2.6:n sisäänrakennettu tuki DVB-laitteita (Digital Video Broadcast) varten. Tätä laitetyyppiä, joka on yleinen TV:n lisälaitteissa, voidaan käyttää tekemään Linux-palvelimesta Tivo-tyylinen [Nokia mediamaster 260T-tyylinen] laite asianmukaisen ohjelmiston kanssa.

Ohjelmistoparannuksia

Verkko

Kärkikaartin verkkoinfrastruktuuri on aina ollut Linuxin ykkösominaisuuksia. Linux käyttöjärjestelmänä tukee jo useimpia maailman johtavia verkkoprotokollia mukaanlukien TCP/IP (v4 ja v6), AppleTalk, IPX ja muita. (Ainoa tukematon mikä tulee mieleen on IBM:n/Microsoftin vanhentunut ja sotkuinen NetBEUI-protokolla.) Kuten monet muutokset muissa alijärjestelmissä, useimmat verkkolaitemuutokset Linux 2.6:ssa ovat konehuoneen puolella eivätkä ole välittömästi ilmeisiä. Näihin kuuluu matalan tason muutoksia, joissa käytetään hyödyksi laitemallia ja päivityksiä moneen laiteajuriin. Linuxissa on nyt erillinen MII-alijärjestelmä ("Media Independent Interface", "siirtotieriippumaton rajapinta", tai IEE 802.3u), jota moni verkkolaiteajuri käyttää. Tämä uusi alijärjestelmä korvaa monta tapausta, missä jokainen ajuri käsitteli laitteen MII-tukea hieman eri lailla, toisintaen koodia ja ponnisteluja [effort]. Muita muutoksia ovat suuret ISDN-päivitykset ja muut asiat.

Ohjelmapuolella yksi kaikkein suurimpia muutoksia on Linuxin uusi tuki IPsec-protokollille. IPsec, tai IP Security ("IP-tietoturva"), on kokoelma protokollia IPv4:lle ("tavalliselle" IP:lle) ja IPv6:lle, jotka sallivat kryptografisen tietoturvan verkkoprotokollatasolla. Koska turvallisuus on protokollatasolla, sovellusten ei tarvitse erityisesti tiedostaa sitä. Tämä on samankaltainen SSL:n ja muiden tunneloivien/tietoturvaprotokollien kanssa, mutta paljon matalammalla tasolla. Tällä hetkellä tuetut ytimen salaukset pitävät sisällään SHA:n ("secure hash algorithm") erilaiset muunnelmat, DES ("data encruption standard"), ja muita.

Muualla protokollapuolella Linux on parantanut tukeaan multicast-verkoille. Multicast-verkoissa monta tietokonetta ottaa vastaan yhden ainoan lähetetyn paketin. (Vertaa perinteiseen pisteestä pisteeseen -verkkoon, missä puhutaan vain yhdelle kerrallaan.) Pääasiallisesti tätä toiminnallisuutta käyttävät viestijärjestelmät (kuten Tibco) ja ääni-/kuvaneuvotteluohjelmistot. Linux 2.6 parantaa tätä tukemalla useita uusia SSM("Source Specific Multicast")-protokollia, mukaanlukien MLDv2 ("Multicast Listener Discovery") ja IGMPv3 ("Internet Group Messaging Protocol".) Nämä ovat vakioprotokollia, jota tukevat useimmat huippuluokan verkkolaitevalmistajat kuten Cisco.

Linux 2.6:ssa on eriytetty LLC-pino. LLC("Logical Link Control")-protokolla (IEEE 802.2) on matalan tason protokolla jota käytetään monen korkean tason verkkoprotokollan, kuten Microsoftin NetBEUI:n, IPX:n ja AppleTalkin alla. Osana tätä muutosta IPX-, AppleTalk- ja Token Ring-ajurit on kirjoitettu uudestaan, jotta hyödyttäisiin uudesta yhteisestä alijärjestelmästä. Lisäksi ulkoinen taho on rakentanut toimivan NetBEUI-pinon ja nähtäväksi jää, yhdistetäänkö sitä koskaan vakioytimeen.

Näiden muutosten lisäksi on joukko pienempiä muutoksia. IPv6 on kokenut joitain suuria muutoksia ja se toimii myös Token Ring -verkoissa. Linuxin NAT/masquerading-tukea on laajennettu käsittelemään protokollia jotka vaativat monta yhteyttä (H.323, PPTP, jne.) Linuxin reititinrintamalla, tuki VLAN:ien asettamiseen Linuxissa ei ole enää "kokeellinen".

Verkkotiedostojärjestelmät

Linuxin käyttövarman verkkoprotokollatuen päällä on Linuxin yhtä käyttövarma tuki verkkotiedostojärjestelmille. Verkkotiedostojärjestelmän käyttöönotto [mounting] (ja joskus julkaiseminen [exporting]) on yksi harvoista korkean tason verkko-operaatioista, mistä ydin suoranaisesti huolehtii. (Toinen ilmeisin, "network block device", "verkkolohkolaite", ei muuttunut paljoakaan 2.6:ssa ja sitä käytetään lähinnä erikoistuneissa sovelluksissa, missä sillä tehdään kuitenkin jotain tiedostojärjestelmätyylistä.) Kaikki muut verkko-operaatiot jätetään käyttäjäpuolelle ja pois ytimen kehittäjiltä.

Linux- ja UNIX-kloonimaailmassa yleisin verkkotiedostojärjestelmä on pätevästi nimeltään NFS ("Network File System", "verkkotiedostojärjestelmä"). NFS on monimutkainen tiedostonjakoprotokolla, jolla on juuret syvällä UNIX:issa (ja erityisesti Sun Solariksen erinomainen toteutus). Ensisijainen tiedonsiirtoprotokolla voi käyttää joko TCP:tä tai UDP:tä, mutta useita aliprotokollia tarvitaan lisäksi, ja jokainen pyörii erillisessä RPC-protokollassa ("remote procedure call", "etäohjelmakutsu"). Näihin kuuluu erillinen "mount"-protokolla autentikointia varten ja NLM ("network lock manager", "verkkolukkohallinto") tiedostojen lukitsemiseen. (Yleinen toteutus on myös läheisesti sidoksissa muihin RPC-pohjaisiin protokolliin, mukaanlukien NIS-- "network information service", "verkkotietopalvelu" -- autentikointia varten. NIS ja sen jälkeläiset eivät ole yleisessä käytössä Linux-koneissa perustavaa laatua olevien turvareikien takia.) Ehkä tämän monimutkaisuuden takia NFS:ää ei ole laajalti sovitettu Internet-protokollaksi.

Linux 2.6:ssa tämä oleellinen Linux-tiedostojärjestelmä sai monia päivityksiä ja parannuksia. Suurin näistä parannuksista on se, että Linux tukee kokeellisesti uutta eikä niinkään laajalti käyttöönotettua NFSv4-protokollaversiota sekä asiakas- että palvelintoteutuksessa. (Edelliset Linuxin versiot tukivat vain v2- ja v3-versioita protokollasta.) Uusi versio tukee vahvempaa ja turvallisempaa autentikointia (kryptografian kanssa), älykkäämpää lukitusta, tukea pseudotiedostojärjestelmille ja muita muutoksia. Kaikkia uusia NFSv4:n ominaisuuksia ei ole vielä toteutettu Linuxissa, mutta tuki on suhteellisen vakaa ja voisi olla jo käytössä joissain tuotantosovelluksissa. Lisäksi, Linuxin NFS-palvelintoteutusta on parannettu paremmin skaalautuvaksi (64 kertaa niin paljon käyttäjiä ja suuremmat pyyntöjonot [request queues]), täydellisemmäksi (tukemalla palvelua TCP:n yli UDP:n lisäksi), käyttövarmemmaksi (erilliset tiedostojärjestelmäajurit voivat mukauttaa tapaansa, miten tiedostoja jaetaan sovittaakseen sen paremmin niiden erityispiirteisiin), ja helpommin ylläpidettäväksi (hallinta tapahtuu uuden "nfsd"-tiedostojärjestelmän kautta systeemikutsujen sijaan.) Konehuoneen puolella voi olla muitakin muutoksia, mukaanlukien lockd:n ja nfsd:n erottaminen, ja tuki kopiottomaan verkkoliikenteeseen ("zero-copy networking") tuetuilla rajapinnoilla. NFS:stä on tehty jonkin verran helpompi turvata sallimalla ytimen lockd:n porttinumeroiden määrääminen ylläpitäjän toimesta. NFS-asiakkaan puoli on hyötynyt alemman tason RPC-protokollan toteutuksen parannuksista, mukaanlukien välimuisti-inftastruktuuri, yhteydenhallinta UDP:n yli ja muita parannuksia TCP:lle. Linuxin tuki NFS-pohjaisten levyjen käyttämiseen juuritiedostojärjestelmänä (levyttömiin järjestelmiin) on parantunut, koska ydin tukee NFS:ää TCP:n yli tähän tarkoitukseen.

Sen lisäksi, että tuki UNIX-tyylisille verkkotiedostojärjestelmille on parantunut, Linux 2.6 tuo tullessaan monia parannuksia Windows-tyylisiin verkkotiedostojärjestelmiin. Standardi jaettu tiedostojärjestelmä Windows-palvelimille (kuin myös OS/2:lle ja muille käyttöjärjestelmille) on ollut SMB("server message block")-protokolla ja Linux-ytimessä on ollut erinomainen asiakastuki SMB:lle monessa versiossa. Windows 2000 standardisoi päivitetyn ylijoukon SMB:stä nimeltä CIFS ("common internet filesystem".) Tämän suuren päivityksen tarkoitus oli virtaviivaistaa ja hioa joitain osia SMB:stä itsestään, mistä oli tullut siihen mennessä täysi sotku. (Protokolla oli väljästi määritelty ja monesti laajennettu niin pitkälle, että Win95/98/ME-versio ei ollut yhteensopiva WinNT/Win2k-version kanssa.) CIFS toteutti tämän tarkoituksen, ja lisäsi UNICODE-tuen, paransi tiedostojen lukitusta, eliminoi viimeiset rippeet NetBIOS-riippuvuuksista ja lisäsi muutamia uusia ominaisuuksia Windows-käyttäjille. Koska Linux-käyttäjät eivät pidä siitä, että ovat pitkään pimeässä, Linux 2.6:ssa on täysin uusiksi kirjoitettu tuki CIFS-tiedostojärjestelmien natiiviin [native] käyttöönottoon [mounting]. Linux 2.6:ssa on myös tuki SMB-UNIX-laajennuksille SMB- ja CIFS-protokolliin, jotka sallivat Linuxin käsitellä ei-Windows-tiedostotyyppejä (kuten laitenoodeja ja symbolisia linkkejä) SMB-palvelimilla, jotka tukevat tällaista (kuten Samba.) Linux ei ole unohtanut Novell- ja Netware-käyttäjiä, vaikkeivät ne ole kovin yleisiä nykyään. Linux 2.6 antaa Linux-asiakkaiden ottaa käyttöön jopa 256 levyjakoa yhdestä NetWare-levyalueesta [volume] käyttäen sisäänrakennnettua NCP:tä ("NetWare Core Protocol") tiedostojärjestelmäajuria.

Linux 2.6:ssa on parantunut tuki suhteellisen uudelle alueelle: hajautetuille verkkotiedostojärjestelmille, järjestelmille, missä yhden loogisen levyalueen tiedostot voivat sijaita hajallaan useissa koneissa. CODA-tiedostojärjestelmän, joka esiteltiin Linux 2.4:ssä, lisäksi Linux tukee jonkin verran kahta muuta hajautettua tiedostojärjestelmää: AFS:ää ja InterMezzoa. AFS, "Andrew filesystem" (nimetty noin koska se kehitettiin alunperin CMU:ssa), on tällä hetkellä hyvin rajallinen ja rajattu vain lukuoperaatioihin. (Ominaisuuksiltaan kokonaisempi versio AFS:stä on saatavilla virallisen ytimen ulkopuolelta.) Toinen uusi tuettu tiedostojärjestelmä, InterMezzo (myöskin CMU:ssa kehitetty), on tuettu Linux 2.6:ssa ja se sallii edistyneempiä piirteitä kuten yhteyden katkaisun [disconnect] (jolloin voit työskennellä tiedostojen paikallisessa välimuistissa olevien versioiden kanssa) ja se sopii korkean tason saatavuuden [high-availability] sovelluksiin, missä pitää taata, että tallennustila on aina saatavilla (tai teeskennellä, että se on saatavilla, vaikka ei olisikaan). Sillä on myös käyttötarkoituksensa tietojen pitämiseen ajan tasalla usean tietokoneen välillä, kuten kannettavan tai taskutietokoneen ja pöytäkoneen välillä. Monet projektit, jotka tarjoavat tukea näille uudentyyppisille tiedostojärjestelmille, ovat alunperin Linuxilla kehitettyjä, vieden Linuxin etulinjaan uusien ominaisuuksien tuessa.

Sekalaisia ominaisuuksia

Tietoturva

Linux 2.6:n muutokset, jotka eivät saa tarpeeksi huomiota, ovat runsaslukuiset tietoturvaan liittyvät muutokset. Perustavinta laatua oleva muutos on koko ydinpohjaisen tietoturvan (UNIX:in kaltaisen käyttöjärjestelmän pääkäyttäjän [super user] oikeudet) modularisointi yhdeksi vaihtoehtoisista turvamalleista. (Tällä hetkellä tosin ainoa tarjottu turvamalli on tämä oletusmalli ja esimerkki, kuinka voit tehdä oman mallisi.) Osana tätä muutosta kaikki ytimen osat on päivitetty käyttämään "kykyjä" [capabilities] hienojakoisemman käyttäjäoikeuksien hallinnassa vanhan pääkäyttäjän ["superuser"] sijaan. Lähes kaikissa Linux-järjestelmissä tulee jatkossakin olemaan "root"-tunnus, jolla on täydet oikeudet, mutta tämä mahdollistaa Linuxin kaltaisten järjestelmien luomisen, joissa ei ole tätä perusoletusta. Toinen tietoturvaan liittyvä muutos on se, että binäärimodulit (esimerkiksi laitevalmistajien toimittamat ajurit) eivät voi enää "ylikuormittaa" systeemikutsuja omillaan eivätkä modulit enää näe tai voi muokata systeemikutsutaulukkoa. Tämä rajoittaa merkittävästi sitä, mitä suljetun lähdekoodin [non-open source] modulit voivat tehdä ytimessä ja mahdollisesti sulkee joitain lainopillisia porsaanreikiä GPL:n ympäriltä. Viimeinen muutos, joka on jotenkin tietoturvaan liittyvä, on se, että Linux voi uudella ytimellä käyttää laitteistopohjaisia satunnaislukugeneraattoreita (kuten joistain uusista prosessoreista löytyviä) sen sijaan, että luotettaisiin (myönnettäköön että aika hyvään) entropialähteeseen, joka pohjautuu satunnaisiin laitteiston vaihteluihin [fluctuations].

Linuxin virtualisointi

Mielenkiintoisimpia uusia ominaisuuksia Linux 2.6:ssa on "user-mode"-arkkitehtuurin mukaanottaminen. Tämä on oleellisimmilta osiltaan Linuxin sovitus itseensä (kuten eri laitteistoperheeseen sovitus), mahdollistaen täysin virtualisoidun "Linux Linuxissa"-ympäristön käytön. Uusi Linux-instanssi pyörii kuten se olisi tavallinen sovellus. Sovelluksen "sisällä" voi muuttaa verkkoliitäntöjen asetuksia, tiedostojärjestelmiä ja muita laitteita erikoisajurien kautta. Nämä erikoisajurit keskustelevat isäntä-Linuxin kanssa turvallisesti. Tämä on osoittautunut hyvin käyttökelpoiseksi sekä kehitystarkoituksissa (profilointi jne.) että tietoturva-analyysissä että hunajaruukuissa [honeypots]. Vaikka useimmat käyttäjät eivät koskaan tarvitse tällaista tukea, se on uskomattoman "viileä" ominaisuus koneessasi. (Tee vaikutus ystäviisi!)

Kannettavat

Kaiken muun edellämainitun yleisen tuen lisäksi (parannettu APM ja ACPI, langattomien tuen parannukset jne.) Linuxissa on myös kaksi muuta vaikeasti luokiteltavaa ominaisuutta, joista on apua parhaiten kannettavien käyttäjille. Ensimmäinen on se, että ytimen uusi versio tukee nyt ohjelmallista pysäytä-levylle[suspend-to-disk]-toiminnallisuutta liikkuville Linux-käyttäjille. Tässä piirteessä on vielä joitain bugeja selvitettävämä [to iron out], mutta se näyttää vakaalta monessa kokoonpanossa. Uusi versio tukee myös nykyaikaisten mobiilisuorittimien kykyä muuttaa nopeuttaan (ja käytännössä tehovaatimuksiaan [power requirements]) riippuen siitä, onko kone kytketty sähköverkkoon vai ei.

Asetusten hallinta

Linux 2.6:ssa on ominaisuus, joka voi vaikuttaa pieneltä joidenkin mielestä, mutta se sekä auttaa suuresti kehittäjien keinoja jäljittää loppukäyttäjillä ilmenneitä ytimen ongelmia että helpottaa yksittäisten ylläpitäjien tietämystä monen koneen asetusten yksityiskohdista. Lyhyesti, ydin tukee kaikkien asetustietojen lisäämistä ytimeen itseensä. Nämä tiedot sisältävät sellaisia yksityiskohtia kuin mitkä ytimen asetukset on valittu, mitä kääntäjää käytettiin ja muita yksityiskohtia, joilla saadaan tehtyä samanlainen ydin, jos tarve vaatii. Tämä tieto on käyttäjien nähtävillä /proc-rajapinnan kautta.

Olemassaolevien sovellusten tuki [legacy support]

Vaikka Linux 2.6 on suurempi päivitys, ero käyttäjäpuolen [user-mode] sovelluksiin on lähes olematon. Yksi suurempi poikkeus tähän sääntöön näyttää olevan säikeistys: Jotkin sovellukset voivat tehdä asioita, jotka toimivat 2.4:n ja 2.2:n alla, mutta niitä ei enää sallita. Näiden sovellusten pitäisi kuitenkin olla poikkeus säännöstä. Tietenkään matalan tason sovellukset kuten modulityökalut eivät toimi. Lisäksi jotkin tiedostot ja muotoilut [formats] /proc- ja /dev -hakemistoissa ovat muuttuneet, ja sovellukset, jotka riippuvat näistä, eivät ehkä toimi oikein. (Tämä pitää paikkaansa etenkin kun siirrytään uuteen virtuaaliseen "/sys"-tiedostojärjestelmään. "/dev":in tapauksessa taaksepäin yhteensopivat laitenimet voidaan asettaa helposti.)

Tavallisten standardipuolustelujen [standard disclaimers] lisäksi on joukko muita pienempiä muutoksia, jotka voivat vaikuttaa joissain ympäristöissä. Ensinnäkin erittäin vanhat swap-tiedostot (Linux 2.0:sta tai aiemmat) pitää alustaa uudelleen [reformat] ennenkuin niitä voidaan käyttää 2.6:n kanssa. (Koska swap-tiedosto ei pidä sisällään mitään pysyvää tietoa, tämän ei pitäisi olla ongelma kenellekään.) Ytimen kHTTPd-palvelin, joka salli ytimen palvella suoraan web-sivuja, on poistettu, koska suurin osa suorituskykypullonkauloista, jotka estivät Apachen, Zeusin ynnä muiden pääsemistä ytimen nopeuksiin, on saatu ratkaistua. DOS/Windows-"levynhallintaohjelmien" kuten OnTrack ja EzDrive, jotka tukevat suuria kiintolevyjä vanhan BIOS:in alla, automaattinen tunnistaminen on poistettu. Viimeiseksi, tuki erityisen ytimen sisältävän käynnistyslohkon käyttäminen levykkeeltä käynnistämiseen on poistettu; nyt pitää käyttää SysLinuxia sen sijaan.

Pohjimmaisia Asioita

Tämä dokumentti on koottu enimmäkseen pitkinä tunteina Bitkeeperin muutoslokien parissa, lähdekoodia katsomalla ja räpläämällä [playing with], lukemalla postituslistoja ja etsimällä lukuisilla Google- ja Lycos-hauilla dokumenttia tästä ja tuosta. Sinällään, on varmasti paikkoja, missä jotain on voinut jäädä huomaamatta tai on käsitetty väärin, ja paikkoja missä jotain olisi voitu muuttaa jälkikäteen. (Olen ollut erityisen varovainen kahden IDE-tuen version kanssa, joita työstettiin tällä aikavälillä, mutta on muitakin esimerkkejä.) Koska osa tutkimustyöstäni on tehty katsomalla eri ydinprojektien www-sivuja, minun on täytynyt olla tarkkana, etteivät itsenäiset projektit olleet ominaisuuksineen pidemmällä kuin mitä virallinen Linux-koodi. Jos näet tässä dokumentissa virheitä tai haluat kysyä, miten päiväni on mennyt, voit tehdä niin. Osoite on jpranevich <at> kniggit.net.

[Suomentajan nootti: suomennoksen -ja muistakin- virheistä saa kommentoida osoitteeseen marnur ät tuug piste fi. Saa toki kommentoida muutenkin, olkaa hyvä vaan. Päiväni menevät yleensä hyvin.]

Viimeisin [englanninkielinen] versio tästä dokumentista löytyy aina osoitteesta http://kniggit.net/wwol26.html.

[suomenkielinen versio tästä dokumentista löytyy osoitteesta http://www.tuug.fi/~marnur/wwol26fi.html]

Käännökset

Etkö puhu englantia? Tämä dokumentti (tai vanhempi versio) on käännetty kouralliselle muita kieliä.

Bulgaria - http://kniggit.net/wwol26bg.html (Ivan Dimov)

Kiina - http://www-900.ibm.com/developerWorks/cn/linux/kernel/l-kernel26/index.shtml (Stone Wang ym.)

Tsekki - http://www.linuxzone.cz/index.phtml?ids=10&ersand;idc=782 (David Haring)

Ranska - http://dsoulayrol.free.fr/articles/wonderful_2.6.html (David Soulayrol)

Unkari - http://free.srv.hu/b/e/behun/pn/modules.php?op=modload&name=News&file=index&catid=&topic=12 (Ervin Novak) (Ei vielä valmis.)

Italia - http://www.opensp.org/tutorial/vedi.php?appartenenza=42&pagine=1 (Giulio Ciuffi Vampa)

Portugali (BR) - http://geocities.yahoo.com.br/cesarakg/wwol26-ptBR.html (Cesar A. K. Grossmann)

Venäjä - http://www.opennet.ru/base/sys/linux26_intro.txt.html (Sergey Prokopenko)

Espanja - http://www.escomposlinux.org/wwol26/wwol26.html (Alex Fernández)

Lyhennetty versio tästä dokumentista ilmestyi saksaksi LanLine-lehden 20.9.2003 numerossa. Uskon, että myös lyhentämätöntä versiota kuljeksii ympäriinsä, mutten ole varma linkistä. Jos tiedätte muita käännöksiä, joita voisi lisätä tähän listaan, kertokaa minulle.

Alkuperäisen dokumentin Copyright © Joseph Pranevich 2003. [Käännetty versio © Marko Nurminen 2003.]

Levittäminen verkossa ilman muutoksia on sallittua. Verkon ulkopuolella levitystä (kokonaisena tai osittain) rohkaistaan myös, mutta ottakaa yhteyttä sähköpostilla ensin yksityiskohdista keskustelua varten. Käännöksiäkin rohkaistaan tekemään; olkaa hyvä ja lähettäkää kuitenkin sähköpostia niin voin auttaa koordinoinnissa.

[Suomeksi käännettyyn versioon pätevät samat ehdot kuin alkuperäiseenkin dokumenttiin.]