Il kernel di Linux è un core centrale a cui è possibile agganciare dei moduli, che non sono altro che delle parti che non sono importanti per il boot, ma che risultano essenziali per fare uso di determinati servizi. Poniamo l’esempio di una chiavetta USB formattata con il filesystem FAT32 di Windows, in questo caso caricare il codice per leggere e scrivere su questo filesystem non è importante all’accensione della macchina, ma se vogliamo utilizzarla quando ne abbiamo bisogno, allora dobbiamo avere un modulo fat.ko che venga caricato automaticamente al momento in cui viene fatto il mounting del dispositivo e magari scaricarlo al momento dell’unmounting. Tutto questo processo ha un solo ed unico scopo, poter caricare in memoria all’accensione solo lo stretto necessario al funzionamento del sistema operativo, capacità che fa di Linux un sistema molto plasmabile rispetto all’hardware anche vetusto su cui installarlo.
Gli strumenti per amministrare i moduli del kernel Linux risiedono nel pacchetto modutils e tra questi abbiamo:
Vediamo allora come creare un semplicissimo modulo di kernel che stampi delle stringhe nel system log:
/* File hello.c */#include <linux/kernel.h> #include <linux/module.h> int init_module() { printk(KERN_INFO "Caricamento del modulo hello...\n"); printk(KERN_INFO "Benvenuti nel mondo dei moduli di kernel!\n"); return 0; } void cleanup_module() { printk(KERN_INFO "Scaricamento del modulo hello...\n"); return; }
Come potete notare scrivere un modulo di kernel per Linux è davvero semplice, abbiamo una funzione che viene chiamata al caricamento ed una allo scaricamento del modulo dal kernel, qui non facciamo altro che stampare una stringa sul system log. Per compilare il nostro modulo occorre creare un Makefile di questo tipo:
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
Prima di tutto consiglio di lavorare su una macchina virtuale di test e mai su macchine di produzione, poi inserite i due file dentro una directory nella vostra cartella home e poi date il comando make. Come potete notare la compilazione ha creato vari file, il modulo per il kernel, dalla versione 2.6 in poi, è hello.ko e sarà questo che inseriremo nel kernel. Date il comando insmod hello.ko, poi rmmod hello.ko ed infine controllate i messaggi del kernel con il comando dmesg|tail. Se tutto ha funzionato potete vedere in fondo alla lista dei messaggi anche quelli del nostro modulo di kernel Linux.
Se alcuni di voi sono interessati a proseguire l’argomento, potremmo anche spiegare in un prossimo futuro come creare dei semplici, ma veri, device driver per la nostra distribuzione Linux.
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→