MenuetOS – konekielellä voittoon

Artikkeli on julkaistu alun perin Skrollin numerossa 2015.3.

Viisitoista vuotta harrastuksena kehitetty käyttöjärjestelmä MenuetOS saavutti keväällä version 1.0. Katsastimme järjestelmän ja haastattelimme projektin perustajaa Ville Turjanmaata.

Vuodesta 2000 lähtien Ville Turjanmaa on luotsannut puhtaalta pöydältä aloitettua MenuetOS-käyttöjärjestelmäprojektia. Järjestelmä ei pohjaudu esimerkiksi Unix- tai Posix-malleihin, vaan se on suunniteltu alusta asti itse. Se on myös kirjoitettu kokonaan x86-assemblerilla. MenuetOS saavutti viime keväänä version 1.0, joten on korkea aika hieman tutustua siihen. Nappasimme version 1.02.20 ja panimme sen Virtualboxiin pyörimään.

Kysyimme kuitenkin aluksi Ville Turjanmaalta, mikä on saanut hänet perustamaan MenuetOS-projektin ja millaiseen tarpeeseen järjestelmä vastaa. Hän vetoaa muitta mutkitta konekieliohjelmoinnin ylivertaisuuteen:

– Konekieli on objektiivisesti tarkasteltuna muita ohjelmointikieliä tehokkaampaa ja nopeampaa. Ja osa ohjelmointikielistä on jo niin kaukana prosessorista, että ne muistuttavat ratkaisuiltaan enemmän humanistisia tieteitä.

32-bittinen MenuetOS on julkaistu GPL-lisenssillä ja on siten vapaata ohjelmistoa mutta myöhemmin uudelleen kirjoitettu 64-bittinen versio ei. Sen keskeisimpien osien lähdekoodeja ei ole vapaasti saatavilla, mutta se on saatavilla ilmaiseksi, ja yksityinen, epäkaupallinen käyttö on sallittua.

MenuetOS on reaaliaikainen, useaa suoritinta tukeva, graafinen työpöytäkäyttöjärjestelmä. Se on hyvin nopea ja pieni: koko hoito mahtuu yhdelle 1,44 megatavun levykkeelle. Laitteistotuki on vielä suppea, mutta hyvällä alulla. Menuet tukee joitakin verkkokortteja, äänikortteja, tulostimia, webkameroita, digi-tv-kortteja ynnä muuta. Kaikki grafiikkalaskenta tehdään keskussuorittimella, joten vaatimuksia monimutkaisille näytönohjainajureille ei ole.

Kaikkea tätä Turjanmaa ei suinkaan ole yksin puurtanut kokoon.

– Menuetin kehittämiseen on osallistunut muun muassa Mike Hibbett (TCP/IP),

Madis Kalme (GUI-funktioita) ja Akos Mogyorosi (Fourier-muunnos ja audiodekoodereita).

Lisäksi useita muita ihmisiä Euroopasta ja muualta, Turjanmaa valottaa kehitystiimin koostumusta.

Turjanmaa muistuttaa myös näytönohjainkorttien suljettujen rajapintojen aiheuttamista yhteensopivuusongelmista monissa järjestelmissä:

– Menuetissa on perusversiot useista käyttöjärjestelmältä odotetuista ominaisuuksista: esimerkiksi pre-emptive moniajo, moniprosessorituki ja graafinen käyttöliittymä läpinäkyvyysefektillä. Ja koska konekieli mahdollistaa nopeamman koodin suorittamisen, niin graafisen käyttöliittymän laskutoimitukset tehdään 64-bittisessä x86-prosessorissa, mikä parantaa yhteensopivuutta. Useilla muilla käyttöliittymillä on ollut hankaluuksia nimenomaan grafiikkakorttien kanssa. Eikä tämä ilmeisesti lähiaikoina tule muuttumaan, sillä valmistajat pitävät tarkemmat API:t omana tietonaan.

skrolli.2015.3.menuetos_file_browser_credits
Työpöytä ja tavanomaisimmat apuohjelmat näyttävät perinteisiltä.

Paljon säätämistä, niukasti ominaisuuksia

MenuetOS:ää kokeiltiin Virtualbox-virtuaalikoneella, jonka käyttöön on selkeät ohjeet käyttöjärjestelmän nettisivuilla. Ohjeissa esimerkiksi neuvotaan, millaisen verkkokortin emulointi kannattaa valita ja kuinka verkkoyhteys virtuaalikoneesta käsin pystytetään.

Käyttömukavuudessa Menuet on vielä lapsenkengissä. Nykypäivänä tuntuu vaivalloiselta pystyttää verkkoyhteys manuaalisesti ja määrittää järjestelmän ominaisuuksia naputtelemalla heksadesimaaleja valtavaan asetustiedostoon. Esimerkiksi tuki hiiren rullalle on oletuksena pois päältä, ja jos sitä kokee tarvitsevansa, täytyy käydä asetustiedostossa vaihtamassa yksi 0x00 0x01:ksi. Samaten asetustiedostossa varataan järjestelmälle oletuksena niin vähän keskusmuistia, että web-selain kaatuu ilmoitukseen liian pienestä muistimäärästä.

