IO Warrior 40 und Debian Sarge mit Kernel 2.6.12

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
l_netwalker
Posts: 35
Joined: Mon Oct 17, 2005 9:51 am
Location: Aachen, Germany
Contact:

IO Warrior 40 und Debian Sarge mit Kernel 2.6.12

Post by l_netwalker »

Hallo,

ich habe versucht das LinuxSDK ( 21.7.05) zu compilieren ....

ich habe die Kernel sourcen unter /usr/src/linux-...
in /lib/modules/2.6.12/build als link auf die kernel sourcen

wenn ich dann im LinuxSDK source Verzeichnis ein make ausführe
hagelt es seitenweise Fehlermeldungen über falsche Symbole etc.

Hmmm.

Was mache ich falsch ?
Auch das Makefile aus einem anderen Posting hier im Forum hat nicht geholfen.

Tips ? Ideen ? oder besser fertige module :)
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Wir arbeiten gerade am verbesserten Linux-Support.
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Re: IO Warrior 40 und Debian Sarge mit Kernel 2.6.12

Post by wayoda »

l_netwalker wrote: ich habe versucht das LinuxSDK ( 21.7.05) zu compilieren ....
Geht es um das Kernel-Modul, die Iowkit-Lib, oder beides?
l_netwalker wrote: ich habe die Kernel sourcen unter /usr/src/linux-...
in /lib/modules/2.6.12/build als link auf die kernel sourcen

wenn ich dann im LinuxSDK source Verzeichnis ein make ausführe
hagelt es seitenweise Fehlermeldungen über falsche Symbole etc.
Was mache ich falsch ?
Kann man ohne die Fehlermeldungen nicht sagen.
Vielleicht kann man ja einen Teil hier Posten?
l_netwalker wrote: Tips ? Ideen ? oder besser fertige module :)
Beim Kernel-modul geht das nicht, da hier die Versionen
(Linux-Kernel /iowarrior Modul)
bis aufs i-Tüpfelchen zusammen passen müssen.

Eberhard
l_netwalker
Posts: 35
Joined: Mon Oct 17, 2005 9:51 am
Location: Aachen, Germany
Contact:

Re: IO Warrior 40 und Debian Sarge mit Kernel 2.6.12

Post by l_netwalker »

wayoda wrote:
l_netwalker wrote: ich habe versucht das LinuxSDK ( 21.7.05) zu compilieren ....
Geht es um das Kernel-Modul, die Iowkit-Lib, oder beides?
Ich habe zuerst mal nur das Kernel Modul versucht zu kompilieren
die Iowkit-Lib habe ich noch gar nicht versucht.
wayoda wrote:
l_netwalker wrote: ich habe die Kernel sourcen unter /usr/src/linux-...
in /lib/modules/2.6.12/build als link auf die kernel sourcen
ist das denn richtig mit dem link, bei Debian gibts das Verzeichnis gar nicht
wayoda wrote:
l_netwalker wrote: wenn ich dann im LinuxSDK source Verzeichnis ein make ausführe
hagelt es seitenweise Fehlermeldungen über falsche Symbole etc.
Was mache ich falsch ?
Kann man ohne die Fehlermeldungen nicht sagen.
Vielleicht kann man ja einen Teil hier Posten?
etwas vom Anfang:

Code: Select all

