Esempio utilizzo vudev e vufuse

From vsd
Jump to navigation Jump to search

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