Skrollin nettisivu ei piirry ihan oikein MenuetOS:n HTTPC-selaimella.
Skrollin nettisivu ei piirry ihan oikein MenuetOS:n HTTPC-selaimella.

Ehkäpä asetusten määrittelyyn on kuitenkin myöhemmin tulossa automaatiota. On toki ymmärrettävää, että vielä ei ole moiselle riittänyt resursseja.

Linux-käyttäjälle Menuetissa tuntuu hassulta, että se on kokonaan graafinen. Testissämme virtuaalikone käynnistyy suoraan graafiselle työpöydälle, eikä mistään löydy minkäänlaista komentoriviä. Jopa konekielikääntäjä FASM on yksinkertainen ikkunoitu ohjelma, jossa tekstikenttiin kirjoitetaan luettavan lähdekoodin ja ulos tulevan binäärin polut.

Hyvä harjoitusprojekti voisikin olla koodata Menuetiin terminaaliemulaattori, Unix-tyyppinen komentotulkki ja GNU-työkaluohjelmat.

Minimalismissaan ja yksinkertaisuudessaan Menuet on kaikesta huolimatta valtavan viehättävä. Jopa projektin dokumentaatio ja nettisivut ovat pienet ja karut, mutta lyhyen hämmästelyn jälkeen ne osoittautuvat täysin kattaviksi. Esimerkiksi Menuetin kaikkien järjestelmäkutsujen dokumentaatio on aivan tavallinen 70 kilotavun tekstitiedosto, jossa yksinkertaisesti luetellaan yksi kerrallaan, miten kukin kutsu tehdään ja mitä se palauttaa. Herkullisen suoraviivaista.

Järjestelmäkutsuluettelon lisäksi projektin sivustolta löytyy toki myös linkkejä harrastajien foorumeille, pieniä esimerkkikoodin pätkiä ja selontekoa siitä, millä laitteilla järjestelmä on todettu toimivaksi. Siis esimerkiksi tieto toimivista verkko- ja äänikorteista löytyy sivustolta helposti.

Kuka tätä käyttäisi?

Järjestelmässä on helppolukuinen dokumentaatio ohjelmointiin nimenomaan assemblerilla, sillä Menuet on itsekin kirjoitettu sillä kokonaan. Samaan tapaan kuin unixeissa tulee mukana C-kääntäjä ja hyvät manuaalisivut C-ohjelmointiin, Menuetissa on tilalla valmiiksi asennettu FASM-konekielikääntäjä ja ohjeet konekieliohjelmointiin.

Menuet soveltuu siis erinomaisesti harjoittelualustaksi ohjelmointia jo jonkin verran taitavalle nikkarille – erityisesti sellaiselle, jonka sielua kalvaa nykyajan ohjelmistojen tuhlaileva laskentatehon käyttö. Kaveriksi voi ottaa Skrollin numeron 2015.2, jossa julkaisimme pienen johdatusjutun siihen, mistä assembler-kielissä on kyse.

MenuetOS:n mukana tulee FASM-konekielikääntäjä ja muutama esimerkkiohjelma lähdekoodeineen.
MenuetOS:n mukana tulee FASM-konekielikääntäjä ja muutama esimerkkiohjelma lähdekoodeineen.

Myös Turjanmaa itse pitää konekielipohjaisuutta sekä ohjelmointirajapinnan nopeaa omaksuttavuutta Menuetin tärkeänä puolena:

– Nykyään on ihan riittävästi muihin ohjelmointikieliin perustuvia ohjelmointiympäristöjä. Lisäksi kun tarkoituksena on käyttää konekieltä, niin on tietenkin luontevaa kirjoittaa API konekielelle. Menuetin API on selkeä ja nopea oppia ja lisäksi helppokäyttöisempi kuin useat muut API:t.

Toivotaan, että harrastelu MenuetOS:n parissa jatkuu ja järjestelmästä saadaan uusia ja parempia versioita. Alku näyttää jo viehättävältä. MenuetOS:llä voi nyt jo katsella televisiota, irkkailla, surffata webissä, opetella konekieliohjelmointia tai jopa pelata Doomia ja Quakea. Suosittelemme kokeilemaan, jos hyppysissä pysyy ongelmitta joko korppu tai virtuaalikone ja tekee mieli sukeltaa uuteen.

Menuetin mukana tulee joitain grafiikkademojakin. Tässä yksinkertainen raycasting-sokkelo.
Menuetin mukana tulee joitain grafiikkademojakin. Tässä yksinkertainen raycasting-sokkelo.

Teksti: Ronja Koistinen
Kuvat: Ronja Koistinen, Ronja Koistinen, Risto Mäki-Petäys

Lisätietoja:

MenuetOS:n sivusto: http://menuetos.net/
Käyttäjien foorumi: http://menuet.fr.yuku.com/
IRC-kanava: #menuetos @ Ircnet