PDA

Visualizza la versione completa : compilare modulo ubuntu


arrostapanza_83
01-10-2007, 08:59
Ciao a tutti, con ubuntu ho il seguente problema. Ho creato un modulo list.c
"
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/sched.h>

static int __init list_init(void)
{
struct task_struct *task;
printk("Inizio lista di processi:\n");
for_each_process(tasks)
{
printk("%s [%d]\n",task->comm , task->pid);
}
printk("Fine lista dei processi.");
return 0;
}

static void __exit list_exit(void)
{
printk(KERN_INFO "Fine modulo Process list.");
}

module_init(list_init);
module_exit(list_exit);
"
per la compilazione dei moduli faccio cosi:
"creo una directory; all'interno della directory, inserisco il mio file list.c. Creo quindi il Makefile, contenente solo questa riga:
obj-m := list.o

kbuild viene invocato eseguendo make con alcuni parametri; visto che si tratta di una operazione comune per i driver esterni, creo uno script che automatizza il tutto. Creo quindi lo script kbuild, contenente queste righe:

#!/bin/bash
KDIR=/lib/modules/`uname -r`/build
make -C $KDIR M=`pwd` $@"

preso da qui:http://www.hwupgrade.it/forum/archive/index.php/t-851881.html.

Finchè utilizzo il modulo in una delle due versioni del kernel standard di ubuntu tt ok.Le versioni del kernel sono (2.6.20).
Ho installato il kernel 2.6.22.1 seguendo questa guida: http://wiki.ubuntu-it.org/CompilazioneKernel.
Se entro nel nuovo kernel e provo a compilare nuovamente il modulo mi da errori.

Che succede??

sacarde
01-10-2007, 14:42
http://web.dti.supsi.ch/~bucher/driver_linux_2.4.pdf

arrostapanza_83
02-10-2007, 09:31
tutto risolto, Facevo un errore quando compilavo il kernel nn avevo messo fakeroot.

Grazie lo stesso.

Loading