[bglug] Modulo per il kernel 2.6
mlpita@bergamo3.it
mlpita@bergamo3.it
Mar 12 Apr 2005 23:47:48 CEST
> Devi andare a utilizzare direttamente i Makefile dei sorgenti del kernel
> (che a loro volta chiamano gcc con particolari parametri). Il Makefile che
> ti ho dato serve appunto a quello. Ricordati di cambiare la dir. dei
> sorgenti del kernel.
>
> Ciao
Mi sento un imbecille, provate a dare un occhiata alla lunga mail che avevo
iniziato a scrivere quando ho scoperto che.....
- Tutto ha iniziato di colpo a funzionare e non so spiegarmi perché -
Ma tanto sono sicuro che domani sul PC dell' ufficio smetterà di nuovo di
funzionare...
Grazie a tutti x il supporto morale
'Notte
Diego Settimi
----------------------- Lunga mail disperata ------------------------------
Purtroppo oggi è stata una brutta giornata, sono ancora al punto di partenza,
come stamattina... non sono riuscito ancora a compilare e veder funzionare il
modulo hello.c con la più banale delle funzioni di esempio, ma una volta che
mi sblocco ho già scritto tutto il codice che andrà a finire nel modulo.
Allora, ecco cosa faccio nello specifico e che non funziona:
1) Creo un file /root/hello.c contenente un banale modulo come da copione
(vedere in fondo)
Quindi, ecco i due tentativi principali di compilazione che faccio e i loro
miseri risultati:
2.a) Creo un file /root/Makefile contenente:
------------------------------------------------------------
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
obj-m:=hello.o
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
------------------------------------------------------------
3.a)
[root@ARKYE ~]# make
make: Nothing to be done for `default'.
N.B. Mi sono assicurato che il comando uname -r restituisce la versione
corretta del Kernel (2.6.8.1) e che il link /lib/modules/2.6.8.1/build è
diretto a /usr/src/linux-2.6.8.1 dove ci sono i sorgenti del mio kernel.
Ovviamente pwd restituisce /root
Altro tipo di tentativo:
2.b) Creo un file /root/Makefile contenente:
------------------------------------------------------------
obj-m:=hello.o
------------------------------------------------------------
3.b)
[root@ARKYE ~]# make -C /usr/src/linux-2.6.8.1 SUBDIRS=$PWD modules
ottengo una lunghissima lista di errori di compilazione di vario tipo
[A questo punto mi sono messo a fare un altro tentativo ed ho scoperto che
funzionava, ma io non ho cambiato nulla...]
-------------------------- hello.c ----------------------------------
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int mymodule_init(void)
{
printk(KERN_ALERT "Mymodule loaded, say HELLO !\n");
return 0;
}
static void mymodule_exit(void)
{
printk(KERN_ALERT "Mymodule unloaded!\n");
}
module_init(mymodule_init);
module_exit(mymodule_exit);
MODULE_LICENSE("GPL");
-----------------------------------------------------------------------
Maggiori informazioni sulla lista
bglug