Root Filesystem per User Mode Linux

Condividi:

Creiamo un root filesystem minimale con cui eseguire mini distribuzioni debian tramite virtual machine user mode linux.

Potremo successivamente installare i pacchetti necessari a differenziare ciascuna macchina virtuale estendendo il filesystem ed utilizzando dei cow files

Il file user block device

Poichè andremo ad installare una suite minimale di debian che occuperà circa 170M, creiamo un file vuoto di 300M che verrà montato come user block device sulla virtual machine e che ospiterà la prima partizione con il root filesystem. Formatteremo la partizione in formato ext3 per trarre vantaggio dal journaling. Viste le dimensioni del file non ha molto senso utilizzare altri tipi di filesystem a 64 bit come xfs o ext4, ma nulla ci vieta di farlo

Montiamo il file su un loop device usando l’opzione -P di losetup per abilitare la scansione delle partizioni

Creiamo una partizione primaria nel file con fdisk allocando tutto lo spazio disponibile ( n, p, 1, , , w )

Vediamo che è comparso il device /dev/loop0p1

Formattiamo una partizione ext3

E montiamola su una directory

Installazione di debian

Per popolare il filesystem con una distribuzione debian minimale, usiamo debootstrap. Maggiori dettagli sulla creazione di un chroot con debootstrap sono disponibili qui

Terminata l’installazione possiamo entrare in chroot ed ultimare la configurazione.

Tutto il networking è ancora gestito dalla macchina host quindi in questo momento possiamo installare tutto quello che ci serve con apt.
Le impostazioni che eseguiremo sono le seguenti

  • password di root
  • fstab
  • hostname della vm
  • locales
  • timezone

Editiamo il nostro file .bashrc per apportare le modifiche che ci interessano

Installiamo altri pacchetti indispensabili di cui minbase è sprovvista

  • gestore di sistema e servizi
  • editor di testo

Una volta terminato possiamo uscire da chroot e smontare la partizione ed il loop device

Test

A questo punto possiamo testare la distribuzione istallata

Note

E’ cosa molto comune montare il file sul loop device e formattare direttamente senza creare la partizione. La vm parte ugualmente, non c’è bisogno di specificare il parametro root nel comando di avvio e nel file fstab basta inserire /dev/ubda. Tuttavia non appena si voglio montare più user block device per utilizzare filesystem meno banali, ad esempio con partizioni separate per /home o /var iniziano i problemi perchè la vm non ha ben chiaro dove leggere le informazioni sulle partizioni ( dato che non ci sono )

In questo modo invece è possibile creare più partizioni sullo stesso file che verranno enumerate con il nome dello user block device seguito da un numero, ad esempio /dev/ubda1, /dev/ubda2 ecc

Sarà anche possibile avere più partizioni su più user block device, e montarle al boot editando opportunamente /etc/fstab come viene mostrato in questo esempio