Re: System.map and unresolved symbol
alexis.guillard@bt.com écrivait (wrote) :
> Bonjour,
>
> J essaye desesperement de compiler IPv6 et Mobile IPv6 en module.
En t'y prenant comment ?
Le mieux est de recompiler un noyau en le configurant correctement.
> Mais une fois le module compile/installe/machine reboote, j arrive pas a l
> inserer correctement, j ai une trentaine de ligne de ce genre
> "/lib/modules/2.4.7/kernel/net/ipv6/ipv6.o: unresolved symbol tcp_close"
À priori le module ne correspond pas au noyau utilisé.
> largo:/# ps aux
> {tcp_v4_syn_recv_sock} {tcp_v4_syn_recv_sock_R__ver_tcp_v4_syn_recv_sock}
> Warning: /usr/src/linux/System.map does not match kernel data.
> {tcp_v4_syn_recv_sock} {tcp_v4_syn_recv_sock_R__ver_tcp_v4_syn_recv_sock}
> Warning: /System.map does not match kernel data.
Comme indiqué clairement par ps, le System.map utilisé ne correspond pas
au noyau.
> La date et heure du fichier /usr/src/linux/System.map et /System.map
> correspond a la meme que celle d un 'uname -a'.
> J ai essaye de chercher de la documentation sur l interet du fichier
> System.map, mais j ai pas trouver grand chose.
> Est ce que qqun pe me m expliquer/envoyer un liens qui explique a quoi il
> sert ?
System.map est utilisé par ps, lsof, fuser et quelques autres pour pouvoir
donner les noms des appels système plutôt que leur adresse dans le noyau.
Ainsi :
$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
000 S 501 31190 31189 0 69 0 - 763 wait4 pts/5 00:00:01 bash
000 R 501 16626 31190 0 75 0 - 825 - pts/5 00:00:00 ps
# mv /boot/System.map-2.4.8 /boot/System.map-2.4.8.old
$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
000 S 501 31190 31189 0 69 0 - 763 112f41 pts/5 00:00:01 bash
000 R 501 16800 31190 0 78 0 - 680 - pts/5 00:00:00 ps
(Voir la différence pour le champ WCHAN)
> Comment je peux faire pour inserer mon module correctement sans avoir des
> "unresolved symbol" ?
Essayer déjà après un 'depmod -a' et avec un 'modprobe ipv6'.
Si ça ne marche pas c'est que les modules ne correspondent vraiment pas au
noyau, en recompiler un correctement. (lire /usr/src/linux/README, le
KERNEL-Howto et le MODULE-Howto).
Ici, sur un 2.4.8, modprobe ipv6 marche parfaitement.
Les HOWTOS peuvent être trouvés sur http://www.freenix.org/.
Jean Charles
--
Jean Charles Delépine - Équipe Réseaux Télécoms - Université de Picardie
Reply to: