Miten tehdä ajuri?

Anonyymi

Minulla on eräs laite jonka mukana tuli kansio jossa .c ja .h ja Makefile tiedostot. Ohjeena :

2. make all // make a new driver.

Ilmeisesti ajurin saisi käännettyä noiden tiedostojen avulla mutta en tiedä käskyjä.

10

<50

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Mielestäni parempi lähestymistapa olisi kertoa, mistä laitteesta on kyse. Eli löytyiskö sille jo valmiit jakeluun sopivat ajurit.
      Varsin hyvät ohjeet ohjelmien tai ajureiden kääntämiseksi:
      https://www.linux.fi/wiki/Kääntäminen

      • Anonyymi

        Ei Linuxiin koodata ajureita, ydin tukee tuen ja ohjelma käyttää.


      • Anonyymi
        Anonyymi kirjoitti:

        Ei Linuxiin koodata ajureita, ydin tukee tuen ja ohjelma käyttää.

        Vaan jos ytimessä ei ole tukea?


    • Anonyymi

      aika rajottatuneelta vaikuttaa toiminee vain yhdessä ja ainoassa kernel vesiossaa.... ja niitä kun tuhansia niin ei onnaa.
      Joutuu kirjoittaan itse ajurin haluamalleen kernel versiolle.
      Aika hankala hommma.

      • Anonyymi

        Itse asiassa näin huono tilanne ei ole: Ajuri käännetään kerneliä vasten ja riippuu mitä kernelin ominaisuuksia ajuri käyttää minkä verran joutuu tekemään lisätyötä että tämä onnistuu.
        Yleensä kernelin rajapinnoista pidetään kiinni kynsin ja hampain ja on täysin mahdollista, ettei muutoksia ajuriin juuri tule vaikka porttaisi kernelistä 2.6 kerneliin 5.x.
        Sen sijaan uudemmissa kerneleissä voi olla merkittynä rajapintoja deprekoiduiksi eli poistettaviksi. Tämä tarkoittaa sitä, että ajurin latauksen yhteydessä mm. kernel ilmoittaa ajurin olevan "deprecated" ja vaativan siis jatkossa toimia esim. rajapinnan vaihtamista uudempaan malliin. Tähän löytyy valmiita esimerkkejä kuinka homma tehdään pilvin pimein, koska ajureita on päivitetty uudelle rajapinnalle varmasti.
        Homman pihvi on kuitenkin tietoturva: Ajuri käännetään jokaiselle kernel-versiolle nimenomaan tästä syystä erikseen eli vaikka joku löytäisikin ajurista esim. puskurin ylivuoto-virheen, se vaikuttaa vain kyseiseen kerneliin, koska muissa kerneleissä on takuuvarmasti jotain muuta koodia ylivuodon kohdalla ja toiminta täten eri. Itse asiassa kerneli muodostaa nykyiselläänkin uuden lokaatio-taulun muistiin latauksen yhteydessä eli funktioiden paikat eivät säily muistissa - hyökkääjän pitäisi siis kirjoittaa koodinsa jokaisen bootin jälkeen uudestaan.


    • Anonyymi

      Kyllähän näitä tutoriaaleja löytyy, jos on kiinnostusta alkaa driveria kehittelemään:
      https://embetronicx.com/tutorials/linux/device-drivers/linux-device-driver-tutorial-programming/
      Tutustuisin useampaan esimerkkiin ja testailisin näitä esimerkkejä. Esim. DMA-siirto on kernelissä valmiiksi tuettuna ja sen käyttöönotto vaatii ymmärrystä ajurin toiminnasta ja tavasta, jolla kerneli ajuria suorittaa. Toinen paikka, joka voi aiheuttaa hankaluutta on timer-funktioiden käyttö eli asioiden ajastaminen tulevaisuuteen.

    • Anonyymi
    • Anonyymi

      no kirjoita se "make all" sillähähän tuo hoituu...

      • Anonyymi

        Tuo tosin vaatii, että koneelle on asennettu kehitystyökalut (kääntäjä, linkkeri yms). Ubuntussa tosin käsittääkseni on yleensä nuo asennettuna valmiiksi. Jos ei niiden asentamisen ei pitäisi olla vaikeaa.

        Hieman selitystä tuolle komennolle: lähdekoodimuodossa jaettavien pakettien mukana pitäisi olla tiedosto nimeltään Makefile, joka sisältää työkaluille (ne kääntäjä ja muut) ohjeet siitä, miten lähdekoodeista saadaan aikaan ajettava ohjelma, kirjasto tms. Tuo make-komento lukee Makefilen ja suorittaa sieltä annetun toiminnan (tässä tapauksessa siis all, joka kääntää ohjelman/ajurin).


    • Anonyymi

      Kaikenlaista kokeilin ja vaan virhettä pukkasi. Menin sitten windowsiin, tuplaklikkasin exeä ja ajuri oli asennettu. Laitekin toimii mainiosti. Ei tarvi enää vastailla.

    Ketjusta on poistettu 2 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Voitasko leikkiä jotain tunnisteleikkiä?

      Tietäisi ketä täällä käy kaipaamassa.. kerro jotain mikä liittyy sinuun ja häneen eikä muut tiedä. Vastaan itsekin kohta
      Ikävä
      78
      1805
    2. Tietysti jokainen ansaitsee

      Hän varmasti ansaitsee vain parasta ja sopivinta tietenkin, suon sen onnen hänelle enemmän kuin mielelläni. Aika on nyt
      Ikävä
      18
      1689
    3. Millä voin

      Hyvittää kaiken?
      Ikävä
      16
      1504
    4. 50+ naiset kyl

      Lemottaa sillille mut myös niitte kaka lemottaa pahlle ku kävin naiste veskis nuuhiin
      Ikävä
      19
      1193
    5. En voi sille mitään

      Tulen niin pahalle tuulelle tästä paikasta nykyisin. Nähnyt ja lukenut jo kaiken ja teidän juttu on samaa illasta toisee
      Ikävä
      12
      1184
    6. Välitän sinusta mies

      Kaikki mitä yritin kertoa tänään ei mennyt ihan putkeen..Joka jäi jälkeenpäin ajateltuna suoraan sanottuna harmittaa aiv
      Työpaikkaromanssit
      6
      1172
    7. hieman diabetes...

      Kävin eilen kaverin kanssa keskusapteekissa kun on muutama kuukausi sitten tullut suomesta ja oli diabetes insuliinit lo
      Pattaya
      12
      1136
    8. Annetaanko olla vaan

      Siinä se, tavallaan kysymys ja toteamuskin. Niin turhaa, niin rikkovaa. On niin äärettömän tärkeä, ja rakas olo.. N
      Ikävä
      29
      1121
    9. Miten joku voi käyttää koko elämänsä

      siihen että nostelee täällä vanhoja ketjuja ja troIIaa niihin jotain linkkiä mitä kukaan ei avaa? Ihmisellä ei ole mitää
      Tunteet
      6
      1119
    10. Pakkoruotsi on leikkikieli, jota ei ole tarkoituskaan osata

      Pakkoruotsi on leikkikieli. Ennen leikkikieltä sanottiin siansaksaksi, sitten keksittiin tilalle pakkoruotsi. Pakkoruot
      Kielipolitiikka
      7
      1104
    Aihe