Domanda Errore kernel module linux

  • Autore discussione Utente cancellato 274325
  • Data d'inizio
U

Utente cancellato 274325

Salve, sto provando a fare un hello world nel kernel, il codice è questo:
C:
#include <linux/module.h>
#include <linux/init.h>

int helloinit(void) {
    printk(KERN_ALERT "Driver linux\n");
    return 0;
}
void helloexit(void) {
    printk(KERN_ALERT "exit\n");
}

module_init(helloexit());
module_exit(helloexit());
e per compilare sto usando questo makefile:
Makefile:
obj-m += hello.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Per il makefile ho fatto copia e incolla dal libro, idem per il file C, dove sbaglio?
 
Alla riga 4 e 7 del Makefile cambia gli spazi iniziali con un carattere di tabulazione.
Bash:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
Bash:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

cancella tutto il contenuto dell'hello.c e incolla questo:
C:
#include <linux/module.h>
#include <linux/init.h>

static int __init hello_init(void)
{
        printk(KERN_INFO "Driver linux!\n");
        return (0);
}

static void __exit hello_exit(void)
{
        printk(KERN_INFO "exit!\n");
}

module_init(hello_init);
module_exit(hello_exit);

e lo inserisci/rimuovi con insmod/rmmod. Per vedere quello che stampa lancia un:
Bash:
sudo tail -1 /var/log/messages

Documentati sulla programmazione dei moduli (es. The Linux Kernel Module Programming Guide).