kernel-module entwickeln?
-
holla!
mit welcher linux-distri lassen sich am besten kernel-module schreiben und testen? ich suche eine, die alles dafür dabei hat, aber die auch recht schlank ist, z.b. Xwindow muss nicht unbedingt sein.
danke...
-
Einfach ein Debian Etch (evtl. Netinstall) installieren, jede andere Distro tut es natürlich auch.
-
du kannst z.b. debian verwenden. das ist ein recht schlankes system und mit dem paket-manager sehr flexibel kultivierbar.
natürlich kannst du auch gentoo verwenden oder wenn du ganz krass drauf bist, LFS. das LFS ist aber eher ein intellektuelles und süchtig machendes spielzeug...
mit suse, mandriva, ubuntu und co kenne ich micht nicht aus, da viel zu überladen. das letzte überladene system war irgendnen redhat 1998, das ich benutzt habe. diese sollten für dich natürlich uninteressant sein.
-
ok, also debian solls sein.
danke!
-
so, ich hab jetzt debian installiert. ging ohne probleme, hardware wurde sofort erkannt usw, also macht erstmal nen positiven eindruck.
jetz hab' ich nur noch zwei kleine probleme:
1. der gcc lässt dich nicht über 'gcc' oder 'cc' starten, sondern ich muss 'gcc-4.1' eingeben.
2. der gcc findet die standard header files nicht ((stdio.h z.b.) obwohl der package manager sagt, dass sie installiert wären)bitte entschuldigt diese waschechten noob-fragen eines dummen windows-users, aber ich nehme an, ich muss irgendwelche pfade bzw. hard-links setzen, ne?
danke nochmals...
-
Ad Version:
Hast Du evtl. nur das Paket "gcc-4.1" installiert? Es gibt ein Paket "gcc", welches das für die Distribution aktuelle "gcc-<Version>" und die Binaries ohne Versionsnummer installiert.Ad libc:
Hast Du evtl. nur "libc6" und nicht "libc6-dev" installiert?
-
apt-get install build-essential
-
hi,
ja, da scheint einiges zu fehlen, usr/include sieht auch ziemlich leer aus.
rüdi: hab ich versucht, er sagt mirThis may mean that the package is missing, has been obsoleted, or
is only available from another sourceich hab als repository nur: http://security.debian.org/etch/updates eingetragen.
welches repository muss ich nehmen für build-essentials?
-
fricky schrieb:
ich hab als repository nur: http://security.debian.org/etch/updates eingetragen.
welches repository muss ich nehmen für build-essentials?
hat sich erledigt. build-essentials liess sich runterladen. gcc geht jetzt. ich musste das nur '/updates' aus der URL das oben löschen.
-
soo, ich hab jetzt mein erstes kernelmodul gebaut (nachdem es probleme mit dem makefile gab: das will an einer gewissen stelle tabs und keine spaces sehen
).
aber ich habe noch 2 fragen an euch:
1. zum ausprobieren brauche ich 'modprobe'. in welchem package steckt das?
2. wie kann ich über die serielle (RS232) vom kernel aus senden und empfangen? da gibts doch bestimmt 'ne API für, oder muss man direkt den UART beharken?danke nochmals,
fricky
-
fricky schrieb:
soo, ich hab jetzt mein erstes kernelmodul gebaut (nachdem es probleme mit dem makefile gab: das will an einer gewissen stelle tabs und keine spaces sehen
).
aber ich habe noch 2 fragen an euch:
1. zum ausprobieren brauche ich 'modprobe'. in welchem package steckt das?
2. wie kann ich über die serielle (RS232) vom kernel aus senden und empfangen? da gibts doch bestimmt 'ne API für, oder muss man direkt den UART beharken?danke nochmals,
fricky1. module-init-tools oder modutils
2. entweder direkt über den uart-treiber oder über die /dev/ttySx devices, wobei ich mir nicht sicher bin ob das mit udev heutztage noch vom kernel aus möglich ist
-
fricky schrieb:
2. wie kann ich über die serielle (RS232) vom kernel aus senden und empfangen? da gibts doch bestimmt 'ne API für, oder muss man direkt den UART beharken?
Ich würde die Schnittstelle zum Userspace über /proc legen und dann von dort aus enstsprechend auch auf die serielle umleiten.
-
man dankt,
die module-init-tools hatte ich schon drauf, die wollten nur nicht, weil ich nicht 'root' war. ich nehme 'insmod' und 'rmmod' zum laden und entladen. klappt bestens, nur kann ich die 'printk' messages nur sehen, wenn ich in einem zweite terminal 'cat proc/kmsg' mache. kann man die auch im aktuellen terminal anzeigen?
-
für alle, die's interessiert: ich hab ein gutes tutorial gefunden: http://ezs.kr.hsnr.de/TreiberBuch/html/index.html
-
Hallo,
Zur Distri, sollte eigentlich egal sein, Hauptsache Du beherrschst Sie und kannst sie Deinen Beduerfnissen anpassen. Ich nehme auch Debian, is aber mom eher aus Faulheit, weils imo die einfachste is, sobald das Ding am Internet haengt.
Da Du am Kernel rumoperierst und auch wegen Debugging (zB KGDB) wuerde ich Dir zu einer VM raten, ich bin da nach rumprobieren mit VMware und Virtualbox bei Qemu/bochs haengen geblieben. Hat alles Vor und Nachteile, je nachdem auch in welchem Bereich Du arbeitest. Bspw bist Du bei Device Drivern fuer Embedded Systeme teilweise ziemlich eingeschraenkt oder evtl arbeitest Du fuer eine bestimmte Prozessorarchitektur. Hinzu kommt, willst Du fuer den alten 2.4er entwickeln oder fuer den 2.6er? Teilweise gibt es auch einige Unterschiede zwischen den einzelnen Unterversionen. Schon mal einen Kernel kompiliert (das ist anzuraten, allein um das "Versioning" fuer Module zunaechst mal auszuschalten!)? Die Doku in den Kernel Sourcen kannste rausholen und zusaetzlich benutzen (versuch evtl mas make htmldocs, see README).
Der Unterschied zwischen modprobe und insmod: modprobe loest Abhaengigkeiten auf, sucht aber die Module im "Bestand" in der /lib, insmod loest keine Abhaengigkeiten auf, dafuer kannste ein Modul foobar, welches Du kompiliert hast mit insmod direkt vor Ort in den Kernel einkleben: insmod foobar.ko
Die Sache mit dem Makefile kann einigermassen komplex werden, v.a. welches Flag fuer welche Architektur, etc.. hier hilft die Doku vom gcc einerseits und andererseits kbuild (ist im Link beschrieben).
Hier ein paar grundsaetzliche Links zu Device Drivern:
http://www.xml.com/ldd/chapter/book
http://www.faqs.org/docs/kernel
http://jungla.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
-
Ohne es Dir allzusehr reinreiben zu wollen, lieber fricky: Ich finde es schon ein wenig erheiternd, wie man - wenn man offensichtlich so wenig Ahnung von einem OS hat - dieses so vehement und mit so vielen großen Worten ablehnen kann.
-
nman schrieb:
Ohne es Dir allzusehr reinreiben zu wollen, lieber fricky: Ich finde es schon ein wenig erheiternd, wie man - wenn man offensichtlich so wenig Ahnung von einem OS hat - dieses so vehement und mit so vielen großen Worten ablehnen kann.
ääh? wie meinen?
übrigens hier noch ein buch: http://lwn.net/images/pdf/LDD3/
-
Kurze Anmerkung: Die ganze Bücher und Tutorials die ihr gepostet habt sind allesamt 4 Jahre alt oder älter, die sind nur geeignet um sich einen groben Überblick zu verschaffen. Kein Beispiel aus den Büchern wird noch compilierbar sein.
-
mir hat das buch (ldd) gut geholfen, um erstmal 'nen überblick zu kriegen.
und die beispiele von: http://ezs.kr.hsnr.de/TreiberBuch/html/
funzen definitiv.
-
borg schrieb:
Kurze Anmerkung: Die ganze Bücher und Tutorials die ihr gepostet habt sind allesamt 4 Jahre alt oder älter, die sind nur geeignet um sich einen groben Überblick zu verschaffen. Kein Beispiel aus den Büchern wird noch compilierbar sein.
kann man pauschaul nicht sagen. Das LDD Buch ist ein Muss, wenn man vorher nie Linux Device Driver geschrieben hat. Die Einführung ist recht gut und vor allem lernst du die Prinzipien, die dahinter stehen.
Das Problem mit dem Buch ist es, dass es ab 2.6.10 einige große änderungen der API gegeben hat und manche Sachen werden nicht mehr so gehen wie es drauf steht. Auf der Hompage von LDD3 findest du sogar Listen mit den größten änderungen.
Es bleibt nichts anders übrig, als die Kernel Dokumentation auch zu lesen und die lkml (linux kernel mailing list) zu benutzen, wenn man wirklich nicht weiter kommt.