hucky@netwalker:~/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Dri
ver $ make            
make -C /lib/modules/2.6.12-1-686/build SUBDIRS=/home/hucky/source/sps/h
ardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver modules
make[1]: Entering directory `/usr/src/linux-source-2.6.12'
Makefile:485: .config: No such file or directory

  WARNING: Symbol version dump /usr/src/linux-source-2.6.12/Module.symve
rs
           is missing; modules will have no dependencies and modversions
.

  CC [M]  /home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6
/Driver/iowarrior.o
In file included from include/linux/module.h:9,
                 from /home/hucky/source/sps/hardware/IO-Warrior/LinuxSD
K/Kernel_2.6/Driver/iowarrior.c:24:
include/linux/config.h:4:28: linux/autoconf.h: No such file or directory
In file included from include/linux/module.h:10,
                 from /home/hucky/source/sps/hardware/IO-Warrior/LinuxSD
K/Kernel_2.6/Driver/iowarrior.c:24:
include/linux/sched.h:4:37: asm/param.h: No such file or directory
In file included from include/linux/posix_types.h:47,
                 from include/linux/types.h:13,
                 from include/linux/capability.h:16,
                 from include/linux/sched.h:7,
                 from include/linux/module.h:10,
                 from /home/hucky/source/sps/hardware/IO-Warrior/LinuxSD
K/Kernel_2.6/Driver/iowarrior.c:24:
/usr/lib/gcc-lib/i486-linux/3.3.5/include/asm/posix_types.h:13:22: featu
res.h: No such file or directory
/usr/lib/gcc-lib/i486-linux/3.3.5/include/asm/posix_types.h:14:35: no in
clude path in which to find asm/posix_types.h
In file included from include/linux/capability.h:16,
                 from include/linux/sched.h:7,
                 from include/linux/module.h:10,
                 from /home/hucky/source/sps/hardware/IO-Warrior/LinuxSD
K/Kernel_2.6/Driver/iowarrior.c:24:
include/linux/types.h:14:23: asm/types.h: No such file or directory
In file included from include/linux/capability.h:16,
                 from include/linux/sched.h:7,
                 from include/linux/module.h:10,
                 from /home/hucky/source/sps/hardware/IO-Warrior/LinuxSD
K/Kernel_2.6/Driver/iowarrior.c:24:
include/linux/types.h:18: error: parse error before "__kernel_dev_t"
include/linux/types.h:18: warning: data definition has no type or storag
e class
include/linux/types.h:21: error: parse error before "dev_t"
include/linux/types.h:21: warning: data definition has no type or storag
e class
include/linux/types.h:22: error: parse error before "ino_t"
include/linux/types.h:22: warning: data definition has no type or storag
e class
include/linux/types.h:23: error: parse error before "mode_t"
include/linux/types.h:23: warning: data definition has no type or storag
e class
include/linux/types.h:24: error: parse error before "nlink_t"
include/linux/types.h:24: warning: data definition has no type or storag
e class
include/linux/types.h:25: error: parse error before "off_t"
include/linux/types.h:25: warning: data definition has no type or storag
e class
include/linux/types.h:26: error: parse error before "pid_t"
include/linux/types.h:26: warning: data definition has no type or storag
e class
include/linux/types.h:27: error: parse error before "daddr_t"
include/linux/types.h:27: warning: data definition has no type or storag
e class
Schnipp

und das Ende:

Code: Select all

warrior.c:733: error: dereferencing pointer to incomplete type
/home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver/iowarrior.c:734: error: dereferencing pointer to incomplete type
/home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver/iowarrior.c:736: error: dereferencing pointer to incomplete type
/home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver/iowarrior.c: At top level:
include/linux/elf.h:441: warning: array `_DYNAMIC' assumed to have one element
/home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver/iowarrior.c:123: warning: array `iowarrior_ids' assumed to have one element
include/linux/sched.h:228: error: storage size of `mmap_sem' isn't known
include/linux/sched.h:266: error: storage size of `default_kioctx' isn't known
include/linux/sched.h:274: error: storage size of `action' isn't known
include/linux/sched.h:295: error: storage size of `shared_pending' isn't known
include/linux/sched.h:358: error: storage size of `rlim' isn't known
include/linux/sched.h:645: error: storage size of `start_time' isn't known
include/linux/sched.h:673: error: storage size of `thread' isn't known
include/linux/sched.h:685: error: storage size of `pending' isn't known
include/linux/stat.h:68: error: storage size of `atime' isn't known
include/linux/stat.h:69: error: storage size of `mtime' isn't known
include/linux/stat.h:70: error: storage size of `ctime' isn't known
include/linux/fs.h:279: error: storage size of `ia_atime' isn't known
include/linux/fs.h:280: error: storage size of `ia_mtime' isn't known
include/linux/fs.h:281: error: storage size of `ia_ctime' isn't known
include/linux/quota.h:223: error: storage size of `dq_dqb' isn't known
include/linux/fs.h:364: error: storage size of `bd_sem' isn't known
include/linux/fs.h:365: error: storage size of `bd_mount_sem' isn't known
include/linux/fs.h:440: error: storage size of `i_atime' isn't known
include/linux/fs.h:441: error: storage size of `i_mtime' isn't known
include/linux/fs.h:442: error: storage size of `i_ctime' isn't known
include/linux/fs.h:449: error: storage size of `i_sem' isn't known
include/linux/fs.h:450: error: storage size of `i_alloc_sem' isn't known
include/linux/fs.h:586: error: storage size of `f_owner' isn't known
include/linux/fs.h:772: error: storage size of `s_umount' isn't known
include/linux/fs.h:773: error: storage size of `s_lock' isn't known
include/linux/fs.h:802: error: storage size of `s_vfs_rename_sem' isn't known
include/linux/usb.h:290: error: storage size of `class_dev' isn't known
/home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver/iowarrior.c:123: error: storage size of `iowarrior_ids' isn't known
/home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver/iowarrior.c:140: error: storage size of `iowarrior_fops' isn't known
/home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver/iowarrior.c:163: error: storage size of `iowarrior_class' isn't known
make[2]: *** [/home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver/iowarrior.o] Error 1
make[1]: *** [_module_/home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver] Error 2
make[1]: Leaving directory `/usr/src/linux-source-2.6.12'
make: *** [default] Error 2
wayoda wrote:
l_netwalker wrote: Tips ? Ideen ? oder besser fertige module :)
Beim Kernel-modul geht das nicht, da hier die Versionen
(Linux-Kernel /iowarrior Modul)
bis aufs i-Tüpfelchen zusammen passen müssen.
Das ist richtig, aber vielleicht hat ja schon ein Debianer das Modul für
einen 2.6.12 Debian Standard Kernel gebaut :)
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Re: IO Warrior 40 und Debian Sarge mit Kernel 2.6.12

