PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neuen "Treiber" in Kernel einbinden


Fedi
25.01.03, 09:37
Hallo alle zusammen!
Also ich will den Treiber des Hardware-Herstellers (liegt als Modul und Quellcode vor) in den Kernel einbinden.
Wenn ich die Dateien z.B. in das IDE Verzeichnis kopiere passiert bei make menuconfig gar nichts (oder ich bin blind).
Ich schätze mal, ich muss den neuen Treiber in eine Konfigurationsdatei eintragen!?
Wie heißt die Datei und gibt es eine spezielle Syntax?
Welche genauen Dateien brauch ich überhaupt?
Habe folgende zu bieten:
hpt.c; hpt.h; hpt37x2lib.o; hptglb.h; hptkern.h; Makefile; rules.mak


Bin dankbar für jede Hilfe die ich kriegen kann!
Der Fedi

dauni
25.01.03, 09:44
In dem Archiv, das du runtergeladen hast, gibt es bestimmt eine README oder eine INSTALL oder beides

Fedi
25.01.03, 09:52
Eine Readme.txt kann ich bieten. Werde nur nicht wirklich schlau draus.
Ein passendes Modul konnte ich erstellen. Nur schaffe ich es nicht den Treiber in den Kernel zu "schreiben".
Wenn ich das richtig verstehe kann ich auch die Datei hpt370.o gegen meine (hpt37x2.o) austauschen. Nur gibt es keine hpt370.o in meinen Sourcen (Debian 2.4.18)

Der Fedi

schubach
25.01.03, 21:07
ein einfaches
"make" gefolgt von
"insmod ./hpt37x2.o"
sollte ausreichen.
Kontrolle mit "lsmod"

Voraussetzung:
- Kernelquellen sind installiert (Aber die richtigen :-))
- /usr/src/linux zeigt auf diese Quellen
- Modul-Unterstützung wurde in den Kernel hineinkompiliert
- Die üblichen C-Kompiler-RPMs sind installiert

Wenn es trotzdem nicht funzt, vorher:

"cd /lib/modules/`uname -r`/build"

"cp -f /boot/vmlinuz.version.h /lib/modules/`uname -r`/build/include/linux/version.h"

"cp -f /boot/vmlinuz.config /lib/modules/`uname -r`/build/.config"

dann sollte es funktionieren...

P.S.: Wenn bei Linux etwas nicht funzt, gibt es Fehlermeldungen -> immer her damit!

[RCS]Axis
29.01.03, 14:50
mit insmod wird der Treiber doch dann als Modul geladen, oder? Ich habe nämlich eine ähnliche frage, wie die , die in diesem Thread behandelt wird. Allerdings würde ich einen Treiber, der als Source-Code vorliegt, gerne in den Kernel eincompilieren, da ich für meinen Router einen monolithischen Kernel bauen will, also keine Unterstützung für Module, gibt es da evtl eine Möglichkeit, oder eine Empfehlung, wo ich mich schlau machen kann?

Fedi
29.01.03, 17:11
Hallo,
ich war die letzten Tage etwas im Stress....
... sehe das aber wie Axis.

Ich wollte kein Modul laden (das bringt mir nichts wenn ich nicht soweit komme, daß ich auf /root bzw /boot zugreifen kann. Es handelt sich um den HD-Controller Treiber. Henne - Ei Problem)

Es scheint jedoch ohne ein Patch vom Hersteller nicht möglich zu sein.
Lasse mich allerdings gerne belehren!

CU Fedi!

[RCS]Axis
29.01.03, 18:04
wenn der Treiber als Source Code vorliegt, geht es bestimmt, irgendwie bekommen die auch andere Treiber in den Kernel, die eigentliche Frage ist, ob es mit angemessenen Mitteln möglich ist, oder ob man den halben Kernel umschreiben muss....

Ich stelle, mir das eigentlich so vor (rein spekulativ): es gibt festgelegete Schnittstellen zwischen Treiber und Kernel, diese sind unabhängig davon ob der Treiber als Modul vorliegt oder fest einkompiliert ist. Deshalb ist es dem Treiber selbst egal ob er ein Modul ist, oder nicht. (man kann ja schließlich nahezu alle Treiber die beim Kernel dabei sind, fest oder als Modul kompilieren). Es sollte nun im einfachsten Fall möglich sein, ein oder zwei Konfigurationsdateien zu ändern, so dass der Treiber quasi zum Kernel-Tree gehört und auch in den config / menuconfig / xconfig auftaucht. Wenn man soweit ist , sollte es möglich sein, den Treiber fest einzukompilieren. Es könnte natürlich auch sein, das der halbe Treiber und teile des Kernels angepasst werden müssen, aber das halte ich persönlich für nicht so wahrscheinlich...

So das ist meine Vorstellung davon, obs stimmt - keine Ahnung, aber vielleicht kennt sich jemand damit aus, mir würde schon ein Ansatzpunkt, wo ich anfangen soll mit suchen reichen, dann find ich selbst herraus wies geht....

schubach
29.01.03, 21:55
Ahso ein Monolith-Fan...
kA dazu. Aber Henne-Ei ist nicht: Bei SuSE z.B. ist Reiser-FS das Standard-Dateisystem - und liegt als Modul vor...
initrd macht's möglich. (Siehe auch "man mkinitrd" bzw. unter SuSE "man mk_initrd"

Fedi
03.02.03, 21:10
Auf die Idee mit initrd bin ich auch schon gekommen.
Nur krieg ich das nicht hin....

Fehlermeldung kann ich Euch keine bieten - nur soviel: Mein Rechner piept beim Erstellen mittels mkinitrd wie wild, der gesamte ASCI-Code flitzt über den Schirm und danach kann ich meinen Prompt auch nicht mehr entziffern. Der Rechner stürzt dabei nicht ab.

Kann mir jemand vielleicht mal schritt für schritt die Benutzung von mkinitrd (be-)schreiben?

Danke!
Der Fedi


Ps: System ist Debian Woddy 2.4.19

schubach
05.02.03, 08:41
Wenn der Kernel im Verzeichnis </boot> liegt,
er <vmlinuz> heißt,
Deine alte initrd <initrd> heißt,
Deine Rootpartition </dev/sda2> ist
und Du nur Deinen SCSI-Treiber als Startmodul benötigst,
dann:

mkinitrd -k "vmlinuz" -i "initrd" -m "hpt37x2.o" -b "/boot" -d "/dev/sda2"

Fedi
11.02.03, 15:33
Original geschrieben von schubach
Wenn der Kernel im Verzeichnis </boot> liegt,
er <vmlinuz> heißt,
Deine alte initrd <initrd> heißt,
Deine Rootpartition </dev/sda2> ist
und Du nur Deinen SCSI-Treiber als Startmodul benötigst,
dann:

mkinitrd -k "vmlinuz" -i "initrd" -m "hpt37x2.o" -b "/boot" -d "/dev/sda2"

Zuerst mal danke Schubach!

Also mit debian komme ich absolut nicht weiter ... :-((
Hab jetzt mal Suse 8.0 drauf gepackt.
Jetzt passen zumindest die Parameter für mkinitrd aber er findet das Modul nicht!
in welches Verzeichnis soll die Datei denn am besten rein?
Übrigens modprobe funzt auch nicht. Nur insmod!
Hänge die Datei mal ran und hoffe, dass jemand noch nen Tip hat!

Danke!!!

Fedi
11.02.03, 15:36
Hier jetzt die Datei:

musste .txt dran hängen dass ich sie uploaden kann.
der eigentliche Name lautet hpt37x2.o

Der Fedi