Categories

A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna, tincidunt vitae molestie nec, molestie at mi. Nulla nulla lorem, suscipit in posuere in, interdum non magna.

[buildroot] Aggiungere un modulo al Kernel

closeQuesto articolo è stato pubblicato 2 anni 8 mesi 3 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi. Questo sito non è responsabile per eventuali errori causati da questo problema.

 

 

 

[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
Dopo aver compilato buildroot:
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.

  1. buildroot_folder è la cartella dove abbiamo scompattato il pacchetto di buildroot
  2. XX è il numero d’ordine con cui lo script verrà eseguito.