Esempio utilizzo vudev e vufuse
Esempio fatto in classe sull'utilizzo dei moduli vudev e vufuse.
Macchina reale
Creazione immagine disco
Creiamo un file della dimensione di 1 gigabyte di nome "mydisk".
$ truncate -s 1G mydisk
Avvio macchina virtuale parziale
Avviamo la macchina virtuale parziale in una nuova istanza del terminale.
$ umvu xterm
Avremmo potuto utilizzare bash al posto di xterm, ma avrebbe utilizzato l'istanza corrente del terminale, impedendoci di visualizzare eventuali messaggi di ritorno.
Macchina virtuale
Inserimento moduli
Inseriamo nel kernel della macchina virtuale i moduli:
- vudev, modulo per la gestione di device virtuali
- vufuse, modulo per la gestione di file system a livello utente in ambiente virtuale
- unrealuidgid, modulo che gestisce la virtualizzazione dello user id e del group id
$ vu_insmod vudev vufuse unrealuidgid
Montaggio disco
Montiamo l'immagine del disco sotto /dev/hda utilizzando il sottomodulo vudevpartx (nuova versione di umdevmbr, chiamato così perchè ora, oltre a supportare MBR, supporta anche GPT).
Per poter utilizzare la mount dobbiamo prima ottenere i privilegi di super utente attraverso l'utility vusu.
$ vusu $ mount -t vudevpartx mydisk /dev/hda
Il disco montato sarà visibile solamente nel terminale della macchina virtuale (e nei suoi figli).
vuos si accerta che esista un modulo che faccia match con la prima parte del nome (vudev) ed inoltra la gestione della chiamata al sottomodulo (vudevpartx). A questo punto la libreria (vudevpartx.so) viene caricata in memoria.
Creazione tabella delle partizioni
Creiamo la tabella delle partizioni come in un disco reale, ad esempio utilizzando l'utility fdisk.
$ fdisk /dev/hda
All'interno dell'utility, possiamo creare una nuova tabella delle partizioni GPT tramite il comando g.
Creazione partizione
Tramite il comando n possiamo creare una nuova partizione (dopo aver indicato punto di inizio e di fine) e scrivere le modifiche su disco tramite il comando w. Seguendo l'esempio, la nuova partizione apparirà sotto il nome /dev/hda1.
Creazione file system
Formattiamo la partizione con un filesystem (ad esempio in ext4) e controlliamo che il comando abbia avuto successo.
$ mkfs.ext4 /dev/hda1 $ fsck.ext4 /dev/hda1
Montaggio partizione
Montiamo la partizione sotto /dev/hda1 utilizzando il sottomodulo vufuseext2. Nonostante la denominazione, il sottomodulo è in grado di montare anche partizioni ext3 o ext4.
$ mount -o rw+ -t vufuseext2 /dev/hda1 /mnt
D'ora in poi tutte le chiamate verso /mnt saranno catturate e virtualizzate.
Controllo finale
Se tutto è andato a buon fine, eseguendo
$ ls /mnt
dovrebbe comparire solo lost+found.
Possiamo ora scrivere sul disco, ad esempio con
$ echo "ciao" > /mnt/ciao