giovedì 11 ottobre 2007

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

Nella precedente serie di post sull'argomento Cartelle condivise, vi avevo mostrato la condivisione di cartelle fra host e un guest Windows. Questa volta vi mostro come attivare le cartelle condivise con un guest Linux; non dimenticate però: potrete attivare le cartelle condivise solo dopo aver installato le VirtualBox Guest Additions. Le immagini di questo post fanno inoltre riferimento ad una distribuzione Ubuntu, ma tranquilli: le operazioni sono indipendenti dalla distribuzione usata.

Ok, iniziamo con il condividere una cartella a macchina virtuale spenta.

Avviate VirtualBox e selezionate la macchina virtuale relativa alla vostra distribuzione (fig. 1): notate dalla scheda dettagli come la Rete sia Disabilitata. Cliccate sulla voce Cartelle condivise per proseguire.

Fig. 1 - VirtualBox opzione cartelle condivise guest Linux
fig. 1


Si aprirà il pannello di gestione delle Cartelle condivise (fig. 2). Ancora non ve ne sono, ma la didascalia sopra il pulsante OK vi da già preziose informazioni su come condividere le cartelle una volta all'interno del guest.

Fig. 2 - Cartelle condivise guest Linux - didascalia di spiegazione
fig. 2


Cliccate sul pulsante di aggiunta di una nuova cartella condivisa, nella posizione indicata dal mouse (fig. 3):

Fig. 3 - Cartelle condivise guest Linux - pulsante aggiunta cartella
fig. 3


Si aprirà la finestra di Aggiungi condivisione (fig. 4), cliccate sul pulsante per trovare la cartella sul disco rigido dell'host, nel punto indicato dal mouse.

Fig. 4 - Cartelle condivise guest Linux - percorso cartella
fig. 4


Navigate il vostro disco rigido fino a trovare la cartella che volete condividere (fig. 5) e cliccateci sopra per selezionarla; se la cartella non esiste, potete crearne una al volo usando il pulsante Crea nuova cartella. Quando avete selezionato la cartella che vi interessa, cliccate su OK per confermare.

Fig. 5 - Cartelle condivise guest Linux - scelta cartella
fig. 5

Vi ritrovate nella finestra precedente di Aggiungi condivisione che si è trasformata in Modifica condivisione. La voce Nome cartella fa riferimento al nome con cui la cartella condivisa sarà visibile nel guest e ne viene preimpostato uno, se non vi piace modificatelo a vostro piacimento e poi cliccate su OK per confermare la scelta.

Fig. 6 - Cartelle condivise guest Linux - nome cartella
fig. 6


Eccola (fig. 7), la cartella sull'host che avete deciso di condividere con il guest, è nell'elenco delle Cartelle condivise; con lo stesso procedimento aggiungetene quante volete e cliccate su OK per terminare.

Fig. 7 - Cartelle condivise guest Linux - cartella host selezionata
fig. 7


Ok, la condivisione è pronta e VirtualBox vi informa del numero di cartelle dell'host che la macchina virtuale condivide (fig. 8).

Fig. 8 - Cartelle condivise guest Linux - cartella host condivisa
fig. 8

Ora avviate la macchina virtuale.

Avviate una sessione di terminale all'interno della vostra distribuzione Linux (fig. 9): come preannunciato, ho usato una distribuzione Ubuntu, ma i comandi sono identici qualunque sia la vostra distribuzione.

Fig. 9 - Cartelle condivise guest Linux - apertura terminale
fig. 9

Se non vi trovate a vostro agio con i comandi della shell (terminale) e volete capire graficamente cosa sta per accadere, allora aprite il vostro file manager. Puntatelo sulla radice / del filesystem, pressappoco il C:\ di Windows, e da lì entrate nella cartella mnt. Questa è la cartella che per convenzione Linux utilizza per montare e rendere disponibili al sistema nuovi dispositivi di memoria quali: Hard disk, memorie USB, floppy... ed è qui che noi monteremo la cartella condivisa dell'host.

Ok, tornate nella shell e date il comando seguente apici singoli compresi (fig. 10):

sudo mkdir /mnt/'Cartella condivisa host'

Dopo aver dato la password il comando verrà eseguito.

Fig. 10 - Cartelle condivise guest Linux - comando creazione punto di mount
fig. 10


Ma cosa ha eseguito il comando?

- sudo: esegui i successivi comandi con le autorizzazioni da amministratore;
- mkdir: MaKe DIRectory, crea una directory;
- /mnt/'Cartella condivisa host': creala all'interno della directory mnt e chiamala Cartella condivisa host.

Gli apici singoli servono a far capire alla shell che gli spazi fanno parte del nome della cartella. Ora guardate nel vostro file manager (fig. 11): è comparsa la nuova cartella che farà da punto di mount nel filesystem della vostra distribuzione Linux.

Fig. 11 - Cartelle condivise guest Linux - Punto di mount
fig. 11


La directory (o cartella, in questi post indico la stessa cosa con nomenclatura Linux o Windows a seconda di dove siamo) è stata creata, ora possiamo montarvi la cartella condivisa. Nella shell date il comando (fig. 12):

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

Se vi chiede la password inseritela e date invio per far eseguire il comando alla shell. Se tutto è andato bene, sembrerà non sia accaduto nulla, semplicemente la shell vi restituirà il prompt, ma...

Fig. 12 - Cartelle condivise guest Linux - comando mount cartella condivisa
fig. 12


... date un'occhiata cosa trovate all'interno della Cartella condivisa host: et voilàaa... Signori e Signore, Ladyes and Gentlemen... il contenuto della cartella host condivisa ora è visibile ed a vostra disposizione nel guest (fig. 13)! :-D

