sabato 13 ottobre 2007

VirtualBox: cartelle condivise in guest Linux (3a parte)

Chiudevo la 2a parte di questo post dicendo che VirtualBox non può scavalcare il funzionamento interno di Linux. Il risultato è che lo spegnimento, od anche il semplice riavvio della macchina virtuale, vanifica tutto il lavoro fatto per rendere visibile la cartella condivisa nel guest. Bene, vorrà dire che andremo a fare noi a manella il lavoro che, spero già dalla prossima versione, VirtualBox potrebbe fare da se: la modifica dei file di configurazione di Linux per fare l'auto-mount della cartella condivisa. Avviate la vostra macchina virtuale, si parte!

Mentre la macchina virtuale parte, vi spiego un attimo il lato tecnico del problema; se invece non siete curiosi di sapere perché Linux ad ogni spegnimento o anche semplice riavvio si perde la cartella condivisa, allora saltate direttamente al paragrafo sopra fig. 21.

Linux all'avvio esegue tutta una serie di operazioni, compresa quella di mount. Tramite questa rende disponibili nel filesystem tutti i dispositivi che trova elencati nel file /etc/fstab, ad esempio il disco rigido oppure il lettore CD/DVD-ROM. Ed ecco il motivo per cui al riavvio si perde la cartella condivisa: essa semplicemente non viene montata perché non è indicata fra i dispositivi da montare nel file fstab; VirtualBox non effettua questa modifica, ed in realtà non servirebbe comunque.

Chi infatti rende disponibile sotto forma di dispositivo da montare la nostra cartella condivisa, è un driver delle VirtualBox Guest Additions (ecco perché vanno installate prima di fare questi giochetti con le cartelle condivise). Questo driver viene caricato molto dopo che Linux ha già fatto il mount dei dispositivi indicati in fstab, pertanto anche trovandovi l'indicazione di montare la cartella condivisa, in quel momento non è ancora disponibile e non verrebbe caricata.

Occorre dare il comando di mount da qualche altra parte, in un punto in cui il driver delle Guest Additions è già stato caricato e la cartella condivisa resa disponibile come dispositivo da montare. Un file letto da Linux sempre all'avvio ma dopo il driver delle Guest Additions è /etc/init.d/rc.local. Vediamo come modificarlo aggiungendovi il nostro sospirato comando di mount.

Aprite il vostro terminale e date il comando sudo gedit che vi permetterà di lanciare gedit, l'editor di gnome, con permessi di amministratore. In alternativa, sul vostro sistema date sudo nome_vostro_editor (fig. 21). Date la password e poi un invio per proseguire.

Fig. 21 - Automount cartelle condivise guest Linux - avvio gedit
fig. 21


Si aprirà gedit con i permessi da amministratore, potrete pertanto modificare qualunque cosa sul vostro sistema, fate la massima attenzione a modificare esattamente come indicato se non volete trovarvi con un Linux in panne. Cliccate sul pulsante apri e navigate le cartelle fino a /etc/init.d/, lì aprite il file rc.local (fig. 22). In fondo a quello che è uno script, aggiungete la riga:

mount -t vboxsf 'Cartella condivisa host' /mnt/'Cartella condivisa host'

Uscite salvando le modifiche.

Fig. 22 - Automount cartelle condivise guest Linux - modifica rc.local
fig. 22


Riavviate la macchina virtuale e date un'occhiata nella cartella condivisa! ;-D
Se sul vostro sistema non dovesse essere presente questo file, potete fare le stesse modifiche nel file/etc/rc.d/rc.local, non le ho provate ma dovrebbero funzionare bene.

E se invece non volessimo fare l'auto-mount della cartella condivisa ma montarla al volo di volta in volta senza stare a ricordarsi tutto il comando per intero? Qualcuno ha detto script?!? Avete detto bene, ma tutto questo, nella 4a parte del post.

@:\>

8 commenti:

  1. Ha funzionato alla perfezione, grazie infinite!:D

    Purtroppo non funziona con Sabayon, perche' stranamente li' il file rc.local proprio non c'e', ma pazienza...(Credo siano le estension a non essere supportate in verita'...)

    In compenso, non so come ma ora entrambe le distribuzioni finalmente vedono la chiavetta USB!:)

    RispondiElimina
  2. Oohhh... e finalmente anche questa benedetta chiavetta USB ci ha dato soddisfazione! :-D

    Sono davvero contento abbia funzionato tutto bene e grazie a te per aver trovato la pazienza di leggere i post. :-)

    RispondiElimina
  3. Grazie per averle scritte:)

    RispondiElimina
  4. Grazie mille per le informazioni, mi è stato molto utile come post

    RispondiElimina
  5. Ciao,
    ma anche con virtualbox 4.1.8 e guest ubuntu 11.10 c'è il bisogno di fare questa procedura??

    RispondiElimina
  6. In effetti no, dalla versione 4.x c'è la nuova opzione di "Montaggio automatico" (Automatic mounting) che rende superflua tutta la procedura di questo post, resta invece valida per le versione precedenti di VirtualBox.
    Appena ho un attimo di tempo ci scrivo su un post dettagliato, anche se è molto semplice ci sono un po' di cose da sapere perché tutto funzioni bene al primo colpo; intanto grazie per lo spunto molto interessante. :)

    RispondiElimina
  7. Ho eseguito tutto alla lettera dal post 1 a 3 delle cartelle condivise; fino a quando si monta la cartella tutto bene ma una volta spenta e riavviata la macchina si perde la condivisione. Questo anche con monta permanente attivata.

    Influisce in qualche modo la rete???

    e infine, una volta che la condivisione è attiva come faccio a creare un collegamento sulla scrivania??

    grazie per la gentile collaborazione

    RispondiElimina
  8. No, per fortuna la rete non influenza in alcun modo le cartelle condivise.

    Presumo tu sia su Ubuntu, con la modifica al file "rc.local" indicato nel post 3 (cioè questo) la condivisione non viene persa neanche al riavvio, ho appena verificato.

    Fai invece un'altra cosa. Aggiungi le istruzioni
    "-o uid=tuo_nome_utente,gid=tuo_nome_utente,rw"
    alle modifiche del file "rc.local" in modo che alla fine appaia così:

    sudo mount -t vboxsf -o uid=tuo_nome_utente,gid=tuo_nome_utente,rw condivisione_virtualbox /mnt/'Cartella condivisa host'

    È un'unica riga ed in questo modo ti assicuri di avere i giusti permessi di lettura/scrittura sulla cartella condivisa.

    Per creare il link basta aprire Nautilus, navigare fino alla directory /mnt, tenere premuto CTRL+Maiusc e trascinare la directory "Cartella condivisa host" ad esempio sulla scrivania, vedrai crearsi automaticamente il collegamento.

    RispondiElimina

L'autore del commento si assume la totale responsabilità del suo contenuto. Commenti ritenuti offensivi o non attinenti potranno essere cancellati.