kbuild
Il kernel dispone di un sistema di compilazione flessibile ed efficiente. E' molto facile utilizzarlo per compilare un driver esterno: tutto ciò di cui avete bisogno, è dei sorgenti correttamente configurati del vostro kernel in esecuzione.
Per utilizzare il sistema kbuild del kernel per compilare un driver esterno, occorre
- i sorgenti del driver, ovviamente
- preparare un semplice Makefile
- invocare kbuild
Un esempio varrà come spiegazione: create una directory che dovrà contenere il vostro driver; all'interno della directory, create un file sorgente vuoto (touch hello.c ad esempio). Create quindi il Makefile, contenente solo questa riga:
obj-m := hello.o
kbuild viene invocato eseguendo make con alcuni parametri; visto che si tratta di una operazione comune per i driver esterni, vi consiglio di creare uno script che automatizza il tutto. Create quindi lo script kbuild, che renderete eseguibile, contenente queste righe:
Codice:
#!/bin/bash
KDIR=/lib/modules/`uname -r`/build
make -C $KDIR M=`pwd` $@
Copiate questo script nel path (lo utilizzeremo anche per compilare gli esempi successivi).
Da dentro la directory contenente il Makefile e hello.c appena creati, eseguite quindi
kbuild modules
Vi verrà generato il file hello.ko, il vostro "driver" che potete inserire e rimuovere con insmod/rmmod (provate!). Ovviamente questo modulo non farà nulla, in quanto non contiene codice, ma vi illustra quanto sia semplice compilare un driver esterno.
Per ripulire i sorgenti, basta che eseguite
kbuild clean
dentro la directory da ripulire.
Per ulteriore documentazione, leggete Documentation/kbuild/modules.txt dentro i sorgenti del kernel.