Kernelmodule kompilieren...

  • 8 Antworten
  • Letztes Antwortdatum
M

morph027

Neues Mitglied
3
Hi!

So...ich wollte mir mal ein Kernelmodul bauen, um meinen USB-Serial-Adapter zu testen.

Hab mir die Android-Toolchain geladen und so kompiliert:

Code:
scp root@mein-netbook:/proc/config.gz ~/android/binary-source/kernel
gunzip ~/android/binary-source/kernel/config.gz
mv ~/android/binary-source/kernel/config ~/android/binary-source/kernel/.config
Dann in der .config eigetragen

Code:
CONFIG_USB_SERIAL_FTDI_SIO=m
Code:
export ARCH=arm
export CROSS_COMPILE=arm-eabi-
export PATH=$PATH:~/bin/foo/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/
cd ~/android/binary-source/kernel
make modules
insmod liefert:

Code:
insmod: can't insert 'ftdi_sio.ko': invalid module format
dmesg | tail:

Code:
ftdi_sio: no symbol version for module_layout
laut
Code:
strings drivers/usb/serial/ftdi_sio.ko | grep vermagic
vermagic=2.6.32.9-silver-v3 SMP preempt mod_unload modversions ARMv7
und
Code:
file -k drivers/usb/serial/ftdi_sio.ko
drivers/usb/serial/ftdi_sio.ko: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), from 'Y', not stripped
Sollte das auch laufen...hat jemand schon mal Module übersetzte? Andere Toolchain versuchen?

Dankööööö!
 
Ich denke nicht das das so klappt weil:

insmod: can't insert 'ftdi_sio.ko': invalid module format

Das ist eine Fehlermeldung.

Ich bin auch grad am Kernelbauen wegen der Gamepad sache ...

Wenn ich es richtig verstanden habe musst du dir die Module wenn sie bei dir fehlen immer mit der Kernelsource kompilieren welche du aktuell am laufen hast.
Sprich wenn du dir den letzten Kernel geladen hast aber auf deinem Gerät ein älterer läuft geht das meinem Verständnis nach nicht.

Ich erhebe keinen Anspruch auf Richtigkeit meiner Aussagen ;)
 
Ich hab natürlich den passenden Kernel...das ist der silver-Kernel aus dem Custom 2.2er ROM

Code:
uname -a
Linux localhost 2.6.32.9-silver-v3 #14 SMP PREEMPT Thu May 19 23:10:33 MSD 2011 armv7l GNU/Linux

Kernel und Sourcen passen zusammen...komische Sache.
 
und die binary-source mit der du kompilierst ist auch 2.6.32.9 ?

Wenn dein Gerät gerootet ist könntest du mal nach der datei "config.gz" suchen. Das ist in der Regel die .config Datei mit der der laufende Kernel erstellt wurde.
Vielleicht kommst du beim build damit eher weiter.


Alternativ kannst du noch statt insmod xxxx.ko mit "modprobe xxxx" versuchen. Vielleicht kannst du es wenns als M kompiliert ist nur laden aber nicht in den Kernel installieren ???

lg
 
Bei mir gehts auch nicht.. Vielleicht muss der Kernel mit der option aufs Modul kompiliert werden ?
 
Zuletzt bearbeitet:
Das glaub ich nicht...beim ROM von silver sind ja unter /system/lib/modules/ auch Module dabei, die sich anstandslos laden lassen...Ich versuch ihn im xda-developers Forum mal zu fragen, mit was für einer Toolchain er das gebaut hat.
 
So...er hat einfach den stinknormalen Ubuntu Cross-Compiler genommen....ich jetzt auch und es geht :D Vorher einfach nochmal den kompletten Quelltext gezogen, wegen der Sauberkeit.

Code:
sudo apt-get install gcc-arm-linux-gnueabi
cd ~/android
git clone https://github.com/silver-alx/ac100_kernel
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
cd ac100_kernel
make modules
Und ich kann mich super mit meinem AC100 und den USB-Serial-Adaptern auf meine Server verbinden ;)

Hab mal ein joydev.ko angehängt, wer testen mag...
 

Anhänge

  • joydev.ko.zip
    61,3 KB · Aufrufe: 303
Zuletzt bearbeitet:
Hi. Ja den linux cross c hab ich mir gestern auch noch geladen muss ich heute mal versuche.
Würde mir trotzdem gerne einen frischen Kernel mal testhalber selber machen.
Vielen Dank für die Joydev das spart mir eine Menge arbeit ;)

lg
 

Ähnliche Themen

A
  • anonymer1994
Antworten
0
Aufrufe
1.283
anonymer1994
A
Zurück
Oben Unten