2010-08-12 8 views
5

J'ai une version compilée d'un module Linux, et j'ai plus de 20 variantes de sa source. A travers diverses erreurs stupides, j'ai perdu la trace de la version de la source qui était celle que j'avais utilisée pour faire le module.modinfo srcversion: Comment générer ceci à partir de ma source?

J'ai remarqué que modinfo <module name> donne srcversion: <hash>, et j'ai trouvé quelque part une explication qui dit que c'est la "Somme de la source qui a produit le module". C'est parfait!

Que dois-je faire à mes sources de module pour produire ce hachage?

Répondre

7

Le srcversion est défini par le programme scripts/mod/modpost. Je ne connais pas les options exactes que vous avez à donner à modpost afin qu'il produise ce champ. Il doit être quelque chose de similaire à scripts/mod/modpost -a -m vmlinux you_module.o (vous pouvez regarder scripts/Makefile.modpost pour les options exactes). La sortie est alors disponible en drivers/path/to/your_module.mod.c

Je vous recommande de définir config MODULE_SRCVERSION_ALL sur y (disponible dans le sous-menu Enable loadable module support), afin que srcversion soit automatiquement produite pour tous les modules de votre build. Vous pouvez ensuite basculer entre vos variantes de la source, reconstruire votre noyau avec la nouvelle variation source (seul votre module doit être reconstruit après la première génération) et ensuite regarder directement le champ MODULE_INFO(srcversion, "<hash>"); à la fin de votre fichier drivers/path/to/your_module.mod.c pour trouver le fichier demandé Info.