Linux -- tekninen yhteenveto Lars Wirzenius ja Ari Lemmke 28.3.1994 Johdanto ******** Tämän kirjoituksen tarkoituksena on kertoa mikä on Linux, mitä hyötyä siitä on, mitä sen käyttäminen vaatii ja mistä sen saa. Yleiskuva Linuxista ******************* Käyttöjärjestelmä on ohjelmisto, joka toimii eristävänä kerroksena tietokonelaitteiston ja sovellusohjelmien välillä. Sen tarkoituksena on toisaalta tehdä sovellusohjelmille helpommaksi käyttää laitteiston tarjoamia mahdollisuuksia, toisaalta eristää samanaikaisesti ajettavat sovellusohjelmat toisistaan. UNIX on erityisesti työasemissa ja suurehkoissa tietokoneissa suosittu käyttöjärjestelmä. Se on suosittu myös mikrotietokoneissa, joskin lähinnä mikroverkkojen palvelimissa. UNIXin piirteitä ovat monta samanaikaista käyttäjää, monta samanaikaisesti ajettavaa ohjelmaa, yhtenäinen verkkotuki, erinomainen ohjelmointiympäristö sekä toimivuus erilaisissa laitteistoissa. UNIXille on saatavilla erittäin suuri määrä vapaita ohjelmia, eli ohjelmia, joita saa vapaasti kopioida ja muuttaa ja joiden lähdekoodi (jota tarvitaan muuttamiseen) on saatavilla. Linux on täysin alusta ohjelmoitu käyttöjärjestelmä, jonka ohjelmointirajapinta on yhteensopiva UNIXin kanssa. Sitä voisi siis sanoa UNIX-klooniksi. Ohjelmointirajapinnan yhteensopivuuden ansiosta miltei kaikki vapaat UNIX-ohjelmat ovat käytössä myös Linuxissa. Joitakin kaupallisia UNIX-ohjelmia on myös saatavilla Linuxille, lähinnä ohjelmointikäyttöön. Ominaisuudet ************ Linuxissa on kaikki UNIXin ominaisuudet. Linuxin omia erityispiirteitä, joita ei kaikissa UNIX-versioissa ole, ovat m.m. erittäin hyvä muistinhallinta, sisäänrakennettu 387-emulaattori ja virtuaalikonsolit. Muistinhallinta --------------- Linux käyttää kaikkea sitä _fyysistä_muistia_ mikä koneessa on asennettuna ja jota prosessori pystyy suoraan osoittamaan (EMS-muistia ei siis pysty käyttämään). Prosessoreista 386SX pystyy osoittamaan suoraan 16 MB fyysistä muistia, 386DX ja kaikki 486-mallit 4 GB. Fyysisen muistin koolle asettaa rajoituksia myös emolevyn rakenne. Fyysisen muistin lisäksi Linux voi käyttää _virtuaalimuistia_, eli jatkaa fyysistä muistia levyltä varattavalla tilalla. Linuxin virtuaalimuisti on täysin sovellusohjelmille näkymätöntä: eroa on vain muistin käytön nopeudessa. Virtuaalimuistia voi käyttää 127,5 MB palasissa yhteensä noin 2 GB, mikäli levytila riittää. Virtuaalimuistin maximikoko on kaikissa 386-yhteensopivissa prosessoreissa sama. Virtuaalimuistille varatun levytilan kokoa voi säätää tarvittaessa käytön aikana. Linux ei automaattisesti muuta virtuaalimuistin kokoa. Linux käyttää kaikkea vapaata fyysistä muistia tiedostojärjestelmän _välimuistina_. Myös kirjoitukset puskuroidaan, eli kirjoitettu data ei mene suoraan levylle. Välimuisti suurenee ja pienenee automaattisesti fyysisen muistin tarpeen mukaan. Jos ohjelmat eivät käytä kaikkea fyysistä muistia, sitä käytetään välimuistina ja kun ohjelmat tarvitsevat lisää muistia välimuistia pienennetään (tai mahdollisesti käytetään virtuaalimuistia, mikäli käyttöjärjestelmä päättelee sen olevan järkevämpää koko järjestelmän tehokkuuden kannalta). Linux _suorittaa_ohjelmat_välimuistista_. Kun ohjelmia suoritetaan, niiden koodi luetaan levyltä välimuistiin. Useimmat käyttöjärjestelmät kopioivat sen vielä välimuistista muualle ja suorittavat vasta sieltä. Muistissa on siten samanaikaisesti kaksi identtistä kopiota samasta asiasta. Ajamalla ohjelmat suoraan välimuistista fyysistä muistia säästyy. Muita muistia säästäviä keinoja ovat _jaettu_koodi_, _jaetut_kirjastot_ ja _tarvelataus_ (demand loading). Moniajojärjestelmässä samaa ohjelmaa ajetaan usein samanaikaisesti useita kertoja. Kaikki saman ohjelman kopiot käyttävät samaa muistissa olevaa ohjelmakoodin kopiota. Vastaavasti aliohjelmakirjastot joita käytetään monissa eri ohjelmissa ovat muistissa vain yhden kerran ja kaikki ohjelmat käyttävät samaa kopiota niistä. Koska ajettavan ohjelman tai aliohjelmakirjastojen koodi ei muutu ajon aikana, jakaminen onnistuu ongelmitta. Tarvelatausta varten koodi jaetaan 4 kB palasiin, jotka ladataan aina tarvittaessa. Näin muistissa on aina vain se osa koodia, jota kulloinkin tarvitaan, joten ne ohjelman osat joita ei käytetä eivät myöskään vie muistia. Sisäänrakennettu 387-emulaattori -------------------------------- Linuxissa on sisäänrakennettu, erittäin hyvä _387-emulaattori_. Käyttöjärjestelmä käyttää sitä automaattisesti, mikäli koneessa ei ole matematiikkaprosessoria. Näin kaikki ohjelmat voidaan kääntää käyttämään matematiikkaprosessoria suoraan, mikä yksinkertaistaa niin kääntäjiä kuin käännettyjen ohjelmien konekielikoodia. Tiedostojärjestelmät -------------------- Linux tukee useita eri tiedostojärjestelmiä, eli eri tapoja tallettaa tiedostoja levylle. Muutama näistä on suunniteltu erityisesti Linuxia varten, muut ovat helpottamassa yhteiseloa muiden käyttöjärjestelmien kanssa. Jälkimmäisistä tärkeimmät ovat MS-DOS, OS/2 HPFS-2 (vain lukeminen), sekä CD-ROM standardiformaatit. Virtuaalikonsolit ----------------- Linuxissa on useita virtuaalikonsoleita, eli mahdollisuus simuloida useita erillisiä päätteitä (näyttö+näppäimistö). Jokaisessa virtuaalikonsolissa voi olla oma istunto, joiden välillä voi vaihtaa Alt-funktionäppäin-yhdistelmällä. Tämä vastaa ikkunoita graafisessa käyttöliittymässä, mutta toimii siis tekstitilassa. Laitetuki ********* Linux toimii miltei kaikissa PC-yhteensopivissa koneissa, joissa on 386-, 486- tai Pentium-yhteensopiva prosessori ja ISA- tai EISA-väylä. MCA-väylää käyttävissä koneissa (lähinnä IBM PS/2-koneet) Linux ei toimi. Miltei kaikki lisäkortit toimivat. Poikkeuksia muodostavat lähinnä harvinaiset kortit, sekä ne kortit joiden valmistaja tekee laitteen ohjelmointia varten tarvittavan tiedon saamisen hankalaksi, kalliiksi tai mahdottomaksi. Tälläisiä poikkeuksia ovat esimerkiksi useat Diamond-yhtiön näyttökortit. Ikkunointijärjestelmä ********************* Linuxissa graafista käyttöliittymää ei ole integroitu käyttöjärjestelmään, lähinnä suuren työn ja vähäisen hyödyn takia. Sen sijaan käytetään UNIX-ympäristön yleisintä ikkunointijärjestelmää X Window Systemiä, erityisesti XFree86:tta, sen erästä vapaata sovitusta PC-ympäristöön. X on pelkkä ikkunointijärjestelmä, se ei itse toteuta käyttöliittymää vaan antaa vain siihen tarvittavat työkalut. Tämän takia X-ohjelmien käyttöliittymät ovat vähemmän yhtenäisiä kuin Macintosh- ja Windows-ohjelmien. X-ympäristön tärkeimmät käyttöliittymämääritelmät, Motif ja Open Look, ovat saatavilla myös Linuxille, Motif kaupallisena tuotteena, Open Look vapaana ohjelmana. Asennus ******* Linux vaatii 386-yhteensopivan prosessorin (kaikki 386-, 486- ja Pentium-mallit ja näiden kloonit). Aikaisemmat Intelin prosessorit (8086, 286) eivät toimi. Motorolan 68000-sarjan prosessoreille on alustava versio, mutta se ei tällä hetkellä ole tuotantokäyttöön sopiva. Linux itse on vain käyttöjärjestelmän ydin. Ytimen lisäksi tarvitaan komentotulkkeja, järjestelmäohjelmia, apuohjelmia, sekä sovellusohjelmat. Itse ydin vie levytilaa kolmisensataa kilotavua. Ytimen ympärille koottuja asennuskelpoisia kokonaisuuksia sanotaan levityspaketeiksi. Näitä on lukuisia erilaisia, eri kokoisia, eri tarpeisiin räätälöityjä, jotka vaativat levytilaakin eri määriä. Yleensä tarvitaan vähintään 10 MB normaalia UNIX-ympäristöä varten (jossa siis on kaikki normaalit UNIX-työkalut). Tämän lisäksi ikkunointijärjestelmä (mikäli sitä halutaan käyttää), C-kääntäjä, sekä muutamat muut yleensä asennettavat ohjelmistot vievät yhteensä muutamia kymmeniä megatavuja. Tällä hetkellä suosituin levityspaketti, Slackware, vie kokonaisuudessaan noin 130 MB, mutta sen osista on tarkoitus asentaa vain tarvitsemansa. Keskusmuistia tarvitaan vähintään teoriassa vähintään 2 MB (kaikki toimii, mutta virtuaalimuistin käytön takia usein erittäin hitaasti), käytännössä miellyttävään työskentelyyn tarvitaan vähintään 4 MB jos ei käytä graafista käyttöliittymää, muussa tapauksessa vähintään 8 MB. Linuxia levitetään pääasiassa Internet-tietokoneverkon kautta FTP-protokollalla. Suomessa tärkein tämän verkon kone on ftp.funet.fi ja sen hakemisto /pub/OS/Linux. Tästä koneesta löytyvät yleensä kaikki tarpeelliset Linux-ohjelmat, yhteensä muutamia satoja megatavuja. Ulkomailla olevista koneista sunsite.unc.edu ja tsx-11.mit.edu ovat tärkeimmät. Linux on saatavilla myös useilla CD-ROM-levyillä (luonnollisesti maksullisilla), valmistajina yleensä joko muutenkin CD-ROM-levyjä valmistavia yrityksiä tai vain Linux-levyä varten perustettuja pikkuyrityksiä. Muutamat tietokoneita myyvät yritykset (lähinnä USA:ssa) asentavat haluttaessa Linuxin valmiiksi koneeseen. Hyötykäyttö *********** Linuxia käytetään lähinnä samoin kuin UNIX-työasemia: ohjelmankehitykseen, raskaisiin laskentasovelluksiin, tai graafisena X-päätteenä UNIX-palvelimille. Linux voi myös toimia mikroverkon palvelimena. Toimistokäyttöön tarkoitettuja sovelluksia, kuten tekstinkäsittely tai taulukkolaskenta, ei ole yhtä helppokäyttöisinä kuin mitä mikroissa on totuttu. Vastaavat asiat tekevät ohjelmat ovat olemassa, mutta niiden käyttö on hankalampaa tai ne eivät ole yhtä monipuolisia kuin mikrojen kaupalliset ohjelmat yleensä ovat. Pääsyy tähän on vapaiden ohjelmistojen käyttö; vapaita ohjelmia tehdään yleensä harrastuksena tai opintojen tai tutkimuksen tuotteena, eikä tällöin panosteta helppokäyttöisyyteen tai tekijän kannalta vähemmän tärkeisiin toimintoihin. Tekijänoikeudet ja ohjelmien vapaus *********************************** Linux on vapaa ohjelma. Sitä saa kopioida ja muuttaa vapaasti, kopioimisesta saa ottaa haluamansa maksun, mutta vastaanottajaa (asiakasta) ei voi kieltää kopioimasta ohjelmaa edelleen. Kopiointioikeus koskee sekä lähdekoodia että käännettyä ohjelmaa, mutta käännetyn ohjelman vastaanottajalla on aina oikeus vaatia myös lähdekoodi (mahdollisine muutoksineen). Suomen tekijänoikeuslaki ei tietenkään salli kaikkea tuota, vaan ohjelman tekijä Linus Torvalds on sen erikseen Linuxin kohdalla sallinut. Miksi Linuxista ei ole tehty kaupallista tuotetta? Vapaasti levitettävänä ohjelmistona Linuxin käyttäjäkunta ja kehittäjien lukumäärä ovat huomattavasti suurempia. Siten myös sen kehitys on nopeutunut, koska kehitystyö on voitu jakaa useammalle henkilölle ja ohjelmaa on voitu testata huomattavasti erilaisemmissa tilanteissa ja erilaisemmilla laitteistoilla. Linux-yhteisö ************* Linuxin ympärille on kansainvälisten tietokoneverkkojen välityksellä syntynyt löyhä käyttäjien yhteisö, joka toisaalta kehittää Linuxia ja sen ohjelmia edelleen, toisaalta toimii tärkeimpänä avustuskanavana Linux-käyttäjille. Tärkein kommunikointikanava ovat m.m. Internet-tietokoneverkon kautta leviävät Usenet-keskustelujärjestelmän Linux-aiheiset uutisryhmät: comp.os.linux.announce julkistuksille ja muulle kaikille käyttäjille tärkeille uutisille comp.os.linux.admin ylläpitoon ja asennukseen liittyvä keskustelu comp.os.linux.development Linuxin kehitykseen liittyvä keskustelu comp.os.linux.help yleiseen avustukseen comp.os.linux.misc muuhun keskusteluun Tämän lisäksi on kymmeniä postituslistoja suljetumman piirin keskustelulle. Nämä on yleensä tarkoitettu ohjelmoijille ja testaajille ohjelmankehitystä varten, loppukäyttäjille tarkoitetuista versioista keskustellaan uutisryhmissä. Linus Torvalds huolehtii vain käyttöjärjestelmän ytimen kehityksestä. Levityspaketteja, muita ohjelmistoja, dokumentointia ja muuta tekevät ja ylläpitävät muut vapaaehtoiset ja muutama yritys. Mitään keskusjohtoista suunnitteluelintä ei ole, vaan jokainen toimii parhaaksi katsomallaan tavalla. Joitakin osa-alueita varten on pienehköjä yhteistyöprojekteja. Dokumentointia on varten hivenen kunnianhimoisempi projekti Linux Documentation Project, LDP, jonka tavoitteena on tuottaa kirjasarja, josta löytyy kaikki tärkeä tieto Linuxin asennusta, käyttämistä, ylläpitoa ja ohjelmointia varten. Tähän mennessä ovat valmistuneet Matt Welshin _Installation_and_Getting_Started_ (asennusohje), Olaf Kirchin _Linux_Network_Administrators'_Guide_ (lähiverkon ylläpito), sekä _Manual_Pages_ (ohjelmointia varten tarvittava hakuteos). Tekeillä ovat kirjat _Linux_Users'_Guide_, _Linux_Kernel_Hackers'_Guide_ ja _Linux_System_Administrators'_Guide_. Kaikki LDP:n kirjat ovat myös vapaasti levitettävissä. Yhteystietoja ************* Linus Torvalds, Tietojenkäsittelyopin laitos, Helsingin yliopisto, PL 26, 00014 HELSINGIN YLIOPISTO. Ari Lemmke, Xgateway Finland Oy, Otaniemen teknologiakylä, puh. 437 5204. ftp.funet.fi-koneen Linux-alueen ja useimpien Linux-postituslistojen ylläpitäjä. Lars Wirzenius, Tietojenkäsittelyopin laitos, Helsingin yliopisto, PL 26, 00014 HELSINGIN YLIOPISTO. comp.os.linux.announce-ryhmän osa-aikainen moderaattori, _Linux_System_Administrators'_Guide_-kirjan kirjoittaja.