LKMPG: Ciao Mondo: differenze tra le versioni

Riga 109: Riga 109:
Sono presenti moltissime informazioni. Il nome dell'autore per la segnalazione di eventuali bug, informazioni sulla licenza, persino una piccola descrizione dei parametri che il modulo accetta.
Sono presenti moltissime informazioni. Il nome dell'autore per la segnalazione di eventuali bug, informazioni sulla licenza, persino una piccola descrizione dei parametri che il modulo accetta.


Ulteriori dettagli sui Makefiles dei moduli del kernel sono disponibili in <code>linux/Documentation/kbuild/makefiles.txt</code>. Bisogna essere sicuri di aver letto quanto appena esposto e il file specificato prima di iniziare a mettere mano sui Makefiles: in questo si rispagna molto lavoro.
Ulteriori dettagli sui Makefiles dei moduli del kernel sono disponibili in <code>linux/Documentation/kbuild/makefiles.txt</code>. Bisogna essere sicuri di aver letto questo file e i files relativi prima di iniziare a mettere mano sui Makefiles: vi risparmierà molto lavoro.


Adesso è arrivato il momento di inserire il nostro modulo fresco di compilazione all'interno del kernel con '''insmod ./hello-1.ko''' (ignora qualsiasi cosa che sembra non funzionare, ne discuteremo a breve).
Adesso è arrivato il momento di inserire il nostro modulo fresco di compilazione all'interno del kernel con '''insmod ./hello-1.ko''' (ignora qualsiasi cosa che sembra non funzionare, ne discuteremo a breve).


Tutti i moduli caricati nel kernel sono listati in <code>/proc/modules</code>. Va alla fine del file e utilizza <code>cat</code> per vedere che il tuo modulo fa veramente parte del kernel. Congratulazioni, adesso sei l'autore di parte del codice del kernel Linux. Quando la novità sparisce, rimuovi il modulo dal kernel usando '''rmmod hello-1'''. Dai un'occhiata a <code>/var/log/messages</code> per vedere se effettivamente l'operazione di rimozione è stata loggata  nel file di log del sistema.
Tutti i moduli caricati nel kernel sono menzionati in <code>/proc/modules</code>. Va alla fine del file e utilizza <code>cat</code> per vedere che il tuo modulo fa veramente parte del kernel. Congratulazioni, adesso sei l'autore di parte del codice del kernel Linux. Quando la novità svanisce, rimuovi il modulo dal kernel usando '''rmmod hello-1'''. Dai un'occhiata a <code>/var/log/messages</code> per vedere se effettivamente l'operazione di rimozione è stata loggata  nel file di log del sistema.


Adesso c'è un altro esercizio per il lettore. Avete presente il commento sul valore di <code>return</code> in <code>init_module()</code>? Cambiate il valore con qualcosa di negativo, rimcompilate e caricate il modulo di nuovo. Cosa succede?
Adesso c'è un altro esercizio per il lettore. Avete presente il commento sul valore di <code>return</code> in <code>init_module()</code>? Cambiate il valore con qualcosa di negativo, rimcompilate e caricate il modulo di nuovo. Cosa succede?
43

contributi