keskiviikkona, toukokuuta 25, 2005

Linux-kernelikoodaajan kurimus

Olen reilun viikon koodannut Linux-kernelimodulia ja se ei ole ollut kovin hauskaa.

Ohjeet ja dokumentaatio tuntuvat olevan vieläkin harvinaisempia kuin viimeksi Linux-kernelin seassa möyriessäni. Ehkä se johtuu siitä, että kaikki kernelkoodaajat ovat jo nähneet kernelin kehittyvän useamman version ajan, joten uuteen koodiin ei tarvitse kirjoittaa turhanaikaisia kommentteja. Ja tietysti jos joku ei ymmärrä jotain koodinpätkää, hän voi aina kirjoittaa sen uudelleen, eikö?

Koodi, jota olen kirjoittanut, laskee SHA256-summan tietystä datasta. Tätä nykyä kernelissä on valmiina koko joukko pakkaus-, digest- ja salausalgoritmeja ja näköjään jopa jonkunlainen ohjelmointirajapinta niiden käyttöön. Harmi vain, ettei kyseisen rajapinnan käyttöön ole mitään ohjeita. Esimerkkejä tietysti voi etsiä olemassaolevista kernelimoduleista. grep -r on ystäväsi.

No, sain lopulta homman koodattua ja se jopa kääntyy ja toimii.

Tai ei se oikeastaan toimi. SHA256-summa ei ole oikein. Tulos ei ole sama kuin komentorivityökalulla samasta datasta laskettu summa. Mutta koodi on oikein. Sen täytyy olla. Se ei vaan toimi.

Saadakseni homman toimimaan minun piti ottaa SHA256-koodi komentorivityökalusta ja lisätä se kernelimoduliin (ja tietysti hieroa sitä ja viilata kulmia niin, että sen sai kääntymään kernelissä). Nyt toimii, mutta on lievästi turhautunut olo.

Ei sen näin pitäisi mennä. Kyllä kernelin rajapintojen pitäisi olla niin dokumentoitu, että niitä pystyy käyttämään.

Tekisi mieli ennustaa heikkoa tulevaisuutta Linuxille. Mutta jostain kumman syystä se vaan mennä porskuttaa eteenpäin. En suoraan sanoen ymmärrä miksi. Ehkä kernelissä tehdään niin pieni osa kaikesta koodaustyöstä, että jos se on vaikeaa, sillä ei ole mitään väliä.

Tietysti se tarkoittaa sitä, että laitevalmistajat harkitsevat kaksi tai ehkä kolmekin kertaa ennen kuin rakentavat Linux-ajurin laitteelleen. Ja oikeastaan sillä ei ole mitään väliä. Vaikka rautaa myisi vain Windows-koneisiin, silläkin voi tehdä mukavasti rahaa. Ja aina jostain löytyy joku heppu, joka kirjoittaa Linux-ajurin sille vempaimelle.

Ei kommentteja: