View Single Post
Old 07-01-2005, 09:46   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
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.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12

Ultima modifica di ilsensine : 17-01-2005 alle 09:59.
ilsensine è offline