#linux #modules #kernel #fr #sorbonne

Linux modules


Les modules du linux ajoute des services dans le noyau: pilotes 1d8a-linux-drivers, appels systèmes, implementations des protocoles réseau.

Dans linux, il peut être chargé ou déchargé dynamiquement. Les modules s'execute en mode système.

cheat-sheet on linux module development here

Les modules linux doivent toujours avoir une fonction d'initialisation et une fonction de sortie:

/* headers here */

static int __init mod_init(void) { /* ... */ }

static void __exit mod_cleanup(void) { /* ... */ }

module_init(mod_init);
module_exit(mod_cleanup);

Module dependencies

If a module X uses at least one symbol from module Y, then X depends on Y. The dependencies are automatically inferred when compiled and available at /lib/module/<version>/module.dep generated by depmod.

Building a module

The running kernel is deployed with a generic Makefile 1 1a4-make

make -C /lib/module/\\((uname -r)/build M=\\)PWD

This following Makefile can be used to compile a kernel module:

KERNELDIR_LKP ?= /lib/modules/$(shell uname -r)/build

obj-m += helloWorld.o

all:
	make -C \\((KERNELDIR_LKP) M=\\)$PWD modules

clean:
	make -C \\((KERNELDIR_LKP) M=\\)$PWD clean


1

https://www.kernel.org/doc/Documentation/kbuild/modules.txt