[gull] Symboles non résolus au chargement de modules
Julien Escario
pandemik at azylog.net
Thu Jan 12 14:44:13 CET 2006
Bonjour,
Je planche en ce moment sur un problème avec un système embarqué.
J'ai deux machines : l'hôte (un pc portable tout ce qu'il y a de plus classique)
et la cible (un système embarqué powerpc).
J'ai créé un environnement de cross-compilation à l'aide de buildroot. GCC
3.3.5, binutils 2.16.1, kernel-headers 2.4.25 et uClibc 0.9.28. Ca date un peu
mais ce sont les réglages proposés par défaut par buildroot (hormis GCC que j'ai
downgradé).
Ensuite, à l'aide de tout ça, j'ai créé un kernel à base d'un vanilla 2.4.25
pour powerpc (make ARCH=ppc CROSS_COMPILE=powerpc-linux-uclibc- vmlinux). Le
bootloader sur le powerpc est U-Boot qui indique dans la doc de faire :
$ powerpc-linux-uclibc-objcopy -O binary -R .note -R .comment -S vmlinux
$ linux.bin
$ gzip -9 linux.bin
$ mkimage -A ppc -O linux -T kernel -C gzip -a 0 -e 0 -n "Linux Kernel Image" -d
linux.bin.gz pImage
pImage est ensuite le binaire récupéré par TFTP pour booter.
Buildroot m'a également créé, en même temps que le cross-compilateur, un système
de fichiers ext2 monté par NFS.
Jusque là, tout marche trés bien.
Le problème intervient lorsque je tente de charger les modules qui ont été
compilés en même temps que mon noyau.
(là je fais dire de tête parce que je n'ai pas les logs sous les yeux).
Je copie donc *hote*:/lib/modules/2.4.25/ vers la cible, au dans le meme répertoire.
$ depmod -a
me renvoie pleins d'erreurs concernant des symboles non résolus (tel que __cli
qui est hyper classique). Note : les modules n'ont pas de dépendance.
Si maintenant je copie le fichier System.map trouvé dans /usr/src/linux-2.4.25/
vers la cible et que je fais :
$ depmod -F /usr/src/linux-2.4.25/System.map -a
Là, ca fonctionne, les fichiers /lib/modules/2.4.25/modules* sont bien écrits.
D'ailleurs on voit bien à ce moment là qu'ils n'ont pas de dépendance, les vides
sont presque vides.
Mais si je fais :
$ insmod usbcore.o
par exemple, alors les symboles non résolus sont de retour (et insmod n'a pas de
-F).
D'ou mon interrogation : comment fonctionne le système des symboles kernel. J'ai
deux pistes : /proc/ksyms et System.map mais je ne comprend pas pourquoi il y a
tous ces symboles non résolus.
C'est long mais j'ai essayé d'être le plus précis possible, désolé.
Qqun aurait-il une idée ou une clarification sur les symboles ?
Bonne journée,
Julien
More information about the gull
mailing list