[Public draft]
Per aggiungere un modulo personalizzato al kernel della nostro sistema operativo creato con buildroot occorre seguire alcuni passi.
1. Supponiamo di avere a disposizione il package del modulo con all'interno il sorgente .c e il Makefile con una struttura simile alla seguente:
=> mykmod-X.X.tar.bz2 => mykmod/mykmod.c => mykmod/Kbuild
Posizioniamo questo file in una posizione accessibile dal web, oppure direttamente nella cartella dl/ di buildroot (preferibile).
2. Nella cartella package/ creiamo la cartella mykmod ed al suo interno creiamo due file di testo.
mykmod.mk che conterrà:
MYKMOD_VERSION = 1.0 MYKMOD_SOURCE = mykmod-$(MYKMOD_VERSION).tar.bz2 MYKMOD_DEPENDENCIES = linux define MYKMOD_BUILD_CMDS $(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) M=$(@D) modules endef define MYKMOD_INSTALL_TARGET_CMDS $(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) M=$(@D) modules_install endef $(eval $(call GENTARGETS,package,mykmod))
Config.in che conterrà:
config BR2_PACKAGE_MYKMOD bool "mykmod" depends on BR2_LINUX_KERNEL help This is a kernel module
Adesso andiamo ad aggiungere il modulo al menu del configuratore, modifichiamo il file package/Config.in aggiungendo le seguenti righe:
menu "My kernel Modules" source "package/mykmod/Config.in" endmenu
make
il modulo si troverà nella posizione1:
buildroot_folder/output/target/lib/modules/kernel_version/extra/mykmod.ko
per caricarlo all'avvio creare uno script eseguibile nella posizione2:
buildroot_folder/output/target/etc/init.d/SXX
con il seguente contenuto:
modprobe mykmod mknod -m 0666 /dev/mykmod c M m
Sostituendo a m e M il numero di Major e minor.
Per verificare il corretto caricamento del modulo sul sistema finale:
dmesg | tail
dovrebbe mostrare il messaggio di caricamento inserito nella funzione di init nel sorgente del modulo.