Symbole inconnu dans pendant le chargement d'un module du noyau
J'ai besoin d'aide pour comprendre pourquoi j'ai une erreur lorsque j'insère un module. J'ai essayé cette, sans succès.
$ sudo modprobe lpfc_scst
FATAL: Error inserting lpfc_scst (/lib/modules/2.6.32-33-generic/extra/lpfc_scst.ko): Unknown symbol in module, or unknown parameter (see dmesg)
$ dmesg | tail
[ 1201.262842] lpfc_scst: Unknown symbol scst_register_target
[ 1201.262949] lpfc_scst: Unknown symbol lpfc_tm_term
[ 1201.263161] lpfc_scst: no symbol version for scst_register_session
[ 1201.263164] lpfc_scst: Unknown symbol scst_register_session
[ 1201.263284] lpfc_scst: no symbol version for scst_rx_mgmt_fn
[ 1201.263286] lpfc_scst: Unknown symbol scst_rx_mgmt_fn
[ 1201.263395] lpfc_scst: no symbol version for scst_unregister_session
[ 1201.263398] lpfc_scst: Unknown symbol scst_unregister_session
[ 1201.263573] lpfc_scst: no symbol version for scst_rx_data
[ 1201.263575] lpfc_scst: Unknown symbol scst_rx_data
$ cat /proc/kallsyms | grep scst_register_target
dffd2a10 r __ksymtab_scst_register_target [scst]
dffd302e r __kstrtab_scst_register_target [scst]
dffd2b34 r __kcrctab_scst_register_target [scst]
dffd2a20 r __ksymtab___scst_register_target_template_non_gpl [scst]
dffd3063 r __kstrtab___scst_register_target_template_non_gpl [scst]
dffd2b3c r __kcrctab___scst_register_target_template_non_gpl [scst]
dffd2c10 r __ksymtab___scst_register_target_template [scst]
dffd308b r __kstrtab___scst_register_target_template [scst]
dffd2de8 r __kcrctab___scst_register_target_template [scst]
dff913a0 t __scst_register_target_template [scst]
dff90dd0 T scst_register_target [scst]
dff91840 T __scst_register_target_template_non_gpl [scst]
$
Merci beaucoup.
OriginalL'auteur | 2011-09-22
Vous devez vous connecter pour publier un commentaire.
J'ai résolu ce problème comme l'a suggéré sur ce forum:
scst
.Module.symvers
à l'existant/lib/modules/<version>/build/Module.symvers
(Hack. Ne sais pas pourquoi le noyau ne voit pas les symboles exportés).scst
à/lib/modules/<version>/extra
.depmod -a
.lpfc_scst
.lpfc_scst
sans problèmes.Avoir une belle journée.
OriginalL'auteur
Cela signifie que le noyau n'est pas permet aux modules de voir que variable. Il ne ressemble vous n'avez pas ajouté votre les variables de la liste de symboles que le noyau exportations:
EXPORT_SYMBOL(scst_register_target);
sont présents dans les fichiers source.le
EXPORT_SYMBOL_NOVERS
obsolètes 2.6?OriginalL'auteur Oleksandr Kravchuk
Si vous essayez de insmod un module qui a été construite contre une arborescence des sources du noyau/en-têtes qui ne sont pas la source réelle du noyau en cours d'exécution, la cause la plus probable est que certains de configuration du noyau est différent entre le noyau en cours d'exécution et celui que vous avez construit le module contre.
L'éditeur de liens à l'intérieur du noyau Linux ressemble à un tas de choses en plus du nom de symbole pour la mise en correspondance des symboles, y compris, éventuellement, d'un hachage du paramètre de la fonction et de la valeur de retour, diverses options de configuration (préempter /non préempter) lorsque l'on tente de faire correspondre les noms de symboles. Je suppose que dans votre cas, il ne trouve pas le bon match en raison des différentes options de configuration
insmod
.OriginalL'auteur gby