Progetto di Sistemi Operativi Avanzati (A.A 2022/23). Realizzazione di un device driver Linux per la gestione a livello di blocco dei messaggi utente.
Il modulo per il kernel Linux è stato sviluppato sulla versione 5.19.0-35-generic. Per eseguire correttamente il servizio di messagistica, bisogna inserire il modulo the_usctm.ko (sudo insmod the_usctm.ko): è necessario per la ricerca della syscall table.
Bisogna configurare i seguenti parametri:
- in Makefile: scrivere in NBLOCKS il numero di blocchi di dati da inserire nell'immagine (sb e inode esclusi)
- in user_hdr.h:
- in NBLOCKS inserire lo stesso valore del punto precedente;
- cambiare il PATH_TO_IMAGE con il path corretto per raggiungere il file immagine
- in umessage_header.h:
- scrivere in NBLOCKS il numero di blocchi di dati effettivamente inseriti nell'immagine (stesso valore del punto precedente)
- scrivere in MAX_BLOCKS il numero massimo di blocchi gestibili dal device driver
- definire FORCE_SYNC se si vuole che la scrittura sul device sia sincrona
- definire TEST se si vuole eseguire il test con richieste multiple (opzione 6 del codice utente)
- cambiare il PATH_TO_IMAGE con il path corretto per raggiungere il file immagine
-
compilare:
make
-
formattare il file immagine (block device logico) per ospitare il file system:
make create-fs
. Se si vuole rendere persistente il contenuto dei blocchi bisogna eliminare i primi due comandi di create-fs nel make file. Questi vanno eseguiti solo durante la prima creazione per formattare il file immagine. -
inserire il modulo sviluppato con
sudo make mount-mod
. In questo modo vengono registrati le syscall, il device driver e il filesystem -
[opzionale] monta il filesystem presente sul block device logico con -o loop:
sudo make mount-fs
.