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

109

    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. Mihin kaivattusi

      Ja sinun juttusi kaatui?
      Ikävä
      127
      4255
    2. En löydä sinua

      En löydä sinua täältä, etkä sinä varmaankaan minua. Ennen kirjoitin selkeillä tunnisteilla, nyt jätän ne pois. Varmaan k
      Ikävä
      23
      3012
    3. Eelin, 20, itsemurhakirje - Suomalaisen terveydenhuollon virhe maksoi nuoren elämän

      Yksikin mielenterveysongelmien takia menetetty nuori on liikaa. Masennusta sairastava Eeli Syrjälä, 20, ehti asua ensi
      Maailman menoa
      113
      2534
    4. Opettelen sun jokaisen virheen

      ja rakastan sua.
      Ikävä
      46
      2111
    5. Hajoaako persut kuten 2017?

      https://www.is.fi/politiikka/art-2000011217813.html Tämä on totisinta totta. Persut on murroksessa. Osa jättää puolueen
      Maailman menoa
      256
      1699
    6. Kamala uutinen: Henkilö kuoli Tokmannin pihaan Kankaanpäässä- Jäi trukin alle

      IL 9.5.2025 Ihminen kuoli Kankaanpään Tokmannin edustalla perjantaina aamupäivästä. Poliisin mukaan henkilö oli jäänyt
      Kankaanpää
      46
      1626
    7. Mihin se sysipska hävisi?

      Katso Frida Kahlo elämäkerta ja opi.
      Ikävä
      32
      1567
    8. Ne oli ne hymyt

      Mitä vaihdettiin. Siksi mulla on taas niin järjetön ikävä. Jos haluat musta eroon päästä niin älä huomioi mua. Muuten kä
      Ikävä
      20
      1436
    9. Mitä haluat oikeasti

      Mun ymmärtävän? Sitäkö ettet rakasta ja ole valmis mihinkään?
      Ikävä
      28
      1430
    10. Mitä uskot sinun

      Ja kaivattusi välillä tulevan tapahtumaan lähiaikoina
      Ikävä
      95
      1211
    Aihe