Ho lasciato visibile a destra anche una parte della shell da cui abbiamo dati i comandi. Se avete già seguito il post per condividere cartelle con guest Windows, riconoscerete il programma Prevx CSI che avevo usato in quel post per farvi vedere come dalla macchina guest, si poteva avviare un programma che fisicamente era in una cartella sull'host.

Fig. 13 - Cartelle condivise guest Linux - Contenuto cartella condivisa
fig. 13


Ricordate infatti una cosa: i file in questo momento fisicamente sono ancora sull'host, è come se si fosse aperta una finestra che vi permette di osservarli dal guest: se volete portarli fisicamente sul guest, basterà che
nel file manager li trasciniate in un'altra cartella del guest stesso, verrano copiati lì.

Beh, mi pare che per questa volta possa bastare, mi fermo qua. Non mancate però alla 2a parte del post, quando condivideremo l'intero disco rigido dell'host facendolo direttamente dalla macchina guest in funzione! ;-D

@:\>

16 commenti:

  1. Fatto, però se chiudo Ubuntu e lo faccio ripartire la condivisione non c'è più. Non dovrò dare il comando
    sudo mount -t vboxsf 'Cartella condivisa host' /mnt/'Cartella condivisa host' tutte le volte?
    Inoltre, perchè la cartella creata con mkdir non è cancellabile? (il comando "Sposta nel cestino" è disattivato)

    RispondiElimina
  2. Ciao Michele! :-)

    Come sempre attentissimo, ti sei accorto della magagna. Per ora si, la soluzione è "sudare" a manella ogni volta, nella 3a parte del post invece, descrivo come ottenere l'auto-mount della cartella condivisa.

    La cartella non è cancellabile perché è stata creata mentre eri con i super poteri da amministratore e solo tornando amministratore la puoi cancellare.

    Fai così. Apri il terminale e scrivi:

    - sudo rmdir /mnt/'nome cartella condivisa'

    e dai la password quando richiesta; la cartella viene cancellata. Mi appunto la cosa così magari la aggiungo nel prossimo post.

    @:\>

    RispondiElimina
  3. Post davvero molto utile, mi è servito a risolvere i problemi di comprensione che avevo. Ho risolto.
    Un sola piccola precisazione.
    Il mio host è win XP, il mio guest è ubuntustudio 7.10.
    Il primo comando di mount in linux è: sudo mount -t vboxsf condvm /mnt/condvm
    ma così avevo solamente creato una condivisione, ma non era agganciata al mio host.
    Ho rifatto il comando di mount:
    sudo mount -t vboxsf 'condvm' /mnt/'condvm'
    e così si è risolto.
    Sbagliavo io, oppure la precisazione è inportante?
    Grazie.

    RispondiElimina
  4. Ciao Alessandro; sono contento ti sia stato d'aiuto. :-)
    Adesso però qualcosa non torna a me... il comando mount deve funzionare già nella forma:
    sudo mount -t vboxsf condvm mnt/condvm
    L'apice singolo serve solo in presenza di spazi nei nomi usati, ad esempio:
    sudo mount -t vboxsf condvm /mnt/'cond vm'
    Prova a verificare che non ti sia inavvertitamente sfuggito qualche spazio nei nomi usati.

    @:\>

    RispondiElimina
  5. A me dice "Unkown filesystem type 'vboxsf'"...che devo fare?Che vuol dire?

    RispondiElimina
  6. I motivi in genere sono 2:

    - hai invertito l'ordine delle ultime 2 lettere scrivendo vboxfs al posto di vboxsf; quello corretto è vboxsf.

    - non hai installato le VirtualBox Guest Additions, in tal caso occorre installarle prima di poter accedere alle cartelle condivise.

    Verifica un pò e fammi sapere.
    @:\>

    RispondiElimina
  7. Complimenti per questa semplice quanto utile guida :)

    Era proprio quelloche cercavo.

    Saluti

    RispondiElimina
  8. Ho seguito alla lettera la procedura ma cado all'ultimo comando sudo mount -t vboxsf 'Cartella condivisa host' /mnt/'Cartella condivisa host' e mi dice: /sbin/mount.vboxsf: mounting failed with the error: No such device, dove sbaglio? qualcuno mi può aiutare?
    Grazie
    Andrea

    RispondiElimina
  9. Salve ho seguito la procedura,la cartella da condividere e stata creata,ma non posso ne lvisuallizzare ne scrivere o meglio salvare dei file,ubunto mi dice che non ho i permessi,che devo fare?
    p.s. sono un neofita

    RispondiElimina
  10. @ Andrea:
    stesso problema... (/sbin/mount.vboxsf: mounting failed with the error: No such device). Per risolvere è sufficiente:

    1- installare i sorgenti del tuo kernel (uname -a per capire di che kernel si tratta, ad esempio 2.6.32-21-generic) quindi:
    sudo apt-get install linux-headers-2.6.32-21-generic

    2- installare il compilatore:
    sudo apt-get install gcc

    A questo punto:
    sudo /etc/init.d/vboxadd setup

    e l'installazione delle guest addictions dovrebbe terminare correttamente, includendo anche il supporto alle shared folders.
    Per me ha funzionato!

    RispondiElimina
  11. Grazie per la dritta e complimenti per la guida

    RispondiElimina
  12. bellissima questa guida mi è servita molto grazie mille

    RispondiElimina
  13. sudo mount -t vboxsf ns /media/vbox_ns
    /sbin/mount.vboxsf: mounting failed with the error: Invalid argument

    come posso risolvere??
    grazie mille

    RispondiElimina
  14. Nel guest hai installato le VirtualBox Guest Additions?

    RispondiElimina

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