Post by wayoda »

l_netwalker wrote: Ich habe zuerst mal nur das Kernel Modul versucht zu kompilieren
die Iowkit-Lib habe ich noch gar nicht versucht.
Ok, ich glaube ich weiss schon was es ist.
l_netwalker wrote: ich habe die Kernel sourcen unter /usr/src/linux-...
in /lib/modules/2.6.12/build als link auf die kernel sourcen
Das ist schon mal wichtig, dass die sourcen des kernels da sind.

Um ein Modul oder den ganzen Kernel zu uebersetzen braucht man die aktuelle Konfiguration des Kernel.
In den von Dir installierten Quellen ist nur eine default-Konfiguration vorhanden.
Aber es gibt eine relativ leicht Abhilfe.

Die folgenden Befehle als root ausgeführt, lesen die Konfiguration des aktuell laufenden Kernels und erzeugen die Datei /usr/src/linux/.config die ganz am Anfang deiner Fehlermeldungen als nicht vorhanden aufgeführt ist.

Code: Select all

cd /usr/src/linux
zcat /proc/config.gz > .config
make oldconfig
Wenn alles normal läuft, steht dann in /usr/src/linux die Datei .config
und nun kannst Du noch mal versuchen das Kernel-Modul zu kompilieren.
Bei mir, was aber Suse war, hats immer so geklappt!.

Eberhard
l_netwalker
Posts: 35
Joined: Mon Oct 17, 2005 9:51 am
Location: Aachen, Germany
Contact:

Post by l_netwalker »

Hallo

erstmal danke Eberhard, Du hast mich auf den richtigen Weg geschickt.

Zum einen hat die Kernel Konfiguration gefehlt.
Allerdings installiert Debian die Konfiguration des installierten Kernels in
/boot, die muss einfach kopiert werden.

Desweiteren die Fehlermeldungen bezüglich der Symboltabellen:
" WARNING: Symbol version dump ..."
zeigt das es eventuell ratsam ist, einmal die normalen Kernelmodule zu übersetzen. ( make modules )

Danach hat es ohne Probleme funktioniert.

Als Zusammenfassung hier nochmal die wesentlichen Schritte:

Code: Select all

apt-get install linux-tree-2.6.12
cd /usr/src/
tar -xjvf linux-source-2.6.12.tar.bz2
ln -s /usr/src/linux-source-2.6.12 /lib/modules/2.6.12-1-686/build
cp /boot/config-2.6.12-1-686 /lib/modules/2.6.12-1-686/build/.config
cd /lib/modules/2.6.12-1-686/build
make oldconfig
cd include/
ln -s asm-i386 asm
cd ..
make modules 
cd /home/hucky/source/sps/hardware/IO-Warrior/LinuxSDK/Kernel_2.6/Driver/
make

l_netwalker
Posts: 35
Joined: Mon Oct 17, 2005 9:51 am
Location: Aachen, Germany
Contact:

Post by l_netwalker »

Leider, leider...

Ich kann mit oben beschriebenen Anweisungen zwar den Driver
compilieren, aber beim Versuch mit modprobe den Treiber zu laden
bekomme ich folgende Meldung

Code: Select all

FATAL: Error inserting iowarrior (/lib/modules/2.6.12-1-686/kernel/drivers/usb/misc/iowarrior.ko): Invalid module format
Nach etwas stöbern vermute ich, dass ich die falsche gcc Version benutze.
gcc version 3.3.5 (Debian 1:3.3.5-12)

Mit welcher gcc Version habt ihr das hinbekommen ?
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Der gcc meiner SuSE 10 meldet sich mit 4.0.2 20050901 (prerelease).
Damit und mit der SuSE 9.3 ist das Kernelmodul entwickelt worden.
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

Ich benutze Suse 9.3 und damit gcc 3.5 genau wie Du, das scheint nicht das Problem zu sein.

Ich vermute mal, dass es an den neuen Kernel-Quellen liegen könnte, die du per apt-get installiert hast.
Ich kenne mich leider nicht mit Debian aus, aber ist es vielleicht so, dass 'linux-tree-2.6.12' die letzte, neueste Release bezeichnet?

