Quelle est la différence entre les modules chargeables et les modules intégrés (liés statiquement)?
J’ai eu cette question en trouvant une réponse à la différence entre les appels système subsys_initcall()
et module_init()
Le kernel Linux prend en charge l’insertion de modules (également appelés pilotes de périphériques) de deux manières:
insmod driver.ko
ou modprobe driver.ko
L’ avantage des modules chargeables sur les modules intégrés est que vous pouvez les charger au moment de l’exécution. C’est bien si vous travaillez sur un module et que vous devez le tester. Chaque fois que vous le testez et que vous devez le modifier, vous pouvez facilement le décharger ( rmmod driver.ko
ou modprobe -r driver.ko
), puis, après avoir apporté des modifications, vous pouvez le réinsérer. Mais pour les modules intégrés, si vous devez apporter des modifications au module, vous devez comstackr l’intégralité du kernel, puis redémarrer le système avec la nouvelle image du kernel.
Configuration:
Vous pouvez configurer un module pour qu’il soit l’un des deux en éditant le fichier .config
dans le dossier racine de votre source de kernel:
DRIVER_1=y // y indicate a builtin module DRIVER_1=m //m inicates a loadable module
Remarque: lsmod
affiche uniquement les dynamically loaded modules
pas les dynamically loaded modules
built-in
.