Die aktuell laufende Version deines Kernels zeigt dir der Befehl uname -r. Bei mir ist das z.B. 2.6.11.4-21.9-default . Wenn aber nun apt-get version 2.6.11-28.12 installiert hat, wurde dein iowarrior-modul mit der neuen Versions-Nummer gebaut.

Lange Rede kurzer Sinn: Um das 'iowarrior-modul' mit der richtigen Version zu kompilieren und einzubinden, müssen die installierten Quellen und der laufende Kernel zusammen passen.
Falls Du also Zeit hast, wuerde ich empfehlen einen komplett neuen Kernel incl. Module aus deinen neuen Quellen zu kompilieren und installieren und es dann noch mal mit dem iowarrior zu versuchen.

Eine einfachre Loesung sehe ich leider nicht ...

Eberhard
l_netwalker
Posts: 35
Joined: Mon Oct 17, 2005 9:51 am
Location: Aachen, Germany
Contact:

Post by l_netwalker »

Jetzt funktionierts:

Das letzte verbliebene Problem mit dem flaschen Format des IOWarrior Moduls erklärt sich für mich wie folgt:

Der von Debian fertig installierte Kernel 2.6.12 wurde mit gcc 4.0
übersetzt.

Ich habe die Kernel Quellen von 2.6.12 sowie das IOwarrior Modul mit
gcc 3.5 compiliert, was dann zu dem laufenden ( mit gcc 4.0 ) compilierten
Kernel einfach nicht gepasst hat.

Die Lösung:
gcc 4.0 via apt-get installiert, den link /usr/bin/gcc von gcc-3.5 auf gcc-4.0
umgestellt und das IOwarrior Modul nochmals neu gebaut.

Damit funktioniert es jetzt ( zumindest lässt sich das Modul laden).

Erstmal also vielen Dank für Eure Mithilfe, wie immer bringen einen die
Tips eines dritten erst auf den richtigen Weg.

Dank und Gruss
Hartmut
David Mika
Posts: 2
Joined: Tue Feb 07, 2006 2:32 pm
Location: Dortmund
Contact:

Post by David Mika »

Hallöchen,

ich konnte mit diesem Thread und Erfolg das Modul für den IO-Warrior, unter Debian sarge mit einem 2.6.8er Kernel übersetzen.
Musste nur leicht das Makefile anpassen.

Als nächstes muss ich das iowkit durch den Kompiler jagen.
Habs mal eben in der Mittagspause probiert, er wirft ein paar Fehlermeldung raus. Konnte davon ein paar beheben (Pfade angepasst), stimmt leider immer noch nicht was. Gucke ich mir aber später genauer an.
Das habe ich aber richtig verstanden, dass ich das KDevelop nicht zum übersetzen brauch, richtig? Auf der Kiste habe ich nämlich gar kein X. Ist ein reines Consolen System.

-David
l_netwalker
Posts: 35
Joined: Mon Oct 17, 2005 9:51 am
Location: Aachen, Germany
Contact:

Post by l_netwalker »

David Mika wrote:Als nächstes muss ich das iowkit durch den Kompiler jagen.
Habs mal eben in der Mittagspause probiert, er wirft ein paar Fehlermeldung raus. Konnte davon ein paar beheben (Pfade angepasst), stimmt leider immer noch nicht was. Gucke ich mir aber später genauer an.
Das habe ich aber richtig verstanden, dass ich das KDevelop nicht zum übersetzen brauch, richtig? Auf der Kiste habe ich nämlich gar kein X. Ist ein reines Consolen System.

-David
Hallo David,

soweit ich mich erinnere brauchst Du nicht wirklich KDevelop.
Ich hatte Schwierigkeiten mit Java meine Notizen zeigen leider
die Details nicht mehr:

* cmake besorgen und installieren
* in kdevelop die Pfade anpassen
* die Header Files von Java per symlink ins src Verzeichnis pusseln
* übersetzen

Das hatte ich mir notiert. Falls Du es nicht hinbekommst, kann ich Dir ja meine Lib schicken, vielleicht funktionierts ja.

Gruss Hartmut
David Mika
Posts: 2
Joined: Tue Feb 07, 2006 2:32 pm
Location: Dortmund
Contact:

Post by David Mika »

Hallo Hartmut,

Danke für Deinen Antwort && Hilfe.
Konnte das iowkit erfolgreich übersetzen. Hab die Java Header in das entsprechende Verzeichnis reingelegt. das Makefile paar mal angepasst und fertig. Habe ein iowkittest Programm ausgeführt und die Hardware klackerte und blinkte ;-)

Jedoch hatte ich ein Problem, ich muss nach einem reboot
den ohci_hcd von Hand entladen und wieder laden.
Zur Körnung das IO-Warrior Modul laden. Scheint aber eher an der Konfiguration des Rechners zu liegen. Werde mir ein init skript
basteln.

Danke für den Support.
Post Reply